[Pedido] Cadeia ADM
#1

Olб pessoal!

Bom vinha aqui fazer um pedido do sistema que ja to doido, de tanto tentar e nao conseguir!

Se poderem me ajudar agradeзo muito!

Meu problema й a cadeia admin!

Minha GM й daquela onde as variбveis sгo separadas, ou seja, Administradores й pAdmin[playerid] de 0 a 5, Moderadores й guardiao[playerid] e assim sucessivamente!

As cadeias que encontro sгo todas de variбveis ъnicas, ou seja, PlayerInfo[playerid][pAdmin] de 1 a 5000

Entao gostaria de pedir um sistema que seja bom para essa minha variбvel ( pAdmin[playerid] ).

Com /cadeia [id] [tempo] [motivo], /setcadeia [id] [tempo] [motivo] /asoltar [id]

Agradeзo desde jб
Reply
#2

https://sampforum.blast.hk/showthread.php?tid=619473

Nesta gm acima, tem esse sistema do jeito que vocк estб pedindo e tem mais um comando que й o /agendarcadeia [nick] [tempo] [motivo] que serve para que o player quando entrar no servidor seja preso.
Reply
#3

Coloca ai algum comando que o adm faz, exemplo /banir ou /avisar para eu dar uma checada.
Й sу vocк pegar o comando e adaptar para seu GM '-'
e colocar
PHP код:
if(pAdmin[playerid] >= 1)
{


Reply
#4

Minha GM й Semelhante a da BVR E CVR.

Banir:

if(strcmp(cmd, "/ban", true) == 0) {
if(IsPlayerAdmin(playerid) || pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5 || guardiao[playerid]){
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, " | ERRO | Digite: /ban [id] [motivo]");
return 1;
}
plid = strval(tmp);
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(file2, sizeof(file2), PASTA_CONTAS, pname);
if(IsPlayerConnected(plid)){
if(Lendotutorial[plid] == 0){
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' ')) {
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, Vermelho, " | ERRO | Vocк sу pode banir sem uma razгo apropriada.");
}else{
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "| INFO - SERVER | O(a) Administrador(a) %s baniu o jogador: %s ( Motivo: %s (%d-%d-%d )", PlayerName(playerid), pname,result,month,day,year);
BanLog(string);
GameTextForPlayer(plid,"~r~banido~w~!", 2500, 3);
new sstring[128];
new ip[128];
GetPlayerIp(plid,ip,12;
format(sstring, sizeof(sstring), "[ > ] Vocк baniu o jogador(a) %s [ IP : %s ]", pname, ip);
SendClientMessage(playerid, adm, sstring);
format(string, sizeof(string), "{FF0000}| INFO-SERVER | O(a) Administrador(a) %s baniu o jogador: %s ( Motivo: %s )", PlayerName(playerid),pname,result);
SendClientMessageToAll(Vermelho, string);
dini_IntSet("banidos.ini",pname,1);
SetPlayerPos(plid, 831.9581,-1102.1510,24.2969);
GameTextForPlayer(plid,"~r~banido~w~!", 2500, 3);
SendClientMessage(plid, Vermelho, "[ > ] Vocк foi banido do servidor!");
SetTimerEx("BanPlayer", 200, false, "d",plid);
}
}else{
format(string, sizeof(string), " | ERRO | O Jogador %s (%d) nгo pode ser banido ele estб lendo tutorial !", pname,plid);
SendClientMessage(playerid, Vermelho, string);
}
}else{
format(string, sizeof(string), " | ERRO | ID %d nгo й valido!", plid);
SendClientMessage(playerid, Vermelho, string);
}
}
return 1;
}

Kick:

if(strcmp(cmd, "/kick", true) == 0)
{
new aname[MAX_PLAYER_NAME];
GetPlayerName(playerid, aname, MAX_PLAYER_NAME);
format(file, sizeof(file), PASTA_CONTAS, aname);
if(IsPlayerAdmin(playerid) || pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5) {
new plid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, Vermelho, " | ERRO | Digite: /kick [id] [motivo]");
return 1;
}
plid = strval(tmp);
if(IsPlayerConnected(plid)) {
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' ')) {
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result)) {
SendClientMessage(playerid, Vermelho, " | ERRO | Vocк sу pode kickar com uma razгo apropriada.");
}
else {
new pname[MAX_PLAYER_NAME];
GetPlayerName(plid, pname, MAX_PLAYER_NAME);
format(string, sizeof(string), "[ > ] Vocк foi kickado do servidor!", pname);
SendClientMessage(plid, adm, string);
format(string, sizeof(string), "| INFO-SERVER | O(a) Administrador(a) %s kickou o jogador: %s ( Motivo: %s )", aname,pname,result);
SendClientMessageToAll(Vermelho, string);
GameTextForPlayer(plid,"~r~kickado~w~!", 2500, 3);
SetPlayerPos(plid, 831.9581,-1102.1510,24.2969);
SetTimerEx("KickPlayer", 200, false, "d",plid);
}
}
else {
format(string, sizeof(string), " | ERRO | ID %d nгo й valido!", plid);
SendClientMessage(playerid, Vermelho, string);
}
}
return 1;
}


