LuNaTiC 0 #1 Postado 9 Agosto, 2007 Existem muitas formas de troca, que muita gente não sabe como colocar, geral as pessoas tentam colocar : buy(cid,2455,1,0) sell(cid,2455,1,0) Mas sempre dava a mesma coisa, ele sempre pega o item sem devolver um.... O Script de troca é esse: elseif talk_state == 1 then if msgcontains(msg, 'yes') then itemstatus = doPlayerRemoveItem(cid,2379,1) if itemstatus == 0 then selfSay('Sorry, you not have this item.') else doPlayerAddItem(cid,2148,2) selfSay('Thanks for this item.') end end talk_state = 0 Explicando: Mensagem que o player irá dizer para a troca, no caso, eu fiz um exemplo de uma confirmação. Esse comando serve para remover o item do player, no caso, uma dagger. No caso, ai está o tal comando de se o player não tiver o item, ele não trocara o item. Essa mensagem o NPC falará quando o player não tiver o item para a troca. Esse comando server para adicionar um item ao player, no caço 2 gps pela dagger. Essa mensagem o NPC irá falar quando vocês trocarem o item. Importante¹: Se for para adicionar mais de 100 gold tenque colocar 2 comando, exemplo: doPlayerAddItem(cid,2148,43) e doPlayerAddItem(cid,2152,2), no caso o player ganhara 243 gps. Aqui está um exemplo de um NPC de Troca: local focus = 0local talk_start = 0 local target = 0 local following = false local attacking = false function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end 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) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Olá ' .. creatureGetName(cid) .. '! Eu te dou um Demon Shield por um Royal Helmet.') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'troca') or msgcontains(msg,'trade') then if queststatus == -1 then selfSay('Você quer trocar um royal helmet por um demon shield?') talk_state = 1 elseif msgcontains(msg, 'exemplo de quest') or msgcontains(msg,'exemplo de quest.') then selfSay('Você quer trocar um royal helmet por um demon shield?') talk_state = 2 elseif talk_state == 1 then if msgcontains(msg, 'yes') then itemstatus = doPlayerRemoveItem(cid,2498,1) if itemstatus == 0 then selfSay('Sorry, you not have items.') else doPlayerAddItem(cid,2520,2) selfSay('Thanks for items.') end end talk_state = 0 elseif talk_state == 2 then if msgcontains(msg, 'yes') then itemstatus = doPlayerRemoveItem(cid,2498,1) if itemstatus == 0 then selfSay('Sorry, you not have items.') else doPlayerAddItem(cid,2520,2) selfSay('Thanks for items.') end end talk_state = 0 elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Good bye, ' .. creatureGetName(cid) .. '!') focus = 0 talk_start = 0 end end end function onCreatureChangeOutfit(creature) end function onThink() if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Next Please...') end focus = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Good bye then.') focus = 0 end end end[/b] Agora é so configura como eu disse acima.... Agora vou ensinar como o NPC falará com você apenas se você tiver feito alguma quest. Depois de: if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 Adicione: and queststatus > 0 then Ficando: if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 and queststatus > 0 then Emcima adicione: queststatus = getPlayerStorageValue(cid,2520)[/b] Esse é o StorageValue da quest, se você fez ela ou não... Embaixo de: elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then selfSay('Bye human.') focus = 0 talk_start = 0 end Adicione: else selfSay('Você não pode conversar comigo sem fazer a quest')[/b] Mensagem que irá aparecer se o player não tiver feito a quest Pronto, estou acabando meu tutorial por aqui, espero ter ajudado as pessoas a fazerem seu server com mais RPG do que o normal.[/b] Compartilhar este post Link para o post Compartilhar em outros sites
Magus 2 #2 Postado 9 Agosto, 2007 Aprovado. Abraços, Magus. Compartilhar este post Link para o post Compartilhar em outros sites
matheusrp 0 #3 Postado 9 Agosto, 2007 Tutorial bom ....xD mais tipu....to com uma duvida sera que eu posso coloca o npc pra vende bp de mana fluid se você pude ajuda eu gradeço muito Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
LuNaTiC 0 #4 Postado 9 Agosto, 2007 @matheusrp Tem como assim, apenas adicione mais coisas ao doPlayerAddItem, vou mostrar um exemplo a baixo com o script de bp of mf, se no seu server não possuir o comando buyContainer(cid,2003,2006,7,2000), não será possivel por compra nos NPC: elseif talk_state == 1 thenif msgcontains(msg, 'yes') then itemstatus = doPlayerRemoveItem(cid,2152,10) if itemstatus == 0 then selfSay('Sorry, you don't have money.') else buyContainer(cid,2003,2006,7,2000) selfSay('Here are you.') end end talk_state = 0[/b] No caso dei um exemplo de uma confirmação: Item que irá remover, no caso, 1k Item que irá adicionar, no caso, 1 bp de mf Espero ter ajudado Compartilhar este post Link para o post Compartilhar em outros sites
matheusrp 0 #5 Postado 10 Agosto, 2007 Valeu cara você me ajudo muito ^^ Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
LOkaumz 0 #6 Postado 10 Agosto, 2007 Ae meu!! vlw!!! D fazia tempo q eu tava tentando acha um tuto assim... vlw mesmo )) Compartilhar este post Link para o post Compartilhar em outros sites
Griloh 0 #7 Postado 10 Agosto, 2007 Muito bom, tutorial explciadinho. Parabéns! Compartilhar este post Link para o post Compartilhar em outros sites
joaopedro07 0 #8 Postado 10 Agosto, 2007 Ta de parabens xD Compartilhar este post Link para o post Compartilhar em outros sites
Arch 0 #9 Postado 18 Agosto, 2007 otimo perfeito na vdd tudo oq eu precisava jah tinha pensado num npc assim mas fazer era outra coisa neh ateh pq nao sou scripter entao eh [Palavrão Censurado]a vlws ajudo pakas ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Hug 0 #10 Postado 1 Setembro, 2007 muito bom brother comprei jah uns 2 npc ki vi agora aqui e eh moh facil de fazer xD parabéns pelo topico Compartilhar este post Link para o post Compartilhar em outros sites
Convidado Sir of fanton #11 Postado 1 Setembro, 2007 boum parabens agora as qest serao mais divertidas Compartilhar este post Link para o post Compartilhar em outros sites
zerazy 0 #12 Postado 17 Abril, 2008 Estava precisandu desse npc... Aprovado Compartilhar este post Link para o post Compartilhar em outros sites
Mush 0 #13 Postado 18 Abril, 2008 Bom agora eu consigui intende direitinho apos o tuto Compartilhar este post Link para o post Compartilhar em outros sites