maxmachado 1 Postado Junho 28, 2006 Share Postado Junho 28, 2006 Tutorial de NPCs! Conhecendo a verdadeira origem dos NPCs! Índice: Explicaremos: focus talk_start following atacking Variáveis Variáveis que indicam a conversa Storage Value em NPCs Algumas funções focus O focus está presente em vários lugares do NPC: No início: focus = 0 Nas conversas: if msgcontains(msg, 'spear') and focus == cid then Na função de andar: if focus == 0 then O focus indica quando estamos(ou se estamos) interagindo com o NPC. focus = 0 Quando o focus for 0 quer dizer que não estamos interagindo com o NPC. focus = cid Quando o focus for cid quer dizer que estamos interagindo com o NPC. Quer um exemplo? Dêem uma olhada no início de conversa de algum NPC(hi). if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 then selfSay('Welcome to the finest weaponshop in the land, ' .. creatureGetName(cid) .. '!') focus = cid talk_start = os.clock() end O if(olhar tutorial "Explicando os 'if's") está indicando que se o player falar hi e o focus for 0(não está falando com ninguem) o NPC fará as seguintes funções acimas inclusive transformar o focus em cid(indica que está falando com alguem). talk_start O talk_start também está presente em várias partes do NPC. Vejam o exemplo lá em cima(explicando o focus) talk_start = os.clock() Ele também está presente em todas as funções de conversa. if msgcontains(msg, 'offers') and focus == cid then selfSay('My offers are weapons, only.') talk_start = os.clock() end O talk_start indica se estamos conversando com o NPC. Então quando o player diz "hi" e o focus for 0, o NPC transforma o talk_start em os.clock E quando o player diz "bye" e o focus for cid, o NPC transforma o talk_start em 0. (Mas se o talk_start é 0, como vou falar "hi" com o NPC?) Simples. É que quando o player fala "hi" há uma excessão. Perceba no início de interação com o NPC(hi) if ((string.find(msg, '(%a*)hi(%a*)')) Quando há esse string.find quer dizer que o NPC responderá independentemente do talk_start. Quando o talk_start for os.clock geralmente usa-se o: if msgcontains(msg, 'mensagem dã') Following Você geralmente só encontra o "following" no início do script. following = false O following indica se o NPC vai seguir o player que está falando com ele(focus = cid). Atacking Você geralmente só encontra o "atacking" no início do script. atacking = false O atacking indica se o NPC vai atacar o player que está falando com ele(focus = cid). Variáveis Todo mundo já ouviu falar em variáveis na matemática(suponho) que geralmente são a ##### dos x e y. Cada uma das letras indica um número, pois com os NPCs é semelhante ou quase igual. As variáveis geralmente indicam funções. Vamos pegar um exemplo de variável: randmove = math.random(1,20) A variável é o randmove que significa math.random(1,20)(sortiar um número de 1 a 20). Então toda vez que aparecer a palavra randmove(variável) no script, o NPC irá sortiar um número de 1 a 20. As variáveis não servem só para indicar funções, também servem para indicar números e palavras. Exemplo: if msgcontains(msg, 'carlin sword') and focus == cid then item = 2395 price = 473 selfSay('Do you want to buy one of the excellent carlin swords for ' .. price .. ' gold?') talk_start = os.clock() end if string.find(msg, '(%a*)yes(%a*)') and focus == cid then buy(cid,item,1,price) talk_star = os.clock() end Viu as variáveis aparecendo aí como números? ^^ Obs.: Para usar as variáveis de números/palavras em falas do NPC você tem que fazer assim: SelfSay(' ' .. variável .. ' ') Variáveis que indicam conversa Variáveis vocês já sabem o que são, então. Vamos aprender a usar as variáveis que indicam a conversa. Geralmente as variáveis de conversa são denominadas: talk_count, talk_state, settalk Claro, não é obrigatório possuir esses nomes. Então vamos a um exemplo: if msgcontains(msg, 'crystal') and focus == cid then talkset = 1 selfSay('Do you want to change 100 platinum coins for 1 crystal coin?') talk_start = os.clock() end if talkset == 1 then if msgcontains(msg, 'yes') and focus == cid then talkset = 0 itemstatus = sell(cid,2148,100,0) if itemstatus == -1 then selfSay('You don\'t have enough money!') else buy(cid,2152,1,0) talk_start = os.clock() end end end Quando o player falar "crystal" o NPC vai indicar que o talkset é 1. O if embaixo(ler tutorial "Explicando os 'if's") indica que se o talkset for 1 e a fala do player for yes o NPC fará as seguintes funções. Obs.: Lembrem, mais 1 "if", mais um "end". Storage Value em NPCs Muita gente conhece o Storage Value de actions para quests, eles indicam dentro do script do player se ele já fez a quest com o Storage Value determinado. Nos NPCs é semelhante, ou melhor, igual. Um exemplo: if msgcontains(msg, 'quest') and focus == cid then queststatus = getPlayerStorageValue(cid,1234) if queststatus == -1 then buy(cid,1452,1,0) setPlayerStorageValue(cid,1234,1) else selfSay('Você já fez a quest') talk_start = os.clock() end end (se você ainda não leu a ##### do tutorial "Explicando os 'if's", sugiro ler agora) queststatus é uma variável que determina a função de verificar o Storage Value no player. Então essa funçao significa que se o player não tiver feito a quest(queststatus == -1) o NPC fará as seguintes funções e se o player já tiver feito a quest o NPC falará "Você já fez a quest". Algumas funções Ao decorrer do tópico eu expliquei algumas funções, então esse sub-título era desnecessário ^^. Creditos: - maxmachado - Luis Furioso Abraços. Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/ Compartilhar em outros sites More sharing options...
velokit 0 Postado Dezembro 4, 2006 Share Postado Dezembro 4, 2006 Bom tuto explica o que fala nos scripts dos NPC Variaveis de conversa focus eh bem util 1º -------------------------------------------------------------------- ninguêm manda na minha vida Sou Npc maker[/color] Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-188189 Compartilhar em outros sites More sharing options...
Hyuuga Cyrex~ 0 Postado Dezembro 4, 2006 Share Postado Dezembro 4, 2006 Belo tutorial, muito util. ;] Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-188249 Compartilhar em outros sites More sharing options...
Jvchequer 63 Postado Junho 6, 2007 Share Postado Junho 6, 2007 Olá Xtibiano, Parabéns, seu tutorial foi aprovado. Estarei movendo ele para a área de tutoriais. Obrigado por trazer conteúdo para o Xtibia.com e espero que continue com o ótimo trabalho. Atenciosamente, JV Chequer *Diretor Xtibia.com* Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-312678 Compartilhar em outros sites More sharing options...
frankli 0 Postado Junho 9, 2007 Share Postado Junho 9, 2007 CAra nao entendi muito nao masi ta otimo so me explica uam coisa meu npc ele repsonde muito rapido tpw eu falo hi e ele respondi ta eu falo o nome do iten ele nao vendi e dai depois eu fali hi ele fala tudo di novo mais as veses da de crompa pq tpw so o meu npc q eu adicionei os npcs do serve de começo nao dao esse bug oqq eu faço?? Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-314267 Compartilhar em outros sites More sharing options...
Zutun 58 Postado Junho 9, 2007 Share Postado Junho 9, 2007 Nossa Max,Ótimo tuto. Está de parabéns. ;P Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-314611 Compartilhar em outros sites More sharing options...
Dark Lost 2 Postado Junho 23, 2007 Share Postado Junho 23, 2007 Otimo Tutorial Parabens Abraço Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-323109 Compartilhar em outros sites More sharing options...
cartajenaa 0 Postado Junho 23, 2007 Share Postado Junho 23, 2007 Boa explicaçao fala sobre cada comando =D Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-323248 Compartilhar em outros sites More sharing options...
Brunou 0 Postado Julho 13, 2007 Share Postado Julho 13, 2007 Otimo tuto vlw Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-338525 Compartilhar em outros sites More sharing options...
tenganzinho 0 Postado Julho 14, 2007 Share Postado Julho 14, 2007 Ei vceis q entende de npc... meu ot não esta abrindo os npcs... para melhor explicaçao pls leiam http://www.xtibia.com/forum/index.php?showtopic=56142 espero q ajudem... Link para o comentário https://xtibia.com/forum/topic/20445-tutorial-de-npcs/#findComment-339954 Compartilhar em outros sites More sharing options...
Posts Recomendados