Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 06/29/15 em todas áreas

  1. Piabeta Kun

    Maurolkit é deletado!

    O Mass Ban da CipSoft desta vez pegou pesado com um dos tops do Tibia. Maurolkit, Elite Knight level 797 de Nerana e top 4 do Tibia foi a vítima desta vez, mas uma vítima possivelmente nada inocente! Para aqueles que não se recordam, Maurolkit foi o primeiro jogador a alcançar a marca do level 600 no jogo e assim como seus precursores Lord'Paulistinha (Primeiro level 400) e Tomurka (Primeiro level 500) acabou também sendo deletado do Tibia pelo uso de programas ilegais. Seria o desaparecimento das contas de "grande jogadores" um sinal da decadência do Tibia ou, ao contrário, um símbolo de sua redenção? Afinal não é todo dia que se vê um top sendo deletado, ainda mais considerando todas as críticas ao sistema automático da CipSoft. E então, o que você acha de situações como esta, de Tops sendo deletados?
    2 pontos
  2. LeoTK

    Wono 2.8 - Descompilado

    Fala galera tava há um tempo sem trazer conteúdo ao fórum então decidi trazer o client 2.8 do wono com as sprites do shisui e dos novos monstros etc... DOWNLOAD SCAN Algumas Print's Obs: Object Builder não funciona neste client precisa usar o Dat Editor Obs²: Para fazer funcionar no Object Builder mude a signatures da spr e da dat para a da versao que você quer e que tenha no Object builder ai é só salvar no Dat editor e abrir no Object builder. Créditos Obs²: Gabrieltxu
    1 ponto
  3. gabrielbsales

    Aumentar Limite De Efeitos

    Bom, todos acham 255 efeitos muito pouco, né? Então tá aí, pra quem quiser aumentar esse limite pra 65,535. Mas como nem tudo é perfeito, pra fazer isso você precisará estar usando OTClient e também ter as sources do seu servidor. PS: Só testei em 8.54 Vamos ás edições do servidor: No protocolgame.cpp: No protocolgame.h: No game.cpp: No game.h: No player.h: Bom, agora falta editar no const.h: Está quase pronto, agora, falta fazer o client aceitar esses dados, pra isso, em otclient/modules/game_things/things.lua, em baixo de: local version = g_game.getClientVersion() Adicine: g_game.enableFeature(GameMagicEffectU16) Pronto, se fizer tudo corretamente, funcionará \o Bom, Lordbaxx disponibilizou a sua source(de poketibia) com o limite estendido: Créditos: Featzen(100%)
    1 ponto
  4. OTChecker é uma ferramenta para jogadores e OT admins. O sistema coleta informações de jogadores e OT Servers e as utiliza para enviar notificações. Para jogadores: Encontre os melhores servidores e veja informações legais sobre eles. Você pode receber notificações quando um jogador for visto online ou avançar de level. Além disso, você pode seguir seus servers favoritos e saber quando eles estiverem offline, dentre outras opções. Para admins: Dê ao seu OT uma página bonita, mais visibilidade e veja informações úteis. Configure canais de notificação e aumente a competitividade entre seus jogadores. Diversas opções estão disponíveis. Beta test liberado! Lembre-se de selecionar o pacote Beta Tester ao criar sua conta. Site: https://otchecker.net Alguns guias: Como adicionar um server na OT List/Grid Aumentando o tamanho máximo das Network Messages Configurando notificações de OTServers e Players
    1 ponto
  5. MatheusGlad

    Como Editar Magias [Novo Update]

    Versao 0.1b Tutorial Voce nao Sabe nada sobre scripts e nem mesmo como funcionao e quer criar uma magia Voce pode ir no classico copy/paste: Primeiro Passo: Copie uma tag no spells.xml Exemplo: E cole logo a baixo uma identica. Agora edite certos campos: Vermelho Palavras a serem ditas para a magia sair Verde Level para Usar a magia Amarelo Mana pra Usar a magia Negrito Voce deve mudar para o nome do seu script, no caso usaremos eternal extreme winter Procure na pasta scripts/attack o bloco de notas chamado eternal winter copieo e cole renomeie-o para eternal extreme winter, abaixo ensino como editar. Em seguida voce pode editar certas coisas Azul Minimo Dano -- Leve em base que dakele geito que esta 2.7 ira dar 500 de dano se voce multiplicar por 2 o 2.7 ira ficar 5.4 e ira dar 1000 de dano Rosa Maximo Dano -- mesmo conceito de cima Laranja se voce nao conhece o comando pode ser !z 1,2,3...66 ou /z 1,2,3...66 useo no seu ot e veja um bem legal e apague toda a parte laranja e bote o efeito que voce quer no meu caso irei botar 61 Conclusao a magia ira ficar com a forma do exevo gran mas frigo com otro dano e com otro efeito ___________ Update 0.2a Usando tambem o comando !x ou /x 1,2,3...41 Na linha da sua magia vai estar assim: Para usar os efeitos do /x ou !x voce deve botar antes do EFFECT a palavra DISTANCE e ficara assim: Negrito Como devera ficar para utilizar o comando !x ou /x Listinha de efeitos e seus devidos nomes: ___________________ Update 0.2b Mudando a area da sua spell: Repare a linha da nossa primeira spell la em cima Neste local voce edita a area da sua magia vamos começar: Apague toda akela linha acima em negrito e bote isto: Legenda dos numeros: 0 = nao vai acertar a magia 1 = aonde a magia vai acertar 2 = centro que eh o player (nao acertara tambem) Agora voce pode fazer uma area que voce queira de qualquer forma ___________________ Update 0.3a Como Trocar o Dano da sua Magia: Para trocar o tipo de dano repare a linha da magia: Vermelho Eh o tipo de dano que ira dar eh so mudalo para outro tipo Listinha de Danos: COMBAT_PHYSICALDAMAGE - 1COMBAT_ENERGYDAMAGE - 2COMBAT_EARTHDAMAGE - 4COMBAT_POISONDAMAGE - 4COMBAT_FIREDAMAGE - 8COMBAT_UNDEFINEDDAMAGE - 16COMBAT_LIFEDRAIN - 32COMBAT_MANADRAIN - 64COMBAT_HEALING - 128COMBAT_DROWNDAMAGE - 256COMBAT_ICEDAMAGE - 512COMBAT_HOLYDAMAGE - 1024COMBAT_DEATHDAMAGE - 2048PS:Voce pode usar os numeros no lugar das palavras ___________________ Update 0.3b Botando em pratica tudo que aprendemos! Neste update nos iremos usar todo o conteudo do tutorial para fazer uma magia com varios efeitos,danos e areas diferentes Aqui esta o script que criei para trabalharmos em cima dele: Legenda: Azul Dano de cada wave (onda) da sua magia Negrito Area das magias (arr) Vermelho Pausa de uma wave para outra, se quizer aumente bote 100,300,500... Pronto agora se voce viu os outros updates sabera mudar dano efeito e fazer uma otima magia bem louca Video de Demonstraçao: __________ Fim dos Updates (Se voce tiver alguma opniao de update MP para mim que eu faço mais updates)
    1 ponto
  6. RigBy

    Melhor resposta, Nome no rep.

    Seria uma boa amostrar a quantidade de melhores respostas que uma pessoa tem no perfil que nem a reputação e não apenas no top 5 (se isso já existir eu não sei onde fica). E também volta com aqueles nomezinho que tinha antigamente na reputação, tipo ao atingir 1000 rep ficaria la em baixo da reputação "Sou o Deus do XTibia".
    1 ponto
  7. Piabeta Kun

    Maurolkit Ressurge de Deletera!

    Eis que volta Maurolkit de DELETERA (level 797), que havia sido deletado ontem, talvez por um equivoco da CIP, não sabemos ao certo, mas pode ter acontecido falha no sistema de detecção de ferramentas de software ilegais. hoje sim, hoje sim, hoje não....
    1 ponto
  8. AdilsonHacker

    Melhor resposta, Nome no rep.

    Eu concordo totalmente com você, meu amigo.
    1 ponto
  9. Piabeta Kun

    Dominios .com -- HELP !

    cara isso é muito relativo, pq tem haver com as circunstancias, modem, router, modem rotiado, provedor de internet, tudo isso ai é uma dor de cabeça, se seu provedor nao bloqueia as portas, o mais simples é achar um roteador que libere as funçoes de portas que voce precise de boa, mais cada modelo tem seu jeito de configurar, logo entao é um bixo de 7 cabeças, so fuçando na net e descobrindo o que da ou nao! acaba saindo mais pratico pagar um host!
    1 ponto
  10. Imagem Tutorial Primeiro você precisa abrir o arquivo " config.php " e encontrar // If useDB is false, this array list will be used for shop offers. $config['shop_offers'] = array( // offer 1 1 => array( 'type' => 1, // 1 = item id offers, 2 = premium days [itemid ignored], 3 = sex change[itemid & count ignored], 4+ = custom. 'itemid' => 2160, // item to get in-game 'count' => 5, //if type is 2, this represents premium days 'description' => "Crystal coin.", // Description shown on website 'points' => 100, // How many points this offer costs ), // offer 2 2 => array( 'type' => 1, 'itemid' => 2392, 'count' => 1, 'description' => "Fire sword.", 'points' => 10, ), // offer 3 3 => array( 'type' => 2, 'itemid' => 12466, // Item to display on page 'count' => 7, 'description' => "Premium membership.", 'points' => 25, ), // offer 4 4 => array( 'type' => 3, 'itemid' => 12666, 'count' => 3, 'description' => "Change character gender.", 'points' => 10, ), 5 => array( 'type' => 3, 'itemid' => 12666, 'count' => 0, 'description' => "Change character gender.", 'points' => 20, ), 5 => array( 'type' => 4, 'itemid' => 12666, 'count' => 1, 'description' => "Change character name.", 'points' => 20, ), ); ?> E Substituir com um simples include // If useDB is false, this array list will be used for shop offers. include 'shopitems.php'; ?> Agora precisamos fazer algumas mudanças no " Shop.php " para torná-lo o principal responsável principal para a seleção categoria Você deve encontrar esta tabela <table> <tr class="yellow"> <td>Description:</td> <?php if ($config['shop']['showImage']) { ?><td>Image:</td><?php } ?> <td>Count/duration:</td> <td>Points:</td> <td>Action:</td> </tr> <?php foreach ($shop_list as $key => $offers) { echo '<tr class="special">'; echo '<td>'. $offers['description'] .'</td>'; if ($config['shop']['showImage']) echo '<td><img src="http://'. $config['shop']['imageServer'] .'/'. $offers['itemid'] .'.'. $config['shop']['imageType'] .'" alt="img"></td>'; if ($offers['type'] == 2) echo '<td>'. $offers['count'] .' Days</td>'; else if ($offers['type'] == 3 && $offers['count'] == 0) echo '<td>Unlimited</td>'; else echo '<td>'. $offers['count'] .'x</td>'; echo '<td>'. $offers['points'] .'</td>'; echo '<td>'; ?> <form action="" method="POST"> <input type="hidden" name="buy" value="<?php echo (int)$key; ?>"> <input type="submit" value=" PURCHASE " class="needconfirmation" data-item-name="<?php echo $offers['description']; ?>" data-item-cost="<?php echo $offers['points']; ?>"> </form> <?php echo '</td>'; echo '</tr>'; } ?> </table> E substituir todos com este include <table> <?php include 'layout/overall/menu.php'; ?> </table> Agora para adicionar o Estilo você deve ir em "/layout/overall/head.php" e adicione esta linha após a linha Style.css <link rel="stylesheet" type="text/css" href="layout/css/menu.css" /> Anexos e por final importe esses arquivos http://www.mediafire.com/download/2jeo81flw9adifc/WWW.rar Créditos Kushovu ( Criador ) Mudrock ( traduzir e trazer para o fórum )
    1 ponto
  11. Já terminei faz tempo, só estou esperando você avisar que criou o item. Certamente não ficou igual a PxG, porque, caso tenham usado esse método, deve ter demorado um bom tempo para achar o tempo ideal para representar um pulo "perfeito" (como o da gif). E, sinceramente, não estava com paciência de ficar procurando tal tempo. Função de pulo: function jump(cid, rounds) doChangeSpeed(cid, -getCreatureSpeed(cid)) doCreatureSetNoMove(cid, true) for i = 1, rounds do addEvent(function() if isCreature(cid) then local pos = getThingPos(cid) local item = doCreateItem(ITEM_INVISIVEL, 1, pos) addEvent(function() local it = getTileItemById(pos, ITEM_INVISIVEL).uid if it > 0 then doRemoveItem(it) end if i == rounds then doRegainSpeed(cid) doCreatureSetNoMove(cid, false) end end, rounds == 1 and 200 or (i + 2) * 100) end end, i * (rounds == 1 and 200 or 100)) end end Use jump(cid, 1) para um pulo de altura "1" (como o causado pelo Earthquake), e jump(cid, 2) para pulos como do Heavy Slam. Código do Heavy Slam: local config = { areas = {area1, area2}, --Áreas, em ordem de execução. effect = 160, --Efeito. combat = NORMALDAMAGE, --Elemento. } local function doPushCreature(target, cid) if target > 0 then if not isNpc(target) then local position = getThingPosition(cid) local fromPosition = getThingPosition(target) local x = ((fromPosition.x - position.x) < 0 and -1 or ((fromPosition.x - position.x) == 0 and 0 or 1)) local y = ((fromPosition.y - position.y) < 0 and -1 or ((fromPosition.y - position.y) == 0 and 0 or 1)) local toPosition = {x = fromPosition.x + x, y = fromPosition.y + y, z = fromPosition.z} if doTileQueryAdd(target, toPosition) == 1 and getTileInfo(toPosition).house == false then doTeleportThing(target, toPosition, true) end end end end jump(cid, 2) addEvent(function() for i = 0, #config.areas - 1 do addEvent(function() local pos = getPosfromArea(cid, config.areas[i + 1]) doMoveInArea2(cid, config.effect, config.areas[i + 1], config.combat, min, max) for j = 1, #pos do local pid = getTopCreature(pos[j]).uid if ehMonstro(pid) then doPushCreature(pid, cid) elseif isSummon(pid) then local master = getCreatureMaster(pid) if isSummon(cid) then if getPlayerStorageValue(master, 52480) >= 1 and getPlayerStorageValue(master, 52481) >= 0 then local masterCid = getCreatureMaster(cid) if isDuelingAgainst(masterCid, master) then doPushCreature(pid, cid) end end else doPushCreature(pid, cid) end end end end, i * 230) end end, 650)
    1 ponto
  12. Piabeta Kun

    Dominios .com -- HELP !

    basicamente quando voce contrata um dominio .com voce tem acesso ao painel de controle do dominio, la voce tem a opção de redirecionar para o ip que voce deseja mudar, lembrando qe o ip numerico de um pc padrão pode variar ao reiniciar o modem,ou seja, isso pode deixar o redirecionamento do ip .com sem funcionar, tendo que alterar novamente no site e demora um cado pra entrar em vigor o redirecionamento! bjs!
    1 ponto
  13. Bruno

    Top Level

    Mais pra frente vou disponilizar um gesior bacana pra galera, não posso prometer agora pois estou em uma tremenda correria. Mas postar ferramentas assim separadas, infelizmente eu não me sujeito a isso. Como muitos gesiors são modificados, não há algo padrão e isso vai dar muita manutenção. Tópico movido para área de dúvidas resolvidas.
    1 ponto
  14. Bruno

    Movements Sql

    Tem sim, Basta usar a condição WHERE id = getPlayerGUID(cid)
    1 ponto
  15. Benny

    [X] Abstract Smudge SPEEDART

    Bem, o @moskitinho tinha pedido a "técnica" Isso não é muito bem um tutorial, mas a ideia é essa hauhau Enfim, abraços ~
    1 ponto
  16. gabrielbsales

    Aumentar Limite De Efeitos

    Bom, está no tutorial, haha Pra isso, usem algum sitem de conversão de Decimal para Hexadecimal(Usei este).Basta pegar o resultado, e adicionar 0x0 antes. No caso, 256 é 0x100
    1 ponto
  17. Bruno

    First items

    @@SkyDarkyes, tenta assim amigo:
    1 ponto
  18. RigBy

    Summon spell

    Summon por level Summon não ganha exp
    1 ponto
  19. @ Não tenho certeza, mais tenta ai: local config = { segundos = 5, lerIP = true } function sleep(n) local t = os.clock() while os.clock() - t <= n do end end function onLogout(cid) local timeNow, playerIP, m_lastLogin, m_lastIP, seg = os.time(), getPlayerIp(cid), 0, 0, config.segundos if m_lastLogin + config.segundos >= timeNow and (not config.lerIP or m_lastIP == playerIP) then for i = 1, config.segundos do doPlayerSendTextMessage(cid, 19, "[Pokémon X Timer] Aguarde "..seg.." segundo(s) Para Poder Deslogar!.") sleep(1) seg = seg - 1 end return false end m_lastIP = playerIP m_lastLogin = timeNow return true end
    1 ponto
  20. Avronex

    [Encerrado]RealPoke Apresentação

    Nova foto adicionada!
    1 ponto
  21. zipter98

    System Anti-Luramento

    <globalevent name="monster1" type="start" event="script" value="nome_do_arquivo.lua"/> <globalevent name="monster2" interval="3600" event="script" value="nome_do_arquivo.lua"/>
    1 ponto
  22. zipter98

    System Anti-Luramento

    Tem a maneira mais prática, que envolve apenas o onSpawn. Entretanto, você precisaria registrar o evento no arquivo XML de todos os monstros do jogo. (creaturescript) function backToPos(cid, pos) if isCreature(cid) then doTeleportThing(cid, pos) addEvent(backToPos, 60 * 60 * 1000, cid, pos) end end function onSpawn(cid) backToPos(cid, getThingPos(cid)) return true end Se achar muito cansativo, há uma outra maneira, que apesar de gastar muita memória no processo, você só precisará registrar 2 tags. (globalevent) function onStartup() for _, m in pairs(getMonstersOnline()) do local value = ":"..getThingPos(m).x.."/"..getThingPos(m).y.."/"..getThingPos(m).z setPlayerStorageValue(m, 9182, value) end return true end function onThink() for _, m in pairs(getMonstersOnline()) do local t = getPlayerStorageValue(m, 9182):sub(2):explode("/") doTeleportThing(m, {x = tonumber(t[1]), y = tonumber(t[2]), z = tonumber(t[3])}) end return true end
    1 ponto
  23. moskitinho

    [FLCast] Tarantulas Task + Hide

    E ai manolos, Terminei a task essa semana e acho que pode ajudar muitos low level. Deixem seus comentários e inscreva-se!
    1 ponto
  24. beto06

    Resetar Spawns

    Sim, ao salvar ele sempre cria o arquivo de spawn e houses
    1 ponto
  25. SkyDarkyes

    Resetar Spawns

    Sim excluir todos do mapa, mas, e depois pra criar outro arquivo spawn, o remeres cria automaticamente?
    1 ponto
  26. Iron Body: exp2.0.lua: Em baixo de: if damageCombat == GROUNDDAMAGE then if isInArray(specialabilities["levitate"], getCreatureName(cid)) then valor = 0 end end coloque: if getCreatureName(cid) == ironBody.name and getPlayerStorageValue(cid, 2818) < os.time() and math.random(1, 100) <= ironBody.chance then doSetCreatureOutfit(cid, {lookType = ironBody.outfit}, ironBody.duration * 1000) setPlayerStorageValue(cid, 9658783, 1) setPlayerStorageValue(cid, 2818, os.time() + ironBody.cooldown) addEvent(function() if isCreature(cid) then doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 9658783, -1) end end, ironBody.duration * 1000) end Em goback.lua (actions), abaixo de: doCreatureSay(cid, mgo, TALKTYPE_SAY) coloque: if pokename == ironBody.name then doSetCreatureOutfit(pk, {lookType = ironBody.outfit}, ironBody.duration * 1000) setPlayerStorageValue(pk, 9658783, 1) setPlayerStorageValue(pk, 2818, os.time() + ironBody.cooldown) addEvent(function() if isCreature(pk) then doRemoveCondition(pk, CONDITION_OUTFIT) setPlayerStorageValue(pk, 9658783, -1) end end, ironBody.duration * 1000) end Depois, em configuration.lua: ironBody = { name = "Bronzong", --Nome do pokémon. outfit = xxx, --Outfit. duration = 5, --Duração. chance = 35, --Chance, em %, de ativar a passiva. cooldown = 15, --Cooldown para usá-la novamente. } E você tem certeza absoluta que o pulo do Bronzong não é um efeito? Conferiu no client da PxG? Se for literalmente um salto, já imagino como foi feito. E, assim, adianto: será necessária a criação de um item invisível, com a propriedade do jogador poder passar por cima dele e sofrer uma elevação (como os bancos e parcels, sabe?).
    1 ponto
  27. tente Aqui, vá em npcs/script e crie um arquivo chamado vocacao.lua e coloque isso dentro local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local choose = {} local cancel = {} local available = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if(msgcontains(msg, "info")) then selfSay("Olá "..getCreatureName(cid)..", Você quer trocar de vocação, digite o nome da sua proxima vocação. Temos Sorcerer, Druid, Knight e Paladin.", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "sorcerer") or msgcontains(msg, "SORCERER") and talk_state == 1 then doPlayerSetVocation(cid, 1) selfSay("Parabéns, você virou um Sorcerer", cid) broadcastMessage("O jogador "..getCreatureName(cid).." virou um Sorcerer") elseif msgcontains(msg, "druid") or msgcontains(msg, "DRUID") and talk_state == 1 then doPlayerSetVocation(cid, 2) selfSay("Parabéns, você virou um Druid", cid) broadcastMessage("O jogador "..getCreatureName(cid).." virou um Druid") elseif msgcontains(msg, "paladin") or msgcontains(msg, "PALADIN") and talk_state == 1 then doPlayerSetVocation(cid, 3) selfSay("Parabéns, você virou um Paladin", cid) broadcastMessage("O jogador "..getCreatureName(cid).." virou um Paladin") elseif msgcontains(msg, "KNIGHT") or msgcontains(msg, "KNIGHT") and talk_state == 1 then doPlayerSetVocation(cid, 4) selfSay("Parabéns, você virou um Knight", cid) broadcastMessage("O jogador "..getCreatureName(cid).." virou um Knight") elseif(msgcontains(msg, "bye") or msgcontains(msg, "goodbye") or msgcontains(msg, "cya")) then selfSay("cya!", cid, TRUE) closeShopWindow(cid) removeFocus(cid) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) e depois volte uma pasta, onde fica os xmls dos npc e crie um novo arquivo chamado vocacao.xml e coloque isso dentro <?xml version="1.0" encoding="UTF-8"?> <npc name="Vocation Changer" script="data/npc/scripts/vocacao.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="131" head="95" body="95" legs="95" feet="95" corpse="6080"/> </npc>
    1 ponto
  28. Amigo compilei para você e deixei já pronto para rodar. Funcionou normalmente aqui. Um REP+ como feedback. Link do Global 32 Bits no servidor mega https://mega.co.nz/#!Q0oEHS6S!-T3qgSbFFBxC6-DJBxDKSyiz5g8YklqbnR5sfCBuswE @MitSuig Se desejar anexar ao tópico deixo aqui minha contribuição. Atenciosamente, Bon
    1 ponto
  29. Dbko

    SetCreaturename Bunshin

    Versão testada pelo Autor do post: TFS 0.4 rev 4395 Provavelmente pode ser usada em outras versões Versão testada por mim: TFS 0.3.6 pl1 Nome do code: setCreatureName(cid, newName, newNameDescription) Pra quem não sabe nameDescription é o nomezinho que aparecerá quando você der look. Exemplo: You see a troll. a parte do "troll" é a descrição do nome. esse codigo ja exist aki no xtibia mas so copie e postei no xtibia Vamos começar. Bom, primeiramente queria dizer que este code não fui eu que fiz, e foi retirado da otland com autorização. Primeiramente vá em monster.h E procure por: class Monster : public Creature feito isso você verá isto: class Monster : public Creature{ private: Monster(MonsterType* _mType); public:#ifdef __ENABLE_SERVER_DIAGNOSTIC__ static uint32_t monsterCount;#endif Na parte de: #ifdef __ENABLE_SERVER_DIAGNOSTIC__ Você adicionara em cima: std::string name, nameDescription; Ficando assim: class Monster : public Creature{ private: Monster(MonsterType* _mType); public:std::string name, nameDescription;#ifdef __ENABLE_SERVER_DIAGNOSTIC__ static uint32_t monsterCount;#endif Agora você irá procurar por: virtual const std::string& getName() const {return mType->name;} e substituir por: virtual const std::string& getName() const {return name;} Depois procure por: virtual const std::string& getNameDescription() const {return mType->nameDescription;} substitua por: virtual const std::string& getNameDescription() const {return nameDescription;} novamente procure por: virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} e substitua por: virtual std::string getDescription(int32_t) const {return nameDescription + ".";} Feito este você irá em monster.cpp e procure por: Monster::Monster(MonsterType* _mType): provavelmente você verá: Monster::Monster(MonsterType* _mType): Creature(){isIdle = true; isMasterInRange = false; teleportToMaster = false; mType = _mType; spawn = NULL; raid = NULL;defaultOutfit = mType->outfit; currentOutfit = mType->outfit; e embaixo de raid = NULL; você adicionará: name = mType->name;nameDescription = mType->nameDescription; feito isso você ira em luascript.h e procure por: static int32_t luaDoPlayerSendCancel(lua_State* L); logo abaixo você adicionará: static int32_t luaSetCreatureName(lua_State* L); feito isso vá em luascript.cpp e procure por: lua_register(m_luaState, "doPlayerSendCancel", LuaScriptInterface::luaDoPlayerSendCancel); e adicione abaixo: //setCreatureName(cid, name, description)lua_register(m_luaState, "setCreatureName", LuaInterface::luaSetCreatureName); depois procure por: int32_t LuaScriptInterface::luaDoSendDefaultCancel(lua_State* L) e adicione acima: int32_t LuaInterface::luaSetCreatureName(lua_State* L){ //setCreatureName(cid, newName, newDescription) std::string newDesc = popString(L); std::string newName = popString(L); ScriptEnviroment* env = getEnv(); Creature* creature; if(creature = env->getCreatureByUID(popNumber(L))){Monster* monster = (Monster*)creature;monster->name = newName;monster->nameDescription = newDesc; lua_pushboolean(L, true);} else{ errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1;} Feito tudo o que foi pedido tecle Ctrl+F11 e bom proveito. agora em Seu mapa Wolrd Procure por uma position bem distante do mapa e crie uma areá pequena assim
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...