frerety 0 #1 Postado 10 Fevereiro, 2007 HiHo! Primeiramente eu gostaria de dizer que as cores do meu monitor estão estragadas portanto não sei se as cores combinam com o skin escuro do fórum. Se não combinar, por favor poste uma sugestão de cor para ser alterada... Bom... demorei 5 horas pra escrever isso. Eu sei que o número de pessoas que vai ler isso com intusiasmo e interesse eh quase nulo mas se eu conseguir ajudar uma pessoa apenas já estou feliz =) Provavelmente você não vai intender tudo da primeira vez que você ler (talvez nem da segunda) pois eh muita coisa para aprender. Leia com atenção, com calma, com carinho ( =p ), analise vários scripts/movements (todos que ver na frente de preferência o/) e o mais importante: tenha persistência Tentei facilitar ao máximo, tentei organizar mais porém se eu sintetizasse mais iria perder conteúdo =x... Se você ainda tiver alguma dúvida poste-a aqui =p Ficarei feliz em te ajudar a resolver seu problema (ajudar não é fazer para você :wink: ... assim você nunca vai aprender). Pergunta ~> Tá... Vou ler um tutorial de Movements, mais o que isso faz?!? Resposta ~> Toda vez que você movimentar alguma coisa (itens, você mesmo, outros players - enfim, todo tipo de movimento) ou criar itens em algum lugar (ex. criar firefields) poderá acontecer alguma coisa. Podemos configurar BoH, rings com movements, adicionar damage nos fields, configurar traps e muuuito mais =) Começaremos analizando o movements.xml (data/movements/) Vamos estudá-lo um pouco: <?xml version="1.0"?> <movements> <movevent event="EVENT" (... argumentos ...) /> </movements> </xml> Para cada event você vai usar um argumento < (...) >. Por isso vamos estudar movements divididos em seções - events. <span style='font-size:25pt;line-height:100%'><span style='color:gray'>EVENTS:</span></span> <movevent event="StepIn" <span style='color:red'>(...)</span> Usada quando o player mover para alguma coisa. Corresponde à antiga função de actions OnWalkIn Argumentos: <span style='color:red'>itemid</span> ~> use apenas um deles, nunca mais de um (se usar itemid não use uniqueid, se usar actionid não use itemid, etc). Quando o player andar em cima de um item com itemid/uniqueid/actionid X, executar o movement. <span style='color:red'>script</span> ~> use (também) apenas um deles (se usar script não usar function). Function vai ser explicado mais tarde, não se preocupe =). Script é o caminho do arquivo lua(onde ele está) a ser executado quando o player pisa em algum item de itemid/uniqueid/actionid X <span style='color:orange'>Exemplo</span>: <movevent event="StepIn" itemid="1487" script="arquivo.lua" /> <movevent event="StepOut" <span style='color:red'>(...)</span> Usada quando o player mover para fora (sair de cima) de um item X. Corresponde à antiga função para actions OnWalkOut Argumentos: <span style='color:red'>itemid</span> ~> use apenas um deles, nunca mais de um (se usar itemid não use uniqueid, se usar actionid não use itemid, etc). Quando o player mover pra fora de um item com itemid/uniqueid/actionid X, executar o movement. <span style='color:red'>script</span> ~> use (também) apenas um deles (se usar script não usar function). Function vai ser explicado mais tarde, não se preocupe =). Script é o caminho do arquivo lua(onde ele está) a ser executado quando o player "sai" de cima de algum item de itemid/uniqueid/actionid X <span style='color:orange'>Exemplo</span>: <movevent event="StepOut" itemid="1487" script="arquivo.lua" /> <movevent event="Equip" <span style='color:red'>(...)</span> Usada quando o player colocar um equipamento no corpo(pro corpo, não para a bp =p) em algum slot Argumentos: <span style='color:red'>itemid</span> ~> use apenas um deles (se usar itemid não use uniqueid ou actionid). Quando o player mover um item de itemid/uniqueid/actionid X para o corpo, executar o movement. <span style='color:red'>script</span> ~> use (também) apenas um deles (se usar script não usar function). Function vai ser explicado mais tarde, não se preocupe =). Script é o caminho do arquivo lua(onde ele está) a ser executado quando o player "veste" algum item de itemid/uniqueid/actionid X. <span style='color:red'>slot</span> ~> o slot (mão, pé, corpo, etc) que o item deverá ficar pra executar a ação. Pode ser: <span style='color:green'>.: head</span> ~> cabeça <span style='color:green'>.: necklace</span> ~> colar <span style='color:green'>.: backpack</span> ~> slot da backpack <span style='color:green'>.: armor</span> ~> armadura <span style='color:green'>.: right-hand</span> ~> mão direita <span style='color:green'>.: left-hand</span> ~> mão esquerda <span style='color:green'>.: legs</span> ~> calça <span style='color:green'>.: feet</span> ~> pé <span style='color:green'>.: ring</span> ~> rings (anéis) <span style='color:orange'>Exemplo</span>: <movevent event="Equip" itemid="2168" slot="ring" script="arquivo.lua" /> <movevent event="deEquip" <span style='color:red'>(...)</span> Usada quando o player retirar um equipamento de um certo slot do corpo Argumentos: <span style='color:red'>itemid</span> ~> use apenas um deles (se usar itemid não use uniqueid ou actionid). Quando o player mover um item de itemid/uniqueid/actionid X para fora do corpo, executar o movement. <span style='color:red'>script</span> ~> use (também) apenas um deles (se usar script não usar function). Function vai ser explicado mais tarde. Script é o caminho do arquivo lua(onde ele está) a ser executado quando o player tira algum item de itemid/uniqueid/actionid X do corpo. <span style='color:red'>slot</span> ~> o slot (mão, pé, corpo, etc) que o item deverá estar antes do player tirar ele do corpo. Pode ser: <span style='color:green'>.: head</span> ~> cabeça <span style='color:green'>.: necklace</span> ~> colar <span style='color:green'>.: backpack</span> ~> slot da backpack <span style='color:green'>.: armor</span> ~> armadura <span style='color:green'>.: right-hand</span> ~> mão direita <span style='color:green'>.: left-hand</span> ~> mão esquerda <span style='color:green'>.: legs</span> ~> calça <span style='color:green'>.: feet</span> ~> pé <span style='color:green'>.: ring</span> ~> rings (anéis) <span style='color:orange'>Exemplo</span>: <movevent event="DeEquip" itemid="2168" slot="ring" script="arquivo.lua" /> <movevent event="AddItem" <span style='color:red'>(...)</span> Usada quando o player adicionar um item x em algum tile (mover de um tile pro outro, quando o player taca uma runa de field ofensiva em alguém) Argumentos: <span style='color:red'>itemid</span> ~> use apenas um deles (se usar itemid não use uniqueid ou actionid). Quando o player "criar" um item de itemid/uniqueid/actionid X, executar o movement. <span style='color:red'>script</span> ~> use (também) apenas um deles (se usar script não usar function). Function vai ser explicado mais tarde. Script é o caminho do arquivo lua(onde ele está) a ser executado quando o player adiciona/move alguma coisa pro tile. <span style='color:red'>tileitem</span> ~> pode ser 0(false - desativado) ou 1(true - ativado). Se for 0, o script é executado assim que você move/cria o item no chão. Se for 1, o script só é adicionado quando você taca outro item em cima do item de itemid/uniqueid/actionid X <span style='color:orange'>Exemplo</span>: <movevent event="AddItem" tileitem="0" itemid="2424" script="script.lua" /> <movevent event="RemoveItem" <span style='color:red'>(...)</span> Usada quando o player remover um item x (mover de um tile pro outro, usar destroy field) Argumentos: <span style='color:red'>itemid</span> ~> use apenas um deles (se usar itemid não use uniqueid ou actionid). Quando o player "remover/tirar" um item de itemid/uniqueid/actionid X de um tile, executar o movement. <span style='color:red'>script</span> ~> use (também) apenas um deles (se usar script não usar function). Function vai ser explicado mais tarde. Script é o caminho do arquivo lua(onde ele está) a ser executado quando o player tira algum item de itemid/uniqueid/actionid X do corpo. <span style='color:red'>tileitem</span> ~> pode ser 0(false - desativado) ou 1(true - ativado). Se for 0, o script é executado assim que você move/cria o item no chão. Se for 1, o script só é adicionado quando você tira outro item de cima do item de itemid/uniqueid/actionid X <span style='color:orange'>Exemplo</span>: <movevent event="RemoveItem" tileitem="0" itemid="2424" script="script.lua" /> <span style='font-size:25pt;line-height:100%'><span style='color:gray'>ARQUIVOS.LUA:</span></span> Nas actions o modelo básico é: function onUse(cid,item,frompos,item2,topos) return 1 end Porém em movements o modelo depende do Event adicionado no xml. Cada event tem seu modelo básico... Irei explicar um por um. <span style='color:orange'>StepIn</span> Seu modelo básico é: function onStepIn(<span style='color:red'>cid</span>) -- aqui ficam as instruções return 1 end Argumentos: .: <span style='color:red'>cid</span>; .: <span style='color:green'>item</span> pisou. Possui: item.uid, item.itemid, item.type, item.actionid .: <span style='color:blue'>pos</span> pisou <span style='color:orange'>StepOut</span> Seu modelo básico é: function onStepOut(<span style='color:red'>cid</span>) -- aqui ficam as instruções return 1 end Argumentos: .: <span style='color:red'>cid</span>; .: <span style='color:green'>item</span> saiu. Possui: item.uid, item.itemid, item.type, item.actionid .: <span style='color:blue'>pos</span> saiu <span style='color:orange'>Equip</span> Seu modelo básico é: function onEquip(<span style='color:red'>cid</span>) -- aqui ficam as instruções end Argumentos: .: <span style='color:red'>cid</span>; .: <span style='color:green'>item</span> "vestiu". Possui: item.uid, item.itemid, item.type, item.actionid .: <span style='color:blue'>slot</span> foi colocado. Pode ser: .:. 1 ~> cabeça .:. 2 ~> colar .:. 3 ~> slot da backpack .:. 4 ~> armadura .:. 5 ~> mão direita .:. 6 ~> mão esquerda .:. 7 ~> calça .:. 8 ~> pé .:. 9 ~> anel <span style='color:orange'>DeEquip</span> Seu modelo básico é: function onDeEquip(<span style='color:red'>cid</span>) -- aqui ficam as instruções end Argumentos: .: <span style='color:red'>cid</span> do corpo; .: <span style='color:green'>item</span> tirou do corpo. Possui: item.uid, item.itemid, item.type, item.actionid .: <span style='color:blue'>slot</span> foi retirado. Pode ser: .:. 1 ~> cabeça .:. 2 ~> colar .:. 3 ~> slot da backpack .:. 4 ~> armadura .:. 5 ~> mão direita .:. 6 ~> mão esquerda .:. 7 ~> calça .:. 8 ~> pé .:. 9 ~> anel <span style='color:orange'>AddItem</span> Seu modelo básico é: function onAddItem(<span style='color:red'>moveitem</span>) -- aqui ficam as instruções return 1 end Argumentos: .: <span style='color:red'>moveitem</span> será o item que você arrastou em cima do item que está no xml!!! (dêem outra olhada no xml do event AddItem na parte do tileitem para intenderem melhor. Se precisar olhem os exemplos mais em baixo). .: <span style='color:green'>tileitem</span>item, o tileitem não precisa ser necessáriamente um tile =) pode ser qualquer item que você possa mover coisas em cima dele. .: <span style='color:blue'>pos</span> foi movido/criado. (posição depois de mover) <span style='color:orange'>RemoveItem</span> Seu modelo básico é: function onRemoveItem(<span style='color:red'>moveitem</span>) -- aqui ficam as instruções return 1 end Argumentos: .: <span style='color:red'>moveitem</span> será o item que você arrastou de cima do item que está no xml!!! (dêem outra olhada no xml do event AddItem na parte do tileitem para intenderem melhor. Se precisar olhem os exemplos mais em baixo). .: <span style='color:green'>tileitem</span>item, o tileitem não precisa ser necessáriamente um tile =) pode ser qualquer item que você possa mover coisas em cima dele. .: <span style='color:blue'>pos</span> foi removido (posição antes de mover). <span style='font-size:25pt;line-height:100%'><span style='color:gray'>FUNCTIONS vs SCRIPTS:</span></span> Bom... Quando eu estava explicando os xmls eu falei que você pode usar script ou function. Provavelmente você já está acostumado a usar script. script="arquivo.lua" etc etc =) Mas... pra que serve function e porque eu não uso script quando uso function?!? Em movements você tem algumas funções especiais para fazer seu trabalho "andar mais rápido". Você não precisa criar nenhum aruqivo.lua! Basta saber quais são as funções especiais e como/quando usá-las OBS: Os items que serão usados nas funções especiais precisam estar configurados em data/items/items.xml!!! 1ª função ~> <span style='color:orange'>onStepInField</span> Como o próprio nome já diz ela deve ser usada com o event StepIn =p Serve para adicionar damage em fields... Você não precisa de um arquivo.lua, apenas coloque: <movevent event="StepIn" itemid="ID_DO_FIELD" function="onStepInField" /> e seu field já estará dando damage assim que alguém pisa em cima dele =p 2ª função ~> <span style='color:orange'>onAddField</span> Usada com o event AddItem =p Serve para adicionar damage quando o player está em um tile e outro player taca um firefield em baixo do player. <movevent event="AddItem" tileitem="0" itemid="ID_DO_FIELD" function="onAddField" /> OBS: Aconselho sempre que você usar onStepInField (1ª função) adicionar onAddField com o mesmo id para dar um ar mais real ao server. 3ª função ~> <span style='color:orange'>onEquipItem</span> Usada com o event Equip. Serve para configurar rings, amuletos, etc etc... <movevent event="Equip" itemid="ID_DO_ITEM" slot="ring" function="onEquipItem" /> OBS: é bom você colocar 2 tags, uma com o ID_DO_ITEM não usado e outra com o ID_DO_ITEM usando, gastando tempo. 4ª função ~> <span style='color:orange'>onDeEquipItem</span> Usada com o event DeEquip. Serve para quando o player tirar o ekip especial cancelar os efeitos desse equipamento. <movevent event="DeEquip" itemid="ID_DO_ITEM_ATIVO" slot="ring" function="onDeEquipItem" /> OBS: ID_DO_ITEM_ATIVO é o id do item sendo usado... <span style='font-size:25pt;line-height:100%'><span style='color:gray'>EXEMPLOS:</span></span> Bom... depois de toooooda essa teoria vamos ao que interessa o/ exemplos =) (tem poucos - até mesmo porque existem vários exemplos na pasta scripts dos ots - mais se eu achar que precisa com o tempo vou adicionando novos exemplos) Exemplo 01 .:. Configurando Stealth Ring Abra data/movements/movements.xml e adicione: <movevent event="Equip" itemid="2165" slot="ring" function="onEquipItem" /> <movevent event="Equip" itemid="2202" slot="ring" function="onEquipItem" /> <movevent event="DeEquip" itemid="2202" slot="ring" function="onDeEquipItem" /> Agora vá em data/items/items.xml e adicione: <item id="2165" name="stealth ring"> <attribute key="transformEquipTo" value="2202"/> <attribute key="canDecay" value="0"/> <attribute key="showduration" value="1"/> </item> <item id="2202" name="stealth ring"> <attribute key="transformDeEquipTo" value="2165"/> <attribute key="duration" value="600"/> <attribute key="showduration" value="1"/> <attribute key="invisible" value="1"/> </item> E pronto, seu Stealth Ring já está prontinho para funcionar Exemplo 02 .:. Como usar tileitem Vamos fazer pão a partir da massa (ja com a massa pronta - id 2693) pra aprendermos =p Você precisa da massa do pão(2693) e de um forno aceso(1786). Arraste a massa para cima do forno e a massa esquentará e virará um pão o/ em data/movements/movements.xml <movevent event="AddItem" tileitem="1" itemid="1786" script="pao.lua" /> Observe o detalhe: o itemid é do forno e tileitem está ativado(tileitem="1"), ou seja, o script irá ser ativado quando você arrastar alguma coisa pra cima do forno, não quando você arrastar o forno!Agora crie um arquivo chamado pao.lua em data/movements/scripts/ e coloque isso: function onAddItem(moveitem, tileitem, pos) if moveitem.itemid == [b]2693[/b] then -- ID da massa do pão doTransformItem(moveitem.uid,2689) -- transforma a massa em pão(2689) end return 1 end Assim sempre que você arrastar um item de id 2693 pro forno (tileitem="1", lembra?) o moveitem(que no caso vai ser a massa do pão) vai se transformar em pão o/ <span style='font-size:25pt;line-height:100%'><span style='color:gray'>ÚLTIMAS PALAVRAS:</span></span>Difícil? Talvez =p Se você tiver chegado até aqui e intendido, o que está esperando? vá fazer seus próprios movements o/ Se você não tiver intendido, levante do pc, dê uma andadinha básica pela casa de uns 10 minutinhos para assimilar as informações e volte para reler o/ Boa sorte =) FlW CyA! Compartilhar este post Link para o post Compartilhar em outros sites
Dragonheart 0 #2 Postado 10 Fevereiro, 2007 o.O parabens, otimo tutorial Realmente seu esforço de 5 hrs valeu a pena xD ainda não tinha um tutorial explikando o movements das novas verções Aprovado Compartilhar este post Link para o post Compartilhar em outros sites
Pedroddcunha 3 #3 Postado 10 Fevereiro, 2007 Ae Ja tinha visto em outro fórum Acho que era você o criador do tópico Não lembro De qualquer jeito Muito bom isto mesmo Vai ajudar bastante gente Aprovado Fui Compartilhar este post Link para o post Compartilhar em outros sites
Razor 1 #4 Postado 10 Fevereiro, 2007 Aprovado! Tutorial muito bom! Pelo seu esforco de 5 horas estarei dando de meu bolso mais 25OT$ dos que voce ja merecia pelo tuto. esK~ Compartilhar este post Link para o post Compartilhar em outros sites
Convidado Tetenho #5 Postado 11 Fevereiro, 2007 omg tutorial irado da pra fazer muitas coisas co esses movements aprovaduu! Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #6 Postado 5 Agosto, 2007 Oo mto bom tuto... tah de parabens....esclareceu todas minhas duvidas =] Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #7 Postado 5 Agosto, 2007 Oo mto bom tuto... tah de parabens....esclareceu todas minhas duvidas =] Compartilhar este post Link para o post Compartilhar em outros sites
Cherife 0 #8 Postado 5 Agosto, 2007 Putz cara, que trabalhão pra escrever tudo isso. Pelo seu esforco de 5 horas estarei dando de meu bolso mais 25OT$ dos que voce ja merecia pelo tuto.[/b]aheiuhaeieau25, putz, como é dificil ganhar o pão! Compartilhar este post Link para o post Compartilhar em outros sites
Cherife 0 #9 Postado 5 Agosto, 2007 Putz cara, que trabalhão pra escrever tudo isso. Pelo seu esforco de 5 horas estarei dando de meu bolso mais 25OT$ dos que voce ja merecia pelo tuto.[/b]aheiuhaeieau25, putz, como é dificil ganhar o pão! Compartilhar este post Link para o post Compartilhar em outros sites
Muadogib 0 #10 Postado 9 Agosto, 2007 muito bom, apesar de ter muita coisa pra ler conseguir entender umas coisas...outras ja sabia...outras vo tentar depois... qualquer duvida eu posto ae vlw Compartilhar este post Link para o post Compartilhar em outros sites