Tutorial De Action

Brabo
Por Brabo
em Tutoriais de Scripting
  • 1
  • 2

Brabo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/05/06Posts: 31

espero que ajude

 

Tutorial de ActionsO que é "actions"?Actions é o nome da pasta onde podemos controlar certas opções do server sem precisar compilar, utilizando arquivos .xml e .lua.Pra que que serve aquela pasta "scripts"?É onde os comandos em si estão. A pasta é como a de spells, é necessário um arquivo .xml que diga quando abrir que comandos. No caso, o arquivo que vai carregar os outros é o actions.xml, que pode ser configurado no config.lua. ali você diz que tipo de comando ele vai carregar quando se usar um item, Por exemplo:<action itemid="1429" script="signs.lua" />isso significa que quando alguem der USE em um item de id 1429, ele vai carregar o arquivo signs.lua.Acho que não tem muito o que explicar aqui.O que eu posso fazer mudando essa pasta?É dificil dizer. Muitos servers tem comandos desconhecidos, como por exemplo o "doPlayerFeed" que "alimenta" o player.Mas como esses arquivos funcionam?Eles são muito parecidos com qualquer outro lua de spells ou de npcs. Você usa uma sequência de comandos dizendo o que fazer em certas situações. Exemplo: quebrar aquele porquinho quando se dá "use" nele, ou fazer aquela animação de música em certos objetos. Um exemplo de arquivo:
--Example Food--MAX_FOOD = 300function onUse(cid, item, frompos, item2, topos)	-- Get food value depending on item.itemid	food = 60	if (getPlayerFood(cid) + food > MAX_FOOD) then  doPlayerSendCancel(cid,"You are full.")  return 1	end	doPlayerFeed(cid,food)	doRemoveItem(item.uid,1)	return 1end


com esse comando na sua pasta e algumas outras configuraçõeszinhas o player irá recuperar vida quando comer. Mas lembre-se que o server precisa ter suporte para isso.

Aqui estão os principais comandos que você pode usar:



if (qualquercoisa) == (qualquercoisa) thenend


esse comando é o famoso "se". no caso, se Qualquercoisa for igual a qualquercoisa intão ele executará os comandos que estiverem na linha abaixo. ao final dos comandos bote sempre END



doPlayerSendCancel(cid,"You are full.")


esse comando enviará uma mensagem de cancelamento (aquela branquinha em cima do default que aparece, como o "Not There" ou "impossible"). no caso "cid" é o nome do player que receberá a mensagem e "You are full" é a mensagem.



doRemoveItem(1237,1)


remove o item 1 unidade do item 1237.



doTransformItem(1211,1210)


esse comando transforma o item 1211 pelo item 1210.



doPlayerSendTextMessage(cid,26,"You read the sign. It says: Cemitery")


no caso é um comando de sign. cid é o nome do player que irá receber a mensagem, 26 acho que é a cor e "You read the sign. It says: Cemitery" é a frase que irá aparecer no meio da tela. No caso vai aparecer em verde.



doPlayerAddItem(cid,2677,5)


adiciona o 5 unidades do item 2677 ao jogador cid.



doTeleportThing(cid,npos)


teleporta o player cid ah posição npos. precisa de uns comandos a mais que eu não sei explicar muito bem.

Mas lembre-se: sempre que criar um novo arquivo .lua nessa pasta, adicione o id do item que vai acioná-lo no actions.xml.

eexemplo geral:

com esse arquivo, toda vez que algum player usar um crowbar em uma porta com fechadura, ela se transformará em uma porta normal, que qualquer um pode abrir, e o crowbar desaparecerá! Então vamos começar:

1º: Crie um arquivo com extensção "lua" com o nome de "crowbar" (sem as aspas)

2º: Dentro dele escreva



