InícioPortalCalendárioFAQBuscarMembrosGruposRegistrar-seLogin

Compartilhe | 
 

 Sistema de Prisão!

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
Paidrew
Administrador
Administrador


Número de Mensagens : 368
Idade : 24
Localização : Brasil
Membro nº : 1
Alerta :
0 / 1000 / 100

Data de inscrição : 08/03/2008

Personagem
Nome: Kakashi
Classe:
Level: 1

MensagemAssunto: Sistema de Prisão!   Qua Abr 09, 2008 12:56 pm

Sistema de Prisão

- Introdução


Esse sistema é via talkaction, ou seja, vc tem que falar algo para que o script se inicie. Ele é muito facil de editar para que se encaixe no seu OTServer!
Esse sistema favorece o seguinte: tem aqueles players chatos que ficam chingando GM ou só zuando, alguns OTs tem sistema de proteção de lv e ai tem wars no server e esses lvs que são protegido ficam no meio para atrapalhar e etc, bom agora seus problemas acabaram tongue.gif .

- Uso da Prisão

Simples, basta ter o access estabelecido no script e falar /prisao "<nome do player> mas atenção, não se esqueça de por o " se não ela não funciona!
Após o player ser mandado para a prisão, depois de um certo tempo ele vai ser mandado para fora dela (é aonde ta em vermelho na foto abaixo), esse tempo é editavel!
A prisão tem um sistema funcional para detectar quantas veses o player ja foi preso.
O player pode ser preso até 3 veses, na 3º vez que ele vai para a prisão o GM recebe a mensagem de que ja é a 3º vez que o player foi preso e o player recebe a mensagem que ele ja foi preso pela 3º vez. Logo o GM recebe uma msg adicional, falando que o player deve ser banido e o player recebe tbm uma msg adicional, falando que inquanto ele não for banido, ele vai ficar preso!

- Erros

1º - Não é todo server que tem a função 'mayNotLogout' que faz o player não poder logar inquanto estiver sobre a tal ação. Então tive que bolar um jeito que favoreça a todos... Logo tive a idéia de por um monster por perto, mas que fique preso e que os players não consiga matar, com isso fica preso la dentro com battle aberta, não podendo logar .
2º - Eu estava pensando... Se o player se matar la dentro (tacando field e ficar pisando em cima varias vezes), a talkaction não funcionaria... Então fiz um outro script que é via actionid que vai healar a vida do player conforme ele andar la dentro.

1º Parte
- Iniciando

Primeiramente, crie uma area parecida com esta da foto:

http://img246.imageshack.us/my.php?image=screenshot009we3mn7.png

posição que o player vai após executar o comando.
Dentro da area que vai estar sua prisão (ela pode ser maior que a que esta na foto, basta apenas ter a posição que o player vai ser teleportado), nesta area todos os tiles devem ter actionid 2325 (inclusive o que está em verde). É importante lembrar que ai dentro não deve ser protection-zone (PZ)!
Posição que o player vai parar depois que o ele ficar o tempo estabelecido dentro da prisão.
Ponha um monster qualquer bem proxima da arena e que não de para matar ele, para o player ficar com battle aberta e não poder logar (no server TheForgotten, tem a função mayNotLogout, se vc quiser usar ela coloque ela por si proprio no script).

- Script


Agora siga o script. As tags no script que estão com as cores iguais a de cima, significam que elas se relacionam!


1º - Va na pasta data/talkactions/scripts e crie um arquivo que se chame prisao.lua e coloque o script abaixo dentro dele.

Citação :
-- Prision system by JamiS
function onSay(cid, words, param)
-- Configuracoes basicas
time = 10
gmAcess = 6
Acess = getPlayerAccess(cid)
Prisoner = getPlayerByName(param)
posPrisoner = {x=151, y=86, z=7, stackpos=253}
posBackPrisoner = {x=147, y=86, z=7, stackpos=253}
Detect = getPlayerStorageValue(Prisoner,prisao)
-- Fim


