Dokmos 1 #1 Postado 15 Dezembro, 2008 (editado) Action Sensor System by Dokmos ----------------------------------------------- Aqui está o script que desenvolvi para o Script Tournament do OTServer, espero que gostem e divirtam-se! :fist: [ame] [/ame] ----------------------------------------------- Características Nome: Sensor SystemTipo do script: Action Servidor Testado: TFS Autor: Dokmos 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) [u]doPlayerSetNoMove(cid,0)[/u] 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) [u]doPlayerSetNoMove(cid,1)[/u] return TRUE else return FALSE end end Agora, adicione este código em data\actions\actions.xml <action itemid="5809" script="other/sensor.lua"/> Obs: Verifique se em seu ot a função de deixar o jogador imóvel é mayNotMove() ou doPlayerSetNoMove(), nesse script coloquei doPlayerSetNoMove(), caso não seja no seu troque os doPlayerSetNoMove() sublinhados por mayNotMove(). Mas não mude os parâmetros! ----------------------------------------------- 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!!! Atenciosamente, Dokmos Editado 16 Dezembro, 2008 por Dokmos Compartilhar este post Link para o post
Mock 32 #2 Postado 16 Dezembro, 2008 Cara eu achei muito legal esse seu script eu pensei que vc usva movements e nao um loop com add event Isso e bom pra ots pvp enforced pra fazer traps vc decha em um certo ponto e qaundo alguem passa vc se prepara. So 1 coisa... Da proxima vez sia o Padrão de Postagem. Aprovadissimo Compartilhar este post Link para o post
Pandoraaa 0 #3 Postado 16 Dezembro, 2008 Muito legal e bem organizado Mock tem cada dieia doidona pra usar os scripts Compartilhar este post Link para o post
matheusrp 0 #4 Postado 16 Dezembro, 2008 Caralho vei... curti de mais esse script =x... parabéns! Compartilhar este post Link para o post
123123 1 #5 Postado 16 Dezembro, 2008 Gostei, mto util para mtos ots, e o topico tah mto organizado. APROVADO!!! Compartilhar este post Link para o post
MotoBoy 0 #6 Postado 16 Dezembro, 2008 caramba.. além da ideia, o jeito que você fez o script cara Oo imressionou =O~~ parabens tah excelente ;D flws~~ Compartilhar este post Link para o post
Dokmos 1 #7 Postado 16 Dezembro, 2008 Padronizado Mock! E obrigado pela aprovação. (Y) Compartilhar este post Link para o post
Elys Zarox 0 #8 Postado 16 Dezembro, 2008 lawl mto bom esse script parabens mesmo por ele xD @Aprovado Compartilhar este post Link para o post
Jonny249 0 #9 Postado 16 Dezembro, 2008 O que eu achei mas interessante eh q vc nao uso movements... muito show parabens, continue assim dokmos falous By Jonny~ Compartilhar este post Link para o post
J3@n 0 #10 Postado 16 Dezembro, 2008 LoL??? Q isso mano, show de bola msm Muito fera essa action Imagina qnd vc estiver caçando um player e colocar o radar? meu deus Script 10 Compartilhar este post Link para o post
[ B a l i l l o ] 0 #11 Postado 17 Dezembro, 2008 Já fiz um script parecido, mas era um sensor que o player usava e detectava no andar abaixo dele numa area de 5x5 o que tinha e mandava uma mensagem para um 'animationeffect' na tela do player na onde o bixo se encontrava. Mas isso já faz muito tempo, na época que as criaturas não se mexiam ainda, dai era bastante utilizado nas quests e só tinha 3 charges O seu ficou legal porque parece uma camera de vigia Instalar isso nos OT's em certas partes e salvar em .txt seria bom (de certa forma) para detectar bots .. poderia por algo extra, como excesso de efeitos que o player soltou ou falas seriam gravados no txt como suspeito \o/ Compartilhar este post Link para o post
xXHiroshiXx 0 #12 Postado 21 Dezembro, 2008 mano esse script e muito bom msm vo coloca no meu ot war e muito bom msm parabens... Caso alguem quera uma Briga Entre No Meu Ot War ip:morrinhoswar.servegame.com Voces Vao gostar Compartilhar este post Link para o post
henrique_ms 0 #13 Postado 22 Dezembro, 2008 Bom demais. parabens Compartilhar este post Link para o post