--Crowbar by BoppreH--function onUse(cid, item, frompos, item2, topos)	if item2.itemid == 0 then  return 0	end		if item2.itemid == 1219 then  doTransformItem(item2.uid,1210)  doRemoveItem(2416,1)	elseif item2.itemid == 1221 then  doTransformItem(item2.uid,1213)  doRemoveItem(2416,1)	else  return 0	end	return 1end


3º: Agora abra o arquivo actions.xml e dentro dele adicione esta linha mais ou menos na metade:

<action itemid="2416" script="crowbar.lua" />

4º: PRONTO!!! Novo comando feito!

bem, acho que é isso. se alguem souber explicar mais alguns comandos ou quiser que eu corrija algo, poste aqui que eu edito esse topico.

e se eu ver que vocês estão bem comportados eu posto os actions que eu fiz (Ultra Fishing System, Wheat System, Crowbar (jah postei), e o sistema para "limpar" peixe)

e lembre-se: são esses detalhesinhos que deixam o server mais legal =)

depois dos elogios me empenhei e adicionei alguns novos comandos. confiram:

 

aqui está o comando para fazer alavanca tipow a aniquileitor. vc dah use nela, ela troca de lado e te teleporta.1º: Crie um arquivo chamado alavancaa.lua (2 "a"s no final mesmo)2º: dentro do arquivo escreva:--alavanca by Brabo--function onUse(cid, item, frompos, item2, topos)	npos = {x=frompos.x, y=frompos.y, z=frompos.z}	alpos = {x=frompos.x, y=frompos.y, z=frompos.z}	if alpos.x== (posição da alavanca x) and alpos.y== (posição da alavanca y) and alpos.z== (posição da alavanca z) then  doTransformItem(item2.uid,1946)  npos.y = (destino y)  npos.z = (destino z)  npos.x = (destino x)  doTeleportThing(cid,npos)	else  return 0	end	return 1end3º:crie um arquivo chamado alavancab.lua4º: dentro do arquivo escreva:--alavanca by Brabo--function onUse(cid, item, frompos, item2, topos)	npos = {x=frompos.x, y=frompos.y, z=frompos.z}	alpos = {x=frompos.x, y=frompos.y, z=frompos.z}	if alpos.x== (posição da alavanca x) and alpos.y== (posição da alavanca y) and alpos.z== (posição da alavanca z) then  doTransformItem(item2.uid,1945)  npos.y = (destino y)  npos.z = (destino z)  npos.x = (destino x)   doTeleportThing(cid,npos)	else  return 0	end	return 1end5º: no actions.xml adicione estas 2 linhas: <action itemid="2945" script="alavancaa.lua" /><action itemid="2946" script="alavancab.lua" />OBS: naum esqueça de preencher os campos ali dos .lua, como (posição da alavanca x) e (destino x), sendo que posição da alavanca é a coordenada que ela tah e destino eh pra onde o player vai ser teleportado.espero que ajuda

 

 

doSummonCreature("Demon", {x=243, y=205, z=7})

 

esse codigo e bem simples. sumona um monstro (no caso o Demon) na posição 243/205/7. simples não? estou trabalhando em um sistema para desenterrar items e monstros, o mesmo que tem em ank no tibia original.

+ 2 novos codes!!!

 

getPlayerAccess(cid)

 

analisa o acesso do player. lembrando que acesso é o que diferencia um noobzinho de um God.

 

setPlayerAccess(cid,1)

 

define o acesso do player. se voce fizer uma action que no meio tenha setplayeraccess(cid,3) transformarah o jogador alvo em um GM.

Todas as funções:

 

