muito bom adimiro seu trabalho ^^
- Fórum
- OTServ
- Tutoriais
- Tutoriais de Scripting
- Tutorial De Actions - Completissimo
c tem msn?me add ae bad_fury@hotmail.com
tpw.. pra vc me ensna a faze alavanca q leva o cara de 1 lugar pro otro tipo akela da anihi... add ae e me ensina plz...
flws
info
Grupo: Conde
Registrado: 12/10/05
Posts: 568
Reputação: +12
Gênero: Masculino
Char no Tibia: Homao Dapoha

@joia
Alertado por flood, voce é um usuario tão antigo, não deveria cometer esses erros.
Legal!
Muito bom!
Mas eu queria algo do tipo, um chest (quest), com uma UniqueID, onde quem desse use no chest, ganha-se um addon.
Tem como?!
Espero uma resposta!
Parabéns,Gostei Muito!
Vai ajudar muita gente!
Atencisoamente.
//DevmoX
info
Grupo: Campones
Registrado: 14/12/06
Posts: 1
Reputação: 0
Oi
eu tenho uma dúvida,
nos arquivos que contém os acc eu não sei identificar o password e o acc você(s) poderia(m) me ajudar aparece mais ou menos assim:
<?xml version="1.0" ?>
- <account pass="blabla" type="1" premDays="90">
- <characters>
<character name="Goma" />
</characters>
</account>
qual é o account e qual é o password?
Sinceramente... n entendi
plx da uma ajudinha aew
por msn
info
Grupo: Lenda
Registrado: 10/10/05
Posts: 2.2k
Reputação: +63
Char no Tibia: Master Chequer

Olá Xtibiano,
Parabéns, seu tutorial foi aprovado.
Estarei movendo ele para a área de tutoriais.
Obrigado por trazer conteúdo para o Xtibia.com e espero que continue com o ótimo trabalho.
Atenciosamente,
JV Chequer *Diretor Xtibia.com*
info
Grupo: Campones
Registrado: 23/06/07
Posts: 56
Reputação: 0
Char no Tibia: Knight'GuzinhO

MEREÇE FIXO!
MTu BOM PENA QUE ROBARAM SUA IDEIA E SO DERAM CTRL + C E CTRL + V
info
Grupo: Campones
Registrado: 29/10/05
Posts: 32
Reputação: 0
Char no Tibia: Dark Malucou

;o boum trabalhooo =]
info
Grupo: Campones
Registrado: 23/07/07
Posts: 3
Reputação: 0
Muito bom, esse eu não conhecia =p
ps. puts post grande ![]()
//Alone
info
Grupo: Artesão
Registrado: 23/07/06
Posts: 143
Reputação: +1
Char no Tibia: Wizzard Marotow

Gostei pra caramba.
so tenho uma duvida sera que da pra fazer uma coisa nesse estilo:
quando o player clica na estatua sumona alguns bichos e aparece uma mensgem não so pra ele mais pra todos os palyers online no estilo de invasões?
to esperando a resposta ^^
info
Grupo: Artesão
Registrado: 15/08/06
Posts: 110
Reputação: +2
Char no Tibia: Alca Morth

muito bom... cara curti a loot... 10!





