Ir para conteúdo

Dinastias - Sensor System By Dokmos


Dokmos

Posts Recomendados

logo-d10.jpg

 

 

 

Action Sensor System

by Dokmos



 

 

-----------------------------------------------

 

Aqui está o script que desenvolvi liberado do Dinastias, espero que gostem e divirtam-se! :party:

 





 



-----------------------------------------------



 

Características

 

 

A action é simples, o jogador instala o sensor no solo e este tem um certo tempo de duração, qualquer criatura que passar no local que o sensor está instalado enviará automaticamente uma menssagem de alerta para o jogador que instalou o sensor e se essa criatura for um jogador, após alguns segundos ele recebe um alerta que sua posição foi localizada por um sensor instalado.

 

-----------------------------------------------



 

Instalação

 

 

Salve essa função como data\actions\scripts\sensor.lua

 

------------------ Sensor System by Dokmos ------------------
local ACTIONID_EMPTY = 5000 -- Actionid livre para utilização.
local STORAGE_EMPTY = 5000 -- Storage para o jogador livre para utilização.
local PLANTING_DELAY = 5 -- Tempo de duração para instalar o sensor no solo em segundos.
local SENSOR_DELAY_MINUTES = 5 -- Minutos de duração do sensor.
local SENSOR_DELAY_SECONDS = 0 -- Segundos de duração do sensor (Lembre-se Minutos:Segundos).

local function doSendAlert(cid,creature)
  if isCreature(creature) == TRUE then
  if isPlayer(creature) == TRUE then
  doPlayerSendTextMessage(creature,20,"You was localized by "..getPlayerName(cid)..".")
  end   
  doSendMagicEffect(getThingPos(creature),13)	  
  if getPlayerStorageValue(cid,STORAGE_EMPTY) == 2 then
  setPlayerStorageValue(cid,STORAGE_EMPTY,1)
  end
  end
end   

local function doVerifySensor(cid,pos)
  if isPlayer(cid) == TRUE then
  creature = getThingfromPos(pos)
  if isPlayer(creature.uid) == TRUE and getPlayerStorageValue(cid,STORAGE_EMPTY) == 1 then
  setPlayerStorageValue(cid,STORAGE_EMPTY,2)
  doPlayerSendTextMessage(cid,20,"Sensor has localized "..getPlayerName(creature.uid).." a "..getPlayerVocationName(creature.uid).." Level "..getPlayerLevel(creature.uid)..".")
  addEvent(doSendAlert,2000,cid,creature.uid)
  elseif isCreature(creature.uid) == TRUE and getPlayerStorageValue(cid,STORAGE_EMPTY) == 1 then
  setPlayerStorageValue(cid,STORAGE_EMPTY,2)
  doPlayerSendTextMessage(cid,20,"Sensor has localized a "..getCreatureName(creature.uid)..".")
  addEvent(doSendAlert,2000,cid,creature.uid)
  end
  if getTileThingByPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).actionid == ACTIONID_EMPTY then
  addEvent(doVerifySensor,100,cid,pos)	  
  end
  end
end

local function doSendDuration(cid,pos,minutes,seconds)
  if isPlayer(cid) == TRUE then
  if seconds > 0 then
	 if minutes < 10 and seconds < 10 then
	 doPlayerSendTextMessage(cid,25,"Duration of Sensor: 0"..minutes..":0"..seconds.." minutes.")
	 elseif minutes < 10 then
	 doPlayerSendTextMessage(cid,25,"Duration of Sensor: 0"..minutes..":"..seconds.." minutes.")
	 else
	 doPlayerSendTextMessage(cid,25,"Duration of Sensor: "..minutes..":"..seconds.." minutes.")
	 end
  seconds = (seconds-1)
  addEvent(doSendDuration,1000,cid,pos,minutes,seconds)
  else
	 if minutes > 0 then
	 doPlayerSendTextMessage(cid,25,"Duration of Sensor: "..minutes..":0"..seconds.." minutes.")
	 minutes = (minutes-1)
	 seconds = 59
	 addEvent(doSendDuration,1000,cid,pos,minutes,seconds)
	 else
	 doPlayerSendTextMessage(cid,25,"Duration of sensor has finished.")
	 doSendMagicEffect(pos,4)
	 doSetItemActionId(getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).uid,100)
	 setPlayerStorageValue(cid,STORAGE_EMPTY,0)
	 end
  end
  else
  doSetItemActionId(getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).uid,100)
  end
end

local function doAddSensor(cid,time,tilepos)
  if time > 0 then
  doPlayerSendTextMessage(cid,24,"Planting sensor in "..time.." seconds.")
  time = (time-1)
  addEvent(doAddSensor,1000,cid,time)
  else
  pos = getThingPos(cid)
  doPlayerSendTextMessage(cid,24,"Sensor was successful planted.")
  doSendMagicEffect(pos,3)
  doPlayerSetNoMove(cid,0)
  doSendDuration(cid,pos,SENSOR_DELAY_MINUTES,SENSOR_DELAY_SECONDS)
  addEvent(doVerifySensor,3000,cid,pos)
  end
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
local pos = getThingPos(cid)
  if getTileThingByPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).actionid <= 100 and getPlayerStorageValue(cid,STORAGE_EMPTY) < 1 then
  doSetItemActionId(getThingfromPos({x=pos.x,y=pos.y,z=pos.z,stackpos=0}).uid,ACTIONID_EMPTY)
  setPlayerStorageValue(cid,STORAGE_EMPTY,1)
  addEvent(doAddSensor,0,cid,PLANTING_DELAY,tilepos)   
  doPlayerRemoveItem(cid,5809,1)
  doPlayerSetNoMove(cid,1)
  return TRUE
  else
  return FALSE
  end	  
