SA-MP Forums Archive
[Ajuda] Comandos Dependentes - 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)
+---- Thread: [Ajuda] Comandos Dependentes (/showthread.php?tid=520889)



Comandos Dependentes - Matthy - 20.06.2014

Olб

Estou Fazendo Uma Prisгo Pro Meu Gamemode!
Nesta Prisгo Coloquei Um Portгo Sуmente Para Administradores Rcon:
pawn Код:
if(strcmp(cmdtext, "/abrirprisao", true) == 0)
    {
        if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[INFO-SERVER]: Vocк Nгo Tem Permissгo Para Utilizar Este Comando");
    {
        new string[150];
        new pNome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pNome, sizeof(pNome));
        format(string, sizeof(string), "[INFO-SERVER]: {00BFFF}O Administrador{FF0000} %s {00BFFF} Abriu o Portгo Da Prisгo. Quer Visitar Um Peso? Digite: /visitarpreso.", pNome);
        SendClientMessageToAll(-1, string);
        MoveObject(Portaoprisao, -1754.9000244141,785.90002441406,1177.1999511719, 3.0);
        SendClientMessage(playerid, 0x9E3EFFAA, "[INFO-SERVER] Abrindo Prisгo!!!");
    }
        return 1;
    }
Neste Comando Eu Estou Abrindo o Portao Da Area De Lazer.

Mais Tambйm Fiz Um Comando Pra Quem Quer Visitar Um Preso:
pawn Код:
if(strcmp(cmdtext,"/visitarpreso",true) == 0)
    {
        new string[150];
        new pNome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pNome, sizeof(pNome));
        format(string, sizeof(string), "[INFO-SERVER]:{00BFFF}O Jogador{FF0000} %s {00BFFF} Foi Fazer Uma Visita Na Prisгo.", pNome);
        SendClientMessageToAll(-1, string);
        SetPlayerPos(playerid, -1761.8000488281, 798, 1177.1999511719);
        SendClientMessage(playerid, COR_VERMELHO, "[INFO-SERVER]: Seja Bem Vindo a Prisгo, Cuidado Com Os Criminosos, Eles Podem Ser Perigosos!");
        return 1;
    }
Eu Quero Que o Comando De Visitar Sу Esteja Disponivel Para Ser Utilizado Quando o Portгo Estiver Aberto.

Agradeзo Desde Jб
__________________________________________________ ______________________




Re: Comandos Dependentes - ProKillerpa - 20.06.2014

Variбveis.

PHP код:

new PortaoAberto;

PortaoAberto 1;

if(
PortaoAberto == 0) return SendClientMessage(playerid, -1"Agora nгo da pra visitar seu amiguinho dollynho."); 
Se nгo conseguir arrumar, fale.


Respuesta: Comandos Dependentes - Matthy - 20.06.2014

Olб

Sу Uma Duvida?
Onde Eu Coloco Isso?


Re: Comandos Dependentes - Schocc - 20.06.2014

Se for usar somente para admin logado na rcon, deve usar o operador lуgico de negaзгo, 'NOT' ou mais conhecido como '!' "diferente"...

Logo se vocк usar o cуdigo abaixo todos podem usar, pois vai retornar verdadeiro:
PHP код:
if ( IsPlayerAdmin(playerid) )
    return 
SCM(...); 
O correto seria:
PHP код:
if( !IsPlayerAdmin(playerid) )
    return 
SCM(...); 



Respuesta: Re: Comandos Dependentes - Matthy - 20.06.2014

Quote:
Originally Posted by Schocc
Посмотреть сообщение
Se for usar somente para admin logado na rcon, deve usar o operador lуgico de negaзгo, 'NOT' ou mais conhecido como '!' "diferente"...

Logo se vocк usar o cуdigo abaixo todos podem usar, pois vai retornar verdadeiro:
PHP код:
if ( IsPlayerAdmin(playerid) )
    return 
SCM(...); 
O correto seria:
PHP код:
if( !IsPlayerAdmin(playerid) )
    return 
SCM(...); 
Vlw, Mais Funcionava Do Mesmo Jeito Desse:
pawn Код:
if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[INFO-SERVER]: Vocк Nгo Tem Permissгo Para Utilizar Este Comando");
Mais a Duvida Nгo Era Essa, Mais Alguйm?


Re: Comandos Dependentes - MultiKill - 20.06.2014

Vou te dar uma base de onde colocar usando a base do @ProKillerpa:
pawn Код:
if(strcmp(cmdtext, "/abrirprisao", true) == 0)
{
    if(PortaoAberto == 0)
    {
        PortaoAberto = 1;
        SendClientMessage(playerid, -1, "O portгo foi aberto.");
    }
    else
    {
        SendClientMessage(playerid, -1, "O portгo jб estб aberto.");
    }
    return 1;
}
if(strcmp(cmdtext,"/visitarpreso",true) == 0)
{
    if(PortaoAberto == 1)
    {
        SendClientMessage(playerid, -1, "Vocк foi atй a prisгo.");
    }
    else
    {
        SendClientMessage(playerid, -1, "A prisгo estб fechada.");
    }
    return 1;
}



Respuesta: Re: Comandos Dependentes - Matthy - 20.06.2014