info
Grupo: Campones
Registrado: 25/05/06
Posts: 91
Reputação: +10
Tutorial de Actions
Em primero lugar vamos criar um Script Passo a Passo para acustumar.
Crie um arquivo.lua na sua pasta de scripts chamado mineaction e siga os passos abaixo - >
Bom , Aconselho sempre começar sua action com:
CODE
Depois com os famosos "Ifs" função "Se"
CODE
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 :
CODE
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
CODE
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 :
CODE
Pronto quando o Demon for sumonado agora haverá um efeito magico.
agora adicione isto no final
CODE
Sua action terminada deve estar assim :
CODE
function onUse(cid, item, frompos, item2, topos)if item.uid == 3002 thendoSummonCreature("Demon",topos)doSendMagicEffect(topos,14)elsedoPlayerSendCancel(cid,"Sorry, not possible.")endreturn 1endNo 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 :
CODE
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 magicodoSummonCreature("Dragon",topos) Ali sumona um dragon na posição do item usado ! Ele pode ser usado pra sumonar em determinada coordenada exemplo :doSummonCreature("Dragon", {x=138, y=281, z=8})Esspecial Alavancas de Mil maneiras
1 - Removendo pedras -
Vejam o Ex:
CODE
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 thendoRemoveItem(getgate.uid,1)doTransformItem(item.uid,item.itemid+1)elseif item.uid == 3002 and item.itemid == 2712 and getgate.itemid == 0 thendoCreateItem(1822,1,gatepos)doTransformItem(item.uid,item.itemid-1)elsedoPlayerSendCancel(cid,"Sorry, not possible.")endreturn 1endNeste 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
CODE
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 wink.gif
- Alavancas Sumonando Monstros e colocando Hole No Lugar de uma quest
Vamos ver mais uma vez o exemplo
CODE
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 thendoRemoveItem(getgate.uid,1)doTransformItem(item.uid,item.itemid+1)elseif item.uid == 3002 and item.itemid == 2712 and getgate.itemid == 0 thendoCreateItem(1822,1,gatepos)doTransformItem(item.uid,item.itemid-1)elsedoPlayerSendCancel(cid,"Sorry, not possible.")endreturn 1endVamos Pensar o que podemos fazer ...
Que tal se nós adicionarmos após o doRemoveItem isso :
CODE
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 wink.gif [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:
CODE
-- 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 thendoSendMagicEffect(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 endif item2.itemid == 1 and ml <= 1 thendoSendMagicEffect(frompos,2)doPlayerSendCancel(cid,"You dont Have Magic Level to use this rune.")endif item2.itemid >= 2 thendoPlayerSendCancel(cid,"You can only use this rune in you or in players.")doSendMagicEffect(frompos,2)endreturn 1endAi 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
CODE
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:
CODE
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 :
CODE
Bom isso pega o ML da pessoa para saber se ela tem o Magic necessario para usar.
CODE
Isso remove 1 carga
CODE
Isso mostra qual ML necessario para usar a LMF (Life mana fluid)
CODE
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 :
CODE
Ou senão o item :
CODE
É muito facil é apenas adicionar as funções cool.gif
Agora vou falar sobre quests laugh.gif
CODE
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
CODE
function onUse(cid, item, frompos, item2, topos)if item.uid == (UID) thenqueststatus = getPlayerStorageValue(cid,[uID])if queststatus == -1 or queststatus == 0 thendoPlayerSendTextMessage(cid,22,"You have found an Tutorial Rox.")doSendMagicEffect(topos,12)coins_uid = doPlayerAddItem(cid,[iD Do Item],{Quantidade})setPlayerStorageValue(cid,[uID],1)elsedoPlayerSendTextMessage(cid,22,"This chest is empty.")endelseif item.uid == [uID] thenqueststatus = getPlayerStorageValue(cid,[uID])if queststatus == -1 or queststatus == 0 thendoPlayerSendTextMessage(cid,22,"You have found a Tutorial.")doSendMagicEffect(topos,12)coins_uid = doPlayerAddItem(cid,[iD do Item],{quantidade})setPlayerStorageValue(cid,[uID],1)elsedoPlayerSendTextMessage(cid,22,"This chest is empty.")endelsereturn 0endreturn 1endÉ só substituir colocando os IDs sem os [] {} ()
Editando LvLDoors
Bom antes de mais nada temos que adicionar isso no actions.xml
CODE
Essas são as portas mais usadas , quem usa outras pode adicionar facilmente assim:
CODE
<action itemid="ID Da Porta" script="lvldoor.lua"/>
Bom com sua porta add vamos ao script
CODE
function onUse(cid, item, frompos, item2, topos)doorpos = {x=frompos.x, y=frompos.y, z=frompos.z}playerpos = getPlayerPosition(cid)playerlevel = getPlayerLevel(cid)--shadowtempleif item.itemid == 1629 and doorpos.x == 265 and doorpos.y == 118 and doorpos.z == 8 thenif playerlevel > 29 thendoTeleportThing(cid,doorpos)elseif playerlevel < 30 thendoPlayerSendTextMessage(cid,22,"You need to be level 30 or higher.")end--DOMSelseif item.itemid == 1627 and doorpos.x == 133 and doorpos.y == 250 and doorpos.z == 8 thenif playerlevel > 39 thendoTeleportThing(cid,doorpos)elseif playerlevel < 40 thendoPlayerSendTextMessage(cid,22,"You need to be level 40 or higher.")endendreturn 1endExplicando :
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 -
Picks System
CODE
function onUse(cid, item, frompos, item2, topos)tilepos = {x=topos.x, y=topos.y, z=topos.z}if item2.itemid == 0 thenreturn 0endif item2.itemid == 782 and tilepos.x == 56 and tilepos.y == 49 and tilepos.z == 8 thenplayer1pos = {x=56, y=50, z=8, stackpos=253}player1 = getThingfromPos(player1pos)if player1.itemid > 0 thennplayer1pos = {x=56, y=49, z=9}doSendMagicEffect(player1pos,2)doTeleportThing(player1.uid,nplayer1pos)doSendMagicEffect(nplayer1pos,10)elsedoSendMagicEffect(frompos,2)doPlayerSendCancel(cid,"You are not in the right place!")endendreturn 1endExplicando o código:
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.
CODE
Em actions gerais (eu gosto de chamar assim) você deve sempre colocar o id do item que da o use na actions.xml
CODE
E por utimo como colokar o temple do player clikando tipo dando use na estatua e nasce senpre la
ex
CODE
newpos = {x=20, y=20, z=7}doPlayerSetMasterPos(cid,newpos)e so add isso num lugar kalker de um script c vc leu tudo vai saber como e que faiz
flw
Tutorial:By Skoll
Adaptado por:Dark-X
Obrigado
Dark-X