-- Script de IR para a prisao
if Acess < gmAcess then
doPlayerSendCancel(cid,'Desculpe, você não pode usar este comando.')
else
if param ~= "" then
if Detect == -1 then
doPlayerSendTextMessage(Prisoner,24,"Você foi preso!\nAguarde "..time.." minutos para ficar livre.")
doTeleportThing(Prisoner,posPrisoner)
doSendMagicEffect(posPrisoner,11)
setPlayerStorageValue(Prisoner,prisao,1)
doPlayerSendTextMessage(cid,24,"Você prendeu: "..param..".\n\nAtenção!\n"..param.." já foi preso "..Detect.." vez.")
pp = {time = time, Prisoner = Prisoner, posBackPrisoner = posBackPrisoner, Detect = Detect}
addEvent(back,time*60000,pp)
elseif Detect == 1 then
doPlayerSendTextMessage(Prisoner,24,"Você foi preso!\nAguarde "..time.." minutos para ficar livre.")
doTeleportThing(Prisoner,posPrisoner)
doSendMagicEffect(posPrisoner,11)
setPlayerStorageValue(Prisoner,prisao,2)
doPlayerSendTextMessage(cid,24,"Você prendeu: "..param..".\n\nAtenção!\n"..param.." já foi preso "..Detect.." vezes.")
pp = {time = time, Prisoner = Prisoner, posBackPrisoner = posBackPrisoner, Detect = Detect}
addEvent(back,time*60000,pp)
elseif Detect == 2 then
doPlayerSendTextMessage(Prisoner,24,"Você foi preso!\nAguarde "..time.." minutos para ficar livre.")
doTeleportThing(Prisoner,posPrisoner)
doSendMagicEffect(posPrisoner,11)
setPlayerStorageValue(Prisoner,prisao,3)
doPlayerSendTextMessage(cid,24,"Você prendeu: "..param..".\n\nAtenção!\n"..param.." já foi preso "..Detect.." vezes.")
pp = {time = time, Prisoner = Prisoner, posBackPrisoner = posBackPrisoner, Detect = Detect}
addEvent(back,time*60000,pp)
elseif Detect == 3 then
doTeleportThing(Prisoner,posPrisoner)
doSendMagicEffect(posPrisoner,11)
doPlayerSendTextMessage(cid,24,"Atenção!\n"..param .." já foi preso 3 vezes. Ele deve ser banido!")
pp = {time = time, Prisoner = Prisoner, posBackPrisoner = posBackPrisoner, Detect = Detect}
addEvent(back,time*60000,pp)
end
end
end
end
-- Script de SAIR da prisao
function back(pp)
local Prisoner = pp.Prisoner
local posBackPrisoner = pp.posBackPrisoner
local Detect = pp.Detect
if Detect == 3 then
doPlayerSendTextMessage(Prisoner,24,"Atenção!\nVoc ê possui 3 idas a prisão, você será banido o quanto antes!\n Enquanto você não for banido, você vai ficar preso!")
else
doTeleportThing(Prisoner,posBackPrisoner)
doPlayerSendTextMessage(Prisoner,24,"Você está livre.\n\nAtenção! Você já foi preso "..Detect.." vez(es).")
end
end

2º - Configurando: para configurar é simples, aonde está em negrito é o tempo em minutos que o player vai ficar preso na prisão.
Aonde está em italico e sublinhado é o acess minimo para poder usar o comando /prisao ".
As posições que estão coloridas se relacionam com a legenda da foto.

Após ter feito isso, vá até data/talkactions/talkactions.xml e adicione a seguinte tag:

Citação :
<talkaction words="/prisao" script="prisao.lua" />

2º Parte

Agora é a parte que evita que o player se mate dentro da prisão.


Vá até data/movements/scripts e adicione um arquivo que se chame recoverlife.lua e adicione isso dentro:

Citação :
function onStepIn(cid, item, topos)


addlife = 10000


life = getPlayerHealth(cid)

if item.actionid == 2325 then

if life < life+1 then
doPlayerAddHealth(cid,addlife)
doSendMagicEffect(cid,14)
end
end
end

O actionID é aquele que vc colocou em cada SQM de sua prisão, não esqueça disso!


Após ter salvado o script, va até data/movements/movements.xml e adicione:

Citação :
<movevent event="StepIn" actionid="2325" script="recoverlife.lua" />

Espero ter ajudado.

Grato.

Créditos: Jamis
Voltar ao Topo Ir em baixo
Ver perfil do usuário http://www.nexusword.tk
 
Sistema de Prisão!
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Limpeza do sistema de refrigeração II
» Melhorar o Sistema de som Infinity Gold
» Sistema Brasileiro de Televisão - SBT
» VW Fusca - A História - Um ícone da Industria
» Fotos no Esquema de Montagem dos Cloth´s.

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
 :: Jogos :: PC :: Tibia :: Tutoriais-
Ir para: