OMG KRA
Meu Que Tutorial ****
Vc Mandah Bem Pra Caramba Em Actions Hein
Fiz Umas Aqui E Fico Rox !
Vlw Mesmo Kra, Por Mim Acho Que Pode Ser Fixado...
Continuah Assim Que Eu Do A Maior Força =P
info
Grupo: Campones
Registrado: 17/01/06
Posts: 8
Reputação: 0
OMG KRA
Meu Que Tutorial ****
Vc Mandah Bem Pra Caramba Em Actions Hein
Fiz Umas Aqui E Fico Rox !
Vlw Mesmo Kra, Por Mim Acho Que Pode Ser Fixado...
Continuah Assim Que Eu Do A Maior Força =P
Imperi..eu tava vendo esse tutorial hj de manha..heuheuheue...ve lá na seção de actions que eu tentei fzr uma action..mas nao funcionou =/
ps: Coloca os créditos do Skoll tb...
Sinceramente eu num peguei do skoll, eu peguei esse tutorial naquele site, tanto que eu coloquei lah embaixo Senhor GM ROTCIV.
Porem, nao era o nome dele q estava lah, era outro.
Porem nao me lembro, soh coloquei a fonte q peguei de lah.
Desculpe eu peguei daquele site, que num eh permitido coloca aqui, e pelo fato de que, aqui nesse site na havia nenhum desses tutoriais tao detalhado como esse.
Espero q me entenda, nao quero os meritos pra mim, nem ligo.
Porem quero apenas que o site avance cada ve mais, quero q qm vier procurar algo aqui, sempre encontre !!!
f
u
i
i
isso td eu aprendi fusando mais é mtu bom mesmo pra qm nao sabe merece ir pra secao oficial e ser fixado!!
MUITOOOOOOOOOOOOOOO BOM ESSE TUTORIAL DE ACTION..
EU CONCORDO DEVERIA SER FIXO ESE TUTORIAL VLWW!! MESMU!!
!!
Obrigado, por todos que aqui leem meus tutoriais, notem que nao faço isso por mim, e sim pelo XTIBIA, e pelas pessoas que aqui comentam.
Tanto que ajudo todos aqui.
Obrigado.
Eu tbm achei otima esse tuto... tanto que ateh agora eu to tentando faze uma action.
Quero ser scripter !!
Dificil ?????
Naooooo.... imagina !!!
To me fudendo aqui, pra tenta faze uma
f
u
i
Sinceramente eu num peguei do skoll, eu peguei esse tutorial naquele site, tanto que eu coloquei lah embaixo Senhor GM ROTCIV.Porem, nao era o nome dele q estava lah, era outro.
Porem nao me lembro, soh coloquei a fonte q peguei de lah.
Desculpe eu peguei daquele site, que num eh permitido coloca aqui, e pelo fato de que, aqui nesse site na havia nenhum desses tutoriais tao detalhado como esse.
Espero q me entenda, nao quero os meritos pra mim, nem ligo.
Porem quero apenas que o site avance cada ve mais, quero q qm vier procurar algo aqui, sempre encontre !!!
f
u
i
i
fmza mano...só disse pra por do skoll pq ele que coloco lá...mas to nem ai...só sei que acho esse tuto rox d+
só tipo...da uma arrumada nele..coloca as TAGS CODES pra fikar melhor de lê como ta no outro.. ![]()
![]()
Ty pelo tutorial ^^ ajudou mtu ae =P pelo menos me ajudou hehehe!
O Tutorial está excelente, pena que não foi voce que fez 100%
Mas mesmo assim ele é bastante importante então vou deixá-lo aqui em avaliações até todos esclarecerem dúvidas.
Atenciosamente,
Rafix
Po ta muito bom..
Como rafix disse vamos deixar em Observação.Caso rende bem vai para seção Oficial..
Vlws
Vlw,
e nao fui eu qm fiz mesmo.
pq eu to tentando faze uma actions com ele tbm, adorei.
e Espero que nao soh eu veja mas tbm muitas outras passem por aqui e veja, e que rende bastante este TUTO.
Abraço ai, sorte pra ti KNOX.
f
u
i
i
Muito bom tutorial vlw xD
info
Grupo: Campones
Registrado: 03/01/06
Posts: 11
Reputação: 0
Char no Tibia: So jogo no meu ot

