Ir para conteúdo
Entre para seguir isso  
Ajcmaster

[Avançado] Área de treino segura

Gostou da minha idéia?  

133 votos

  1. 1. Gostou da minha idéia?



Recommended Posts

Ajcmaster    0
Ajcmaster

--(

 

<ENTROU? COMENTA!>

 

Olá, irei mostrar aqui uma forma de fazer uma área de treino segura para os players, usando o map editor (sério!?) e scripts. O tutorial está longo mais por causa da explicação dos scripts, quem já sabe configurar isso é só olhar a idéia mesmo :P

 

Como assim "segura"?

Sabe quando você quer treinar em paz, mas vem um PK, vê que você está AFK e te mata? Pois é, com essa minha idéia você nunca mais terá esse problema!

 

Sem mais delongas, vamos começar.

 

Primeio, faça a área no map editor da seguinte forma:

(use o estilo que quiser)

Imagem Postada

Indicado com as flechas retas, está o destino dos teleports.

A janela se destaca por estar FECHADA, pois assim não tem como atirar runas ou bolts.

Ao usar a alavanca, a grade aparecerá, bloqueando a entrada no bloco de treino.

 

Scripts:

(nesse script fiz como se houvesse apenas 2 blocos a ser fechados)

 

Crie um arquivo .lua com o nome desejado na sua pasta data/actions/scripts (usarei o nome "levers_trainareas.lua")

 


function onUse(cid, item, frompos, item2, topos)



   wall1 = {x=115, y=30, z=7, stackpos=1}

   wall2 = {x=118, y=30, z=7, stackpos=1}



   getwall1 = getThingfromPos(wall1)

   getwall2 = getThingfromPos(wall2)



--bloco 1

   if item.uid == 8005 and item.itemid == 1945 and getwall5.itemid == 0 and getwall5.itemid == 0 then

      doCreateItem(1547,1,wall5)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8005 and item.itemid == 1946 and getwall5.itemid == 1547 and getwall5.itemid == 1547 then

      doRemoveItem(getwall5.uid,1)

      doTransformItem(item.uid,item.itemid-1)     



--bloco 2

   elseif item.uid == 8006 and item.itemid == 1945 and getwall6.itemid == 0 and getwall6.itemid == 0 then

      doCreateItem(1547,1,wall6)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8006 and item.itemid == 1946 and getwall6.itemid == 1547 and getwall6.itemid == 1547 then

      doRemoveItem(getwall6.uid,1)

      doTransformItem(item.uid,item.itemid-1)    



   else

      doPlayerSendCancel(cid,"Algo esta bloqueando a grade.")

   end



   return 1

end

Entendendo o código:

  wall1 = {x=115, y=30, z=7, stackpos=1}

   wall2 = {x=118, y=30, z=7, stackpos=1}

Cada "wall" representa uma grade.

No bloco número 1 a grade será wall1, e no bloco 2 será wall2.

No x, y e z que aparecem você deve colocar as coordenadas do lugar onde aparecerá a GRADE de cada bloco.

  getwall1 = getThingfromPos(wall1)

   getwall2 = getThingfromPos(wall2)
Para cada wall você deverá colocar um getwall, que irá pegar a coordenada do wall descrito

para a wall1)

 

if item.uid == 8001 and item.itemid == 1945 and getwall1.itemid == 0 and getwall1.itemid == 0 then

      doCreateItem(1547,1,wall1)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8001 and item.itemid == 1946 and getwall1.itemid == 1547 and getwall1.itemid == 1547 then

      doRemoveItem(getwall1.uid,1)

      doTransformItem(item.uid,item.itemid-1)    

Aqui iniciamos os comandos para criação da grade, e também para tirá-la quando a alavanca for ativada.

 

if item.uid == 8001

Quando aparecer isso, no lugar de 8001 você deve colocar o UniqueID da alavanca do bloco (nesse caso seria o bloco 1).

 

and getwall1.itemid == 0 and getwall1.itemid == 0 then

Aqui você deve trocar o numero do getwall pelo correspondente do bloco, nesse caso é o 1 mesmo.

Nesse código, você diz que no lugar onde aparecerá a grade nao deve ter nenhum item, por isso o id "0", ou seja, nada.

 

doCreateItem(1547,1,wall1)

Cria a grade de ID 1547, na posição wall1 (óbviamente você não é obrigado a usar essa grade, você pode usar qualquer parede, apenas troque o ID).

 

getwall1.itemid == 1547 and getwall1.itemid == 1547 then

Siginifica que para retirar a grade, no sqm que ela está deve estar apenas a grade (ID 1547). Note que se você usar outra parede, você deverá substituir esse ID pelo o da parede usada.

 

doRemoveItem(getwall1.uid,1)

Remove a grade da posição getwall1.

 

  else

      doPlayerSendCancel(cid,"Algo esta bloqueando a grade.")

   end



   return 1

end

Aqui, indicamos a mensagem que será enviada ao player caso algum item esteja no lugar de onde deve aparecer a grade. Você pode escrever qualquer coisa, desde que esteje dentro das aspas, e lembre-se de não colocar acentos ou cedilha.

 

A cada grade você deverá criar um wall, um getwall para o wall, e um script inteiro como esse;

  elseif item.uid == 8002 and item.itemid == 1945 and getwall2.itemid == 0 and getwall2.itemid == 0 then

      doCreateItem(1547,1,wall2)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8002 and item.itemid == 1946 and getwall2.itemid == 1547 and getwall2.itemid == 1547 then

      doRemoveItem(getwall2.uid,1)

      doTransformItem(item.uid,item.itemid-1)    

onde você deverá editar os números para que ocorra tudo certo.

 

 

elseif item.uid == 8002 and item.itemid == 1945 and getwall2.itemid == 0 and getwall2.itemid == 0 then

VEJA QUE ADICIONAMOS "else" JUNTO AO "if" QUANDO ESSE NÃO FOR O PRIMEIRO BLOCO! APENAS O PRIMEIRO BLOCO DEVE COMEÇAR COM "if"!

Agora em data/actions/actions.xml, insira:

 

<action uniqueid="8001" script="levers_trainarea.lua" />

 

Note que para cada alavanca você deve botar uma linha igual essa com o UniqueID da alavanca. Se tivéssemos 3 alavancas seria assim (note a mudança dos UniqueIDs):

 

<action uniqueid="8001" script="levers_trainarea.lua" />

<action uniqueid="8002" script="levers_trainarea.lua" />

<action uniqueid="8003" script="levers_trainarea.lua" />

 

 

 

Assim, o player entra no bloquinho com a alavanca, aciona ela e fecha seu bloco, teleporta-se para os montros e treina em paz sem perigo de ser atacado.

 

Lembre-se que se a parede for vertical, você deverá usar o id da grade (ou parede escolhida) na posição vertical, no caso da grade, seria ID 1546.

 

Ufa! Espero que gostem e qualquer dúvida pode perguntar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ajcmaster    0
Ajcmaster

--(

 

<ENTROU? COMENTA!>

 

Olá, irei mostrar aqui uma forma de fazer uma área de treino segura para os players, usando o map editor (sério!?) e scripts. O tutorial está longo mais por causa da explicação dos scripts, quem já sabe configurar isso é só olhar a idéia mesmo :P

 

Como assim "segura"?

Sabe quando você quer treinar em paz, mas vem um PK, vê que você está AFK e te mata? Pois é, com essa minha idéia você nunca mais terá esse problema!

 

Sem mais delongas, vamos começar.

 

Primeio, faça a área no map editor da seguinte forma:

(use o estilo que quiser)

Imagem Postada

Indicado com as flechas retas, está o destino dos teleports.

A janela se destaca por estar FECHADA, pois assim não tem como atirar runas ou bolts.

Ao usar a alavanca, a grade aparecerá, bloqueando a entrada no bloco de treino.

 

Scripts:

(nesse script fiz como se houvesse apenas 2 blocos a ser fechados)

 

Crie um arquivo .lua com o nome desejado na sua pasta data/actions/scripts (usarei o nome "levers_trainareas.lua")

 


function onUse(cid, item, frompos, item2, topos)



   wall1 = {x=115, y=30, z=7, stackpos=1}

   wall2 = {x=118, y=30, z=7, stackpos=1}



   getwall1 = getThingfromPos(wall1)

   getwall2 = getThingfromPos(wall2)



--bloco 1

   if item.uid == 8005 and item.itemid == 1945 and getwall5.itemid == 0 and getwall5.itemid == 0 then

      doCreateItem(1547,1,wall5)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8005 and item.itemid == 1946 and getwall5.itemid == 1547 and getwall5.itemid == 1547 then

      doRemoveItem(getwall5.uid,1)

      doTransformItem(item.uid,item.itemid-1)     



--bloco 2

   elseif item.uid == 8006 and item.itemid == 1945 and getwall6.itemid == 0 and getwall6.itemid == 0 then

      doCreateItem(1547,1,wall6)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8006 and item.itemid == 1946 and getwall6.itemid == 1547 and getwall6.itemid == 1547 then

      doRemoveItem(getwall6.uid,1)

      doTransformItem(item.uid,item.itemid-1)    



   else

      doPlayerSendCancel(cid,"Algo esta bloqueando a grade.")

   end



   return 1

end

Entendendo o código:

  wall1 = {x=115, y=30, z=7, stackpos=1}

   wall2 = {x=118, y=30, z=7, stackpos=1}

Cada "wall" representa uma grade.

No bloco número 1 a grade será wall1, e no bloco 2 será wall2.

No x, y e z que aparecem você deve colocar as coordenadas do lugar onde aparecerá a GRADE de cada bloco.

  getwall1 = getThingfromPos(wall1)

   getwall2 = getThingfromPos(wall2)
Para cada wall você deverá colocar um getwall, que irá pegar a coordenada do wall descrito

para a wall1)

 

if item.uid == 8001 and item.itemid == 1945 and getwall1.itemid == 0 and getwall1.itemid == 0 then

      doCreateItem(1547,1,wall1)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8001 and item.itemid == 1946 and getwall1.itemid == 1547 and getwall1.itemid == 1547 then

      doRemoveItem(getwall1.uid,1)

      doTransformItem(item.uid,item.itemid-1)    

Aqui iniciamos os comandos para criação da grade, e também para tirá-la quando a alavanca for ativada.

 

if item.uid == 8001

Quando aparecer isso, no lugar de 8001 você deve colocar o UniqueID da alavanca do bloco (nesse caso seria o bloco 1).

 

and getwall1.itemid == 0 and getwall1.itemid == 0 then

Aqui você deve trocar o numero do getwall pelo correspondente do bloco, nesse caso é o 1 mesmo.

Nesse código, você diz que no lugar onde aparecerá a grade nao deve ter nenhum item, por isso o id "0", ou seja, nada.

 

doCreateItem(1547,1,wall1)

Cria a grade de ID 1547, na posição wall1 (óbviamente você não é obrigado a usar essa grade, você pode usar qualquer parede, apenas troque o ID).

 

getwall1.itemid == 1547 and getwall1.itemid == 1547 then

Siginifica que para retirar a grade, no sqm que ela está deve estar apenas a grade (ID 1547). Note que se você usar outra parede, você deverá substituir esse ID pelo o da parede usada.

 

doRemoveItem(getwall1.uid,1)

Remove a grade da posição getwall1.

 

  else

      doPlayerSendCancel(cid,"Algo esta bloqueando a grade.")

   end



   return 1

end

Aqui, indicamos a mensagem que será enviada ao player caso algum item esteja no lugar de onde deve aparecer a grade. Você pode escrever qualquer coisa, desde que esteje dentro das aspas, e lembre-se de não colocar acentos ou cedilha.

 

A cada grade você deverá criar um wall, um getwall para o wall, e um script inteiro como esse;

  elseif item.uid == 8002 and item.itemid == 1945 and getwall2.itemid == 0 and getwall2.itemid == 0 then

      doCreateItem(1547,1,wall2)

      doTransformItem(item.uid,item.itemid+1)

   elseif item.uid == 8002 and item.itemid == 1946 and getwall2.itemid == 1547 and getwall2.itemid == 1547 then

      doRemoveItem(getwall2.uid,1)

      doTransformItem(item.uid,item.itemid-1)    

onde você deverá editar os números para que ocorra tudo certo.

 

 

elseif item.uid == 8002 and item.itemid == 1945 and getwall2.itemid == 0 and getwall2.itemid == 0 then

VEJA QUE ADICIONAMOS "else" JUNTO AO "if" QUANDO ESSE NÃO FOR O PRIMEIRO BLOCO! APENAS O PRIMEIRO BLOCO DEVE COMEÇAR COM "if"!

Agora em data/actions/actions.xml, insira:

 

<action uniqueid="8001" script="levers_trainarea.lua" />

 

Note que para cada alavanca você deve botar uma linha igual essa com o UniqueID da alavanca. Se tivéssemos 3 alavancas seria assim (note a mudança dos UniqueIDs):

 

<action uniqueid="8001" script="levers_trainarea.lua" />

<action uniqueid="8002" script="levers_trainarea.lua" />

<action uniqueid="8003" script="levers_trainarea.lua" />

 

 

 

Assim, o player entra no bloquinho com a alavanca, aciona ela e fecha seu bloco, teleporta-se para os montros e treina em paz sem perigo de ser atacado.

 

Lembre-se que se a parede for vertical, você deverá usar o id da grade (ou parede escolhida) na posição vertical, no caso da grade, seria ID 1546.

 

Ufa! Espero que gostem e qualquer dúvida pode perguntar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Razor    1
Razor

Achei perfeita!

Tutorial aprovadissimo com mto orgulho!

 

esK~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Razor    1
Razor

Achei perfeita!

Tutorial aprovadissimo com mto orgulho!

 

esK~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nighttalle    0
Nighttalle

Eu não gosto de areas de treino :S

Prefiro que o monk/ghoul sejam sumonados por mages..

E isso ta mais pra area de Cheaters..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nighttalle    0
Nighttalle

Eu não gosto de areas de treino :S

Prefiro que o monk/ghoul sejam sumonados por mages..

E isso ta mais pra area de Cheaters..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ajcmaster    0
Ajcmaster

Nem sempre o pessoal é cheater, se você coloca um daqueles monk trainers que nao morrem nunca praticamente, é só deixar seu char atacando ele, não é necessário um macro.

 

E normalmente os HLS se aproveitam disso e matam o pessoal que ta treinando. Isso além de fazer algumas pessoas saírem do server por desgosto, muitas vezes fazem o GM ou GOD de extressar com o pessoal reclamando.

 

Pensando nisso que fiz isso, e não em cheaters...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ajcmaster    0
Ajcmaster

Nem sempre o pessoal é cheater, se você coloca um daqueles monk trainers que nao morrem nunca praticamente, é só deixar seu char atacando ele, não é necessário um macro.

 

E normalmente os HLS se aproveitam disso e matam o pessoal que ta treinando. Isso além de fazer algumas pessoas saírem do server por desgosto, muitas vezes fazem o GM ou GOD de extressar com o pessoal reclamando.

 

Pensando nisso que fiz isso, e não em cheaters...

Compartilhar este post


Link para o post
Compartilhar em outros sites
nzenhow    0
nzenhow

Ótima idéia e belo tutorial, parabéns.

Editado por - K-3-Y -

Compartilhar este post


Link para o post
Compartilhar em outros sites
nzenhow    0
nzenhow

Ótima idéia e belo tutorial, parabéns.

Editado por - K-3-Y -

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mandinha    0
Mandinha

o,O... que perfeitooooooooooooo.... Parabéns kra ^^

 

Q d++! ^^

 

thx..

 

//Mand~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mandinha    0
Mandinha

o,O... que perfeitooooooooooooo.... Parabéns kra ^^

 

Q d++! ^^

 

thx..

 

//Mand~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dragonheart    0
Dragonheart

Muito bom cara!

sem perigos de morte msm xD

prefiro areas de treinos assim, sempre vejo ots com akelas areas de treino td junto sem action nenhuma, as vezes sem teleport ainda

parabens

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dragonheart    0
Dragonheart

Muito bom cara!

sem perigos de morte msm xD

prefiro areas de treinos assim, sempre vejo ots com akelas areas de treino td junto sem action nenhuma, as vezes sem teleport ainda

parabens

Compartilhar este post


Link para o post
Compartilhar em outros sites
Convidado Lupita   
Convidado Lupita

Originally posted by K-3-Y -

mt obrigado, um kra hackio meu amigu e coloco demon de trainer no ot dele O.o

@-K-3-Y- não faça comentarios desnecessários e que são de completo desnexo ao tópico acima.

 

Muito Obrigado.

 

 

//Lupita

Compartilhar este post


Link para o post
Compartilhar em outros sites
Convidado Lupita   
Convidado Lupita

Originally posted by K-3-Y -

mt obrigado, um kra hackio meu amigu e coloco demon de trainer no ot dele O.o

@-K-3-Y- não faça comentarios desnecessários e que são de completo desnexo ao tópico acima.

 

Muito Obrigado.

 

 

//Lupita

Compartilhar este post


Link para o post
Compartilhar em outros sites
ianajh    0
ianajh

cara resolvi montar um ot, e era isso que eu tava precisando xD

Compartilhar este post


Link para o post
Compartilhar em outros sites
Black Dragon    0
Black Dragon

Eu acho completamente inutíl!

a Unica coisa que vc precisa fazer eh usar uma level door se tive gente n entra +

Compartilhar este post


Link para o post
Compartilhar em outros sites
GoD Chad    0
GoD Chad

Otimo kra!

Parabens

Compartilhar este post


Link para o post
Compartilhar em outros sites
-mexican    0
-mexican

Boa, mto criativo :D

 

Mas tipo, e se o cara entra, tranca a grade la pra treinar e loga? A sala de treino que ele logou vai fikar fechada ateh o proximo Reset?

 

 

Nao seria mais simples, salas de treino, com PZ ao redor? Eu faço as minhas assim, nao tem perigo de morte tbm...mas essa sua com action fikou massa kra, Parabéns

 

 

[/i]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×