ryandometal 0 Postado Julho 8, 2009 Share Postado Julho 8, 2009 (editado) Fala pessoal, esse é meu primeiro script que posto aqui na comunidade, não sou muito bom nisso, mas depois de um tempo eu consegui fazer com que funcionasse 100%. ----------------------------------------- Descrição: É uma quest que, ao falar com um NPC, você deve matar 1000 monstros, e depois de feito, você ganha um prêmio em experiência e acesso a um local, onde randomicamente, um monstro é sumonado para você enfrentar (no caso, um boss pirate) Mais infos, aqui. Distro utilizado: The Forgotten Server 0.2.2/0.2.3/0.2.4 Primeiro, vamos fazer o NPC. Vá em data/npc e cria um arquivo .xml com o nome de Captain Alfred. Copie isso dentro do arquivo e salve: <?xml version="1.0"?><npc name="Captain Alfred" script="data/npc/scripts/killing_quest.lua" access="3" lookdir="2" walkinterval="2000"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="151" head="115" body="76" legs="35" feet="117" addons="2" corpse="6080"/> <parameters> <parameter key="message_greet" value="Hiho! Do you want to do a {quest}? "/> </parameters> </npc> Agora, em data/npc/scripts, crie um arquivo .lua chamado killing_quest e copie isto dentro 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 local quest = 86669 ---storage value utilizado if msgcontains(msg, 'quest') then selfSay("Ok, you have to kill some monsters. Do you want to kill {pirates}?", cid) talkState[talkUser] = 2 elseif(getPlayerStorageValue(cid, quest) == 2) then selfSay("You have some more pirates to kill.", cid) elseif(getPlayerStorageValue(cid, quest) == 3) then --pirates selfSay("Wow, you did it! Now, you can enter in quest door of nargor!", cid) doPlayerAddExp(cid, 300000) setPlayerStorageValue(cid, quest, 4) setPlayerStorageValue(cid, 696969, 1) ---questdoor storage--- elseif(getPlayerStorageValue(cid, quest) == 4) or (getPlayerStorageValue(cid, 696969) == 2) then selfSay("You have already done my quest.", cid) elseif msgcontains(msg, 'pirates') and talkState[talkUser] == 2 then selfSay("So you wanna kill 1200 pirates yeah?", cid) talkState[talkUser]= 3 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then selfSay("Ok, now go and kill pirates. And after that go back and report!", cid) setPlayerStorageValue(cid, quest, 2) end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Altere apenas o que está em vermelho, no caso as falas do NPC, suas respostas e o storagevalue da quest. Você pode modificar também o prêmio da quest, ao invés de doPlayerAddExp(cid, quantidade), coloque doPlayerAddItem(cid, IDDOITEM, QUANTIDADE). Agora vá na pasta data/creaturescripts/scripts e crie um arquivo com o nome de kill_counter.lua, em seguida, adicione isto nele: local monsters = { --name = storage ["pirate buccaneer"] = 45004, ["pirate corsair"] = 45004, ["pirate cutthroat"] = 45004, ["pirate marauder"] = 45004, ["pirate ghost"] = 45004 } function onKill(cid, target) if(isPlayer(target) ~= TRUE) then local name = getCreatureName(target) local monster = monsters[string.lower(name)] if(monster) then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end if(name == "pirate buccaneer" or name == "pirate corsair" or name == "pirate cutthroat" or name == "pirate marauder" or name == "pirate ghost") and getPlayerStorageValue(cid, 86669) == 2 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " of 1200 pirate's.") setPlayerStorageValue(cid, monster, killedMonsters + 1) if getPlayerStorageValue(cid, 45004)>=1200 then setPlayerStorageValue(cid, 86669, 3) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed enought pirate's.") end end end return TRUE end end Você pode alterar os nomes dos monstros a serem enfrentados, caso queira fazer uma quest diferente. Neste exemplo foram utilizados piratas Ahh, para mudar a quantidade de monstros que o jogador deve matar, mude aqui onde está em vermelho: if getPlayerStorageValue(cid, 45004)>=1200 1200 = quantidade de monstros Caso modifique a quantidade, não se esqueça de mudar as mensagens destacadas em vermelho para o número correto de monstros a serem enfrentados, senão fica non-sense né? Ainda na pasta creaturescripts/scripts, abra o arquivo login.lua e adicione o seguinte comando abaixo de "function onLogin(cid)": registerCreatureEvent(cid, "KillingInTheNameOf") Abra o arquivo onkill.lua e adicione o mesmo comando: registerCreatureEvent(cid, "KillingInTheNameOf") Agora vá em data/creaturescripts e abra o arquivo creaturescripts.xml, adicione a seguinte tag: <event type="kill" name="KillingInTheNameOf" script="kill_counter.lua"/> Para finalizar, vá em data/actions/scripts, crie um arquivo chamado piratedoor.lua e adicione isto: local bossroom = {x=880, y=617, z=2} ---coordenadas da sala onde o jogador será teleportado ao clicar na portalocal spawn = {x=886, y=608, z=2} ---coordenadas de onde irá nascer o boss function onUse(cid, item, pos, frompos, item2, topos) local randommonsters = {"brutus bloodbeard", "deadeye devious", "lethal lissy", "ron the ripper"} local randomboss = math.random(1,4) if getPlayerStorageValue(cid,696969) == 1 then doTeleportThing(cid, bossroom) doSendMagicEffect(bossroom,10) doSummonCreature(randommonsters[randomboss], spawn) setPlayerStorageValue(cid, 696969, 2) else if item.uid == 8735 and item.itemid == 5290 then if getPlayerStorageValue(cid,696969) == 0 or getPlayerStorageValue(cid,696969) == 2 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,'The door seems to be sealed against unwanted intruders.') end end end end Depois abra o arquivo actions.xml, e adiciona a tag: <action uniqueid="8735" script="piratedoor.lua" /> Altere apenas o que está em vermelho, lembrando que no final, 8735 é o uniqueid que você colocará na porta pelo map editor, 5290 é o id da porta, ambos podem ser alterados! Crie uma área parecida com essa da screenshot, e não se esqueça de adiciona o NPC no mapa né. Screenshot: Caso encontrem algum erro, por favor postem aqui! Agradecimentos ao slawkens (otfans) por criar parte do script, e ao Val por tirar uma dúvida Abraços. :smile_positivo: Editado Julho 8, 2009 por Ryan Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/ Compartilhar em outros sites More sharing options...
DaNDaNrOxX 15 Postado Julho 8, 2009 Share Postado Julho 8, 2009 OMG Não sabia que você era scripter amigo! Parabéns ae, dei uma olhada por cima nos scripts e ta bem loco mesmo. Pena que eu não tenho um server (rs) se não usaria Abraços Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-759270 Compartilhar em outros sites More sharing options...
hugobululu 0 Postado Julho 10, 2009 Share Postado Julho 10, 2009 Tutorial muito mal explicado Reprovo Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-760540 Compartilhar em outros sites More sharing options...
alnt1994 0 Postado Julho 14, 2009 Share Postado Julho 14, 2009 @hugobululu Se vc reprovou foi por que não entendeu o que ele disse @topic Nossa, igualmente ao mod ai, não sabia que era scripter, porém continue assim eu li o seu script e axei ótimo, parabens Aprovadissimo :button_ok: Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-762210 Compartilhar em outros sites More sharing options...
BillyBola 1 Postado Julho 14, 2009 Share Postado Julho 14, 2009 Ótimo Ryan, essa quest ta dando o que falar no global. Não sabia que você era scripter amigo!² Muito rox o script, peno que não tenho servidor, se não usaria sem dúvida! Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-762212 Compartilhar em outros sites More sharing options...
tibiaa4e 86 Postado Julho 14, 2009 Share Postado Julho 14, 2009 Mto bom... Dava pra usar uma matriz de vetor (array) Mas se foi um dos primeiros scripts foi mto bom mesmo... Parabens Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-762474 Compartilhar em outros sites More sharing options...
Riuzaky 1 Postado Outubro 28, 2009 Share Postado Outubro 28, 2009 Olha, eu fiz tdo certinho maais, ñ consigo usar isso. :sosad: [28/10/2009 19:36:57] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/task/piratedoor.lua) [28/10/2009 19:36:57] cannot open data/actions/scripts/task/piratedoor.lua: No such file or directory [28/10/2009 19:37:00] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/kill_counter.lua) [28/10/2009 19:37:00] cannot open data/creaturescripts/scripts/kill_counter.lua: No such file or directory Tipo eu ja fiz a porta, o tp, o npc. Mudei pra matar 50 pirates (ele nem conta) e msm antes de eu modificiar ja n tava funfando. Lógico acho se o script ñ carregou eh porque n ta funfando. Mas o npc ta 100% Eu axo Obrigado, e por favor me ajuda, preciso disso urgente :excl: Nice topic Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-807725 Compartilhar em outros sites More sharing options...
leoh 0 Postado Novembro 2, 2009 Share Postado Novembro 2, 2009 hrmm, eu estou vendo o forum todos os dias para ver se vc respondeu o Riuzaky pq eu fiz o dos pirates deu certo mais nao consigo faser um para Dragon Lord Para matar o demodras.... pode explica tudo direitinho? oq o numero "45004" vale etc etc~ Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-809730 Compartilhar em outros sites More sharing options...
ryandometal 0 Postado Dezembro 28, 2009 Autor Share Postado Dezembro 28, 2009 Olha, eu fiz tdo certinho maais, ñ consigo usar isso. :sosad: Tipo eu ja fiz a porta, o tp, o npc. Mudei pra matar 50 pirates (ele nem conta) e msm antes de eu modificiar ja n tava funfando. Lógico acho se o script ñ carregou eh porque n ta funfando. Mas o npc ta 100% Eu axo Obrigado, e por favor me ajuda, preciso disso urgente :excl: Nice topic Opa, foi mal a demora, fiquei afastado do fórum e só vi agora =d confere no actions.xml se tem essa linha: <action uniqueid="8735" script="task/piratedoor.lua" /> hrmm, eu estou vendo o forum todos os dias para ver se vc respondeu o Riuzaky pq eu fiz o dos pirates deu certo mais nao consigo faser um para Dragon Lord Para matar o demodras.... pode explica tudo direitinho? oq o numero "45004" vale etc etc~ Tipo, abre o arquivo do dragon lord lá na pasta monsters, o nome dele tem que estar escrito em letras minúsculas, ou seja: <monster name="dragon lord" nameDescription="a dragon lord" o número de um storagevalue é o que se usa pra verificar se o player já fez ou não a quest. se for = -1 ou 0, ele não fez, se for 1 ou maior significa que já foi feita. Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-834429 Compartilhar em outros sites More sharing options...
victormacri 0 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 aki não está aparecendo os spoils,pq será?como faço pra ver? Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-839409 Compartilhar em outros sites More sharing options...
Fronick 11 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 òtimo cara,parabens Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-839411 Compartilhar em outros sites More sharing options...
solanny 0 Postado Janeiro 21, 2010 Share Postado Janeiro 21, 2010 Manim eu nao consegui abrir o Spoil pode me mandar os Script por E-mail??? se puder meu e-mail e shuffle_ot@hotmail.com Des de jah Grato. Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-840676 Compartilhar em outros sites More sharing options...
silveralol 2 Postado Janeiro 25, 2010 Share Postado Janeiro 25, 2010 cara, vo fez um script que eu esperava a muito tempo, mas por que nao posso ver os spoils ?? vc pode me enviar um arquivo do word, por favor estou muito precisado, estou faze a mission de matar 2000 hydras para poder matar o boos The Many.... por favor. e obrigado por sua atençao Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-841702 Compartilhar em outros sites More sharing options...
Vilden 137 Postado Janeiro 25, 2010 Share Postado Janeiro 25, 2010 siveralol tente abrir o spoil e esperar um pouco, as vezes demora mesmo se não abrir tente atualizar a pagina, casa ainda não abra pessa ao criador que manda em txt. =) ______ Edit - deve ser porque esses spoils são do antigo forum, agora que mudou o forum deve ter bugado.. Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-841719 Compartilhar em outros sites More sharing options...
Ztoex 0 Postado Janeiro 27, 2010 Share Postado Janeiro 27, 2010 eh n ta dando de v o spoil n =s. tem q ser mozzila? uso i explorer =S. Link para o comentário https://xtibia.com/forum/topic/115881-creatureevents-killing-in-the-name-of-quest/#findComment-842066 Compartilhar em outros sites More sharing options...
Posts Recomendados