Jump to content

Search the Community

Showing results for tags 'Programação'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Tibia King
    • Rules
    • Portal
    • FeedBack
  • Open Tibia
    • Otserv
    • Tools
    • Codes
    • Clients
    • Maps
    • Websites
  • Management of Ot Servers
    • Otserv Discussions & Research
    • Support and Requests
    • Otserv Tutorials
  • Tibia and Bots
    • Tibia
    • Bots
  • Others
    • Announcements
    • Other Programming Languages
    • Graphics and Design
    • Playground (Off-topic)

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 1189 results

  1. .Qual servidor ou website você utiliza como base? otservbr 12.31 Qual o motivo deste tópico? Meu servidor tem o sistema de auto loot funcionando 100%, q nem o tibia global, só que, eu queria q ele nao precisasse de abrir os corpos, tipo, se tem gold coin na loot list, ele pega gold coin sem abrir nda Aí eu já fucei aqui os foruns, fucei as sources, os scripts, e nao consigo achar nda que me ajude a fazer isso, alguem sabe como seguir?
  2. Fala galera bom eu achei um código na otland que ao iniciar o tempo de respawn de um monstro no mapa mostra um efeito antes umas 3 vezes avisando e nasce o monstro igual ao tibia normal bom eu consegui colocar na minha source otx 0.3.6 e estou aqui para compartilhar com todos vocês vamos aos códigos na sua source. Procure as bibliotecas Spawn.cpp Procure por e substitua o código todo por obs: onde esta negrito é a área para editar o efeito que vai aparecer quando o monstro for nascer Procure por Neste código mude: Para: Procure por: Logo acima desse código vai ter Mude para: Spawn.h Procure por Substitua por Pronto seja feliz Vídeo demonstrativo Créditos: Treta20 (Otland)
  3. Estou usando tfs 0.3.6, tibia 8.54 (poketibia mas não interfere) Meu servidor é high exp e portanto os players acumulam altos valores de gold, para equilibrar tenho NPC's que vendem items a preços igualmente elevados. A questão é, na source as funções getPlayerMoney, doPlayerRemoveMoney e doPlayerAddMoney estão em 32 bits. Sendo assim se o player tiver mais de 2 bilhoes em dinheiro (worth, valor das notas no items.xml) na bag e fala com algum npc ou qualquer coisa que 'retire' 'dinheiro' da bag, buga e acaba removendo muito mais que deveria. Já tentei passar por conta as funções para 64bits mas não obtive sucesso. Alguém já mexeu com isso antes para me dar uma luz?
  4. quando vai gera o arquivo executável da erro alguém sabe me ajudar ai desde já agradeço
  5. Eu tenho esse script e gostaria que pra mudar o fastattack precisasse da storage e nao da SKILL_FIRST uint32_t Player::getAttackSpeed() const { int32_t SpeedAttack; SpeedAttack = vocation->getAttackSpeed() - (getSkill(SKILL_FIST, SKILL_LEVEL) * 10); if (SpeedAttack < 500) { return 500; } else { return (uint32_t) SpeedAttack; } }
  6. Queria saber como compilar minha source(TFS 0.3.6) para windows 64 bits. Procurei um tutorial especifico, mas não encontrei!
  7. Ola galera do TK. Estou duvidas referente o OT. Possuo um OT Global 8.6 com TP que adquiri em 2016 + Gesior. Acontece que estou com o Ubuntu 16.04 ( pelo fato de que a empresa de vps nao trabalha com versoes anteriores), depois de muitos anos, voltando ao mundo de OT ADMIN, isto aqui esta me dificultando.... Bora para os detalhes e duvidas: 1 - A distro que possuo seria OTX ( nao lembro da versao ), tentei compilar, pois ao terminar, o executavel termina com o nome de TFS. 2 - Possuo o Gesior, ao tentar instalar, ele pede o install.php e .txt, consegui esses arquivos com um outro gesior e ao tentar instalar, me ocorre este erro: Ja tentei modificar varias vezes o config.php e config.ini e nao estou conseguindo. Aguardo alguma ajuda referente isso, desde ja, muito obrigado!
  8. .Qual servidor ou website você utiliza como base? TheForgotten Server 1.3 8.60 Qual o motivo deste tópico? Compilei como ensina no tutorial de compilação para windows fiz certinho mais no final olha oque acontece .. usei: Visual studio 2017 instalei as libs sem nenhum erro tudo perfeito mais ainda a algo errado e nao to achando uma solucao SEGUE O SPOILER ABAIXO COM O CODIGO...! me ajudem pfv. Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  9. Boa dia, tarde, noite, preciso de uma ajuda com meu servidor, as vezes eu coloco o pokémon para fora da pokebola , e no voltar ele cria outro pokémon, segue imagens, e as vezes no lugar do portrait que estava o certo do pokémon , vira outra coisa tipo uma stone Codigo Portrait / Some Functions
  10. queria tirar uma duvida e fazer um pedido. meu servidor TFS 04 alguém me ajuda com codigo para slot para cada equipamento? ex : ammo apenas para arrow? achei alguns tutorias mais nada para 0.4 classicEquipmentSlots = true tentei add clasic mais tive muitos erros.
  11. .Quais tipos de firewall podemos usar no Ubuntu 16.04? O que eu preciso fazer para ter uma boa segurança nessa maquina?
  12. Criei esse code aqui mas até agora não consegui fazer retornar corretamente.... a ideia seria retornar no OUTPUFILE as conexões com RSA errada e Correta. Feito em JS // import dependencies var fs = require('fs-sync'); var binstring = require('binstring'); // define all options here var options = { // where to save RSA key outputFile: 'RSA.txt', // where is your Tibia client inputFile: 'C:/Program Files (x86)/Tibia/Tibia.exe', // convert binary file to human readable utf8 format conversionOptions: { in: 'bin', out:'utf8' }, // this is most important, it assumes that RSA key is string of 245 digits long or longer and no other string is so long like this one, // if there will be more matches like this we have a problem RSApattern: /\d{245,}/g }; // humanize var humanData = binstring(fs.read(options.inputFile), options.conversionOptions); // extract RSA with RegEXP var RSA = humanData.match(options.RSApattern); // assume only 1 match found try { RSA[0] ? RSA = RSA[0] : null; } catch (e) { console.log('no match'); } // save it to output file fs.write(options.outputFile, RSA); // confirm by outputing result to console console.log(RSA);
  13. Galera alguém ai sabe as alterações na source do otclient e otserv pra aumentar o campo de visão dos tiles para o player?? gostaria de aumentar pois mudei pro OTC ai estou meio que aprendendo vamos se dizer TFS 0.4 REV3884
  14. o otx2 realmente tem um problema com uso de cpu? pois tudo que fiz para otimixar meu pack reduziu a cada player usar cerca de 1% de cpu. como por exemplo , é como se cada player usa-se 1% logo 100 online 100% porem ainda nao vi de fato se é isso , porque ele roda mais ou menos 10% abaixo da quantia de player, porem antigamente , 1 player usava cerca de 2-3% da cpu! depois de tudo que alterei! cheguei nesses 1% porem apartir dai! depois de rever todos codigos, e diminui-los a ponto deles usarem somente o necessario das linhas uteis! eu nao sei mais , se é minha source, ou se é o data. pq até datas de ots como Realbaiak feito pelo vitor bertoluccci (ACREDITO SER O MELHOR PACK QUE POSSUO) consome o mesmo! entt presumo que seja , ou o proprio distro com suas sources! ou libs ou versao de ubuntu ! algo deve estar errado! ou sou um CABAÇO me ajudem porfavor! uso uma maquina VPS da OVH 12GB RAM 50GB SSD intel xeon 4X 2.66 GHZ @WooX
  15. Meu servidor é um TFS 0.4 8.60. Bom, o erro consiste em atacar um monstro imóvel e executar uma ação com o botão direito do mouse (como abrir uma porta de quest ou até mesmo clicar em um sqm que esteja por pelo menos 2 sqm do personagem), o personagem fica tentando abrir a porta diversas vezes e voltando pra atacar o monstro. O certo seria ele executar a ação do botão direito e voltar a atacar. Grato! Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  16. Preciso de Programador remunerado para me ajudar com meu sv, se você está interessado chama no whats parar negociarmos 33 999449344 Se eu postei na seção errada me desculpe
  17. Hoje estarei ensinando a instalar os seguintes novos atributos/sistemas em sua source CriticalHitChance e DodgeChance -- (Funciona da mesma maneira que o critical básico de script, porém sem bugs de callstack) Life e Mana Absorb -- (Regenera, de acordo com a % atribuida, a partir de dano recebido) Life e Mana Leech -- (Regenera, de acordo com a % atribuida, a partir do dano causado) Exemplo de como vai ficar Primeiro e antes de tudo, você terá de desativar o critical padrão do Tibia (Você pode pular essa parte se quiser) Vamos lá! Vá em items.cpp e procure por: attackSpeed = 0; Abaixo coloque: criticalHitChance = dodgeChance = lifeAbsorb = manaAbsorb = lifeLeech = manaLeech = 0; Depois, ainda em items.cpp, procure por: else if(tmpStrValue == "extradefense" || tmpStrValue == "extradef") { if(readXMLInteger(itemAttributesNode, "chance", intValue)) it.extraDefenseChance = intValue; if(readXMLInteger(itemAttributesNode, "value", intValue)) it.extraDefense = intValue; if(readXMLInteger(itemAttributesNode, "random_min", intValue)) it.extraDefenseRndMin = intValue; if(readXMLInteger(itemAttributesNode, "random_max", intValue)) it.extraDefenseRndMax = intValue; } Abaixo coloque: else if(tmpStrValue == "criticalhitchance") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.criticalHitChance = intValue; } else if(tmpStrValue == "dodgechance") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.dodgeChance = intValue; } else if(tmpStrValue == "lifeabsorb") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.lifeAbsorb = intValue; } else if(tmpStrValue == "manaabsorb") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.manaAbsorb = intValue; } else if(tmpStrValue == "lifeleech") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.lifeLeech = intValue; } else if(tmpStrValue == "manaleech") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.manaLeech = intValue; } Agora vá em items.h e procure por: int32_t attack, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance, runeLevel, runeMagLevel, lightLevel, lightColor, decayTo, rotateTo, alwaysOnTopOrder; Abaixo coloque: int32_t criticalHitChance, dodgeChance, lifeAbsorb, manaAbsorb, lifeLeech, manaLeech; Agora vá em item.cpp e procure por: case ATTR_ATTACK: { int32_t attack; if(!propStream.getLong((uint32_t&)attack)) return ATTR_READ_ERROR; setAttribute("attack", attack); break; } Acima coloque: case ATTR_CRITICALHITCHANCE: { int32_t criticalHitChance; if(!propStream.getLong((uint32_t&)criticalHitChance)) return ATTR_READ_ERROR; setAttribute("criticalhitchance", criticalHitChance); break; } case ATTR_DODGECHANCE: { int32_t dodgeChance; if(!propStream.getLong((uint32_t&)dodgeChance)) return ATTR_READ_ERROR; setAttribute("dodgechance", dodgeChance); break; } case ATTR_LIFEABSORB: { int32_t lifeAbsorb; if(!propStream.getLong((uint32_t&)lifeAbsorb)) return ATTR_READ_ERROR; setAttribute("lifeabsorb", lifeAbsorb); break; } case ATTR_MANAABSORB: { int32_t manaAbsorb; if(!propStream.getLong((uint32_t&)manaAbsorb)) return ATTR_READ_ERROR; setAttribute("manaabsorb", manaAbsorb); break; } case ATTR_LIFELEECH: { int32_t lifeLeech; if(!propStream.getLong((uint32_t&)lifeLeech)) return ATTR_READ_ERROR; setAttribute("lifeleech", lifeLeech); break; } case ATTR_MANALEECH: { int32_t manaLeech; if(!propStream.getLong((uint32_t&)manaLeech)) return ATTR_READ_ERROR; setAttribute("manaleech", manaLeech); break; } Procure por: if(it.attackSpeed || (item && item->getAttackSpeed())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "AS: " << (item ? item->getAttackSpeed() : it.attackSpeed); Abaixo coloque: if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } if(it.dodgeChance || (item && item->getDodgeChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Dodge Chance:" << std::showpos << int32_t(item ? item->getDodgeChance() : it.dodgeChance) << "%"<< std::noshowpos; } if(it.lifeAbsorb || (item && item->getLifeAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Absorb:" << std::showpos << int32_t(item ? item->getLifeAbsorb() : it.lifeAbsorb) << "%"<< std::noshowpos; } if(it.manaAbsorb || (item && item->getManaAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Absorb:" << std::showpos << int32_t(item ? item->getManaAbsorb() : it.manaAbsorb) << "%"<< std::noshowpos; } if(it.lifeLeech || (item && item->getLifeLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Leech:" << std::showpos << int32_t(item ? item->getLifeLeech() : it.lifeLeech) << "%"<< std::noshowpos; } if(it.manaLeech || (item && item->getManaLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Leech:" << std::showpos << int32_t(item ? item->getManaLeech() : it.manaLeech) << "%"<< std::noshowpos; } Procure por: int32_t tmp = it.armor; if(item) tmp = item->getArmor(); bool begin = true; if(tmp) { s << " (Arm:" << tmp; begin = false; } Abaixo coloque: if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } if(it.dodgeChance || (item && item->getDodgeChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Dodge Chance:" << std::showpos << int32_t(item ? item->getDodgeChance() : it.dodgeChance) << "%"<< std::noshowpos; } if(it.lifeAbsorb || (item && item->getLifeAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Absorb:" << std::showpos << int32_t(item ? item->getLifeAbsorb() : it.lifeAbsorb) << "%"<< std::noshowpos; } if(it.manaAbsorb || (item && item->getManaAbsorb())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Absorb:" << std::showpos << int32_t(item ? item->getManaAbsorb() : it.manaAbsorb) << "%"<< std::noshowpos; } if(it.lifeLeech || (item && item->getLifeLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Life Leech:" << std::showpos << int32_t(item ? item->getLifeLeech() : it.lifeLeech) << "%"<< std::noshowpos; } if(it.manaLeech || (item && item->getManaLeech())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Mana Leech:" << std::showpos << int32_t(item ? item->getManaLeech() : it.manaLeech) << "%"<< std::noshowpos; } Agora vá em item.h e procure por: ATTR_DUALWIELD = 43, Abaixo coloque: ATTR_CRITICALHITCHANCE = 44, ATTR_DODGECHANCE = 45, ATTR_LIFEABSORB = 46, ATTR_MANAABSORB = 47, ATTR_LIFELEECH = 48, ATTR_MANALEECH = 49, Procure por: int32_t getExtraDefense() const; Abaixo coloque: int32_t getCriticalHitChance() const; int32_t getDodgeChance() const; int32_t getLifeAbsorb() const; int32_t getManaAbsorb() const; int32_t getLifeLeech() const; int32_t getManaLeech() const; Procure por: inline int32_t Item::getExtraDefense() const { bool ok; int32_t v = getIntegerAttribute("extradefense", ok); if(ok) return v; return items[id].extraDefense; } Abaixo coloque: inline int32_t Item::getCriticalHitChance() const { bool ok; int32_t v = getIntegerAttribute("criticalhitchance", ok); if(ok) return v; return items[id].criticalHitChance; } inline int32_t Item::getDodgeChance() const { bool ok; int32_t v = getIntegerAttribute("dodgechance", ok); if(ok) return v; return items[id].dodgeChance; } inline int32_t Item::getLifeAbsorb() const { bool ok; int32_t v = getIntegerAttribute("lifeabsorb", ok); if(ok) return v; return items[id].lifeAbsorb; } inline int32_t Item::getManaAbsorb() const { bool ok; int32_t v = getIntegerAttribute("manaabsorb", ok); if(ok) return v; return items[id].manaAbsorb; } inline int32_t Item::getLifeLeech() const { bool ok; int32_t v = getIntegerAttribute("lifeleech", ok); if(ok) return v; return items[id].lifeLeech; } inline int32_t Item::getManaLeech() const { bool ok; int32_t v = getIntegerAttribute("manaleech", ok); if(ok) return v; return items[id].manaLeech; } Agora vá em player.cpp e procure por: int32_t Player::getArmor() const { int32_t i = SLOT_FIRST, armor = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) armor += item->getArmor(); } if(vocation->getMultiplier(MULTIPLIER_ARMOR) != 1.0) return int32_t(armor * vocation->getMultiplier(MULTIPLIER_ARMOR)); return armor; } Abaixo coloque: int32_t Player::getCriticalHitChance() const { int32_t i = SLOT_FIRST, crit = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) crit += item->getCriticalHitChance(); } return crit; } int32_t Player::getDodgeChance() const { int32_t i = SLOT_FIRST, dodge = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) dodge += item->getDodgeChance(); } return dodge; } int32_t Player::getLifeAbsorb() const { int32_t i = SLOT_FIRST, life = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) life += item->getLifeAbsorb(); } return life; } int32_t Player::getManaAbsorb() const { int32_t i = SLOT_FIRST, mana = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) mana += item->getManaAbsorb(); } return mana; } int32_t Player::getLifeLeech() const { int32_t i = SLOT_FIRST, life = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) life += item->getLifeLeech(); } return life; } int32_t Player::getManaLeech() const { int32_t i = SLOT_FIRST, mana = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) mana += item->getManaLeech(); } return mana; } Agora vá em player.h e procure por: virtual int32_t getDefense() const; Abaixo coloque: virtual int32_t getCriticalHitChance() const; virtual int32_t getDodgeChance() const; virtual int32_t getLifeAbsorb() const; virtual int32_t getManaAbsorb() const; virtual int32_t getLifeLeech() const; virtual int32_t getManaLeech() const; Agora vá em luascript.cpp e procure por: //getCreatureHealth(cid) lua_register(m_luaState, "getCreatureHealth", LuaInterface::luaGetCreatureHealth); Abaixo coloque: //getPlayerCriticalHitChance(cid) lua_register(m_luaState, "getPlayerCriticalHitChance", LuaInterface::luaGetPlayerCriticalHitChance); //getPlayerDodgeChance(cid) lua_register(m_luaState, "getPlayerDodgeChance", LuaInterface::luaGetPlayerDodgeChance); //getPlayerLifeAbsorb(cid) lua_register(m_luaState, "getPlayerLifeAbsorb", LuaInterface::luaGetPlayerLifeAbsorb); //getPlayerManaAbsorb(cid) lua_register(m_luaState, "getPlayerManaAbsorb", LuaInterface::luaGetPlayerManaAbsorb); //getPlayerLifeLeech(cid) lua_register(m_luaState, "getPlayerLifeLeech", LuaInterface::luaGetPlayerLifeLeech); //getPlayerManaLeech(cid) lua_register(m_luaState, "getPlayerManaLeech", LuaInterface::luaGetPlayerManaLeech); Procure por: int32_t LuaInterface::luaGetCreatureMaxHealth(lua_State* L) { //getCreatureMaxHealth(cid[, ignoreModifiers = false]) bool ignoreModifiers = false; if(lua_gettop(L) > 1) ignoreModifiers = popBoolean(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) lua_pushnumber(L, creature->getPlayer() && ignoreModifiers ? creature->healthMax : creature->getMaxHealth()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Abaixo coloque: int32_t LuaInterface::luaGetPlayerCriticalHitChance(lua_State* L) { //getPlayerCriticalHitChance(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getCriticalHitChance()); else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerDodgeChance(lua_State* L) { //getPlayerDodgeChance(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getDodgeChance()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerLifeAbsorb(lua_State* L) { //getPlayerLifeAbsorb(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getLifeAbsorb()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerManaAbsorb(lua_State* L) { //getPlayerManaAbsorb(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getManaAbsorb()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerLifeLeech(lua_State* L) { //getPlayerLifeLeech(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getLifeLeech()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } int32_t LuaInterface::luaGetPlayerManaLeech(lua_State* L) { //getPlayerManaLeech(cid) ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) lua_pushnumber(L, player->getManaLeech()); else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Agora vá em luascript.h e procure por: static int32_t luaGetPlayerSpentMana(lua_State* L); Abaixo coloque: static int32_t luaGetPlayerCriticalHitChance(lua_State* L); static int32_t luaGetPlayerDodgeChance(lua_State* L); static int32_t luaGetPlayerLifeAbsorb(lua_State* L); static int32_t luaGetPlayerManaAbsorb(lua_State* L); static int32_t luaGetPlayerLifeLeech(lua_State* L); static int32_t luaGetPlayerManaLeech(lua_State* L); As funções Lua adicionadas foram getPlayerCriticalHitChance(cid) getPlayerDodgeChance(cid) getPlayerLifeAbsorb(cid) getPlayerManaAbsorb(cid) getPlayerLifeLeech(cid) getPlayerManaLeech(cid) Agora a parte do game.cpp. (Esta é uma parte opcional, você pode optar por não adicioná-la) Créditos: ~Mathias Kenfi
  18. .Qual servidor ou website você utiliza como base? Gesior 2012 Qual o motivo deste tópico? Configurei meu cliente 12x e nao consigo entrar no meu servidor. Está surgindo algum erro? Se sim coloque-o aqui. Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  19. Espero que alguém me ajude nessa, como em tantas outras vezes que o TibiaKing me ajudou. A algum tempo comprei uma base para meu projeto um 8.60 TFS1.2, porém essa base veio com defeito que aparentemente não tem recurso, então a solução é atualizar o TFS, é minha primeira vez tentando compilar, e apesar de ter passado um bom tempo procurando tutoriais e baixando arquivos eu não obtive êxito, não sei se é a versão do Visual, mas enfim não estou conseguindo, vou postar o primeiro erro que estou tendo logo quando abro o TFS no Visual, caso alguém possa me ajudar a compilar esse servidor, me dizendo os arquivos corretos pra baixar e os passos vou ficar muito grato. TFS 1.2 8.60 https://github.com/otland/forgottenserver ERRO (Baixei o Visual Studio nas Versões 2015 e 2017 e esse erro persistiu)
  20. Pesquisei bastante e não achei nada desse tipo, apenas fast attack por skill (n funcionou, e não é o que eu quero). Queria saber se é possível por FAST ATTACK FIXO em TFS 0.4 igual o da OTX ( com ou sem bot o fast attack é o mesmo ), se tiver como por, aonde que tem que alterar e qual o código que tem que por/remover, pois no meu ot o fast attack do player só aumenta se ele ficar andando ou se estiver com bot.
  21. Quando eu abro a store no cliente 10x ela funciona de boa Mas quando eu abro no cliente 12x ele crasha! Meu gamestore.lua e login.php https://github.com/Luciano0227/ot
  22. Alguém Sabe Como Criar Pokemons Guardian Igual Do Pokemiw? Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  23. Fala galera, to passando pra pedir a ajuda de vcs, sou leigo no assunto de compilamento e estou com esse problema a dias. Se alguém puder me ajudar, agradeceria muito! Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  24. .Qual servidor ou website você utiliza como base? ROX 8.6 Qual o motivo deste tópico? Quero desativar o aviso que aparece ao digitar um caracter da senha da conta. Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  25. Mano eu nao entendo oque Source, nao entendo nada, mas meu servidor nao tem isso cara, eu queria pra por um sistema de som ao fazer um ataque e tals, eu nao entendo nada, é so pega a source de outro servidor? ou tem algum programa q faz isso me ajudem cara eu n to entendendo nada

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...