SA-MP Forums Archive
Cуdigos Ъteis #1 - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: Cуdigos Ъteis #1 (/showthread.php?tid=144744)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29


Re: [ Cуdigos Ъteis ] - Shadoww5 - 14.02.2012

Quote:
Originally Posted by SlashPT
View Post
Tipo, nao sei se tu chegas-te a minha conclusao, ate no meu post anterior quero resumir a isto:

O pessoal da parte PT/BR, tem andado a se "gabar muito", com isto ve-se as vezes paginas de "correcзoes" umas atras de outras, e eu com aquele post queria evitar isso mesmo talvez se algum pessoal que esta aqui, nao me estou a referir nem a Ti, nem ao DreeH, comeзar a tomar alguma atitude, parem com isso.

Segundo ponto quanto ao codigo nao sei se reparas-te mas eu ja parei de discutir isso ha algum tempo, eu agora estou a falar da atitude que muitos tem perante o forum, talvez alguns que estao ai a ler lhes caiba a carapuзa, entendes ao que quero chegar?...

Edit: Para alem que eu nao tenho problema em ele tar a corrigir aquilo, ao menos ele disse uma maneira diferente de fazer o codigo, porem como ja disse, iriam vir mais "por cima dele"...
Imaturidade nгo й algo tгo abstrato a ponto de ser definida por uma postagem num forum de scripts.

Seria interessante vocкs pararem de discutir ou senгo vгo acabar como muitos outros que ficam brigando por tudo aqui no forum: Banidos.

Luxurion ou RoamPT, por favor, excluam todos esses posts sem nenhuma necessidade. Agradecido.


Re: [ Cуdigos Ъteis ] - DarkScripter - 15.02.2012

Quote:
Originally Posted by Shadoww5
View Post
Imaturidade nгo й algo tгo abstrato a ponto de ser definida por uma postagem num forum de scripts.

Seria interessante vocкs pararem de discutir ou senгo vгo acabar como muitos outros que ficam brigando por tudo aqui no forum: Banidos.

Luxurion ou RoamPT, por favor, excluam todos esses posts sem nenhuma necessidade. Agradecido.
concordo com o dark team pt.
oque eu acho mais foda й os Newbies que sу programam PAWN e ficam corrijindo os outros
como se fosse os fodхes, o PAWN й uma linguagem de jogo
ou seja, se o PIPA/SOPA for legaliza-do, o pawn nгo irб existir mais.
entгo pare de agir como crianзa caralho!


Re: [ Cуdigos Ъteis ] - SlashPT - 25.02.2012

Quote:
Originally Posted by War Paz
Посмотреть сообщение
Funзгo pra pegar a distвncia entre dois jogadores, retorna um float:

Код:
stock GetPlayerDist(idx,idy){
	new Float:x1, Float:y1, Float:z1;
	new Float:x2, Float:y2, Float:z2;
	new Float:DistX, Float:DistY, Float:DistZ,Float:DistDiag,Float:DistF;
	GetPlayerPos(idx,x1,y1,z1);
	GetPlayerPos(idy,x2,y2,z2);
	DistX=Modulo(x1,x2);
	DistY=Modulo(y1,y2);
	DistZ=Modulo(z1,z2);
	DistDiag=(DistX*DistY)/2;
	DistF=(DistDiag*DistZ)/2;
	return DistF;
}
Precisa dessa funзгo criada pelo Willian Luigi, que pega o mуdulo (matemбtico) de uma subtraзгo:

Код:
stock Modulo(x, y) {
	new nn = x - y;
	return ( ( nn < 0 ) ? ( ~(nn)+1 ) : ( nn ) );
}
Ainda nгo tive oportunidade de testar entгo tudo tб sу na teoria, se alguйm puder testar e me dizer se funciona, agradeceria MUITO
O grande problema do teu codigo й que o algoritmo para o calculo da distancia, nгo й o "verdadeiro", usado na Engine do GTA SA ou do SA:MP, nao sei se tambem tem algum bug...

Quote:
Originally Posted by iReflesh
Посмотреть сообщение
Nгo seria melhor usar GetPlayerDistanceFromPoint
Sim para alem que como ja referi, o codigo dele nao vai fazer return а Distancia Real pois nao й esse o algoritmo

Deixo aqui um codigo que fiz agora, porem nao sei se funciona pois nao testei...

Tens que meter isto no inicio do GM/FS para nao te dar uma Warning :
pawn Код:
stock
    Float: GetDistanceFromPlayerToPlayer ( playerid , extraid ) ;