Quote:
Originally Posted by MultiKill
Посмотреть сообщение
Vou te dar uma base de onde colocar usando a base do @ProKillerpa:
pawn Код:
if(strcmp(cmdtext, "/abrirprisao", true) == 0)
{
    if(PortaoAberto == 0)
    {
        PortaoAberto = 1;
        SendClientMessage(playerid, -1, "O portгo foi aberto.");
    }
    else
    {
        SendClientMessage(playerid, -1, "O portгo jб estб aberto.");
    }
    return 1;
}
if(strcmp(cmdtext,"/visitarpreso",true) == 0)
{
    if(PortaoAberto == 1)
    {
        SendClientMessage(playerid, -1, "Vocк foi atй a prisгo.");
    }
    else
    {
        SendClientMessage(playerid, -1, "A prisгo estб fechada.");
    }
    return 1;
}
Bom, Eu Apliquei Este Comando No Meu Caso Assim:
pawn Код:
if(strcmp(cmdtext, "/abrirprisao", true) == 0)
    {
    if(PortaoAberto == 0)
    {
            if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[INFO-SERVER]: Vocк Nгo Tem Permissгo Para Utilizar Este Comando");
            {
                PortaoAberto = 1;
                new string[150];
                new pNome[MAX_PLAYER_NAME];
                GetPlayerName(playerid, pNome, sizeof(pNome));
                format(string, sizeof(string), "[INFO-SERVER]: {00BFFF}O Administrador{FF0000} %s {00BFFF} Abriu o Portгo Da Prisгo. Quer Visitar Um Peso? Digite: /visitarpreso.", pNome);
                SendClientMessageToAll(-1, string);
                MoveObject(Portaoprisao, -1754.9000244141,785.90002441406,1177.1999511719, 3.0);
                SendClientMessage(playerid, 0x9E3EFFAA, "[INFO-SERVER] Abrindo Prisгo!!!");
            }
    }
    else
    {
        SendClientMessage(playerid, -1, "[INFO-SERVER]: O Portгo Jб Estб Aberto.");
    }
    return 1;
    }

    if(strcmp(cmdtext,"/visitarpreso",true) == 0)
{
    if(PortaoAberto == 1)
    {
        new string[150];
        new pNome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pNome, sizeof(pNome));
        format(string, sizeof(string), "[INFO-SERVER]:{00BFFF}O Jogador{FF0000} %s {00BFFF} Foi Fazer Uma Visita Na Prisгo.", pNome);
        SendClientMessageToAll(-1, string);
        SetPlayerPos(playerid, -1761.8000488281, 798, 1177.1999511719);
        SendClientMessage(playerid, COR_VERMELHO, "[INFO-SERVER]: Seja Bem Vindo a Prisгo, Cuidado Com Os Criminosos, Eles Podem Ser Perigosos!");
    }
    else
    {
        SendClientMessage(playerid, -1, "[INFO-SERVER]: As Visitas Estгo Canceladas No Momento.");
    }
    return 1;
}
Aconteceu Uma Situaзгo Muito Delicada!
Eu Testei Assim: Entrei No Server e Digitei: /visitarpreso Ai Apareceu: "As Visitas Estгo Canceladas No Momento".
Atй Ai Tudo Bem.
Ai Eu Loguei Na Rcon e Abri o Portгo, Dps Voltei a Digitar o Comando: /visitarpreso. Ai Ele Foi Atй a Prisгo.
Atй Ai Maravilhoso
Mais Ai Quando Eu Digitei: /fecharprisao e o /visitarprisao Continuou Funcionando Com Ela Fechada.

Comando Para Fechar a Prisгo:
pawn Код:
if(strcmp(cmdtext, "/fecharprisao", true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[INFO-SERVER]: Vocк Nгo Tem Permissгo Para Utilizar Este Comando");
        {
        new string[150];
        new pNome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pNome, sizeof(pNome));
        format(string, sizeof(string), "[INFO-SERVER]: {00BFFF}O Administrador{FF0000} %s {00BFFF}Fechou o Portгo Da Prisгo.", pNome);
        SendClientMessageToAll(-1, string);
        MoveObject(Portaoprisao, -1748.4000244141,786.09997558594,1177.1999511719, 3.0);
        SendClientMessage(playerid, 0x9E3EFFAA, "[INFO-SERVER] Fechando Prisгo!!!");
        }
        return 1;
    }
Ajuda!


Re: Comandos Dependentes - Schocc - 20.06.2014

@Edit: No comando fechar portгo vocк precisa definir o valor 0 para a variбvel 'PortaoAberto'


Sobre o portгo, eu recomendo usar uma variбvel booleana, para cada portгo, assim verificando se o mesmo esta aberto ou fechado:
PHP код:
/*
    Criamos uma diretiva para definir o ID do portгo no gamemode, este valor deve ter 
relacionamento com o ID do portгo criado em outra variбvel (Recomendo a mesma 
utilizada no 'CreateObject'), assim ambos tem o mesmo ID.
*/
#define PORTAO_GANG_DOS_FODOES (0)
/* -----------------------------------------------------------------------------------
    No topo do gamemode abaixo das includes e definiзхes/diretivas de prй-processamento.
    150 й a quantidade de portгos que vai existir no servidor, o mesmo vai ser 
verificado (aberto ou fechado).
*/
new bool:svPortao[150] = {false,...}; // Inicializa a variбvel com o valor 'false', para todos slots do vetor.
// Agora na hora de verificar se o portгo esta aberto, fizemos o seguinte:
if( !svPortao[PORTAO_GANG_DOS_FODOES] )
    return 
SCM("Este portгo esta trancado, A gang dos 'fodхes' mandou trancar as portas por motivos de seguranзa. '-' ");