jail timer
#1

jail is working fine and releasing players after the time which admin set for player. but anyone can make gametext for players like if i jailed a player for 1 minutes one gametext appear for player like 60,59,58,
sorry for my bad english i hope u understand
PHP код:
enum
JailTime

PHP код:
new JailTimer[MAX_PLAYERS]; 
PHP код:
if(PlayerInfo[playerid][Jailed] == 1KillTimerJailTimer[playerid] ); 
PHP код:
CMD:jail(playerid,params[]) {
    if(
PlayerInfo[playerid][LoggedIn] == 1) {
        if(
PlayerInfo[playerid][Level] >= 1) {
            new 
tmp[256], tmp2[256], tmp3[256], Indextmp strtok(params,Index), tmp2 strtok(params,Index), tmp3 strtok(params,Index);
            if(
isnull(params)) return SendClientMessage(playeridred"USAGE: /jail [playerid] [minutes] [reason]");
            new 
player1playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
            
player1 strval(tmp);
             if(
IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
                if(
PlayerInfo[player1][Jailed] == 0) {
                    
GetPlayerName(player1playernamesizeof(playername)); GetPlayerName(playeridadminnamesizeof(adminname));
                    new 
jtime strval(tmp2);
                    if(
jtime == 0jtime 9999;
                       
CMDMessageToAdmins(playerid,"JAIL");
                    
PlayerInfo[player1][JailTime] = jtime*1000*60;
                    
SetTimerEx("JailPlayer",5000,0,"d",player1);
                    
SetTimerEx("Jail1",1000,0,"d",player1);
                    
PlayerInfo[player1][Jailed] = 1;
                    
PlayerPlaySound(player1,1057,0.0,0.0,0.0);
                    if(
jtime == 9999) {
                        if(!
strlen(params[strlen(tmp2)+1])) format(string,sizeof(string),"Administrator %s has jailed %s ",adminnameplayername);
                        else 
format(string,sizeof(string),"Administrator %s has jailed %s [reason: %s]",adminnameplayernameparams[strlen(tmp)+1] );
                       } else {
                        if(!
strlen(tmp3)) format(string,sizeof(string),"Administrator %s has jailed %s for %d minutes",adminnameplayernamejtime);
                        else 
format(string,sizeof(string),"Administrator %s has jailed %s for %d minutes [reason: %s]",adminnameplayernamejtimeparams[strlen(tmp2)+strlen(tmp)+1] );
                    }
                    return 
SendClientMessageToAll(blue,string);
                } else return 
SendClientMessage(playeridred"Player is already in jail");
            } else return 
SendClientMessage(playeridred"Player is not connected or is the highest level admin");
        } else return 
SendClientMessage(playerid,red,"ERROR: You are not a high enough level to use this command");
    } else return 
SendClientMessage(playerid,red,"ERROR: You must be logged in to use this commands");
}
CMD:unjail(playerid,params[]) {
    if(
PlayerInfo[playerid][LoggedIn] == 1) {
        if(
PlayerInfo[playerid][Level] >= 1) {
            new 
tmp[256], Indextmp strtok(params,Index);
            if(
isnull(params)) return SendClientMessage(playeridred"USAGE: /jail [playerid]");
            new 
player1playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
            
player1 strval(tmp);
             if(
IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) {
                if(
PlayerInfo[player1][Jailed] == 1) {
                    
GetPlayerName(player1playernamesizeof(playername)); GetPlayerName(playeridadminnamesizeof(adminname));
                    
format(string,sizeof(string),"Administrator %s has unjailed you",adminname);    SendClientMessage(player1,blue,string);
                    
format(string,sizeof(string),"Administrator %s has unjailed %s",adminnameplayername);
                    
JailRelease(player1);
                    return 
SendClientMessageToAll(blue,string);
                } else return 
SendClientMessage(playeridred"Player is not in jail");
            } else return 
SendClientMessage(playeridred"Player is not connected or is the highest level admin");
        } else return 
SendClientMessage(playerid,red,"ERROR: You are not a high enough level to use this command");
    } else return 
SendClientMessage(playerid,red,"ERROR: You must be logged in to use this commands");

PHP код:
forward Jail1(player1);
public 
Jail1(player1)
{
    
TogglePlayerControllable(player1,false);
    new 
Float:xFloat:yFloat:z;    GetPlayerPos(player1,x,y,z);
    
SetPlayerCameraPos(player1,x+10,y,z+10);SetPlayerCameraLookAt(player1,x,y,z);
    
Jail2(player1);
}
forward Jail2(player1);
public 
Jail2(player1)
{
    new 
Float:xFloat:yFloat:zGetPlayerPos(player1,x,y,z);
    
SetPlayerCameraPos(player1,x+7,y,z+5); SetPlayerCameraLookAt(player1,x,y,z);
    if(
GetPlayerState(player1) == PLAYER_STATE_ONFOOTSetPlayerSpecialAction(player1,SPECIAL_ACTION_HANDSUP);
    
GameTextForPlayer(player1,"~r~Busted By Admins",3000,3);
    
Jail3(player1);
}
forward Jail3(player1);
public 
Jail3(player1)
{
    new 
Float:xFloat:yFloat:zGetPlayerPos(player1,x,y,z);
    
SetPlayerCameraPos(player1,x+3,y,z); SetPlayerCameraLookAt(player1,x,y,z);
}
forward JailPlayer(player1);
public 
JailPlayer(player1)
{
    
ResetPlayerWeapons(player1);
    
SetPlayerInterior(player13);
    
TogglePlayerControllable(player1,true);
    
SetPlayerPos(player1,197.6661,173.8179,1003.0234);
    
SetCameraBehindPlayer(player1);
    
JailTimer[player1] = SetTimerEx("JailRelease",PlayerInfo[player1][JailTime],0,"d",player1);
    
PlayerInfo[player1][Jailed] = 1;
}
forward JailRelease(player1);
public 
JailRelease(player1)
{
    
KillTimerJailTimer[player1] );
    
PlayerInfo[player1][JailTime] = 0;  PlayerInfo[player1][Jailed] = 0;
    
SetPlayerInterior(player1,0); SetPlayerPos(player10.00.00.0); SpawnPlayer(player1);
    
PlayerPlaySound(player1,1057,0.0,0.0,0.0);
    
GameTextForPlayer(player1,"~g~Released ~n~From Jail",3000,3);

Reply
#2

PHP код:
new JT[MAX_PLAYERS];

CMD:jail(playerid,params[]) { 
    if(
PlayerInfo[playerid][LoggedIn] == 1) { 
        if(
PlayerInfo[playerid][Level] >= 1) { 
            new 
tmp[256], tmp2[256], tmp3[256], Indextmp strtok(params,Index), tmp2 strtok(params,Index), tmp3 strtok(params,Index); 
            if(
isnull(params)) return SendClientMessage(playeridred"USAGE: /jail [playerid] [minutes] [reason]"); 
            new 
player1playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128]; 
            
player1 strval(tmp); 

             if(
IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && (PlayerInfo[player1][Level] != ServerInfo[MaxAdminLevel]) ) { 
                if(
PlayerInfo[player1][Jailed] == 0) { 
                    
GetPlayerName(player1playernamesizeof(playername)); GetPlayerName(playeridadminnamesizeof(adminname)); 
                    new 
jtime strval(tmp2); 
                    if(
jtime == 0jtime 9999

                       
CMDMessageToAdmins(playerid,"JAIL"); 
                    
PlayerInfo[player1][JailTime] = jtime*1000*60
                    
SetTimerEx("JailPlayer",5000,0,"d",player1); 
                    
SetTimerEx("Jail1",1000,0,"d",player1); 
                    
PlayerInfo[player1][Jailed] = 1
                    
PlayerPlaySound(player1,1057,0.0,0.0,0.0); 

                    if(
jtime == 9999) { 
                        if(!
strlen(params[strlen(tmp2)+1])) format(string,sizeof(string),"Administrator %s has jailed %s ",adminnameplayername); 
                        else 
format(string,sizeof(string),"Administrator %s has jailed %s [reason: %s]",adminnameplayernameparams[strlen(tmp)+1] ); 
                       } else { 
                        if(!
strlen(tmp3)) format(string,sizeof(string),"Administrator %s has jailed %s for %d minutes",adminnameplayernamejtime); 
                        else 
format(string,sizeof(string),"Administrator %s has jailed %s for %d minutes [reason: %s]",adminnameplayernamejtimeparams[strlen(tmp2)+strlen(tmp)+1] ); 
                        
JT[player1] = jtime;
                    } 
                    return 
SendClientMessageToAll(blue,string); 
                } else return 
SendClientMessage(playeridred"Player is already in jail"); 
            } else return 
SendClientMessage(playeridred"Player is not connected or is the highest level admin"); 
        } else return 
SendClientMessage(playerid,red,"ERROR: You are not a high enough level to use this command"); 
    } else return 
SendClientMessage(playerid,red,"ERROR: You must be logged in to use this commands"); 


forward JailPlayer(player1); 
public 
JailPlayer(player1

    new 
str[128]; 
    
ResetPlayerWeapons(player1); 
    
SetPlayerInterior(player13); 
    
TogglePlayerControllable(player1,true); 
    
SetPlayerPos(player1,197.6661,173.8179,1003.0234); 
    
SetCameraBehindPlayer(player1); 
    
JT[player1]--; // Decreasing the timer
    
format(strsizeof(str), "%d"JT[[player1]);
    
GameTextForPlayer(player1strjtime,3);
    
JailTimer[player1] = SetTimerEx("JailRelease",PlayerInfo[player1][JailTime],0,"d",player1); 
    
PlayerInfo[player1][Jailed] = 1

Advice:
-strtok is outdated, use sscanf instead.
-Why making so much functions while you could do it in 1 function itself? [Apart from the Release function]
Reply
#3

Thanks KARAN ,, i.will test and post result,
Reply
#4

one error
Quote:

forward JailPlayer(player1);
public JailPlayer(player1)
{
new str[128];
ResetPlayerWeapons(player1);
SetPlayerInterior(player1, 3);
TogglePlayerControllable(player1,true);
SetPlayerPos(player1,197.6661,173.8179,1003.0234);
SetCameraBehindPlayer(player1);
JT[player1]--; // Decreasing the timer
format(str, sizeof(str), "%d", JT[player1]);
GameTextForPlayer(player1, str, jtime,3); ////////undefined symbol jtime /
JailTimer[player1] = SetTimerEx("JailRelease",PlayerInfo[player1][JailTime],0,"d",player1);
PlayerInfo[player1][Jailed] = 1;
}

Reply
#5

Why don't you use sscanf, what's with the outdated method of strtok?

Comparison.
Reply
#6

PHP код:
forward JailPlayer(player1);
public 
JailPlayer(player1)
{
    new 
str[128], jtime JT[player1];
    
ResetPlayerWeapons(player1);
    
SetPlayerInterior(player13);
    
TogglePlayerControllable(player1,true);
    
SetPlayerPos(player1,197.6661,173.8179,1003.0234);
    
SetCameraBehindPlayer(player1);
    
JT[player1]--; // Decreasing the timer
    
format(strsizeof(str), "%d"JT[player1]);
    
GameTextForPlayer(player1strjtime,3);
    
JailTimer[player1] = SetTimerEx("JailRelease",PlayerInfo[player1][JailTime],0,"d",player1);
    
PlayerInfo[player1][Jailed] = 1;

Reply
#7

compiled but not showing me time text
Reply
#8

PHP код:
forward JailPlayer(player1);
public 
JailPlayer(player1)
{
    new 
str[128], jtime JT[player1], PlayerInfo[player1][JailTime];
    
ResetPlayerWeapons(player1);
    
SetPlayerInterior(player13);
    
TogglePlayerControllable(player1,true);
    
SetPlayerPos(player1,197.6661,173.8179,1003.0234);
    
SetCameraBehindPlayer(player1);
    
JT[player1]--; // Decreasing the timer
    
format(strsizeof(str), "%d"JT[player1]);
//    format(str, sizeof(str), "%d", PlayerInfo[player1][JailTime]);
    
GameTextForPlayer(player1strd,3);
    
JailTimer[player1] = SetTimerEx("JailRelease",PlayerInfo[player1][JailTime],0,"d",player1);
    
PlayerInfo[player1][Jailed] = 1;

Tested, now gametext is showing but the numbers aren't decreasing.
Reply
#9

2 errors
Quote:

warning 219: local variable "d" shadows a variable at a preceding level
warning 204: symbol is assigned a value that is never used: "jtime"

Reply
#10

PHP код:
forward JailPlayer(player1);
public 
JailPlayer(player1)
{
    new 
str[128], JTT PlayerInfo[player1][JailTime];
    
ResetPlayerWeapons(player1);
    
SetPlayerInterior(player13);
    
TogglePlayerControllable(player1,true);
    
SetPlayerPos(player1,197.6661,173.8179,1003.0234);
    
SetCameraBehindPlayer(player1);
    
JTT--; // Decreasing the timer
    
format(strsizeof(str), "%d"JTT);
//    format(str, sizeof(str), "%d", PlayerInfo[player1][JailTime]);
    
GameTextForPlayer(player1strJTT,3);
    
JailTimer[player1] = SetTimerEx("JailRelease",PlayerInfo[player1][JailTime],0,"d",player1);
    
PlayerInfo[player1][Jailed] = 1;

Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)