E depois no fundo do GM/FS...
pawn Код:
stock
    Float: GetDistanceFromPlayerToPlayer ( playerid , extraid )
{
    if ( ( !IsPlayerConnected ( playerid ) ) || ( !IsPlayerConnected ( extraid ) ) ) return -1.0 ;
    static
        Float: _C [ 6 ]
    ;
    GetPlayerPos ( playerid , _C [ 0 ] , _C [ 1 ] , _C [ 2 ] ) ;
    GetPlayerPos ( extraid , _C [ 3 ] , _C [ 4 ] , _C [ 5 ] ) ;

    return floatsqroot ( floatadd ( floatmul ( floatsub ( _C [ 0 ] , _C [ 3 ] ) , floatsub ( _C [ 0 ] , _C [ 3 ] ) ) , floatadd ( floatmul ( floatsub ( _C [ 1 ] , _C [ 4 ] ) , floatsub ( _C [ 1 ] , _C [ 4 ] ) ) , floatmul ( floatsub ( _C [ 2 ] , _C [ 5 ] ) , floatsub ( _C [ 2 ] , _C [ 5 ] ) ) ) ) ) ;
}



Re: [ Cуdigos Ъteis ] - andmeida10 - 25.02.2012

Quote:
Originally Posted by Gustavo_z
Посмотреть сообщение
Alguйm aн nгo teria um COD para Anti-DB ? Tipo que quando o player tentar apertar o botгo do Mouse para fazer DB, que ele seja ejetado automaticamente do veнculo.
Obrigado!

pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if (PRESSED(KEY_FIRE)) //verifica se clicou na tecla de disparar
    {
        if (IsPlayerInAnyVehicle(playerid) && GetPlayerWeapon(killerid) == ID DA ARMA QUE VC QUER) //verifica se estб num veiculo e tem a arma Tal....
        {
                  RemovePlayerFromVehicle(playerid);//ejeta o player do veiculo
        }
    }
    return 1;
}



Re: [ Cуdigos Ъteis ] - steki. - 25.02.2012

pawn Код:
#define PRESSED(%0) !(oldkeys & %0) && (newkeys & %0)



Re: [ Cуdigos Ъteis ] - Bosma_cmd - 25.02.2012

pawn Код:
stock bool:IsValidIP(ip[]) {

    if (strlen(ip) > 0xF) {

        return false;
    }

    new
        numericIP[4]
    ;

    if(sscanf(ip, "p<.>a<i>[4]", numericIP)) {

        return false;
    }

    for (new i = 0; i != 4; ++i) {

        if (numericIP[i] > 0xFF || numericIP[i] < 0x0) {

            return false;
        }
    }

    return true;
}



Re: [ Cуdigos Ъteis ] - Ricop522 - 26.02.2012

Quote:
Originally Posted by Gustavo_z
Посмотреть сообщение
Bom gente, eu queria um Anti-DB que quando o player matar o outro, que ele vб preso por 1 minuto, e que apareзa no chat: %s [ID: %d] Foi preso por cometer DB!
Obrigado!
pawn Код:
if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER && killerid != INVALID_PLAYER_ID) {
     new st[50];
     format(st, 50, "%s matou %s por DB e foi preso.", Nome(killerid), Nome(playerid));
     SendClientMessageToAll(-1, st);
}



Re: [ Cуdigos Ъteis ] - WLSF - 26.02.2012

pawn Код:
CMD:criarobjeto(playerid, params[]) {
            new obj, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:dis;
            if(sscanf(params,"iffff", obj, rx, ry, rz, dis))
                return SendClientMessage(playerid, -1, "USE: /criarobjeto [id, rotaзгo x, y, z, distвncia visivel]");
     
            GetPlayerPos(playerid, x, y, z);
            CreateObject(obj, x, y, z, rx, ry, rz, dis);
            return true;
    }



Re: [ Cуdigos Ъteis ] - WLSF - 28.02.2012

pawn Код:
stock str_size(string[])
    return ((!string[1]) ? (printf("Sua string contйm: %d caracter", strlen(string))):(printf("Sua string contйm: %d caracteres", strlen(string))));



Re: [ Cуdigos Ъteis ] - steki. - 28.02.2012

use strlen. Vocк pode crashar o servidor com isso.


Re: [ Cуdigos Ъteis ] - steki. - 28.02.2012

BitPos, retorna o nъmero em que a posiзгo do ъnico bit true й dada, ъtil para ґarraysґ de bits, pra poupar espaзo e colocar vбrios atributos (true/false) em uma ъnica variavel int.

