Ir para conteúdo

[Moveevent] Perfect Treiner System


leleos

Posts Recomendados

Perfect Treiner System

 

Utilidade: Voce pisa no tile e o treiner aparece, diferente dos outros sistemas esse e muito mais pratico.

 

Bom esse e meu primeiro script, eu tava dando uma olhada aqui so que nao achei nenhum script igual os que eu achei erao muito complicados, por isso resolvi postar o meu.

 

Bom chega de conversa, Mao na massa.

 

Fassa uma area igual essa e ponha as mesmas ActionsId:

 

imagemnf.png

 

Explicando:

ActionsIds.

9000 = Norte

9001 = Sul

9002 = Esquerda

9003 = Direita

 

Bom removi as 2 outras verções que tinha pq não havia necessidade, pois essa vai ser a melhor.

Agradeço ao kydrai por me da a luz de como faser o script.

 

Versão Fixa:

 

Bom script totalmente pequeno ele tem 2 kb pronto, comparado ao outro que tinha 5 kb.

 

Bom vamos la.

 

Abra o MoveEvents.XML e adicione:

<movevent type="StepIn" actionid="9000" event="script" value="treiners.lua"/>

<movevent type="StepOut" actionid="9000" event="script" value="treiners.lua"/>

<movevent type="StepIn" actionid="9001" event="script" value="treiners.lua"/>

<movevent type="StepOut" actionid="9001" event="script" value="treiners.lua"/>

<movevent type="StepIn" actionid="9002" event="script" value="treiners.lua"/>

<movevent type="StepOut" actionid="9002" event="script" value="treiners.lua"/>

<movevent type="StepIn" actionid="9003" event="script" value="treiners.lua"/>

<movevent type="StepOut" actionid="9003" event="script" value="treiners.lua"/>

 

Depois disso abra a pasta data\movements\scripts, e copie qualquer arquivo de la, e renomeie para treiners.lua, apague tudo oque estiver dentro e ponha isso:

function onStepIn(cid, item, pos)

local charPos = getCreaturePosition(cid)

local monkOne

local monkTwo

 

if(item.actionid == 9000) then

monkOne = {x = charPos.x - 1, y = charPos.y - 2, z = charPos.z}

monkTwo = {x = charPos.x + 1, y = charPos.y - 2, z = charPos.z}

 

elseif(item.actionid == 9001) then

monkOne = {x = charPos.x - 1, y = charPos.y + 2, z = charPos.z}

monkTwo = {x = charPos.x + 1, y = charPos.y + 2, z = charPos.z}

 

elseif(item.actionid == 9002) then

monkOne = {x = charPos.x - 2, y = charPos.y - 1, z = charPos.z}

monkTwo = {x = charPos.x -2, y = charPos.y + 1, z = charPos.z}

 

elseif(item.actionid == 9003) then

monkOne = {x = charPos.x + 2, y = charPos.y - 1, z = charPos.z}

monkTwo = {x = charPos.x + 2, y = charPos.y + 1, z = charPos.z}

 

else

return true

end

 

doSummonCreature("Training Monk", monkOne)

doSummonCreature("Training Monk", monkTwo)

return true

end

 

function onStepOut(cid, item, pos)

local charPos = getCreaturePosition(cid)

local monkOne

local monkTwo

 

if(item.actionid == 9000) then

monkOne = {x = charPos.x - 1, y = charPos.y - 2, z = charPos.z}

monkTwo = {x = charPos.x + 1, y = charPos.y - 2, z = charPos.z}

 

elseif(item.actionid == 9001) then

monkOne = {x = charPos.x - 1, y = charPos.y + 2, z = charPos.z}

monkTwo = {x = charPos.x + 1, y = charPos.y + 2, z = charPos.z}

 

elseif(item.actionid == 9002) then

monkOne = {x = charPos.x - 2, y = charPos.y - 1, z = charPos.z}

monkTwo = {x = charPos.x -2, y = charPos.y + 1, z = charPos.z}

 

elseif(item.actionid == 9003) then

monkOne = {x = charPos.x + 2, y = charPos.y - 1, z = charPos.z}