end

 

Agora, adicione este código em data\actions\actions.xml

 

<action itemid="5809" script="other/sensor.lua"/>

 

-----------------------------------------------



 

Funcionamento

 

 

Você pode editar o script com as configurações que você desejar, eu coloquei as principais no começo do script, caso você não tenha certeza deixe o padrão como está. Qualquer erro ou bug no script poste aqui para eu dar uma verificada, lembrando que a configuração em seu OT fica nas mãos de vocês.

 

Para utilizar o sensor basta você dar um use no item 5809 (soul orb) e aproveitar!!!

 

:positive:

 

Atenciosamente,

Dokmos

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

Obrigado h3online,

Espero estar sempre contribuindo com o que tenho aprendido para aqueles que estão inciando nos scripts, pois sei como é difícil no começo e que acima de tudo é preciso ter vontade de crescer e superar-se! :smile_positivo:

Link para o comentário
Compartilhar em outros sites

é, mereceu o 2° lugar naquele torneio... :-D

só achei que deveria ter encurtado mais U.u

tá muito grande e sem necessidade..

em breve eu posto o meu script. :-P

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

Obrigado Eventide,

Gostaria de ver seu script ;) e sobre o tamanho do meu script, eu o fiz antes de ler aqueles tutoriais de tabelas e vetores, aliás seu tutorial de maths ficou muito bom! :positive:

Link para o comentário
Compartilhar em outros sites

Gostei da idéia, bastante criativo e nada complexo de se fazer.

 

Nesse caso aí nem precisava declarar as funções como local já que o sistema de scripting dos servidores atual itera cada código individualmente. Claro, se você for criar funções de mesmo nome que essas, aí sim vale a pena usar as funções locais. O strackback não é muito preciso em qualquer tipo de declarações do tipo local, até mesmo para localização via _G.

Link para o comentário
Compartilhar em outros sites

Aee \o/

Mto roxx ;}

Mas funfa em TFS ?

testei aki no meo ot e ele equipo e talz

mas num detecto nada .. passei por um monte de bixos no mesmo lugar várias vezes e ele num fez nada ...

 

Tem como fazer ele funfar equipando tipo como um amulet .. igual as Soft Boots?

[onEquip] ? tentei colocar isso em vez de [onUse]

 

Abraço !

e Obrigado pelo script :D

Link para o comentário
Compartilhar em outros sites

Vi Vanderlaysk,

Ele funciona sim em TFS, você tem que ver se a versão do seu TFS aceita a função doPlayerSetNoMove ou mayNotMove, aí é só trocar no script.

 

É possível utilizá-lo onEquipe, você precisaria adaptar alguns detalhes.

Link para o comentário
Compartilhar em outros sites

Huumm .. interessante ... mas entao ..

 

Pode me dizer como faço isso ? :D Eh que nao sou scripter... tenho alguma dificuldades ainda de saber o que fazer em relaçao a scripst lua ;P

 

e tipo ... quando a gente coloca alguma coisa no OT e quer colocar créditos de alguma coisa

que é criada por outra pessoa ... qual a melhor forma de fazer isso ?

Por exemplo ... meu OT vai ser sério ... entao eu queria clocar créditos desse sistema pra vc, Dokmos...

Eu colocaria alguma coisa no proprio item ou na MOTD (Message of the Day) ?

Da um help ae xDD

 

Abraço!

Link para o comentário
Compartilhar em outros sites

Huumm .. interessante ... mas entao ..

 

Pode me dizer como faço isso ? :D Eh que nao sou scripter... tenho alguma dificuldades ainda de saber o que fazer em relaçao a scripst lua ;P

 

e tipo ... quando a gente coloca alguma coisa no OT e quer colocar créditos de alguma coisa

que é criada por outra pessoa ... qual a melhor forma de fazer isso ?

Por exemplo ... meu OT vai ser sério ... entao eu queria clocar créditos desse sistema pra vc, Dokmos...

Eu colocaria alguma coisa no proprio item ou na MOTD (Message of the Day) ?

Da um help ae xDD

 

Abraço!

 

Obrigado pelo reconhecimento, melhor que ver o trabalho elogiado é vê-lo reconhecido! Isso até motiva scripters a compartilhar suas funções, actions e seus melhores trabalhos, pois além dos jogadores terem seus OT's com ótimas actions os progamadores têm seu trabalho reconhecido! :party:

 

Você pode colocar no MOTD Sensor System by Dokmos, é só você adicionar esta linha na linha 70 do script:

doPlayerSendCancel(cid,"Sensor System by Dokmos.")

 

Então o script ficará assim:

.

.

.

local function doAddSensor(cid,time,tilepos)

if time > 0 then

doPlayerSendTextMessage(cid,24,"Planting sensor in "..time.." seconds.")

doPlayerSendCancel(cid,"Sensor System by Dokmos.")

time = (time-1)

addEvent(doAddSensor,1000,cid,time)

else

pos = getThingPos(cid)

doPlayerSendTextMessage(cid,24,"Sensor was successful planted.")

doSendMagicEffect(pos,3)

doPlayerSetNoMove(cid,0)

doSendDuration(cid,pos,SENSOR_DELAY_MINUTES,SENSOR_DELAY_SECONDS)

addEvent(doVerifySensor,3000,cid,pos)

end

end

.

.

.

 

E novamente obrigado! Em breve libero outras actions bem legais... :positive:

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

×
×
  • Criar Novo...