What's new

[x.x][TalkActions]Wiezienie

Status
Not open for further replies.

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:
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
W data/talkactions/talkactions.xml
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 :p
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:

Ziolko33

User
Joined
Jul 29, 2008
Messages
25
Reaction score
2
Odp: Wiezienie

Odp: Wiezienie

Super skrypt :) zaraz przetestuje i dam odpowiedz.

Edit:
Na EldinWorld 8.22 chodzi doskonale wielkie GZ! :)
 
Last edited:

Sarza19

Active User
Joined
Jul 20, 2008
Messages
91
Reaction score
4
Age
30
Odp: Wiezienie

Odp: Wiezienie

Kurde wygl?da fajnie ale jak spr?bowa?em doda? do mojego otsa to b??d mi wyskakiwa? :confused:
 

Roki Alth

Advanced User
Joined
Sep 29, 2008
Messages
257
Reaction score
10
Odp: Wiezienie

Odp: Wiezienie

WOW!Gdy to tylko wkleja?em to dopiero zobaczy?em wszystkie te komendy i jeden skrypt!Niesamowite!Daje reputa i oczywi?cie u?ywam!

Gesior Gora!
 

Matejek

Active User
Joined
Dec 9, 2008
Messages
115
Reaction score
18
Odp: Wiezienie

Odp: Wiezienie

Spad?e? mi z nieba kole? :D
Szuka?em ci?gle tego skryptu .
Dzi?kuj? . Napewno wykorzystam ten skrypt gdy b?d? prowadzi? w?asnego World War'a .

Pozdrawiam :p;):D:eek::):confused::rolleyes::cool:
 

spartan

User
Joined
Apr 6, 2008
Messages
15
Reaction score
0
Odp: Wiezienie

Odp: Wiezienie

Da?oby rade przerobic to na 0.3?
 

Roki Alth

Advanced User
Joined
Sep 29, 2008
Messages
257
Reaction score
10
Odp: Wiezienie

Odp: Wiezienie

Spartan wklej to do siebie i zobacz czy p?jdzie bo ja mam u siebie pod 8.4, skrypt pod 8.1 :p
 

ziomq13

User
Joined
Jan 16, 2009
Messages
25
Reaction score
0
Odp: Wiezienie

Odp: Wiezienie

Mi dzia?? i to dobrze akurat si? przyda dla niesfornych graczy
 

Silent

User
Joined
Jun 14, 2008
Messages
32
Reaction score
0
Age
29
Odp: [x.x][TalkActions]Wiezienie

Komenda dzia?a poprawnie, testowa?em j? na TFS'ie 0.3 beta 3.

11:41 Zamknales w wiezieniu GoD SlnQ of Dps do 11:56:14 (teraz jest: 11:41:14).
11:41 Zostales zamkniety przez GoD SlnQ of Dps do 11:56:14 (teraz jest: 11:41:14).

11:41 Gracz o danym nicku nie istnieje albo jest OFFLINE.

"!unjail" te? dzia?a poprawnie tylko ?e testowa?em j? na "godzie" ;)
 

PatulecxD

Advanced User
Joined
Nov 17, 2008
Messages
209
Reaction score
12
Age
29
Odp: [x.x][TalkActions]Wiezienie

22:14 Zamknales w wiezieniu GameMaster do 22:14:16 (teraz jest: 22:14:11).
22:14 Zostales zamkniety przez GameMaster do 22:14:16 (teraz jest: 22:14:11).


gdzie zrobic zeby by?o na d?uzej ?? :confused:


EDIT@@@
znalaz?em nie trzeba juz pomagac ;]
 
Last edited:

krzychomzg

New User
Joined
Jan 5, 2009
Messages
2
Reaction score
0
Odp: [x.x][TalkActions]Wiezienie

czemu piszesz x.x np na 7.6 a przynajmniej na armoni otserw nie dzia?a ;(
 

Advent Child

Advanced User
Joined
Nov 11, 2008
Messages
345
Reaction score
9
Odp: [x.x][TalkActions]Wiezienie

Nie no to jest co? . Przydaje si? do ukarania niegrzecznych graczy : 3
 

Aragornkk

Senior User
Joined
Oct 11, 2008
Messages
705
Reaction score
44
Odp: [x.x][TalkActions]Wiezienie

we? zr?b tak ?eby po resecie te? aby siedzia? w wi?zieniu bo np. ja chce ?eby siedzia? ca?y tydzie? RL.
 

Sayanin

Advanced User
Joined
Mar 6, 2009
Messages
252
Reaction score
8
Odp: [x.x][TalkActions]Wiezienie

Czemu mi nie dzia?a ??
Mam silnik 8.10 kopca :D
Wyskakuje b??d taki : (skad pochodzi jailsystem) :70: attempt to global 'getPlayerGroupID'

-- Default jail time in seconds -- czas na jaki idzie sie do wiezienia kiedy GM nie wpisze czasu
default_jail = 10
-- The permission you need to jail someone -- grupa jaka musi miec GM/tutro czy kogo tam chcesz ustawic, zeby mogl zamykac w wiezieniu
grouprequired = 6
-- 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 = 1019, y = 998, z =7 }
-- Set the position once unjailed: -- pozycja na jaka trafia osoba wychodzaca z wiezienia
unjailpos = { x = 1000, y = 1000, 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

Tak mam zrobiony skrypt :p
 
Last edited:

Gm Fosfik

User
Joined
Oct 14, 2009
Messages
25
Reaction score
2
Odp: [x.x][TalkActions]Wiezienie

o.o fajne! na evo by skaatten nie mialem wiezenia a dzi?ki tobie doda?em i dzia?a!
10/5
 

Kacperdr

Advanced User
Joined
Jul 25, 2008
Messages
153
Reaction score
1
Odp: [x.x][TalkActions]Wiezienie

Kurde no ... mam b??d z

Code:
if getPlayerGroupId
:(
Mam silnik 7.92 Evo...
M?g?by kto? mi pomuc?
 
Status
Not open for further replies.
Top