O sistema de Cadeia que o LockedLucas me apresentou na gm que ele me redireciou eu atenho porem nao consigo adapta-la para esse minha outra GM

//Sistema Cadeia
if( !strcmp( cmd, "/cadeia", true ))
{

if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5){
{

tmp = strtok( cmdtext, idx );
if( !strlen( tmp ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /Cadeia [ID] [Tempo] [Motivo]" );
return 1;
}
new
id = strval( tmp )
;
tmp = strtok( cmdtext, idx );
if( !strlen( tmp ))
{

SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /Cadeia [ID] [Tempo] [Motivo]" );
return 1;
}
new
iTempo = strval( tmp )
;
if(pAdmin[playerid] == 5)
{

if( iTempo < 1 || iTempo > 3000 )
{

SendClientMessage( playerid, Vermelho, "| ERRO | Tempo somente de 1 а 3000 minutos !" );
return 1;
}
}
else if(pAdmin[playerid] == 4)
{

if( iTempo < 1 || iTempo > 400 )
{
SendClientMessage( playerid, Vermelho, "| ERRO | Tempo somente de 1 а 400 minutos !" );
return 1;
}
}
else if(pAdmin[playerid] == 3)
{

if( iTempo < 1 || iTempo > 200 )
{

SendClientMessage( playerid, Vermelho, "| ERRO | Tempo somente de 1 а 200 minutos !" );
return 1;
}
}
else if(pAdmin[playerid] == 1)
{

if( iTempo < 1 || iTempo > 80 )
{

SendClientMessage( playerid, Vermelho, "| ERRO | Tempo somente de 1 а 80 minutos !" );
return 1;
}
}

new length = strlen( cmdtext );
while (( idx < length ) && ( cmdtext[ idx ] <= ' ' ))
{

idx++;
}
new offset = idx;
new result[ 64 ];
while (( idx < length ) && (( idx - offset ) < ( sizeof( result ) - 1 )) )
{

result[ idx - offset ] = cmdtext[ idx ];
idx++;
}
result[ idx - offset ] = EOS;
if( !strlen( result ))
{

SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /Cadeia [ID] [Tempo] [Motivo]" );
return 1;
}
if( !IsPlayerConnected( id ))
{

SendClientMessage( playerid, Vermelho, "| ERRO | Ninguйm online com esse ID !" );
return 1;
}
GameTextForPlayer( id, "~w~~h~PRESO!", 3000, 0 );
MensagemFormatadaAll( 0xB0FF30AA, "| INFO-SERVER | O(a) Administrador(a) %s prendeu o(a) jogador(a) %s por %d minutos ( Motivo: %s )", PlayerName( playerid ), PlayerName( id ), iTempo, result);
MensagemFormatada(id, 0xB0FF30AA, "| CADEIA | Vocк ficarб preso por %d minutos!", iTempo );
format(file, sizeof(file ), "Contas/%s.ini", PlayerName( id ));
dini_IntSet(file, "Abuser", 1 );
dini_Set(file, "MotivoPrisao", result);
SetPlayerWantedLevel( id, 0 );
PlayerInfo[ id ][ pPreso ] = iTempo*60;
ResetPlayerWeapons( id );
SetPlayerInterior( id, 6 );
SetPlayerPos(id, 264.4181,77.3247,1001.0391);
KillTimer( T_Preso[ id ] );
T_Preso[ id ] = SetTimerEx( "LiberarPrisao", 1000, false, "d", id );
PlayerInfo[ playerid ][ Abuser ] = 1;
}
}
return 1;
}

