Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Introdução:

Primeiramente, vou explicar, a forma em que eu comecei aprender a criar npcs mais complexos, e digo uma coisa.. sozinho se você reparar bem nos detalhes, creio eu que você pode criar coisas impressionantes, utilizando da sua criatividade. Então, ando tentando me virar sozinho, sempre. Por isso, caso ajam functions que não precisam ser postas, quero que alguém que saiba mais que eu corrija-me por favor!

O começo:

Cansado, de não ser respondido, em um outro fórum, que hoje em dia já abandonei, eu fui atrás, de uma forma independente. Baixei vários Otservers, e comecei a prestar atenção em casa function declarada, cada situação. E como já estudei um pouco de PHP, e Javascript, tinha uma base da tal programação, que por fim é muito diferente, mas como toda programação, tem suas semelhanças.

Então, primeiramente, notei no começo dos Scripts tais codes:


local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)


NpcSystem.parseParameters(npcHandler)


local talkState = {}

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 creatureSayCallback(cid, type, msg)


		 if(not npcHandler:isFocused(cid)) then

				return false

			   end


local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

Certo, então como isso é um tutorial, eu acabei de lhe ensinar a primeira parte do script em si. Logo após, eu comecei a prestar muita atenção nos "do" que é o que "faz" uma ação. Então vou passar a vocês alguns "do" que eu lembro.

doPlayerSetVocation(cid,iddavocation) // Adiciona uma vocação no player

doPlayerAddItem(cid,iddoitem) // Adiciona um item no player

doPlayerSetStorageValue(cid,storage,partedaquest) //Adiciona um storage ao player

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,'message') //Manda uma mensagem em cor laranja no default

doPlayerAddExperience(cid,experience) // Adiciona Experiência ao player

playerLearnInstantSpell(cid, 'Nome da spell') // Não é "do" mas ensina a fazer uma magia

doTeleportThing(cid,{x=xpostion,y=ypostion,z=zpostion}) //Teleporta o Player a um certo "local".

http://tibiaking.com...de-funcoes-lua/ Uma lista de funções! Essas foram quais eu lembrei agora, devo ter esquecido MUITAS, mas enfim, conforme forem me lembrando, e eu for me lembrando, vou adicionando ao Tutorial. Ok, depois disso aprendi que um SelfSay('Faz a pessoa falar',cid). Com a gloriosa programação, ou com um inglês básico, você vai saber o que é "if" (se, caso..) ,else (senão). Com isso junto, você pode criar um "se player falar". Que se daria com esse código:

if(msgcontains(msg, 'quest')) then

selfSay('Você tem x quests, desejas saber alguma de {suas quests?}',cid)

else

selfSay('Isso não me interessa agora',cid)

Aportugueisando ou Traduzindo pro que você entende:

caso(contenha(mensagem, 'quest')) então

diga('Você tem x quests, desejas saber alguma de {suas quests?}',cid)

senão

diga('Isso não me interessa agora',cid)

Deu pra entender né? Então montando uma estrutura em português.
Códigos essenciais Caso contenha a mensagem 'Jhonatan' o npc dará 100 de experiência, e adicionar um Storage pra ele não pegar +100 de experiência Fecha o código
Isso vai ficar assim:

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)


NpcSystem.parseParameters(npcHandler)


local talkState = {}

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 creatureSayCallback(cid, type, msg)


		 if(not npcHandler:isFocused(cid)) then

				return false

			   end


local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


if(getPlayerStorageValue(cid,9005)==1) then

selfSay('Você já fez essa quest',cid)

else

if(msgcontains(msg, 'Jhonatan') then

selfSay('Olá Jhonatan, obrigado por fazer esse tutorial! Receba 100 de experiência por isso!',cid)

doPlayerAddExperience(cid,100)

doPlayerSetStorageValue(cid,9005,1)

else

selfSay('Seu lugar não é aqui.',cid)

end

end


end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())


if(getPlayerStorageValue(cid,9005)==1)
Isso eu não expliquei ainda, 'get' é igual a 'ter' na programação aqui. Então se ele ter a storage value 9005 == 1 (1 é o que a gente adicionou depois da Storage vejam) então ele vai dizer aquilo, se ele não ter essa storage.. ele vai continuar o código.
end

end


end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Tudo que se abre, se fecha, a cada 'If' dito, é um 'end' que tem que ser dado.

E aquilo ali no final, sempre vai no final!

Bom por enquanto é isso, vou ver se lembro mais alguma coisa pra por aqui.. Qualquer dúvida, só falar..

Se você gostou, olha, é algo que vai melhorar MUITO seu OT! Então, se puder dar +REP, eu gostaria muito!

Abraços!

Editado por JhonatanCWest (veja o histórico de edições)

  • Respostas 11
  • Visualizações 2.3k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • JhonatanCWest
    JhonatanCWest

    Introdução: Primeiramente, vou explicar, a forma em que eu comecei aprender a criar npcs mais complexos, e digo uma coisa.. sozinho se você reparar bem nos detalhes, creio eu que você pode

  • Opa, dei uma olhada no tutorial que você fez. Bem legal, vou ler melhor e qualquer coisa eu edito o post ou comento novamente. Parabéns, Reputado + ! -= PlayerLearnInstantSpell É

Postado

Opa, dei uma olhada no tutorial que você fez.

Bem legal, vou ler melhor e qualquer coisa eu edito o post ou comento novamente.

Parabéns, Reputado + !

-=

PlayerLearnInstantSpell

É

doPlayerLearnInstantSpell tem do sim :>

Editado por skydangerous (veja o histórico de edições)

Postado
  • Autor

Valeu, vou colocar esse link no tópico, porque nem eu sei todas essas funções!

Renato, cada vez melhor esse fórum em, parabéns a todos que estão admnistrando!

Respostas rápidas, e sempre com algo a dizer haha! Abraço a vocês!

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo