Ir para conteúdo
  • Cadastre-se

(Resolvido)Duvida[TalkState]


Ir para solução Resolvido por Caronte,

Posts Recomendados

Olá sou novo na area de script nunca mexi com arquivos .lua ou esses tipos de arquivos. eu notei que em varios scripts de npcs do forum tem a funçao

TalkState[TalkUser] = 1

...

end

TalkState[TalkUser] = 1 then

...

TalkState[TalkUser] = 2

...

end

 

Alguem poderia me dizer a função? :s(Procurei em todos os cantos mais n consegui achar)

 

Obrigado  :wow:

Procuro alguem para me ensinar Script :IbMoi:

 

DragonOt (8.6/200x Rate/25x Skill/10x Magic/New Vocations/New Spells/Mapa Edited[RPG]/New Monsters and Quests) -- Em Andamento   :wow: 

 

Contatos:

Skype-- giovani.fogarolli

LoLzin-- Maxzer0

 

Mapping -- Aprendendo  :facepalm: 

Scripter -- Aprendendo  :facepalm: 

 

 

~~Maxzer0~~

Link para o post
Compartilhar em outros sites
  • Solução

O TalkState é para localizar o cid na conversa.

Exemplo: Cid = 375727583 (número aleatório de um player qualquer)

Ele armazena na tabela TalkState o cid, para identificar em que assunto o cid está, através de umas funções.

Se eu não me engano, existe uma coisa assim

TalkUser = cid. -- logo você pode usar cid direto como o índice do TalkState.

Nesse caso a tabela fica se mudando de acordo com o que o player fala para o NPC.

TalkState = { 1 = [375727583] } -- ao falar hi

TalkState = { 2 = [375727583] } -- ao falar travel, o elemento do talkstate fica como 2, no índice com número do cid

Isso é o que determina uma fala como "yes" ser diferente da mesma fala "yes" do player, o npc executa o "yes" de acordo com o TalkState, que deve ser configurado de acordo com a lógica que o npc foi programado para fazer.

Exemplo:

Npc disse: Quer 100 golds, yes or no?

Npc disse: Essa rope é 100 golds, yes or no?

Esse npc pode ser o mesmo, porém o caminho que o player precisa usar tem que ser diferente para não quebrar a lógica.

Eu estou escrevendo pelo celular, espero que esteja claro.

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Não é uma função..

no começo do script vc declarou isso daqui:

local talkState = {}

Nisso vc criou um vetor/array/tabela de N elementos não definidos, ou seja, uma tabela vazia.
provavelmente vc tb terá essa linha declarada no seu script:

local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid

Nela nós verificamos se o NPCHANDLER_CONVbehavior é igual a CONVERSATION_DEFAULT, ou seja, se a "pessoa" que o NPC está conversando é a "pessoa" padrão, em outras palavras, verifica se o npc não está falando com ninguém. Os valores serem iguais implica que ele não está falando com ngm, logo a variavel talkUser apresenta valor 0, do contrário ele apresenta o valor do uid do jogador que está falando (o cid).

Quando fazemos um TalkState[talkUser] estamos na verdade apontando pra um local da memória desse vetor e dizendo seu valor, pra poder controlar em que ponto da conversa com o player o npc está.

Fica meio complicado te explicar isso tudo sem vc ter uma base computacional, mas vou me esforçar:
Imagina que seu pc tem diversos 0's na memória.
00000000000000000000000000000000000000000000000000000000000

Daí você extrai o cid de um player e ele vai retornar o uid do player, que é um numero um tanto quanto grande. Pra efeitos de exemplo eu vou supor que o uid é um numero entre 0 a 20. Digamos então que meu cid pro exemplo seja 14, logo eu estou dizendo que a partir de agora o talkUser é 14.
Ao fazer TalkState[14] eu estou modificando essa parte da memória (os zeros) e editando o décimo quarto 0 dela pra um novo valor.

TalkState[14] = 3 e nossa memória se torna isso:
00000000000000300000000000000000000000000000000000000000000

E aí podemos verificar em qualquer parte do script do npc em que ponto da conversa estamos com base nisso e dar respostas diferentes pra cada texto que o player diz. Isso pode soar bem estúpido mas se torna muito útil quando temos diversas opções com yes/no. Quando o NPC captar o yes/no, oque ele vai responder? Não dá pra ter uma resposta padrão pra todas as opções que incluem o yes/no então nós usamos o TalkState pra haver essa diferenciação. Espero ter ajudado

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Vlwz deu pra entender  :D ( os 2 ajudaram <3)

REP+ 

Procuro alguem para me ensinar Script :IbMoi:

 

DragonOt (8.6/200x Rate/25x Skill/10x Magic/New Vocations/New Spells/Mapa Edited[RPG]/New Monsters and Quests) -- Em Andamento   :wow: 

 

Contatos:

Skype-- giovani.fogarolli

LoLzin-- Maxzer0

 

Mapping -- Aprendendo  :facepalm: 

Scripter -- Aprendendo  :facepalm: 

 

 

~~Maxzer0~~

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo