[Tutorial] Básico Sobre CreatureScripts

JuniorPavani

Exilado
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/02/14Posts: 20

Tutorial Básico sobre CreatureScripts

CreatureScripts = São scripts que serão ativados após uma determinada ação criada pelo monstro ou personagem. Essas ações são determinadas como funções. Existem varias funções utilizadas para a criação de creaturescripts e estas são:


onDeath(cid, corpse, killer)-- que é executada ao morrer.
onPrepareDeath(cid, lastHitKiller, mostDamageKiller) -- semelhante a onDeath.
onAttack(cid, target) -- executa ao atacar.
onCombat(cid, target) -- semelhante ao onAttack.
onLogin(cid) -- executa ao logar.
onLook(cid, thing, position, lookDistance) -- executa ao dar look.
onAdvance(cid, skill, oldLevel, newLevel) -- executa ao upar skills/levels.
onStatsChange(cid, attacker, type, combat, value) -- executa ao perder ou ganhar life/mana/condições.
onLogout(cid) -- executa ao deslogar.
onKill(cid, target, lastHit) -- executa ao matar.
onThink(cid, interval) -- executa em determinado tempo.
onJoinChannel(cid, channelId, users) -- executa ao entrar em um chat.
onReceiveMail(cid, sender, item, openBox) -- executa ao receber um parcel/carta.
onReportBug(cid, comment) -- executa ao reportar bug.

Para criar esse tipo de script, primeiramente vai na pasta data/creaturescripts/scripts e duplica um arquivo e salve com "nomedesejado";
Agora você vai determinar que função você vai precisar para criação do seu script. Para exemplo vou usar a função "onAdvance"(ao upar).
Neste exemplo, quando o player upar level 100 ele irá ganhar 1kk:

1 function onAdvance(cid, skill, oldLevel, newLevel)
   
2 if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then -- checa level e storage
3      doPlayerAddItem(cid, 2160, 100) -- entraga a premiação
4       setPlayerStorageValue(cid, 1234, 1) -- define a storage para 1, para evitar entregar o premio mais de uma vez
5       doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
6       doSendMagicEffect(getCreaturePosition(cid), 30) 
7   end
8   return true
9 end

Numerei as linhas para melhor entendimento, nos seus scripts vocês não devem numerar.

linha 1 = Inicio da função onAdvance, essa linha recebe algumas informações do player que upou, como seu cid, seus skills o velho level e o novo level. Obs: cid = creature id, numero de identificação do player/monstro.
linha 2 = Inicia-se um if onde verifica se o level do player é igual a 100 e verifica a storage do player . Se for verdadeiro, o script executa as linhas 3,4 e 5, senão pula direto a linha 6.
linha 3 = Adiciona 100 itens com o id 2160 ao player.
linha 4 = define a storage do player para que não pegue o premio duas vezes
linha 5 = Manda uma mensagem parabenizando o player
linha 6 = Solta o efeito de numero 30, na posição em que o player esta.
linha 7 = Finaliza a verificação do if.
linha 8 = Retorna verdadeiro. Obs: sempre é necessario ela linha no final de seu código. 
linha 9 = Finaliza a função onAdvance.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Por fim para funcionamento do seu script é necessario adicionar 2 tags:
1º- No "data/creaturescripts/creaturescripts.xml"
2º- No arquivo "data/creaturescripts/scripts/login.lua", Obs: se o script que você for fazer for de função onLogin, não precisa adicionar a segunda tag.

1º Tag: Vai em data/creaturescripts/creaturescripts.xml e cole a tag:

<event type="advance" name="QualquerNome" event="script" value="nomedesejado.lua"/> 

O type="" , será o nome da função de seu script após a palavra "on" e sempre tudo em minusculo.
O name="", use qualquer nome porem esse nome vai ser usado para registrar no script onLogin na tag2.
O value="", é o nome com qual você salvou seu script.

Agora em data/creaturescripts/scripts/login.lua, sempre antes do último return true:


registerCreatureEvent(cid, "QualquerNome") 

QualquerNome é o name que você adicionou na tag1 do creaturescripts.xml.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Acho que é isso aew, espero ter ajudado a galera que esta iniciando.smile_positivo.gif

Dica para criação de scripts:
Para melhor edição e organização use Notepad++: http://www.baixaki.c...ad/notepad-.htm

E sempre pesquise por scripts prontos e tutoriais para ter uma base.


CREDITOS:

 

JHON pelo tutorial completo!

Te ajudei?? REP + e ficamos quites...  happyy.png

Atenciosamente,

 

Junior.
 

 

 

gifs-tumblr-01.gif      

 

Veja meus trabalhos

 

Change name in Game 3.0

!Rank Personalizado

Fishing System PXG

[Tutorial] Básico sobre Lua

[Tutorial] Básico sobre CreatureScripts

Callbacks

 

 

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

Olha amigo, apenas dê uma incrementada em seu script, para que fique algo simples e funcional.

Exemplo:
Linha 2: if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then
Adionado a opção >=, pois eu ot com exp alta, o player pode pular do level 99 para o 101 por exemplo e também uma checagem por storage para verificar se ele já pegou a premiação, para evitar que ele fique se matando e pegando várias vezes a premiação

