Ir para conteúdo
Entre para seguir isso  
SteveMagician

Tutorial de Action Script

Recommended Posts

SteveMagician    0
SteveMagician

[center:7fea95f256]Tutorial de Actions[/center:7fea95f256]

 

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:

 

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ão 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

elsedoPlayerSendCancel(cid,"Sorry, not possible.")endreturn 1end
Sua action terminada deve estar assim :

function onUse(cid, item, frompos, item2, topos)Â*Â*if item.uid == 3002 thendoSummonCreature("Demon",topos)doSendMagicEffect(topos,14)elsedoPlayerSendCancel(cid,"Sorry, not possible.")endreturn 1end
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) Faz 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 em uma suas actions !

 

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 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 1end
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

 

- 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 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 1end
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êss 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 thendoSendMagicEffect(playerpos,1)doPlayerAddMana(player.uid,formula)doPlayerSay(player.uid,"Ahhhhhh",2)if item.type > 1 thendoChangeTypeItem(item.uid,item.type-1)elsedoRemoveItem(item.uid,1)endendif 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 1end
Ai logo você ve que não é tão dificil assim ...

 

Se vocês testarem essa versã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 thendoChangeTypeItem(item.uid,item.type-1)elsedoRemoveItem(item.uid,1)endend
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)

 

endif item2.itemid >= 2 thendoPlayerSendCancel(cid,"You can only use this rune in you or in players.")doSendMagicEffect(frompos,2)endreturn 1end
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 thendoPlayerSendCancel(cid,"Sorry, not possible.")elseif getPlayerAccess(cid) == 3 thenplayerpos = getPlayerPosition(cid)doTeleportThing(cid,topos)doSendMagicEffect(playerpos,2)doSendMagicEffect(topos,10)elsedoPlayerSendCancel(cid,"You are not allowed to use this rune.")endendreturn 1end
Ou senão o item :

doPlayerAddItem(cid,2400,1)
É muito facil, apenas adicionar as funções

 

-

 

Agora vou falar sobre quests

 

Bom se você usa YourOts é muito facil

 

-- Tutorial questif item.uid == (uniqueid que você quer) thenqueststatus = getPlayerStorageValue(cid,[aconselho colocar a uniqueid])if queststatus == -1 thenif getPlayerLevel(cid) >= (level necessario) thendoPlayerSendTextMessage(cid,22,"You have found Tutorial Rox Item.")doPlayerAddItem(cid,(Id Do Item),[Quantidade])setPlayerStorageValue(cid,(uid),1)elsedoPlayerSendTextMessage(cid,22,"You need level 20 to get prize.")endelsedoPlayerSendTextMessage(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

 

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 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 scriptfunction 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 1end
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 -

 

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 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 1end
Explicando o código By Thotth:

 

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", 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

 

 

GlossárioItem2 - Serve para itens tipo que você da use e tem que clicar em outro esse outro é o item2Math Random - Define tudo aquilo que é aletorio ou não é pré definido.If - Função 'Se' é usada em 90% das actionsDo - As Funções 'Do' representam sempre o fazer , Ex Sumonar , TransformarAnd - É o famoso "E" usamos ele quando colocamos algo a +Or - Função Ou , serve para as actions não ficarem muito extensasUID - UniqueIds , elas só podem ser usadas em 1 item no jogo elas são unicasElseif - E se , Mas se , Determina um especie de condição se algo acontecer ela ativará a ação.End - Finaliza as ações
Agradecimentos:

Repo

Joao Paulo

Peonso

BoppreH

Thotth

 

 

Unico pedido que lhes faço é que não postem esse tuto em nenhum forum sem minha autorização..

 

Bye

Compartilhar este post


Link para o post
Compartilhar em outros sites
Jovial    2
Jovial

Muito bom, só falto alguns comandos mas ta bao de mais xD

Compartilhar este post


Link para o post
Compartilhar em outros sites
!Jã!    0
!Jã!

Ótimo tutorial o do Skoll

 

Apesar de ter sido citado no tópico (Assunto) acho que ele merece os créditos no final do post também não?

^^

 

Flws,</span>

<span style=\'color:blue\'>#!Jã!$//

Compartilhar este post


Link para o post
Compartilhar em outros sites
Tr0p5    0
Tr0p5

nossa mto bom mesmo.. bem esplicado...tem ateh um ae q eu tava precisando...certeza jah ta no favoritos.. qndo precisa eh soh olha aki.. vlw mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites
Browx    0
Browx

nussa veiu perfeito vlw msmdeve t dado mo trampo pa posta tudu isso

Compartilhar este post


Link para o post
Compartilhar em outros sites
Skoll    0
Skoll

Obrigado pelos créditos steve e pelo apoio !Jã!.Foram quase 3 semanas fazendo.Está desatualizado, em breve eu melhoro.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Samurai    0
Samurai

Po cara...Sem palavras...Tuto otimooooAjudo muita gente inclusive eu ahuahuahuahauVlw brigadao aew..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kentaro    0
Kentaro

UebaSalvei aki em bloco de notas =]vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites
HenneT    2
HenneT

Caraca ta o bixo o tudo vlw ae fera ^^muito rox mesmo ;pvo fazer que nem o cara de cime... salvar no blocos de notasAbraços HeNnEt 8)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Guiga    0
Guiga

Powesse topico ta fera em muito perfeito explicativoSkoll vc é o cara(:

Compartilhar este post


Link para o post
Compartilhar em outros sites
-3C-    0
-3C-

Wow!PERFEITO CARA !!Muito bom mesmo..Tá de parabens .. de novo x)Muito bom mesmo ..Abraços,-3C-

Compartilhar este post


Link para o post
Compartilhar em outros sites
Maninho_d2    0
Maninho_d2

OWwwWW...Meus Parabéns...Um Ótimo Tutorial!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
[ B a l i l l o ]    0
[ B a l i l l o ]

Skoll atualiza isso colocando o comando MoveOFF e MoveON, to kerendu aprender essa action agora, n tem nenhum tuto falando dela :/

Compartilhar este post


Link para o post
Compartilhar em outros sites
Caneco    0
Caneco

tutorial mto bom da pra aprende bastanteto esperando + tutoriais bons como essepodiam fazer um tuto sobre Onwalk naumsao mtas pessoas q dominao 100% o walkvlwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites
Hizuke    0
Hizuke

Muito bom, topico bem explicado, ate hj tinha alguns problemas com actions ^^, mas agora eu to melhor ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mandinha    0
Mandinha

Skol, vc eh u kra... tutorial mt perfeuto, soh falta atualizar! xDParabéns!...Mandinha...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Codec    0
Codec

Mt boa tuto vlww Skoll!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Limph    0
Limph

explica aí como se usa o comandodoSendAnimatedText =]tipo.. o q se coloca dentro os ( )doSendAnimatedText(oqsecolocaaqui)vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites
BieL    1
BieL

eu me lembro desse tuto do Skollpor falar nisso kd ele?1800 posts, agora...^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×