pawn Код:
#define bit_pos(%0) (1 << (%0-1))
Teste:
pawn Код:
#include <a_samp>


#define bit_pos(%0) (1 << (%0-1))
main () {
    new a = -2;
    while(++a < 100)
        printf("%d - %d", a, bit_pos(a));
    quit();
}
Resultado:
Код:
[13:31:40] -1 - 1073741824
[13:31:40] 0 - --
[13:31:40] 1 - 1
[13:31:40] 2 - 2
[13:31:40] 3 - 4
[13:31:40] 4 - 8
[13:31:40] 5 - 16
[13:31:40] 6 - 32
[13:31:40] 7 - 64
[13:31:40] 8 - 128
[13:31:40] 9 - 256
[13:31:40] 10 - 512
[13:31:40] 11 - 1024
[13:31:40] 12 - 2048
[13:31:40] 13 - 4096
[13:31:40] 14 - 8192
[13:31:40] 15 - 16384
[13:31:40] 16 - 32768
[13:31:40] 17 - 65536
[13:31:40] 18 - 131072
[13:31:40] 19 - 262144
[13:31:40] 20 - 524288
[13:31:40] 21 - 1048576
[13:31:40] 22 - 2097152
[13:31:40] 23 - 4194304
[13:31:40] 24 - 8388608
[13:31:40] 25 - 16777216
[13:31:40] 26 - 33554432
[13:31:40] 27 - 67108864
[13:31:40] 28 - 134217728
[13:31:40] 29 - 268435456
[13:31:40] 30 - 536870912
[13:31:40] 31 - 1073741824
[13:31:40] 32 - --
[13:31:40] 33 - 1
[13:31:40] 34 - 2
[13:31:40] 35 - 4
[13:31:40] 36 - 8
[13:31:40] 37 - 16
[13:31:40] 38 - 32
[13:31:40] 39 - 64
[13:31:40] 40 - 128
[13:31:40] 41 - 256
[13:31:40] 42 - 512
[13:31:40] 43 - 1024
[13:31:40] 44 - 2048
[13:31:40] 45 - 4096
[13:31:40] 46 - 8192
[13:31:40] 47 - 16384
[13:31:40] 48 - 32768
[13:31:40] 49 - 65536
[13:31:40] 50 - 131072
[13:31:40] 51 - 262144
[13:31:40] 52 - 524288
[13:31:40] 53 - 1048576
[13:31:40] 54 - 2097152
[13:31:40] 55 - 4194304
[13:31:40] 56 - 8388608
[13:31:40] 57 - 16777216
[13:31:40] 58 - 33554432
[13:31:40] 59 - 67108864
[13:31:40] 60 - 134217728
[13:31:40] 61 - 268435456
[13:31:40] 62 - 536870912
[13:31:40] 63 - 1073741824
[13:31:40] 64 - --
[13:31:40] 65 - 1
[13:31:40] 66 - 2
[13:31:40] 67 - 4
[13:31:40] 68 - 8
[13:31:40] 69 - 16
[13:31:40] 70 - 32
[13:31:40] 71 - 64
[13:31:40] 72 - 128
[13:31:40] 73 - 256
[13:31:40] 74 - 512
[13:31:40] 75 - 1024
[13:31:40] 76 - 2048
[13:31:40] 77 - 4096
[13:31:40] 78 - 8192
[13:31:40] 79 - 16384
[13:31:40] 80 - 32768
[13:31:40] 81 - 65536
[13:31:40] 82 - 131072
[13:31:40] 83 - 262144
[13:31:40] 84 - 524288
[13:31:40] 85 - 1048576
[13:31:40] 86 - 2097152
[13:31:40] 87 - 4194304
[13:31:40] 88 - 8388608
[13:31:40] 89 - 16777216
[13:31:40] 90 - 33554432
[13:31:40] 91 - 67108864
[13:31:40] 92 - 134217728
[13:31:40] 93 - 268435456
[13:31:40] 94 - 536870912
[13:31:40] 95 - 1073741824
[13:31:40] 96 - --
[13:31:40] 97 - 1
[13:31:40] 98 - 2
[13:31:40] 99 - 4



Re: [ Cуdigos Ъteis ] - DarkScripter - 28.02.2012