monkTwo = {x = charPos.x + 2, y = charPos.y + 1, z = charPos.z}

 

else

return true

end

 

doRemoveCreature(getThingfromPos({x = monkOne.x, y = monkOne.y, z = monkOne.z, stackpos = 253}).uid)

doRemoveCreature(getThingfromPos({x = monkTwo.x, y = monkTwo.y, z = monkTwo.z, stackpos = 253}).uid)

doSendMagicEffect(monkOne, 2)

doSendMagicEffect(monkTwo, 2)

return true

end

Bom ta ai a Atualizaçao, tentei diminuir o maximo que pude, juntando tudo em 1 Script so.</div></div>

 

 

Explicando:



 

Vermelho = Sao as ActionsIds dos tiles que no caso no meu e 9000,9001,9002 e 9003.

 

Laranja = Nome dos Treiners, que no caso o meu chama Training Monk, se o seu for outro nome mude-o.

 

Bom ta ai, desculpem os erros de portugues e que eu to com um pouco com sono amanha eu dou uma editada, qualquer duvida e so posta.

 

Ah so pra falar os acentos do meu teclado nao estao funcionado por isso a falta de acentuaçao.

Script testado em TFS 3.4 mas deve funcionar no 3.5 tambem.

 

Por favor peço a todos que usarem os scripts para nao retirarem os creditos que sao 100% meus.

 

Comenta ae!!

 

Att,Leleo.

Editado por leleos
Link para o comentário
Compartilhar em outros sites

~~Tópico~~

 

Tipo assim fica mais facio, mais acho que dava pra faze uma script unica e menor :x

(mais ta muito bom, vlw D:)

 

~Outro~

 

Agora só falta saber por o trainer com a outfit de item :D

 

Também queria saber ;O, tentei botar no looktype e da debug =/

Editado por Vilden
Link para o comentário
Compartilhar em outros sites

fico muito bom mais dava pra ter simplificado como o vilden disse

 

a respeito da duvida pra por o mosnto com outfit de item eh simples so colocar look typeex no lugar de looktype e na frente por o item q vc qr q ele se pareça.

Editado por Polar
Link para o comentário
Compartilhar em outros sites

@Polar está certo...

 

@Vilden, se quiser faça igual tá no meu OT, apague seu treiner e deixe assim:

 

<?xml version="1.0" encoding="UTF-8"?>
<monster name="Training" species="human" nameDescription="a Training" race="undead" experience="0" speed="0" manacost="0">
<health now="50000" max="50000"/>
<look typeex="5787" />
<targetchange interval="60000" chance="0"/>
<strategy attack="100" defense="0"/>
<flags>
  <flag summonable="0"/>
  <flag attackable="1"/>
  <flag hostile="1"/>
  <flag illusionable="0"/>
  <flag convinceable="0"/>
  <flag pushable="0"/>
  <flag canpushitems="1"/>
  <flag staticattack="80"/>
  <flag lightlevel="0"/>
  <flag lightcolor="0"/>
  <flag targetdistance="1"/>
  <flag runonhealth="0"/>
</flags>
<attacks>
  <attack name="melee" interval="2000" min="-0" max="-1"/>
</attacks>
<defenses armor="0" defense="0">
<defense name="healing" interval="1000" chance="60" min="5000" max="15000">
<attribute key="areaEffect" value="blueshimmer"/>
</defense>
</defenses>
<immunities>
  <immunity physical="0"/>
  <immunity energy="0"/>
  <immunity fire="0"/>
  <immunity holy="0"/>
  <immunity death="0"/>
  <immunity poison="0"/>
  <immunity lifedrain="0"/>
  <immunity paralyze="0"/>
  <immunity outfit="0"/>
  <immunity drunk="0"/>
  <immunity invisible="0"/>
</immunities>
 </monster>

 

 

@leleos, quanto ao que disseram é verdade, dava pra diminuir o script mas enfim...tá show de bola, idéia muito boa mesmo, Parabéns!

 

 

Sem mais~

Editado por genoma
Link para o comentário
Compartilhar em outros sites

Bom desculpem pela ausencia, e que o modem do meu pc queimou.

 

Obrigado a todos que gostarao do script, vou tenta diminuir ele, e se eu consegui eu posto aqui pra vcs.

 

Ta ai qualquer duvida postem.

 

Abraços!

 

@All!!

 

Script Atualizado!

Editado por leleos
Link para o comentário
Compartilhar em outros sites

Sua atualização ficou totalmente sem sentido. E oq seria aquele doorPos?

Repare uma parte do seu script modificado:

function onStepIn(cid, item, pos)

local charPos = getCreaturePosition(cid)

local monkOne

local monkTwo

 

if(item.actionid == 9000) then

monkOne = {x = charPos.x - 1, y = charPos.y - 2, z = charPos.z}

monkTwo = {x = charPos.x + 1, y = charPos.y - 2, z = charPos.z}

 

elseif(item.actionid == 9001) then

monkOne = {x = charPos.x - 1, y = charPos.y + 2, z = charPos.z}

monkTwo = {x = charPos.x + 1, y = charPos.y + 2, z = charPos.z}

 

elseif(item.actionid == 9002) then

monkOne = {x = charPos.x - 2, y = charPos.y - 1, z = charPos.z}

monkTwo = {x = charPos.x -2, y = charPos.y + 1, z = charPos.z}

 

elseif(item.actionid == 9003) then

monkOne = {x = charPos.x + 2, y = charPos.y - 1, z = charPos.z}

monkTwo = {x = charPos.x + 2, y = charPos.y + 1, z = charPos.z}

 

else

return true

end

 

doSummonCreature("Training Monk", monkOne)

doSummonCreature("Training Monk", monkTwo)

return true

end

Coloquei só pra vc dar uma olhada e comparar com o seu, nem testei pra ver se errei algo.

Editado por kydrai
Link para o comentário
Compartilhar em outros sites

Sua atualização ficou totalmente sem sentido. E oq seria aquele doorPos?

Repare uma parte do seu script modificado:

 

Coloquei só pra vc dar uma olhada e comparar com o seu, nem testei pra ver se errei algo.

 

 

Bom cara e que tipo esse e meu primeiro script nao manjo muito, por isso fico meio inrrolado la, mais o script funciono perfeitamente.

 

O doorPos, era de um outro script que eu usei como base para faser esse por isso esqueci de remove mais agora ja tirei ele e obrigado por comenta.

 

Sobre ter ficado sem sentido é que eu não sei muita coisa de script ainda, por isso vou estudar algumas funções, para simplificar ao maximo o script.

 

Bom é isso, abraços!

 

@Edit~~

 

Bom ta ai a utima atualização do script só usar e abusa do script agora.

 

Abraços!

Editado por leleos
Link para o comentário
Compartilhar em outros sites

Ai lek, eu testei no meu ot.. mas deu um problema.

 

Por exemplo, meus trainers ficam em uma ilha, quando eu subo no tile especial, o trainer aparece em diversos lugares.

 

Tipo: Em cima do Coal Basin, fora do lugar (na água)

 

E quando eu saio, só alguns somem.

 

E também os trainers bugados só aparecem no tile com ACTID 9.000 (Norte)

 

Nos outros nem aparecer aparecem...

 

Qual o problema?

 

Eu fiz tudo direitinho..

Editado por Califa
Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

Opa, estou tentando usar o script, ele funciona mas tem um problema.

 

O problema é que se for uma área de training aberta dos lados, tipo a sua é totalmente fechada por uma montanha, criei uma área rapida para testar aqui alguns scripts, o seu mesmo estando com todas as posições corretas acontece isso como pode ver na imagem.

 

96460046.png

 

Script é muito bom, faz o que promote, mas falha nessa parte para sumonar, ele esta sumonando primeiro fora da área que deveria sumorar e depois sumona dentro da área correta. De uma olhadinha, no sul fiz para sumonar 3, como não tem nada de terra para sul, somente água ele sumona corretamente.

 

Se puder me ajudar ou arruma o script para que ele sumone somente dentro da área vai ajudar muito =D

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...