SU
moveevent

[action][moveevent] Training Room V1.0

Por Sukx, 12 de ago. de 2009 em Actions e Talkactions

action
otserv
tibia
script
5
1.7k
SukxS
12 de agosto de 2009 às 10:06

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 Agosto 12 por Sukx

13 de agosto de 2009 às 23:06

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.

SukxS
14 de agosto de 2009 às 11:29

Ainda estou fazendo o Script do Knight. Quando estiver pronto eu atualizo aqui ;D

\Mattheus ~*\
14 de agosto de 2009 às 13:22

Achei o Post Muiito bem explicado ;)

Vo Aguarda o novo update .

4 meses depois...
satan666S
06 de dezembro de 2009 às 14:45

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 Dezembro 6 por Marcryzius