Ir para conteúdo

Maxzer0

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Maxzer0 deu reputação a xWhiteWolf em (Resolvido)Duvida[TalkState]   
    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
  2. Gostei
    Maxzer0 deu reputação a Caronte em (Resolvido)Duvida[TalkState]   
    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.

Informação Importante

Confirmação de Termo