//IOOFF
if( !strcmp( cmd, "/cadeiaoff", true ))
{
if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5){
{
tmp2 = strtok( cmdtext, idx );
if( !strlen( tmp2 ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /CadeiaOff [Nick] [Tempo] [Motivo]" );
return 1;
}
format(file, sizeof(file ), "Contas/%s.ini", tmp2 );
if( !fexist( file ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Nгo existe nenhuma conta com esse nick !" );
return 1;
}
tmp = strtok( cmdtext, idx );
if( ! strlen( tmp ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /CadeiaOff [Nick] [Tempo] [Motivo]" );
return 1;
}
new
iTempo = strval( tmp )
;
if( iTempo < 1 || iTempo > 600 )
{
SendClientMessage( playerid, Vermelho, "| ERRO | Tempo somente de 1 а 600 minutos ! " );
return 1;
}
new length = strlen( cmdtext );
while (( idx < length ) && ( cmdtext[ idx ] <= ' ' ))
{
idx++;
}
new offset = idx;
new result[ 64 ];
while (( idx < length ) && (( idx - offset ) < ( sizeof( result ) - 1 )) )
{
result[ idx - offset ] = cmdtext[ idx ];
idx++;
}
result[ idx - offset ] = EOS;
if( !strlen( result ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /CadeiaOff [Nick] [Tempo] [Motivo]" );
return 1;
}
new sistemacadeia[200];
format(sistemacadeia, sizeof(sistemacadeia), "| INFO-SERVER | O(a) Administrador(a) %s agendou a prisгo do(a) jogador(a) %s por %d minutos ( Motivo: %s )", PlayerName(playerid), tmp2, iTempo, result);
SendClientMessageToAll(0xB0FF30AA, sistemacadeia);
dini_Set(file, "MotivoPrisao", result);
dini_IntSet( file, "Abuser", 1 );
dini_IntSet( file, "pPreso", iTempo*60 );
}
}
return 1;
}
//Soltar
if( !strcmp( cmd, "/asoltar", true ))
{
if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5){
{
tmp = strtok( cmdtext, idx );
if( !strlen( tmp ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Digite: /aSoltar [ID]" ) ;
return 1;
}
new
id = strval( tmp )
;
if( !IsPlayerConnected( id ))
{
SendClientMessage( playerid, Vermelho, "| ERRO | Ninguйm online com esse ID!" );
return 1;
}
if( PlayerInfo[ id ][ pPreso ] == 0 )
{
MensagemFormatada( playerid, Vermelho, "| ERRO | O jogador %s nгo estб preso!", PlayerName( id ));
return 1;
}
GameTextForPlayer( id, "~w~Solto", 3000, 0 );
MensagemFormatada( playerid, Vermelho, "| INFO | Vocк soltou o(a) jogador(a) %s da prisгo ", PlayerName( id ));
MensagemFormatada( id, ocd, "| INFO | O(a) Administrador(a) %s soltou vocк da prisгo!", PlayerName( playerid ));
PlayerInfo[ id ][ pPreso ] = 0;
PlayerInfo[ id ][ Abuser ] = 0;
}
}
return 1;
}

Ja tentei colocar as mesma coisas porem sempre me dou com os bons e velhos "26 ERROR"
Reply
#5

Nossa cara dava para economizar muita linha ai, й sу colocar " >= " (maior ou igual)

Pega lб o sistema que vocк quiser e adiciona isso abaixo no lugar de playerinfo.

PHP код:
// (Verifica se o player й adm) || (Verifica se o player й adm maior ou igual a um) 
IsPlayerAdmin(playerid) || pAdmin[playerid] >= 
// USA ESSE EXEMPLO ABAIXO
public OnPlayerCommandText(playeridcmdtext[])
{
    if (
strcmp("/cadeia"cmdtexttrue10) == 0)
    {
        if(
IsPlayerAdmin(playerid) || pAdmin[playerid] >= || guardiao[playerid]){
        
// Do something here
        
}
        return 
1;
    }
    return 
0;

Esse script ai estб nojento, toma arrumei pra vc, mostra ai os erros que dб

PHP код:
//Sistema Cadeia
    
if( !strcmpcmd"/cadeia"true ))
    {
        if(
pAdmin[playerid] >= 1){
        {
            
tmp strtokcmdtextidx );
            if( !
strlentmp ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /Cadeia [ID] [Tempo] [Motivo]" );
                return 
1;
            }
            new 
id strvaltmp );
            
tmp strtokcmdtextidx );
            if( !
strlentmp ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /Cadeia [ID] [Tempo] [Motivo]" );
                return 
1;
            }
            new 
iTempo strvaltmp );
            if(
pAdmin[playerid] >= 1)
            {
                if(
iTempo || iTempo 3000)
                {
                    
SendClientMessageplayeridVermelho"| ERRO | Tempo somente de 1 а 3000 minutos !" );
                    return 
1;
                }
            }
            new 
length strlencmdtext );
            while (( 
idx length ) && ( cmdtextidx ] <= ' ' ))
            {
                
idx++;
            }
            new 
offset idx;
            new 
result64 ];
            while (( 
idx length ) && (( idx offset ) < ( sizeofresult ) - )) )
            {
                
resultidx offset ] = cmdtextidx ];
                
idx++;
            }
            
resultidx offset ] = EOS;
            if( !
strlenresult ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /Cadeia [ID] [Tempo] [Motivo]" );
                return 
1;
            }
            if( !
IsPlayerConnectedid ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Ninguйm online com esse ID !" );
                return 
1;
            }
            
