Gesior.pl
Ten G?sior
- Joined
- Apr 23, 2008
- Messages
- 88
- Reaction score
- 19
Skrypt w wiekszosc napisany przezemnie, ale korzystalem z fragmentow skryptu na wiezienie Master-m z otland.net
----------------------------------------
Zalety:
- mozliwosc ustalenia czasu na jaki sie zamyka gracza
- nie trzeba podawac czasu, zeby kogos zamknac (szybkie wrzucanie kolejnych osob jak np. blokuja przejscie)
- automatyczne wyrzucanie z wiezienia po odsiedzeniu swojej kary ( dziala nawet po: Uptime: 338 hours and 17 minutes. - nie zawiesza sie )
- malo skryptow do instalacji
- jesli auto wyrzucanie nie zadziala to gracz moze uzyc komendy !unjail, zeby siebie samego z wiezienia wyrzucic po odsiedzeniu kary
- GM moze uzyc komendy !unjail "Nick, zeby zwolnic gracza z wiezienia
----------------------------------------
W data/talkactions/scripts/jailsystem.lua:
W data/talkactions/talkactions.xml
----------------------------------------
Jak powinno wygladac wiezienie
Jest to zwykle pomieszczeni/budynek z ktorego nie ma wyjscia. Tzn. zeby sie nie dalo zwiac na dach czy gdzies indziej jakas komenda. Wazne jest, zeby w wiezieniu bylo ustawione (w map editor) "No Logout Tool" i "PZ", zeby nie bylo jakiegos ognia czy czegos co moze zabic, bo jak gracz sie zabije to mu da TP do swiatyni, a jak bedzie sie mogl wylogowac to stana w pare osob pod sciana i beda dawac TP do swiatyni.
Najlepiej, zeby kratka na ktora wyrzuca z wiezienia tez byla PZ, zeby ktos nie stal z SD combo przed wiezieniem
W wiezieniu jest sie zamknietym okreslony czas lub do restart servera (po restart logujac sie dostaje sie TP do swiatyni).
----------------------------------------
Jak uzywac na przykladzie mojego chara w grze:
Skrypt testowany na TFS 0.2.16
----------------------------------------
Zalety:
- mozliwosc ustalenia czasu na jaki sie zamyka gracza
- nie trzeba podawac czasu, zeby kogos zamknac (szybkie wrzucanie kolejnych osob jak np. blokuja przejscie)
- automatyczne wyrzucanie z wiezienia po odsiedzeniu swojej kary ( dziala nawet po: Uptime: 338 hours and 17 minutes. - nie zawiesza sie )
- malo skryptow do instalacji
- jesli auto wyrzucanie nie zadziala to gracz moze uzyc komendy !unjail, zeby siebie samego z wiezienia wyrzucic po odsiedzeniu kary
- GM moze uzyc komendy !unjail "Nick, zeby zwolnic gracza z wiezienia
----------------------------------------
W data/talkactions/scripts/jailsystem.lua:
PHP:
-- Default jail time in seconds -- czas na jaki idzie sie do wiezienia kiedy GM nie wpisze czasu
default_jail = 5
-- The permission you need to jail someone -- grupa jaka musi miec GM/tutro czy kogo tam chcesz ustawic, zeby mogl zamykac w wiezieniu
grouprequired = 3
-- StorageValue that the player gets -- storage value w ktorych przechowywane sa informacje o wiezieniu danego gracza
jailedstoragevalue_time = 1338
jailedstoragevalue_bool = 1339
-- Set the position of the jail: -- pozycja na jaka trafia osoba zamykana w wiezieniu
jailpos = { x = 241, y = 697, z =7 }
-- Set the position once unjailed: -- pozycja na jaka trafia osoba wychodzaca z wiezienia
unjailpos = { x = 235, y = 697, z =7 }
-- auto kicker, dont edit -- nie edytowac dalej
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,'Odsiedziales swoje! Do zobaczenia :)')
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, 'Twoja kara trwa do ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (teraz jest: ' .. 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, 'Za chwile zostaniesz zwolniony z wiezienia.')
else
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Nie jestes w wiezieniu.')
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, 'Zamknales w wiezieniu '.. getCreatureName(isplayer) ..' do ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (teraz jest: ' .. os.date("%H:%M:%S", os.time()) .. ').')
doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'Zostales zamkniety przez '.. getCreatureName(cid) ..' do ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (teraz jest: ' .. os.date("%H:%M:%S", os.time()) .. ').')
return TRUE
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Gracz o danym nicku nie istnieje albo jest OFFLINE.")
return FALSE
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Nie masz prawa zamykac w wiezieniu.")
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) .. ' let you go out from jail! See you later :)')
doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'Wypusciles z wiezienia '.. getCreatureName(isplayer) ..'.')
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Gracz o danym nicku nie istnieje albo jest OFFLINE.")
return FALSE
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Nie masz prawa zamykac w wiezieniu.")
return FALSE
end
end
return FALSE
end
PHP:
<talkaction words="!jail" script="jailsystem.lua"/>
<talkaction words="!unjail" script="jailsystem.lua"/>
<talkaction words="/jail" script="jailsystem.lua"/>
<talkaction words="/unjail" script="jailsystem.lua"/>
Jak powinno wygladac wiezienie
Jest to zwykle pomieszczeni/budynek z ktorego nie ma wyjscia. Tzn. zeby sie nie dalo zwiac na dach czy gdzies indziej jakas komenda. Wazne jest, zeby w wiezieniu bylo ustawione (w map editor) "No Logout Tool" i "PZ", zeby nie bylo jakiegos ognia czy czegos co moze zabic, bo jak gracz sie zabije to mu da TP do swiatyni, a jak bedzie sie mogl wylogowac to stana w pare osob pod sciana i beda dawac TP do swiatyni.
Najlepiej, zeby kratka na ktora wyrzuca z wiezienia tez byla PZ, zeby ktos nie stal z SD combo przed wiezieniem
W wiezieniu jest sie zamknietym okreslony czas lub do restart servera (po restart logujac sie dostaje sie TP do swiatyni).
----------------------------------------
Jak uzywac na przykladzie mojego chara w grze:
----------------------------------------Zamkniecie gracza na 15 minut z przecinkiem:
15:15 Zamknales w wiezieniu Extra Death do 15:30:05 (teraz jest: 15:15:05).
15:15 Zostales zamkniety przez Extra Death do 15:30:05 (teraz jest: 15:15:05).
15:15 Extra Death [150]: !jail "15,Extra Death
Zamkniecie gracza na czas domyslny: (ustawia sie w konfiguracji, u mnie 5 sekund - w ten sposob moge szybko odeslac gracza do wiezienia ktore jest w miescie = TP do miasta)
15:16 Zostales zamkniety przez Extra Death do 15:16:10 (teraz jest: 15:16:05).
15:16 Extra Death [150]: !jail "Extra Death
Zamkniecie na 55 minut ze spacja:
15:18 Zostales zamkniety przez Extra Death do 16:13:06 (teraz jest: 15:18:06).
15:18 Extra Death [150]: !jail "55 Extra Death
Skrypt testowany na TFS 0.2.16
Last edited by a moderator: