Postado Novembro 26, 2013 11 anos Autor Oushe vou ver .. já posto se seu certo -------------- @editado Bom ele Aparace no mapa ... pergunta pra mim se quero trocar beleza , quando vou confirmar "sim" ele não faz nada não da o item n fala se ta faltando alguma coisa ..... e o por que o erro no distro era que tinha colocado "change" e é "changer" com o r no final a queria saber como faz pra eu colocar outro item .... tipo troca 2 Editado Novembro 26, 2013 11 anos por ryukicho (veja o histórico de edições)
Postado Novembro 27, 2013 11 anos Bem eu refiz aqui, e vou explicar um pouquinho. 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 function ferro(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if getPlayerItemCount(cid,6567) >= 100 then doPlayerRemoveItem(cid, 6567, 100) doPlayerAddItem(cid, 12415, 1) npcHandler:say("Aqui esta sua espada como prometido!", cid) else npcHandler:say("Voce nao tem o ferro nescessario.", cid) end keywordHandler:moveUp(1) return true end function ouro(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if getPlayerItemCount(cid,ID_DO_OURO) >= QUANTIDADE_QUE_O_PLAYER_PRECISA_TER then doPlayerRemoveItem(cid, ID_DO_OURO, QUANTIDADE_QUE_O_PLAYER_PRECISA_TER) doPlayerAddItem(cid, ID_DO_NOVO_ITEM, 1) npcHandler:say("Aqui esta o item que te prometi!", cid) else npcHandler:say("Voce nao tem o ouro suficiente.", cid) end keywordHandler:moveUp(1) return true end local node2 = keywordHandler:addKeyword({'troca2'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 200 ouro por um item ?'}) node2:addChildKeyword({'sim'}, ouro, {blessing = 1}) node2:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'}) local node1 = keywordHandler:addKeyword({'troca1'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 100 ferro por uma espada?'}) node1:addChildKeyword({'sim'}, ferro, {blessing = 1}) node1:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'}) npcHandler:addModule(FocusModule:new()) Bem eu adicionei uma fuction, que no caso seria um novo item. Na function ferro ficou o que você tinha pedido 100 ferros por 1 espada. Ja na function ouro eu deixei algumas palavras chaves: QUANTIDADE_QUE_O_PLAYER_PRECISA_TER Você troca pela quantidade de item que o player vai dar pra trocar. ID_DO_NOVO_ITEM você troca pelo id do item que ele vai ganhar ID_DO_OURO você troca pelo id do objeto que ele vai ter que dar. Ali nos nodes, voce pode editar as frases. Caso queira colocar mais itens apenas adiciona node3 ou 4 ou 5. E uma function para cada node.
Postado Novembro 27, 2013 11 anos Autor Pera deixa eu ver se entendi e para fazer isso : if getPlayerItemCount(cid,ID_DO_OURO) >= 100 then doPlayerRemoveItem(cid, ID_DO_OURO, 100) doPlayerAddItem(cid, ID_DO_NOVO_ITEM, 1) npcHandler:say("Aqui esta o item que te prometi!", cid) else npcHandler:say("Voce nao tem o ouro suficiente.", cid) end keywordHandler:moveUp(1) return true end ??? ----------------------- @edit Cara tu e foda Funciono Bom eu deixei como ta a script não mechi caso desse um erro eu ia fazer como falei ali em cima , masi não deu ... Te dei 2 Rep + hj não tenho mais .. mais amanha dou mais 2 Pode ser ? Bem antes de feicha o topico .. pode me explicar como Faso para add a troca2 ? Editado Novembro 27, 2013 11 anos por ryukicho (veja o histórico de edições)
Postado Novembro 27, 2013 11 anos Vou criar um script com comentários explicando tudo certinho e ja posto aqui editando este meu comentário. --EDIT-- Como prometido aqui esta. espero que ajude muitas pessoas, e todos aqueles que aprenderam ou gostaram do trabalho por favor +Rep. Isto faz com que eu seja reconhecido no Fórum. Caso tenha algo errado por favor, me indique para que eu aprenda também. Não sou formado nisso sou igual a todos que vão ler isso O conhecimento esta na frente de todos e todos são capazes de obtê-lo basta querer. Data/Npc/Troca.xml <!-- ----------------------------------------------------------- -- Criado por Thiago Renan -- Script de trocas explicativo -- Este Script foi criado com o intuito de aprendizagem -- Tem como funcoes um NPC que executa troca de itens -- Neste Script o npc faz a troca de apenas 2 itens -- Mas sera ensinado como adicionar mais itens ----------------------------------------------------------- ----------------------------------------------------------- -- Aqui voce mudara o nome do NPC de trocar, a sua aparencia -- Coisas que ele respondera e tambem podera mudar a -- Vida do NPC mesmo sendo um pouco inutil. ----------------------------------------------------------- -- Nesta primeira linha aonde esta "Buckerman", voce coloca -- o nome que desejar. -- -- <npc name="Buckerman" script="data/npc/scripts/soft.lua" access="5" lookdir="1"> ----------------------------------------------------------- -- Na segunda linha se desejar mude a vida do seu NPC, -- Aonde esta "700" e o tanto de vida que ele ta, e aonde -- esta "1000" e a vida maxima dele. -- -- <health now="700" max="1000"/> ----------------------------------------------------------- -- Nesta linha voce muda o visual dele. Aonde esta 133 -- voce troca pelo id da skin que desejar. -- -- <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> ----------------------------------------------------------- -- Nos parametros voce pode editar as mensagens como desejar -- Acredito que elas nao precisao ser explicadas. -- Da maneira como estao da para entender o que fazem. ----------------------------------------------------------- --> <npc name="Buckerman" script="data/npc/scripts/soft.lua" access="5" lookdir="1"> <health now="700" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu posso trocar 100 ferro por uma espada digitando 'troca1' ou posso trocar 200 ouro por um helmo digitando 'troca2'." /> <parameter key="message_alreadyfocused" value="Senhor ? Nao vai falar nada ?" /> <parameter key="message_farewell" value="Adeus. Volte novamente." /> <parameter key="message_walkaway" value="Adeus. Volte novamente." /> </parameters> </npc> Data/Npc/Scripts/Troca.lua ----------------------------------------------------------- -- Criado por Thiago Renan -- Script de trocas explicativo -- Este Script foi criado com o intuito de aprendizagem -- Tem como funcoes um NPC que executa troca de itens -- Neste Script o npc faz a troca de apenas 2 itens -- Mas sera ensinado como adicionar mais itens ----------------------------------------------------------- ----------------------------------------------------------- -- Inicio das Funçoes basicas -- Nao mudar nada! ----------------------------------------------------------- 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 ----------------------------------------------------------- -- Fim das Funçoes basicas -- Nao mudar nada! ----------------------------------------------------------- ----------------------------------------------------------- -- Inicio das Functions -- Cada function neste caso de script representa um item -- O player iniciara a conversa com o NPC dizendo "hi" -- Como de costume, e em seguida o npc indicara ao player -- Algumas coisas que ele pode trocar e cada comando que -- O player devera falar para trocar o item que deseja -- Neste caso, cada palavra-chave que o player falar -- Executara a fuction relacionada a esta palavra. -- -- Como por exemplo: -- -- Player say: hi -- NPC say: Bem vindo, eu posso trocar ferro por uma -- espada caso voce digite "troca1" e tambem troco ouro -- por um helmo caso voce digite "troca2" -- -- Se o player responder troca1 iria executar -- a function troca1 e no caso do player digitar troca2 -- ira executar a troca2. Ou seja cada item que voce -- adicionar nescessitara de uma function. ----------------------------------------------------------- ----------------------------------------------------------- -- Fuction da troca 1 -- Esta function ira trocar 100 ferro por 1 espada -- Ela tem tambem a funcao de verificar se o player -- Nao tem os 100 ferros e alertar ele que ele nao tem -- Os itens nescessarios ----------------------------------------------------------- ----------------------------------------------------------- -- Este script nao ensina 100% -- Voce deve ter um minimo de conhecimento -- Generalizando um pouco. Vou indicar o que cada -- Numero nela representa. -- -- "6567" = Item que o player precisara ter, neste caso -- ele precisara ter ferro. -- -- "100" = Quantidade do item que o player precisara -- ter para trocar. Neste caso 100 ferro. -- -- "2383" = ID do item que o player ira ganhar em troca. -- Neste caso uma espada. -- -- "1" = Quantidade do item que o player ganhara. -- Neste exemplo uma espada. ----------------------------------------------------------- ----------------------------------------------------------- -- A primeira frase nesta function representa se o player -- tiver o suficiente para trocar. Ja a segunda indica ao -- player que ele nao tem o nescessario para trocar. ----------------------------------------------------------- function troca1(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if getPlayerItemCount(cid,6567) >= 100 then doPlayerRemoveItem(cid, 6567, 100) doPlayerAddItem(cid, 2383, 1) npcHandler:say("Aqui esta a sua espada!", cid) else npcHandler:say("Voce nao tem 100 ferros.", cid) end keywordHandler:moveUp(1) return true end ----------------------------------------------------------- -- Fim da primeira function ----------------------------------------------------------- ----------------------------------------------------------- -- Inicio da segunda function -- Igual a primeira com a diferenca, que agora precisa -- de 200 ouro para ganhar um helmo ----------------------------------------------------------- function troca2(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if getPlayerItemCount(cid,9971) >= 200 then doPlayerRemoveItem(cid, 9971, 200) doPlayerAddItem(cid, 2460, 1) npcHandler:say("Aqui esta o seu helmo!", cid) else npcHandler:say("Voce nao tem 200 ouro.", cid) end keywordHandler:moveUp(1) return true end ----------------------------------------------------------- -- Fim da segunda function ----------------------------------------------------------- ----------------------------------------------------------- -- Fim das Functions ----------------------------------------------------------- ----------------------------------------------------------- -- Inicio dos nodes -- Eu vou ensinar apenas o nescessario para que voce -- consiga adicionar novos itens. ----------------------------------------------------------- -- Bem como pode ver inicia com o Local nodex -- No caso para organizacao deixe os nodes numerados em -- sequencia 1,2,3,4,5,6,7. Vamos imaginar uma arma, para -- aqueles que tem conhecimento em armas, sabe que -- algumas armas possuem trava de seguranca. -- Tecnicamente o node neste script e isso, o player fala -- a palavra-chave e ele pergunta se deseja ou nao fazer -- uma determinada troca. Caso o player digite "nao" -- o script simplismente envia uma mensagem para o player -- voltar quando desejar, e mata a conversa. -- Ja a palavra "sim", funciona como o gatilho sendo -- puxado. Como voce pode ver nesta linha: -- node1:addChildKeyword({'sim'}, troca1, {blessing = 1}) -- Ela detecta a palavra "sim" e envia pra function -- "troca1". ----------------------------------------------------------- ----------------------------------------------------------- -- Inicio node1 ou seja o node da troca1 ----------------------------------------------------------- local node1 = keywordHandler:addKeyword({'troca1'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 100 ferro por uma espada?'}) node1:addChildKeyword({'sim'}, troca1, {blessing = 1}) node1:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'}) ----------------------------------------------------------- -- Fim node1 ou seja o node da troca1 ----------------------------------------------------------- ----------------------------------------------------------- -- Inicio node2 ou seja o node da troca2 ----------------------------------------------------------- local node2 = keywordHandler:addKeyword({'troca2'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce deseja trocar 200 ouro por um helmo?'}) node2:addChildKeyword({'sim'}, troca2, {blessing = 1}) node2:addChildKeyword({'nao'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Volte quando quiser trocar.'}) ----------------------------------------------------------- -- Fim node2 ou seja o node da troca2 ----------------------------------------------------------- ----------------------------------------------------------- -- Fim dos nodes ----------------------------------------------------------- ----------------------------------------------------------- -- Nao mecher nesta ultima linha ----------------------------------------------------------- npcHandler:addModule(FocusModule:new()) ----------------------------------------------------------- -- Fim do script -- Nao mecher nesta ultima linha ----------------------------------------------------------- Editado Novembro 27, 2013 11 anos por thiago270 (veja o histórico de edições)
Postado Novembro 27, 2013 11 anos Autor Vlw , aprendi como funciona o script tem como colocar o script ja com as duas opção não estou conseguindo colocar se poderia fazer um Topico com esse script vai ajudar muita gente --------------- @edit ----- Deixa consegui ) duvida sanada .... e Se poderia Fazer um topico como disse antes ! vlw amanha do o resto do rep Editado Novembro 27, 2013 11 anos por ryukicho (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.