E por fim, colocando uma linha para atribuir o valor da storage caso ele pegue a recompensa.
setPlayerStorageValue(cid, 1234, 1)

Ficando assim o resultado:

function onAdvance(cid, skill, oldLevel, newLevel)
	if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then -- checa level e storage
		doPlayerAddItem(cid, 2160, 100) -- entraga a premiação
		setPlayerStorageValue(cid, 1234, 1) -- define a storage para 1, para evitar entregar o premio mais de uma vez
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
		doSendMagicEffect(getCreaturePosition(cid), 30)
	end
	return true
end

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

JuniorPavani

Exilado
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/02/14Posts: 20

 

Olha amigo, apenas dê uma incrementada em seu script, para que fique algo simples e funcional.

 

Exemplo:

Linha 2: if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then

Adionado a opção >=, pois eu ot com exp alta, o player pode pular do level 99 para o 101 por exemplo e também uma checagem por storage para verificar se ele já pegou a premiação, para evitar que ele fique se matando e pegando várias vezes a premiação

 

E por fim, colocando uma linha para atribuir o valor da storage caso ele pegue a recompensa.

setPlayerStorageValue(cid, 1234, 1)

 

Ficando assim o resultado:

function onAdvance(cid, skill, oldLevel, newLevel)
	if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 1234) < 1 then -- checa level e storage
		doPlayerAddItem(cid, 2160, 100) -- entraga a premiação
		setPlayerStorageValue(cid, 1234, 1) -- define a storage para 1, para evitar entregar o premio mais de uma vez
		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
		doSendMagicEffect(getCreaturePosition(cid), 30)
	end
	return true
end

Obrigado! topico Editado. grato pela ajuda.

Te ajudei?? REP + e ficamos quites...  happyy.png

Atenciosamente,

 

Junior.
 

 

 

gifs-tumblr-01.gif      

 

Veja meus trabalhos

 

Change name in Game 3.0

!Rank Personalizado

Fishing System PXG

[Tutorial] Básico sobre Lua

[Tutorial] Básico sobre CreatureScripts

Callbacks

 

 

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

Tutorial aprovado e movido, obrigado por compartilhar conosco.

Sugiro que apenas revise o comentário da linha 2, pois além de checar o level, ele checa a storage também.

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

JuniorPavani

Exilado
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/02/14Posts: 20

Tutorial aprovado e movido, obrigado por compartilhar conosco.

Sugiro que apenas revise o comentário da linha 2, pois além de checar o level, ele checa a storage também.

Ok obrigado irei alterar o tutorial, muito obrigado pelas dicas :D

Te ajudei?? REP + e ficamos quites...  happyy.png

Atenciosamente,

 

Junior.
 

 

 

gifs-tumblr-01.gif      

 

Veja meus trabalhos

 

Change name in Game 3.0

!Rank Personalizado

Fishing System PXG

[Tutorial] Básico sobre Lua

[Tutorial] Básico sobre CreatureScripts

Callbacks

 

 

Bruno

Ousadia e Alegria
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 01/05/08Posts: 2571Gênero: Masculino

Ok obrigado irei alterar o tutorial, muito obrigado pelas dicas :D

Magina man :) disponha! Estamos aqui para isso!

Atenciosamente,
Bruno Minervino

 

Tibia Clients - Downloads Window

duasrodas

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/01/12Posts: 90

Otimo tutorial,para mim mesmo que estou começando a aprender,ajuda bastante,obrigado pelo conteúdo! reputado!

JuniorPavani

Exilado
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/02/14Posts: 20

Otimo tutorial,para mim mesmo que estou começando a aprender,ajuda bastante,obrigado pelo conteúdo! reputado!

Muito obrigado pelo Rep :D logo logo trarei mais alguns tutoriais para o Xtibia :D

Te ajudei?? REP + e ficamos quites...  happyy.png

Atenciosamente,

 

Junior.
 

 

 

gifs-tumblr-01.gif      

 

Veja meus trabalhos

 

Change name in Game 3.0

!Rank Personalizado

Fishing System PXG

[Tutorial] Básico sobre Lua

[Tutorial] Básico sobre CreatureScripts

Callbacks

 

 

Mudrock

Eternal Liers
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 24/12/09Posts: 1002Gênero: MasculinoChar no Tibia: Necromanser

Muito bom cara, espero que tragam mais conteúdos de qualidade

abraços

Antenciosamente, Mudrock

Mensagens privadas somente sobre outros assuntos!

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 
 

tumblr_ntxzlfQp3v1uyo57xo8_500.gif (500×225)

 

MudrockAprova#

- EkzGuard

 

JonatasLucasf

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/07/13Posts: 780Gênero: MasculinoChar no Tibia: aguarde...

nossa obrigado mano já até já adicionei aos favorito, espero mais conteúdos happy.png

to that change by a person who does not care about you?

RetornoDeLaug

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/04/15Posts: 79

Ótimo conteúdo, espero que ajude muitos membros com seus servidores! Parabéns! button_ok.png

0lpvyns.png

25h0gaf.png

Administrador

xTibia 2017
avatar
Administrador
Administrador

INFOS

Grupo: AdministradorRegistrado: 09/07/05Posts: 5780Gênero: Outro

Belo tutorial, ajudará muitos iniciantes!

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

 

 

miguel porto

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/04/15Posts: 1

Vc e zica :)