Ir para conteúdo

[Pedido] Sistema De Prisão E Verificar Nome Do Player.


brunin86

Posts Recomendados

Bom, parei com scripting a mais ou menos 1 ano, mas agora que eu decidi começar um projeto de pokemon, eu já não tenho mais nada memorizado, somente as coisas tão simples que não dá pra esquecer.

Então peço ajuda a vocês scripters do xTibia.

 

Eu queria o Sistema de Prisão da seguinte forma:

 

- Eu no char GOD diria: "/prender x, y". {x = Nome do Player, y = Tempo em minutos que ele irá ficar preso}.

- O player fosse para a position: x=1299, y=768, z=7

- Mandasse um broadcast (se possível) escrito esta mensagem: "O player x foi preso por desrespeitar alguma regra do servidor."

- Mandasse para o player o seguinte doPlayerSendTextMessage: "Você desrespeitou alguma regra de nosso servidor, por isso você ficará preso por y minutos, enquanto isso, você pode upar em nossas hunts de diversos pokemons feitas com acesso somente aos presos."

- (Se Possível) Se o player tentar usar o comando /h ou h" quando ele estiver na prisão, ele recebe o seguinte doPlayerSendCancel: "Você não pode usar este comando estando preso."

- Ao acabar o tempo y, o player ser teletransportado para a position: x=1314, y=793, z=7

- Mandasse para o player o seguinte doPlayerSendTextMessage: "Você cumpriu sua pena, ao desrespeitar as regras do servidor novamente, sua pena pode ser aumentada ou você pode ser banido."

 

 

E o de Verificar o nome do player é assim: (MUITO FACIL, mas mesmo assim nao lembro como faz , T_T

 

- Ao tentar usar uma gate of expertise (aquela porta que é possível adicionar level para poder abri-la) (onUse) com um z action id, verificar se o player tem x nome. {x = O nome do unico player que pode passar na porta.}

- Se o player tiver o x nome, mandar um doPlayerSendTextMessage assim: "Bem-vindo à sua hunt, x."

- Se o player NÃO tiver o x nome, mandar um doPlayerSendTextMessage assim: "Você não é o x." e teleportasse o player para a position: x=1059, y=904, z=7.

 

Simples, não?

Se alguém não entendeu, fala aí que eu explico novamente.

A parte do "sua pena pode ser aumentada ou você pode ser banido." lá no Sistema de Prisão, pode deixar comigo.

 

Bom, é isso galera :D

Espero que possam me ajudar, obrigado. :]

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

Ta aqui um sistema de cadeia em talkactions:

 

-- Sistema Traduzido por Kelvin Victor --
-- Tempo em segundos que alguém ficará na prisão --
default_jail = 600
-- O group ID da permissão para alguém manda o outro para a cadeia. --
grouprequired = 5
-- StorageValue that the player gets --
jailedstoragevalue_time = 1338
jailedstoragevalue_bool = 1339
-- POSICAO DA CADEIA: --
jailpos = { x = 122, y = 48, z =7 }
-- POSICAO DO LUGAR QUE ELE VOLTARÁ (RECOMENDADO TEMPO): --
unjailpos = { x = 160, y = 54, z =7 }
-- auto kicker, dont edit
jail_list = {}
jail_list_work = 0

function checkJailList(param)
addEvent(checkJailList, 1000, {})
for targetID,player in ipairs(jail_list) do
if isPlayer(player) == TRUE then
if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then
doTeleportThing(player, unjailpos, TRUE)
setPlayerStorageValue(player, jailedstoragevalue_time, 0)
setPlayerStorageValue(player, jailedstoragevalue_bool, 0)
table.remove(jail_list,targetID)
doPlayerSendTextMessage(player,MESSAGE_STATUS_CONSOLE_ORANGE,'Você foi chutado da prisão! Até logo')
end
else
table.remove(jail_list,targetID)
end
end
end

function onSay(cid, words, param)
if jail_list_work == 0 then
jail_list_work = addEvent(checkJailList, 1000, {})
end
if param == '' and (words == '!unjail' or words == '/unjail') then
if getPlayerStorageValue(cid, jailedstoragevalue_time) > os.time() then
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Você está preso até ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (Agora são: ' .. os.date("%H:%M:%S", os.time()) .. ').')
else
if getPlayerStorageValue(cid, jailedstoragevalue_bool) == 1 then
table.insert(jail_list,cid)
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Você vai ser expulso da prisão em um segundo.')
else
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Você não está preso.')
end
end
return TRUE
end
local jail_time = -1
for word in string.gmatch(tostring(param), "(%w+)") do
if tostring(tonumber(word)) == word then
jail_time = tonumber(word)
end
end
local isplayer = getPlayerByName(param)
if isPlayer(isplayer) ~= TRUE then
isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+1))
if isPlayer(isplayer) ~= TRUE then
isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+2))
if isPlayer(isplayer) ~= TRUE then
isplayer = getPlayerByName(string.sub(param, string.len(jail_time)+3))
end
end
end
if jail_time ~= -1 then
jail_time = jail_time * 60
else
jail_time = default_jail
end
if words == '!jail' or words == '/jail' then
if getPlayerGroupId ( cid ) >= grouprequired then
if isPlayer(isplayer) == TRUE then
doTeleportThing(isplayer, jailpos, TRUE)
setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time)
setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1)
table.insert(jail_list,isplayer)
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Você está preso '.. getCreatureName(isplayer) ..' até ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (Agora são: ' .. os.date("%H:%M:%S", os.time()) .. ').')
doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'Você foi preso por '.. getCreatureName(cid) ..' até ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (Agora sao: ' .. os.date("%H:%M:%S", os.time()) .. ').')
return TRUE
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player com este nome não existe ou está offline.")
return FALSE
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode libertar outros jogadores.")
return FALSE
end
elseif words == '!unjail' or words == '/unjail' then
if getPlayerGroupId ( cid ) >= grouprequired then
if isPlayer(isplayer) == TRUE then
doTeleportThing(isplayer, unjailpos, TRUE)
setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0)
setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0)
table.remove(jail_list,targetID)
doPlayerSendTextMessage(isplayer,MESSAGE_STATUS_CONSOLE_ORANGE,getCreatureName(cid) .. 'vou deixar você sair da prisão!')
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Voce está solto '.. getCreatureName(isplayer) ..'.')
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O player com este nome não existe ou está offline.")
return FALSE
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não pode libertar outros jogadores.")
return FALSE
end
end
return FALSE
end 

 

Adcione isso em data/talkactions/scripts.

 

Agora abra data/talkactions/talkactions.xml

 

e coloque:

 

<talkaction words="!jail;!unjail;/jail;/unjail" script="Cadeia.lua"/>

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

×
×
  • Criar Novo...