Avisar Otimizadu
pawn Код:
if(!strcmp(cmdtext,"/avisar", 6, true))
{
    if(!cmdtext[8] || cmdtext[8] == ' ')
        return SendClientMessage(playerid, -1, "/avisar <id>");
   
    static
        Av[24],
        Av2[24],
        Str[128]
    ;
   
    GetPlayerName(strval(cmdtext[8]), Av, 24); GetPlayerName(playerid, Av2, 24);
    format(Str, sizeof(Str),"%s ganhou um aviso de %s", Av, Av2);
    SendClientMessage(playerid, -1,  Str);
    return true;
}
Crйditus Eo.


Re: [ Cуdigos Ъteis ] - DarkScripter - 02.03.2012

Conversor de tempo, criado por min.
pawn Код:
static stock Convert(numero, tempo, bool:prin)
{
    /*
            Coloque 1 caso queira em inglкs,
            coloque 2 caso queira em portuguкs.
           
            change to 1 if want in inglese,
            change to 2 if want in portuguкs.
           
    */

    #define iLANG 1
   
   
    static
        var_tempo = 0,
        var_saida = 0,
        string[50] = EOS,
        out[50]    = EOS
    ;
   
    #if iLANG == 1
    {
        switch(tempo)
        {
            case 0: var_tempo = 1000,               string = "Seconds(s)";
             case 1: var_tempo = 60000,             string = "Minute(s)";
             case 2: var_tempo = 3600000,           string = "Hor(s)";
             case 3: var_tempo = 86400000,          string = "Day(s)";
             case 4: var_tempo = 86400000,          string = "Week(s)";
             case 5: var_tempo = 2592000000,        string = "Month(s)";
             case 6: var_tempo = 2592000000 * 12,   string = "Year(s)";
             default: var_tempo = 5;
        }
    }
    #endif
    #if iLANG == 2
    {
        switch(tempo)
        {
            case 0: var_tempo = 1000,               string = "Segundo(s)";
            case 1: var_tempo = 60000,              string = "Minuto(s)";
            case 2: var_tempo = 3600000,            string = "Hora(s)";
            case 3: var_tempo = 86400000,           string = "Dia(s)";
            case 4: var_tempo = 86400000,           string = "Semana(s)";
            case 5: var_tempo = 2592000000,         string = "Mes(es)";
            case 6: var_tempo = 2592000000 * 12,    string = "Ano(s)";
            default: var_tempo = 5;
        }
    }
    #endif
    if(var_tempo != 5)
    {
        var_saida =  numero * var_tempo;
        format(out, sizeof(out),"%d %s", var_tempo, var_saida);
    }
    else
    {
        out = "Tempo invбlido";
    }
    if(prin)
    {
        print(out);
    }
    return out;
}



Re: [ Cуdigos Ъteis ] - steki. - 12.03.2012

pawn Код:
CMD:trazerall(playerid, params[])
{
     new index = -1, Float:pos[3];
     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
     while(++index < MAX_PLAYERS)
     {
          SetPlayerPos(index, pos[0], pos[1], pos[2]);              
     }
     return 1;                      
}



Re: [ Cуdigos Ъteis ] - xPaulistaa - 19.04.2012

Random Mensagem
-
pawn Code:
// Topo
forward SendMSG();
new RandomColors [] =
{
  0xAFAFAFAA // Cinza So Mudar
  // Se Quiser colocar mais cores e so por a ,[virgula] no fim da cor do de cima /\ e colocar as outras em baixo
 // Quando terminar apague a ultima ,[virgula] da ultima cor.
};
new RandomMSG[][] =
{
  "Aqui Sua Mensagem..",
  "Aqui Sua Mensagem.."
  // Mesmo esquema do de cores,quer mais mensagems? so colocar a ,[virgula] й na ultima mensagem apague.
};
// OnGameModeInit
SetTimer("SendMSG", 200000, true);
// Explicaзгo :
// SendMSG = Nome da Variavel/public criada.
// 200000 = O Tempo em milesegundos.

// Criando a Public das Mensagems.
// Procure um Lugar do seu GameMode. E Adicione :
public SendMSG()
{
  new random2 = random(sizeof(RandomColors));
  new randMSG = random(sizeof(RandomMSG));
  SendClientMessageToAll(RandomColors[random2], RandomMSG[randMSG]);
}
E Isso
Espero ter ajudado alguns novatos.


Re: [ Cуdigos Ъteis ] - Don_Speed - 19.04.2012

