Iae XTibianos, belezinha? =p
Bom, hoje não tinha nada para fazer, ninguém importante online no MSN, etc e já fazia tempo que não fazia nenhum script (até porque estudava dia inteiro, então não tinha tempo), resolvi fazer um sistema de prisão.
Como funciona?
Você, ADM ou GM de um servidor está cansado daqueles players enxerem saco, porém acha que não é um motivo que mereça uma punição severa como o banimento, pode utilizar esse sistema para prender o jogador por determinado tempo.
Exemplo de uso:
/prender Lucas,15
isso irá prender o jogador Lucas por 15 minutos.
Adicionando o Sistema ao seu servidor:
Primeiramete, na pasta raiz (onde fica o executável) do seu servidor, entre na pasta MODS
Copie qualquer ARQUIVO com extenção XML da pasta MODS e cole na mesma pasta, mudando o seu nome para prisao.xml
dentro do prisao.xml, coloque isso:
<?xml version="1.0" encoding="UTF-8"?> <mod name="Prisao System" version="1.0" author="Draky Lucas" contact="Forum XTIBIA" enabled="yes"> <config name="prisao_config"><![CDATA[ --------------- CONFIG -------------- config = { pos = {x = 1000,y = 1000,z = 7}, -- posição do centro da cadeia [mapa] storage = 27271, -- nao é necessario alterar [armazena o tempo da prisao em segundos] } function getTime(s) -- função by : mkalo local n = math.floor(s / 60) s = s - (60 * n) return n, s end --------------- FIM CONFIG --------------- ]]></config> <talkaction words="/prender" access="3" event="buffer"><![CDATA[ domodlib('prisao_config') local t = param:explode(",") local nome, tempo = t[1], tonumber(t[2]) if nome and tempo then local guid = getPlayerGUIDByName(nome)or 0 if isPlayer(guid) then doPlayerSendTextMessage(guid,19,"Voce foi preso por "..tempo.. " minutos!") doTeleportThing(guid,config.pos) setPlayerStorageValue(guid,config.storage,os.time() + tempo*60) doPlayerSendTextMessage(cid,19,"Voce prendeu o jogador "..nome.. " por "..minutos.." minutos") else doPlayerSendCancel(cid,"O Jogador "..nome.." nao existe ou esta offline.") end else doPlayerSendTextMessage(cid,19,"Formato incorreto. \nPara prender alguem digite: /prender Nome_do_jogador,tempo_em_minutos") end return true ]]></talkaction> <movevent type="StepIn" actionid="27271" event="buffer"><![CDATA[ domodlib('prisao_config') if(os.time() < getPlayerStorageValue(cid,config.storage) then local minutos,segundos = getTime(getPlayerStorageValue(cid,config.storage) - os.time()) doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) return doPlayerSendCancel(cid,"Espere mais "..minutos.." minuto(s) e "..segundos.." segundo(s) para poder sair da cadeia") end doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid,19,"Se cometer outro crime será punido mais severamente.") return true ]]></movevent> </mod>
Configurando:
Script:
No inicio do script, na parte de config, apenas altere a POSIÇÃO da prisão.
pos = {x = 1000,y = 1000,z = 7}, -- posição do centro da cadeia [mapa]
Mapa:
Crie uma prisão, todos os tiles protection-zone, coloque um piso diferente nela, e nesse piso coloque a ACTION ID 27271
_________________________________________________________
PS: Não tenho nenhum servidor aqui em casa, então pedi para um amigo testar e ele me falou que funcionou, qualquer erro poste que eu arrumo
PS²: Script exclusivo ao XTibia. Reportarei caso postem em outros fórums.
Créditos: Draky Lucas (pelo script) / MatheusMkalo (pela função getTime(s))
Postem as críticas ae ;P
aceito elogios e também xingamentos com fundamentos
vlw? =D