• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Solved Jail Talkaction Script Help

patriciou

Member
Joined
Dec 26, 2009
Messages
180
Reaction score
6
Hello Otlanders, Ive got a Jail script but i wanted to ask
if somebody might edit it so ...

1.when you say /jail *playername* it jails that person.
2. Randomly picks a position to teleport the person to
3. unjails after .10 mins time (default)


I would be very Please and ill REP++ for Help :)

Lua:
--[[
OTLAND.NET / CREDITS
  CREATED BY:
    master-m
  EDITED BY:
    Lithium: Shorten.
    Velik: Missing parts. Tested code.
    Colandus: Missing end. Works for both TFS and Evolutions. Added more "checks". Shorten alot.
]]
local jpos = { 
    [1] = {x = 1102, y = 824, z = 7},
    [2] = {x = 1102, y = 824, z = 7},
    [3] = {x = 1102, y = 824, z = 7},
    [4] = {x = 1102, y = 824, z = 7},
    [5] = {x = 1102, y = 824, z = 7},
    [6] = {x = 1102, y = 824, z = 7},
    [7] = {x = 1102, y = 824, z = 7},    
    [8] = {x = 1102, y = 824, z = 7},
    [9] = {x = 1102, y = 824, z = 7},
    [10] = {x = 1151, y= 874, z = 7}
}
 
function onSay ( cid, words, param )
    grouprequired = 4
    jailedstoragevalue = 1338
    unjailpos = { x = 876, y = 1025, z = 7 } 
    if words == '/jail' then    
    if getPlayerGroupId ( cid ) >= grouprequired and param ~= "" and getPlayerStorageValue ( getPlayerByName ( param ), jailedstoragevalue ) == -1 then 
            jailer = getPlayerName ( cid ) 
            doTeleportThing(isplayer, jpos, TRUE) 
            doPlayerSendTextMessage ( getPlayerByName ( param ), 25, 'You have been jalied by '..jailer..'' ) 
            doPlayerSendTextMessage ( cid, 21, "You just jailed "..param.."." )
            setPlayerStorageValue ( getPlayerByName ( param ), jailedstoragevalue, 1 )
        elseif getPlayerGroupId ( cid ) < grouprequired then
            doPlayerSendTextMessage ( cid, 21, "You don't have access to unjail other players." )
        elseif getPlayerStorageValue ( getPlayerByName ( param ), jailedstoragevalue ) ~= -1 then
            doPlayerSendTextMessage ( cid, 21, "This Player is already jailed." )        
        else
                doPlayerSendTextMessage ( cid, 21, "You need to fill in a playername!" )
        end
    elseif words == '/unjail' then
        if getPlayerGroupId ( cid ) >= grouprequired and param ~= "" and getPlayerStorageValue ( getPlayerByName ( param ), jailedstoragevalue ) == 1 then 
            unjailer = getPlayerName ( cid )
            doTeleportThing ( getPlayerByName ( param ), unjailpos, 0 )
            doPlayerSendTextMessage ( getPlayerByName ( param ), 25, 'You have been unjailed by '..unjailer..'' )
            doPlayerSendTextMessage ( cid, 21,"You just unjailed "..param.."." )
            setPlayerStorageValue ( getPlayerByName ( param ), jailedstoragevalue, -1 )
 
        elseif getPlayerGroupId ( cid ) < 4 then
            doPlayerSendTextMessage ( cid, 21, "You cannot unjail someone!" )
        elseif getPlayerStorageValue ( getPlayerByName ( param ), jailedstoragevalue ) ~= 1 then
            doPlayerSendTextMessage ( cid, 21, "This Player is already unjailed." )
        else
            doPlayerSendTextMessage ( cid, 21, "You need to fill in a playername!" )
        end    
    end        
e
 
Last edited by a moderator:
K thanks for that but Its not for Random Cells :/ i need a Script that teleports the Player to a random cell ( ive got over 10 cells )
 
Try this:

Lua:
-- Default jail time in seconds -- 
default_jail = 30 
-- The permission you need to jail someone -- 
grouprequired = 4 
-- StorageValue that the player gets -- 
jailedstoragevalue_time = 1338 
jailedstoragevalue_bool = 1339 
-- Set the position once unjailed: -- 
unjailpos = { x = 1029, y = 1005, z =7 } 
-- auto kicker, dont edit 
jail_list = {} 
jail_list_work = 0 

local jpos = { 
    [1] = {x = 1102, y = 824, z = 7},
    [2] = {x = 1102, y = 824, z = 7},
    [3] = {x = 1102, y = 824, z = 7},
    [4] = {x = 1102, y = 824, z = 7},
    [5] = {x = 1102, y = 824, z = 7},
    [6] = {x = 1102, y = 824, z = 7},
    [7] = {x = 1102, y = 824, z = 7},    
    [8] = {x = 1102, y = 824, z = 7},
    [9] = {x = 1102, y = 824, z = 7},
    [10] = {x = 1151, y= 874, z = 7}
}

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,'You were kicked from jail! See you later :)') 
            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, 'You are jailed until ' .. os.date("%H:%M:%S", getPlayerStorageValue(cid, jailedstoragevalue_time)) .. ' (now is: ' .. 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, 'You will be kicked from jail in one second.') 
            else 
                doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You are not jailed.') 
            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, jpos, TRUE) 
                setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) 
                setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) 
                table.insert(jail_list,isplayer) 
                doPlayerSendTextMessage ( cid, MESSAGE_INFO_DESCR, 'You jailed '.. getCreatureName(isplayer) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').')  
                doPlayerSendTextMessage ( isplayer, MESSAGE_INFO_DESCR, 'You have been jailed by '.. getCreatureName(cid) ..' until ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (now is: ' .. os.date("%H:%M:%S", os.time()) .. ').')  
                return TRUE 
            else 
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") 
                return FALSE 
            end 
        else 
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") 
            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, 'You unjailed '.. getCreatureName(isplayer) ..'.') 
            else 
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player with this name doesn\'t exist or is offline.") 
                return FALSE 
            end 
        else 
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have access to unjail other players.") 
            return FALSE 
        end 
    end 
    return FALSE 
end

So it will works:

Code:
!jail "10, Name

10 = minutes.
 
k its all good When i say /unjail *name* then all works good but when i say /Jail *playername* then it says "
18:44 You have been jailed by Admin Cintravia until 18:44:41 (now is: 18:44:11)."

and then it doesnt teleport to cells ...

REPP ++ For Fixing it :)

- - - Updated - - -

And i dont get any errors in console
 
Okay, which coordinate do you want the jail position to be?
jpos has 10 coordinates, 9 are the same.
 
They are the Coordinates of the Cells

[1] = { x = 1367, y = 624, z =7 },
[2] = { x = 1392, y = 628, z =7 },
[3] = { x = 1386, y = 634, z =7 },
[4] = { x = 1365, y = 661, z =7 },
[5] = { x = 1382, y = 669, z =7 },
[6] = { x = 1346, y = 682, z =7 },
[7] = { x = 1369, y = 689, z =7 },
[8] = { x = 1365, y = 702, z =7 },
[9] = { x = 1375, y = 705, z =7 },
[10] = { x = 1387, y = 700, z =7 }


And unjail position is temple = { x = 876, y = 1025, z =7 }


REP ++ for Help

- - - Updated - - -

If that would help you Can enter my Ots and ill show you what i Mean .:)

Cintravia.hopto.org
8.6 or Private client download
 
Do you decide which jail cell they go to?

Here's what's happening:
Lua:
doTeleportThing(isplayer, jpos, TRUE)

I guess it just doesn't know which position in the array you want to use.
So, I guess you want to randomly pick a position?
Lua:
doTeleportThing(isplayer, jpos[math.random(1,#jpos)], TRUE)
 
Man Thank You VERY VERY much... Ive been trying to Fix it but didnt work and you Came from nowhere and Fixed it :DD LOVE YOU and BIG REP +++++ FOR YOU!

- - - Updated - - -

SOLVED
 
Dont put pz and have a training monk or something in the jail, if you dont want them to be able to skill just make the training monk not attackable
 
Back
Top