Ir para conteúdo

cough

Campones
  • Total de itens

    4
  • Registro em

  • Última visita

Sobre cough

cough's Achievements

  1. Muito interessante o tutorial... Mas quando mudo qualquer item aqui, por mais boba que seja a mudança, DA ERRO no items.xml. Exemplo de mudança:
  2. BOooa... Muitas pessoas fazem isso e acham que aprendem algo... - -
  3. Aew pessoal... Lembrando que qualquer dúvida só perguntar...
  4. Revirei a web procurando por um NPC que nos enviasse em uma missão atrás de um item, não sei se os membros daqui acham isso fácil, mas eu tive que me desdobrar durante uma tarde inteira!!! >_<' Espero que curtam... ._. Vamos ao que interessa: A idéia é simples: Criar 2 NPCs gêmeos, um buscando por um item, outro o tirando do irmão. No caso nosso item será uma pá. Os chamei, respectivamente, de Jaum e Adaum pois o cenário no qual eles ficam é campestre, mas fiquem a vontade para alterar pelo que quiserem, tanto os nomes, quanto os objetos envolvidos. Duplique um .xml da pasta \npc e apague tudo o que estiver nele. Cole o código abaixo e nomeie o arquivo como Jaum Acho interessante ressaltar que a tag <parameters> controla, nesse caso, as ações de fala e comércio do NPC. <parameter key="message_greet" value="Mensagem dita ao falarmos hi" /> <parameter_key="message_farewell" value="Mensagem dita ao falarmos bye" /> <parameter key="module_keywords" value="1" /> -- ativa o módulo Palavra-Chave <parameter key="keywords" value="primeirakeyword;segundakeyword;enesimakeyword;separadasporpontoevirgula" /> <parameter key="keyword_reply1" value="Aqui fica a resposta do npc referente à primeirakeyword" /> <parameter key="keyword_reply2" value="Aqui fica a resposta do npc referente à segundakeyword" /> <parameter key="keyword_reply3" value="Aqui fica a resposta do npc referente à enesimakeyword" /> <parameter key="keyword_reply4" value="Sacaram né? o_O... Separe as palavras-chave por ponto e vírgula" /> <parameter key="module_shop" value="1"/> -- ativa o módulo de Compra <parameter key="shop_buyable" value="blueberries,2677,2"/> -- Itens compráveis (no caso, blueberries, cujo ID é 2677 e o preço de compra 2gps. <parameter key="shop_sellable" value="blueberries,2677,1"/> -- Itens a venda (no caso, blueberries, cujo ID é 2677 e o preço de venda, 1 gp. Faça o mesmo, usando o código abaixo, e nomeio o arquivo de Adaum. Os parâmetros são os mesmos do outro NPC, só que o Adaum compra blueberries 1gp mais caro. Grande merda né? Agora, na pasta \npc\scripts crie dois arquivos.lua, Jaum e Adaum e use os códigos abaixo, respectivamente, para eles: EXPLICAÇÃO POR PARTES (ou você achou que ia ficar no vácuo?): PARTE I - O básico para funcionar Essa parte eu não sei do que trata, não a ponto de explicar pelo menos. E, confesso, não me fez falta alguma. xDDD Se alguém estiver interessado em complementar a explicação, fique a vontade. 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 PARTE II - Chamar números de palavras mais convenientes facilita a compreensão local shovelid = 2554 -- onde houver a palavra shovelid o script entenderá como o número 2554 (id da shovel) local storage = 2554 -- onde houve a palavra storage o script entenderá como o número 2554 (tal número será uma variável, pra podermos atribuirmos valores) local getstorage = getPlayerStorageValue(cid, storage) -- getPlayerStorageValue significa que o script vai pegarValorStorageJogador, (ou seja, vai conferir o valor 'STORAGE' que nesse caso significa se você entregou pro NPC a shovel ou não entregou, TER STORAGE=1 SIGNIFICA QUE JÁ ENTREGOU A SHOVEL) local sorrymessage = "Larga de ser mentiroso... Estah parecendo o Adaum" -- Onde houve sorrymessage o script entenderá como a frase dizendo para largar de ser mentiroso local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid -- Não faço a míiinima. xD PARTE III - PRESTEM MUITA ATENÇÃO ONDE AS CONDIÇÕES SE (IF) COMEÇAM E ONDE TERMINAM if msgcontains(msg, 'shovel') then -- se vc disser 'shovel' e if getstorage == 1 then -- se tem o storage igual a 1 (ou seja, se já entregou a shovel) então npcHandler:say("Voce jah completou o trabalho!", cid) -- npc diz elseif getstorage < 1 then -- senão, caso tenha o storage abaixo de 1 (não tenha dado a shovel), então npcHandler:say("Encontrou-a?", cid) --npc diz talkState[talkUser] = 1 -- ativa fala1 end elseif msgcontains(msg, 'trabalho') then -- se vc disser 'trabalho' e if getstorage < 1 then -- tiver o storage abaixo de 1 npcHandler:say("Meu irmao gemeo escondeu minha {shovel} de novo. ", cid) -- npc diz elseif getstorage == 1 then -- senão, caso tenha o storage igual a 1 npcHandler:say("Voce completou o trabalho, obrigado.", cid) -- npc diz end elseif msgcontains(msg, 'sim') then -- se disser 'sim' e if talkState[talkUser] == 1 then -- se a fala1 estiver ativa (olhe mais acima, ter a fala1 ativa significa que o npc está perguntando se encontrou a shovel e vc acabou de dizer que sim) if getstorage < 1 then -- se storage for menor que 1 (novamente: se não entregou a SHOVEL) if doPlayerRemoveItem(cid, shovelid, 1) == TRUE then -- e se for possível remover a shovelid (olhe no início, verá que shovelid = 2554) do seu char, então npcHandler:say("Voce me trouxe a shovel, agora posso cavar em paz...", cid) -- npc diz setPlayerStorageValue(cid, storage, 1) -- ativa o storage valendo 1 (Isso significará que você entregou a SHOVEL) doPlayerAddExp(cid, 200) -- adiciona 200 exp pro teu char talkState[talkUser] = 0 -- desativa fala1 elseif doPlayerRemoveItem(cid, shovelid, 1) == FALSE then -- se não for possível remover a shovel (ou seja, se não estiver carregando uma) então npcHandler:say(sorrymessage, cid) -- npc diz a 'sorrymessage' (leia no início qual é a sorrymessage) talkState[talkUser] = 0 -- desativa fala1 end end end elseif(msgcontains(msg, 'nao') and talkState[talkUser] == 1) then -- se vc disser que 'não' com a fala1 ativa respondeu negativamente a pergunta 'Encontrou-a?') npcHandler:say("Tudo bem... Volte ao concluir o trabalho.", cid) -- e o npc dirá isso talkState[talkUser] = 0 -- e desativa a fala1 end PARTE IV - Mais comandos indispensáveis (TEM QUE TER) mas dispensáveis de compreender (ao menos eu penso assim) return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) -- OBS: PARTE I e IV idênticas ao evento anterior PARTE II - Só muda a sorrymsg local shovelid = 2554 local storage = 2554 local getstorage = getPlayerStorageValue(cid, storage) local sorrymessage = "Ele naum estah com a shovel." -- Será usada quando você nem tiver entregue a shovel pro Jaum ainda e for falar com o Adaum local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid PARTE III - Gêmeo sacana! XD (Continue prestando atenção onde os IF começam e acabam if msgcontains(msg, 'duvido') then -- se disser 'duvido' (olha a msg_greet do segundo quote <parameter key="message_greet" value="Opa |PLAYERNAME|! Duvida eu roubar a shovel do meu irmao e a esconder soh de sacanagem?" /> e if getstorage < 1 then -- o storage estiver abaixo de um (ou seja, a SHOVEL foi entregue pro Jaum e roubada pelo Adaum já) npcHandler:say("Jah te entreguei a shovel rapah...", cid) -- npc diz elseif getstorage == 1 then -- senão, caso o storage seja igual a 1 (ou seja, caso a SHOVEL ainda esteja com o Jaum) então npcHandler:say("Duvida mesmo? Ele tah me olhando, esconde por mim?", cid) -- npc diz talkState[talkUser] = 1 -- ativa fala1 end elseif msgcontains(msg, 'sim') then -- se disser 'sim' e if talkState[talkUser] == 1 then -- se a fala1 estiver ativa (ou seja, se estiver dizendo sim para a pergunta: "Duvida mesmo? Ele tah me olhando, esconde por mim?") if getstorage == 1 then -- se storage for igual a 1 (ou seja... se a SHOVEL estiver com o Jaum) npcHandler:say("Tome, escolha um lugar dificil hein.", cid) -- npc diz setPlayerStorageValue(cid, storage, 0) -- storage passa a valer zero agora! (A SHOVEL EH RETIRADA DO JAUM!) doPlayerAddItem(cid, 2554, 1) -- o Adaum passa a Shovel pra vc esconder! talkState[talkUser] = 0 -- desativa fala1 elseif getstorage == 0 then -- se storage for igual a zero... (ou seja, se o Jaum não tiver Shovel nehuma ainda) então npcHandler:say(sorrymessage, cid) -- ...o Adaum dirá a sorrymessage dele (olhe mais acima aew que vc acha) talkState[talkUser] = 0 -- desativa fala1 end end elseif(msgcontains(msg, 'nao') and talkState[talkUser] == 1) then -- se disser 'nao' e a fala1 estiver ativa estará dizendo negando a pergunta "Duvida mesmo? Ele tah me olhando, esconde por mim?") npcHandler:say("Tah com medo de uma brincadeira boba eh?", cid) -- e npc dirá isso talkState[talkUser] = 0 -- depois cancelará a fala1 end É isso aew. Foi meu primeiro tutorial, espero ter ajudado... O fiz porque, sinceramente, é uma droga encontrar tutoriais ensinando como fazer NPC's aceitando itens de quest. Esse aqui aceita e rouba o item também, dá pra fazer a quest quantas vezes quiser fazer... Aí vai da imaginação de cada um colocar os irmãos longe um do outro, trocar a shovel por um item mais legal... Por bichos fortes no caminho pra esse item, aumentar a experiência da missão... Enfim. Mudem a vontade Se gostou, comente. ^-^ Se não gostou, por favor, comente dizendo os motivos. ^^ Adoro críticas, são elas, unidas à nossa força de vontade, que nos fazem evoluir. ______________________________ Att. Cough Orkut: Cough Msn: fernando._.fsb@hotmail.com
  5. Novato no Forum, antigo Tibiano

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...