GameTextForPlayerid"~w~~h~PRESO!"3000);
            
MensagemFormatadaAll0xB0FF30AA"| INFO-SERVER | O(a) Administrador(a) %s prendeu o(a) jogador(a) %s por %d minutos ( Motivo: %s )"PlayerNameplayerid ), PlayerNameid ), iTemporesult);
            
MensagemFormatada(id0xB0FF30AA"| CADEIA | Vocк ficarб preso por %d minutos!"iTempo );
            
format(filesizeof(file ), "Contas/%s.ini"PlayerNameid ));
            
dini_IntSet(file"Abuser");
            
dini_Set(file"MotivoPrisao"result);
            
SetPlayerWantedLevelid);
            
PlayerInfoid ][ pPreso ] = iTempo*60;
            
ResetPlayerWeaponsid );
            
SetPlayerInteriorid);
            
SetPlayerPos(id264.4181,77.3247,1001.0391);
            
KillTimerT_Presoid ] );
            
T_Presoid ] = SetTimerEx"LiberarPrisao"1000false"d"id );
            
PlayerInfoplayerid ][ Abuser ] = 1;
        }
    }
    return 
1;
}
//IOOFF
    
if( !strcmpcmd"/cadeiaoff"true ))
    {
        if(
pAdmin[playerid] >= 1){
        {
            
tmp2 strtokcmdtextidx );
            if( !
strlentmp2 ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /CadeiaOff [Nick] [Tempo] [Motivo]" );
                return 
1;
            }
            
format(filesizeof(file ), "Contas/%s.ini"tmp2 );
            if( !
fexistfile ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Nгo existe nenhuma conta com esse nick !" );
                return 
1;
            }
                
tmp strtokcmdtextidx );
            if( ! 
strlentmp ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /CadeiaOff [Nick] [Tempo] [Motivo]" );
                return 
1;
            }
            new 
iTempo strvaltmp );
            if( 
iTempo || iTempo 600 )
            {
                
SendClientMessageplayeridVermelho"| ERRO | Tempo somente de 1 а 600 minutos ! " );
                return 
1;
            }
            new 
length strlencmdtext );
            while (( 
idx length ) && ( cmdtextidx ] <= ' ' ))
            {
                
idx++;
            }
            new 
offset idx;
            new 
result64 ];
            while (( 
idx length ) && (( idx offset ) < ( sizeofresult ) - )) )
            {
                
resultidx offset ] = cmdtextidx ];
                
idx++;
            }
            
resultidx offset ] = EOS;
            if( !
strlenresult ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /CadeiaOff [Nick] [Tempo] [Motivo]" );
                return 
1;
            }
            new 
sistemacadeia[200];
            
format(sistemacadeiasizeof(sistemacadeia), "| INFO-SERVER | O(a) Administrador(a) %s agendou a prisгo do(a) jogador(a) %s por %d minutos ( Motivo: %s )"PlayerName(playerid), tmp2iTemporesult);
            
SendClientMessageToAll(0xB0FF30AAsistemacadeia);
            
dini_Set(file"MotivoPrisao"result);
            
dini_IntSetfile"Abuser");
            
dini_IntSetfile"pPreso"iTempo*60 );
        }
    }
    return 
1;
    }
    
//Soltar
    
if( !strcmpcmd"/asoltar"true ))
    {
        if(
pAdmin[playerid] >= 1){
        {
            
tmp strtokcmdtextidx );
            if( !
strlentmp ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Digite: /aSoltar [ID]" ) ;
                return 
1;
            }
            new 
id strvaltmp );
            if( !
IsPlayerConnectedid ))
            {
                
SendClientMessageplayeridVermelho"| ERRO | Ninguйm online com esse ID!" );
                return 
1;
            }
            if( 
PlayerInfoid ][ pPreso ] == )
            {
                
MensagemFormatadaplayeridVermelho"| ERRO | O jogador %s nгo estб preso!"PlayerNameid ));
                return 
1;
            }
            
GameTextForPlayerid"~w~Solto"3000);
            
MensagemFormatadaplayeridVermelho"| INFO | Vocк soltou o(a) jogador(a) %s da prisгo "PlayerNameid ));
            
MensagemFormatadaidocd"| INFO | O(a) Administrador(a) %s soltou vocк da prisгo!"PlayerNameplayerid ));
            
PlayerInfoid ][ pPreso ] = 0;
            
PlayerInfoid ][ Abuser ] = 0;
        }
    }
    return 
1;
    } 
Reply
#6

Deu uns erros mais consegui arruma-los, coloquei compilei e ja teste!

Deu Super Certo

Muitнssimo Obrigado

Vocк me salvou com certeza

@UP @UP
Reply
#7

Qualquer duvida й sу postar
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)