Quote:
Originally Posted by xPaulistaa
View Post
Random Mensagem
-
pawn Code:
// Topo
forward SendMSG();
new RandomColors [] =
{
  0xAFAFAFAA // Cinza So Mudar
  // Se Quiser colocar mais cores e so por a ,[virgula] no fim da cor do de cima /\ e colocar as outras em baixo
 // Quando terminar apague a ultima ,[virgula] da ultima cor.
};
new RandomMSG[][] =
{
  "Aqui Sua Mensagem..",
  "Aqui Sua Mensagem.."
  // Mesmo esquema do de cores,quer mais mensagems? so colocar a ,[virgula] й na ultima mensagem apague.
};
// OnGameModeInit
SetTimer("SendMSG", 200000, true);
// Explicaзгo :
// SendMSG = Nome da Variavel/public criada.
// 200000 = O Tempo em milesegundos.

// Criando a Public das Mensagems.
// Procure um Lugar do seu GameMode. E Adicione :
public SendMSG()
{
  new random2 = random(sizeof(RandomColors));
  new randMSG = random(sizeof(RandomMSG));
  SendClientMessageToAll(RandomColors[random2], RandomMSG[randMSG]);
}
E Isso
Espero ter ajudado alguns novatos.
https://sampforum.blast.hk/showthread.php?tid=180718


Re: [ Cуdigos Ъteis ] - Lуs - 21.04.2012

Meu new.pwn:

pawn Code:
#include    <   a_samp  >
#include    <   dof2    >
#include    <   zcmd    >
#include    <   sscanf  >
#include    <   foreach >

main(){}

public OnFilterScriptExit()
{
    DOF2_Exit();
    return 1;
}

CMD:gmx(playerid) return SendRconCommand("gmx");



Re: [ Cуdigos Ъteis ] - Don_Speed - 21.04.2012

pawn Code:
#include <a_samp>
#include <zcmd>
#include <sscanf>
//Cor
#define COLOR_BALLAS    0xD900D366
#define COLOR_GROOVE    0x00D90066
COMMAND:arma(playerid, params[])
{
    new Arma;
    GetPlayerName(playerid, Name, sizeof(Name));
    if(sscanf(params, "d", Arma)) return SendClientMessage(playerid,COLOR_BALLAS,"Use: /arma [arma]");
    if(Arma < 1 || Arma > 46) return SendClientMessage(playerid,COLOR_BALLAS,"Armas de ID 1 a 46");
    GivePlayerWeapon(playerid, Arma, 999);
    format(Celulas, sizeof(Celulas), "[ARMA]O Jogador %s(ID:%d) Pegou Arma(/arma).", Name, playerid);
    SendClientMessageToAll(COLOR_BALLAS, Celulas);
    return 1;
}
COMMAND:vida(playerid, params[])
{
    new Vida;
    GetPlayerName(playerid, Name, sizeof(Name));
    if(sscanf(params, "d", Vida)) return SendClientMessage(playerid,COLOR_BALLAS,"Use: /Vida [Quatia]");
    if(Vida < 1 || Vida > 100) return SendClientMessage(playerid,COLOR_BALLAS,"Apenas de 1 a 100");
    SetPlayerHealth(playerid, Vida);
    format(Celulas, sizeof(Celulas), "[Vida]O Jogador %s(ID:%d) Pegou Vida(/vida).", Name, playerid);
    SendClientMessageToAll(COLOR_BALLAS, Celulas);
    return 1;
}
COMMAND:colete(playerid, params[])
{
    new Colete;
    GetPlayerName(playerid, Name, sizeof(Name));
    if(sscanf(params, "d", Colete)) return SendClientMessage(playerid,COLOR_BALLAS,"Use: /Colete [Quatia]");
    if(Colete < 1 || Colete > 90) return SendClientMessage(playerid,COLOR_BALLAS,"Apenas de 1 a 90");
    SetPlayerArmour(playerid, Colete);
    format(Celulas, sizeof(Celulas), "[Colete]O Jogador %s(ID:%d) Pegou Colete(/Colete).", Name, playerid);
    SendClientMessageToAll(COLOR_BALLAS, Celulas);
    return 1;
}
COMMAND:kit1(playerid, params[])
{
    GetPlayerName(playerid, Name, sizeof(Name));
    GivePlayerWeapon(playerid, 24, 999);
    GivePlayerWeapon(playerid, 18, 999);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    format(Celulas,sizeof(Celulas),"[KIT] O Jogador %s(ID:%d) pegou um Kit-01 (/Kit1)", Name, playerid);
    SendClientMessageToAll(COLOR_GROOVE, Celulas);
    return 1;
}
COMMAND:kit2(playerid, params[])
{
    GetPlayerName(playerid, Name, sizeof(Name));
    GivePlayerWeapon(playerid, 24, 999);
    GivePlayerWeapon(playerid, 18, 999);
    GivePlayerWeapon(playerid, 23, 999);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    format(Celulas,sizeof(Celulas),"[KIT] O Jogador %s(ID:%d) pegou um Kit-02 (/Kit2)", Name, playerid);
    SendClientMessageToAll(COLOR_GROOVE, Celulas);
    return 1;
}
COMMAND:kit3(playerid, params[])
{
    GetPlayerName(playerid, Name, sizeof(Name));
    GivePlayerWeapon(playerid, 24, 999);
    GivePlayerWeapon(playerid, 18, 999);
    GivePlayerWeapon(playerid, 23, 999);
    GivePlayerWeapon(playerid, 20, 999);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 100);
    format(Celulas,sizeof(Celulas),"[KIT] O Jogador %s(ID:%d) pegou um Kit-03 (/Kit3)", Name, playerid);
    SendClientMessageToAll(COLOR_GROOVE, Celulas);
    return 1;
}



