Jump to content

Search the Community

Showing results for tags 'Monster%2FNPC'.



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

  1. Opa Galera, hoje vou trazer para vocês um NPC que ataca players pk é monstros invasores, analizem no forum e não achei nem um funcionando , testei em 8.54 é 8.60 e funcionou perfeitamente então vamos la. Primeiramente vá em /data/npc/script/ é crie um arquivo chamado defender.lua é lá dentro adicione : local level = 10 ----- change this to make the npc hit more/less---------------------|damage_min = (level * 2 + maglevel * 3) * min_multiplier | local maglevel = 10 ----- change this to make the npc hit more/less -----------------|damage_max = (level * 2 + maglevel * 3) * max_multiplier | local min_multiplier = 2.1 ----- change this to make the npc hit more/less ----------|damage_formula = math.random(damage_min,damage_max) | local max_multiplier = 4.2 ----- change this to make the npc hit more/less --------------------------------------------------------------------- local check_interval = 5 ----- change this to the time between checks for a creature (the less time the more it will probably lag :S) local radiusx = 7 ----- change this to the amount of squares left/right the NPC checks (default 7 so he checks 7 squares left of him and 7 squares right (the hole screen) local radiusy = 5 ----- change this to the amount of squares left/right the NPC checks (default 5 so he checks 5 squares up of him and 5 squares down (the hole screen) local Attack_message = "An Invader, ATTACK!!!" ----- change this to what the NPC says when he sees a monster(s) local town_name = "Archgard" ----- the name of the town the NPC says when you say "hi" local Attack_monsters = TRUE ----- set to TRUE for the npc to attack monsters in his area or FALSE if he doesnt local Attack_swearers = TRUE ----- set to TRUE for the npc to attack players that swear near him or FALSE if he doesnt local Attack_pkers = TRUE ----- set to TRUE for the npc to attack players with white and red skulls or FALSE if he doesnt local health_left = 10 ----- set to the amount of health the npc will leave a player with if they swear at him (ie at 10 he will hit the player to 10 health left) local swear_message = "Take this!!!" ----- change this to what you want the NPC to say when he attackes a swearer local swear_words = {"shit", "fuck", "dick", "cunt"} ----- if "Attack_swearers" is set to TRUE then the NPC will attack anyone who says a word in here. Remember to put "" around each word and seperate each word with a comma (,) local hit_effect = CONST_ME_MORTAREA ----- set this to the magic effect the creature will be hit with, see global.lua for more effects local shoot_effect = CONST_ANI_SUDDENDEATH ----- set this to the magic effect that will be shot at the creature, see global.lua for more effects local damage_colour = TEXTCOLOR_RED ----- set this to the colour of the text that shows the damage when the creature gets hit ------------------end of config------------------ local check_clock = os.clock() ----- leave this local focus = 0 ----- leave this function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) health = getCreatureHealth(cid) - health_left if ((string.find(msg, '(%a*)hi(%a*)'))) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. creatureGetName(cid) .. '! I am a defender of '..town_name..'.') doNpcSetCreatureFocus(cid) focus = 0 end if msgcontains(msg, 'time') then selfSay('The time is ' .. getWorldTime() .. '.') end if messageIsInArray(swear_words, msg) then if Attack_swearers == TRUE then selfSay('' .. swear_message ..' ') doCreatureAddHealth(cid,-health) doSendMagicEffect(getThingPos(cid),17) doSendAnimatedText(getThingPos(cid),health,180) doNpcSetCreatureFocus(cid) focus = 0 end end end function getMonstersfromArea(pos, radiusx, radiusy, stack) local monsters = { } local starting = {x = (pos.x - radiusx), y = (pos.y - radiusy), z = pos.z, stackpos = stack} local ending = {x = (pos.x + radiusx), y = (pos.y + radiusy), z = pos.z, stackpos = stack} local checking = {x = starting.x, y = starting.y, z = starting.z, stackpos = starting.stackpos} repeat creature = getThingfromPos(checking) if creature.itemid > 0 then if isCreature(creature.uid) == TRUE then if isPlayer(creature.uid) == FALSE then if Attack_monsters == TRUE then table.insert (monsters, creature.uid) check_clock = os.clock() end elseif isPlayer(creature.uid) == TRUE then if Attack_pkers == TRUE then if getPlayerSkullType(creature.uid) > 0 then table.insert (monsters, creature.uid) check_clock = os.clock() end end end end end if checking.x == pos.x-1 and checking.y == pos.y then checking.x = checking.x+2 else checking.x = checking.x+1 end if checking.x > ending.x then checking.x = starting.x checking.y = checking.y+1 end until checking.y > ending.y return monsters end function onThink() if (Attack_monsters == TRUE and Attack_pkers == TRUE) or (Attack_monsters == TRUE and Attack_pkers == FALSE) or (Attack_monsters == FALSE and Attack_pkers == TRUE) then if (os.clock() - check_clock) > check_interval then monster_table = getMonstersfromArea(getCreaturePosition(getNpcCid( )), radiusx, radiusy, 253) if #monster_table >= 1 then selfSay('' .. Attack_message ..' ') for i = 1, #monster_table do doNpcSetCreatureFocus(monster_table[i]) local damage_min = (level * 2 + maglevel * 3) * min_multiplier local damage_max = (level * 2 + maglevel * 3) * max_multiplier local damage_formula = math.random(damage_min,damage_max) doSendDistanceShoot(getCreaturePosition(getNpcCid( )), getThingPos(monster_table[i]), shoot_effect) doSendMagicEffect(getThingPos(monster_table[i]),hit_effect) doSendAnimatedText(getThingPos(monster_table[i]),damage_formula,damage_colour) doCreatureAddHealth(monster_table[i],-damage_formula) check_clock = os.clock() focus = 0 end elseif table.getn(monster_table) < 1 then focus = 0 check_clock = os.clock() end end end focus = 0 end Depois vá em /data/npc/ é la crie um arquivo defender.xml é lá adicione: <?xml version="1.0"?> <npc name="Defender" script="defender.lua" access="5" lookdir="2" autowalk="25"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="131" head="116" body="94" legs="78" feet="115" addons="3"/> </npc> local level = 10 -- Quanto o NPC irar tirar. local maglevel = 10 -- Quanto o NPC Irar tirar. local min_multiplier = 2.1 -- Quanto o NPC Irar tirar. local max_multiplier = 4.2 -- Quanto o NPC Irar tirar. local Attack_message = "An Invader, ATTACK!!!" -- A mensagem queo NPC irar falar quanto detectar um invasor. Creditos: Knekarn Eu (Por Postar aki no forum)
  2. Fala galera do TK, hoje vim pra trazer pra vocês um npc criado por mim e pelo Nogard numa madrugada aí para solucionar a dúvida de um cara no suporte. Eu dei uma melhorada no script original, tirei umas coisas repetidas e adicionei novas funções; Você agora pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar). Testado em TFS 0.3.6, Versão 8.45 Sem mais delongas, vamos ao script. Antes de tudo crie um arquivo chamado reseter.lua na pasta data\npc\scripts\ e coloque isso daqui dentro dele: Você pode editar tudo mexendo aqui: local config = { minlevel = 150, --- level inical para resetar price = 10000, --- preço inicial para resetar newlevel = 20, --- level após reset priceByReset = 0, --- preço acrescentado por reset percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset } Feito isso, crie agora o npc que irá utilizar esse script.. em data\npc crie um arquivo.xml chamado Reseter.xml e coloque isso dentro dele: Agora é só colocar o seu npc no mapa pelo mapa editor e curtir OBS 1: Se seu server for 8.6 ou maior troque no script.lua as funções db.executeQuery por db.query OBS 2: Esse script dava pra ser diminuido ainda mais mas por hora deixa ele assim, se vc tiver alguma proposta melhor por favor poste nos comentários que eu testo a sua versão e edito o tópico se for o caso. OBS 3: Não remova os créditos, isso é a coisa mais baixa e suja que alguém pode fazer.. eu scripto pra ajudar a comunidade do Tibia a evoluir e libero 99% doque eu faço, se vocês não removerem os créditos e não postarem em outros fórums sem minha permissão isso pode continuar assim. --- EDIT: Coloquei algumas imagens pra vcs verem como fica no server EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato. EDIT2: Novos erros arrumados, agora o NPC dá bye automaticamente e não buga qnd te reseta. EDIT3: Resolvido bug de dar hi, reset, yes várias vezes e derrubar o servidor (troque tanto o xml qnt o script do npc) O script também foi identado.
  3. Fala galerinha, estava dando uma revisada nos npc's do ot server que estou fazendo, então eu quis fazer um npc que tivesse todas as montarias da versão 9.6 para vender. Eu tenho 2 npc's de montarias, um dos players free, e o outro de player premium, o que eu vou passar pra vocês é o premium, então se você quiser fazer o free é só apagar as montarias que você quiser no arquivo LUA. (obs: eu criei uma montaria especial pra esse npc premium, o Rei Scorpiao, eu aumentei a velocidade dele no XML de montarias, se você quiser aumentar também é só ir na pasta "DATA" do seu otserver e abrir a pasta "XML", lá tem o arquivo "mounts", abra e procure pelo "Sandstone Scorpion" modifique o nome do seu gosto e o "speed" ). Espero que gostem, qualquer duvida deixe um comentário ps: Fatinhoplay
  4. O título já diz. Script - 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 storage = 1234 function creatureSayCallback(cid, type, msg) if (msgcontains(msg, "hi") or msgcontains(msg, "hello")) and (not npcHandler:isFocused(cid)) then if getPlayerStorageValue(cid, storage) < 1 then npcHandler:say("How can I help you " .. getPlayerName(cid) .. "?", cid, TRUE) npcHandler:releaseFocus(cid) setPlayerStorageValue(cid, storage, 1) doPlayerAddMoney(cid, math.ceil(math.random(500, 5000))) elseif getPlayerStorageValue(cid, storage) == 1 then npcHandler:say("I got no time. Bye!", cid, TRUE) npcHandler:releaseFocus(cid) end elseif (not npcHandler:isFocused(cid)) then return false end return true end npcHandler:setCallback(CALLBACK_FAREWELL, creatureFarewell) npcHandler:setMessage(MESSAGE_WALKAWAY, "Good bye then.") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) Pegue um arquivo qualquer de um npc em .xml para colocar na pasta NPC. Créditos - StreamSide
  5. Bom galera, sei que o natal acabou de passar, porém esqueci de postar esse system antes... Fiz uma versão 2.0 do meu npc de natal (papai noel). Agora ao invés do bom velhinho entregar diretamente o item, vc recebe uma caixa que ao clicar vc recebe um item 100% aleatorio (dentre os itens que foram programados dentro do script). Funciona assim: o player vai até o papai noel e fala: hi, aí o papai noel fala ho-ho-ho... aí o player responde sim (ou yes) e então o player recebe uma caixa. Ao clicar na caixa, o player recebe um dos itens, que estiverem programados no script, de forma aleatoria. Então vamo lá. Pra adicionar esse system, primeiro vá na pasta data/npc e crie um arquivo chamado Papai Noel.xml e coloque isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Papai Noel" script="data/npc/scripts/papai_noel.lua" walkinterval="1500" speed="100" walkradius="2" floorchange="0"> <health max="100" now="100"/> <look type="160" head="0" body="113" legs="94" feet="132" addons="0" mount="0"/> <parameters> <!--MESSAGES--> <parameter key="message_greet" value="HO-HO-HO, |PLAYERNAME| bem-vindo. Voce gostaria de um presente?"/> <parameter key="message_farewell" value="HO-HO-HO, tenha um feliz natal, |PLAYERNAME|."/> </parameters> </npc> Agora vá na pasta data/npc/scripts e crie um arquivo chamado papai_noel.lua e coloque isso dentro: Agora vá na pasta data/actions e adicione essa tag dentro do arquivo actions.xml: <action itemid="11401" event="script" value="giftbox.lua"/> Agora va na pasta data/actions/scripts e crie um arquivo chamado giftbox.lua e coloque isso dentro: local items = { [1]=2160, --ID do item 1 [2]=2157, --ID do item 2 [3]=2121} --ID do item 3 local stor = (11401+os.date("%Y")) --Nao mexa function onUse(cid) if getPlayerStorageValue(cid, stor) ~= 1 then a = math.random(1, #items) doPlayerAddItem(cid, items[a], 1) setPlayerStorageValue(cid, stor, 1) else doPlayerSendCancel(cid, "Voce ja pegou seu presente.") end doPlayerRemoveItem(cid, 11401, 1) return true end E isso é tudo pessoal!
  6. Bom, esse é meu primeiro tópico, não sei se esta na area correta (se nao tiver, por favor, mudem). espero que gostem Esse monstro tem o looktype de uma arvore magica (aquela com brilhos em volta) Qual a utilidade dela ?? R: Voce pode botar para druida envocar essa arvore, ai em uma quest bem massa, voce envoca essas arvores e ataca o tank, assim, elas irão curar ele. Bom, vamos lá: Em data/monster crie magic tree.xml e coloque: <?xml version="1.0" encoding="UTF-8"?><monster name="Magic Tree" nameDescription="a magic tree" race="venom" experience="0" speed="0" manacost="1000"> <health now="15000" max="15000"/> <look typeex="2699" corpse="6047"/> <targetchange interval="100" chance="20"/> <strategy attack="0" defense="0"/> <flags> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" skill="0" attack="0" poison="5"/> <attack name="poison" interval="1000" chance="25" range="7" min="+300" max="+900"> <attribute key="shootEffect" value="poison"/> <attribute key="areaEffect" value="greenspark"/> </attack> <attack name="speed" interval="1000" chance="34" range="7" speedchange="+550" duration="30000"> <attribute key="shootEffect" value="poison"/> <attribute key="areaEffect" value="greenspark"/> </attack> <attack name="poison" interval="1000" chance="12" radius="3" target="0" min="+40" max="+130"> <attribute key="areaEffect" value="poison"/> </attack> </attacks> <defenses armor="20" defense="22"> <defense name="healing" interval="100" chance="17" min="300" max="700"> <attribute key="areaEffect" value="blueshimmer"/> </defense> </defenses> <elements> <element earthPercent="100"/> <element physicalPercent="30"/> <element energyPercent="10"/> <element icePercent="7"/> <element firePercent="-20"/> </elements> <immunities> <immunity invisible="1"/> </immunities> <loot> <item id="2148" countmax="37" chance="43000"/><!-- gold coin --> <item id="2666" countmax="2" chance="36500"/><!-- meat --> <item id="2671" countmax="2" chance="20000"/><!-- ham --> <item id="2802" chance="8000"/><!-- sling herb --> <item id="2804" chance="8000"/><!-- shadow herb --> <item id="2747" chance="7500"/><!-- grave flower--> <item id="1987" chance="90000"><!-- bag --> <inside> <item id="2792" chance="10000"/><!-- dark mushroom --> <item id="7732" chance="3000"/><!-- seeds --> </inside> </item> </loot> </monster> Em data/monster/monster.xml adicione a linha: <monster name="Magic Tree" file="magic tree.xml"/> só mais uma coisa, ela não é imune a dano, então, podera morrer por ataques em area ou algo parecido!! Criado 100% por : Zazeros
  7. Bom dia jovens, graças ao grande Omega eu consegui terminar o código do NPC Dicer, a função para checar o gold foi feita por ele então deem um beijo nele O NPC é parecido com aqueles BOTS que ficam no tibia global em yalahar normalmente, você joga uma quantia em gold e fala L ou H também pode ser Low ou High e com sorte pode ganhar o dobro da quantia apostada, exemplo: Eu vou lá jogo 20k na mesa e falo Low, caso caia nos números 1, 2 ou 3 eu irei ganhar o dobro da quantia que eu apostei que no foi 20k, mas se cair nos números 4, 5 ou 6 eu iria perder esses 20k. O High é a mesma coisa porém ao contrario, se eu falo High e cair nos numero 4, 5 ou 6 eu ganho o dobro da quantia que eu apostei e se cair no 1, 2 ou 3 eu perderia tudo. Crie um arquivo em data/npc com o nome dicer.xml e adicione isso dentro: <?xml version="1.0"?> <npc name="Dicer" script="data/npc/scripts/dicer.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola {|PLAYERNAME|}, caso queria tentar a sorte diga {L} ou {Low} para apostar nos numeros {1}, {2} ou {3} ||| {H} ou {High} para apostar nos numeros {4}, {5} ou {6}!" /> </parameters> </npc> Agora vá até data/npc/scripts e crie um arquivo com o nome dicer.lua e adicione 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local coins = {[2148] = 1, [2152] = 100, [2160] = 10000} function countMoneyOnPos(pos) local money = 0 for stack = 1, 50 do pos.stackpos = stack local item = getThingFromPos(pos) if item and item.uid > 0 then if coins[item.itemid] then money = money + coins[item.itemid] * item.type end end end return money end local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC local pos = getPosByDir(getThingPos(cid), getCreatureLookDirection(cid), 1) -- NÃO ALTERAR if msgcontains(msg, 'l') or msgcontains(msg, 'L') or msgcontains(msg, 'low') or msgcontains(msg, 'Low') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end elseif msgcontains(msg, 'h') or msgcontains(msg, 'H') or msgcontains(msg, 'high') or msgcontains(msg, 'High') then if countMoneyOnPos(pos) > 0 then if math.random(1, 6) <= 3 then doPlayerAddMoney(cid, countMoneyOnPos(pos)*2) doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 26) doSendMagicEffect(posNpc, 28) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(4, 6)..', parabéns!', TALKTYPE_ORANGE_1) else doRemoveItem(getTileItemById(pos, 2148).uid) repeat until not doRemoveItem(getTileItemById(pos, 2148).uid) doRemoveItem(getTileItemById(pos, 2152).uid) repeat until not doRemoveItem(getTileItemById(pos, 2152).uid) doRemoveItem(getTileItemById(pos, 2160).uid) repeat until not doRemoveItem(getTileItemById(pos, 2160).uid) doSendMagicEffect(posNpc, 2) doSendMagicEffect(posNpc, 26) doCreatureSay(getNpcId(), getCreatureName(cid)..' tirou o numero '..math.random(1, 3)..', tente novamente!', TALKTYPE_ORANGE_1) end else doCreatureSay(getNpcId(), getCreatureName(cid)..', coloque uma quantia de gold no recipiente para começar a apostar!', TALKTYPE_ORANGE_1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Você deve fazer alterações nesta parte: local posCoal = {x = 169, y = 58, z = 7} -- POSIÇÃO DO COAL, ONDE O GOLD DEVE ESTAR local posNpc = {x = 193, y = 45, z = 7} -- POSIÇÃO DO NPC Aconselhável montar uma área pro npc ficar idêntica a da fotos para não bugar o código, o coal() deve sempre ficar na frente do player pois a função ira chegar o gold a frente do player. Ao falar Hi Npc verificando que não tem gold no coal Vencendo uma aposta Perdendo uma aposta Créditos: Markin(Anne) Omega pela função de checar o gold
  8. Seguinte, Este Script Sera Postado Somente Aqui No Tibia King. Até Agora Nenhum Script Foi Criado Do Genero, Pelomenos Eu Nao Achei. Bom, Se Voce Tem Algum Conhecimento Em Scripting Fique Avontade Para Fazer Alterações ;P Ja Se Voce Nao Tiver Simplesmente Altere Oque Eu Ensinar Aqui! Vamos Ao Que Intereça Download Dos Scripts Para Os Preguiçosos Creditos: 100% Beluci Gamer / EU
  9. Explicação: É um npc que pede ajuda para quem passa, se a pessoa o ajudar ela será teleportada pra um lugar configurável, e nesse lugar a pessoa coloca o que quiser. Vá em data/npc e crie um arquivo chamado Mendigo.xml e coloque o seguinte conteúdo: Agora vá em data/npc/scripts e crie um arquivo chamado mendigo.lua e coloque o seguinte conteúdo:
  10. Ola pessoal, aqui é tony hoje vou ensinar vocês como mexer em um Npc edita-lo, e o quer serve as Principais Configurações Vamos começar Vamos pegar essa parte Simples. <npc name="Dark Rodo" script="data/npc/scripts/runes.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="133" head="0" body="86" legs="0" feet="38" addons="1"/> </npc> npc name Nome dado o NPC, no caso aqui é o Dark rodo Vendedor de Magias e Wands e Rods. Script="data/npc/scripts/runes.lua" Aqui é o Lugar a onde esta a Venda dele, os Itens a ser vendidos tendo Preço ID e o Nome do Item <health now="1000" max="1000"/> Health now e max é a vida do Npc exemplo aqui esta 1000 se eu coloca-se 20 ele teria somente 20 de vida mesmo que ele não seja atacado. <look type="133" head="0" body="86" legs="0" feet="38" addons Look type é o Addon do Npc, no caso 133 é o Addon Mage, se você subistituir para 302 ele vai ficar com roupa de GOD ou 75 para Roupa de GM, HEAD BODY LEGS FEET é a cor da Roua do NPC addons="1" é 1 ou 2, First addon ou Second Addon. que o npc tera
  11. Falaa pessoal do TK! Trouxe um script que fiz aqui para o meu servidor e gostaria de compartilhar com vocês: A idéia é bem simples: É apenas um NPC que só vende items para você se você tiver tal storage. Testado em: 8.60 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 = {} --== Configurar storage e Items a venda aqui. local stor = 1500 -- configurar storage aqui local Trade = { {id=15646, buy=200, sell=0, name='buggy backpack'}, {id=10522, buy=200, sell=0, name='crown backpack'}, {id=10518, buy=200, sell=0, name='demon backpack'}, {id=11243, buy=200, sell=0, name='dragon backpack'}, } --== Fim das Configurações. local function setNewTradeTable(table) local items = {} for _, v in ipairs(table) do items[v.id] = {itemId = v.id, buyPrice = v.buy, sellPrice = v.sell, subType = 0, realName = v.name} end return items end local function setNewLineTable(oldTable, newTable) for k, v in pairs(oldTable) do table.insert(newTable, k, v) end return true 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, 'Trade') or msgcontains(msg, 'trade')) and getPlayerStorageValue(cid, stor) == 1 then selfSay('Essas são minhas ofertas!', cid) tradeRank = Trade local items = setNewTradeTable(tradeRank) local function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks) if items[item].buyPrice then doPlayerAddItem(cid, items[item].itemId, amount) doPlayerRemoveMoney(cid, items[item].buyPrice * amount) return true end return true end local function onSell(cid, item, subType, amount, ignoreCap, inBackpacks) if items[item].sellPrice then doPlayerAddMoney(cid, items[item].sellPrice * amount) doPlayerRemoveItem(cid, items[item].itemId, amount) return true end return true end openShopWindow(cid, tradeRank, onBuy, onSell) else selfSay('Desculpe, mas você não tem o que é necessário para negociar comigo.', cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Esse é meu primeiro script para a galera do TK. Espero que gostem! Abraços!
  12. Sistema Akatsuki Bom jah vir muitas gente atras desse sistema entao eu resolvir cria um e posta pra ajuda os amigos esse vaii ser meu primeiro topico de script, entao vamos lah. Vá em Data/Npc e crum npc com o nome Tobi abra e cole isso: Vá em Data/npc/script e crie o bloco de notas com o nome AkatsukiSystem e cole isso: vou explicar um pouco como funcionar. Bem tem que arruma 6 coraçoes vá até o npc tobi e fale com ele, ele vaii fazer um troca com vc. vc vaii ganha uma roupa(Roupa da Akatsuki) com essa roupa vc jah estará tendo da Akatsuki. Pra quem quer que Fique o nome Membro Akatsuki Ao da Look Vá Até A Pasta Data/creaturescripts/scripts crie um bloco de notas com o nome showvoc e cole isso. Vá até Data/creaturescripts e va ate creaturescripts.xml e cole isso Mas quem usar Nto Jah vaii tem isso é só acrescenta o Akatsuki member. funcionar que quando o player fala com o npc tobi vc receberá o Storange Que Esta De Azul em cima o que esta de verde é o numero que estará Showvoc. O Id do Coracoes e a quantidade que vai perdi e remove, é o Rosa e amarelo no script. local level = 1-- Level preciso pra entra para akatsuki local itemid = 5943 -- id do coração local quantidade = 6 -- quantos hearts e preciso local bonushp = 300000 -- quanto de bonus de life vai ganha local bonusmp = 30000 -- quanto de bonus de mana vai ganha local experience = 20 -- Experience rates no caso 2x a experiencia do seu servidor. --[Vocation] = ( Nova Vocation, New Outfit(Roupa) ) [1] = { 5, 128}, [2] = { 6, 129}, [3] = { 7, 130}, [4] = { 8, 131}, } Bom gente espero que deu pra entende mas como é meu primeiro topíco eu penso que fale a verdade o que achou pra min tenta melhora nos poximo topicos. Creditos
  13. cara farei tu tutorial rapido tomara que gostem 1 crie seu monstro normalmalmente copie o arquivo xml de um monstro em C:\Users\Usuário\Desktop\naruto\Naruto Online\data\monster e renomeie para o nome do monstro q vc quer e edite o basico como skills look type experience speed entre outros 2-criado seu monstro adicione assim em monsters.xml 3- Em vermelho o id do teleport que aparecera e so ver no map editor qual teleport vc quer em azul o nome da criatura roxo onde o teleport ira aparecer laranja pra onde ira te teleportar Pronto agora so ligar o server lembrando as magias , loot, entre otros pode mudar pois este meu monstro e de ot naruto mais o sistema de teleport funciona
  14. Bom, percebi que muitos servers usam teleport por não tem um npc digamos assim que teleport para determinado local, então resolvi posta aqui um código de um NPC totalmente configuravel até se o player sem premium account viaja ou não. Primeiro crie um arquivo xml com o nome que você deseja dentro de DATA/NPC <?xml version="1.0" encoding="UTF-8"?> <npc name="John" script="viajador.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="100" max="100"/> <look type="662" head="114" body="94" legs="57" feet="0"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {travel}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc> Entendendo o script: Ali em NPC Name é o nome do NPC, no caso ali está john, você pode modificalo para o nome que você deseja. Script é o nome do arquivo que você irá criar na pasta scripts, é o nosso proximo passo looktype é o outfit que ele vai usar, Head é a cor do cabelo dele, body é a cor da camisa, legs é a cor d a calça e feet a cor da bota. Proximo passo vai na pasta scripts dentro da NPC e crie um arquivo chamado viajar.lua ou o nome que você escolheuem script ali em cima || Npc/Scripts Entendendo o script: PREMIUM: Ali em amarelo onde tem "premium" ta assim premium = true, no caso "true" é sim e "false" é não ali o script pergunta se precisa de premium para viajar, se sim você deixa true se não coloque false. LEVEL: Level necessario para poder usar o NPC. COST: È quanto custará os serviços do NPC, lembrando que o preço está em golds. DESTINATION: é as coordenadas para onde o npc deverá teleporta o player. Gostou ?? da um REP++
  15. Monsters 8.60 (37 pastas) Créditos: Otland (Imagens: Daaniel) Imagem:
  16. Olá, bom muitos vieram pedindo esse script e vou ajudar a vocês de como criar um NPC QUE MUDA NOME DO JOGADOR! Vamos lá primeiro passo abra a pasta data/npcs. crie um arquivo chamado Kemi Change Nick.xml Agora abra a pasta scripts . Data/npc/scripts e crie um arquivo chamado renamer.lua Pronto o npc ja irá estar funcionando, lembrando que ele cobra 100 crystal coins para mudar o nome. Caso queira colocar outro equipamento para cobrar. SUBSTITUA: POR:
  17. Olá King Tibianos, Estava sem fazer nada esses dias (como sempre) e de repente veio uma ideia de uma Task que a meu ver ficou bem legal e seria muito bom e um servidor RPG. Eu particularmente gosto muito de quests e missões com muito RPG e se depender de mim haverá muitos scripts de quests e missões com um bom RPG, sem mais delongas vou explicar a Task e depois os scripts. -- Explicando Task -- Em busca da corda - Primeira Parte Primeiramente você irá falar com o NPC Heron, ele irá dizer que emprestou sua corda ao seu vizinho que mora mais ao sul e ele esqueceu de devolver (como sempre vizinho nunca te devolve nada, desde o café emprestado atá a xícara), então ele pede para você ir buscar. Provando sua Bravura - Segunda Parte Chegando em seu vizinho Vence você irá pedir a corda para ele e ele nada folgado falará pra você "provar sua bravura" descobrindo que tipo de criatura está em seu porão, ele te dará uma presa e pedirá que você vá até o professor local e pergunte que tipo de criatura teria uma presa daquela. Ao encontrar o professor ele pegará a preza e dirá que tipo de criatura é aquela. Você volta no Vence e diz a ele que criatura é, ele dirá que não faz a mínima ideia de que criatura é aquela então nada folgado2 pedirá que você vá até o porão dele e mate para ele 5 dessas criaturas e volte perguntando sobre o Heron. Matando as 5 criaturas você volta e fala sobre Heron (seu vizinho) e ele te dará a corda e mais uma recompensa por ter limpado o porão dele. Devolvendo a Corda - Última Parte Voltando ao Heron você falará com ele sobre a corda e ele te dará uma recompensa. Mas não é qualquer corda que é aceita na quest, ele só aceita a corda dele. Como ele sabe qual é a corda dele? Simples quando Vence devolve a corda de Heron, ele coloca um ActionID que o Heron checará quando você for devolver, se não for a corda dele, ele não aceitará. Transições Vence Darwin -- Scripts NPC -- Heron Vence Darwin -- Scripts -- Crie um arquivo chamado stair.lua na pasta data/movements/scripts e cole isso function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, 40500) == 1 then return true else doTeleportThing(cid, fromPosition) doPlayerSendTextMessage(cid, 18, 'You don\'t have access on the area') end end Adicione a seguinte linha no arquivo movements.xml que se encontra na pasta data/movements <movevent type="AddItem" uniqueid="6587" event="script" value="stair.lua"/> Na pasta mods crie um arquivo chamado TaskVence.xml e cole isso <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Kill Carrion Worm" version="1.0" enabled="yes"> <config name="KillM_func"><![CDATA[ tsk = { storages = {40501,40500}, task = {"carrion worm", 5} } ]]></config> <event type="login" name="AreKill" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "CountTask") return true end]]> </event> <event type="kill" name="CountTask" event="script"><![CDATA[ domodlib('KillM_func') function onKill(cid, target) if isMonster(target) then local n = string.lower(getCreatureName(target)) if n == tsk.task[1] and getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then local contagem = getPlayerStorageValue(cid, tsk.storages[1]) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > tsk.task[2] then return true end setPlayerStorageValue(cid, tsk.storages[1], contagem+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == tsk.task[2] and "Congratulations! You finished the task of "..n.."." or "defeated. Total [" .. contagem .. "/" .. tsk.task[2] .. "] " .. n .. ".").."") end end return true end]]> </event> </mod> Testado e está 100% funcional Dúvidas? Me avise. Att. Giovani Rodrigo
  18. Olá galerinha do TibiaKing, tudo firmeza? Resolvi trazer um script{`NPC} aqui pro TibiaKing que vai ajudar muito varias pessoas. Função do NPC: Ele vende uma outfit[ROUPA](CONFIGURAVEL) por x tanto de money(CONFIGURAVEL) Vá ate data/npc copie um arquivo xml e renomeie para outfitseller e cole isso dentro: Depois vá ate data/npc/script e copie um arquivo.lua e renomeie para outfitseller e cole isso: Bom galera é isso ai, espero ter ajudado vocês. Até a proxima
  19. Oi. Eu fiz esse NPC para que ele possa deixar mensagens em um bloco de notas para que os administradores vejam. É uma forma de comunicação com os jogadores. [data/npc/Mensageira.xml] <npc name="Mensageira" script="data/npc/scripts/messenger.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="347" head="20" body="100" legs="50" feet="99" corpse="2212"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu tenho a função de deixar mensagens para que o administrador possa ler mais tarde, como críticas, ou simplesmente um bom dia. Gostaria de deixar uma {mensagem}?"/> </parameters> </npc> [data/npc/scripts/messenger.lua] local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local moneyTo = {} local playerTo = {} 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 if talkState[cid] == 1 then selfSay("A mensagem \""..msg.."\" foi deixada. Obrigado pela contribuicao! Sua mensagem sera revisada por um administrador.", cid) local texto = "" local read = io.open("mensagens.txt", "r") texto = read:read("*all") read:close() local write = io.open("mensagens.txt", "w") write:write(texto.."["..getPlayerName(cid)..", "..os.date("%c").."]: \""..msg.."\"\n") write:close() talkState[cid] = 0 elseif msgcontains(msg, 'mensagem') then selfSay("Escreva a mensagem que voce gostaria de deixar. Pede-se rever o texto e escrever claramente o que deseja. Spam causa banimento por IP.", cid) talkState[cid] = 1 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Aí você deixa ele no templo, sei lá, faz qualquer coisa Só pra avisar, o mensagens.txt fica na pasta raiz do servidor, lá onde tem config.lua
  20. Como Funciona - Este NPC dá missões para fazer. Quando o jogador volta após uma missão, o NPC conta o quanto ele fez missões. Se o jogador fez a quantidade de buscas feitas no NPC, ele irá obter experiência e passar para a próxima missão. Se todas as missões são feitas, ele vai receber um item como recompensa. A contagem de quests trabalha com armazenamento, portanto, use o armazenamento que você usa para as suas missões. Vá em data/npc, crie um arquivo .xml e renomeie para Luffy, adicione isso - <?xml version="1.0" encoding="UTF-8"?> <npc name="Luffy" script="questmissions.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="150" max="150"/> <look type="134" head="59" body="76" legs="119" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Hello, I love doing {quests}, some of them are quite hard though."/> </parameters> </npc> Vá na pasta scripts da pasta npc, crie um arquivo .lua e renomeie para questmissions, cole isso - Se preferir, use este, com mensagens diferentes - Créditos - Limos
  21. Primeiramente, gostaria de dizer que eu estava procurando um npc similar a este por ai.. mas infelizmente não encontrei, então decidi pegar algum parecido e editar a meu gosto No final do tópico vou explicar mais algumas coisas.. enfim, vamos lá Essa é a parte que você irá colocar dentro do XML. <npc name="Max" script="data/npc/scripts/max.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="94" body="114" legs="86" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Seja bem vindo |PLAYERNAME|, estaria interessado em adquirir uma {premium}?"/> <parameter key="message_walkaway" value="Cuide-se, |PLAYERNAME|."/> <parameter key="message_farewell" value="Tenha cuidado, |PLAYERNAME|."/> </parameters> </npc> E isso aqui você irá jogar dentro do arquivo .lua que você irá criar. 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 -- Conversa Jogador/NPC if(msgcontains(msg, 'valor')) then selfSay('Eu posso lhe dar 3 dias de premium por 100,000 gold coins.', cid) elseif(msgcontains(msg, 'premium') or msgcontains(msg, 'Premium')) then selfSay('Você gostaria de comprar 3 dias de premium?', cid) talkState[talkUser] = 1 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(doPlayerRemoveItem(cid, 2160, 10) == true) then selfSay('Muito bem! Aproveite!', cid) doPlayerAddPremiumDays(cid, 3) talkState[talkUser] = 0 elseif(doPlayerRemoveItem(cid, 2152, 1000) == true) then selfSay('Muito bem! Aproveite!', cid) doPlayerAddPremiumDays(cid, 3) talkState[talkUser] = 0 elseif(doPlayerRemoveItem(cid, 2148, 100000) == true) then selfSay('Muito bem! Aproveite!', cid) doPlayerAddPremiumDays(cid, 3) talkState[talkUser] = 0 else selfSay('Desculpe, você não tem o {valor} necessário parar comprar uma premium.', cid) talkState[talkUser] = 0 end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vamos as explicações.. Esse código em si eu peguei aqui no próprio TK de um outro usuário não me recordo qual pois fechei a página .. então os créditos vão para ele.. se quiser se manifestar aqui na página, sinta-se livre Mas o código não fazia exatamente o que eu queria.. pois era necessário que o player tive-se APENAS crystal coins com ele.. caso ele tive-se o valor da premium em platinum coins ou gold que fosse, o NPC não aceitava.. então eu editei o NPC para checar se o jogador tem o valor necessário em qualquer um dos 3 tipos de dinheiro (crystal/platinum/gold) Agora.. isso é um script tão simples.. mas porque se preocupar com algo assim? Depende do tipo de servidor que você está fazendo.. eu estou criando um OT voltando para o RPG, onde não será possivel trocar gold para platinum e talz.. quero fazer algo diferente.. e se o jogador esqueçer de trocar o dinheiro no banco por exemplo? Ele iria ter que andar um monte denovo para poder apenas trocar.. esse é o intuito do meu NPC, fazer com que problemas como esse não venham a aconteçer Fora isso.. eu adicionei uma fala de Bye para o nome (detesto a fala padrão deles) que pode ser editada, e uma fala para quando o player andar para longe do npc. No mais mesmo é só isso, algo simples.. pode ser inútil para muitos, ainda mais que hoje em dia ninguem se interessa em fazer um ot que venda premium pelo NPC ao invés do comando !buypremium.. mas se houver alguem que se interesse, espero que esse tópico seja de grande ajuda
  22. Nome: TIC TAC TOE GAME Autor: sailorv5 Servidor Testado: Original Tibia 9.80 - Cliente 9.80 Descrição e/ou Informações Adicionais: é um NPC inteligente capaz de jogar o jogo da velha (3 niveis, fácil, médio e pro) Scripts e Como Instalar: ver abaixo Como Instalar - Vá em data/npc, crie um arquivo .xml com o nome de GM tic tac e adicione isso - <?xml version="1.0"?> <npc name="Master of tic tac toe" script="data/npc/scripts/games/tictactoe.lua" access="9" lookdir="3"> <health now="1000000" max="1000000"/> <look type="266" head="0" body="0" legs="0" feet="0"/> </npc> Depois, ainda na pasta npc, vá na pasta scripts. Crie uma pasta chamada games. Dentro dela, crie um arquivo .lua com o nome de tictactoe e adicione isto - Agora na mesma pasta, crie um arquivo .lua com o nome de tictactoeVAR e adicione isto - Agora crie um arquivo .lua com nome de tictactoeFUNC e adicione isto - Agora crie outro arquivo .lua com o nome de tictactoeLVhard e adicione isto - Vídeo - Antes de dizerem "CADE OS CRÉDITOS?!", leiam o tópico.
  23. Olá abigos e abigas, fiz um script aqui meio atrasado para o natal rs, bom eu até que gostei espero que vocês achem algo útil para ele. Abra a pasta NPC crie um arquivo com nome papainoel.xml e adicione isso dentro: <?xml version="1.0"?> <npc name="Papai Noel" script="data/npc/scripts/papainoel.lua" walkinterval="1000" floorchange="0"> <health now="100" max="100"/> <look type="160" head="0" body="112" legs="93" feet="95"/> <parameters> <parameter key="message_greet" value="Ho-Ho! {|PLAYERNAME|}, para pegar seu presente basta voce falar {present druid}, {present sorcerer}, {present knight} ou {present paladin}!" /> </parameters> </npc> Depois abra a pasta NPC/scripts crie um arquivo com o nome papainoel.lua e adicione 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local itemdruid = {{2160, 100}, {9778, 1}, {6512, 1}} -- itens que Elder Druid ira ganhar local itemsorcerer = {{2160, 100}, {8867, 1}, {6512, 1}} -- itens que Master Sorcerer ira ganhar local itemknight = {{2160, 100}, {2472, 1}, {6512, 1}} -- itens que Elite Knight ira ganhar local itempaladin = {{2160, 100}, {2500, 1}, {6512, 1}} -- itens que Royal Paladin ira ganhar local a = { level = 150, -- Level para falar com o Papai Noel storage = 72621, -- Não trocar } if msgcontains(msg, 'present druid') then if getPlayerStorageValue(cid,a.storage) == -1 then if getPlayerVocation(cid) == 6 then if getPlayerLevel(cid) >= a.level then selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Druid}!', cid) for _, b in pairs(itemdruid) do doPlayerAddItem(cid, b[1], b[2]) doSendMagicEffect(getPlayerPosition(cid), 28) setPlayerStorageValue(cid,a.storage,1) end else doSendMagicEffect(getPlayerPosition(cid), 2) selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid) end else selfSay('Voce não é {Elder Druid} '..getPlayerName(cid)..'!', cid) end else selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid) end end if msgcontains(msg, 'present sorcerer') then if getPlayerStorageValue(cid,a.storage) == -1 then if getPlayerVocation(cid) == 5 then if getPlayerLevel(cid) >= a.level then selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Sorcerer}!', cid) for _, b in pairs(itemsorcerer) do doPlayerAddItem(cid, b[1], b[2]) doSendMagicEffect(getPlayerPosition(cid), 28) setPlayerStorageValue(cid,a.storage,1) end else doSendMagicEffect(getPlayerPosition(cid), 2) selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid) end else selfSay('Voce não é {Master Sorcerer} '..getPlayerName(cid)..'!', cid) end else selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid) end end if msgcontains(msg, 'present knight') then if getPlayerStorageValue(cid,a.storage) == -1 then if getPlayerVocation(cid) == 8 then if getPlayerLevel(cid) >= a.level then selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Knight}!', cid) for _, b in pairs(itemknight) do doPlayerAddItem(cid, b[1], b[2]) doSendMagicEffect(getPlayerPosition(cid), 28) setPlayerStorageValue(cid,a.storage,1) end else doSendMagicEffect(getPlayerPosition(cid), 2) selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid) end else selfSay('Voce não é {Elite Knight} '..getPlayerName(cid)..'!', cid) end else selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid) end end if msgcontains(msg, 'present paladin') then if getPlayerStorageValue(cid,a.storage) == -1 then if getPlayerVocation(cid) == 7 then if getPlayerLevel(cid) >= a.level then selfSay('Ho-ho Feliz Natal '..getPlayerName(cid)..', você recebeu seus itens de {Paladin}!', cid) for _, b in pairs(itempaladin) do doPlayerAddItem(cid, b[1], b[2]) doSendMagicEffect(getPlayerPosition(cid), 28) setPlayerStorageValue(cid,a.storage,1) end else doSendMagicEffect(getPlayerPosition(cid), 2) selfSay('{'..getPlayerName(cid)..'} você precisa ser level {'..a.level..'} para receber sua recompensa, faltam apenas {'..a.level - getPlayerLevel(cid)..'}. Ho-ho!', cid) end else selfSay('Voce não é {Royal Paladin} '..getPlayerName(cid)..'!', cid) end else selfSay('{'..getPlayerName(cid)..'} voce ja pegou seu presente!', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Informações: - O npc verificar a vocação do player e adiciona itens conforme sua vocação. - O level minimo para se usar o NPC é 150 - Só pode pegar o presente uma vez - Itens e level minimo configurável. Imagens do NPC: Ao falar com o npc: NPC verificando que o player pediu o presente que não é da sua vocação: NPC verificando que o player não tem o level minimo para pegar o presente e informando quantos leveis faltam para o player poder pegar o presente: Mensagem ao receber o presente: NPC informando que o player já pegou o presente: Créditos: Markin
  24. olá galera Gostaria de uma ajudinha,como faço para por este item 9785,é um cristal pillar(uma estatua),como outfit de um monstro ? se tiver no local errado perdão

Open Tibia Server

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

Redes Sociais

Anuncie no Tibia King

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

×
×
  • Create New...