Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/25/16 em %

  1. Danihcv

    [8.6] prisão (30 celas)

    Olá, xTibianos. Hoje venho lhes trazer uma prisão feita pelo @Daniel (sugestão: para ser usada com o sistema do NPC Justiceiro). Download: http://www.4shared.com/file/swOY2bl7ba/prisodanihcv.html *o arquivo também está hospedado aqui no tópico, para o caso de o 4shared vir a ficar off. » Seguem prints dos 3 andares da prisão: recomendo colocar um NPC Justiceiro e um teleport (que faz ligação com a cidade do player) neste andar andar que visitantes também têm acesso andar que visitantes não têm acesso Então é isso galera. O mapa é pequeno mas quebra um galho tremendo. Por hoje é isso, pessoal. Até a próxima. Abraços. prisãodanihcv.otbm prisãodanihcv.otbm
    3 pontos
  2. dalvorsn

    SERVER Bugado

    Um erro genérico assim precisava de um debugger, porém para usar o debugger precisaria compilar as sources com a flag -g. O que tu pode fazer é procurar por algum source de pokemon que se assemelhe com o seu e ir adaptando ate ficar funcional novamente, rodar um server sem ter suas sources é doideira, porque quando acontecem erros assim, tu fica de mãos atadas
    2 pontos
  3. Saudações, xTibianos! Hoje venho lhes trazer um npc desenvolvido por mim, cuja ideia foi de nosso ADM @Daniel. Antes de mais nada, gostaria de avisar: o NPC possui uma GRANDE possibilidade de customização. Você pode escolher quais sistemas você vai quer que ele tenha, pode escolher se vai usar prisão ou não, pode escolher o tempo de punição ao membro infrator, etc. Sistemas presentes Esse NPC possui os seguintes sistemas: Anti-bot system Qualquer jogador pode ir até o NPC e denunciar algum outro jogador (que provavelmente esteja usando bot). O NPC então enviará uma checagem de bot ao jogador denunciado. Caso o jogador denunciado não responda a checagem dentro do tempo hábil, ele será punido (enviado para uma prisão ou kickado). Power Abuse system Esse sistema serve para punir aqueles membros de level alto que ficam fazendo "free kill" (matando jogadores mais fracos abusivamente). Qualquer jogador (qualquer level) pode ir até o npc e denunciar algum outro jogador (level maior) alegando que ele sofreu power abuse. O npc fará uma checagem, e se o jogador denunciante tiver sido morto um minimo de X vezes (configurável) por aquele jogador denunciado, o jogador denunciado será punido (mandado pra prisão ou kickado). Aparência do NPC Esse é o NPC, visualmente falando: inspiração: Instalação Agora chega de enrolação, vamos à instalação do npc: » Vá na pasta mods, crie um arquivo chamado JusticeiroMods.xml e coloque isso dentro: *atente-se para essa parte configurável do script acima: *nessa parte, o strBot e o strPwrAbs devem ser iguais aos informados no arquivo Justiceiro.lua que será mostrado mais abaixo » Agora vá na pasta data\npc, crie um arquivo chamado Justiceiro.xml e coloque isso dentro: » Agora vá na pasta data\npc\scripts, crie um arquivo chamado Justiceiro.lua e coloque isso dentro: *atente-se para essa parte configurável do script acima: -----------------------------------------------------------------------------------------------------------------------------------------------------PARTE CONFIGURAVEL----------------------------------PARTE CONFIGURAVEL------------------------------PARTE CONFIGURAVEL------------------------------------------------------------------------------------------------------------------------------------------------------------------------local usarAntiBot = "sim" --coloque "nao" caso não queira usar o anti-bot do npclocal usarPowerAbuse= "sim" --coloque "nao" caso não queira usar o power abuse system do npclocal cadeia = "sim" --use "sim" caso vc queira mandar o infrator para a cadeia, ou "nao" caso vc nao tenha uma cadeialocal cadeiaPos = { --coordenadas das celas da cadeia, para caso vc tenha colocado o 'cadeia = "sim"' no campo acima[1] = {coord = {x = 32314, y = 32280, z = 8}, preso={}--[[DEIXE ISSO VAZIO]]}, --ponha as coordenadas da cela 1[2] = {coord = {x = 32317, y = 32280, z = 8}, preso={}--[[DEIXE ISSO VAZIO]]}, --ponha as coordenadas da cela 2[3] = {coord = {x = 32320, y = 32280, z = 8}, preso={}--[[DEIXE ISSO VAZIO]]}, --ponha as coordenadas da cela 3[4] = {coord = {x = 32322, y = 32280, z = 8}, preso={}--[[DEIXE ISSO VAZIO]]}, --ponha as coordenadas da cela 4}local tempoBot = 5 --tempo em minutos para o player reportado como botter responder a verificaçãolocal tempoPunicao = 60 --tempo em minutos que o infrator ficara presolocal maxDeath = 7 --quantidade de mortes "desbalanceadas" (player mais fraco contra palyer muito mais forte) considerada como power abuselocal cooldown = 30 --tempo em segundos para o denunciante poder fazer outra denuncialocal strBotDen = 690110local strBot = 69011local strPwrAbsDen = 690120local strPwrAbs = 69012-------------------------------------------------------------------------------------------------------------------------------------------------FIM DA PARTE CONFIGURAVEL-----------------------FIM DA PARTE CONFIGURAVEL---------------------FIM DA PARTE CONFIGURAVEL--------------------------------------------------------------------------------------------------------------------------------------------------------------------- obs: lembrando que você pode adicionar QUANTAS CELAS QUISER! Basta seguir a lógica da tabela relacionada as celas. obs²: e não esqueça de ler as instruções contidas em cada linha dessa parte do script! Como usá-lo em meu servidor? (recomendação) Eu recomendo também usar em seu servidor algum sistema automático de anti-bot, além do npc. -Por quê? Porque dessa forma dificultará a vida do botter. Digamos que o sistema automático faça mande uma checagem para todos os jogadores a cada 1 hora. Sem o meu npc, o botter pode entrar a cada hora no server e responder a checagem automática. Já tendo o meu npc, o botter pode receber uma checagem de bot a qualquer instante (pois qualquer membro pode fazer a denuncia a qualquer instante). Assim, ele não terá uma previsão de tempo para que ele volte à janela do tibia somente para responder a checagem do bot. Mapa de prisão Bom, galera, esse é o npc. Se você quiser usar o sistema de prisão mas não tiver uma prisão em seu server, aqui tem uma prisão feita pelo @Daniel para que vocês possam baixar e usar em conjunto com esse sistema: http://www.xtibia.com/forum/topico/240867-86-pris%C3%A3o-30-celas/ Eu testei todo esse sistema que nem um condenado. Não consegui achar nenhuma falha. Então se alguém encontrar alguma falha, por favor relate-a no campo de comentários abaixo. Por hoje é isso, pessoal. Até a próxima. Abraços. Não autorizo a postagem desse conteúdo sem meus devidos créditos!
    1 ponto
  4. dalvorsn

    SERVER Bugado

    Tu tem as sources do servidor pelo menos?
    1 ponto
  5. Este tópico foi movido para Tutoriais e Suporte - Tutoriais de Scripting - Suporte Scripting
    1 ponto
  6. kkkkkkk desculpa mano, é que até então eu não tinha ciência dessa questão dos valores
    1 ponto
  7. Poccnn

    [8.6] prisão (30 celas)

    Cara que prisão mais confortável! No bangu nem tem cama! Agora so falta um script para levar o player preso. Todo mundo pro mesmo presídio.
    1 ponto
  8. para que? se ele já faz automatico... no final de cada room da sua quest, ele ganha uma storage? porque ao invés de adicionar várias storages, só mudar o valor das mesmas
    1 ponto
  9. Yan Liima

    [8.6] prisão (30 celas)

    Eu ia fazer uma prisão pro meu servidor mais estava com preguiça e ocupado fazendo outras coisas, essa prisão ai já quebra o galho rsrs só irei mudar a aparência e editar um pouquinho, Vlw @Danihcv xD
    1 ponto
  10. Scizorgame

    Base Bolz 2.5 Com Source

    fiz um tutorial enquanto instalava o msvc2010 estou tendo uns problemas com o msvc mas vou postar logo o duelsystem para vocês irem testando, não sei se esta 100% TUTORIAL DUEL SYSTEM BASE BOLZ 2.5 1)vai no config.lua e troque o worldType para pvp e o protectionLevel para 1000 ficando assim: worldType = "pvp" protectionLevel = 1000 OBS: Isso vai liberar para que os players possam atacar pelo menos o summon de um dos outros. 2)vai em data/creaturescripts no creaturescripts.xml e adicione: <!-- TV SYSTEM e DUEL SYSTEM --> <event type="joinchannel" name="WatchTv" event="script" value="tvsys.lua"/> <event type="leavechannel" name="StopWatchingTv" event="script" value="tvsys.lua"/> <event type="walk" name="WalkTv" event="script" value="tvsys.lua"/> <event type="textedit" name="RecordTv" event="script" value="tvsys.lua"/> OBS: Apesar de estar como tvsystem tambem é o script responsavel para funcionar os channels do duel(1x1, numero de pokes, etc). 3)agora precisamos fazer funcionar para atacar só quando estiver em duel, para isso conto com a colaboração de vocês para me ajudar a relembrar tudo que eu fiz vou postar o que eu lembro vocês testam e qualquer erro postem de preferencia com o conteudo do script que a distro acusar, vamos trabalhar encima do storage 6598754, o que acredito eu antes liberava para atacar em duel e agora nos vamos fazer ele bloquear para não atacar fora do duel va em data/creaturescripts/scripts no login.lua e procure pelo storage 6598754 você vai encontrar algo como: if not getPlayerStorageValue(cid, 6598754) == -1 or not getPlayerStorageValue(cid, 6598755) == -1 then setPlayerStorageValue(cid, 6598754, -1) setPlayerStorageValue(cid, 6598755, -1) doRemoveCondition(cid, CONDITION_OUTFIT) --alterado v1.9 \/ doTeleportThing(cid, posBackPVP, false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) end na segunda linha troque o -1 por "cant" e deixe só essa e a 3ª linha, desabilite ou delete as outras linhas ficando: --if not getPlayerStorageValue(cid, 6598754) == -1 or not getPlayerStorageValue(cid, 6598755) == -1 then setPlayerStorageValue(cid, 6598754, "cant") setPlayerStorageValue(cid, 6598755, -1) --doRemoveCondition(cid, CONDITION_OUTFIT) --alterado v1.9 \/ --doTeleportThing(cid, posBackPVP, false) --doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) -- end ou só: setPlayerStorageValue(cid, 6598754, "cant") setPlayerStorageValue(cid, 6598755, -1) 4)vai em data/actions/scripts no revive.lua e procure por "if getPlayerStorageValue(cid,6598754)" bem no inicio, e delete e desabilite dali até o proximo end. OBS:isso era uma tentativa de proteção para não usar revive em duel mas logo embaixo tem outra proteção que faz o mesmo sem dar possiveis bugs e erros (do storage 52481). 5)vai em data/lib no some functions.lua procure por "function canAttackOther" e substitua toda função por: function canAttackOther(cid, pid) --Function q verifica se um poke/player pode atacar outro poke/player if not isCreature(cid) or not isCreature(pid) then return "Cant" end local master1 = isSummon(cid) and getCreatureMaster(cid) or cid local master2 = isSummon(pid) and getCreatureMaster(pid) or pid ---- if getPlayerStorageValue(master1, 6598754) ~= "cant" and getPlayerStorageValue(master2, 6598754) ~= "cant" then if getPlayerStorageValue(master1, 6598754) ~= getPlayerStorageValue(master2, 6598754) then if isDuelingAgainst(master1, master2) then --alterado v1.8 if isSummon(cid) and isPlayer(pid) then return "Cant" else return "Can" end end end end ---- pvp system if getPlayerStorageValue(cid, 6598754) == "cant" then return "Cant" else return "Can" end -- if getPlayerStorageValue(master1, 6598754) >= 1 and getPlayerStorageValue(master2, 6598755) >= 1 then -- return "Can" -- end -- if getPlayerStorageValue(master1, 6598755) >= 1 and getPlayerStorageValue(master2, 6598754) >= 1 then ---estar em times diferentes -- return "Can" -- end ---- if ehMonstro(cid) or ehMonstro(pid) then return "Can" end if getTileInfo(getThingPos(cid)).pvp then return "Can" end return "Cant" end 6)agora em data/lib no Duel System.lua procure por "function doEndDuel" e substitua toda função por: function doEndDuel(cid, desisto) if isCreature(cid) then if getPlayerStorageValue(cid, 52482) ~= -1 then t1 = string.explode(getPlayerStorageValue(cid, 52482), ",") t2 = string.explode(getPlayerStorageValue(cid, 52483), ",") end local invit = getPlayerByName(getPlayerStorageValue(cid, 52485)) if isCreature(invit) then table1 = string.explode(getPlayerStorageValue(invit, 52482), ",") table2 = string.explode(getPlayerStorageValue(invit, 52483), ",") end if getPlayerStorageValue(cid, 52484) ~= 10 then if getPlayerStorageValue(cid, 52482) ~= -1 then for a = 1, 3 do local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a]) if isCreature(pid) then doCreatureSetSkullType(pid, 0) doRemoveCondition(pid, CONDITION_INFIGHT) end if isCreature(sid) then doCreatureSetSkullType(sid, 0) doRemoveCondition(sid, CONDITION_INFIGHT) end for i = 1, #storagesDuel do if isCreature(pid) then setPlayerStorageValue(pid, storagesDuel, -1) setPlayerStorageValue(pid, 6598754, "cant") end if isCreature(sid) then setPlayerStorageValue(sid, storagesDuel, -1) setPlayerStorageValue(sid, 6598754, "cant") end end end else for i = 1, #storagesDuel do setPlayerStorageValue(cid, storagesDuel, -1) setPlayerStorageValue(cid, 6598754, "cant") end doCreatureSetSkullType(cid, 0) doRemoveCondition(cid, CONDITION_INFIGHT) --------------------------------- if table2 then local numero = 0 for i = 1, #table2 do local ppid = getPlayerByName(table2) if not isCreature(ppid) or getPlayerStorageValue(ppid, 52480) ~= -1 then numero = numero+1 end end if numero == 0 then doEndDuel(invit) sendMsgToPlayer(invit, 20, "The opponents are give up! Duel is canceled!") end end -------------------------------- end if desisto then doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE) end return true end for a = 1, #t1 do local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a]) removeFromTableDuel(pid, getCreatureName(cid)) removeFromTableDuel(sid, getCreatureName(cid)) end local t3 = string.explode(getPlayerStorageValue(cid, 52482), ",") local t4 = string.explode(getPlayerStorageValue(cid, 52483), ",") if (#t3 == 0 and #t4 >= 1) or (#t4 == 0 and #t3 >= 1) then for j = 1, (#t3 > 0 and #t3 or #t4) do local winner = #t3 > 0 and getPlayerByName(t3[j]) or getPlayerByName(t4[j]) if isCreature(winner) then addEvent(doSendAnimatedText, 500, getThingPosWithDebug(winner), "WIN", COLOR_ELECTRIC) for i = 1, #storagesDuel do setPlayerStorageValue(winner, storagesDuel, -1) setPlayerStorageValue(winner, 6598754, "cant") end doCreatureSetSkullType(winner, 0) doRemoveCondition(winner, CONDITION_INFIGHT) end end addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN) for i = 1, #storagesDuel do setPlayerStorageValue(cid, storagesDuel, -1) setPlayerStorageValue(cid, 6598754, "cant") end doCreatureSetSkullType(cid, 0) doRemoveCondition(cid, CONDITION_INFIGHT) else for i = 1, #storagesDuel do setPlayerStorageValue(cid, storagesDuel, -1) setPlayerStorageValue(cid, 6598754, "cant") end doCreatureSetSkullType(cid, 0) doRemoveCondition(cid, CONDITION_INFIGHT) if desisto then doSendAnimatedText(getThingPosWithDebug(cid), "GIVE UP", COLOR_BLUE) else addEvent(doSendAnimatedText, 500, getThingPosWithDebug(cid), "LOSE", COLOR_BURN) end end end end 7)por ultimo va em data/lib no level system.lua procure pelo storage 6598754 e delete ou desabilite do if ao end assim: -- if getPlayerStorageValue(getCreatureMaster(pk), 6598754) >= 1 then -- setPlayerStorageValue(pk, 6598754, 1) -- elseif getPlayerStorageValue(getCreatureMaster(pk), 6598755) >= 1 then -- setPlayerStorageValue(pk, 6598755, 1) -- end
    1 ponto
  11. -- Lottery Systemlocal config = { lottery_hour = "1 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message) rewards_id = {2160, 9810, 9822, 9819, 2173, 9693}, -- ID dos Itens Sorteados na Loteria crystal_counts = 100, -- Usado somente se a rewards_id for crystal coin (ID: 2160). website = "no", -- Only if you have php scripts and table `lottery` in your database! }function onThink(interval, lastExecution) if(getWorldCreatures(0) == 0)then return true end local list = {} for i, tid in ipairs(getPlayersOnline()) do local casters = db.getResult("SELECT `broadcasting` FROM `players` WHERE `id` = " .. getPlayerGUID(tid) .. ";") if casters:getDataInt("broadcasting") == 1 then list[i] = tid end end local winner = list[math.random(1, #list)] if winner == nil then return true end local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 2160) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")") else doBroadcastMessage("[LOTTERY SYSTEM] Ganhador: " .. getCreatureName(winner) .. ", Item: " .. getItemNameById(random_item) .. "! Parabens! (Proxima Loteria em " .. config.lottery_hour .. ") Premios que podem cair: 1kk, Rusty Armor, Rusty Helmet, Rusty Boots ou Addon Doll. Fique online! Quem sabe vc pode ser o proximo ganhador?") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return trueend Creio que seu cast seja o padrão, para alterar o id do broadcasting basta ir nessa parte: if casters:getDataInt("broadcasting") == 1 then E troque o valor para o que deseja ou adicione outro valor. Dei uma testada na parte do código que fiz, até onde fui com os testes esta tudo certo.
    1 ponto
  12. Se realmente te ajudei de REP + e ficamos quites Com essa nova atualização do fórum não tenho certeza se tem a opção de melhor resposta, mais se tiver por favor clique em resolvido.
    1 ponto
  13. Vai em protocolgame.cpp e procure por: msg->put<uint16_t>(player->getHealth());msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH)); Substitue por: if (player->getPlayerInfo(PLAYERINFO_MAXHEALTH) > 0) { msg->put<uint16_t>(uint16_t(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH))); msg->put<uint16_t>(100); } else { msg->put<uint16_t>(0); msg->put<uint16_t>(0); } Depois procure por: msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA));msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA)); Substitue por: if (player->getPlayerInfo(PLAYERINFO_MAXMANA) > 0) { msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA) * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA)); msg->put<uint16_t>(100); } else { msg->put<uint16_t>(0); msg->put<uint16_t>(0); } Testado em TFS 0.3.6/0.4. Se quiser para TFS 1.x clique AQUI
    1 ponto
  14. Strogman

    Perfect nick system 100%

    exclusividade xtibia porfavor não postar em outro forum system exclusivo para o xtibia Bom vi muito gente a traz desse sistema e, então resolvi fazer esse nick para ajudar a galera que quer sair do Lixo do pda e começar um projeto bom com os open source. para quem não sabe, nick system é um system muito popular na família dos poketibias, é um system que muda o nome/adiciona um apelido no personagem, muda o nome de exibição no client o nome que fica em cima do personagem no jogo. fulano: Gristony como essa função funciona? Gristony: exatamente igual a do pda! Em ProtocolGame.cpp em baixo de: void ProtocolGameAddShopItem(NetworkMessage_ptr msg, const ShopInfo item){ const ItemType& it = Itemitems[item.itemId]; msg->AddU16(it.clientId); if(it.isSplash() || it.isFluidContainer()) msg->AddByte(fluidMap[item.subType % 8]); else if(it.stackable || it.charges) msg->AddByte(item.subType); else msg->AddByte(0x01); msg->AddString(item.itemName); msg->AddU32(uint32_t(it.weight * 100)); msg->AddU32(item.buyPrice); msg->AddU32(item.sellPrice);} adicione: void ProtocolGamereloadCreature(const Creature* creature){ if(!canSee(creature)) return; // we are cheating the client in here! uint32_t stackpos = creature->getTile()->getClientIndexOfThing(player, creature); if(stackpos >= 10) return; NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); stdlist<uint32_t>iterator it = stdfind(knownCreatureList.begin(), knownCreatureList.end(), creature->getID()); if(it != knownCreatureList.end()) { RemoveTileItem(msg, creature->getPosition(), stackpos); msg->AddByte(0x6A); msg->AddPosition(creature->getPosition()); msg->AddByte(stackpos); AddCreature(msg, creature, false, creature->getID()); } else AddTileCreature(msg, creature->getPosition(), stackpos, creature); }}void ProtocolGamesendCreatureNick(const Creature* creature){ reloadCreature(creature);} Em ProtocolGame.h em baixo de: void sendQuestInfo(Quest* quest); adicione: void reloadCreature(const Creature* creature);void sendCreatureNick(const Creature* creature); Em Player.h em baixo de: void sendCreatureShield(const Creature* creature) {if(client) client->sendCreatureShield(creature);} adicione: void sendCreatureNick(const Creature* creature) {if(client) client->sendCreatureNick(creature);} Em Creature.cpp em baixo de: partyShield = SHIELD_NONE; adicione: Nick = ""; Em Creature.h em baixo de: virtual const Monster* getMonster() const {return NULL;} adicione: stdstring Nick; Luascript.cpp em baixo de: //doPlayerSendCancel(cid, text) lua_register(m_luaState, "doPlayerSendCancel", LuaScriptInterfaceluaDoPlayerSendCancel); adicione: //doCreatureSetNick(cid, nick) lua_register(m_luaState, "doCreatureSetNick", LuaScriptInterfaceluaDoCreatureSetNick); em baixo de: int32_t LuaScriptInterfaceluaDoPlayerSendCancel(lua_State* L){ //doPlayerSendCancel(cid, text) stdstring text = popString(L); ScriptEnviroment* env = getEnv(); if(const Player* player = env->getPlayerByUID(popNumber(L))) { player->sendCancel(text); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} adicione: int32_t LuaScriptInterfaceluaDoCreatureSetNick(lua_State* L){ //doCreatureSetNick(cid, nick) ScriptEnviroment* env = getEnv(); stdstring nick = popString(L); Creature* creature = env->getCreatureByUID(popNumber(L)); if(creature) { SpectatorVec list; g_game.getSpectators(list, creature->getPosition()); Player* player = NULL; creature->Nick = nick; for(SpectatorVecconst_iterator it = list.begin(); it != list.end(); ++it) { if(player = (*it)->getPlayer()) { player->sendCreatureNick(creature); break; } } }else{ lua_pushnil(L); } return 1;} Em Luascript.h em baixo de: static int32_t luaDoRemoveItem(lua_State* L); adicione: static int32_t luaDoCreatureSetNick(lua_State* L); Em Protocolgame.cpp procure por: void ProtocolGameAddCreature(NetworkMessage_ptr msg, const Creature* creature, bool known, uint32_t remove){ if(!known) { em baixo de: msg->AddU32(creature->getID()); adicione: stdstring nick = creature->getName(); if (creature->Nick != "") nick = creature->Nick; substitua: msg->AddString(creature->getHideName() ? "" : creature->getName()); por: msg->AddString(creature->getHideName() ? "" : nick); Obs: compilar em rebuild all ou sem os arquivos .obj exemplo de uso: doCreatureSetNick(getCreatureSummons(cid)[1], "Gristony") Creditos Gristony façam bom uso do code pequenos grilos
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...