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 1210 results

  1. .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Passar estes arquivos para compilar em visual no Windows Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: NtoHard do servidor que utilizo Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  2. Salve rapaziada, estou criando um servidor TFS 1.3 e estou a procura de um programador experiente em .php para arrumar o site do servidor, entrem em contato comigo pelo discord: yuriowns#0618
  3. 0.4 3884 Qual o motivo deste tópico? Preciso que o player receba uma storage como premiação e que a quantidade seja 15 points. Storage 176602 points = 15 function getTaskPoints(cid) return getPlayerStorageValue(cid,task_sys_storages[2]) < 0 and 0 or getPlayerStorageValue(cid,task_sys_storages[2]) end Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: function onUse(cid, item) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokémonDBR!") else if #getPlayersInArea(torneio.area) > 1 then doPlayerSendTextMessage(cid, 20 ,"Só o ultimo que ficar na arena, poderá abrir está porta! ") return true end doTeleportThing(cid, torneio.playerTemple) doBroadcastMessage("[Torneio] Parabéns ao treinador "..getCreatureName(cid).." foi o ganhador do torneio de hoje, verifique o rank em nosso site www.seusite.com!") doPlayerAddItem(cid,2160,100) doPlayerAddItem(cid, torneio.awardTournament, torneio.awardAmount) return true end end
  4. .Qual servidor ou website você utiliza como base? TFS 0.4 Qual o motivo deste tópico? Bug nas skills Está surgindo algum erro? Se sim coloque-o aqui. [Não sei se esta na area correta se precisar mova] 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.
  5. Base Utilizada ( https://github.com/mattyx14/otxserver/tree/otxserv3/path_7_7 ) Ex. OTX Server Path7_7; Galera estou com uma tremenda dificuldade em adicionar novos itens ao meu projeto. Já baixei o cliente original da CIP versão 7.72 baixei as sourcers citadas ai em cima e compilei normalmente. Entrei no servidor esta uma beleza... ai tento adicionar um item novo me deparo com um erro.. usei o object builder 0.4 e adicionei um novo item e compilei, abri meu item editor e criei la tbm e salvei ai entro no servidor aparece o seguinte erro abaixo: Eu uso este item editor: otitemeditor 0.2.2 for 7.6/7.7 Link:www.web.telia.com/~u49016513/otitemeditor-0.2.2.zip Scan: https://www.virustotal.com/pt/url/a3c6dd2e85901ae03bcebccdff4c08846977c2478ce7b1271de6173340821798/analysis/1531392861/
  6. Salve galera, estou com um servidor de tibia 8.60 TFS 1.3 e gostaria de saber se alguém possui um programa ou script que restarta o servidor sozinho as 6:00 AM, agradeço desde já!!
  7. 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.weaponType == WEAPON_DIST && it.ammoType != AMMO_NONE) { begin = false; s << " (Range:" << int32_t(item ? item->getShootRange() : it.shootRange); if(it.attack || it.extraAttack || (item && (item->getAttack() || item->getExtraAttack()))) { s << ", Atk " << std::showpos << int32_t(item ? item->getAttack() : it.attack); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; } if(it.hitChance != -1 || (item && item->getHitChance() != -1)) s << ", Hit% " << std::showpos << (item ? item->getHitChance() : it.hitChance) << std::noshowpos; } else if(it.weaponType != WEAPON_AMMO && it.weaponType != WEAPON_WAND) { if(it.attack || it.extraAttack || (item && (item->getAttack() || item->getExtraAttack()))) { begin = false; s << " (Atk:"; if(it.abilities.elementType != COMBAT_NONE && it.decayTo < 1) { s << std::max((int32_t)0, int32_t((item ? item->getAttack() : it.attack) - it.abilities.elementDamage)); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; s << " physical + " << it.abilities.elementDamage << " " << getCombatName(it.abilities.elementType); } else { s << int32_t(item ? item->getAttack() : it.attack); if(it.extraAttack || (item && item->getExtraAttack())) s << " " << std::showpos << int32_t(item ? item->getExtraAttack() : it.extraAttack) << std::noshowpos; } } if(it.defense || it.extraDefense || (item && (item->getDefense() || item->getExtraDefense()))) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Def:" << int32_t(item ? item->getDefense() : it.defense); if(it.extraDefense || (item && item->getExtraDefense())) s << " " << std::showpos << int32_t(item ? item->getExtraDefense() : it.extraDefense) << std::noshowpos; } } 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
  8. Compro sistema para sobreposição de outfits. Para OTC, Tibia 10.98, funcionando ao estilo do vídeo abaixo. .Qual servidor ou website você utiliza como base? TFS 1.2 Qual o motivo deste tópico? Compra de sistema para projeto. Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  9. Eae pessoal, blz ? Uso o TSF 0.4 Estou com o seguinte problema: quando invito um player na house ai ele entra e desloga nela, ai se eu retiro o nome dele dos invitados quando ele loga ele está logando no sqm da porta, desse modo o player pode arrastar o item que está na porta e a 1 sqm da porta para fora da house Alguém sabe resolver ? Já procurei por alguns tópicos mas não achei nada relacionado a isso...
  10. Olá Tibiaking Hoje vim trazer como aumentar Efeitos / Missile na source TFS e OTX 1.3 Utilize 8.60 OLDCLIENT estendida unit16 então resolvi eu mesmo mexer e consegui achar e estou trazendo para vocês! Esse Tópico é especifico para TFS E OTX 1.3, para que assim você possa aumentar o limite de efeitos no Client, e usar mais de 2k efeitos, e mais de 500 efeitos em Distância. Vale lembra também que você não é obrigado a mudar em ambos, se você quiser apenas aumentar o Limite de Efeitos para mais de 2k, então mude apenas ele, caso queria aumentar apenas os Efeitos que são lançados a distância(ShootEffects ou DistanceEffect), caso queria os dois, use ambos. Vamos começar em Magic Effects e DistanceShoot: Boa sorte vcs :D Recompila Source LINUX / Windows TFS E OTX 1.3 Então é isso ae, qualquer erro só comentar para que eu possar tentar ajudar. Tópico exclusivo do Tibaking, proibido posta em outro site, blog ou fórum!
  11. Bom dia, estou começando um novo projeto em um servidor de tibia 8.6 TFS 1.3, junto com alguns amigos, estamos a procura de um programador experiente que saiba fazer praticamente tudo de .lua para nos ajudar nessa caminhada, iremos pagar por mês pelo serviço do programador.
  12. Esse tópico é só um show-off de um sistema que estou trabalhando, vou deixar aqui algumas utilidades praticas do mesmo e gostaria de sugestões e ideias para utilizá-lo de maneira criativa. Basicamente, é um sistema que pode gerar um mapa em uma posição definida, e pode trocar o mapa na mesma posição por outro, possibilitando a criação de salas "infinitas" sobe demanda de players para dungeons(por exemplo a dz da pxg tem um numero limitado de salas, com um sistema parecido essas salas poderão ser geradas dinamicamente), quests, salas de HUNT privadas ou qualquer outro sistema que precisa de um mapa especifico para funcionar, o mapa é alocado em tempo real em segundos. no vídeo abaixo preste atenção no minimapa. PEQUENO VIDEO DE UPDATE MOSTRANDO DOIS CLIENTES EM SALAS INDIVIDUAIS AO MESMO TEMPO:
  13. Olá pessoa, estou aqui outra vez trazendo o código semanal, para essa semana vou apresentar uma modificação nas sources que permite que o attack speed do jogador seja modificado. Para fazer isso, é necessário primeiro compilar as sources que permitam essa funcionalidade. Então abra o arquivo player.cpp e de CTRL + F na função uint32_t Player::getAttackSpeed() const e substitua por: uint32_t Player::getAttackSpeed() const { int32_t attackSpeedValue = 0; std::string value; this->getStorage("8500", value); if (value != "-1") { attackSpeedValue = atoi(value.c_str()) * 5; } int32_t vocationAttackSpeed = vocation->getAttackSpeed(); if (attackSpeedValue > vocationAttackSpeed/2){ attackSpeedValue = vocationAttackSpeed/2; } return vocation->getAttackSpeed() - attackSpeedValue; } Lembrando que esse script foi feito e testado a partir das sources: tfs 0.4 rev 3884 e também tfs 0.4 rev 3777. Porém deve com poucas modificações deve funcionar em outras versões. O que ele faz: ele verifica o valor da storage número 8500 do jogador e faz o seguinte cálculo: attackSpeedDaVocacao - valorStorage * 5 Sendo que o máximo de speed attack que o jogador pode atingir é o dobro da configurada na sua vocação. Após isso é só compilar e utilizar em qualquer outro script, para aumentar o speed attack do jogador. Para fazer isso é só alterar o valor da storage número 8500 do player. Para utilizar isso, pode ser criada uma spell, eu fiz da seguinte maneira: 1) Na sua pasta de spells crie um arquivo e coloque isso dentro: local config = { time = 3, -- segundos que ira durar o efeito value = 100 -- quantos milisegundos / 5 que ira aumentar } function onCastSpell(cid, var) setPlayerStorageValue(cid, 8500, config.value); addEvent(finishSpell, config.time, cid) doSendMagicEffect(getPlayerPosition(cid), 11) return true end function finishSpell(cid) if (isCreature(cid)) then setPlayerStorageValue(cid, 8500, 0) doSendMagicEffect(getPlayerPosition(cid), 4) end end 2) Configure no spells.xml: <instant name="Nome da spell" words="exeta kor" lvl="25" manapercent="20" prem="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="caminho de onde voce deixou o codigo"> <vocation id="4"/> </instant> Porém fazendo isso tem um problema, caso o jogador solte a spell e deslogue, ele ficaria para sempre com a attack speed daquela forma.. Então vamos adicionar no login.lua o seguinte: if getPlayerStorageValue(cid, 8500) ~= 0 then setPlayerStorageValue(cid, 8500, 0) end Pronto, agora você pode utilizar uma spell que aumenta o speed attack do seu personagem. Para criar itens que deem attack speed: 1) Após compilar as sources, crie um arquivo em movements e coloque o seguinte código: local items = { [2500] = 5, -- amazon armor, onde 2500 e o id da amazon armor e 5 e a quantidade de attack speed /5 do que vai ser aumentado [2499] = 10, -- amazon helmet, 2499 e o id do helmet e 10 a quantidade de attack speed/5 do que vai ser aumentado [2506] = 15 -- dragon scale helmet, igual aos de cima.. } local config = { storage = 8500, } function onEquip(cid, item, slot) local quantity = (items[item.itemid]); setPlayerStorageValue(cid, (config.storage), quantity) return true end function onDeEquip(cid, item, slot) local quantity = (items[item.itemid]) setPlayerStorageValue(cid, (config.storage), 0) return true end 2) Em movements.xml adicione: <movevent type="Equip" itemid="ID DO ITEM" slot="armor" function="onEquipItem" script="caminho do scriot" /> <movevent type="DeEquip" itemid="ID DO ITEM" slot="armor" function="onDeEquipItem" script="caminho do script" /> Note que você precisa apenas um arquivo .lua para todas as configurações de itens.. É isso ai, lembrando que as TFS testadas foram 0.4 rev 3884 e 0.4 rev 3777. Qualquer modificação que vocês quiserem para tfs 0.4, deixem nos comentários. Caso alguém não saiba compilar, sigam esse tutorial: https://tibiaking.com/forums/topic/33548-dev-c-compilando-tfs-no-windows/
  14. .Qual servidor ou website você utiliza como base? serve 8.6/ TFS0.4 Qual o motivo deste tópico? preciso compilar uns codigo Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. up
  15. Estou obtendo este erro ao dar o comando ./theforgottenserver no putty ERRO >> ./theforgottenserver: error while loading shared libraries: libboost_filesystem.so.1.49.0: cannot open shared object file: No such file or directory Alguem me ajuda por favor? 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. Primeiramente bom dia/tarde/noite. Peço desculpas se estiver no local errado, e dês de já peço pra que coloquem no local correto, agradeço. Salve povo, vim aqui pedir a você que sabe compilar uma source, se poderia compilar a minha OTX pra windows... Chama no privado que eu mando o link pra compilar pra mim. Agradeço a atenção, e darei um REP++
  17. [TESTADO EM OTX 2.1+] 8.60 [TESTADO EM TFS 0.3.6] 8.54 ~ 8.60 Créditos: ~Mathias Kenfi
  18. dps que eu addicionei critico na soucer ela fico assim não aparece nenhum erro na distro alguem poderia ajuda
  19. então gente eu gostaria da ajuda de vocês eu gostaria de fazer as casas do meu servidor salvar qualquer coisa que esteja dentro dela, não importando os atributos podendo ser qualquer coisa, se ta dentro de casa tem q continuar la encontrei isso em iomapserialize.ccp, fiz algumas alterações mas gerou erro no save acredito que esteja no caminho certo mas sem sucesso
  20. gente eu estou seguindo o tutorial como eu posso, mas um dos linkds que leva pro visual c++ esta off eu estou tentando usar o 2015 mas o tutorial manda eu fazer coisas que eu não encontro então eu fico garrado sem saber oque fazeraqui esta o servidorgithub.com/Qwizer/realmap11 ele ja vem com a source, mas eu n consigo compilar por favor me ajudem
  21. Ohla, eu quero que meo Fhising Skill sea um skill do defence cuando um player attacka com um Spell... como em servers Wodbo
  22. boa noite e feliz ano novo para todos e família, muita saúde e paz, não estou conseguindo compilar está dando isso ?? configure: error: "Lua header not found." chat.cpp: In member function ‘ChatChannel* Chat::getChannel(Player*, uint16_t)’: chat.cpp:1144:10: error: converting ‘false’ to pointer type ‘ChatChannel*’ [-Werror=conversion-null] return false; ^ cc1plus: all warnings being treated as errors Makefile:540: recipe for target 'chat.o' failed make[1]: *** [chat.o] Error 1 make[1]: ** Esperando que outros processos terminem. mv -f .deps/container.Tpo .deps/container.Po
  23. Uso OTX em linux ubuntu E estou com um problema, tipo: o /reload talkaction não da reload nos talkactions mas se eu der /reload spells ele da reload no talkactions mas o proprio /reload spells e nenhum outro não da reload nos spells o mesmo para monster ja por exemplo o /reload actions da reload normal no actions Eu sei que talvez a solução seja trocar a distro porem essa já tem muita feature que eu uso especificadamente pro meu servidor, então mudar eu vou trocar um problema por outro.
  24. Fala galera, hoje estarei ensinando como vocês podem colocar mais cores na função GameBlueNpcNameColor ali nome dos NPCS, hoje criei e separei 11 funções uma pra cada cor pra vocês usarem como quiser, *as vezes o servidor não combina só com os nomes AZUIS, que tal um ROSA? hehe. TUTORIAL SOURCE OTCLIENT Abra o arquivo const.h ache GameEnhancedAnimations = 59, em baixo cole GameRedNpcNameColor = 60, GamePinkNpcNameColor = 61, GameBabyPinkNpcNameColor = 62, GameOrangeNpcNameColor = 63, GameYellowNpcNameColor = 64, GameLightGreenNpcNameColor = 65, GameGreenNpcNameColor = 66, GameLightBlueNpcNameColor = 67, GamePurpleNpcNameColor = 68, GameBrownNpcNameColor = 69, GameBlackNpcNameColor = 70, abra o arquivo creature.cpp ache if(g_game.getFeature(Otc::GameBlueNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0x66, 0xcc, 0xff); mude para if(g_game.getFeature(Otc::GameRedNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xff, 0x00, 0x00); if(g_game.getFeature(Otc::GamePinkNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xff, 0x6e, 0xb4); if(g_game.getFeature(Otc::GameBabyPinkNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xff, 0xc1, 0xc1); if(g_game.getFeature(Otc::GameOrangeNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xff, 0x7f, 0x00); if(g_game.getFeature(Otc::GameYellowNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xff, 0xd7, 0x00); if(g_game.getFeature(Otc::GameLightGreenNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0x7c, 0xcd, 0x7c); if(g_game.getFeature(Otc::GameGreenNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0x00, 0xcd, 0x66); if(g_game.getFeature(Otc::GameLightBlueNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0x87, 0xce, 0xff); if(g_game.getFeature(Otc::GameBlueNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0x00, 0x9a, 0xcd); if(g_game.getFeature(Otc::GamePurpleNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xab, 0x82, 0xff); if(g_game.getFeature(Otc::GameBrownNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0xcd, 0xaa, 0x7d); if(g_game.getFeature(Otc::GameBlackNpcNameColor) && isNpc() && m_healthPercent == 100 && !useGray) fillColor = Color(0x82, 0x82, 0x82); Agora compile seu Otclient. USANDO AS CORES NO OTCLIENT no otclient vai em em \modules\gamelib abra o arquivo const.LUA ache GameEnhancedAnimations = 59 em baixo cole GameRedNpcNameColor = 60 GamePinkNpcNameColor = 61 GameBabyPinkNpcNameColor = 62 GameOrangeNpcNameColor = 63 GameYellowNpcNameColor = 64 GameLightGreenNpcNameColor = 65 GameGreenNpcNameColor = 66 GameLightBlueNpcNameColor = 67 GamePurpleNpcNameColor = 68 GameBrownNpcNameColor = 69 GameBlackNpcNameColor = 70 agora vá em \modules\game_things abra o arquivo things.lua ache local version = g_game.getClientVersion() em baixo coloca a cor que deseja que os npc tenha há falei rosa lá em cima né, vamos por rosa. g_game.enableFeature(GamePinkNpcNameColor) *se quiser muda o ROSA pra outra cor é só muda GamePinkNpcNameColor para uma dessa ai em baixo dentro dos () cores: GameRedNpcNameColor // Vermelho GamePinkNpcNameColor //Rosa GameBabyPinkNpcNameColor //Rosa bebe GameOrangeNpcNameColor //Laranja GameYellowNpcNameColor //Amarelo GameLightGreenNpcNameColor //Verde Claro GameGreenNpcNameColor //Verde Escuro GameLightBlueNpcNameColor //Azul Claro GamePurpleNpcNameColor //Roxo GameBrownNpcNameColor //Marrom GameBlackNpcNameColor //Preto feito isso, é só SALVAR. NPCs coloridos hehe PREVIEW ATÉ MAIS CRÉDITOS: EU

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!

Tibia King Recomenda

DokeHost - Soluções em Hospedagem

VPS Windows
VPS Linux
Servidor VPS
×
×
  • Create New...