//registra a food(uid)"getPlayerFood"//registra a vida(uid) "getPlayerHealth"//registra a Mana(uid)"getPlayerMana"//registra o Level(uid)"getPlayerLevel"//registra o MagLevel(uid)"getPlayerMagLevel"//registra o Name(uid) "getPlayerName"//registra o Access(uid) "getPlayerAccess"//registra a Posição do player(uid)"getPlayerPosition"//registra o Skill do player(uid,skillid)"getPlayerSkill"//registra o StorageValue , q é uma marca no player.xml para fazer questes ,(uid,valueid)"getPlayerStorageValue";//muda o StorageValue para ver se o player ja fes tal quest etc...(uid,valueid, newvalue)"setPlayerStorageValue"//registra o PZ de um tile(pos) 1 eh pz. 0 n eh pz."getTilePzInfo" //registra informação RW , leitura de itens(uid)"getItemRWInfo"//registra tal item de tal posição(pos)"getThingfromPos"//remove item(uid,n)"doRemoveItem"//alimenta o player(uid,food)"doPlayerFeed" //manda uma mensagem tipo sorry not possible(uid,text)"doPlayerSendCancel"//teleporta tal coisa ou player(uid,newpos)"doTeleportThing"//trasforma tal item , usado em portas(uid,toitemid) "doTransformItem"//força o player a dizer algo(uid,text,type)"doPlayerSay"//manda um efeito magico , usado em fishing etc(uid,position,type)"doSendMagicEffect"//muda o tipo do item , exemplo tira uma carga da runa(uid,new_type) "doChangeTypeItem"//seleciona um ActionID , usado em quests(uid,actionid)"doSetItemActionId"//Dis oq um livro ou outros têm escrito(uid,text)"doSetItemText"//muda o nome do item(uid,desc)"doSetItemSpecialDescription"//manda um texto animado(position,text,color)"doSendAnimatedText"//adiciona um skill trie(uid,skillid,n)"doPlayerAddSkillTry"//adiciona vida(uid,health)"doPlayerAddHealth"//adiciona Mana(uid,mana)"doPlayerAddMana"//adiciona item(uid,itemid,count ou type) ."doPlayerAddItem"//manda uma mensagem de texto(uid,MessageClasses,message)"doPlayerSendTextMessage"  //mostra a janela para escrever(uid,maxlen,canWrite) "doShowTextWindow" //decay o item(uid)"doDecayItem"//cria um item(itemid,type or count,position) .só funfa em criar no chaum"doCreateItem"//sumona uma criatura(name, position)"doSummonCreature"

 

Créditos:

BoppreH

Antes de tudo leia as Regras do

frerety

DVNO
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/04/06Posts: 133

HiHo!

hey... good job... ^^

axu q vc cometeu um engano:

...

OBS: esse tipo de arquivo só funciona em servers de protocolo 7.4 pois somente eles possuem esta pasta.

...

^^... todas as versões depois do 7.4 também usam actions... ^^...

Ah... i otra coisa: aki teim algumas coisas interessantes tbm: http://www.xtibia.com/forum/index.php?showtopic=15947

No mais tah bom sim...

FlW

CyA!

It's the hunger; the hunger for an alternative and the refusal to accept a life of unhappiness.


Brabo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/05/06Posts: 31

@frerety

Opa obrigado por falar ali do meu erro. ^^

ja vou arrumar

@todos

Comentem plz! :\

Antes de tudo leia as Regras do

Darkedes

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/05/06Posts: 17

bom...

eu vo posta um com outras funções depois,,,

High

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 05/12/05Posts: 20

Tuto bem bom para quem não sabe usar as funções (não o meu caso, mas não sou profissional ;P) acho que isso ajudará bastante gente

Se você é meu fan, use:
user posted image


Sou fan de:
user posted image
user posted image
user posted image

user posted image

~º^* Presentes *^º~
Rotciv


Metas:
__aprender action(mesmo não sendo profissional) (X)__
__10 posts(X)__
__20 posts(X)__
__50 posts(X)__
__70 posts( )__
__100 posts( )__
Vo atualizando enquanto o tempo passa.

ladenn

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 17/09/05Posts: 34

Mucho rox, eu particulamente gostei.

Xerizezo~

"A diplomat is a person who can tell you how to go to hell in the such that a way actually forward to the trip."

Warlord

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/05Posts: 18

Pra fla verdade .... NAO INTEDI NADA