Re: [ Cуdigos Ъteis ] - RoacH` - 21.04.2012

Como o comando sу tem apenas 1 parametro nгo й preciso utilizar sscanf, use Isnull para checar se o que ele digitou й NULO (ou seja 0), nгo digitou nada.
ex:
/vida (irб retorna a mensagem de erro.)



Re: [ Cуdigos Ъteis ] - RoacH` - 21.04.2012

pawn Code:
#include    <   a_samp  >
#include    <   zcmd    >
#include    <   sscanf2 >

new EstaPreso[MAX_PLAYERS], TimerJaulado[MAX_PLAYERS], pname[MAX_PLAYER_NAME], str[80];

CMD:prender(playerid, params[])
{
    new prenderid, tempo;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFF0000AA,"Vocк nгo tem permissгo.");
    if(sscanf(params, "ui", playerid, tempo)) return SendClientMessage(playerid,0xFF0000AA,"/prender <playerid> <tempo>");
    if(!IsPlayerConnected(prenderid)) return SendClientMessage(playerid,0xFF0000AA,"Este jogador nгo estб online.");
    if(EstaPreso[prenderid] == 1) return SendClientMessage(playerid,0xFF0000AA,"Este jogador jб estб preso.");
    if(tempo < 0) return SendClientMessage(playerid,0xFF0000AA,"Tempo invalido.");
    GetPlayerName(prenderid,pname,sizeof(pname));
    format(str, sizeof(str), "%s Foi preso pelo administrador por: %d minuto.",pname,tempo);
    SendClientMessageToAll(0xFF0000AA, str);
    SetPlayerPos(prenderid, 197.6661, 173.8179, 1003.0233);
    SetPlayerInterior(prenderid, 3);
    ResetPlayerWeapons(prenderid);
    EstaPreso[prenderid] = 1;
    TimerJaulado[prenderid] = SetTimerEx("JAULADO", 60000*tempo, false, "i", prenderid);
    return 1;
}

CMD:soltar(playerid, params[])
{
    new prenderid;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFF0000AA,"Vocк nгo tem permissгo.");
    if(sscanf(params, "u", playerid)) return SendClientMessage(playerid,0xFF0000AA,"/soltar <playerid>");
    if(!IsPlayerConnected(prenderid)) return SendClientMessage(playerid,0xFF0000AA,"Este jogador nгo estб online.");
    if(EstaPreso[prenderid] == 0) return SendClientMessage(playerid,0xFF0000AA,"Este jogador nгo estб preso.");
    GetPlayerName(prenderid,pname,sizeof(pname));
    format(str, sizeof(str), "%s Foi solto pelo administrador.",pname);
    SendClientMessageToAll(0xFF0000AA, str);
    SendClientMessage(prenderid,0xFF0000AA,"Vocк foi solto pelo administrador.");
    SetPlayerInterior(prenderid,0);
    SpawnPlayer(prenderid);
    EstaPreso[prenderid] = 0;
    KillTimer(TimerJaulado[prenderid]);
    return 1;
}

forward JAULADO(prenderid);
public JAULADO(prenderid) return SetPlayerInterior(prenderid,0), SpawnPlayer(prenderid), EstaPreso[prenderid] = 0, KillTimer(TimerJaulado[prenderid]);

/*No topo do OnPlayerCommandText coloque:
if(EstaPreso[playerid] == 1) return SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo pode digitar nenhum comando na cadeia.");*/