Very Nice parabens ![]()
tava precisandu =DD
info
Grupo: Campones
Registrado: 13/10/05
Posts: 55
Reputação: 0
Tutorial de Actions!
Em primero lugar vamos criar um Script Passo a Passo para pegar o geito!
Crie um arquivo.lua na sua pasta de scripts chamado mineaction e siga os passos abaixo - >
Bom , Aconselho sempre começar sua action com:
function onUse(cid, item, frompos, item2, topos)
Depois com os famosos "Ifs" função "Se"
if item.uid == 3000 then
Aqui no caso acontecerá alguma coisa se o item que tem a UniqueId 3000 for usado !
(UniqueIds são IDs unicas , que só se pode ter 1 no mapa e podem ser facilmente colocadas com qualquer map editor [botão Direito , Properties , e teremos actionID e
UniqueID])
Bom apos o if item.uid == 3000 then Temos que colocar as funções desejadas.
No caso temos as funções :
doChangeTypeItem
* doCreateItem
* doDecayItem
* doPlayerAddHealth
* doPlayerAddItem
* doPlayerAddMana
* doPlayerAddSkillTry
* doPlayerFeed
* doPlayerRemoveItem
* doPlayerRemoveMoney
* doPlayerSay
* doPlayerSendCancel
* doPlayerSendTextMessage
* doPlayerSetMasterPos
* doPlayerSetVocation
* doRemoveItem
* doSendMagicEffect
* doSetItemActionId
* doSetItemSpecialDescription
* doSetItemText
* doShowTextWindow
* doSendAnimatedText
* doSummonCreature
* doTeleportThing
* doTransformItem
* getItemRWInfo
* getPlayerAccess
* getPlayerFood
* getPlayerGuildId
* getPlayerHealth
* getPlayerLevel
* getPlayerMagLevel
* getPlayerMana
* getPlayerMasterPos
* getPlayerName
* getPlayerPosition
* getPlayerSkill
* getPlayerStorageValue
* getPlayerVocation
* getThingfromPos
* getTilePzInfo
* setPlayerStorageValue
Não falaremos de Todas mas é bom conhece-las ..
Então pule uma linha para colocarmos as funções .
[No Primeiro exemplo aqui colocarei uma action de Sumonar um determinado Montro.]
Bom adicione
doSummonCreature("Demon",topos)
Isso fará que quando eu usar o Item que tem a UID 3000 seja sumonado um monstro na frente do player
Adicione uma linha abaixo de doSummon o efeito magico :
doSendMagicEffect(topos,14)
Pronto quando o Demon for sumonado agora haverá um efeito magico.
agora adicione isto no final
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
return 1
end
Sua action terminada deve estar assim :
function onUse(cid, item, frompos, item2, topos)
if item.uid == 3002 then
doSummonCreature("Demon",topos)
doSendMagicEffect(topos,14)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
return 1
end
No caso Else significa Mais e Else IF que tambem é muito usado ( não agora ) mais se end é o chamado fim que é usado no fim dos scripts sempre que finaliza alguma coisa.
Agora vamos abrir o map editor criar uma statua e adicionar a UniqueID 3000 e abrir tambem a action.xml e adicionar :
<action uniqueid="3000" script="mineaction.lua" />
Se tudo deu certo é porque você esta seguindo nosso tuto normalmente!
Agora encinarei um pouco outros comandos para então voltar a pratica !
Os mais famosos e usados são :
doPlayerAddMana(cid,100) Neste caso adiciona 100 de mana ao player que usar o item que esta destacado na action !
doPlayerAddHealth(cid,100) Mesmo que o acima mas neste caso adiciona life !
doPlayerFeed(cid,120) Adiciona Digamos.. food ao player neste caso o player subirá life e mana por 120 seconds.
doPlayerSay(cid,"Hicks",2) Força o player a dizer uma mensagem usado em cachaça e em mana fluid.
doPlayerAddItem(cid,2400,1) É usado em quests no caso adiciona um item do id 2400 que eh uma Magic Sword.
doPlayerRemoveMoney(cid,100) Tira dinheiro do player , no caso ali 100 gps.
doPlayerSendTextMessage(cid,2,"Tutorial") Aparece uma mensagem no screnn(tela) do player, no caso ali Tutorial.
doSendMagicEffect(topos,2) Ele é u famoso efeito magico
doSummonCreature("Dragon",topos) Ali sumona um demon na posição do item usado ! Ele pode ser usado pra sumonar em determinada coordenada exemplo :
doSummonCreature("Dragon", {x=138, y=281, z=8})
Bom acho que falei o suficiente por hoje
Use sua criatividade e use bastantes ações em uma só action !
Continuando ...
Especial Alavancas de Mil maneiras
1 - Removendo pedras -
Vejam o Ex(By Peonso) :
function onUse(cid, item, frompos, item2, topos)
gatepos = {x=181, y=135, z=11, stackpos=1}
getgate = getThingfromPos(gatepos)
if item.uid == 3002 and item.itemid == 2711 and getgate.itemid == 1822 then
doRemoveItem(getgate.uid,1)
doTransformItem(item.uid,item.itemid+1)
elseif item.uid == 3002 and item.itemid == 2712 and getgate.itemid == 0 then
doCreateItem(1822,1,gatepos)
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
return 1
end
Neste caso vamos esclarecer tudo
3002 o UID da alavanca (não precisa ser necessariamente alavanca mas este exemplo é alavanca)
GatePos , é a posição da pedra , parede , estatua ou outra coisa que esteja bloqueando o caminho
1822 é o ID da pedra , parede ...
2711 o ID da alavanca
Bom ?!? Sim Otimo
Mas podemos editar este exemplo para fazer varias coisas ex: Acordar monstros que estavam transformados em Pedra ...
Muita gente deve estar pensando" hã?!? oq isso tem haver?"
Olhem só se adicionarmos
doSummonCreature("Gargoyle", {x=181, y=135, z=11})
doSendMagicEffect(topos,14)
Abaixo do doremoveitem teremos isso basta apenas trocar o ID da pedra para 2015 que é o id da estatua
Viram é só usar a criatividade de vocês
-Apartir daqui , não da pra usar mais o Quote parece que já atingi o limite ..
- Alavancas Sumonando Monstros e colocando Hole No Lugar de uma quest
Vamos ver mais uma vez o exemplo do peonso :
function onUse(cid, item, frompos, item2, topos)
gatepos = {x=181, y=135, z=11, stackpos=1}
getgate = getThingfromPos(gatepos)
if item.uid == 3002 and item.itemid == 2711 and getgate.itemid == 1822 then
doRemoveItem(getgate.uid,1)
doTransformItem(item.uid,item.itemid+1)
elseif item.uid == 3002 and item.itemid == 2712 and getgate.itemid == 0 then
doCreateItem(1822,1,gatepos)
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
return 1
end
Vamos Pensar o que podemos fazer ...
Que tal se nós adicionarmos após o doRemoveItem isso :
doSummonCreature("Dragon", {x=190, y=135, z=11})
doSummonCreature("Dragon", {x=187, y=139, z=11})
doSummonCreature("Dragon", {x=184, y=133, z=11})
doCreateItem(409,1,gatepos)
Neste caso , vai sumonar 3 Dragons e aparecer um Hole é com para ser usado em Quests [409 é o id da hole]
Viram como é facil? É só usar a criatividade !
Bom agora acho que vocês entenderam como usar as alavancas ...
Vamos Falar de Runas e MFs
Este exemplo do Joao será nossa Base:
-- New MF rune by Joao Paulo 3.0 version --
function onUse(cid, item, frompos, item2, topos)
playerpos = {x=topos.x, y=topos.y, z=topos.z, stackpos=253}
player = getThingfromPos(playerpos)
ml = getPlayerMagLevel(cid)
lvl = getPlayerLevel(cid)
formula = math.random(((lvl+ml)*2)-(lvl-ml))
if item2.itemid == 1 and ml >= 2 then
doSendMagicEffect(playerpos,1)
doPlayerAddMana(player.uid,formula)
doPlayerSay(player.uid,"Ahhhhhh",2)
if item.type > 1 then
doChangeTypeItem(item.uid,item.type-1)
else
doRemoveItem(item.uid,1)
end
end
if item2.itemid == 1 and ml <= 1 then
doSendMagicEffect(frompos,2)
doPlayerSendCancel(cid,"You dont Have Magic Level to use this rune.")
end
if item2.itemid >= 2 then
doPlayerSendCancel(cid,"You can only use this rune in you or in players.")
doSendMagicEffect(frompos,2)
end
return 1
end
Ai logo você ve que não é tão dificil assim ...
Se vocês testarem essa versão verão que upa MTTTTT mana de Mages
Oque podemos fazer bom eu não gosto de formulas retire a formula e o getplayerlvl
E coloque doPlayerAddMana(cid,100) no lugar do antigo doPlayerAddMana
Com isso você pode reparar que toda hora vai upar 100 de mana..
Agora vamos fazer uma runa baseada na do Joao passo a passo :
Essa primera runa será pelas actions depois vou encinar uma pela pasta spells.
Bom vamos começar igual o exemplo dele:
function onUse(cid, item, frompos, item2, topos)
playerpos = {x=topos.x, y=topos.y, z=topos.z, stackpos=253}
player = getThingfromPos(playerpos)
Isso mostra as funções a serem usadas e a posição do Player
Vamos pular uma linha e colocar :
ml = getPlayerMagLevel(cid)
if item2.itemid == 1 and ml >= 2 then
Bom isso pega o ML da pessoa para saber se ela tem o Magic necessario para usar.
doPlayerAddHealth(player.uid,100)
doSendMagicEffect(playerpos,1)
doPlayerAddMana(player.uid,100)
doPlayerSay(player.uid,"This Potion Are Mud",2)
Bom com isso adicionará 100 de life e 100 de mana ao player e força ele a dizer This Potion Are Mud
if item.type > 1 then
doChangeTypeItem(item.uid,item.type-1)
else
doRemoveItem(item.uid,1)
end
end
Isso remove 1 carga
if item2.itemid == 1 and ml <= 1 then
doSendMagicEffect(frompos,2)
doPlayerSendCancel(cid,"You dont Have Magic Level to use this rune.")
Isso mostra qual ML necessario para usar a LMF (Life mana fluid)
end
if item2.itemid >= 2 then
doPlayerSendCancel(cid,"You can only use this rune in you or in players.")
doSendMagicEffect(frompos,2)
end
return 1
end
Finalizando oque acontece quando erra o player e o end.
Viram ? Se quiserem fazer runas de adicionar equipes ou senão de teleport como nesse exemplo :
function onUse(cid, item, frompos, item2, topos)
if item2.itemid == 0 then
doPlayerSendCancel(cid,"Sorry, not possible.")
else
if getPlayerAccess(cid) == 3 then
playerpos = getPlayerPosition(cid)
doTeleportThing(cid,topos)
doSendMagicEffect(playerpos,2)
doSendMagicEffect(topos,10)
else
doPlayerSendCancel(cid,"You are not allowed to use this rune.")
end
end
return 1
end
Ou senão o item :
doPlayerAddItem(cid,2400,1)
É muito facil é apenas adicionar as funções
Agora vamos fazer uma runa pelas Spells só pra animar (sei que não é action mas...)
Va na pasta spells/runes
crie um arquivo.lua com nome de SkollBomb
abra ele
Em Primero Lugar a area
area = {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1}
}
attackType = ATTACK_PHYSICAL
needDirection = false
areaEffect = NM_ME_EXPLOSION_AREA
animationEffect = NM_ANI_FIRE
Os Tipos de ataque e as animações e se precisa de direção.
hitEffect = NM_ME_EXPLOSION_DAMAGE
damageEffect = NM_ME_DRAW_BLOOD
animationColor = 193
offensive = true
drawblood = true
Aqui temos os Efeitos do Demage a cor o sangue
ExplosionObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0)
No caso retirei da explosion é tudo citado acima que será resumido (eu acho
)
function onCast(cid, creaturePos, level, maglv, var)
centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}
ExplosionObject.minDmg = (level * 1 + maglv *1) * 3.5
ExplosionObject.maxDmg = (level * 1 + maglv *1) * 2.1
return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, ExplosionObject:ordered())
end
Quanto demage vai dar (Minha formula ta dando muitooo) e efeito da area e o end.
Adicionem no Spells.xml
<rune name="Light Magic Missle" id="3112" charges="5" maglv="0" mana="0" enabled="1"></rune>
testem agr
Agora vou falar sobre quests
Bom se você usa YourOts é muito facil
-- Tutorial quest
if item.uid == (uniqueid que você quer) then
queststatus = getPlayerStorageValue(cid,[aconselho colocar a uniqueid])
if queststatus == -1 then
if getPlayerLevel(cid) >= (level necessario) then
doPlayerSendTextMessage(cid,22,"You have found Tutorial Rox Item.")
doPlayerAddItem(cid,(Id Do Item),[Quantidade])
setPlayerStorageValue(cid,(uid),1)
else
doPlayerSendTextMessage(cid,22,"You need level 20 to get prize.")
end
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
Adicione isso na chest.lua
Bom agora edite conforma esta acima só que sem os {} [] ()
Se você não usa YourOts -
Baixe YourOts (Brincadera a parte)
Ignore o passo acima
Vamos ver um exemplo do Peonso (Se não fosse ele eu não estaria aqui) :
function onUse(cid, item, frompos, item2, topos)
if item.uid == (UID) then
queststatus = getPlayerStorageValue(cid,[uID])
if queststatus == -1 or queststatus == 0 then
doPlayerSendTextMessage(cid,22,"You have found an Tutorial Rox.")
doSendMagicEffect(topos,12)
coins_uid = doPlayerAddItem(cid,[iD Do Item],{Quantidade})
setPlayerStorageValue(cid,[uID],1)
else
doPlayerSendTextMessage(cid,22,"This chest is empty.")
end
elseif item.uid == [uID] then
queststatus = getPlayerStorageValue(cid,[uID])
if queststatus == -1 or queststatus == 0 then
doPlayerSendTextMessage(cid,22,"You have found a Tutorial.")
doSendMagicEffect(topos,12)
coins_uid = doPlayerAddItem(cid,[iD do Item],{quantidade})
setPlayerStorageValue(cid,[uID],1)
else
doPlayerSendTextMessage(cid,22,"This chest is empty.")
end
else
return 0
end
return 1
end
É só substituir colocando os IDs sem os [] {} ()
Editando LvLDoors by Peonso
Bom antes de mais nada temos que adicionar isso no actions.xml
<action itemid="1627" script="lvldoor.lua"/>
<action itemid="1629" script="lvldoor.lua"/>
<action itemid="1645" script="lvldoor.lua"/>
<action itemid="1647" script="lvldoor.lua"/>
<action itemid="1659" script="lvldoor.lua"/>
<action itemid="1661" script="lvldoor.lua"/>
<action itemid="1668" script="lvldoor.lua"/>
<action itemid="1677" script="lvldoor.lua"/>
Essas são as portas mais usadas , quem usa outras pode adicionar facilmente assim:
<action itemid="ID Da Porta" script="lvldoor.lua"/>
Bom com sua porta add vamos ao script do peonso
-- By Peonso, based on Junk Food script
function onUse(cid, item, frompos, item2, topos)
doorpos = {x=frompos.x, y=frompos.y, z=frompos.z}
playerpos = getPlayerPosition(cid)
playerlevel = getPlayerLevel(cid)
--shadowtemple
if item.itemid == 1629 and doorpos.x == 265 and doorpos.y == 118 and doorpos.z == 8 then
if playerlevel > 29 then
doTeleportThing(cid,doorpos)
elseif playerlevel < 30 then
doPlayerSendTextMessage(cid,22,"You need to be level 30 or higher.")
end
--DOMS
elseif item.itemid == 1627 and doorpos.x == 133 and doorpos.y == 250 and doorpos.z == 8 then
if playerlevel > 39 then
doTeleportThing(cid,doorpos)
elseif playerlevel < 40 then
doPlayerSendTextMessage(cid,22,"You need to be level 40 or higher.")
end
end
return 1
end
Explicando :
Ali temos 2 portas os ids são 1627 e 1629 a seguir dos IDS temos as coodernadas o lvl 39 then + que 39 ou seja apenas 40 pra cima doTeleportthing(cid,doorpos) isso é a posição da door ou seja vai teleporta o player para dentro da porta
Facil não? Edite sua porta você mesmo e mude o ID e as coordenadas -
Bom se alguem tiver alguma duvida nesse ponto poste aki!
Picks System ( Creditos de Thotth )
function onUse(cid, item, frompos, item2, topos)
tilepos = {x=topos.x, y=topos.y, z=topos.z}
if item2.itemid == 0 then
return 0
end
if item2.itemid == 782 and tilepos.x == 56 and tilepos.y == 49 and tilepos.z == 8 then
player1pos = {x=56, y=50, z=8, stackpos=253}
player1 = getThingfromPos(player1pos)
if player1.itemid > 0 then
nplayer1pos = {x=56, y=49, z=9}
doSendMagicEffect(player1pos,2)
doTeleportThing(player1.uid,nplayer1pos)
doSendMagicEffect(nplayer1pos,10)
else
doSendMagicEffect(frompos,2)
doPlayerSendCancel(cid,"You are not in the right place!")
end
end
return 1
end
Explicando o código By Thotth Too
Agora la em and tilepos.x == 56 and tilepos.y == 49 and tilepos.z == 8 Ai eh as cordenadas do xaozinhu q vc irá usar a pick para ser teleportado.
Tamo quase la! Em if item2.itemid == 782 Este 782 eh o id da tile (o xaumzinhu) q vc colocou na coordenada q a pick devera ser usada.
Para dar um toke a+ eu puiz la em doPlayerSendCancel(cid,"You are not in the right place!") esta mensagem se a mula do cara usa a pick e naum estiver no lugar certo q vc colocou.
OBS: tilepos = {x=topos.x, y=topos.y, z=topos.z} n mexe ai pq se naum vai dar erro!
Agora entendendo e execuntando by Skoll
Isso é o pick system tem gente que não sabe nem oq é pick eh aquele intrumento que usamos para fazer buracos no chão , nesta aula que você teve retirada de um tuto do thotth com autorização dele é claro ele encinou como executar essa magnifica action , é a primeira vez que trabalhamos com o item2 em nossas aulas , o item2 é aquele segundo item do use with ( ex - eu dou use em uma rope e depois na tile de subir no caso a tile de subir é o item2) ele é utilizado em boa parte das actions ai você pergunta em não vi um "item1" lá ai que entra a code do actions.xml.
<action itemid="3394" script="pick.lua" />
Em actions gerais (eu gosto de chamar assim) você deve sempre colocar o id do item que da o use na actions.xml
Pessoal queria agradecer ao Thotth por conceder esse tuto , Thotth muito responsa e gente fina - Vlw Brow
==================Glossário=====================
Item2 - Serve para itens tipo que você da use e tem que clicar em outro esse outro é o item2
Math Random - Define tudo aquilo que é aletorio ou não é pré definido.
If - Função Se é usada em 90% das actions
Do - As Funções Do representam sempre o fazer , Ex Sumonar , Transformar
And - É o famoso "E" usamos ele quando colocamos algo a +
Or - Função Ou , serve para as actions não ficarem muito extensas
Cid -O player que da o use no item.
UID - UniqueIds , elas só podem ser usadas em 1 item no jogo elas são unicas
Elseif - E se , Mas se , Determina um especie de condição se algo acontecer ela ativará a ação.
End - Finaliza as ações
-------------------------------------------------------------------------------
Manual do GriZzm0 no qual este topico foi baseado. (inglês)
Font [Retirado].
f
u
i
Editado Janeiro 22 por Imperi