Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 09/10/17 em todas áreas

  1. PokéBar/MoveBar/Sound para OLD Client

    UnknowLoad e 4 outros reagiu a Banker por uma resposta no tópico

    5 pontos
    Venho através desse POST, disponibilizar para vocês duas DLL's, uma de poke e move bar, e a outra consiste em um sistema de som, para old client! (POKETIBIA) 1º Baixe as Dll's aqui -> Download scan: aqui 2º Baixe o Stude_PE aqui -> Download scan: aqui (OBS: OS SCANS REGISTRAM IRREGULARIDADES, PORÉM FALANDO DE UM PROGRAMA QUE FAÇA INJEÇÃO E MODIFICAÇÕES EM EXE, E DLL'S, É SEMPRE DIFÍCIL VER ALGO 100% LIMPO OU SEJA SÃO AMEAÇAS INOFENSIVAS) 3º Siga o Tutorial, para fazer a instalação. OBS: Pode ser que não funcione em todos devido às config. de sua Base! Créditos: Eu - Por Fazer o Tutorial e disponibilizar Nest Silva - Dono do Server, o qual eu encontrei as DLL's(PokeIlusion) Não encontrei o Responsável, por essas DLL's, porém à ele pertence os Créditos
  2. Bônus skills/ml Em creaturescripts/scripts crie um arquivo: bonuspremium.lua Em creaturescripts.xml adicione a tag: <event type="login" name="BonusPremium" event="script" value="bonuspremium.lua"/> Bônus Loot Em creaturescripts/scripts crie um arquivo: bonusloot.lua Registre o evento no login.lua: registerCreatureEvent(cid, "BonusLoot") Em creaturescripts.xml: <event type="kill" name="BonusLoot" event="script" value="bonusloot.lua"/>
  3. invasão + No PvP

    Cain Jorge e um outro reagiu a Celulose por uma resposta no tópico

    2 pontos
    -bug .... resolvendo .
  4. [DOWNLOAD] Base Icon Pokétibia

    gustavof e um outro reagiu a Mateus Santosss por uma resposta no tópico

    2 pontos
    @ahrizinhas2 Hey pessoas! eu to aqui trazendo uma .PSD dos icones ON e OFF. Só saber um pouco de usar o Photoshop. Imagem: Link: https://www.mediafire.com/file/4bd5ds5djwfway8/Template de Icone (TK).psd Scan: https://www.virustotal.com/pt/file/5ca101435e0e2dd2fc9edd86f2b01a5a718f6f4b9520d067dca22eea49857da7/analysis/1505034057/
  5. 1 ponto
    Dragon Ball Rox Servidor 100% estável com mais de 200 horas online. 38 Vocações sendo 9 delas vip que são: Shenron,Vegetto,Zaiko,Kagome,Tapion,Kame Chilled,C8 e King Vegetta. Spells de fast attack (Usa uma vez sai 10 hits). Eventos automaticos como: Castle,Battlefield,Run event. Reborn level maximo 600. Vamos aos bugs que eu encontrei: * Zombie event quando o zombie pega algum player todos do evento e mandando pra fora e evento encerra. * Erro quando usa spell e a pessoa morre antes da spell acabar no caso das de combo. * Erro nos eventos Battlefield e Run event quando vai adicionar a recompensa da erro por faltar uma tabela na database que não me recordo o nome agora. Update v2 Adicionado 7 novas vocações vips sendo elas: Bills,Whiss,Golden Freeza,Vegetto Blue,Zamasu,Gogeta Blue e Goku Black Evo. Adicionado 3 vocações free sendo elas: Zeno, Vados e Vegetto Black. Vocações que antes era vip no update v1 agora são free. Fazer reborn não precisa mais fazer quest das esferas do dragão. Adicionado cassino que se ganha small diamonds que se troca por: Divine Stone(Usado para upgrade), Black Stone (Item para virar Vegetto Black) e Leviathan Amulet. Adicionado npc que vende Anti Loss Ring Protege 10% contra todos danos e funciona como a band of loss porem infinita. Ele fica no Yama. Adicionado sistema de pontuação por hora online, cada 1 hora online = 1 ponto que se pode trocar por itens no npc Points Trader no Yama. Adicionado sistema Anti-MC, podendo logar somente 2 contas por ip. Adicionado 3 bosses espalhados pelo mapa (Earth). Adicionado sistema de forja podendo criar o melhor set, armas free e o item para virar Zeno. Adicionado sistema de upgrade fazendo seu item ficar mais forte. Adicionado transformação ultra god para todas as vocações, sendo pega no templo de reset ao lado do esquerdo do templo. Necessário ter level 800 e possuir 100 God Essences que dropam do Ultra God Bills em God Island.Para entrar no templo de reset é necessário possuir 1 reset, para dar reset necessita ter level 800 e digitar o comando "!reset", você voltara para o level 100 com o hp/mp de um player level 100 mas ganhara acesso a área de reset que tem o npc de ultra god e a área de forja. Nova moeda acima de Gold sendo ela Blue God equivalente a 100 Gold Bars. Area de evento pvp e dice/bag adicionada no Yama. Area vip adicionada. Adicionado 2 sets novos free, 2 armas free, 2 shields free, senzu free (God Senzu), Senzu vip (Mystic Senzu), Vados staff free, Whiss staff vip. Vocações que antes era vip na v1 se pega na capsule ao lado direito do templo. Algumas modificações no mapa, hunts, quest. Por enquanto é só isso que estou lembrando,conforme eu lembro edito o tópico. Gostou ? Clique em Gostei logo abaixo. Para consertar o erro da loteria só executar essa query na sua database: CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, `world_id` tinyint(2) unsigned NOT NULL default '0', `item_name` varchar(255) NOT NULL, `date` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; Downloads Server (Distro para windows e linux já compilada) Scan Cliente Scan Sources Scan Site (Modern Acc) Scan Database Scan Creditos server: Kramer, WhiteBubble Creditos site: @Hastafaru e a WhiteBubble por adaptar ao server Creditos source: Fir3element e WhiteBubble por aumentar limite de efeitos e por skill fist skill para aumentar attack speed.
  6. Dezon OT Admin [restarter]

    neengoso reagiu a dezon por uma resposta no tópico

    1 ponto
    Olá pessoal! Venho trazer um aplicativo que eu desenvolvi para ser um "restarter" simples e eficaz ! Dezon OT Admin [+] Funções - Restarter - Inicia junto com o windows e roda o otserver caso assim configurado - Logs completos - Você pode salvar os logs em arquivos - Não dá erro no config.lua !!! - Pode minimizar ao tray [+] Atualização - Adicionado a função para desativar/ativar o relatório de erros do windows - [NOVO] Adicionado linguagem português e inglês [+] Imagens [+] Scan - Clique aqui para acessar o scan [+] Downloads - .Net Framework 4.0 (instalador web) - Dezon Ot Admin Obrigado !!!
  7. [GEN 7] Iniciais

    LeLoko reagiu a xMateuss por uma resposta no tópico

    1 ponto
    Download Sprites: http://www.mediafire.com/file/by6gi43iblhpoay/Iniciais+from+Tibiaking+.zip Scan Sprites: https://www.virustotal.com/pt/file/5f8c96c3f979dadb7c4280952117743c443d5970b436de0c025be98db049d055/analysis/1489860851/ Créditos: Eu (Recortei as sprites) Aos criadores de quem fez elas (Achei no google)
  8. {Tutorial} NPC'S

    Skulldrich reagiu a xFatality por uma resposta no tópico

    1 ponto
    Tutorial de NPCS Esse tutorial irá servir para quem gostar de fazer certo NPCs mais complexos com storages, varias missões e tudo mais. Usando como base o Jiddo system apenas para comprar e vender itens, pois não gosto de usar sistemas que facilitam Pois não criam scripters e sim preguiçosos, ainda mais quando o sistema é abandonado ai você se lasca O npc é dividido em duas partes : - Arquivo XML : Responsavel pelo visual e algumas propriedades dele (pelo jiddo system) - Arquivo Lua : Responvasel pelas falas e vendas (Lua puro) Visual do Npc Bem primeiro vamos explicar o visual de um npc, <npc name="Bonifacius" script="data/npc/scripts/default.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="97" body="100" legs="115" feet="114" corpse="2212"/> </npc> Explicando parte a parte Name : Nome dele que aparecerá para todos. script : Arquivo lua do script dele walkinterval : De quanto em quanto milessegundos ele irá caminhar. floorchange : Se ele irá subir escadas ou cair em buracos. access : O valor de acesso dele, caso ele tenha um acesso 5 poderá usar todo os comandos de GODS. level,maglevel : É tosco, você pode fazer ele soltar magias (nunca tentei) e no caso isso contaria. Health Now : Sangue que terá max : Maximo de health (ja fizeram npc com life media) look type : Tipo de roupa dele, Caso queira ele como objeto use look typeex. head,body,legs,feet : Cor da cabeça,corpo,calça e pé do npc. corpse : Corpo caso ele morra (LOL não dá...) Esse é a base do arquivo xml do npc. Caso você queirá enfiar tosquisses pelo Jiddo System fica mais ou menos assim: <?xml version="1.0" encoding="UTF-8"?> <npc name="Bonifacius" script="data/npc/scripts/default.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="97" body="100" legs="115" feet="114" corpse="2212"/> <parameters> <parameter key="module_shop" value="1"/> <parameter key="shop_buyable" value="banana,2676,2;grapes,2681,3;melon,2682,8;orange,2675,5;pumpkin,2683,10;chees e,2696,5;egg,2695,2;cookie,2678,2;meat,2266,5"/> <parameter key="message_greet" value="What you doing soldier ? Take your weapon and go war!"/> <parameter key="message_walkaway" value="Hey Hey, where you go ?"/> <parameter key="message_farewell" value="Bye bye brave soldier. Remember, peoples without head, don't transform in undeads."/> <parameter key="message_alreadyfocused" value="You are drunked ? You talk really talk to me ?"/> </parameters> </npc> <parameters> <parameter key="module_shop" value="1"/> <parameter key="shop_buyable" value="banana,2676,2;grapes,2681,3;melon,2682,8;orange,2675,5;pumpkin,2683,10;chees e,2696,5;egg,2695,2;cookie,2678,2;meat,2266,5"/> <parameter key="message_greet" value="What you doing soldier ? Take your weapon and go war!"/> <parameter key="message_walkaway" value="Hey Hey, where you go ?"/> <parameter key="message_farewell" value="Bye bye brave soldier. Remember, peoples without head, don't transform in undeads."/> <parameter key="message_alreadyfocused" value="You are drunked ? You talk really talk to me ?"/> </parameters> Esse é um exemplo basico de npc vendedor, que não faz muita coisa. module_shop : Quer dizer que ao falar trade ele irá abrir a janela tosca de venda de itens. shop_buyable : Isso faz tudo que tiver ai ele vender sendo a sintaxe parameter key="shop_buyable" value="nome inutil (inutil mesmo não serve para nada),id do produto,preço; Podendo você adicionar milhares e milhares, unico porém de você adicionar pelo XML é que não há possibilidade de fazer a venda por backpack (pelo menos até a versão que testei) message_farewell Mensagem de despedida Essas message tem alguns tipos explicados abaixo : Tudo isso acima deverá estar depois de message_ e as mensagens em default você poderá encontrar em npc/lib/npcsystem/npchandler.lua Se você fazer asneira lá os npcs não funfam cuidado o0 Ainda há o npc de barco, muito simples : <parameter key="travel_destinations" value="desert,1594,835,5,180;edron,931,825,6,90;"/> Sintaxe value="nome da cidade ,coordenada x,coordenada y,coordenada z ,valor;" local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 npcHandler:addModule(FocusModule:new()) Ou seja npcs, que aquilo que mostrei no xml é suficiente você pode direcionar para o default.lua Eu disse que npcs feitos no XML, a opção de compra por backpack não é possivel Então para faze-la em um npc Lua ficará assim : 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 shopModule = ShopModule:new() npcHandler:addModule(shopModule) shopModule:addBuyableItem({'health potion'}, 7618, 45, 1, 'health potion') shopModule:addBuyableItem({'mana potion'}, 7620, 50, 1, 'mana potion') shopModule:addBuyableItemContainer({'bp hp'}, 2000, 7618, 900, 1, 'backpack of health potions') shopModule:addBuyableItemContainer({'bp mp'}, 2001, 7620, 1000, 1, 'backpack of mana potions') npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Nesse exemplo o npc vende health potion,mana potion e bp dos respectivos. Sendo a sintaxe shopModule:addBuyableItem({'nome inutil'}, id preço, quantidade ou sub tipo, 'nome inutil') Esse nome só serve para você não se perder, pois ao dizer trade ele aparecerá o nome do item pelo items.xml e não o que voce falou Sintaxe da backpack shopModule:addBuyableItemContainer({'nome'}, id da backpack, id, preço, sub tipo ou quantidade (caso seja agrupavel), 'nome inutil') 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'rainbow') or msgcontains (msg, 'perch') then if getPlayerStorageValue(cid,30013) == 8 then selfSay('Yeah. But peguins, stoled my last crate of this. Please go lair of this plague and take again my itens. You go ?', cid) talkState[talkUser] = 1 else selfSay('You are a lier. Leave here!', cid) end elseif msgcontains(msg, 'mission') then if doPlayerRemoveItem(cid,7707,1) == 1 then selfSay('Congratulations. Give this for Willard.', cid) setPlayerStorageValue(cid,30013,10) talkState[talkUser] = 0 else selfSay('You don\'t have nothing!', cid) end elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') then selfSay('Great. Later report me asking mission.', cid) setPlayerStorageValue(cid,30013,9) talkState[talkUser] = 0 else selfSay('You don\'t have nothing!', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Esse npc ai é um simples de quest, você pode se basear nele para seu primeiro npc Vamos explicar umas coisas importantissimas talkState = Isso ai é a genialidade, a cada passo você pode mandar o player para um estagio. Se você leu meus tutos percebeu que ele é um vetor, mais por que ? Porque, ao ser uma variavel ele é armazenada no servidor certo ? Então se não fosse um vetor, o npc falando com dois ao mesmo tempo poderia se confudir e ferrar tudo literalmente Se você dominar o talkState dominará 50% de npcs de missões Storages = Isso também é indispensavel nos npcs, é sempre bom reservar uns para cada missão Para se ela tiver varias etapas você não se confudir, Ou usar o mesmo value para poder aproveitar no questlog (explicado no tutorial SUper Quests) O npc acima ele é 4º npc da minha quest global do meu otserver de testes. Ignore os erros de Inglês. if msgcontains(msg, 'rainbow') or msgcontains (msg, 'perch') then if getPlayerStorageValue(cid,30013) == 8 then selfSay('Yeah. But peguins, stoled my last crate of this. Please go lair of this plague and take again my itens. You go ?', cid) talkState[talkUser] = 1 else selfSay('You are a lier. Leave here!', cid) end Aqui ao você falar rainbow ou perch ele começa a girar essa parte do script. Ou seja no caso eh msgcontains se você falar Ele irá entender normalmente, e rodará o script. Caso fosse msg ai sim teria quer ser certinho (até maiscula e miniscula acho que ele duvidaria) No caso ele checa o storage 30013 se tem o valor 8, caso tenha ele fala aquela frase enorme e muda seu talkstate para 1 Se não tiver o storage com valor 8, ele te ofende. Esse storage 8 é adicionado no npc anterior. Se você tiver tudo certo ele tem pergunto algo, porém isso só será checado no talkstate 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') then selfSay('Great. Later report me asking {mission}.', cid) setPlayerStorageValue(cid,30013,9) talkState[talkUser] = 0 else selfSay('You don\'t have nothing!', cid) end Se você falar yes, ele manda você ir no penguim hell para você pegar os treco para ele. E te coloca o storage 30013 com valor 9. E veja que ele manda você falar mission quando completar Vamos supor (não supositorio), que você completou ela e falo mission para ele. O que iria checar ? elseif msgcontains(msg, 'mission') then if doPlayerRemoveItem(cid,7707,1) == 1 then selfSay('Congratulations. Give this for Willard.', cid) setPlayerStorageValue(cid,30013,10) talkState[talkUser] = 0 else selfSay('You don\'t have nothing!', cid) end Se você fala mission, ele automaticamente remoe o item 7707 (dado na quest) e parabeniza você. Dando o storage 30013 com valor 10 O valor necessario para o npc anterior voltar a falar com você. Caso você seja caloteiro ele já te desmente. Bem simples, não ? Claro que esse npc é minisculo. Porém ja da para seguir como base. Olhe a evolução dele. 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'mission') then if getPlayerStorageValue(cid,2411) == -1 then selfSay('Entregue essa carta a minha irmã Clarice.', cid) setPlayerStorageValue(cid,2411,1) doPlayerAddItem(cid,8370,1) else selfSay('Eu ja te dei a carta, aguardo resposta', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Ai checamos se ele já fez a quest. No caso se tiver -1 (que nunca fez) ele poderá começa-la. E dará a carta ao player (item 8370 nem sei o que é) Ok. Essa parte ta montada, ele dá a carta. Situação : A NPC Clarice está cantarolando em sua casa, quando você chega com uma carta de seu irmão. Ela recebe de bom grado porém prescisa provar que recebeu. Porém seu jogador não sabe que existe storage value, então Você poderá enviar outra carta ou inventar que ela irá falar com ele. 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'letter') then if getPlayerStorageValue(cid,2411) == 1 then selfSay('Ah você relmente tem a carta de meu amado irmão?', cid) talkState[talkUser] = 1 else selfSay('Ah seu fanfarao saia daqui', cid) end elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid,8013,1) == 1 then setPlayerStorageValue(cid,2411,2) selfSay('Obrigada. Agora eu irei falar com ele sobre o assunto', cid) talkState[talkUser] = 0 else selfSay('Você não tem a carta dele', cid) end else selfSay('Então porque veio aqui ?', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Veja que ela é a prova de erros. Primeiro ao falar letter ela checa se você tem o storage com valor 1 (Ou seja, se você falo com ele) Se não falou ela já te manda pescar, se houver, ela já mete pergunta se você tem a carta Caso não já te manda pescar Caso sim ela tenta pergunta se voce tem a carta Caso diga não ela te manda pescar também, Caso fale sim ela tenta tirar sua carta, caso você tenha ela te agradece e coloca o storage com valor 2 Caso não tenha ela diz que você não tem a carta Vamos suport, que você aceitou e entregou a carta tudo certinho. Você deve voltar ao Valdemar para ele te dar algo não ? Situação : Você ja deu uma de carteiro e agora quer receber sua recompensa, então ao Oscar, Porém ele não é trouxa E como ele sabe se você ja fez tudo ? Uma dica começa com S e termina com orage... Vejam que eu usei a mesma palavra missão e adicionei um else. Se ele tiver o storage com valor 2 e falar missão, obviamente ele fez tudo e como é a ultima missão Não necessita fazer perguntas retoricas (sem resposta), então ele já da sua recompensa e ja fecha seu storage com 3. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 npcHandler:addModule(FocusModule:new()) Se você observar ele tem 4 funções ai que nem foram usadas.[/left] onCreatureAppear(cid) : Ela faz uma ação quando o player entrar em seu raio de ação onCreatureDisappear(cid) : Ela faz uma ação quando o player sai do seu raio de ação. onCreaturesay(cid) : Quando o player fala algo. onThink(cid) : Seria ao pensar ao achar, não tenho certeza do que faz, porém é uma função muito usada. onCreatureMove(creature, oldPos, newPos) : Quando a criatura se move de um lugar para outro. local target = 0 local prevTarget = 0 local maxChaseDistance = 20 local origPos = 0 local origDir = NORTH local lastAttack = 0 local followTimeout = 10 local function isSkulled(cid) local skullType = getPlayerSkullType(cid) if(skullType >= 3) then return true end return false end local function goToOrigPos() target = 0 lastAttack = 0 selfFollow(0) doTeleportThing(getNpcCid(), origPos) end local function updateTarget() if(isPlayer(target) == FALSE) then goToOrigPos() elseif(not isSkulled(target)) then target = 0 selfSay("Now, behave in the future.") end if(target == 0) then local list = getSpectators(getNpcPos(), 8, 8, false) for i=1, table.getn(list) do local _target = list[i] if(_target ~= 0) then if(isPlayer(_target) == TRUE and isSkulled(_target)) then if(selfFollow(_target)) then target = _target if(target ~= prevTarget) then selfSay("We do not tolerate people like you here!") end prevTarget = target break end end end end end end function onCreatureAppear(cid) if(cid == getNpcCid()) then --Wake up call origPos = getNpcPos() --origLook = getCreatureDir(cid) end end function onCreatureDisappear(cid) if(target == cid) then goToOrigPos() end end function onCreatureMove(creature, oldPos, newPos) -- end function onThink() updateTarget() if(target == 0) then return end local playerPos = getCreaturePosition(target) local myPos = getNpcPos() if(myPos.z ~= playerPos.z) then goToOrigPos() return end if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then selfSay("I'll catch you next time.") goToOrigPos() return end if(lastAttack == 0) then lastAttack = os.clock() end if(os.clock() - lastAttack > followTimeout) then --To prevent bugging the npc by going to a place where he can't reach selfSay("You got me this time, but just wait.") goToOrigPos() return end if( (math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -200, -300, CONST_ME_BLOCKHIT) lastAttack = os.clock() end end Bem a função updateTarget faz ele apenas fixar a target (alvo) players com skull white ou red. Então deixe ela para outro dia. Vamos verificar a onThink function onThink() updateTarget() if(target == 0) then return end local playerPos = getCreaturePosition(target) local myPos = getNpcPos() if(myPos.z ~= playerPos.z) then goToOrigPos() return end if(math.abs(myPos.x - origPos.x) > maxChaseDistance or math.abs(myPos.y - origPos.y) > maxChaseDistance) then selfSay("I'll catch you next time.") goToOrigPos() return end if(lastAttack == 0) then lastAttack = os.clock() end if(os.clock() - lastAttack > followTimeout) then --To prevent bugging the npc by going to a place where he can't reach selfSay("You got me this time, but just wait.") goToOrigPos() return end if( (math.abs(playerPos.x - myPos.x) <= 1) and (math.abs(playerPos.y - myPos.y) <= 1)) then doTargetCombatHealth(getNpcCid(), target, COMBAT_LIFEDRAIN, -200, -300, CONST_ME_BLOCKHIT) lastAttack = os.clock() end Explicando cada if. - Primeiro ele checa se ele tem target, se não tiver recomeça o ontarget - Segundo se ele verifica se o player está no mesmo andar que ele (coordenada z) se não tiver volta pro começo - Terceiro ele verifica se o player está muito longe (distancia maxima especificada acima), caso esteja ele fala mais ou menos "te pego na proxima" e volta pro seu respawn. - Quarto Ele muda seu ultima attack para o tempo atual do servidor - Quinto Ele verifica se ja passou o "tempo de descanso dele) - Se o tiver na posição certa de ataque, ele mete o sabugo no player espacando ele. Até o player morrer ou fugir. Entederam a logica ? Não !? Tudo bem. Vai treinando... Sinceramente esse npc é o mais complexo que ja vi. Eu entendi ele, porém não tenho animo de refaze-lo xD É Isso. Creditos : Tibiaa4e ( 99%) (Por Fazer). xFatality ( 1% ) (Por trazer ao TK). Obrigado, Abraços. Da para você fazer tudo do LUA no XML, porém eu acho estranho e apenas frescura do Jiddo e dos Developers do TFS (não sei developer em Português) Caso seja curioso olhe nos arquivos bankmax.xml, merchant.xml e postman.xml que estão em npc/lib Bem a parte XML já acabo, ou seja, ela é muito simples. NPCS EM LUA Aqui é a parte legal do npc na qual até certos scripters novos fazem coisas desnecessarias ou que pioram... A base do arquivo usando Jiddo System é Ai sempre virá uma bp cheia dos item especificado. Caso não saiba ao clicar com o direito no TRADE e usar buy with backpack virá com isso ai Essa é a parte facil até agora tentarei pensar aqui 25 minutos um jeito de explicar muita coisa xD NPCS de Missões Bem aqui ensinarei a fazer npcs de missões, isso mesmo até mesmo aqueles de post office, paradox (que eu até ja fiz) Como sempre ensinarei a logica, ou seja, darei conhecimento não ideias Assim já para ter uma ideia de um npc maior... É só seguir essa base... Vamos criar um passo a passo para que não compreendeu. NPCs tutoriais Situação : O npc Valdemar quer que você entregue uma carta a irmã dele chamada Clarice. Pense. Ele irá dar uma carta, e algo que controle se você ja recebeu a carta. Porque se você deu calote uma vez Que não se repita, ou seja, um storage value. Que será o 2411 (bem masculo) Caso você não tenha storage -1 e nem 2 só pode ser 1 (no caso dessa quest) então ele manda você termina o serviço PELO AMOR DE DEUS, SEMPRE ESTRUTURE SEU SCRIPT, SE NÃO VOCÊ IRÁ SE CONFUDIR COM ESSE SHOW DE ELSE E IF. Isso é a vantagem de se usar o Jiddo System, pois diminuiu a confusão. Porém como ja disse, é coisa de preguiçoso Mais cada um com o seu né... Aqui acaba o npc de missões. Eu expliquei apenas a parte dos ifs e elseifs. Isso é simples, agora depende de sua capacidade e criatividade. Melhor maneira de aperfeiçoar ? fazendo varios!!! Eu odeio npcs, quase morri de raiva de ter que fazer esses (serio ) Espero que aproveitem xD. Funções de NPcs Se você leu esse tuto até aqui, é porque não entendeu nada, ou seu interesso muito, por npcs. Lembra dos npc base ?. Pelo que você ja perceberam eu odeio npcs, então não usei muitas dessas funções. No tfs tem o npc cityguard que ataca todos os red skull que aparecem em seu raio. Vamos estuda-lo e aprender juntos!!! function onCreatureAppear(cid) if(cid == getNpcCid()) then --Wake up call origPos = getNpcPos() --origLook = getCreatureDir(cid) end end Quando a criatura aparece ele chama a função getNpcCid que checa o player que o npc está focado. Ai a variavel origPos vira a coordenada que ele está no momento. function onCreatureDisappear(cid) if(target == cid) then goToOrigPos() end end Quando o player sai da tela, ele verifica se o target (player que ele está focado também!?) é um player Se for ele volta para a posição anterior local function isSkulled(cid) local skullType = getPlayerSkullType(cid) if(skullType >= 3) then return true end return false end Essa função seria a base do npc, ele segue apenas players com skull. Poderiamos mudar essa função para ele seguir apenas player druids ? Claro!!! Como é um tutorial mudar o nome da função iriamos que remodelar todo o script (enche o saco) vamos apenas mudar dentro da função local function isSkulled(cid) local vocType = getPlayerVocation(cid) if(vocType== 2) or (vocType == 6) then return true end return false end Mudando só isso os druid iriam sofrer na mão desses npcs xD Da para fazer ele atacar apenas monstros ? (acho que sim) local function isSkulled(cid) local idType = isPlayer(cid) if (idType ~= 1) then return true end return false end No caso se for diferente de 1 ele arrebenta de magia. Teste essas modificações. Porém a ideia base é entender as funções e não só modifica-las. Pelo contrato da SVN tudo que você faz a partir dela é conteúdo livre e de total modificação. Porém tenha bom senso que não é facil fazer scripts assim. Então sempre mantenham os creditos, principalmente Se você modificou
  9. Mudar tipo de dano Wand

    Yok reagiu a Pedro. por uma resposta no tópico

    1 ponto
    Voltei recentemente e to montando um servidor custom, achei uns scripts bem OLD aqui do forum do Bruno Minervino de trocar o efeito da Wand por talkactions, porém era bem antigo rev 0.4 se não me engano e bastante gente pediu 1x + Informações sobre o sistema Tem uma seção de configuração fácil para você personalizá-lo como você gostaria! Você só precisa preencher a tabela de configuração encontrada no script principal, segue a tabela abaixo. o GIF não mostra o mouse, mas pra trocar o efeito é só clicar com o botao direito na WAND. -- Config -- Set wand how the wand deals damage DamageTypeWand = { values = false, -- If this is set to true then it will use the min and max values. If set to false the wand will use the formula -- Damage Values min/max wandMinDam = 20, wandMaxDam = 50, -- Damage Formula formula = { wandMinDam = function(level, maglevel) return -((level / 5) + (maglevel * 1.4) + 8) end, wandMaxDam = function(level, maglevel) return -((level / 5) + (maglevel * 2.2) + 14) end, } } -- Modal window config and storage id local config = { storage = 10009, titleMsg = "Change Weapon Damage Type", mainMsg = "Choose a damage type from the list", -- End Config -- Damage Table [1] = {element = "Holy"}, [2] = {element = "Fire"}, [3] = {element = "Death"}, [4] = {element = "Poison"}, [5] = {element = "Energy"}, [6] = {element = "Earth"}, [7] = {element = "Ice"}, } Vamos a instalação do script. 1) Instalar modal window AQUI 2) Registre o script em /data/actions/actions.xml adicionando esta linha (Substituindo "ITEMID" pelo item que deseja usar: no meu caso seria 13880, ficando assim <action itemid="13880" script="weapon_damage"/> <action actionid="ACTIONID" script="weapon_damage"/> 3) Crie um novo documento de texto em /data/actions/ scripts e nomeie-o "weapon_damage.lua" e cole o seguinte: http://pastebin.com/c11fcRDg 4) Adicione a seguinte linha ao seu global.lua dofile('data/lib/weapon_damage.lua') 5) Crie um novo documento de texto em /data/lib/ e nomeie-o "weapon_damage.lua" e cole o seguinte: http://pastebin.com/y5UKLEAY 6) Registre a arma em /data/weapons/weapons.xml adicionando esta linha: NOTE ESTA LINHA É VEJA SE VOCÊ ESTÁ USANDO UMA WAND! <wand id="ITEM ID HERE" level="300" mana="20" script="weapon_damage.lua"> <vocation name="Sorcerer" /> </wand> 7) Crie um novo documento de texto em /data/weapons /scripts e nomeie-o "weapon_damage.lua" e cole o seguinte: http://pastebin.com/CQV5zmJS créditos: Jano e strutZ.
  10. [2016] Sprites Completas - PokeXGames

    Kaneki On reagiu a GOD Vitor por uma resposta no tópico

    1 ponto
    Eae Galera, estava vasculhando alguns fóruns e encontrei as novas sprites da PokeXGames, então resolvi trazer para o TK. Façam bom aproveito! Screenshot Como Abrir a spr pelo Object Builder Download Créditos
  11. Character.php GESIOR tfs 1.2

    Michel Figueira reagiu a Pedro. por uma resposta no tópico

    1 ponto
    Dei uma modificada no meu gesior, tava bem zoado e antigo, quem quiser vou disponibilizar aqui o character.php :] as images dos skills, barra de hp/mana https://www.mediafire.com/file/bduyuflpyad2e5x/skill.rar antes depois character.php
  12. Character.php GESIOR tfs 1.2

    Pedro. reagiu a KotZletY por uma resposta no tópico

    1 ponto
    Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
  13. NtoFo Shinobi

    Cain Jorge reagiu a Absolute por uma resposta no tópico

    1 ponto
    Caro @paulo thush, os links encontram-se quebrados. Peço humildemente que os concerte para que possamos deixar o tópico ativo. Obrigado.
  14. (Resolvido)Sistema de Pesca quase pronto ajuda

    Vodkart reagiu a Xiolones por uma resposta no tópico

    1 ponto
    @Thenebrozo Sei que o seu problema já foi resolvido, mas o vídeo que você postou é do meu server que nunca abri kk O script que eu usava está postado logo abaixo : PS : Desculpe reviver o tópico, só quero colaborar também! XD
  15. (Resolvido)Modificação na Talk

    JcA reagiu a Wakon por uma resposta no tópico

    1 ponto
    @JcA, "data\lib", arquivo 031-vocations.lua.
  16. (Resolvido)Anihiri com problema

    JcA reagiu a Wakon por uma resposta no tópico

    1 ponto
    @JcA, execute com essas modificações, faça as ações necessárias para entrar na annihi e veja o que irá printar no console.
  17. (Resolvido)Efeito no jogador

    The King of Madness reagiu a Wakon por uma resposta no tópico

    1 ponto
    @Mikuo, que nada, acontece com todo mundo, kkk.
  18. (Resolvido)Efeito no jogador

    The King of Madness reagiu a Wakon por uma resposta no tópico

    1 ponto
    @Mikuo, registrou no login.lua? Caso não, abra o login.lua na pasta "data\creaturescripts\scripts" e cole isso antes do último return true: registerCreatureEvent(cid, "Effect") Dê reload, relogue o char e teste novamente(mantenha o print para testes).
  19. [PEDIDO] Sprite de um item

    Zwarttyp reagiu a Drop Woderno por uma resposta no tópico

    1 ponto
    Aqui está Espero que goste Cranidos Rampardos
  20. DESIGN - FAÇA SEU PEDIDO

    JonatasLucasf reagiu a Absolute por uma resposta no tópico

    1 ponto
  21. (Resolvido)Erro no script RemoveBattle

    JcA reagiu a Crypter por uma resposta no tópico

    1 ponto
    function onThink(cid, interval) local time = 5 addEvent(function() if isPlayer(cid) and (getTilePzInfo(getCreaturePosition(cid))) then doRemoveCondition(cid, CONDITION_INFIGHT) end end, time * 1000) end
  22. [Pedido] Sprite javali

    Cain Jorge reagiu a Lucario OP por uma resposta no tópico

    1 ponto
  23. 1 ponto
    tente ligar seu DMZ no modem ele libera todas as portas existente entao tente conectar no outro pc se nao pegar e por que seu modem e bloqueado e nao deixa voce abrir portas para resolver tem que ligar para sua operadora
  24. [Duvida] Cores de mensagem

    gustavof reagiu a LeoTK por uma resposta no tópico

    1 ponto
    @gustavof Tenta mudar essa parte doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1) por essa doCreatureSay(cid, mgo, TALKTYPE_BLUE_1) <<< CASO DER ERRO TESTE ESSA doCreatureSay(cid, mgo, TALKTYPE_BLUE)
  25. Já tem algo iniciado? Posso ajudar a desenvolver algumas sprites para o servidor. se achar que vale. Sprites já feitas:
  26. ajuda com questlog e quest update

    Skarlackx reagiu a Absolute por uma resposta no tópico

    1 ponto
    Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
  27. Lib 000-Const

    Maniaco reagiu a Caronte por uma resposta no tópico

    1 ponto
    Olá pessoal, venho mais uma vez trazer um tutorial simples, e tentar explicar tudo claramente, esse tutorial pode ficar grande dependendo do desenrolar dele, pois é um pack de tutoriais, então vou usar spoilers para ajudar na formatação do tópico. Nota: as informações usadas abaixo, podem ser tanto usadas com o nome, quanto com o número, e podem ser encontradas na pasta lib no arquivo 000-const https://pastebin.com/0FfPcg7y line4 Coordenadas: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Explicando: doMoveCreature(cid, direction): Serve para mover tanto o player quanto o monstro. Combate: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Parâmetros de condição: Condições: Slots: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Participação: xWhiteWolf Bom, é só isso o tutorial pessoal, espero que tenham gostado, e o que prego nesses tutoriais é a essência da simplicidade, às vezes, uma coisa que parece ser boba para você, pode atormentar uma outra pessoa. Const_ani e Const_me: Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas. Talktypes and message types: [title][/title] Tutoriais concluídos por ordem de formatação (podem ser alterados assim mesmo): Coordenadas, e suas direções. Combat (ainda há coisas a serem adicionadas). Slots. CONST_ME and CONST_ANI Os assuntos do tópico poderão se diminuídos ou aumentados de acordo com o desenrolar do tempo, gostaria de apoio, e não me incomodaria se alguém se propusesse fazer algum tutorial, eles serão supervisionados por mim e formatados por mim, para serem postados neste tópico. Esse tópico demorou e vai demorar muito para fazer cada tutorial, então eu não me importo com um obrigado e REP+, OBS.: Um obrigado vale bem mais do que um REP+
  28. [TALKACTION] Comando !playerinfo

    Angeles reagiu a PedroSTT por uma resposta no tópico

    1 ponto
    Vou trazer um comando pra voces hoje , muito simples e as vezes util . O que o comando faz ? Simplesmente mostra suas informações , apenas do player que digitar o comando. Segue o print abaixo XML <talkaction words="!playerinfo;/playerinfo" event="script" value="info.lua"/> Script
  29. Parceiro, faz o seguinte: 1º: Abra a pasta config.lua 2º: Digite ctrl+f (localizar) e ache esta linha sqlType = "mysql" 3º: Mude para sqlType = "sqlite" 4º: Curta seu servidor, pois creio que já está ok. Te ajudei parceiro? Me dá rep+
  30. removido!

    Senju uchira reagiu a Ghaz por uma resposta no tópico

    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo