Ir para conteúdo

[action][moveevent] Training Room V1.0


Sukx

Posts Recomendados

Bom decidi criar um estilo de treiner diferente.

Ele é basicamente dividido em 3 partes: Knights, Paladins e Mages.

 

Autor: Sukx

Testado em: 8.50

Testado: TFS 0.3.4 patch 2

Tipo: Action e MoveEvent

 

Vamos começar!

 

1° Vá a pasta \data\actions\scripts\ copie e cole 3 arquivos.

2° Renomeie os arquivos para paladindoor.lua, magedoor.lua e knightdoor.lua

3° Vá a pasta \data\actions\ abra o arquivo actions.xml e adicione as seguintes linhas:

 

	<!-- Training Room -->
<action actionid="2500" script="paladindoor.lua"/>
<action actionid="2501" script="magedoor.lua"/>
<action actionid="2502" script="knightdoor.lua"/>

4° Abra a pasta \data\actions\scripts\ abra o arquivo paladindoor.lua apague tudo oque tiver dentro e adicione as seguintes linhas:

 

-- Paladin Training Room --
-- Criado por Sukx --
function onUse(cid, item, frompos, item2, topos)

reqvoc = getPlayerVocation(cid)
pos = getPlayerPosition(cid)

if item.actionid == [b][color="#FF8C00"]2500[/color][/b] then
if reqvoc == [color="#0000FF"][b]3[/b][/color] or reqvoc == [color="#0000FF"][b]7[/b][/color] then

if pos.x == topos.x then
if pos.y < topos.y then
pos.y = topos.y
else
pos.y = topos.y
end
elseif pos.y == topos.y then
if pos.x < topos.x then
pos.x = topos.x
else
pos.x = topos.x
end
else
doPlayerSendTextMessage(cid,22,'Fique de frente para a porta.')
return 1
end

doTransformItem(item.uid,item.itemid+1)
doTeleportThing(cid,pos)
else
doPlayerSendTextMessage(cid,22,'Somente Paladins entram aqui.')
end
return 1
else
return 0
end
end

Explicando:

Laranja: Coloque aqui o número da actionid que você colocou no arquivo \data\actions\actions.xml

Azul: Coloque aqui os ids das vocações que poderão passar pela porta, no meu caso 3= Paladin 7= Royal Paladin

 

5° Após isso salve e feche o arquivo. Abra o magedoor.lua apague tudo oque tiver dentro e adicione as seguintes linhas:

 

-- Mages Training Room --
-- Criado por Sukx --
function onUse(cid, item, frompos, item2, topos)

reqvoc = getPlayerVocation(cid)
pos = getPlayerPosition(cid)

if item.actionid == [color="#FF8C00"][b]2501[/b][/color] then
if reqvoc == [color="#0000FF"][b]1[/b][/color] or reqvoc == [color="#0000FF"][b]2[/b][/color] or reqvoc == [color="#0000FF"][b]5[/b][/color] or reqvoc == [color="#0000FF"][b]6[/b][/color] then

if pos.x == topos.x then
if pos.y < topos.y then
pos.y = topos.y
else
pos.y = topos.y
end
elseif pos.y == topos.y then
if pos.x < topos.x then
pos.x = topos.x
else
pos.x = topos.x
end
else
doPlayerSendTextMessage(cid,22,'Fique de frente para a porta.')
return 1
end

doTransformItem(item.uid,item.itemid+1)
doTeleportThing(cid,pos)
else
doPlayerSendTextMessage(cid,22,'Somente Mages entram aqui.')
end
return 1
else
return 0
end
end

Explicando:

Laranja: Coloque aqui o número da actionid que você colocou no arquivo \data\actions\actions.xml

Azul: Coloque aqui os ids das vocações que poderão passar pela porta, no meu caso 1= Sorcerer, 2= Druid, 5= Master Sorcerer, 6= Elder Druid

 

6° Após isso salve e feche o arquivo. Abra o knightdoor.lua apague tudo oque tiver dentro e adicione as seguintes linhas:

 

-- Knight Training Room --
-- Criado por Sukx --
function onUse(cid, item, frompos, item2, topos)

reqvoc = getPlayerVocation(cid)
pos = getPlayerPosition(cid)

if item.actionid == [color="#FF8C00"][b]2502[/b][/color] then
if reqvoc == [color="#0000FF"][b]4[/b][/color] or reqvoc == [color="#0000FF"][b]8[/b][/color] then

if pos.x == topos.x then
if pos.y < topos.y then
pos.y = topos.y
else
pos.y = topos.y
end
elseif pos.y == topos.y then
if pos.x < topos.x then
pos.x = topos.x
else
pos.x = topos.x
end
else
doPlayerSendTextMessage(cid,22,'Fique de frente para a porta.')
return 1
end

doTransformItem(item.uid,item.itemid+1)
doTeleportThing(cid,pos)
else
doPlayerSendTextMessage(cid,22,'Somente Knights entram aqui.')
end
return 1
else
return 0
end
end

Explicando:

Laranja: Coloque aqui o número da actionid que você colocou no arquivo \data\actions\actions.xml

Azul: Coloque aqui os ids das vocações que poderão passar pela porta, no meu caso 4= Knight, 8= Elite Knight

 

7° Após isso salve e feche o arquivo. Vá a pasta \data\movements\ abra o arquivo movements.xml e adicione as seguintes linhas:

 

	<!-- Sukx Movements -->
<movevent type="StepIn" actionid="2503" event="script" value="paladin.lua" />
<movevent type="StepIn" actionid="2504" event="script" value="paladin.lua" />
<movevent type="StepIn" actionid="2505" event="script" value="paladin.lua" />
<movevent type="StepIn" actionid="2506" event="script" value="paladin.lua" />

8° Após isso salve e feche o arquivo. Abra a pasta \data\movements\scripts\ copie, cole e renomeie um arquivo para paladin.lua

 

9° Abra o arquivo paladin.lua apague tudo oque está escrito e adicione as seguintes linhas:

 

-- Script by Sukx
function onStepIn(cid, item, topos, position, fromPosition, item2)

-- config
pos1 = {x=topos.x-1, y=topos.y, z=topos.z, stackpos=253}
pos2 = {x=topos.x, y=topos.y-1, z=topos.z, stackpos=253}
pos3 = {x=topos.x+1, y=topos.y, z=topos.z, stackpos=253}
pos4 = {x=topos.x, y=topos.y+1, z=topos.z, stackpos=253}
actionid1 = [color="#FF8C00"][b]2503[/b][/color] -- ActionId quando o treiner está a Leste do jogador
actionid2 = [color="#FF8C00"][b]2504[/b][/color] -- ActionId quando o treiner está a Sul do jogador 
actionid3 = [color="#FF8C00"][b]2505[/b][/color] -- ActionId quando o treiner está a Oeste do jogador 
actionid4 = [color="#FF8C00"][b]2506[/b][/color] -- ActionId quando o treiner está a Norte do jogador 
msg = "Desculpe, não é possivel"
acc = getPlayerAccess(cid)

-- 1
if item.actionid == actionid1 then
if acc < 4 then
   doPlayerSendCancel(cid,msg)
   doTeleportThing(cid,pos1)
else
end
-- 2
elseif item.actionid == actionid2 then
if acc < 4 then
   doPlayerSendCancel(cid,msg)
   doTeleportThing(cid,pos2)
else
end
-- 3
elseif item.actionid == actionid3 then
if acc < 4 then
   doPlayerSendCancel(cid,msg)
   doTeleportThing(cid,pos3)
else
end

-- 4
elseif item.actionid == actionid4 then
if acc < 4 then
   doPlayerSendCancel(cid,msg)
   doTeleportThing(cid,pos4)
else
end
end

end

Explicando:

Laranja:

img16t.jpg

 

10° Salve e feche o arquivo.

 

11° Leia o seguinte tutorial para aprender a montar a training room:

» Training Room V1.0

 

 

Créditos:

Sukx

 

Comentem!

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

não vi muita utilidade. eu veria se fosse tipo, no dos knights aparecessem dois trainers, que batem com velocidade consideravel. no dos paladins, dois que batem nele e um de longe pra ele atacar, e nos dos mages food e um treiner algo assim.

Link para o comentário
Compartilhar em outros sites

  • 3 months later...

não é necessario essas linhas, pois existe o quinto elemento da função que vem com as coordenadas.

if pos.x == topos.x then

if pos.y < topos.y then

pos.y = topos.y

else

pos.y = topos.y

end

elseif pos.y == topos.y then

if pos.x < topos.x then

pos.x = topos.x

else

pos.x = topos.x

end

else

doPlayerSendTextMessage(cid,22,'Fique de frente para a porta.')

return 1

end

e poderia fazer tudo em um só script.

com o uso de tabelas diminuiria muitas linhas e não use variaveis globais, pois só serão usadas nesse script.

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

×
×
  • Criar Novo...