Tutorial Básico Creaturescripts

jhon992
em Tutoriais de Scripting
  • 1
  • 2

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

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) then
3	doPlayerAddItem(cid, 2160, 100)
4	 doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Parabéns, você ganhou 1kk por atingir level 100!")
5	doSendMagicEffect(getCreaturePosition(cid), 30)
6 end

7 return true
8 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. 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 = Manda uma mensagem parabenizando o player.
linha 5 = Solta o efeito de numero 30, na posição em que o player esta.
linha 6 = Finaliza a verificação do if.
linha 7 = Retorna verdadeiro. Obs: sempre é necessario ela linha no final de seu código.
linha 8 = 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

Sempre usar uma lista de funções como apoio: http://www.xtibia.co...sta-de-funcoes/

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

Beeki

Ex-Coordenador XDev
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 12/03/11Posts: 1900Gênero: MasculinoChar no Tibia: Nokte

Ótimo tuto John, porem muito simples mesmo, dava pra explicar mais, valeu aê, até!

Fabio Augustus - Infraestrutura

Skype: guhsvasc

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

Bem simples mesmo, só pra galera iniciante ter o básico de forma simples, sem precisar ler e estudar centenas de linhas. E com o tempo e surgimento de algumas dúvidas eu edito o post.

DuuhCarvalho

:)
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 19/01/12Posts: 988Gênero: MasculinoChar no Tibia: Xerife Woody

Obrigadoo denovo vou te dar mt REP+ so que hj ja cheguei no limite agradeço, (y'

AnneMotta

o choro pode durar uma noite mas a alegria vem pela manha ♪
avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 22/01/12Posts: 842Char no Tibia: Stephan

excelente tutorial e muito simples de se aprender. REP+!

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: RUSHEI B1 DE AWP

owi6giO.png

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

tem mais funções,olhei aqui na source

 

*CREATURESCRIPTS
File: creaturescripts/creaturescripts.xml
Attributes
type
Event type
Values:
login, logout
advance, statschange,
direction, outfit
sendmail, receivemail
traderequest, tradeaccept
joinchannel, leavechannel
look, think, textedit, reportbug
push, target, follow
attack, combat, areacombat, cast
kill, death, preparedeath
Functions:
onLogin(cid)
onLogout(cid)
onAdvance(cid, skill, oldLevel, newLevel)
onStatsChange(cid, attacker, type, combat, value)
onDirection(cid, old, current)
onOutfit(cid, old, current)
onSendMail(cid, receiver, item, openBox)
onReceiveMail(cid, sender, item, openBox)
onTradeRequest(cid, target, item)
onTradeAccept(cid, target, item, targetItem)
onJoinChannel(cid, channel, users)
onLeaveChannel (cid, channel, users)
onLook(cid, thing, position, lookDistance)
onThink(cid, interval)
onTextEdit(cid, item, newText)
onReportBug(cid, comment)
onAreaCombat(cid, tileItem, tilePosition, isAggressive)
onPush(cid, target)
onTarget(cid, target)
onFollow(cid, target)
onCombat(cid, target)
onAttack(cid, target)
onCast(cid, target)
onKill(cid, target, lastHit)
onDeath(cid, corpse, deathList)
onPrepareDeath(cid, deathList)

bossisg.png

Piabeta Kun

Ex-Coordenador de Websites
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 23/12/08Posts: 2403Gênero: MasculinoChar no Tibia: Gordo Warlike

me ajudou bastante ja q eu tinha duvida sobre isso, e tbm ajudara muitos! obrigado por compartilhar!

Daijobu!

 

Gabrielzxzx

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 23/12/11Posts: 158

Bem Legal (8) apesar de eu já mexer lá irá ajudar muitas muitas pessoas.

Obrigado por trazer o conteúdo.

Até!

Turtle-eats-pigeon.gif

alldakie

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 28/07/11Posts: 1223

Muito bom Jhon,

+REP continue assim!

jhon992

Dono JhonBot
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/06/11Posts: 631Char no Tibia: Warrior of Mort

Beeki

Ex-Coordenador XDev
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 12/03/11Posts: 1900Gênero: MasculinoChar no Tibia: Nokte

Tutorial aprovado, reportado para a moderação Mover, abraços.

Fabio Augustus - Infraestrutura

Skype: guhsvasc

marcaodailha

Hellboy
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/03/08Posts: 50Char no Tibia: Cotar

PQP

Até que enfim algo digno de rep+

Tava vendo tanta porcaria por ai mas este teu tópico renova minhas esperanças hehe.

Ótimo tuto, eu que procurava conteúdo atualizado já encontrei.

Obrigado

"Nada é tão ruim que não possa piorar!"

 

Cotar.jpg

 

 

 

getip.gif

HisashiitYamaguti

O Cortiço - Aluísio Azevedo.
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 17/07/11Posts: 705

Tutorial Aprovado e movido para Tutoriais de Scripting.

hisashi.png

 

angeldoido

Maatador
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/11/10Posts: 272Char no Tibia: N tenho

pod se faser asism tbm ...

 

function onAdvance(cid, skill, oldLevel, newLevel)
if getPlayerLevel(cid) >= 100 then
doPlayerAddItem(cid, 2160,2)
doPlayerSendTextMessage(cid,19, "Você será reconhecido por chegar level 100 e ganhará 20k")
doSendMagicEffect(getCreaturePosition(cid), 30)
end
return true
end

 

So que se o player morre e volta ao level anterior, e tornar-se a upa vai receber o item novamente, dai tem que usar storage...

 

function onAdvance(cid, skill, oldLevel, newLevel)
if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 21456) == -1 then
doPlayerAddItem(cid, 2160,2)
setPlayerStorageValue(cid, 21456, 1)
doPlayerSendTextMessage(cid,19, "Você será reconhecido por chegar level 100 e ganhará 20k")
doSendMagicEffect(getCreaturePosition(cid), 30)
end
return true
end

 

ai em cima está com storage, se o player morre, e volta dinovo level 100 n recebera o item pois ja recebeu uma vez ^^

 

Ou tbm pode usar local pra facilitar varias coisa na editação ex: abaixo

 

function onAdvance(cid, skill, oldLevel, newLevel)
local item = 2160
local msg = ("Você será reconhecido por chegar level 100 e ganhará 20k")
if getPlayerLevel(cid) >= 100 and getPlayerStorageValue(cid, 21456) == -1 then
doPlayerAddItem(cid, item, 2)
setPlayerStorageValue(cid, 21456, 1)
doPlayerSendTextMessage(cid,19, msg)
doSendMagicEffect(getCreaturePosition(cid), 30)
end

return true
end

  • 1
  • 2