Warlord

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/10/05Posts: 18

mas tpw, dexa ketu, meo friend me help

Brabo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/05/06Posts: 31

@Warlord

Da proxima vez edita seu post.

Nao faz flood nao ;)

Antes de tudo leia as Regras do

Gellerzin

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 05/11/06Posts: 22

Bom, simples e organizado mais cara..o que eh actions pelo amor de deus neh..o que SAO actionSS se liga na hora de escrever os negocio pq tem uns erros que sao tpw OMG flw

jurotta

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/11/06Posts: 38

ótimo mas n consigo

Kenzo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/10/06Posts: 131Char no Tibia: Kenzo Phoenix

Bem completo muito bom cara.

Continua assim ;)

//Kenzo

Visite a melhor parte do Fórum XTibia! Basta você apenas clicar aqui e deixar sua opinião sobre qualquer um dos assuntos!

Está com dúvidas no Tibia? Quer dicas de como melhorar seu character? Mande uma PM e lhe responderei a medida do possível.

"Tonight
I'm gonna have myself a real good time
I feel alive
And the world is turning inside out
Yeah!
And floating around in ecstasy

So don't stop me now
Don't stop me
'Cause I'm having a good time
I'm having a good time

I'm a shooting star leaping through the sky
Like a tiger defying the laws of gravity
I'm a racing car passing by like Lady Godiva
I'm gonna go go go
There's no stopping me...
"

Dont Stop me Now - McFly

shakadragoon

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/10/06Posts: 5

aewww... finalmente alguem me ajudo

TYYYYYYYYYYYYYYYYYYY

ajudo mtoo msmo

fiz muita coisa rox com oq vi nu seu tuto e oq eu ja sabia

agora meu ot ta rox :p

ty dinovo

floww

Heyrash

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/04/06Posts: 8

Pessoal, actions nada mais eh do que programar, para vcs entenderem direitinho como funciona e como se escreve uma action completa, aconselho começarem a ler mais sobre programaçao, nao soh de ot, mas programação de computadores mesmo, da sim podorão entender direitinho como se funciona essa coisinha simples....

Eu programo programas de verdade em Visual Basic, ajudo tbm nos OTs, portanto tenho alguns sites de programação para os que se enteressarem....

Aconselho para os que nao sabem nada de programação a baixar umas coisas sobre Lógica de programação, aprendido isso dai podem começarem entrando em uma linguagem de programação séria... no caso de Ots usa-se a linguagem LUA.

sites:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

www.apostilando.com - logica de programacao

http://www.codigofonte.net

http://www.vbmania.com.br

http://www.portaldaprogramacao.com

http://www.aprendaemcasa.com.br

Se alguem sentir dificuldade em programar entre em contato:

tiagomanzini_17@hotmail.com

flwss espero ter ajudado...

hamonlorion

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/05/07Posts: 18
Pessoal, actions nada mais eh do que programar, para vcs entenderem direitinho como funciona e como se escreve uma action completa, aconselho começarem a ler mais sobre programaçao, nao soh de ot, mas programação de computadores mesmo, da sim podorão entender direitinho como se funciona essa coisinha simples....

 

Eu programo programas de verdade em Visual Basic, ajudo tbm nos OTs, portanto tenho alguns sites de programação para os que se enteressarem....

 

Aconselho para os que nao sabem nada de programação a baixar umas coisas sobre Lógica de programação, aprendido isso dai podem começarem entrando em uma linguagem de programação séria... no caso de Ots usa-se a linguagem LUA.

 

sites:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

www.apostilando.com - logica de programacao

http://www.codigofonte.net

http://www.vbmania.com.br

http://www.portaldaprogramacao.com

http://www.aprendaemcasa.com.br

 

Se alguem sentir dificuldade em programar entre em contato:

tiagomanzini_17@hotmail.com

 

flwss espero ter ajudado...

 

 

 

 

e cara e ajudo vo estudar eci caso vlw



  • 1
  • 2