Ir para conteúdo

Tutorial De Action


Brabo

Posts Recomendados

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

Link para o comentário
Compartilhar em outros sites

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!

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • 5 months later...
  • 3 weeks later...
  • 2 weeks later...

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...

Link para o comentário
Compartilhar em outros sites

  • 5 months later...
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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...