SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.


47 resultados encontrados para include

Weslley_Script

[Tutorial] Usando y_ini - Sáb 3 Jun 2023 - 10:27

• Нndice
  • O que й y_ini?

  • Onde posso encontra-la?

  • Como utilizar?

  • Escrita

  • Leitura

  • INI_Load (Leitura)

  • Funзхes

  • INI_ParseFile (Leitura)
    • Contas de usuбrio



  • Outros
    • Salvando e carregando dados de um usuбrio

    • Verificando se um arquivo existe



  • Consideraзхes finais


• O que й y_ini?
  • y_ni й uma include desenvolvida porque tem como o objetivo misturar praticidade, simplicidade e velocidade na hora de trabalhar com leitura e escrita de dados em sa-mp pawn.


• Onde posso encontra-la?
  • A include faz parte da YSI(******'s Script Includes), onde pode ser encontrada.


• Como utilizar?
  • Para utilizar a include, simplesmente inclua a include a seu script:
    pawn Код:
    #include

  • Caso vocк queira salvar whirlpool hashes com este sistema, vocк precisa aumentar o tamanho mбximo do buffer:
    pawn Код:
    #define MAX_INI_ENTRY_TEXT 160
    #include



• Escrita
  • Escrever com y_ini й bastante simples e bem similar a outras sistemas ini de leitura e escrita de dados. Resumidamente, vocк abre um arquivo, escreve os dados e fecha o arquivo:
    pawn Код:
    // O nome do arquivo pode ser uma string array ou o texto literal.
    new fileToWrite[] = "mine.INI",

    // "INI_Open" retorna uma variбvel com a tag "INI".
    INI:iniFile = INI_Open(fileToWrite);

    //
    // y_ini suporta tags, isto й:
    //
    //  [tag]
    //  chave = valor
    //
    INI_SetTag(iniFile, "exemplos");

    // Escreve um valor inteiro com a chave "algum_inteiro" dentro da tag atual:
    INI_WriteInt(iniFile, "algum_inteiro", 42);

    // Agora, fecha o arquivo atual.
    INI_Close(iniFile);


  • O resultado do cуdigo acima serб um arquivo criado na pasta "scriptfiles" chamada "mine.INI" contendo:
    Код:
    [exemplos]
    algum_inteiro = 42


  • Por padrгo, y_ini insere um espaзo entre a chave e o sнmbolo de igualdade e entre o sнmbolo de igualdade e o valor. Isto й vбlido em um arquivo INI, no entanto, isto nгo й suportado pela include dini, significando que arquivos criados atravйs da y_ini nгo podem ser lidos pela dini(de acordo com ******, isto poderб ser alterado em futuras versхes).


• Leitura
  • Existem duas maneiras de leitura, uma й quando o nome do arquivo jб й conhecido antecipadamente. A outra й quando nгo, ou quando mais controle sob o arquivo й necessбrio.

  • Um exemplo da primeira maneira seria, por exemplo, as configuraзхes de um gamemode, onde todas as configuraзхes estariam armazenadas em um arquivo, e o nome deste arquivo й provavelmente conhecido na hora de compilar.

  • Um exemplo da segunda maneira й um sistema de usuarios, o nome dos arquivos dependem do nome dos jogadores, sendo impossнvel saber o nome dos mesmo antes deles se conectarem.

  • Ambos os metodos sгo baseados em callbacks, mas um й bem mais simples que o outro.


• INI_Load (Leitura)
  • Quando o nome de um arquivo jб й conhecido, "INI_Load" pode ser usada com funзхes "INI:" especiais. Como por exemplo, o exemplo escrito acima do arquivo chamado "mine.INI". Se o nome de um arquivo serб sempre o mesmo, entгo a estrutura bбsica para a leitura deste arquivo serб:
    pawn Код:

    Código:
    INI:nome_do_arquivo[exemplos](name[], value[])
    {
    }

    main()
    {
        INI_Load("nome_do_arquivo.INI");
    }




  • Vocк pode ler mais de um arquivo ao mesmo tempo.
    pawn Код:

    Código:
    INI:arquivo1[exemplos](name[], value[])
    {
    }

    INI:arquivo2[exemplos](name[], value[])
    {
    }

    main()
    {
        INI_Load("arquivo1.INI");
        INI_Load("arquivo2.INI");
    }




  • A funзгo "INI:" tem a seguinte estrutura:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
    }



  • Para ler dados em tags diferentes usando "INI_Load", usamos da seguinte forma:
    pawn Код:

    Código:
    // Variбveis para armazenar os valores a serem lidos.
    new
        gSomeInteger,
        Float:gAFloat,
        gTheString[32];

    // mine й o nome do arquivo - exemplos й o nome da tag
    INI:mine[exemplos](name[], value[])
    {
        if (!strcmp(name, "some_integer"))
        {
            gSomeInteger = strval(value);
            return;
        }
    }

    // mine й o nome do arquivo - mais_exemplos й o nome da tag
    INI:mine[mais_exemplos](name[], value[])
    {
        if (!strcmp(name, "a_float"))
        {
            gAFloat = floatstr(value);
            return;
        }
        if (!strcmp(name, "the_string"))
        {
            strcpy(gTheString, value, sizeof (gTheString));
            return;
        }
    }

    // Lendo o arquivo ao iniciar o script.
    main()
    {
        INI_Load("mine.INI");
    }




  • y_ini tem suas prуprias funзхes para facilitar a leitura de dados para nгo precisarmos ficar comparando string e formatando valores para passar para variбveis. Usando as funзхes da y_ini o cуdigo acima ficaria assim:
    pawn Код:

    Código:
    // Variбveis para armazenar os valores a serem lidos.
    new
        gSomeInteger,
        Float:gAFloat,
        gTheString[32];

    // mine й o nome do arquivo - exemplos й o nome da tag
    INI:mine[exemplos](name[], value[])
    {
        // INI_Int procura pela chave "some_integer" e atribui o valor encontrado a variбvel gSomeInteger.
        INI_Int("some_integer", gSomeInteger);
    }

    // mine й o nome do arquivo - mais_exemplos й o nome da tag
    INI:mine[mais_exemplos](name[], value[])
    {
        // INI_Int procura pela chave "a_float" e atribui o valor encontrado a variбvel gAFloat.
        INI_Int("a_float", gAFloat);

        // "INI_String" tem um parвmetro para definir o tamanho maximo da string e ele precisa ser usado!
        INI_String("the_string", gTheString, sizeof(gTheString));
    }

    main()
    {
        // Lendo o arquivo ao iniciar o script.
        INI_Load("mine.INI");
    }




  • O cуdigo final destes exemplos ficaria assim:

    pawn Код:

    Código:
    // Variбveis para armazenar os valores a serem lidos.
    new
        gSomeInteger,
        Float:gAFloat,
        gTheString[32];

    // Funзгo para carregar os dados da seзгo(tag) "exemplos" do arquivo "mine".
    INI:mine[exemplos](name[], value[])
    {
        INI_Int("some_integer", gSomeInteger);
    }

    // Funзгo para carregar os dados da seзгo(tag) "mais_exemplos" do arquivo "mine".
    INI:mine[mais_exemplos](name[], value[])
    {
        INI_Int("a_float", gAFloat);
        INI_String("the_string", gTheString, sizeof (gTheString));
    }

    main()
    {
        // Lendo o arquivo ao iniciar o script.
        INI_Load("mine.INI");

        // Carregamento do arquivo completo, mostrando resultados.
        printf("exemplos->some_integer = %d", gSomeInteger);
        printf("mais_exemplos->a_float = %.2f", gAFloat);
        printf("mais_exemplos->the_string = %s", gTheString);
    }




• Funзхes
  • INI_Int(name[], variable);
    name[] - Nome da chave a ser procurada em um arquivo.
    variable - Variбvel para armazenar o valor.

    - Lк o valor de um inteiro do arquivo de uma determinada chave e armazena em uma variбvel, exemplo:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
        INI_Int("NIVEL", gNivel);
    }




  • INI_Float(name[], variable);
    name[] - Nome da chave a ser procurada em um arquivo.
    variable - Variбvel para armazenar o valor.

    - Lк o valor de um float do arquivo de uma determinada chave e armazena em uma variбvel, exemplo:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
        INI_Float("POSX", gfPosX);
    }



  • INI_Hex(name[], variable);
    name[] - Nome da chave a ser procurada em um arquivo.
    variable - Variбvel para armazenar o valor.

    - Lк o valor de um hex do arquivo de uma determinada chave e armazena em uma variбvel, exemplo:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
        INI_Hex("COLOR", gColor);
    }




  • INI_Bin(name[], variable);
    name[] - Nome da chave a ser procurada em um arquivo.
    variable - Variбvel para armazenar o valor.

    - Lк o valor de um binбrio do arquivo de uma determinada chave e armazena em uma variбvel, exemplo:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
        INI_Bin("BIN", gBin);
    }




  • INI_Bool(name[], variable);
    name[] - Nome da chave a ser procurada em um arquivo.
    variable - Variбvel para armazenar o valor.

    - Lк o valor de uma bool do arquivo de uma determinada chave e armazena em uma variбvel, exemplo:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
        INI_Bool("ALLOWTELEPORT", gbAllowTeleport);
    }




  • INI_String(name[], variable, length);
    name[] - Nome da chave a ser procurada em um arquivo.
    variable - Variбvel para armazenar o valor.
    length - Tamanho da string destino.

    - Lк o valor de uma string do arquivo de uma determinada chave e armazena em uma variбvel, exemplo:
    pawn Код:

    Código:
    INI:nome_do_arquivo[nome_da_tag](name[], value[])
    {
        INI_String("SERVERMESSAGE", gaServerMessage, sizeof(gaServerMessage));
    }




  • INI_Load(filename[], bool:bExtra, extra, bLocal);
    filename[] - Nome do arquivo a ser carregado.
    bExtra - Envia dados adicionais.
    extra - Dados adicionais a serem enviados.
    bLocal - Chama funзхes locais ao invйs de globais.

    - Esta funзгo lк todo o arquivo. Tudo, exceto o nome do arquivo й opcional.
    pawn Код:

    Código:
    // Lк um arquivo
    INI_Load(nome_do_arquivo);



    pawn Код:

    Código:
    // Lк um arquivo e envia informaзхes adicionais, neste caso o ID de um jogador.
    INI_Load(filename, true, playerid);

    INI:filename[tag](playerid, name[], value[])
    {
    }



    pawn Код:

    Código:
    // Carrega um arquivo e envia as informaзхes carregadas a todos scripts que estгo rodando.
    INI_Load(filename, .bLocal = false);



  • INI_Open(filename[]);
    filename[] - Nome do arquivo a ser aberto.

    - Esta funзгo abre um arquivo para escrita. Exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");




  • INI_Close(INI:file);
    INI:file - Variбvel INI de um arquivo.

    - Esta funзгo fecha o arquivo que estava sendo escrito. Exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    // Escrever algo em um arquivo
    INI_Close(iniFile);




  • INI_SetTag(INI:file, tag[]);
    INI:file - Variбvel INI de um arquivo.
    tag[] - Nome da tag a ser escrita.

    - Esta funзгo cria uma nova TAG para escrever dados dentro dela, caso a TAG jб exista os dados sгo escritos dentro dela, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    // Escreve dados na TAG exemplo.
    INI_Close(iniFile);




  • INI_RemoveEntry(INI:file, tag[]);
    INI:file - Variбvel INI de um arquivo.
    tag[] - Nome da tag a ser verificada.

    - Esta funзгo remove uma chave(e seus valores) de um arquivo da tag atual, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    //Remove a chave dinheiro(e seus valores) do arquivo "mine.INI" da TAG "exemplo".
    INI_RemoveEntry(iniFile, "Dinheiro");
    INI_Close(iniFile);




  • INI_WriteString(INI:file, name[], data[]);
    INI:file - Variбvel INI de um arquivo.
    name[] - Nome da chave para escrever os dados.
    data[] - Dados a serem escritos nesta chave.

    - Esta funзгo escreve uma string em um arquivo, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    INI_WriteString(iniFile, "Senha", "123");
    INI_Close(iniFile);




  • INI_WriteInt(INI:file, name[], data);
    INI:file - Variбvel INI de um arquivo.
    name[] - Nome da chave para escrever os dados.
    data - Dados a serem escritos nesta chave.

    - Esta funзгo escreve um inteiro em um arquivo, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    INI_WriteInt(iniFile, "Dinheiro", 7331);
    INI_Close(iniFile);




  • INI_WriteHex(INI:file, name[], data);
    INI:file - Variбvel INI de um arquivo.
    name[] - Nome da chave para escrever os dados.
    data - Dados a serem escritos nesta chave.

    - Esta funзгo escreve um inteiro no formato hexadecimal(0x1F182) em um arquivo, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    INI_WriteHex(iniFile, "FreeColors", 0x1F1829FF);
    INI_Close(iniFile);




  • INI_WriteBool(INI:file, name[], data);
    INI:file - Variбvel INI de um arquivo.
    name[] - Nome da chave para escrever os dados.
    data - Dados a serem escritos nesta chave.

    - Esta funзгo escreve um bool em um arquivo, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    INI_WriteBool(iniFile, "TeleportAllowed", true);
    INI_Close(iniFile);




  • INI_WriteBin(INI:file, name[], data);
    INI:file - Variбvel INI de um arquivo.
    name[] - Nome da chave para escrever os dados.
    data - Dados a serem escritos nesta chave.

    - Esta funзгo escreve um inteiro no formato de um binбrio (0b1001010) em um arquivo, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    INI_WriteBin(iniFile, "SomeValue", 0b1001010);
    INI_Close(iniFile);




  • INI_WriteFloat(INI:file, name[], data);
    INI:file - Variбvel INI de um arquivo.
    name[] - Nome da chave para escrever os dados.
    data - Dados a serem escritos nesta chave.

    - Esta funзгo escreve um float em um arquivo, exemplo:
    pawn Код:

    Código:
    new INI:iniFile = INI_Open("mine.INI");
    INI_SetTag(iniFile, "exemplo");
    INI_WriteFloat(iniFile, "PosX", 1745.15);
    INI_Close(iniFile);





• INI_ParseFile (Leitura)
  • Esta funзгo nгo foi explicada no tуpico anterior para dar-mos mais enfвse aqui, ela й uma funзгo chamada pela INI_Load.
    • INI_ParseFile
      filename[] - Arquivo a ser carregado.
      remoteFormat[] - Qual funзгo chamar.
      bool:bFileFirst - Qual ordem para formatar a funзгo.
      bool:bExtra - Enviar dados adicionais.
      extra - Dado adicional a ser enviado.
      bLocal - Chamar funзхes locais ao invez de globais.
      bool:bPassTag - Qual dados extra passar.

    • Usando o exemplo do INI_Load escrito anteriormente, passando de INI_Load para INI_ParseFile, o exemplo anterior ficaria assim:
    pawn Код:

    Código:
    new
        gSomeInteger,
        Float:gAFloat,
        gTheString[32];

    forward ini_exemplos_mine(name[], value[]);

    public ini_exemplos_mine(name[], value[])
    {
        INI_Int("some_integer", gSomeInteger);
    }

    forward ini_mais_exemplos_mine(name[], value[]);

    public ini_mais_exemplos_mine(name[], value[])
    {
        INI_Int("a_float", gAFloat);
        INI_String("the_string", gTheString, sizeof (gTheString));
    }

    main()
    {
        INI_ParseFile("mine.INI", "ini_%s_%s");
    }




  • O primeiro %s й o nome da TAG o segundo %s й o nome do arquivo(e ambos sгo OPCIONAIS).

    • Agora vamos passar parte por parte.
    pawn Код:

    Código:
    // Isto:
    INI:mine[exemplos](name[], value[])

    // Se torna isto:
    forward ini_exemplos_mine(name[], value[]);
    public ini_exemplos_mine(name[], value[])



    pawn Код:

    Código:
    // Isto:
    INI_Load("mine.INI");




    // Se torna isto:

    Código:
    INI_ParseFile("mine.INI", "ini_%s_%s");



    • Repetindo, o primeiro %s й o nome da TAG o segundo %s й o nome do arquivo(e ambos sгo OPCIONAIS).
    • Contas de usuбrio

      • Um melhor modo de entender isto й usando contas de usuбrios.
      pawn Код:

      Código:
      public OnPlayerConnect(playerid)
      {
          new playerName[MAX_PLAYER_NAME];
          GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);

          new userFile[32];
          format(userFile, sizeof (userFile), "users/%s.ini", playerName);

          INI_ParseFile(userFile, "load_user_data", .bExtra = true, .extra = playerid);
      }

      forward load_user_data(playerid, name[], value[])
      public load_user_data(playerid, name[], value[])
      {
          INI_Float("health", gPlayerData[playerid][E_PLAYER_HEALTH]);
          INI_Int("money",    gPlayerData[playerid][E_PLAYER_MONEY]);
          return 1;
      }



      • O exemplo acima carrega a conta de um jogador apуs ele se conectar ao servidor, agora vamos estudar parte por parte.

      pawn Код:

      Código:
      // ...
          INI_ParseFile(userFile, "load_user_data", .bExtra = true, .extra = playerid);
      }



      • Aqui obtemos o nome do jogador(que tambйm serб o nome do arquivo - userFile)
      • Depois dizemos qual funзгo iremos chamar(load_user_data)
      • Entгo dizemos que enviaremos dados adicionais, que й o ID do jogador(.bExtra = true).
      • E por fim, dizemos qual й o valor do dado adicional(.extra = playerid).

      • E aqui й a funзгo que serб chamada pelo ParseFile carregando os dados do jogador.
      pawn Код:

      Código:
      forward load_user_data(playerid, name[], value[])
      public load_user_data(playerid, name[], value[])
      {
          INI_Float("health", gPlayerData[playerid][E_PLAYER_HEALTH]);
          INI_Int("money",    gPlayerData[playerid][E_PLAYER_MONEY]);
          return 1;
      }



      • Poderiamos fazer isso com TAGS:
      pawn Код:
      public OnPlayerConnect(playerid)

      Código:
      {
          new playerName[MAX_PLAYER_NAME];
          GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);

          new userFile[32];
          format(userFile, sizeof (userFile), "users/%s.ini", playerName);

          // %s й a TAG.
          INI_ParseFile(userFile, "load_user_data_%s", .bExtra = true, .extra = playerid);
      }

      forward load_user_data_roleplay(playerid, name[], value[])
      public load_user_data_roleplay(playerid, name[], value[])
      {
          INI_Float("health", gPlayerData[playerid][E_PLAYER_HEALTH]);
          INI_Int("money",    gPlayerData[playerid][E_PLAYER_MONEY]);
          return 1;
      }



      • Aqui carregamos os dados do jogador da TAG "roleplay".



• Outros
  • Salvando e carregando dados de um usuбrio
    pawn Код:

    Código:
    // Variбveis para armazenar as coordenadas:
    enum E_PLAYER_DATA
    {
        Float:E_PLAYER_POSX,
        Float:E_PLAYER_POSY,
        Float:E_PLAYER_POSZ
    }
    new gPlayerData[MAX_PLAYERS][E_PLAYER_DATA];


    // Carregando dados ao se conectar:
    public OnPlayerConnect(playerid)
    {
        // Й aconselhado fazer isto apуs verificar se o jogador estб logado em uma conta.
        INI_ParseFile(userFile, "LoadPlayerAccount", .bExtra = true, .extra = playerid);
        SetPlayerPos(playerid, gPlayerData[playerid][E_PLAYER_POSX], gPlayerData[playerid][E_PLAYER_POSY], gPlayerData[playerid][E_PLAYER_POSZ]);
        return 1;
    }

    forward LoadPlayerAccount(playerid, name[], value[]);
    public LoadPlayerAccount(playerid, name[], value[])
    {
        new playerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);

        new userFile[32];
        format(userFile, sizeof (userFile), "users/%s.ini", playerName);

        INI_Float("LOAD_POS_X", gPlayerData[playerid][E_PLAYER_POSX]);
        INI_Float("LOAD_POS_Y", gPlayerData[playerid][E_PLAYER_POSY]);
        INI_Float("LOAD_POS_Z", gPlayerData[playerid][E_PLAYER_POSZ]);
    }

    // Salvando dados ao desconectar:
    public OnPlayerDisconnect(playerid, reason)
    {
        // Й aconselhado fazer isto apуs verificar se o jogador estб logado em uma conta.
        SavePlayerAccount(playerid);
        return 1;
    }

    stock SavePlayerAccount(playerid)
    {
        new playerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);

        new userFile[32];
        format(userFile, sizeof (userFile), "users/%s.ini", playerName);

        new Float:fPos[3];
        GetPlayerPos(playerid, fPos[0], fPos[1], fPos[2]);

        new INI:ini = INI_Open(userFile);

        INI_WriteFloat(ini, "LOAD_POS_X", fPos[0]);
        INI_WriteFloat(ini, "LOAD_POS_Y", fPos[1]);
        INI_WriteFloat(ini, "LOAD_POS_Z", fPos[2]);

        INI_Close(ini);
    }



    - Este cуdigo faz com que salve as coordenadas do jogador quando ele se desconectar e carregue-as apуs ele se conectar.


  • Verificando se um arquivo existe
    - Para verificar se um arquivo existe utilize a funзгo fexist do sa-mp.


• Consideraзхes finais
- Partes deste tutorial foram retirados do tutoriais como cуdigos, exemplos e trechos. Onde os crйditos vгo para o mesmo.
Creditos: Larceny

[Tutorial] Como usar o sscanf em zcmd ou em strcmp - Qua 31 maio 2023 - 19:40

Tutorial para novatos no pawn.
Como usar o sscanf em zcmd.

Coloque no topo do seu gm:
#include sscanf2
#include zcmd


Primeiramente um exemplo de um comando:
Код:

Código:
CMD:darvida(playerid, params[])
{
 new vida, id;
 if(sscanf(params,"ud",id,vida)) return SendClientMessage(playerid,-1,"(USE) /darvida [Playerid] [Vida] ");
 if(!IsPlayerConnected(id)) return SendClientMessage(playerid,-1,"(ERRO)O Player esta offline");
 if(vida < 0 || vida > 100) return SendClientMessage(playerid,-1,"Numero de vida invalida.Somente use de 0 a 100.");
 SetPlayerHealth(id,vida);
 return 1;
}



Explicaзгo:
Код:

Código:
new vida, id; // aqui definimos as ARRAYS.



Quote:



if(sscanf(params,"ud",id,vida)) return SendClientMessage(playerid,-1,"(USE) /darvida [Playerid] [Vida] ");

No params й definido que й do zcmd mas para vc usar no strcmp й so trocar o params por cmdtext.
no ud // no u define o id do player e o d um numero.

d ou i - usado quando vocк usa nъmeros, exemplo numero do seu celular...
s - й o string usado quando vocк usa letras, exemplo "Meu nome й BlueX"
u - usado para aquele famoso [Id do Player]...
f - usado para coordenadas...

O u й igual a array do id que й um id de um player que sera digitado.
O d й o numero da vida й igual a array da vida.
No return SendClientMessage й caso ele usar o comando errado ex: /darvida 0 ele ira mandar a mensagem de como usar o comando.

Quote:



if(!IsPlayerConnected(id)) verificara se o player esta online.
Em return SendClientMessage vcs ja sabem a funзгo.

if(vida < 0 || vida > 100) essa funзгo definira o maximo de vida que pode-ra dar ao player.O vida < 0 || vida > 100 vcs pode mudar o maximo de vida ex: if(vida < 0 || vida > 200) vcs podem usar essa funзгo em outro comando que vcs querem definir um numero maximo.
SetPlayerHealth Setara a vida para o player.


Creditos: Mateus_.

Weslley_Script

[Tutorial] Como usar iLoops! - Sex 12 maio 2023 - 11:16

Olб pessoal Tópicos com a tag include em SSGamers - 12 Anos online por você. Razz

Neste tutorial vou demonstrar como funciona o iLoops, sistema criado por DanDRT, baseado no meu script de lista ligada iEach

  • Bem, para quem serve iLoops?


Basicamente, iLoops й um sistema com vбrias definiзхes para estruturar dados de uma maneira que quando rodamos um loop sobre eles, podemos pegar e acessar os dados de maneira rбpida e eficiente, tгo bom quanto foreach

Entгo, com este script vocк poderб fazer loops sobre jogadores, por exemplo, de uma maneira extraordinariamente rбpida.




  • Quais vantagens



Й fбcil de usar, й plugar e usar;

Й rбpido, extraordinбriamente rбpido. Eu diria que vai de 2 a 400 vezes mais rбpidos que um loop normal ;

Й funcional;



  • Como instalar?



[size=32]ATUALIZADO 21:27 28/10/2013[/size]
http://www.solidfiles.com/d/39f6978c02/

E apуs isto, colocar no topo do seu gamemode:
pawn Код:

Código:
#define NO_ICMD // nгo carregar icmd, pois vocк nгo vai usar. Caso usar, retire essa linha
#define NO_IBITS // nгo carregar ibits, pois vocк nгo vai usar. Caso usar, retire essa linha

[size=13]


#include IPSI/load.main
[/size]



  • Como usar?



Jogadores Online

Para passar sobre todos jogadores vocк faz:
pawn Код:

Código:
for(new i; i != MAX_PLAYERS; ++i) {
  if(IsPlayerConnected(i))
  {
  }
}




com iLoops vocк farб:


pawn Код:

Código:
each(Players->new i) {
   
}




Alйm disto, com iLoops vocк poderб ter acesso a outras funзхes como:

pawn Код:

Código:
GetPlayersConnected()



que servirб para pegar o nъmero total de players conectados no momento

ou
pawn Код:

Código:
IsPlayerSpawned(playerid)



que checarб se o jogador estб spawnado


E para passar um loop sobre todos jogadores spawnados
pawn Код:

Código:
each(Spawned->new i) {
    printf(" Jogador id %d estб spwanado", i);
}





Veнculos

Para listar todos veнculos criados em iLoop, basta fazer:
pawn Код:

Código:
each(VehiclesCreated->new i) {

   printf("O veiculo %d estб criado", i);
}




e para passar um loop sobre todos veнculos SPAWNADOS, basta fazer

pawn Код:

Código:
each(VehiclesSpawned->new i) {

   printf("O veiculo %d estб criado", i);
}




Assim como hб funзхes para checar se O ID й um veнculo vбlido:
pawn Код:

Código:
if(IsValidVehicle(vehicleid))



e funзхes para pegar o nъmero de carros criados
pawn Код:

Código:
printf("Hб %d carros no sv", GetNumberofCarsCreated())



ou pegar o nъmero de carros SPAWNADOS

pawn Код:

Código:
printf("Hб %d carros andando no sv", GetNumberofCarsSpawned())





Tutorial criado por Bruno da Silva @ipsbr.net
iLoops por DanDRT
iEach por ipsBruno
Agradecimentos a William Luigi

Obrigado 

[Tutorial] Oque você precisa saber sobre PAWN - Qua 10 maio 2023 - 8:19

O que você precisa saber sobre PAWN





Introdução :
Bom, eu desenvolvi este tutorial com os erros mais comuns entre os novos,
não apenas erros e sim dicas para quem quer começar a programar ou está
aprendendo mais que está encontrando muitas dificuldades.

Pois bem, quem vem na programação, não tem a mínima ideia do que é
objetos, variáveis, arrays, tabulação, conexão e como funciona o PAWN.
Com o passar do tempo você vai aprender muitas coisas, além de saber muitas
coisas que podem ser aplicadas na vida real.

Este tutorial serб aplicado para explicaзгo bбsica sobre programaзгo,
por isto dъvidas avulsas de outros sistemas/includes nгo serгo
respondidos neste tуpico. o tutorial também será dividido em duas partes,
a parte da explicação e a segunda parte é como manipular.

Primeiro de tudo você tem que saber que '//' ou '/* */' são comentários, por isto
eles são ignorados pelo compilador.

Os assuntos considerados neste tуpico serгo:
- Diretivas;
- Variáveis;
- Constantes;
- Enumeradores;

- Arrays
- Funções;
- Chamadas de retorno;
- Expressões;
- Loopings.


D iretivas:
Vamos começar o tutorial falando sobre diretivas, oque só, qual sua função e
como usá-las.

Bom como diretivas são funções específicas do compilador pawno.exe, elas são
para você criar configurações que não serão enviadas ao AMX, ou seja, são
apenas definições, segue o exemplo:

Diretiva: #Include
Esta diretiva é a mais importante de todas, ela que carrega scripts externos
e transforma-o em um, é muito boa para você ogranizar seu gamemode.

Ela é muito usada para carregar inclusões, como:
Código do peão:

Código:
#include <a_samp>


No caso de incluirmos a biblioteca a_samp no nosso script,
somente lembrando para nуs incluir uma biblioteca ela deve estar
na pasta "Includes" e com extensгo .inc, a pasta includes fica
na mesma pasta em que o PAWNO se encontrar.


Diretiva: #define
No seu cуdigo PAWN:
Código do peão:

Código:
[size=14][size=13]#define Vermelho 0xFF0000FF
 SendClientMessageToAll ( Vermelho, "Esta é uma frase em vermelho" ) ;[/size][/size]


[center][size=14]Depois de compilar, seria a mesma coisa que:[/size][/center]
[size=14]Código do peão:
[size=13]SendClientMessageToAll ( 0xFF0000FF, "Esta é uma frase em vermelho" ) ;[/size][/size]



Então, você pode notar que em questão de velocidade in-game tem
diferença nenhuma, pois os dois cudigos acima são exatamente a
mesma coisa, somente que o compilador
troca "Vermelho" para "0xFF0000FF".

Para entender:
Código do peão:

Código:
#define APELIDO SIGNIFICADO



Resumindo, as Diretivas são funções do COMPILADOR e não refletem
no in-game, agora que você já sabe que as definições são apenas "Apelidos"
que o peão troca pelo significado.


Agora vamos aprender sobre as principais diretivas do pawno, também
vou mostrar exemplos,

Diretiva #if,
Bom, esta diretiva é muito usada quando queremos comparar uma definição,
ou melhor dizendo um "Apelido", com ela podemos fazer facilmente um código
de configuração, veja o exemplo:

criamos uma definição:
Código do peão:

Código:
#define ATIVAR_MENSAGEM true// podemos considerar que 'true' é sim 'false' é nгo.




Depois da definição, iremos fazer a condição, da qual verificaremos se
a mensagem está transmitida:
Código do peão:

Código:
#if ATIVAR_MENSAGEM == true // Verificamos que "ATIVAR_MENSAGEM" Está exatamente igual há 'true'.
printf ( "Mensagem ativada" ) ;
#endif // note que esta diretiva é essencial para compilar, pois ela é que termina a condição acima, caso não tenha ela, apareçam erros.



Você tem que saber que se trocarmos a definição por esta:
Código do peão:

Código:
#define ATIVAR_MENSAGEM false// podemos considerar que 'true' é sim 'false' é nгo.



A condição será ignorada, e não irá imprimir mensagem no console.

Quando falamos em "Condicionamento" logos pensando em "Comparação", e
no pawno tem vários modos de comparar valores, vamos ver os
"Operadores de comparação", os operadores são símbolos que especificam com
precisão ou valor da definição.

Operador: < (Menor que), no exemplo abaixo você pode notar que ele está
verificando
se 20 for menor que ATIVAR_MENSAGEM
Código do peão:

Código:
#if ATIVAR_MENSAGEM < 20




Operador: > (Maior que), este operador é usado para comparar valores sendo maior que ele,
como no exemplo abaixo, ele verifica se a definição ATIVAR_MENSAGEM é maior que 20:
Código do peão:

Código:
#if ATIVAR_MENSAGEM > 20



Operador: <= (Menor ou igual que), este é basicamente um dos mais fбceis de todos, ele
compara se a definiзгo й menor OU igual hб 20.
Código do peão:

Código:
#if ATIVAR_MENSAGEM <= 20



Operador: >= (Maior ou Igual que), este é parecido com o decimal, a única diferença é que
ele verifica se a definição é maior ou igual há 20:
Código do peão:

Código:
#if ATIVAR_MENSAGEM >= 20



Operador: != (Diferente de), este operador é muito fácil de usar, ele verifica se a definição
é diferente de 20:
Código do peão:

Código:
#if ATIVAR_MENSAGEM != 20



Bom, a saga de operadores de definição são essas, lembrando que esses são as definições básicas
, agora vou explicar algumas funções extras das instruções :


Código do peão:

Código:
#if definido ATIVAR_MENSAGEM
printf ( "Foi definido ATIVAR_MENSAGEM" ) ;
#endif

#if !defined ATIVAR_MENSAGEM
printf ( "Não foi definido ATIVAR_MENSAGEM" ) ;
#fim se



Note que para nуs comparar se definiзгo nгo foi definidoй sу botar ! antes do "definido".


Diretiva: #else
A diretiva #else é utilizda como com a tradução simples "se não",
Código do peão:

Código:
#if definido ATIVAR_MENSAGEM // verificamos se ATIVAR_MENSAGEM está definido

[size=13]


[/size]
Código:
printf ( "Foi definido ATIVAR_MENSAGEM" ) ; // imprimimos a mensagem

#else // caso nгo for definido a ATIVAR_MENSAGEM

printf ( "Nгo foi definido ATIVAR_MENSAGEM" ) ; // imprimimos outra imagem

#endif // fim



Lembrando apenas que ela só pode ser utilizada uma vez dentro de uma condição.



Diretiva:#undef
Esta diretiva sу tem uma funзгo, ela remove uma definiзгo, veja no exemplo:
Código do peão:

Código:
#define ATIVAR_MENSAGENS 50 // definimos o valor de ATIVAR_MENSAGENS para 50
#undef ATIVAR_MENSAGENS // removemos a definição
#define ATIVAR_MENSAGENS 60 // definimos novamente com o valor 60




Cuidado!
Você não pode definir duas vezes com o mesmo nome:
Código do peão:

Código:
#define ATIVAR_MENSAGENS
#define ATIVAR_MENSAGENS



O aparecerб um erro dizendo que jб estб definido.

Você também pode definir ela mesmo:
Código do peão:

Código:
#define ATIVAR_MENSAGENS ATIVAR_MENSAGENS



O compilador simplismente irá trabalhar.

[size=24]Variáveis :[/size]
Variáveis ​​nada mais são doque "midia de armazenamento" ou seja, elas podem armazenar
qualquer valor, des-de que os valores sejam maiores ou menores que 0, ao criar-las elas
terrão o valor 0 automaticamente.

Para testar
Código do peão:

Código:
novo MinhaVariavel;
printf ( "Valor de MinhaVariavel © :%d" , MinhaVariavel ) ;



Para modificar o valor, precisamos saber como manipular variáveis:


Operador/ExpressãoSignificado
+=Adiciona uma valor hà nossa variável
-=Remover um vaor há nossa variável
*=Multiplica um valor há nossa variável
/=Divide um valor da nossa variável
=Setamos um valor há nossa variável
%Resto da divisão, é usado quando a divisão não é exata.


Depois que você ver como modificar os valores, vamos aplicar:
Código do peão:

Código:
[size=14][size=13]novo MinhaVariavel;
MinhaVariavel +=  10 ; // botamos
printf ( "Valor de MinhaVariavel © :%d" , MinhaVariavel ) ; // Imprime 10 sem console.
MinhaVariavel -=  5 ; // removemos 5 da variável "MinhaVariavel"
printf ( "Valor de MinhaVariavel © :%d" , MinhaVariavel ) ; // Imprime 5 sem console.
MinhaVariavel *=  2 ;
printf ( "Valor de MinhaVariavel © :%d" , MinhaVariavel ) ; // Imprime 10 sem console.
MinhaVariavel /=  2 ;
printf ( "Valor de MinhaVariavel © :%d" , MinhaVariavel ) ; // Imprime 5 sem console.
MinhaVariavel =  59 ;
printf ( "Valor de MinhaVariavel dividido por 8 resto da divisao é %d" , MinhaVariavel %  59 ) ; // Imprime 8 sem console.[/size][/size]



Sу lembrando que uma variбvel sу pode armazenar UM valor, e tambйm armazenar
um id, como por exemplo, veiculo:
Código do peão:

Código:
novo MinhaVariavel;
MinhaVariavel = CreateVehicle ( 522 , 5457.47 , 567.788 , 0.0 , - 1 , - 1 , 9 ) ;
printf ( "ID do carro é %d" , MinhaVariavel ) ;



Tudo se resume que variável armazena um valor, podendo ser objeto ou não.

[size=24]C onstantes:[/size]
Constantes são um tipo de variável que ficam constantemente no mesmo valor, ou seja,
é como se fosse uma definição.
Código do peão:

Código:
const MinhaConstante =  500 ; // vemos que a constante tem o valor 500
printf ( "Valor: %d" , MinhaConstante ) ;



Aparecerá:
Código:

Código:
Valor: 500



Atenção:
Com constantes nгo é possível modificar o valor dela:
Código do peão:

Código:
const MinhaConstante =  500 ; // vemos que a constante tem o valor 500
printf ( "Valor: %d" , MinhaConstante ) ;
MinhaConstante =  500 ; // ERRO



Pois são pré-definidas.

Constantes sу podem armazenar valores inteiros, nгo podendo
Armazenar nъmeros flutuantes(floats).


[size=24]E numeradores:[/size]
Enumeradores são um tipo de organização de array, nela são
armazenados valores que podem ser chamados a qualquer instante, veja:
Código do peão:

Código:
enum MeuEnumerador /  * Iniciamos nosso enumerador com o nome "Meu enumerador"
{
     Nivel
    // Aqui dentro inserimos as "Tags" que serão armazenados os valores
} ; // Concluímos nosso enumerador, agora vamos utilizá-lo em nosso array.

novo PlayerInfo [ MAX_PLAYERS ]  [ MeuEnumerador ] ; // Agora criamos um array com o nome "PlayerInfo", coma a dimensão "MAX_PLAYERS" e utilizamos as TAGs do enumerador "MeuEnumerador".



Pronto!, estrutura de enumerador formada, agora é só usar:
Código do peão:

Código:
PlayerInfo [ playerid ] [ nível ]  =  50 ;



Indicamos a array "PlayerInfo" da dimensгo "playerid" que o valor do "Nivel" dele é 50.

Ao usar uma tag inexistente no enumerador o PAWNO resultará em um erro, entгo mantendo
botar nome de tags fбceis de lembrar para nгo se esquecer rapidamente = )


[size=24]A rrays:[/size]
Bom, este assunto é muito importante, pos você irá utilizar na maioria dos seus códigos,
uma dica que dou é sempre contar células precisamente ou criar uma Variável Gobal ,
com uma pré-definição de string, normalemnte usando 128, pois este é o máximo de texto,

Mais vamos há explicação:

As arrays são multivariáveis, com ela podem ser armazenadas vários valores diferentes,
similar a uma variável normal que só pode armazenar um valor simultaneamente.

Criamos um array normal contendo 5 células:
Código do peão:

Código:
novo MinhaArray [  5  ] ;




Seria a mesma coisa que:
Código do peão:

Código:
novo MinhaArray0;
novo MinhaArray1;
novo MinhaArray2;
novo MinhaArray3;
novo MinhaArray4;



Nota-se que só é usado no 4, pois o mesmo é contado do 0,


Voltando para o assunto Array, cada valor pode ser armazenado em uma célula,
só lembrando que a célula no que está entre colchetes "[" & "]".

Como nosso exemplo, criamos um array com 5 células:
Código do peão:

Código:
novo MinhaArray [ 5 ] ;




Para modificar os valores dos mesmos:
Código do peão:

Código:
MinhaArray [ 0 ]  +=   50 ; // Incrementa a "MinhaArray" célula "0" ou valor "50".



Para exibimos:
Código do peão:

Código:
printf ( "MinhaArray[0] Valor: %d Célula: 0" , MinhaArray [ 0 ] ) ;



Sу lembrando que temos mais 4 cйlulas livres,
Código do peão:

Código:
new MinhaArray [ 5 ]   =  {
    50 ,     // Célula 0
    0 ,   // Célula 1
    0 ,      // Célula 2
    0 ,      // Célula 3
    0        // Célula 4
} ;



Como pode ver, a apresentação da estrutura, os valores que estão "0" são representados
por valores não utilizados.


Nota(s):
As arrays sу sгo no mбximo tridimensional, que sгo 3 dimensхes em uma array sу.

Exemplo de matriz tridimensional:
Código do peão:

Código:
novo MinhaArray [ 1 ] [ 20 ] [ 40 ] ;



Manipulando:
Código do peão:

Código:
MinhaArray [ 1 ] [ 0 ] [ 0 ]  =  10 ;
MinhaArray [ 1 ] [ 0 ] [ 1 ]  =  50 ;
MinhaArray [ 1 ] [ 1 ] [ 25 ]  =  30 ;



Mostrando:
Código do peão:

Código:
printf ( "%d |%d | %d | " , MinhaArray [ 1 ] [ 0 ] [ 0 ] , MinhaArray [ 1 ] [ 0 ] [ 1 ] , MinhaArray [ 1 ] [ 1 ] [ 25 ] ) ;



Exibe: "10|50 |30".


Exemplo de array Bidimencional:
Código do peão:

Código:
novo MinhaArray [ 20 ] [ 15 ] ;



Manipulando:
Código do peão:

Código:
MinhaArray [ 0 ] [ 1 ]  =  20 ;
MinhaArray [ 5 ] [ 9 ]  =  5 ;




Mostrando:
Código do peão:

Código:
printf ( "%d | %d" , MinhaArray [ 0 ] [ 1 ] , MinhaArray [ 5 ] [ 9 ] ) ;




Exibe: "20| 5".


Arrays de uma dimensão:


Exemplo de uma matriz normal(uma dimensão):
Código do peão:

Código:
novo MinhaArray [ 100 ] ;




Manipulando:
Código do peão:

Código:
MinhaArray [ 0 ]  =  50 ;
MinhaArray [ 97 ]  =  87 ;




Mostrando:
Código do peão:

Código:
printf ( "%d,%d" , MinhArray [ 0 ] , MinhaArray [ 97 ] ) ;



Exibe: "50, 87".


Cuidado ao acessar uma dimensão que não existe!
pois dará erro ou possíveis travamentos!


[size=24]F unções:[/size]
Bom, existem 2 tipos de funções, as funções nativas e as funções nela nгo-nativas,
vão explicar-las:


As funções nativas sгo as que vem juntamente com um packpage do SA-MP, você
pode encontrar funções que podem manipular o servidor totalmente,
sendo a maioria com parâmetros.

Essas funções podem formar um exemplo de uso:
Código do peão:

Código:
Chute ( playerid ) ; // Expulsa o player do servidor



Como você pode notar esta função "Kick" tem o parâmetro "playerid",
mas note-se que ao adicionar mais um parâmetro o pawno returnará
há um erro, este erro é comum, então preste atenção bem a atenção ao usar
uma função da qual nгo saiba os parâmetros, caso tenha dъvidas, procure
o comando na Wiki.sa-mp que fala só sobre funções nativas.


As funciones nгo-nativas sгo as que nгo vem com a packpage do sa-mp,
entгo vocк tem que cria-las, pois elas sгo funзхes prуprias, cбlculos,
etc...

Entгo as funзхes que nгo existe na biblioteca do sa-mp sгo denomiadas
de nгo-nativas, mais lembrando que se jб estava criado uma funзгo com
mesmo nome da outra com certeza retornarб hб erro, entгo vamos hб obra:

Mais eai, como criar diversão?
Para criar funções extras, basta seguir a seguinte fórmula:
Código do peão:

Código:
stock MinhaFuncao ( numero, texto [ ] , Float : NumerosFlutuantes ) {
    printf ( "[%d]%s ele é %.1f" , numero, texto, Float : NumerosFlutuantes ) ;
}



A função acima pode ser testada utilizando da seguinte maneira:
Código do peão:

Código:
MinhaFuncao ( 20 ,   "Oi, Este é um tutorial do SuYaNw Dбcio" , 10.0 ) ;



Esta função exibe:"[20]Oi, Este é um tutorial do SuYaNw Dácio ele é 10.0"

Más Garfield, como podemos fazer funções com este pequeno exemplo ?
Simples, vou mostrar um exemplo umpouco mais extenso,

Código do peão:

Código:
stock ContarCaracteresNaFrase ( frase [ ] ) {  // Observe que usei "[]" para indicar texto/string, veja a tabela abaixo.

    novos personagens; // Cria uma variável para armazenar a quantidade de letras.
   
    Caracteres =  strlen ( frase ) ; // Seta a variável "Caracteres" para a quantidade de letras da "frase[]" usando a função strlen.
   
    retornar Caracteres; // Retorna a quantidade de letras.
}



Como você pode notar na função ela conta quantos caracteres foram achados na frase,
na função explicadas todas as funções de cada linha.

Para testa-la, use:
Código do peão:

Código:
printf ( "Esta frase tem %d letra(s)" , ContarCaracteresNaFrase ( "SuYaNw Lindo" ) ) ;



Tabela de tags para usar em funções:


MarcaçãoUsoFunзгo
Flutuar[/d]stock MinhaFuncao(Float: vida)Serve para nъmeros flutuantes
Texto[/d]stock MinhaFuncao(Float: Text)Serve para manipular textdraws
Cardápio[/d]stock MinhaFuncao(Float: Menu)Servir para manipular menus
Texto3D[/d]stock MinhaFuncao(Float: Text3D)Serve para manipular textos 3d

Bom essas tags são as mais usadas, claro que existem mais mais as mais
usadas estão citadas acima.

Usando Referência em funções, bom, este é um pouco mais elevado, precisa de uma grande
atenção para aprender esta parte, então vamos lá:

Oque são referências ?
As referências são referencias de uma variável ou array que não mudam de valor, ou seja, elas mudam
dentro da função executada, e depois disso elas voltam ao valor original por exemplo:
Código do peão:

Código:
stock Multi ( & Soma ) {
    return Soma *  2 ;
}



Pode-se notar que esta função apenas multiplica a Soma vezes 2.

Quando usamos uma variável para utilizar a função criada, ela não será modificada globalmente,
somente localmente, veja os exemplos:

Código do peão:

Código:
nova MinhaVariavel =  2 ; // criei uma variável simples com o valor 2.
printf ( "Multiplicado: %d" , Multi ( MinhaVariavel ) ) ; // Exibe a soma de 2 x 2 = 4.




Todos nуs sabemos se fosse uma funзгo normal ou valor de MinhaVariavel teria
modificado, mais como й por referкncia, nгo ocorre.

E ao imprimir o valor da nossa variável returnará o valor 2 novamente.
Código do peão:

Código:
printf ( "Valor: %d" , MinhaVariavel ) ;



Imprimirá valor 2.

[size=24]Callbacks :[/size]
Bom, essa é a parte que meche na estrutura do script, ela é responsável pela
manipulação da grande parte da maioria do servidor, são nelas que são
chamados todos os eventos do servidor, e agora você saberá manipular- las.

As callbacks são chamadas quando ocorre algum evento no servidor(como
dito antes), para explicar melhor vamos pegar a callback "OnPlayerConnect",
Essa callback é chamada quando o player conecta, ao player conectar tudo
que estiver nesta callback é executado.

Mais eai, como crio uma callback ?
É muito fácil, basta seguir a seguinte fórmula:
Código do peão:

Código:
encaminhar nome_callback ( parâmetros ) ;

public nome_callback ( parametros )
{
    return true;
}


Lembrando apenas que os callbacks não suportam retornar strings, então
qualquer tentativa resultará em erro. E também se tentar criar uma callback
sem declarar resultará em erro também.

E sobre Funcionalidade, ela é basicamente a mesma coisa que uma "Função",
somente a diferença que não retorna strings.


[size=24]E xpressхes:[/size]
Eu acho esta parte mais essencial para programaзгo em geral, por iso vocк
tem que entender bem e se esforзar, pois nela que vocк aprenderб a manipular
nъmeros.

Bom, vamos aprender as expressões matemáticas, das quais
nуs usamos para calcular nъmeros, elas sгo:

ExpressãoExplicação
++Usado para incrementar que será sempre +1
--Usado para decrementar que será sempre -1
*Usado para multiplicar
/Usado para dividir
+=Adiciona um valor há sua variável
-=Retira um valor de sua variável
*=Multiplica um valor para sua variável
/=Divide um valor para sua variável


Uso:
Código do peão:

Código:
Variável ++ ; // Adiciona +1 hà nossa variável;
Variavel -- ; // Remove -1 da nossa variável;
Variavel =  ( 2  *  2 ) ; // Seta o valor da variável para 4 (2*2);
Variavel =  ( 2/1  ) ; _  _ // Define o valor da variável para 2 ( 2 / 1 = 1); Variavel += 2 ; // Adiciona +2 em nossa variável; Variavel -= 2 ; // Remove -2 de nossa variável; Variavel *= 2 ;

[size=13]



// Multiplica por 2 a nossa variável;
[/size]
Código:
Variável /=  2 ; // Divide por 2 a nossa variável;




Essas são as expressões matemáticas, e agora vamos as expressões
de condições:



ExpressãoExplicação
>Maior que
<Menor que
>=Maior ou igual que
<=Menor ou igual que
!=Diferente de
==Igual que

Uso:
Código do peão:

Código:
if ( Variavel >  10 ) // Verifica se a Variavel é maiorque 10;
if ( Variavel <  10 ) // Verifica se a Variavel é menor que 10;
if ( Variavel >=  10 ) // Verifica se a Variável é maior ou igual há 10;
if ( Variavel <=  10 ) // Verifica se a Variável é menor ou igual há 10;
if ( Variável !=  10 ) // Verifica se a Variável é diferente de 10;
if ( Variável ==  10 )// Verifica se a variável é igual há 10.





Agora vamos falar um pouco sobre os operadores lógicos:
que são eles:

operadorSignificado
||ou
&&E


Os operadores lógicos || e && sу tem uma explicaзгo, e sгo
sempre usado em condiзхes, vamos hб explicaзгo primeiro:

Operador ||:
Este operador verifica mais de uma condiзгo, se uma delas for
verdadeira a condiзгo returna true, veja o exemplo:
Código do peão:

Código:
if ( Variavel ==  10 || Variavel ==  20 )  /  / Verifica se a Variavel é igual á 10 OU igual á 20



Operador &&:
Este operador é diferente da décima, ele verifica se todas as condições
contidas são tão verdadeiras:
Código do peão:

Código:
if ( Variavel ==  10  && Variavel <  20 )  //Verifica se a Variavel é igual há 10 e menor que 20, caso esta condição seja verdadeira ele executa o que está abaixo.





Acho que não precisa mais explicar sobre o assunto, porque o mesmo está claro.

[size=24]Looping :[/size]
O Looping é uma repetição com condições diferentes(as vezes) mais na grande maioria
ele serve para fazer repetições das quais não precisamos ficar ganhando a mesma função
várias vezes.

Por exemplo, queremos exibir o nome SuYaNw no console 10 vezes, como fizemos ?

Jeito errado:
Código do peão:

Código:
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;
printf ( "SuYaNw" ) ;



Assim imprimirá, mais seria um desespero de linhas, usando Loop seria assim:
Código do peão:

Código:
for ( new i; i !=  10 ; ++ i ) {
    printf ( "SuYaNw" ) ;
}



Viu?

Explicação:
O Looping for tem uma fórmula muito fácil de manipular, vou explicar:


Looping FOR:
Como no exemplo abaixo, ele cria a variável ie depois verifica se i != de 10,
caso for diferente de 10 ele vai adicionar +1( usando incrementaзгo ++),
e se a variбvel i chegar ao valor 10 o loop para Tópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin

lembrar automaticamente que o 10й o nъmero de vezes que o loop serб executadoTópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin
Código do peão:

Código:
for ( novo i; i !=  10 ; ++ i ) {

}





O mesmo efeito usando outros tipos de loopings:

Looping: While

Bom, o loop while é parecido com o FOR, só que tem que criar separadamente as funções,
veja:
Código do peão:

Código:
novo i; // criamos a variável i

while ( i !=  10 ) {  // verificamos se é diferente de 10


   printf ( "SuYaNw" ) ;

    eu ++ ; // incrementa a variável i + 1.
}




Looping: Do..While

Este sistema de loop é parecido com o de cima,
Código do peão:

Código:
novo eu; // criando uma variável i.

faça {
    printf ( "SuYaNw" ) ;
     
     eu ++ ;
} ;
enquanto ( i !=  10 ) ;



*Observe que as funções vão acima e abaixo vão a condição de fazer looping.




Bom por enquanto é isto, entгo por favor, aguardem a segunda parte para vocкs "Manipular"
oque vocкs aprenderam neste tutorial.


Creditos: SuYaNw

Weslley_Script

[Tutorial] Programação modular - Sex 14 Abr 2023 - 18:41

Programação Modular


O programa modular, também conhecido por Modularidade é um conceito onde o sistema ou software é dividido em partes distintas. O conceito de modularidade passa por criar módulos com funções diferentes e usar um módulo principal, por exemplo:
Código PHP:

Código:
Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
main()
{
    Soma(2,5);
    Divisao(2,5);
    Multiplicao(2,5);
    Subtracao(2,5);



Neste exemplo já podemos verificar a existência da modularidade, ou seja, nуs criamos funзхes responsбveis por tarefas ou algoritmos, em vez de colocarmos tudo em uma sу parte nуs separamos em pequenas partes e depois juntamos tudo.

Com isto deu-se a criação de bibliotecas, as tais famosas #includes, fazendo com que cada biblioteca fosse responsável por uma determinada tarefa. Já quando nуs programa-mos peão temos tendкncia a escrever um cуdigo em apenas um arquivo eo que acontece й que ele torna-se grande e nуs a fim-nos por perder no meio do cуdigo em si.

As pessoas que usam a modularidade podem-se dizer que são pessoas mais organizadas, pessoas que se preocupam com a estética do código e preocupam-se em não se perder no meio do oceano. Isto porque se separar-mos tudo é mais fácil encontrar algo e esse algo por vezes pode ser um bug.

Um exemplo da programação modular é o Paradise City RPG , o Lуs desenvolveu o gamemode em mуdulos tornando o mesmo bastante organizado e fбcil de outros entenderem, no caso de haverem mais developers claro.

Tópicos com a tag include em SSGamers - 12 Anos online por você. Rq59PXL

A ideia de como dividir o gamemode em mуdulos depende BASTANTE de cada um e nгo existe uma regra global, eu duvidosamente dividido por sistemas, ou seja, se for o sistema de carros й uma coisa, casa outra, jogador outra, por ai a diante .

Agora claro existem questхes tйcnicas como por exemplo, tenho de definir as includes em todos os mуdulos? Nгo.

Para que nгo saiba a funзгo #include serve apenas para incluir o cуdigo em determinado cуdigo ou seja
calculos.inc
Código PHP:

Código:
Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y)); 


calcular.pwn
Código PHP:

Código:
#include <calculos.inc>
main()
{
    Soma(2,5);
    Divisao(2,5);
    Multiplicao(2,5);
    Subtracao(2,5);



Realidade:
Código PHP:

Código:
Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
main()
{
    Soma(2,5);
    Divisao(2,5);
    Multiplicao(2,5);
    Subtracao(2,5);



Isso é o que acontece quando se usa o #include, então vamos agora à pergunta em si.

Quando criamos módulos não é necessário estar a incluir os mesmos includes, o que devemos fazer é incluir as includes principais no arquivo principal (main.pwn) e depois incluir os módulos
Código PHP:

Código:
#include <a_samp>
#include <sscanf>
#include <zcmd>
//etc..
//mуdulos
#include "modulos/player.pwn"
#include "modulos/vehs.pwn"
#include "modulos/props.pwn"
//etc.. 


O que acontece é que o cуdigo juntará tudo e como sabemos os compiladores funcionam de cima para baixo, então eles iram definir o que é necessário em baixo.

Então mas e as callbacks do sa-mp, precisa de fazer hook? Não necessariamente.

À um tempo atrés eu tive uma conversa com o y_less sobre usar o Hook Method 7 e fazer a chamada normal das callbacks, então ele disse-me que para fazer a chamada normal das callbacks requere disciplina, ou seja, é necessário saber o que se esta a fazer para nгo causar problemas no script e segundo ele o y_hooks e os hook methods foram desenvolvidos para trabalharem em transparкncia, ou seja, eles redefinem as callbacks afim do outro programador nгo se esquecer de fazer a chamada.
Citar:

Postado originalmente por Y_Less
Quero dizer, se você estiver explicitamente chamando retornos de chamada em outros arquivos, lembre-se de fazê-lo. Hooks foram desenvolvidos como a maioria dos includes usados ​​para declarar algo como:

Citar:


Para usar esta inclusão, adicione "Inc_OnPlayerConnect(playerid);" para "OnPlayerConnect" e "Inc_OnPlayerDisconnect (playerid, razão);" para "OnPlayerDisconnect".

[size]

Isso era pesado, frequentemente ignorado e a principal fonte de bugs no uso deles pela maioria das pessoas. Ganchos foram desenvolvidos para fazer isso de forma transparente.
[/size]

Um exemplo de chamada é o seguinte:
main.pwn
Código PHP:

Código:
public OnPlayerConnect(playerid)
{
    player_OnPlayerConnect(playerid); //chama o mуdulo player.pwn
    return 1;



jogador.pwn
Código PHP:

Código:
public player_OnPlayerConnect(playerid)
{
    //login / registro
    return 1;



O que acontece é que nós chama-mos a nossa função personalizada a partir da função "mée" é como estávamos-mos a criar uma árvore onde existem o pai e os filhos. Na minha opinião não existe nenhuma necessidade de usar y_hooks ou qualquer mйtodo hooks ao desenvolver um gamemode em mуdulos isto porque sendo o programador o ъnico desenvolvedor ou a equipa os ъnicos nгo existe necessidade de trabalhar nessa transparкncia pois ambos tкm conhecimento do que estгo a fazer e por sua vez nгo se irгo esquecer de ligar o pai а filho.

Isto também é um método bastante usado no LS-RP, por exemplo, eles quando usam funções como OnPlayerConnect, eles fazem desta forma Damian_OnPlayerConnect , Mmartin_OnPlayerConnect, etc..

Isto é uma boa forma de organização e para quem deseja trabalhar nesta área deve levar em consideração isto pois caso contrário pode-se tornar complicado trabalhar em equipa.

Nгo sei se o tutorial estб grande coisa, jб nгo faзo а algum tempo, mas pronto, como me fez um pedido vir aqui esclarecer umas dъvidas e expor a minha opiniгo e conhecimento, obrigado a todos!


Creditos: Rebelox

Fael Unico

Criando sistema de /noite /dia /tarde - Ter 11 Abr 2023 - 23:20

Topo da GM!
#include

Final da GM
CMD:noite(playerid)//Aqui o nome do comando
{
    SetPlayerWeather(40);//Aqui seta o clima
    return 1;
}

CMD:dia(playerid)
{
    SetPlayerWeather(1);
    return 1;
}
CMD:tarde(playerid)
{
    SetPlayerWeather(23);
    return 1;
}



study farao

[Tutorial] Como criar comandos /ir e /trazer usando SSCANF e zCMD - Qua 5 Abr 2023 - 12:18

[b]Introdução[/b]

Para fazermos os comandos, vamos precisar de dois includes, Sscanf2 e zCMD.


Estarei usando o Sscanf2



Transferências:







Apуs baixar, abra a pasta do Pawno, vб em includes e cole lб os dois arquivos


__________________________________________________ _____________________________________

[size=24]Iniciando[/size]

Antes de tudo, certifique-se de que você adicionou ao começo do seu projeto
Citar:


#include sscanf2

Citar:


#include zcmd

Após se certificar, abra seu arquivo no pawno e escolha um lugar para digitar o comando(Eu uso depois da última pública).

Digite:
Citar:

CMD:ir(playerid, params[]) {

// Explicação:

CMD: // Indica como é o comando no caso /ir.

ir: // O comando.

playerid: // Quem digita o comando.

params[]: // Significa que vamos usar parâmetros, esses parâmetros serão usados ​​em TODOS o comandos que precisarem de um complemento exemplo " /ir [id do jogador] " /ir = comando, [id do jogador] = complemento do comando, parâmetro.

Continuando..

...Após ter definido o CMD, vamos então criar o que vai ser usado nesse cmd logo abaixo digite:
Citar:

novo aNome[MAX_PLAYER_NAME]; // Nome de quem usou o comando, no caso o Admin, etc..
new pName[MAX_PLAYER_NAME]; // Nome do player para quem o Admin se teleportou.
novo id; // Id do player que vai ser usado no /ir
new str[128]; // Criamos uma string que vai mandar as mensagens ao player
GetPlayerName(playerid, aName, sizeof(aName)); // Vai pegar o nome do Player que usou o comando.
GetPlayerName(playerid, pNome, sizeof(pNome)); // Vai pegar o nome de quem foi usado o comando.

Depois de ter feito isso digite logo abaixo:
Citar:


if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| Você não possui acesso para utilizar esse comando!");

// Irá checar se o jogador estiver logado Rcon, caso não esteja, irá retornar a mensagem de erro.

if(sscanf(params, "d", id)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| Use /ir .");

// Irá checar se ele escreveu o comando todo, caso tenha escrito apenas /ir, irá retornar a mensagem de erro.

if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| O ID digitado não está no servidor.");

// Irá checar se ele digitou um ID válido, caso o ID digitado não esteja no servidor, irá retornar a mensagem de erro.

novo Flutuante: x, Flutuante: y, Flutuante: z;

SetPlayerPos(playerid, x, y, z);

// GetPlayerPos, irá pegar a posição do ID. SetPlayerPos, vai definir quem digitou o comando na posição do ID.

format(str, sizeof(str), "|INFO| Você foi ao jogador: %s", pNome);
SendClientMessage(playerid, 0x1CD622FF, str);

// Vai enviar á quem digitou o comando a mensagem de que ele foi ao ID do jogador, o %s será substituído pelo nome do ID dentro do jogo.

format(str, sizeof(str), "|INFO| O Administrador: %s, foi atй vocк", aNome);
SendClientMessage(id, 0x1CD622FF, str);

// Vai enviar á quem o admin se teleportou a mensagem de que o admin foi até ele, os %s será substituindo pelo nome do admin dentro do jogo.

Por fim.. digite:
Citar:

retornar 1;
} // Fecha o Comando, significando que acabou, nunca se esquece de fechá-lo, caso contrário o peão não irá entender que o comando acabou.

Pronto, você finalizou o comando /ir . Agora, para o /trazer, basta você copiar e colar abaixo todo o código que acabamos de criar (Sim, copie e cole abaixo todo o comando /ir. )


Citar:

CMD:ir(playerid, params[]) {

Pára:
Citar:

CMD:trazer(playerid, params[]) {



Depois..
Citar:


// Procure por estas linhas:
new Float: x, Float: y, Float: z;
GetPlayerPos(id, x, y, z); // Troque "id" por "playerid"
SetPlayerPos(playerid, x, y, z); // Troque "playerid" por "id"

// Para o /trazer basta trocar o "id" no GetPlayerPos por "playerid" e SetPlayerPos "playerid" por "id".

Depois disso, basta modificar as mensagens!

[size=24]Fim[/size]
Bom, esse é o meu primeiro Post aqui no Fуrum. Desde jб peзo desculpas caso o cуdigo nгo esteja muito aperfeiзoado, comecei com a linguбgem Pawn faz apenas 1 Semana..

Aceito Dicas e Crнticas Tópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin
Qualquer dъvida й sу me dizer, responderei logo. ( Obs: Compilei aqui, e foi tudo certo! )

Espero ter ajudado alguйm, atй mais.
Creditos: Preduo

Weslley_Script

[Tutorial] Como Criar Módulos - Qui 30 Mar 2023 - 8:40

Tópicos com a tag include em SSGamers - 12 Anos online por você. Rf7b21g
  • Introdução
  • Oqueé
  • Atenço
  • Tutorial
  • Opcional


[size=32]Introdução[/size]

ATUALIZAÇÃO [17/03/17] pra galera debochar legau ao som do cabeçote de gelo

[size=32]Oqueé?[/size]

Módulo é uma parte do sistema que utiliza a mesma arquitetura tecnológica do sistema, um módulo ou vários módulos compхem um Sistema, um módulo também é representado por um grupo de componentes de software que atende a um assunto bem definido.
Ou seja, Mуdulos sгo partes, e todas elas juntas formam o sistema completo. )

[size=32]Atenço[/size]

  • ATENЗГO: O uso de IDE's Multi-tarefas, como o: Notepad++, Sublime text, Atom.. nгo й obrigatуrio!
    Os mesmos citados, apenas facilitam seu trabalho,ganhando mais produtividade em menor tempo.
    Podendo ser usado o Pawno(IDE padrão) sem problemas. )

  • ATENÇÃO: 2(duas) Callback's com o mesmo nome, resultam em erros! Solução: Ler o Opcional, la em baixo.

  • ATENЗГO: Vocк nгo terб problemas com mуdulos, eles funcionam do mesmo jeito.. tanto fora, ou dentro do gamemode.

  • ATENÇAO: Qualquer dúvida, só comentar no tópicoTópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin



[size=32]Tutorial[/size]
[list="box-sizing: border-box; margin-bottom: 10px;"][*]Primeiramente, crie uma Pasta em seu GameMode,para armazenar os " Módulos "
Tópicos com a tag include em SSGamers - 12 Anos online por você. Wjawilk
[*]Crie um novo arquivo, em sua IDE
Tópicos com a tag include em SSGamers - 12 Anos online por você. F03sYU5
[*]Coloque algumas funções, por exemplo, sу comandos, e clique em Salvar Como( Save as )
Tópicos com a tag include em SSGamers - 12 Anos online por você. EcSfOTy
[*]De um nome para seu mуdulo ( EX: Comandos.pwn ), e salve-o na pasta criada ( Mуdulos )
Tópicos com a tag include em SSGamers - 12 Anos online por você. 9oGrFsM
[*]no GameMode Ponha o diretório do módulo criado, segue a fórmula abaixo.
peão Код:
#include "..\modulos\Comandos.pwn"
Tópicos com a tag include em SSGamers - 12 Anos online por você. 07ojEZN
[*]prontoTópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin
[/list]




[size=32]Opcional[/size]
Bom, Trabalhando em Mуdulos й essencial usar 1 callback varias vezes, mais como sabem.. nгo й permitido
porem temos uma soluзгo, se chama Hook, Para facilitar nossas vidas, a Include Y_Hook

Citar:

Tópico : https://scriptsamp.forumeiros.com/t48773-incluir-ysi-3-1#98395
Download : https://github.com/Misiur/YSI


Agora é possível,
Atenção: Em cada módulo criado, coloque a include, e em todas callback, em vez de colocar public, escreva hook

peão Код:
[size=13]#include gancho YSI\y_hooks

OnGameModeInit ( )
{
}
[/size]
************************************************** ********************************************************
Bom se você quer organizar seus mуdulos em pastas
Exemplo:
Tópicos com a tag include em SSGamers - 12 Anos online por você. XnqNQDYg

Super Recomendo que usem o compilador do Zeex, que ele consegue ler direitinho os mуdulos em pastas.
Citar:

Tópico: https://scriptsamp.forumeiros.com/t48770-ferramenta-web-outro-patches-do-compilador-pawn-da-zeex#98392

Espero que tenha ficado bom, to tentando dar o meu melhor, aceito criticas e elogios ^^





PrуsContras
» Organização» n/a
» Fácil compreensão» n/a
» Fácil remoção de bugs» n/a


Creditos: King7

[Tutorial] Programaзгo modular simples (s/ y_hooks) - Qua 22 Mar 2023 - 11:13

[size=24]Programaзгo modular simples (sem y_hooks)[/size]
Й fundamental que vocк saiba organizar seu ambiente de trabalho, o seu cуdigo nгo serб diferente disto, para organizar algo grande, nada melhor do que dividi-lo em mуdulos especнficos de cada categoria do que vocк fez, nгo?

Neste tutorial, irei ensinar um mйtodo simples, sem plugins e sem includes adicionais do fуrum, para vocк criar mуdulos e facilmente gerencia-los.

- O primeiro de tudo й criar uma pasta para tais mуdulos, pode ser a sua escolha. Eu por exemplo separei sistemas especнficos no cуdigo que eu trabalho em uma pasta chamada sys/.

Tópicos com a tag include em SSGamers - 12 Anos online por você. Q2kg54r

- Crie o arquivo .pwn ou em alguma extensгo que nгo impeзa a leitura dele. Particularmente eu utilizo a extensгo .sys para essa pasta especifica que eu criei com meus sistemas.

- Abra o arquivo e comece a escrever os cуdigos, crie as funзхes que necessitar para o seu sistema.

- Se caso vocк precise que essa funзгo esteja em uma public do sa-mp e essa public estб declarada no main-code (arquivo principal do GM) vocк pode criar uma stock ou uma public dentro do modulo e chama-lo na public desejada.

Por exemplo, necessito que uma informaзгo seja realizada quando o jogador entrar, a public que й chamada quando esse evento acontece й o OnPlayerConnect, ela jб estб declarada nativamente no meu main-code por que existe outros cуdigos dentro dela, eu irei criar uma stock com as funзхes que eu desejo nessa public. Irei declarar uma variбvel como negativa para esse evento como exemplo.


Código:
stock DrinkBuy_OnPlayerConnect(playerid)
{
    AlgumaVariavel[playerid] = false;
    return 1;



* Lembre-se que o tamanho do nome/titulo de qualquer stock, function, public ou variбvel nгo pode passar dos 32 caracteres.

* Para fins de organizaзгo, sempre tento criar a funзгo com parte do mesmo nome da nativa, diferenciando apenas o nome/abreviaзгo do nome do modulo que estou trabalhando.


Criei a stock no arquivo do modulo, agora irei atй o main-code e irei chama-la na public nativa, que й o OnPlayerConnect(playerid) e coloca-lo na posiзгo que eu julgar necessбria e relevante.



Código:
public OnPlayerConnect(playerid)
{
    /*Suas funзхes e necessidades no OnPlayerConnect nativo do main-code*/
    DrinkBuy_OnPlayerConnect(playerid);
    return 1;



Posicionei a minha stock no final da public, ou seja, ela sу serб executada quando tudo antes dela for executado.

- Em casos de comandos, vocк pode fazer o mesmo com o OnPlayerText, se for ZCMD ou qualquer outro processador de comandos, vocк pode cria-lo normalmente no modulo que ele funcionarб normalmente.

- Em casos de variбveis que tenham a criaзгo no main-code e vocк precise de novas no modulo, crie elas diretamente no main-code para chama-las no modulo.

- Para chamar o seu arquivo ao main-code vocк deve declarar fora de qualquer funзгo uma #include, por exemplo:
Código:
#include "diretуrios/drinkbuy.sys" 


  • O que estiver dentro do " " deverб ser o caminho a partir do main-code atй o arquivo do modulo, no meu caso o meu modulo estб localizado numa pasta chamada sys/ e o nome do arquivo й drinkbuy.sys, logo ficando sys/drinkbuy.sys o caminho atй o arquivo.


Se tiver dъvidas, pergunte no tуpico. Se achar algum erro, envie via MP.


Creditos:willttoonn

Weslley_Script

Como criar um sistema de PATROCINADOR - Seg 6 Mar 2023 - 6:33

AmorimmFOV escreveu:Olá senhores, sistema de PATROCINADOR

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar em cima de OnGamemodeInit():


Código:
new Patrocinador[MAX_PLAYERS];







com o suposto Patrocinador criado você vai fazer um sistema de dar o Patrocinador ao jogador:




Código:
CMD:darpatrocinador(playerid, params[])
{
    new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
    if(sscanf(params, "u[24]", id)) return SendClientMessage(playerid, 0xFF0000FF, "Use /darpatrocinador [ID]");
        
    GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
    GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
    
    format(strganhou, sizeof(strganhou), "O Administrador %s te deu um patrocinador!", nomedeu);

    SendClientMessage(id, 0x00FF00FF, strganhou);    
    
    Patrocinador[playerid] = 1; //O Jogador recebeu o patrocinador.
    return 1;




agora, com o comando do jogador receber o patrocinador falta ter o de ver os Patrocinadores onlines:


Código:
CMD:patrocinadores(playerid)
{
 new str[1000], cont, string[90];
 foreach(Player, i)
 {
 if(Patrocinador[i] == 0) continue;
 format(string, sizeof(string), "{FFFFFF}%s | ", GetPlayerNameEx(i));

 if(Patrocinador[i] == 1) strcat(string, "{00FFFF}Patrocinadores\n");
 strcat(str, string);
 cont++;
 }
 if(!cont) ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{FFFFFF}Patrocinadores Online", "{FFFFFF}Nenhum patrocinador esta online no momento.", "OK", "");
 else ShowPlayerDialog(playerid, 999, DIALOG_STYLE_LIST, "{FF0000}Patrocinadores Online", str, "OK", "");
 return 1;
}

stock GetPlayerNameEx(playerid)
{
 static pNome[MAX_PLAYER_NAME];
 GetPlayerName(playerid, pNome, MAX_PLAYER_NAME);
 return pNome;
}




INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

Acrescimo: para o sistema de patrocinador, você pode adicionar o sistema de /avpatrocinador com a função de enviar a mensagem dos patrocinadores, isso deixaria interessante.

Weslley_Script

Como criar um sistema de SÓCIO - Seg 6 Mar 2023 - 6:25

AmorimmFOV escreveu:Olá senhores, sistema de sócio

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar em cima de OnGamemodeInit():
CÓDIGO:
Código:
new Socio[MAX_PLAYERS];






com o suposto Sócio criado você vai fazer um sistema de dar o sócio ao jogador:



CÓDIGO:
Código:
CMD:darsocio(playerid, params[])
{
    new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
    if(sscanf(params, "u[24]", id)) return SendClientMessage(playerid, 0xFF0000FF, "Use /darsocio [ID]");
        
    GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
    GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
    
    format(strganhou, sizeof(strganhou), "O Administrador %s te deu um socio!", nomedeu);

    SendClientMessage(id, 0x00FF00FF, strganhou);    
    
    Socio[playerid] = 1; //O Jogador recebeu o sócio.
    return 1;



agora, com o comando do jogador receber o sócio falta ter o de ver os socios onlines:


CÓDIGO:
Código:
CMD:socios(playerid)
{
 new str[1000], cont, string[90];
 foreach(Player, i)
 {
 if(Socio[i] == 0) continue;
 format(string, sizeof(string), "{FFFFFF}%s | ", GetPlayerNameEx(i));

 if(Socio[i] == 1) strcat(string, "{FFFF00}Socio\n");
 strcat(str, string);
 cont++;
 }
 if(!cont) ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{FFFFFF}Socios Online", "{FFFFFF}Nenhum socio esta online no momento.", "OK", "");
 else ShowPlayerDialog(playerid, 999, DIALOG_STYLE_LIST, "{FF0000}Jogadores Socios", str, "OK", "");
 return 1;
}

stock GetPlayerNameEx(playerid)
{
 static pNome[MAX_PLAYER_NAME];
 GetPlayerName(playerid, pNome, MAX_PLAYER_NAME);
 return pNome;
}



INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

A public com os beneficios de socio e os cargos de socio e seus comandos?

Weslley_Script

Como criar um sistema de YOUTUBER (Basico) - Seg 6 Mar 2023 - 6:23

AmorimmFOV escreveu:Olá senhores, sistema de youtuber

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar em cima de OnGamemodeInit():

CÓDIGO:
Código:
new Youtuber[MAX_PLAYERS];








com o suposto Youtuber criado você vai fazer um sistema de dar o Youtuber ao jogador:



CÓDIGO:
Código:
CMD:daryoutuber(playerid, params[])
{
    new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
    if(sscanf(params, "u[24]", id)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daryoutuber[ID]");
        
    GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
    GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
    
    format(strganhou, sizeof(strganhou), "Parabens, Voce e o novo Youtuber do servidor! (Setado por: %s)", nomedeu);

    SendClientMessage(id, 0x00FF00FF, strganhou);    
    
    Youtuber[playerid] = 1; //O Jogador recebeu o youtuber.
    return 1;





agora, com o comando do jogador receber o youtuber falta ter o de ver os Youtubers onlines:


CÓDIGO:
Código:
CMD:youtubers(playerid)
{
 new str[1000], cont, string[90];
 foreach(Player, i)
 {
 if(Youtuber[i] == 0) continue;
 format(string, sizeof(string), "{FFFFFF}%s | ", GetPlayerNameEx(i));

 if(Youtuber[i] == 1) strcat(string, "{00FFFF}Youtubers\n");
 strcat(str, string);
 cont++;
 }
 if(!cont) ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{FFFFFF}Youtubers Online", "{FFFFFF}Nenhum youtuber esta online no momento.", "OK", "");
 else ShowPlayerDialog(playerid, 999, DIALOG_STYLE_LIST, "{FF0000}Youtubers Online", str, "OK", "");
 return 1;
}

stock GetPlayerNameEx(playerid)
{
 static pNome[MAX_PLAYER_NAME];
 GetPlayerName(playerid, pNome, MAX_PLAYER_NAME);
 return pNome;
}


INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

Onde esta a public com o comando "/youtubers"?

e depois ainda falta public com o sistema de execução de perguntas e respostas como /atendimento, faça isso conectando ao sistema de Youtubers que vai ficar interessante, principalmente se for um sistema de atendimento baseado no classico sistema de relatorio que enviará perguntas aos youtubers online do servidor.

AmorimmFOV

Como criar um sistema de PAYDAY - Dom 5 Mar 2023 - 21:25

Olá senhores, sistema de payday

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar dentro da OnGamemodeInit():

CÓDIGO:

Código:
public OnGameModeInit()
{
        SetTimer("PAYDAY", 6000000, true); //60 Minutos (1 Hora)
   return 1;
}


Agora deverá ficar no final da gamemode este: 
CÓDIGO:
Código:
forward PAYDAY();
public PAYDAY()
{
   GivePlayerMoney(playerid, 5000); //O Jogador recebe 5 mil
        SendClientMessage(playerid, -1, "Parabens, voce jogou +1 hora em nosso servidor e recebeu 5 mil."); //Mensagem no chat.
        return 1;
}




INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

AmorimmFOV

Como criar um sistema de YOUTUBER (Basico) - Dom 5 Mar 2023 - 20:47

Olá senhores, sistema de youtuber

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar em cima de OnGamemodeInit():

CÓDIGO:

Código:
new Youtuber[MAX_PLAYERS];








com o suposto Youtuber criado você vai fazer um sistema de dar o Youtuber ao jogador:



CÓDIGO:
Código:
CMD:daryoutuber(playerid, params[])
{
    new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
    if(sscanf(params, "u[24]", id)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daryoutuber[ID]");
        
    GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
    GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
    
    format(strganhou, sizeof(strganhou), "Parabens, Voce e o novo Youtuber do servidor! (Setado por: %s)", nomedeu);

    SendClientMessage(id, 0x00FF00FF, strganhou);    
    
    Youtuber[playerid] = 1; //O Jogador recebeu o youtuber.
    return 1;





agora, com o comando do jogador receber o youtuber falta ter o de ver os Youtubers onlines:


CÓDIGO:
Código:
CMD:youtubers(playerid)
{
 new str[1000], cont, string[90];
 foreach(Player, i)
 {
 if(Youtuber[i] == 0) continue;
 format(string, sizeof(string), "{FFFFFF}%s | ", GetPlayerNameEx(i));

 if(Youtuber[i] == 1) strcat(string, "{00FFFF}Youtubers\n");
 strcat(str, string);
 cont++;
 }
 if(!cont) ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{FFFFFF}Youtubers Online", "{FFFFFF}Nenhum youtuber esta online no momento.", "OK", "");
 else ShowPlayerDialog(playerid, 999, DIALOG_STYLE_LIST, "{FF0000}Youtubers Online", str, "OK", "");
 return 1;
}

stock GetPlayerNameEx(playerid)
{
 static pNome[MAX_PLAYER_NAME];
 GetPlayerName(playerid, pNome, MAX_PLAYER_NAME);
 return pNome;
}


INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

AmorimmFOV

Como criar um sistema de PATROCINADOR - Dom 5 Mar 2023 - 20:41

Olá senhores, sistema de PATROCINADOR

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar em cima de OnGamemodeInit():


Código:
new Patrocinador[MAX_PLAYERS];







com o suposto Patrocinador criado você vai fazer um sistema de dar o Patrocinador ao jogador:




Código:
CMD:darpatrocinador(playerid, params[])
{
    new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
    if(sscanf(params, "u[24]", id)) return SendClientMessage(playerid, 0xFF0000FF, "Use /darpatrocinador [ID]");
        
    GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
    GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
    
    format(strganhou, sizeof(strganhou), "O Administrador %s te deu um patrocinador!", nomedeu);

    SendClientMessage(id, 0x00FF00FF, strganhou);    
    
    Patrocinador[playerid] = 1; //O Jogador recebeu o patrocinador.
    return 1;




agora, com o comando do jogador receber o patrocinador falta ter o de ver os Patrocinadores onlines:


Código:
CMD:patrocinadores(playerid)
{
 new str[1000], cont, string[90];
 foreach(Player, i)
 {
 if(Patrocinador[i] == 0) continue;
 format(string, sizeof(string), "{FFFFFF}%s | ", GetPlayerNameEx(i));

 if(Patrocinador[i] == 1) strcat(string, "{00FFFF}Patrocinadores\n");
 strcat(str, string);
 cont++;
 }
 if(!cont) ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{FFFFFF}Patrocinadores Online", "{FFFFFF}Nenhum patrocinador esta online no momento.", "OK", "");
 else ShowPlayerDialog(playerid, 999, DIALOG_STYLE_LIST, "{FF0000}Patrocinadores Online", str, "OK", "");
 return 1;
}

stock GetPlayerNameEx(playerid)
{
 static pNome[MAX_PLAYER_NAME];
 GetPlayerName(playerid, pNome, MAX_PLAYER_NAME);
 return pNome;
}




INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

AmorimmFOV

Como criar um sistema de SÓCIO - Dom 5 Mar 2023 - 20:31

Olá senhores, sistema de sócio

no inicio da gamemode em baixo de #include a_samp digite #include zcmd

este codigo deverá ficar em cima de OnGamemodeInit():
CÓDIGO:

Código:
new Socio[MAX_PLAYERS];






com o suposto Sócio criado você vai fazer um sistema de dar o sócio ao jogador:



CÓDIGO:
Código:
CMD:darsocio(playerid, params[])
{
    new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
    if(sscanf(params, "u[24]", id)) return SendClientMessage(playerid, 0xFF0000FF, "Use /darsocio [ID]");
        
    GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME);
    GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME);
    
    format(strganhou, sizeof(strganhou), "O Administrador %s te deu um socio!", nomedeu);

    SendClientMessage(id, 0x00FF00FF, strganhou);    
    
    Socio[playerid] = 1; //O Jogador recebeu o sócio.
    return 1;



agora, com o comando do jogador receber o sócio falta ter o de ver os socios onlines:


CÓDIGO:
Código:
CMD:socios(playerid)
{
 new str[1000], cont, string[90];
 foreach(Player, i)
 {
 if(Socio[i] == 0) continue;
 format(string, sizeof(string), "{FFFFFF}%s | ", GetPlayerNameEx(i));

 if(Socio[i] == 1) strcat(string, "{FFFF00}Socio\n");
 strcat(str, string);
 cont++;
 }
 if(!cont) ShowPlayerDialog(playerid, 999, DIALOG_STYLE_MSGBOX, "{FFFFFF}Socios Online", "{FFFFFF}Nenhum socio esta online no momento.", "OK", "");
 else ShowPlayerDialog(playerid, 999, DIALOG_STYLE_LIST, "{FF0000}Jogadores Socios", str, "OK", "");
 return 1;
}

stock GetPlayerNameEx(playerid)
{
 static pNome[MAX_PLAYER_NAME];
 GetPlayerName(playerid, pNome, MAX_PLAYER_NAME);
 return pNome;
}



INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))
INCLUDES QUE NECESSITA 2: Não encontrei

Tamo junto meus fi <3

AmorimmFOV

Como criar um comando de AJUDA - Sex 3 Mar 2023 - 19:35

Olá senhores, sistema de AJUDA em dialog.

no inicio da gamemode em baixo de #include a_samp digite #include zcmd


Código:
CMD:ajuda(playerid)


{


new string[1000], mercada[100];





format(mercada, sizeof(mercada), "{FF0000}1. {FFFFFF}/teste1, /teste2, /teste3, /teste4\n");


strcat(string, mercada);


format(mercada, sizeof(mercada), "{FF0000}2. {FFFFFF}/teste5, /teste6, /teste7, /teste8\\n");


strcat(string, mercada);


        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "{FF0000}AJUDA", string, "Localizar", "Cancelar");


return 1;


}




caso queira adicionar mais locais copie é cole a format é a strcat (Você estara adicionando a aba no comando).

INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))

Tamo junto meus fi <3

AmorimmFOV

Como criar um GPS - Sex 3 Mar 2023 - 19:26

Olá senhores, sistema de gps em dialog.

no inicio da gamemode em baixo de #include a_samp digite #include zcmd


Código:
CMD:gps(playerid)


{


new string[1000], mercada[100];








strcat(string, "Localidade\tCidade\n");


format(mercada, sizeof(mercada), "{FF0000}1. {FFFFFF}Academia\t{00FF00}Los-Santos\n");


strcat(string, mercada);


format(mercada, sizeof(mercada), "{FF0000}2. {FFFFFF}Pizzaria\t{00FF00}Los-Santos\n");


strcat(string, mercada);


        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}GPS", string, "Localizar", "Cancelar");


return 1;


}





caso queira adicionar mais locais copie é cole a format é a strcat (Você estara adicionando a aba no comando).



Código:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])





{


if(dialogid == 1)


{


if(response)


{


if(listitem == 0)


{


SetPlayerCheckpoint(playerid, 2226.9084,-1722.6958,13.5546, 5.0);


}


if(listitem == 1)


{


SetPlayerCheckpoint(playerid, 2102.3413,-1806.2373,13.5547, 5.0);


}


                }


        }


}





aqui você está dando a função para a aba, copie o if(listitem até o } exemplo:


Código:
if(listitem == 2) //Terceira Aba


{


SetPlayerCheckpoint(playerid, 2102.3413,-1806.2373,13.5547, 5.0);


}





SetPlayerCheckpoint(playerid, 2102.3413,-1806.2373,13.5547, 5.0); é basicamente o checkpoint que irá aparecer caso queira trocar a localização dele coloque as posições na frente do "playerid, " é 3 posições.




Código:
public OnPlayerEnterCheckpoint(playerid)


{





        DisablePlayerCheckpoint(playerid);


        return 1;


}





"OnPlayerEnterCheckpoint(playerid)" é oque irá acontecer quando o jogador entrar dentro do checkpoint é o "DisablePlayerCheckpoint(playerid)" desativa o checkpoint então ai está programado para quando o jogador entrar no checkpoint ele desaparecer.

INCLUDES QUE NECESSITA: ZCMD ([INC] zcmd 0.3.1 | Fast & simples processador de comandos (atualizado 30/10/2009) (forumeiros.com))

Tamo junto meus fi <3

sistema de adimistraçao VERSÃO 1.6 - Seg 27 Dez 2021 - 19:04

ola galerinha stremmer  na area dessa vez vim trazer pra vcs sistema de adm  simples mais vai ajudar muito vai de adm 1 ao 5 com sistema de /logaradm



oque tem nesse filterscripts  vamos la
   


Adicionado funções na public OnPlayerClickPlayer:
    Kick
    Ban
Advertir
Particular
Ir
Trazer
Status
Sistema de admin secreto:
Vá até a linha 180 e altere oque está entre aspas para uma senha secreta.
In game use o comando /logar  para ser admin secretamente,
ninguem verá seu nome no /admins porem você terá todos os comandos do FS.
Para ser admin normal use /admnormal
Pequeno sistema de duvida:
    Players usam /duvida  e uma mensagem é enviada para todos os Helpers online
    Eles podem responder usando /responder  
Corrigido pequeno bug do /admins
Comando /kicksecreto
Comando /bansecreto
Comando /ips otimizado
Comando /id (mostra o id de um player atraves do nome digitado)
Comandd /posplayer (mostra a posição de um player)
Comando /criaricone (cria um icone no mapa de todos os players)
Comando /destruiricone (oposto do comando /criaricone)
Comando /versao         (mostra a versão do samp de um player)
Comando /blindar        (coloca o carro de um player em god mode)
Comando /desblindar     (oposto do comando /blindar)
Comando /setarVW        (seta o Virtual World de um player)
Comando /console        (imprime informações no console do server)


VERSÃO 1.6
Resolvido problema de não salvar tags


VERSÃO 1.5
- Nova interface de Registro e Login.
- Novo sistema de gravação de Admin, Helper e VIP. Chega de bugs.
- Função adicionada para não dar conflito com seu GM no sistema de registro.
- Anti-Divulguer.
- Anti-Bot.
- Anti-Weapon Hack.
- Anti-High Ping.
- Agora temos HQ de admin (opcional).
  °Portão movel (/portaoadm)
  °Varios objetos.
  °Carros exclusivos para admin
- OnPlayerDisconnect otimizado.
- Em vez de usar os comandos /jogar e /trabalhar, use apenas /servico. Os comandos
  /jogar e /trabalhar não foram excluidos, eles ainda funcionam normalmente.
- SSCANF adicionado no FS. Chega de conflitos.
- Corrigido bug de morrer e perder admin.
- Sistema de Disfarce:
  °/disfarce faz com que o Admin mude sua skin, seu nome e sua cor para ficar igual a do player
  que está sendo usado.
  °/sairdisfarce para voltar as caracteristicas originais.
- Novo sistema de Logs .
- Novo sistema de prints.
- /Relatorios agora são gravados em log.
- Adicionado Sistema de Helpers:
  °/darhelper
  °/tirarhelper
  °/helpers
  °todos os comandos de helper em /la
- Adicionado Sistema de Vips (opcional):
  °/ajudavip
  °/darvip
  °/tirarvip
  °/v
  °/kitvip
  °/vips
  °/cc
  °/relatorio diferenciado
- Sistema de mensagens randomicas:
  °Adminis level 3+ podem ativa-las com /ativarmsgs ou /desativarmsgs.
- Sistema de Enquetes:
  °Admins level 3+ podem usar /enquete para criar uma enquete.
  °Players usam /sim ou /nao. A enquete se encerra automaticamente em 30 segundos.
- Adicionado comando /particular (todos os niveis de admin ou helper).
- Sistema de musica ao conectar:
  °Admins level 4+ podem usar o comando /musicainicial para escolher uma musica para o player ouvir quando
  se conectar ao servidor.
- Sistema de Foder um Jogador:
  °Admins nivel 4+ poderam usar o comando /foderplayer.
  °O Player fodido irá para o carandiru, ficará congelado, ficará mudo, e será forçado a ouvir uma musica do Restart kkkk.
  °Para desfode-lo vá até o arquivo Fodidos.txt e apague o IP dele da lista.
- Sistema de AFK:
  °/afk
  °/sairafk
  °o /admins e /helpers mostra quem está online e quem está AFK.
- Adicionado comando /mudarsenha (qualquer jogador).
- Adicionado comando /players (todos os niveis de admin ou helper). Mostra a quantidade de players online.
- Adicionado comando /limparchat (admin nivel 1+).                              Limpa o chat para todos os players.
- Adicionado comando /tempo (admin nivel 2+).                                   Seta o tempo para Manha/Tarde/Noite.
- Adicionado comando /dargrana (admin nivel 2+).                                Da grana a algum player.
- Adicionado comando /jetpack (admin nivel 2+).                                 Da um Jetpack para alguem.
- Adicionado comando /trazertodos (admin nivel 2+).                             Traz todos os jogadores até você.
- Adicionado comando /moverplayer (admin nivel 2+).                             Move um player até outro.
- Adicionado comando /resetargrana (admin nivel 3+).                            Reseta a grana de um jogador.
- Adicionado comando /setargrana (admin nivel 3+).                              Seta a grana de um jogador.
- Adicionado comando /resetar (admin nivel 4+).                                 Reseta Absolutamente todos os dados da conta de um player.
- Adicionado comando /versenha (admin nivel 5).                                 Mostra a senha de um jogador para o admin.
- Adicionado comando /setaradmin (admin nivel 5).                               Seta o admin de um player, independente de ele aceitar ou não
- Adicionado comando /trancarserver (admin nivel 5).                            Tranca o server com uma senha.
- Adicionado comando /destrancarserver (admin nivel 5).                         Destranca o server.
- Adicionado comando /seradmin (admin RCON).                                    Vira admin nivel 5.


-       ORDEM DE PRINT      -


Pasta Logs;
Pasta Banidos;
Pasta Banidos/Contas;
Pasta Admins;
Arquivo Fodidos.txt;
Arquivo Admins.adm;
Arquivo Helpers.hel;
Arquivo Vips.vip;
Pasta Contas;


Se seu samp-server abrir e fechar rapido, abra o server_log e veja qual foi a ultima pasta verificada.
a pasta depois dela, seguindo a ordem de cima, é a que está faltando.


*/


/*          INCLUDES        */
#include a_samp
#include zcmd

#include dof2


imagens  do sistemas abaixo 

https://i.servimg.com/u/f83/20/39/49/57/aaa10.png

https://i.servimg.com/u/f83/20/39/49/57/ewer10.png

https://i.servimg.com/u/f83/20/39/49/57/sasas10.png


https://i.servimg.com/u/f83/20/39/49/57/ss10.png



https://i.servimg.com/u/f83/20/39/49/57/rt4trt10.png



https://i.servimg.com/u/f83/20/39/49/57/fbfbfb10.png





link do filterscripts: https://www.mediafire.com/file/swmiigwdb336yf6/ssgamers.zip/file


BY; STREMMER

AS PASTA ESTA JA DENTRO DO ARQUIVO DE DOWNlOAD


FAVOR MATER OS CREDITOS  AMX E PAWNO VAI JUNTO 

Weslley_Script

[Tutorial] »  Como utilizar o zcmd - Qui 26 Ago 2021 - 17:03

Atenção: Este tópico é direcionado ao pessoal iniciante, por favor se quiser que eu implemente mais alguma coisa no mesmo comente.

[size=32]Introdução[/size]

Olá se você veio a este tópico é porque quer aprender a utilizar zCMD, ou porque quer aprimorar seus conhecimentos entre outros... bom vou colocar aqui um breve resumo do que ira ter neste tópico:

[size=24]1: [/size]Baixando o zCMD.
[size=24]2: [/size]Colocando ele na sua IDE pawno.
[size=24]3: [/size]Incluindo o zCMD no pawn.
[size=24]4: [/size]Como utilizar.
[size=24]5: [/size]Como usar if-else.
[size=24]6: [/size]Mini sistema de pegar dinheiro.

[size=32]Mas o que é zCMD ?[/size]

zCMD é uma include muito utilizada ("pelo menos por min", "Existem outras porém na minha opinão essa é a mais fácil!") pelo pessoal que gosta de criar comandos com mais facilidade como por exemplo /jetpack /dinheiro /godcar /voar entre outros... Isso mesmo com o zCMD você pode criar isso e muito mais ! 

[size=32]Baixando o zCMD[/size]

Clique no link abaixo e será redirecionado para baixar o zCMD:

[size=18]Baixar zCMD[/size]


Tópicos com a tag include em SSGamers - 12 Anos online por você. Dvlkm4

[size=32]Colocando ele na sua IDE pawno:[/size]

Após baixar vai vim um arquivo igual este:

Tópicos com a tag include em SSGamers - 12 Anos online por você. Y91KI5

Recorte ele e vá em sua pasta do servidor entre na pasta pawno entre na pasta include cole ele la.

[size=32]Incluindo o zCMD no pawn:[/size]

Bom se você seguiu todos os passos certinho então já está pronto para começar a programar, certo ?! Não ainda não meu caro gafanhoto (kkk). Siga as instruções abaixo:

[size=18]*[/size]Entre na sua IDE pawno.
*Após ter entrado na primeira linha do gamemode/filterscript após #include  
digite: #include  

Se seguiu corretamente ficara assim:

Tópicos com a tag include em SSGamers - 12 Anos online por você. 1ExrDR

[size=32]Como utilizar:[/size]

Bom existem varias maneiras e regras de utiliza-lo mas não se assuste ! Eu vou ensina-lo da maneira mais fácil
então após ter adicionado a include zCMD no seu gamemode arraste até a ultima linha dele e abra mais 2 linhas entendeu ? Bem fácil até aqui néh ! Bom agora vamos começar a tão sonhada parte Tópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin sem mais enrrolação comece com:

Código:

Código:

Código:
CMD:nomedocomando(playerid)
{
     SendClientMessage(playerid, -1, "Olá");
     return 1;
}


Agora vamos a explicação:

(CMD: ) É o que chama o zCMD ou seja faz com que o codigo seja lido como um comando sem ele ira dar erro.

(nomedocomando) É o nome do seu comando pode colocar qualquer nome ai como godcar jetpack etc...

(" () ") É o que usamos para definir a variavel que iremos usar como vemos abaixo. Sem ele da erro...

(playerid) É uma variavel que adicionamos que puxara o player que digitou o comando.

( { ) Usado para definir o local onde o console ira executar o comando, em outras palavras ira executar tudo dentro das chaves.

(SendClientMessage) É uma função usada para exibir uma mensagem no chat do jogador.
(SendClientMessage(playerid)) Verifica qual player digitou o comando para enviar a mensagem apenas a ele.
(SendClientMessage(playerid, -1)) -1 é a cor da mensagem no caso branco.
(SendClientMessage(playerid, -1, "Olá") "Olá" é o texto(string) que ira aparecer no chat do jogador pode ser qualquer coisa!

É importante lembrar que sempre depois de playerid usamos virgula e sempre depois da cor usamos virgula e sempre que formos digita um texto é obrigatorio utilizar "Aqui o texto" e o texto dentro deles.

Agora retornamos o valor como true ou seja (return 1; )

OBS: Sempre no final de funções como SendClientMessage() usar ; no final! como o exemplo:

SendClientMessage(playerid, -1, "Eu uso ; no final do codigo haha");

e terminamos o codigo com } 

[size=32]Como utilizar o if-else.[/size]

Bom chegamos aqui e iremos aprender a usar o famoso (if e else) ou então (se e caso contrario).

Bom aqui temos um exemplo não muito complexo de como utilizar if e else: 

Código:
Código:
new verificarSeJaUsouComando = 0;

CMD:pular(playerid)
{
    
    if(verificarSeJaUsouComando == 0)
    {

        SendClientMessage(playerid, -1, "JUMPPPP!");
        verificarSeJaUsouComando = 1;

            return 1;
    
    }
    else
    {
        SendClientMessage(playerid, -1, "Você já pulou e esta muito cansado!");

                return 1;
    }

}



Mas o que esse codigo faz bartolomeu ? Bom vamos lá:

1: Quando o player digitar /pular ele ira verificar se ele ja usou o comando.
2: Se ele já usou o comando ira mandar a mensagem "Você já pulou e esta muito cansado!"
3: Caso ele não tenha usado o comando ainda ele ira mandar a mensagem "JUMPPPP!" e ira colocar 1 na variavel verificar.

Veja nas fotos:

Caso não tenha usado o comando ainda:

Tópicos com a tag include em SSGamers - 12 Anos online por você. SHTyYK

Caso já tenha usado o comando:

Tópicos com a tag include em SSGamers - 12 Anos online por você. NTWd6X

Agora vamos para a explicação:

(new verificarSeJaUsouComando = 0; ) É uma variavel que criamos.

Variaveis ficam geralmente abaixo das #include ! Como na foto abaixo:

Tópicos com a tag include em SSGamers - 12 Anos online por você. Cm3RnK

Então deixe ele no mesmo lugar em que eu deixei no exemplo. (Em baixo das includes)

OBS: Nem toda variavel é usada assim, mas ai é outro assunto.

Para criarmos uma variavel usamos (new) e em seguida o nome dela e usamos o sinal de = e o valor. como por exemplo:

new CoxinhaFrita = 0; e se lê new CoxinhaFrita recebe zero.

Agora la no final das linhas agente cria o comando lembram ? 


Código:
Código:
CMD:pular(playerid)
{


E vamos verificar se o nosso querido amigo já utilizou o comando.

Código:
Código:
CMD:pular(playerid)
{

      if(verificarSeJaUsouComando == 0)
      {

        SendClientMessage(playerid, -1, "JUMPPPP!");
        verificarSeJaUsouComando = 1;
           
            return 1;
    
      }



O "if" se lê "se" ou seja:

se(verificarSeJaUsouComando == 0) 

o que acontece aqui traduzindo bem para o português agente verifica se a variavel que criamos no inicio do codigo tem o valor 0 ou == 0.

Caso isso for verdadeiro então iremos executar o comando abaixo que é a mensagem.

SendClientMessage(playerid, -1, "JUMPPPP!"); Aqui agente manda a mensagem "Jumppp".
    verificarSeJaUsouComando = 1; E aqui agente troca o valor da variavel para 1.

e retornamos o valor verdadeiro com "return 1; "

Agora caso o valor seja 1 ou maior que 1 iremos fazer o seguinte para verificar:


Código:
Código:
else
    {
        SendClientMessage(playerid, -1, "Você já pulou e esta muito cansado!");
                return 1;

    }



O "else" pode ser lido "caso contrario" ou seja caso verificarSeJaUsouComando não for igual a 0 então o que esta dentro das chaves ira acontecer.

Acho que vocês já entenderam o que vai acontecer caso verificar não seja == 0.

O codigo do comando devera ficar assim:


Código:
Código:
new verificarSeJausouComando = 0;

CMD:pular(playerid)
{
    
    if(verificarSeJaUsouComando == 0)
    {

        SendClientMessage(playerid, -1, "JUMPPPP!");
        verificarSeJaUsouComando = 1;
    
    }
    else(verificarSeJaUsouComando == 1)
    {
        SendClientMessage(playerid, -1, "Você já pulou e esta muito cansado!");
    }

}


O codigo já esta funcionando entre no seu jogo e digite /pular para ver Tópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin 

[size=32]Mini sistema de pegar dinheiro.[/size]

Agora eu irei criar um mini sistema de pegar dinheiro. Mas lembre-se não adianta nada você só olhar o tutorial e não colocar em pratica menino ! Então vai la colocar em pratica e depois volta aqui afinal se você quiser aprender a andar de skate e olhar 100 video aulas de tutorial de skate sem praticar, no final você aprendeu a andar de skate ?

O sistema é este:


Código:
Código:
CMD:pegarDinheiro(playerid)
{
    
    if(verificarSeJaUsouComando == 0)
    {

        SendClientMessage(playerid, -1, "Você pegou o seu dinheiro!");
        GivePlayerMoney(playerid, 10000); //Comando para dar dinheiro ao player.
            verificarSeJaUsouComando = 1;
               
                return 1;
    
    }
    else
    {
        SendClientMessage(playerid, -1, "Você já pegou o seu dinheiro !");
                return 1;
    }

}

Tópicos com a tag include em SSGamers - 12 Anos online por você. Lightbulb Seja o seu melhor !
Tópicos com a tag include em SSGamers - 12 Anos online por você. Exclamation Seja melhor que ontem !
Creditos: Caaet

[Tutorial] »  Programação modular simples (sem y_hooks) - Qui 26 Ago 2021 - 16:05

[size=32]Programação modular simples (sem y_hooks)[/size]

É fundamental que você saiba organizar seu ambiente de trabalho, o seu código não será diferente disto, para organizar algo grande, nada melhor do que dividi-lo em módulos específicos de cada categoria do que você fez, não?

Neste tutorial, irei ensinar um método simples, sem plugins e sem includes adicionais do fórum, para você criar módulos e facilmente gerencia-los.

- O primeiro de tudo é criar uma pasta para tais módulos, pode ser a sua escolha. Eu por exemplo separei sistemas específicos no código que eu trabalho em uma pasta chamada sys/.

Tópicos com a tag include em SSGamers - 12 Anos online por você. Q2kg54r

- Crie o arquivo .pwn ou em alguma extensão que não impeça a leitura dele. Particularmente eu utilizo a extensão .sys para essa pasta especifica que eu criei com meus sistemas.

- Abra o arquivo e comece a escrever os códigos, crie as funções que necessitar para o seu sistema.

- Se caso você precise que essa função esteja em uma public do sa-mp e essa public está declarada no main-code (arquivo principal do GM) você pode criar uma stock ou uma public dentro do modulo e chama-lo na public desejada.

Por exemplo, necessito que uma informação seja realizada quando o jogador entrar, a public que é chamada quando esse evento acontece é o OnPlayerConnect, ela já está declarada nativamente no meu main-code por que existe outros códigos dentro dela, eu irei criar uma stock com as funções que eu desejo nessa public. Irei declarar uma variável como negativa para esse evento como exemplo.
Código:
Código:
stock DrinkBuy_OnPlayerConnect(playerid)
{
    AlgumaVariavel[playerid] = false;
    return 1;
}


* Lembre-se que o tamanho do nome/titulo de qualquer stock, function, public ou variável não pode passar dos 32 caracteres.
* Para fins de organização, sempre tento criar a função com parte do mesmo nome da nativa, diferenciando apenas o nome/abreviação do nome do modulo que estou trabalhando.

Criei a stock no arquivo do modulo, agora irei até o main-code e irei chama-la na public nativa, que é o OnPlayerConnect(playerid) e coloca-lo na posição que eu julgar necessária e relevante.

Código:
Código:
public OnPlayerConnect(playerid)
{
    /*Suas funções e necessidades no OnPlayerConnect nativo do main-code*/
    DrinkBuy_OnPlayerConnect(playerid);
    return 1;
}


Posicionei a minha stock no final da public, ou seja, ela só será executada quando tudo antes dela for executado.

- Em casos de comandos, você pode fazer o mesmo com o OnPlayerText, se for ZCMD ou qualquer outro processador de comandos, você pode cria-lo normalmente no modulo que ele funcionará normalmente.

- Em casos de variáveis que tenham a criação no main-code e você precise de novas no modulo, crie elas diretamente no main-code para chama-las no modulo.

- Para chamar o seu arquivo ao main-code você deve declarar fora de qualquer função uma #include, por exemplo:
Código:
Código:
#include "diretórios/drinkbuy.sys"


  • O que estiver dentro do " " deverá ser o caminho a partir do main-code até o arquivo do modulo, no meu caso o meu modulo está localizado numa pasta chamada sys/ e o nome do arquivo é drinkbuy.sys, logo ficando sys/drinkbuy.sys o caminho até o arquivo.

Creditos: willttoonn

MicaelaMedeiros

[Ajuda] » Alguém teria esse sistema - Sáb 16 Jan 2021 - 23:38

LeleziN.dG escreveu:Bom pessoal, venho em meio desse tópico pedir um ajuda ou no caso quem tiver um sistema desse ou parecido que possa mim passa fico muito agradecido, pois já procurei muito e não obtive respostas.

Sistema de Plantação e Colheita:
https://www.youtube.com/watch?v=tH7ds3oaxIY


Ficaria muito agradecido se alguém pode-se mim passa esse sistema


Aqui está...
Espero ter ajudado.



********************************************************************************
*/


#include a_samp
#include zcmd
#include sscanf2
#include streamer
#include DOF2

#define AVISOPLANTIO 1
#define SLOTMACONHA 2
#define NOCARROMAC 3
#define NUMEROSEMENTES 4

new PlantandoMaconha;

new TemMaconha[MAX_PLAYERS],
QuantiaMaconha[MAX_PLAYERS]
;

new MaconhaQuase[7], // Objetos Mac. Quase pro plantio
MaconhaProntaP[5]  // Objetos Mac. pronto pro plantio
;

new ObjEnt[3];

new Check01,
Check02
;

new EuPlantei[MAX_PLAYERS],
MaconhaColhida[MAX_PLAYERS];

new ObjCar[4];

new MaconhaProntita[MAX_PLAYERS];

new TimerQueimarMac[MAX_PLAYERS];

new Cars[3];

forward CriarMaconha();
forward MaconhaPronta(playerid);
forward QueimarMaconha(playerid);
forward TirarBarris();

enum DP{
Maconha,
SementesMac,
Colheu
}; new DadosP[MAX_PLAYERS][DP];

public OnPlayerConnect(playerid){
    Create3DTextLabel("{87CEFA}Slot de Plantio!\n{FFD700}Semente Permitida: Maconha", 0x008080FF, -1178.6414,-1091.6329,129.2188, 15.0, 0, 0);

    Check01 = CreateDynamicCP(-1178.6414,-1091.6329,129.2188, 0.8, -1, -1, -1, 100.0);

new Var_[128], Plantador[MAX_PLAYER_NAME];

    GetPlayerName(playerid, Plantador, sizeof(Plantador));

format(Var_, sizeof(Var_), "Plantadores/%s.ini", Plantador);

    if(!DOF2_FileExists(Var_)){
        DOF2_CreateFile(Var_);

DOF2_SetString(Var_, "Nome", Plantador);

DOF2_SetInt(Var_, "Maconha", 0);
DOF2_SetInt(Var_, "Sementes Mac", 0);
DOF2_SetInt(Var_, "Colheu", 0);

        DOF2_SaveFile();

        printf("| AUTO-CONTROLE | O(A) jogador(a) %s criou seu registro de plantador!", Plantador);
    } else {
DadosP[playerid][Maconha] = DOF2_GetInt(Var_, "Maconha");
DadosP[playerid][SementesMac] = DOF2_GetInt(Var_, "Sementes Mac");
DadosP[playerid][Colheu] = DOF2_GetInt(Var_, "Colheu");
    }


return 1;
}

CMD:grana(playerid){
GivePlayerMoney(playerid, 999999);
return 1;
}

public OnFilterScriptInit(){

Cars[0] = AddStaticVehicle(478,-1175.2751,-1140.0001,129.2157,354.1185,66,1); // car01carregado
Cars[1] = AddStaticVehicle(478,-1171.0756,-1139.9646,129.2197,358.5255,59,1); // car02carregado
return 1;
}

CMD:plantar(playerid){
ShowPlayerDialog(playerid, AVISOPLANTIO, DIALOG_STYLE_MSGBOX, "{BEBEBE}Slot de Plantio!", "{FA8072}S.A Plantadora\n\n{BEBEBE}Cada Slot destinado á plantio é separado por grupos, certifique-se você está no Slot certo com as sementes corretas!\n\nSó será possível plantar neste Slot com as sementes corretas.\n\n{1E90FF}Deseja Processeguir?", "Sim", "Não");
return 1;
}

public QueimarMaconha(playerid){
    SendClientMessage(playerid, -1, "");
    SendClientMessage(playerid, -1, "{BEBEBE}| SLOT | A Maconha que você plantou foi queimada devido á demora na colheita!");
    SendClientMessage(playerid, -1, "{BEBEBE}| SLOT | Você não será reembolsado por essa ação indevida.");

    PlantandoMaconha = 0;

DestroyObject(MaconhaProntaP[0]);
DestroyObject(MaconhaProntaP[1]);
DestroyObject(MaconhaProntaP[2]);
DestroyObject(MaconhaProntaP[3]);
DestroyObject(MaconhaProntaP[4]);
return 1;
}

public MaconhaPronta(playerid){
    SendClientMessage(playerid, -1, "");
SendClientMessage(playerid, -1, "{BEBEBE}| SLOT | A Maconha que você plantou está pronta para colheita! ");
SendClientMessage(playerid, -1, "{BEBEBE}| SLOT | Você terá 1 Minuto para colhe-la antes que ela será queimada!");

TimerQueimarMac[playerid] = SetTimerEx("QueimarMaconha", 25000, false, "i", playerid);

MaconhaProntita[playerid] = 1;

MaconhaProntaP[0] = CreateObject(823, -1170.09998, -1095, 128.7, 0, 22, 0);
MaconhaProntaP[1] = CreateObject(823, -1175.09998, -1095.59998, 128.7, 0, 21.995, 0);
MaconhaProntaP[2] = CreateObject(823, -1179.09998, -1095.59998, 128.7, 0, 21.995, 0);
MaconhaProntaP[3] = CreateObject(823, -1182.40002, -1095.5, 128.7, 0, 21.995, 0);
MaconhaProntaP[4] = CreateObject(823, -1186.90002, -1095.80005, 128.7, 0, 21.995, 0);

DestroyObject(MaconhaQuase[0]);
DestroyObject(MaconhaQuase[1]);
DestroyObject(MaconhaQuase[2]);
DestroyObject(MaconhaQuase[3]);
DestroyObject(MaconhaQuase[4]);
DestroyObject(MaconhaQuase[5]);
DestroyObject(MaconhaQuase[6]);
return 1;
}

CMD:colher(playerid){
if(PlantandoMaconha == 1){
if(EuPlantei[playerid] == 1){
    if(MaconhaProntita[playerid] == 1){
        if(IsPlayerInRangeOfPoint(playerid, 2.0, -1177.7119,-1093.1257,129.2188)){
    PlantandoMaconha = 0;
    EuPlantei[playerid] = 0;
    MaconhaProntita[playerid] = 0;

    SendClientMessage(playerid, -1, "| INFO | Você colheu a maconha com sucesso, vá vende-la no ponto indicado no seu mini-mapa com o carro carregado!");

        MaconhaColhida[playerid] = 1;

DestroyObject(MaconhaProntaP[0]);
DestroyObject(MaconhaProntaP[1]);
DestroyObject(MaconhaProntaP[2]);
DestroyObject(MaconhaProntaP[3]);
DestroyObject(MaconhaProntaP[4]);

KillTimer(TimerQueimarMac[playerid]);

                ObjCar[0] = CreateObject(1217,0,0,-1000,0,0,0,100);
                ObjCar[1] = CreateObject(1217,0,0,-1000,0,0,0,100);
                ObjCar[2] = CreateObject(1217,0,0,-1000,0,0,0,100);
                ObjCar[3] = CreateObject(1217,0,0,-1000,0,0,0,100);

                Cars[2] = AddStaticVehicle(478,-1166.4277,-1139.5294,129.2089,1.9437,45,1); // car03carregado

AttachObjectToVehicle(ObjCar[0], Cars[2], 0.539999,-2.025000,0.000000,0.000000,0.000000,0.000000);
AttachObjectToVehicle(ObjCar[1], Cars[2], -0.360000,-2.025000,0.000000,0.000000,0.000000,0.000000);
AttachObjectToVehicle(ObjCar[2], Cars[2], -0.360000,-2.025000,0.000000,0.000000,0.000000,0.000000);
AttachObjectToVehicle(ObjCar[3], Cars[2], -0.360000,-0.899999,0.000000,0.000000,0.000000,0.000000);

PutPlayerInVehicle(playerid, Cars[2], 0);

ShowPlayerDialog(playerid, NOCARROMAC, DIALOG_STYLE_MSGBOX, "{BEBEBE}Entregar Maconha", "{FA8072}S.A Plantadora!\n\n{BEBEBE}Os galões na traseira do carro estão carregados com a maconha colhida por você.\n\nEssa medida foi tomada como disfarce para os policiais que rondam essa região de plantio ilegal.\n\n{1E90FF}Siga o Checkpoint no seu mapa para entregar a maconha e receber dinheiro por elas.", "Fechar", "");

                    DestroyDynamicCP(Check01);
                    Check02 = SetPlayerCheckpoint(playerid, -1652.2321,-2541.3550,16.1046, 0.Cool;
                    Create3DTextLabel("{87CEFA}Local de Entrega!\n{FFD700}Digite /entregar", 0x008080FF, -1652.2321,-2541.3550,16.1046, 15.0, 0, 0);

} else return SendClientMessage(playerid, -1, "| SLOT | Você deve estar próximo ao Slot para colher!");
    } else return SendClientMessage(playerid, -1, "| SLOT | A Maconha não está pronta para ser colhida agora!");
} else return SendClientMessage(playerid, -1, "| SLOT | Você não plantou essas sementes, por isso não pode colhe-las!");
} else return SendClientMessage(playerid, -1, "| SLOT | Não há nenhuma semente de maconha plantada no Slot!");
return 1;
}

CMD:comprarsementes(playerid){
ShowPlayerDialog(playerid, NUMEROSEMENTES, DIALOG_STYLE_INPUT, "Comprar Sementes", "S.A Plantadora!\n\nDigite abaixo o número de pacotes que deseja comprar de sementes de maconha.\n\nUm pacote possui 30 sementes, sendo necessário ás 60 sementes para o um plantio!", "Comprar", "Cancelar");
return 1;
}

public TirarBarris(){

DestroyObject(ObjEnt[0]);
DestroyObject(ObjEnt[1]);
DestroyObject(ObjEnt[2]);
return 1;
}

CMD:entregar(playerid){
if(IsPlayerInRangeOfPoint(playerid, 30.0, -1652.2321,-2541.3550,16.1046)){
    if(MaconhaColhida[playerid] == 1){
        SendClientMessage(playerid, -1, "{BEBEBE}| FIM | Você entregou a mercadoria com sucesso! Uma pessoa irá vir pegar os barris carregados.");
        SendClientMessage(playerid, -1, "{BEBEBE}| FIM | Agora saia desde local sem chamar suspeitas");
        MaconhaColhida[playerid] = 0;

        DisablePlayerCheckpoint(Check02);
        Check01 = CreateDynamicCP(-1178.6414,-1091.6329,129.2188, 0.8, -1, -1, -1, 100.0);

ObjEnt[0] = CreateObject(1217, -1649.7056,-2542.2698,15.9823, 0,0,0,100);
ObjEnt[1] = CreateObject(1217, -1649.9158,-2543.3005,15.9432, 0,0,0,100);
ObjEnt[2] = CreateObject(1217, -1650.8456,-2543.3225,15.9723, 0,0,0,100);

            DestroyObject(ObjCar[0]);
DestroyObject(ObjCar[1]);
DestroyObject(ObjCar[2]);
DestroyObject(ObjCar[3]);

SetTimer("TirarBarris", 60000*3, false);

    } else return SendClientMessage(playerid, -1, "| ERRO | Você não colheu nada!");

} else return SendClientMessage(playerid, -1, "| ERRO | Você não está no local da entrega!");
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){

new Var_[128], Plantador[MAX_PLAYER_NAME];

    GetPlayerName(playerid, Plantador, sizeof(Plantador));

if(dialogid == NUMEROSEMENTES){
if(!response) return 1;

new _Var[150];

if(strval(inputtext) > GetPlayerMoney(playerid))
return SendClientMessage(playerid, -1, "| INFO | Você não possui dinheiro suficiente para comprar o número de pacotes solicitados!");

GivePlayerMoney(playerid, GetPlayerMoney(playerid) - strval(inputtext));

format(_Var, sizeof(_Var), "{BEBEBE}| INFO | Você comprou %d pacotes, totalizando %d sementes de maconha. Você poderá fazer %d plantações com as semente compradas!", strval(inputtext), strval(inputtext) * 30, strval(inputtext) * 30 / 60);
SendClientMessage(playerid, -1, _Var);

new VarMarota = strval(inputtext) * 30;

DOF2_SetInt(Var_, "Sementes Mac", DadosP[playerid][SementesMac] + VarMarota);
DOF2_SetInt(Var_, "Maconha", 1);
DOF2_SaveFile();

TemMaconha[playerid] = 1;
    QuantiaMaconha[playerid] = 60;

}
if(dialogid == AVISOPLANTIO){
    if(!response) return SendClientMessage(playerid, -1, "| INFO | Plantio neste Slot foi cancelado!");

if(IsPlayerInRangeOfPoint(playerid, 2.0, -1177.7119,-1093.1257,129.2188)){ // SLOT DE MACONHA!
    new _Var[300];
    format(_Var, sizeof(_Var), "{FA8072}S.A Plantadora!\n\n{BEBEBE}Este Slot é de uso único por vez e é válido apenas para sementes de maconha!\n\nSementes plantadas em slots errados seram perdidas e não darão resultados!\n\n{1E90FF}Deseja plantar suas sementes neste Slot?");
ShowPlayerDialog(playerid, SLOTMACONHA, DIALOG_STYLE_MSGBOX, "{BEBEBE}Slot - Maconha", _Var, "Sim", "Não");
} else SendClientMessage(playerid, -1, "| ERRO | Você não está em um Slot de plantio!");
}
if(dialogid == SLOTMACONHA){
    if(!response) return SendClientMessage(playerid, -1, "{BEBEBE}| INFO | Você cancelou o plantio neste slot!");

if(PlantandoMaconha == 0){
    if(TemMaconha[playerid] == 1) {
        if(QuantiaMaconha[playerid] >= 60){

            PlantandoMaconha = 1;
            EuPlantei[playerid] = 1;

            QuantiaMaconha[playerid] = DadosP[playerid][SementesMac] - 60;

            SendClientMessage(playerid, -1, "{BEBEBE}| SLOT | Você plantou suas sementes neste Slot, aguarde até elas estarem pronto para plantio!");
            SendClientMessage(playerid, -1, "{BEBEBE}| SLOT | Após a maconha estiver pronta para plantio, caso não seja colhida elas serão queimadas.");

//Maconha plantada.
MaconhaQuase[0] = CreateObject(811, -1169.40002, -1096.5, 129.39999, 0, 0, 0);
MaconhaQuase[1] = CreateObject(811, -1172.69995, -1096.40002, 129.39999, 0, 0, 0);
MaconhaQuase[2] = CreateObject(811, -1176.19995, -1096.59998, 129.39999, 0, 0, 0);
MaconhaQuase[3] = CreateObject(811, -1179.40002, -1096.19995, 129.39999, 0, 0, 0);
MaconhaQuase[4] = CreateObject(811, -1182.40002, -1096.40002, 129.39999, 0, 0, 0);
MaconhaQuase[5] = CreateObject(811, -1185.59998, -1096.59998, 129.39999, 0, 0, 0);
MaconhaQuase[6] = CreateObject(811, -1188.59998, -1096.80005, 129.39999, 0, 0, 0);

                    SetTimerEx("MaconhaPronta", 5000, false, "i", playerid);

            format(Var_, sizeof(Var_), "Plantadores/%s.ini", Plantador);

DOF2_SetInt(Var_, "Sementes Mac", QuantiaMaconha[playerid]);

DOF2_SaveFile();

} else return SendClientMessage(playerid, -1, "{BEBEBE}| INFO | Você não possui sementes suficientes para plantar neste Slot!");
} else return SendClientMessage(playerid, -1, "{BEBEBE}| INFO | Você não possui sementes para plantar neste Slot!");
} else return SendClientMessage(playerid, -1, "{BEBEBE}| INFO | Já existe sementes plantadas neste Slot, aguarde elas germinarem para plantar as suas.");

}
return 1;
}

Snow

GAMEMODE: gamemode de counter strike Revolution - Ter 8 Set 2020 - 20:48

Ola sou o [CSGO]Snow o Programador/CEO do Counter Strike Revolution essa e uma gm base que eu fiz do 0 sem nenhum sistema de pessoas apenas meu avisando:Gamemode ctz deve ter bug pois e do 0 entao vamos la

COMANDOS:/modobatalha ->> fica em modo batalha
/modobatalha2 ->> fica em modo batalha mas com uma skin de mulher
/ajuda ->> para ver os comandos mas detalhados
/serterrorista ->> voce vira um terrorista
/plantbomba ->> voce planta uma bomba e explode em 3 segundos
/cterrorista ->> voce vira contra terrorista
/creditos ->> voce ve os creditos do servidor obs: se retirar o nome [CSGO]snow de la sera apenas um servidor copia Shocked 
/atualizacao ->> para ver as atualizacao do servidor
/map1 ->> voce vai para o mapa do cs
/level ->> voce ganha 10 score
/snowscripter ->> altere no pawn pois se quiser esse cmd te da a skin do tempanny e uma minigun para ver os bugs do servidor
/dica ->> o /dica ele serv para dar uma dica ex: tem um cmd secreto no servidor que ninguem achou mas hoje sera revelado a voce ao olhar o pawn
/armainv ->> te seta as armas
/cantiu ->> voce bebe do cantiu e ganha + ou - em torno de 10k ou 20k n sei
/creatclan ->> O cmd n esta completo se quiser continuar e postar aq <3 mee kkk

Mapas: Nao cheguei a mappear pois o editor do mapa estava bugado para mim ent infelizmente n consegui

Arrow Arrow Arrow a fds eu sei que vc vai olhar o cmd secreto no pawn ent vou revelar aq o comando secreto e /secretoeokrl

o servidor n tem salvamento da DOF2 pois n tive tempo para colocar
tambem n tem tela de login tambem estava sem tempo

Includes
#include
#include
#include
#include
#include

Cores
#define COL_BOX 0x000000EE
#define COL_RED 0xFF0000FF
#define COR_CINZA_AZUL 0x456EAF67
#define COR_PRETO 0x00000000
#define COR_NAO_SEI 0xFFFFFFFF
#define COR_MAGENTA 0xA587DE0BA354
#define COR_VERDEMEDIO 0x9CDE7180
#define COR_VERMELHOCLARO 0xFF99AADD
#define COR_DARKMAGENTA 0xA7105DEF
#define COR_LARANJAVERMELHO 0xE9370DFC
#define COR_DARKVERDE 0x12900BBF
#define COR_AZULMEDIO 0x63AFF00A
#define COR_DARKROXO 0x800080AA
#define COR_MARROMCLARO 0x99934EFA
#define COR_VIOLETA 0x9955DEEE
#define COR_CIANOCLARO 0xAAFFCC33
#define COR_AZULVERDECLARO 0x0FFDD349
#define COR_OURO 0xDEAD4370
#define COR_AZULCINZA 0x456EAF67
#define COR_AZULVERDE 0x46BBAA00
#define COR_AZULNEUTRO 0xABCDEF01
#define COR_AZUL 0x0000FFAA
#define COR_CINZA 0xAFAFAFAA
#define COR_VERDE 0x33AA33AA
#define COR_VERMELHO2 0xAA3333AA
#define COR_AMARELO 0xFFFF00AA
#define COR_BRANCO 0xFFFFFFAA
#define COR_ROXO 0x9900FFAA
#define COR_MARROM 0x993300AA
#define COR_LARANJA 0xFF9933AA
#define COR_CIANO 0x99FFFFAA
#define COR_AMARELOCLARO 0xFFFFCCAA
#define COR_ROSA 0xFF66FFAA
#define COR_BEJE 0x999900AA
#define COR_LIMA 0x99FF00AA
#define COR_PRETO2 0x000000AA
#define COR_TURCA 0x00A3C0AA
#define COR_AZULCLARO 0x33CCFFAA
#define COR_GRADE1 0xB4B5B7FF
#define COR_GRADE2 0xBFC0C2FF
#define COR_GRADE3 0xCBCCCEFF
#define COR_GRADE4 0xD8D8D8FF
#define COR_GRADE5 0xE3E3E3FF
#define COR_GRADE6 0xF0F0F0FF
#define COR_VERDECLARO 0x9ACD32AA
#define COR_AMARELO2 0xF5DEB3AA
#define COR_FADA1 0xE6E6E6E6
#define COR_FADA2 0xC8C8C8C8
#define COR_FADA3 0xAAAAAAAA
#define COR_FADA4 0x8C8C8C8C
#define COR_FADA5 0x6E6E6E6E
#define COR_DARKAZUL 0x2641FEAA
#define COR_DEPARTE 0xFF8282AA
#define COR_NOVA 0xFFA500AA
#define COR_OPACO 0xE0FFFFAA
#define COR_ADICIONAL 0x63FF60AA
#define COR_SPIAO 0xBFC0C200
#define COR_INVISIVEL 0xAFAFAF00
#define COLOR_REDD 0xFF0000AA
#define BRANCO 0xFFFFFFAA

Obrigado a todos santa

Esqueci o dowload kkkkk:http://www.mediafire.com/file/x2mle5icm530jcs/GM+BPI.rar/file

shandai

Sistema de Renomear a Placa do Veiculo - Sex 5 Jun 2020 - 9:06

Eai Pessoal aqui o Shandai Gawa (Digao) Hoje vo upar um sistema de renomear  a placa de traz do carro, voce pode colocar números letras  que nem  na vida real 
ou pode simular 


Como Funciona : Após voce dar o comando (placav) voce escrevera  oque voce quer após disso aparecera  uma opção
para colocar a cor que voce deseja  !!

Includes Necessárias
#include


Link: https://mega.nz/file/MVwgSCAL#usrf0XyJuXXxERJvmfrtfkpvZOT_uAysbRab2HFXlak

shandai

Proteção Contra Ataque e Contra Boot - Sex 5 Jun 2020 - 8:51

Eai Pessoal To trazendo  uma proteção contra ataque e contra Boot

Includes  Necessárias


#include a_samp


Link: https://mega.nz/file/pUIgyYLZ#TuEXQIehdz-XE8bZbE3ZtvFkbbTVYH0v1gJDPEMxHfg

shandai

FS Fogos de Artificio - Sex 5 Jun 2020 - 8:43

Ola eu Shandai Gawa (Digao), venho trazer um sistema de fogos legal pra voceis !!

O Sistema de Fogos vem completo  colocar  no chão  e acender 

Obs: se tu manja no texdraw da para por o objeto de rojao  pra ficar mais realista ainda !!

Includes  Necessárias


#include a_samp
#include zcmd
#include sscanf2


Comandos !!
CMD:colocarfogos

CMD:acenderfogos

CMD:tempofogos

Link: https://mega.nz/file/FYJiRQxY#nQjPPTBTrKk2Yzsh_YtopmVYUBcQghyrxgIw4XvtG3M

JoaoSoares

Sistema de mochila ativar/desativar. - Ter 31 Jul 2018 - 17:24

Oi galera ;-; 

tava sem nd para fazer e decidi partilhar um codigo interresante!


Codigo

Código:
CMD:ativarmochila(playerid)
{
   SetPlayerAttachedObject(playerid, 1, 3026, 1, -0.16, -0.08, 0.0, 0.5, 0.5, 0.0);
   SendClientMessage(playerid, 0x058AFFFF, " Você colocou sua mochila nas costas.");
    return 1;
}

CMD:desativarmochila(playerid)
{
   RemovePlayerAttachedObject(playerid, 1);
   SendClientMessage(playerid, 0xFFFFFFFF, " Sua mochila foi guardada ");
   return 1;
}



Include > ZCMD.


Download da include ZCMD > https://www.sendspace.com/file/0rze5j


Para instalar a include, abra sua gm e coloque #Include zcmd

Não sabe onde colocar o zcmd?

PastaGamemode/pawno/include é so jogar la dentro.

Espero ter ajudado ! abraços

Rowan

[TUTURIAL]como fazer um servidor em dois idiomas - Seg 8 Jan 2018 - 9:23

Bom galera venho trazer aqui meu primeiro tutorial, bem simples porém pode ser de grande utilidade a muitos.
Antes de tudo já aviso que a forma que irei fazer é a forma que aprendi e que acho mais simples.

Explicação

O sistema funcionará da seguinte forma , quando o jogador entrar no servidor irá aparecer um Dialog para que ele escolha a linguagem, a escolha do jogador será armazenada em uma variável global, essa variável não será adicionada na conta do jogador como o score,dinheiro , ou seja, suponhamos que Jogador1 entrou no servidor fez o login e spawnou, nesse momento o Jogador1 escolhe a linguagem que deseja e as configurações serão ajustadas de acordo com sua escolha até que ele deslogue. Quando o Jogador1 entrar no servidor novamente ele escolherá a linguagem que deseja novamente e as configurações que você deseja irão ser atribuídas para ele novamente.

Downloads

Caso queira seguir o tutorial todo e conseguir fazer tudo o que será feito aqui em baixo, baixe a include ZCMD.
Após fazer o download vá na pasta do seu servidor, abra a pasta Pawno e coloque o arquivo dentro da pasta Includes.

Iniciando

* Primeiro Passo : No topo do seu GM(Game-Mode) inclua as includes.
Code:
#include
#include
* Segundo Passo : Após incluir as includes devemos criar a variável Global que armazenará a Linguagem escolhida por cada jogador.
No topo do GM declare :
Code:
new pLinguagem[MAX_PLAYERS] = 0; //Criamos uma váriavel Global com o nome "pLinguagem" para armazenar a linguagem escolhida pelo jogador.
Explicação :
Code:
[MAX_PLAYERS] //Com essa função a variável será criada para cada player que conectar-se ao servidor.
Code:
= 0; //Definimos a variável de início para 0 onde para nós 0 significará NULA
0 = NULA (Sem Linguagem Selecionada)
1 = Inglês (Linguagem EN Selecionada)
2 = Português (Linguagem PT Selecionada)


* Terceiro Passo : Agora iremos definir a Dialog que será usada e a cor que será usada em um comando.
Ainda no topo do GM:
Code:
#define     DIALOG_LINGUAGEM        1
Code:
#define amarelo 0xFFFF00FF
Organize seu GM, não deixe tudo junto coloque cores juntas e separadas de Dialogs sempre adicionando comentários em seu GM se possível.

* Quarto Passo : Agora iremos criar a Dialog onde ao spawnar o player irá escolher a linguagem desejada.

Apertando (CTR + F) com o pawno aberto busque pela Public OnPlayerRequestSpawn(playerid) e coloque o código abaixo.
Code:
public OnPlayerRequestSpawn(playerid)
{
  ShowPlayerDialog(playerid, DIALOG_LINGUAGEM, DIALOG_STYLE_MSGBOX, "Language/Linguagem",
  "Just choose Your Language !\n\
  Apenas Escolha sua Linguagem !",
  "English", "Português");
  return 1;
}
Fiz a Dialog de maneira bem simples, caso queira pode sim implementar cores nas frases, mudar, adicionar ou remover-las.

Explicação :
Code:
public OnPlayerRequestSpawn(playerid) = Dentro dessa Public são colocadas funções para acontecerem assim que o jogador Spawnar.
ShowPlayerDialog = Função para mostrar a Dialog para o Player.
playerid = A Dialog será mostrada para um certo playerid.
DIALOG_LINGUAGEM = O nome da Dialog que será chamada (Definimos ela no topo do GM).
DIALOG_STYLE_MSGBOX = O estilo da Dialog que irá aparecer.
"Language/Linguagem" = Coloque dentro das Aspas o que você deseja como título da Dialog.
"Just choose Your Language !
Apenas Escolha sua Linguagem !" = Coloque dentro das Aspas oque você quer como descrição dentro da Dialog.
\n\ = Use quando quiser passar para a linha de baixo (Quebra de linha).
"English", "Português" = Dentro das primeiras Aspas coloque o nome do Botão1 ena segunda o Botão2.
* Quinto Passo : Agora iremos dar função para os dois botões da Dialog.
Novamente Apertando (CTR + F) busque pela Public public OnDialogResponse e coloque o código abaixo.

Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
  if(dialogid == DIALOG_LINGUAGEM)
  {
    if(response)
    {
       linguagem[playerid] = 1;
SendClientMessage(playerid, -1,"{BD0D0D}Try /help , and have a Good Game !");
     }else
       {
           linguagem[playerid] = 2;
           SendClientMessage(playerid, -1,"{BD0D0D}Digite /ajuda , e tenha um bom jogo !");
       }
   }
   return 1;
}
Explicação :

Code:
public OnDialogResponse = Nessa public definimos as respostas de cada botão na Dialog.
if(dialogid == DIALOG_LINGUAGEM) = Estrutura condicional para caso for chamada a DIALOG_LINGUAGEM.
if(response) = Estrutura condicional para caso o jogador clicar no primeiro botão (English)
linguagem[playerid] = 1; = Definimos a variável do jogador para 1 (English)
else = Caso não seja no primeiro botão, ou seja, no segundo (Português).
linguagem[playerid] = 2; = Definimos a variável do jogador para 2 (Português)
* Sexto Passo : Aqui será apenas um complemento para iniciantes caso queiram criar o comando /ajuda e /help.

Comando /ajuda :
Code:

CMD:ajuda(playerid)
{
 SendClientMessage(playerid, amarelo, "Para ver todos os comandos digite /cmds ou /comandos.");
 SendClientMessage(playerid, amarelo, "Para ver as regras do servidor digite /regras.");
 SendClientMessage(playerid, amarelo, "Para ver os creditos do servidor digite /creditos.");
 return 1;
}
Comando /help:
Code:

CMD:help(playerid)
{
 SendClientMessage(playerid, amarelo, "You can see all the commands using /cmds ou /commands.");
 SendClientMessage(playerid, amarelo, "You can see the rules writing /rules.");
 SendClientMessage(playerid, amarelo, "For see the credits of this server use /credits.");
 return 1;
}
Explicação Final

Você pode implementar muito mais esse sistema, eu apenas lhe dei a base mas você pode usar a variável como restrição de alguns comandos, exemplo (Pessoas que escolheram PT não podem usar comandos da área EN) isso é você quem decide ! Espero que façam bom proveito disso. Como foi meu primeiro tutorial e ainda estou estudando MUITO pawn, vejo que tenho muita coisa a aprender pela frente, portanto quaisquer críticas são Bem-Vindas desde que sejam para crescimento. Qualquer dúvida poste e eu tentarei ajudar.

Créditos
- Tutorial feito por mim ZackT.
- Retirei a ideia do SA-MP DayZ pois foi o primeiro servidor que vi com esse sistema.
- Ao Jonathan Feitosa, pois comentei o tutorial dele aqui.

Reajustes serão sempre feitos.

Weslley_Script

Barra de progresso 1.3.1 - Qua 1 Mar 2017 - 10:21

Introdução

Bem, eu vi muitos aborrecedores saúde veículo textdraws, então, eu fiz isso, com o mesmo visual como a barra de saúde GTA original. Com isso inclua, você pode criar barras de progresso com a posição, tamanho e cor desejada. É muito simples de usar, vou mostrar aqui. 

Funções


  • CreateProgressBar (x, y, largura, altura, cor, máximo)

    Cria uma barra de progresso (quase o mesmo que TextDrawCreate).


    • x e y valores são a posição da barra na tela;
    • Largura e altura são o tamanho da barra (eles têm valores padrão, basta colocar _ como parâmetro);
    • A cor é a cor da barra, obviamente;
    • Max é a porcentagem máxima que a barra pode alcançar (padrão 100).



    Retorna: a barra criada.



  • DestroyProgressBar (barid)

    Destrói uma barra criada.




  • ShowProgressBarForPlayer (playerid, barid)

    Mostra simplesmente a barra de progresso dada para um jogador.




  • HideProgressBarForPlayer (playerid, barid)

    Oculta a barra de progresso de um jogador.




  • ShowProgressBarForAll (barid)

    Mostra a barra de progresso fornecida para todos os jogadores conectados.




  • HideProgressBarForAll (barid)

    Oculta a barra de progresso de todos os jogadores conectados.




  • SetProgressBarValue (barid, value)

    Altera a porcentagem atual da determinada barra de progresso (é ponto float). Lembre-se de que o valor máximo é o valor que você deu a ele em CreateProgressBar.




  • GetProgressBarValue (barid)

    Obtém o valor atual de uma barra de progresso . 
    Nota: retornará INVALID_BAR_VALUE se a barra não existir ou se algo der errado.




  • SetProgressBarMaxValue (barid, max)

    O valor máximo é dinâmico, você pode alterá-lo sempre que quiser e atualizará por si mesmo (o valor da barra de progresso atual permanecerá igual, a diferença que você vê na barra).




  • SetProgressBarColor (barra, cor)

    Define a cor da barra para o que você quiser. A inclusão agora suporta cores transparentes , portanto, tenha cuidado ao usar AA ou 00 como Alpha. Se você deseja que a cor seja totalmente colorida, use FF no final da cor (ou seja, 0x00FF00 FF ). 
    Toda vez que você usar esta função, você precisará usar a função "UpdateProgressBar", veja acima.




  • UpdateProgressBar (barid, playerid = INVALID_PLAYER_ID)

    Toda vez que você altera um valor ou cor de barra de progresso, é necessário atualizá-lo. Eu não incluí esta função diretamente em SetProgressBarValue / SetProgressBarColor, porque não é eficiente desta maneira. 
    Você pode simplesmente não usar o parâmetro playerid ea barra de progresso será atualizada para todos.




Use a

criação simples da barra de progresso:

[size=11]Código:
Novo Barra: health = CreateProgressBar (50,0, 300,0, _, _, 0xFF0000FF, 100,0);
SetProgressBarValue (saúde, 50,0);
ShowProgressBarForAll (saúde);[/size]

E se eu quero destruí-lo:



E se eu quero destruí-lo:




Código:
DestroyProgressBar (saúde);


Neste caso eu criei uma barra de progresso verde para mostrar a saúde real do veículo. 
Nesta barra estou usando o tamanho da barra de progresso padrão (55.5, 3.2). 
A cor de fundo (verde escuro neste caso), você não precisa declará-lo, o próprio incluir calcula a cor de fundo usando operações de RGBA hexadecimal. 

Este script de exemplo:



Código:



[size=13]#include <a_samp>
#include <progress>

Novo Bar: vhealth [MAX_PLAYERS] = {INVALID_BAR_ID, ...};
Forward ProgressBar ();

Public OnFilterScriptInit ()
{
   SetTimer ("ProgressBar", 500, 1);
   Return 1;
}

Public ProgressBar () // Eu prefiro não usar OnPlayerUpdate com textdraws
{
   Para (novo playerid; playerid <MAX_PLAYERS; playerid ++) // Eu recomendo foreach (Player, playerid)
   {
      Veículo novo;
      If ((vehicleid = GetPlayerVehicleID (playerid)) && vhealth [playerid]! = INVALID_BAR_ID)
      {
         Novo Flutuador: saúde;
         GetVehicleHealth (veículo, saúde);
         SetProgressBarValue (vhealth [playerid], saúde);
         UpdateProgressBar (vhealth [playerid], playerid);
      }
   }
}

Public OnPlayerStateChange (playerid, newstate, oldstate)
{
   If (oldstate == PLAYER_STATE_DRIVER)
   {
      DestroyProgressBar (vhealth [playerid]);
      Vhealth [playerid] = INVALID_BAR_ID;
   }
   If (newstate == PLAYER_STATE_DRIVER)
   {
      Vhealth [playerid] = CreateProgressBar (548,5, 36,0, _, _, 0x00FF00FF, 1000,0);
      ShowProgressBarForPlayer (playerid, vhealth [playerid]);
   }
   Return 1;
}[/size]


Erros

Não há nenhum erro ainda. Informe aqui se encontrou um. 

Futuras modificações

  • Use setproperty e getproperty para habilitar a comunicação entre uma barra de progresso gamemode e uma de filtroscript. Assim, você será capaz de destruir uma barra de progresso criada em um gamemode, pelo seu filterscript e etc

  • Adicione suporte a cores transparentes.

  • Faça um editor de barra prrogess, para obter coordenadas.



Download

Pastebinv1.3.1OLD VERSION
NOVA VERSÃO LINK (PASTEBIN)

http://pastebin.com/ZuLPd1K6
Graças a [HLF] Southclaw para as mudanças. Tenha em atenção que as funções foram alteradas nesta versão, por isso consulte o ficheiro de inclusão para ver os novos nomes e parâmetros das funções. 

Coloque este script em um arquivo chamado "progress.inc", e coloque esse arquivo em sua pasta de inclusão. Em seguida, use "#include " no seu gamemode / filterscript para usá-lo. 

New Progress Bar Creator
http://pastebin.com/P6iPFp9F

Vídeo:




-

Nex-AC Sistema Anticheat - Ter 20 Dez 2016 - 20:01

Nex Anticheat (Nex-AC) - é uma proteção abrangente que combina poderoso anti-cheat e proteção contra vários ataques (inundação, DoS). 
Anti-cheat detecta fraudes populares punir instantaneamente cheaters. 
Anti-DoS combina customizáveis anti-inundação, anti-DoS no nível de rede e um monte de ferramentas de proteção contra hackers, crashers etc.

Lista de anti-fraudes básicas:

* Anti-AirBreak (Onfoot / no veículo)
* Anti-teletransporte corte (Onfoot / no / na / entre veículos)
* pickups Anti-teletransporte
* Anti-FlyHack (Onfoot / no veículo)
* Anti-Speedhack (Onfoot / no veículo)
* cortar Anti-Saúde (Onfoot / no veículo) e armaduras cortar
* corte anti-Arma e (adicionar / infinito) munição cortar
* acções anti-especiais cortar (incluindo jetpack)
* anti-GodMode de balas (Onfoot / no veículo)
* corte anti-Invisible
* anti-Money cortar
* anti-ajuste corte
* anti-lagcomp-paródia
* anti-Parkour mod
* sua vez anti-Quick
* fogo anti-Rapid
* anti-FakeSpawn
* anti-FakeKill
* anti-Pro Aim
* anti-CJ run
* anti-CarShot
* anti-carjack
* anti-descongelar
* Anti-AFK Santo
* Anti-Reconnect
* Anti-ping alto
* Anti-falsificação NPC
* corte Anti-Dialog
* proteção da caixa de proteção
* proteção contra a versão inválida
* assento de mudança anti-inundações
* protecção contra as inundações se conecta a um slot
* Anti- rcon corte (bruta / brute-forse)
* funções anti-inundações de retorno de chamada (lista completa abaixo) 
* anti-crashers (lista completa abaixo) 
* do anti-NOP (lista completa abaixo) 
* anti-Dos

Recursos adicionais:

 Definir anti-cheat a partir do arquivo
as configurações está localizado em um arquivo separado (scriptfiles \ nex-ac_settings.cfg)
 Ver estatísticas
Capacidade de visualizar estatísticas do anti-cheat enquanto o servidor trabalhando desde o seu lançamento
exibido automaticamente quando o servidor desligar. Armazenados em um log do servidor (server_log.txt)
 Log das ações mais importantes
Opcionalmente, você pode habilitar-modo de depuração para log todas as ações
 Multilingual
Capacidade para definir qualquer um dos idiomas disponíveis. 
Também simplifica a tradução de anti-fraude para outros idiomas

Lista de públicos, que são protegidos por anti-inundação:

* OnDialogResponse
* OnEnterExitModShop
* OnPlayerClickMap
* OnPlayerClickPlayer
* OnPlayerClickTextDraw
* OnPlayerCommandText
* OnPlayerEnterVehicle
* OnPlayerExitVehicle
* OnPlayerPickUpPickup
* OnPlayerRequestClass
* OnPlayerSelectedMenuRow
* OnPlayerStateChange
* OnVehicleMod
* OnVehiclePaintjob
* OnVehicleRespray
* OnVehicleDeath
* OnPlayerText
* OnPlayerEnterCheckpoint
* OnPlayerLeaveCheckpoint
* OnPlayerRequestSpawn
* OnPlayerExitedMenu
* OnPlayerEnterRaceCheckpoint
* OnPlayerLeaveRaceCheckpoint
* OnPlayerClickPlayerTextDraw
* OnVehicleDamageStatusUpdate
* OnPlayerSelectObject

Anti-NOP de:

* SpawnPlayer
* SetPlayerPos
* SetVehiclePos
* SetPlayerAmmo
* SetPlayerHealth
* SetPlayerArmour
* SetVehicleHealth
* GivePlayerWeapon
* SetPlayerInterior
* PutPlayerInVehicle
* ResetPlayerWeapons
* SetPlayerArmedWeapon
* SetPlayerSpecialAction
* TogglePlayerSpectating
* RemovePlayerFromVehicle

Anti-Crashers:

* ajuste inválido
* assentos de veículos inválido
* caracteres ilegais nos diálogos (apagar)
* objetos anexados inválidos
* Arma Estrondo

Funções:
Código:
pública OnCheatDetected (playerid, ip_address [], o tipo de código)
 Chamado quando o tropeçou um dos anti-fraudes
 playerid - ID do trapaceiro
 ip_address [] - IP-endereço do trapaceiro
 Tipo - Tipo de batota (quando 0 retorna o ID, quando 1 - IP)
 Código - Código (ID) do anti-cheat

EnableAntiCheat (ácido, ativar)
 Use para ativar / desativar um dos anti-fraudes
 acid - ID do anti-cheat
 permitir - 1 para ativar / 0 para desativar

EnableAntiCheatForPlayer (playerid, ácido, ativar)
 Use para ativar / desativar um dos anti-fraudes para um jogador em particular
 playerid - ID do jogador que precisa para ativar / desativar o anti-cheat
 acid - ID do anti-cheat
 permitir - 1 para ativar / 0 para desativar


Adicionado no v1.3:

IsAntiCheatEnabled (ácido)
 Use para verificar se activar / desactivar um dos anti-fraudes
 acid - ID do anti-cheat
 Retornar 1 (true) se habilitado ou 0 (falso) se desativado

IsAntiCheatEnabledForPlayer (playerid, ácido)
 Use para verificar se activar / desactivar um dos anti-fraudes para um jogador em particular
 playerid - ID do jogador que precisa de seleção para ativar / desativar o anti-cheat
 acid - ID do anti-cheat
 Retornar 1 (true) se habilitado ou 0 (falso) se desativado


Adicionado em v1.8.8:

AntiCheatGetHealth (playerid, & Float: saúde)
 Usar para obter a quantidade de saúde do jogador
 playerid - A ID do jogador
 & Float: saúde - Variável para a saúde armazenamento, passados ​​por referência

AntiCheatGetArmour (playerid, & Float: armadura)
 Usar para obter a quantidade de armadura do jogador
 playerid - A ID do jogador
 & Float: armadura - variável para armadura de armazenamento, passados ​​por referência

AntiCheatGetVehicleHealth (vehicleid, & Float: saúde)
 Usar para obter o montante da saúde veículo
 vehicleid - A identificação do veículo
 & Float: saúde - Variável para a saúde armazenamento, passados ​​por referência

AntiCheatGetWeaponData (playerid, slot, e armas, e munições)
 Usar para obter armas e munição em um determinado intervalo de tempo do jogador
 playerid - A ID do jogador
 Slot - O slot em que precisa obter as armas e munição
 & Armas - Variável de ID arma armazenamento, passados ​​por referência
 & Munição - Variável para a quantidade de armazenamento de munição, passados ​​por referência

AntiCheatGetSpawnWeapon (playerid, & weapon1, & weapon1_ammo, & weapon2, & weapon2_ammo, & weapon3, & weapon3_ammo)
 Usar para obter armas de desova e munição do jogador
 playerid - A ID do jogador
 & Weapon1 - Variável para o armazenamento a arma 1, passados ​​por referência
 & Weapon1_ammo - A variável para o armazenamento a quantidade de munição para a arma 1, passados ​​por referência
 & Weapon2 - Variável para o armazenamento a arma 2, passados ​​por referência
 & Weapon2_ammo - A variável para o armazenamento a quantidade de munição para a arma 2, passados ​​por referência
 & Weapon3 - Variável para o armazenamento da arma 3, passados ​​por referência
 & Weapon3_ammo - A variável para o armazenamento a quantidade de munição para a arma 3, passados ​​por referência

AntiCheatGetPos (playerid, e float: x, e float: y, & float: z)
 Usar para obter a posição do jogador
 playerid - A ID do jogador
 & Float: x - A variável para o armazenamento a coordenada x, passados ​​por referência
 & Float: y - A variável para o armazenamento a coordenada y, passados ​​por referência
 & Float: z - A variável para o armazenamento a coordenada z, passados ​​por referência

AntiCheatGetSpeed ​​(playerid, & Float: velocidade)
 Usar para obter a velocidade do jogador
 playerid - A ID do jogador
 & Float: Velocidade - Variável para o armazenamento a velocidade, passados ​​por referência

AntiCheatGetVehicleVelocity (vehicleid, & Float: x, & Float: y, & Float: z)
 Usar para obter a velocidade do veículo
 vehicleid - A identificação do veículo
 & Float: x - A variável para o armazenamento a velocidade x, passados ​​por referência
 & Float: y - A variável para o armazenamento a velocidade y, passados ​​por referência
 & Float: z - A variável para o armazenamento a velocidade z, passados ​​por referência

AntiCheatGetAnimationIndex (playerid)
 Use para obter o índice (ID) da animação atual do jogador
 playerid - A ID do jogador
 Retorna o ID da animação ou 0 se o leitor não está ligado

AntiCheatGetDialog (playerid)
 Usar para obter o ID do diálogo aberta do leitor
 playerid - A ID do jogador
 Retorna o ID da caixa de diálogo ou 0 se o leitor não está ligado

AntiCheatGetMoney (playerid)
 Usar para obter a quantidade de dinheiro do jogador
 playerid - A ID do jogador
 Retorna a quantidade de dinheiro ou 0 se o leitor não está ligado

AntiCheatGetClass (playerid)
 Usar para obter ID da classe do jogador
 playerid - A ID do jogador
 Retorna o ID de classe ou 0 se o leitor não está ligado

AntiCheatGetEnterVehicle (playerid)
 Usar para obter o ID do veículo, o jogador que tentar entrar
 playerid - A ID do jogador
 Retorna a identificação do veículo ou 0 se o leitor não está ligado

AntiCheatGetVehicleID (playerid)
 Usar para obter o ID do veículo, no qual o jogador se senta
 playerid - A ID do jogador
 Retorna a identificação do veículo ou 0 se o leitor não está ligado

AntiCheatGetWeapon (playerid)
 Usar para obter atual ID arma do jogador
 playerid - A ID do jogador
 Retorna o ID da arma ou 0 se o leitor não está ligado

AntiCheatGetVehicleSeat (playerid)
 Usar para obter o assento no veículo, em que o jogador se senta
 playerid - A ID do jogador
 Retorna o número do assento ou 0 se o leitor não está ligado

AntiCheatGetSpecialAction (playerid)
 Usar para obter o ID da acção especial do leitor
 playerid - A ID do jogador
 Retorna a identificação da acção especial ou 0 se o leitor não está ligado

AntiCheatGetLastSpecialAction (playerid)
 Usar para obter o ID da ação especial anterior do jogador
 playerid - A ID do jogador
 Retorna a identificação da acção especial anterior ou 0 se o leitor não está ligado

AntiCheatGetLastShotWeapon (playerid)
 Usar para obter o ID da última arma a partir do qual o jogador tiro
 playerid - A ID do jogador
 Retorna o ID da última arma ou 0 se o leitor não está ligado

AntiCheatGetLastPickup (playerid)
 Usar para obter o ID da última captação, qual jogador escolher
 playerid - A ID do jogador
 Retorna o ID da última captação pegou ou 0 se o leitor não está ligado

AntiCheatGetLastUpdateTime (playerid)
 Usar para obter última timestamp atualização do jogador
 playerid - A ID do jogador
 Retorna a data da última atualização ou 0 se o leitor não está ligado

AntiCheatGetLastReloadTime (playerid)
 Utilizar para obter passado (arma) de recarga timestamp do jogador
 playerid - A ID do jogador
 Retorna a data da última recarga ou 0 se o leitor não está ligado

AntiCheatGetLastEnteredVehTime (playerid)
 Usar para obter última entrada tentativa veículo timestamp do jogador
 playerid - A ID do jogador
 Retorna timestamp da última tentativa de entrada ou 0 se o leitor não está ligado

AntiCheatGetLastShotTime (playerid)
 Usar para obter última timestamp tiro do jogador
 playerid - A ID do jogador
 Retorna a data do último tiro ou 0 se o leitor não está ligado

AntiCheatGetLastSpawnTime (playerid)
 Usar para obter última timestamp desova do jogador
 playerid - A ID do jogador
 Retorna timestamp da última desova ou 0 se o leitor não está ligado

AntiCheatIntEnterExitsIsEnabled (playerid)
 Use para verificar se ativar / desativar entrar / marcadores de saída em interiores para o jogador
 playerid - A ID do jogador
 Retorna 1 (VERDADEIRO) se habilitado ou 0 (falso) se desativado

AntiCheatStuntBonusIsEnabled (playerid)
 Use para verificar se habilitar bônus conluio / desativar para o jogador
 playerid - A ID do jogador
 Retorna 1 (VERDADEIRO) se habilitado ou 0 (falso) se desativado

AntiCheatIsInModShop (playerid)
 Use a verificar: se o jogador está em ModShop ou não
 playerid - A ID do jogador
 Retorna 1 (true) se é ou 0 (falso), se não for

AntiCheatIsFrozen (playerid)
 Use a verificar: se o jogador é congelada ou não
 playerid - A ID do jogador
 Retorna 1 (VERDADEIRO) se congelados ou 0 (falso), se não congelados

AntiCheatIsDead (playerid)
 Use a verificar: se o jogador está morto ou não
 playerid - A ID do jogador
 Retorna 1 (VERDADEIRO) se morto ou 0 (falso) se não está morto

AntiCheatIsConnected (playerid)
 Use a verificar: se o jogador estiver em um servidor ou não
 playerid - A ID do jogador
 Retorna 1 (true) se é ou 0 (falso), se não for


Download:



1. Baixe a versão do anticheat que compatível com a versão do seu servidor
2. Baixe o arquivo de idioma(.lang)em seu idioma preferido
3. Copie ambos os arquivos para a pasta"/ pawno / include"que está localizado na pasta com o servidor
4. no modo de jogo e todos os filterscripts depois"#include "escrever o seguinte:"#include "

Aviso! Se você estiver usando um Plugin Streamer por Incognito, foreach ou y_hooks, incluí-lo antes NEX-ac ! 
Também tenha em mente que filterscript deve ter " # define filterscript " antes de incluir anticheat


5. Compilar os scripts modificados


[size=24]Changelog:
[/size]

Código:
v1.0
* Lançamento inicial

v1.1
mudanças:
* Compatível com Streamer Plugin
* Compatível com y_hooks
* Otimização Minor

Conserta:
* Aumento de certos valores e o ping distância considerando
* Corrigido um bug com uma pick up armas semelhantes sobre os captadores
Corrigido um erro com um pontapé quando desovar e, em seguida, instalar a posição do jogador / interior
Corrigido um erro com um pontapé quando desovar e, em seguida, instalar as armas de jogador (se usado AddPlayerClass / Ex)
* Corrigida a falha ao chamar ShowPlayerDialog em CallRemoteFunction

v1.2
mudanças:
* Compatível com y_dialog
* Compatibilidade adicional com foreach

Conserta:
* Corrigido vários erros no modo anti-Deus
Corrigido um erro com um chute durante a prolongada fotografar um minigun
* O visor fixo de estatísticas e relatórios sobre pontapé
* Localização bielorrusso Tweaked

Agora ele está disponível no GitHub! (Pela demanda popular)

v1.3
mudanças:
* Adicionado "USE_QUERY #define" (true por padrão)
** Se o servidor está sob ataque de força bruta - para melhor valor proteção USE_QUERY pode ser alterado para falso
** Atenção! Se false, o servidor não irá exibir as informações no browser do servidor, portanto, use em casos extremos!
* Adicionado apresenta IsAntiCheatEnabled e IsAntiCheatEnabledForPlayer

Conserta:
* Corrigido configuração anticheat carga de config-file
* Aumento alguns valores em favor de jogadores com ping alto
* Protecção Rcon (contra Brute-force) agora também habilitado dinamicamente / desativado por função EnableAntiCheat
* Corrigido pequenos bugs no processo anti-fraudes em munição corte, RapidFire, Speedhack no veículo, Anti-GodMode a pé e em veículos

v1.4
mudanças:
* Compatível com soquete Plugin
* Removido alguns anti-crashers (que são fixados na nova versão r2)
* Melhor corte anti-tuning: agora detecta ajuste livre em ModShops
* Melhor anti-carshot

Conserta:
* Tweaked alguns valores na anti-inundação
* Corrigido vários erros no corte anti-arma
* Corrigido um bug onde todos os carros poderia ter uma sirene
Corrigido um erro na anti-teletransporte cortar com um chute na entrada ModShop
Corrigido um erro na anti-GodMode Onfoot com um pontapé se as balas eram desync

v1.5
mudanças:
* Melhor interação com anticheat por OnCheatDetected
* Melhor Anti-PROAIM: agora detecta Silent-Aim
* Erro Removido durante a compilação, se você não tiver incluído a localização
* Otimização Minor

Conserta:
* Compatibilidade fixo com Streamer Plugin
* Compatibilidade fixo com um foreach da YSI última
* Melhor Onfoot Anti-GodMode e Anti-GodMode no veículo
* Corrigido um bug no Anti-FlyHack com um pontapé ao saltar em uma bicicleta
* Corrigido alguns bugs no corte Anti-Invisible

v1.6
mudanças:
* Melhor compatibilidade com y_hooks na última YSI
* Melhor fogo Anti-Rapid: agora detecta recarga rápida
* Por razões de segurança, acrescentou alguns penetras Anti-AIM
* Adicionado verificar quando compilando para compatibilidade com a versão do servidor
* OnCheatDetected agora é chamado, mesmo para aqueles detecta, que são não chutar por padrão
* Corte Anti-descongelar agora está desativado por padrão

Conserta:
* Corrigido um bug no Anti-Teleport no veículo com enter veículo fechado
* Protecção fixa contra Rcon cortar (em jogo)
* Corrigido EnableAntiCheat função

v1.7
mudanças:
* Atualizado crasher Anti-ajuste
* Compatibilidade adicional com sscanf
* Melhor compatibilidade com outros scripts

Conserta:
* Compatibilidade fixo com Streamer Plugin
* Corrigido Anti-Speedhack, Anti-Flood e corte Anti-Invisible
* Corrigido um bug no Anti-Ammo cortar com a função ResetPlayerWeapons

v1.8
mudanças:
* Melhor Anti-RapidFire: agora detecta Auto + C
* Otimização Minor

Conserta:
* Corrigido alguns anticheats que não funcionou corretamente
* Aumento da velocidade máxima permitida Onfoot
* Corrigido um erro na crasher assento Anti-inválido
* Corrigido Anti-Armas e Munição corte

v1.8.1
mudanças:
* Reescrita da crasher Anti-Dialog (%)

Conserta:
* Corrigido um bug no Anti-Ammo cortar com um pontapé para um detonador
* Modo de depuração fixo

v1.8.2
Conserta:
* A função EnableAntiCheatForPlayer fixo
* Corrigido bugs com "#define AC_USE _ <...>"

v1.8.3
Conserta:
* Corrigido mensagens do visor sobre pontapé em algumas localizações

v1.8.4
mudanças:
* Otimização Minor

Conserta:
* Aumento alguns valores (considerando ping)
* Corrigido um bug no Anti-RapidFire com um pontapé para a tomada do assento do passageiro
* Corrigido um bug no Anti-Ammo cortar com um pontapé para as filmagens de assento do motorista

v1.8.5
Conserta:
* Corrigido algumas verificações para o modelo de veículo inválido

v1.8.6
mudanças:
* Obtivemos alguns anti-crashers (que são "fixas" na versão r2)

v1.8.7
Conserta:
* Corrigido um bug no Anti-FlyHack (Onfoot) com um pontapé para um salto para a água

v1.8.8
mudanças:
* Melhoria da legibilidade do código
* Pequenas correções de bugs e melhorias
* funções de depuração Adicionado

Conserta:
* Compatibilidade fixo com as últimas versões do Streamer Plugin e YSI

v1.8.9
Conserta:
* Tweaked algumas definições
* Fixed funções GivePlayerWeapon e SetPlayerAmmo (proteção NOP)
* A função SetVehicleHealth fixo
* A função SetPlayerInterior fixo

v1.9
mudanças:
* Pequenas melhorias
* Adicionado uma função de gancho LinkVehicleToInterior
* Melhor corte anti-munição para Sawnoff Shotgun, 9mm, Uzi e Tec-9
* filterscripts adicionou suporte para proteção contra spoofing diálogos
* Reescrita da Anti-AFK Santo

Conserta:
* A função RepairVehicle fixo
* Corrigido um bug no Anti-GodMode (no veículo) com "matriz fora dos limites"
* Corrigido um bug no Anti-Godmode (no veículo) com um pontapé ao disparar sobre rodas
* Corrigido um bug com SetPlayerArmedWeapon em OnPlayerTakeDamage
* Corrigido um bug no Anti-Ammo corte quando tiro a partir do assento do motorista
* Corrigido um problema com o cálculo do assento max para o modelo do veículo 483
* Corrigido um bug no Anti-Godmode (Onfoot) com um pontapé ao entrar no carro
* Erros fixo com "STREAMER_ENABLE_TAGS"
* Corrigido vários bugs no anti-cheat em recolhida

v1.9.1
mudanças:
* Adicionada compatibilidade com Update Checker da Nexius

v1.9.2
mudanças:
* Pequenas melhorias
* Mudou alguns valores em anti-inundação

Conserta:
Corrigido um erro com um pontapé o jogador para o colocando-o interior em que ele já está

v1.9.3
mudanças:
* Removido o cheque para a distância ao sair do veículo com o hack anti-teletransporte (devido a falsos detecta)

v1.9.4
mudanças:
* Mudou a punição para veículos desocupados teleporte

Conserta:
* Corrigido um erro na corte anti-teleporte
Corrigido um erro na protecção a NOP RemovePlayerFromVehicle
* Corrigido corte anti-dinheiro

v1.9.5
Conserta:
Corrigido um erro na anti-teletransporte cortar com a configuração do interior antes de desova
* Gancho fixo OnPlayerClickPlayerTextDraw

v1.9.6
mudanças:
* Mudou alguns valores no anti-inundação

Conserta:
Corrigido um erro na anti-invisibilidade cortar com desova durante o espectador
Corrigido um erro na anti-speedhack com a função SetVehicleToRespawn
* Compatibilidade fixo com pontos de verificação flâmula
* pequenos bugs fixos

v1.9.7
mudanças:
* Mudou alguns valores em anti-inundação
* Funções EnableAntiCheat (ForPlayer) e IsAntiCheatEnabled (ForPlayer) pode ser chamado de filterscript
* Proteção adicional contra desvio de inscrição (uma ideia por f0Re3t)
* Reescrita a proteção contra a alta de ping

Conserta:
* Corrigido um bug no Anti-Speedhack com um pontapé para um passeio rápido no trem
* Totalmente fixado um bug com um pontapé para uma mudança de interior

v1.9.8
mudanças:
* AntiCheatGet * funções são agora pode ser chamado de filterscripts
* Chamada Faster viciado funções de GameMode
* Reescrita corte anti-dinheiro

Conserta:
* Corrigido um desvio no corte anti-munição para armas de alta taxa
* Corrigido um bypass no anti-teletransporte com a habilidade de se teletransportar após a mudança interior de servidor
Corrigido um erro na anti-arma cortar com um chute na compra de armas na Ammu-Nation para o preço errado
Corrigido um erro na proteção contra NOPs com um pontapé para levar armas semelhantes
* Corrigido erros de compilação quando incluídos em filterscript

v1.9.9
Conserta:
* Corrigido vários bugs nas ações anti-especiais cortar
Corrigido um erro na corte anti-arma com um pontapé quando ResetPlayerWeapons usado em OnPlayerDeath
* Tweaked alguns valores

v1.9.10
mudanças:
* função kick removido quando o jogador limite de tempo / crashes
* Atualizado uma série de componentes de ajuste válidos para cada veículo (tomada de correções)
* Adicionado a controlos internos para os argumentos em GivePlayerWeapon, funções SetPlayerArmedWeapon
* Modo de depuração significativamente melhorada
* Pequenas melhorias

Conserta:
Corrigido um erro na proteção contra NOPs com um pontapé para a tentativa de entrar no assento do veículo já ocupada
* Corrigido anti-speedhack no veículo (verificar a velocidade máxima)
* Melhor fogo anti-rápido para a espingarda

Devido aos inúmeros casos de problemas de conexão com anti-cheat, adicionou-se uma versão que seja compatível com a versão servidor 0.3.7 R1

v1.9.11
Conserta:
* A função SetPlayerArmedWeapon fixo
* A função PutPlayerInVehicle fixo
* Pequenas correções

[Tutorial] Como criar comandos /ir e /trazer usando SSCANF e zCMD - Seg 7 Nov 2016 - 23:52

Introdução

Para fazermos os comandos iremos precisar de duas includes, Sscanf2 e zCMD.


Estarei usando o Sscanf2



Downloads:







Após baixar, abra a pasta do Pawno, vá em includes e cole lá os dois arquivos


__________________________________________________ _______________________________________

[size=24]Iniciando[/size]

Antes de tudo, certifique-se de que você adicionou ao começo do seu projeto
[size=11]Quote:
[/size]
#include sscanf2


[size=11]Quote:
[/size]
#include zcmd


Após se certificar, abra seu arquivo no pawno e escolha um lugar para digitar o comando(Eu uso depois da última public).

Digite:
[size=11]Quote:
[/size]
CMD:ir(playerid, params[]) {

// Explicação:

CMD: // Indica como é o comando no caso /ir.

ir: // O comando.

playerid: // Quem digita o comando.

params[]: // Significa que vamos usar parâmetros, esses parâmetro serão utilizados em TODOS o comandos que precisarem de um complemento exemplo " /ir [id do jogador] " /ir = comando, [id do jogador] = complemento do comando, parâmetro.


Continuando..

...Após ter definido o CMD, vamos então criar o que vai ser usado nesse cmd logo abaixo digite:

[size=11]Quote:
[/size]
new aName[MAX_PLAYER_NAME]; // Nome de quem usou o comando, no caso o Admin, etc..
new pName[MAX_PLAYER_NAME]; // Nome do player para quem o Admin se teleportou.
new id; // Id do player que vai ser usado no /ir
new str[128]; // Criamos uma string que vai mandar as mensagens ao player
GetPlayerName(playerid, aName, sizeof(aName)); // Vai pegar o nome do Player que usou o comando.
GetPlayerName(playerid, pName, sizeof(pName)); // Vai pegar o nome de quem foi usado o comando.


Depois de ter feito isso digite logo abaixo:
[size=11]Quote:
[/size]

if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| Você não possui acesso para utilizar esse comando!");

// Irá checar se o player está logado Rcon, caso não esteja, irá retornar a mensagem de erro.

if(sscanf(params, "d", id)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| Use /ir .");

// Irá checar se ele escreveu o comando todo, caso tenha escrito apenas /ir, irá retornar a mensagem de erro.

if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF230AFF, "|ERRO| O ID digitado não está no servidor.");

// Irá checar se ele digitou um ID válido, caso o ID digitado não esteja no server, irá retornar a mensagem de erro.

new Float: x, Float: y, Float: z;
GetPlayerPos(id, x, y, z);
SetPlayerPos(playerid, x, y, z);

// GetPlayerPos, irá pegar a posição do ID. SetPlayerPos, vai setar quem digitou o comando na posição do ID.

format(str, sizeof(str), "|INFO| Você foi ao jogador: %s", pName);
SendClientMessage(playerid, 0x1CD622FF, str);

// Vai enviar á quem digitou o comando a mensagem de que ele foi ao jogador ID, o %s será substituído pelo nome do ID dentro do jogo.

format(str, sizeof(str), "|INFO| O Administrador: %s, foi até você", aName);
SendClientMessage(id, 0x1CD622FF, str);

// Vai enviar á quem o admin se teleportou a mensagem de que o admin foi até ele, os %s será substituído pelo nome do admin dentro do jogo.


Por fim.. digite: 
[size=11]Quote:
[/size]
return 1;
} // Fecha o Comando, significando que acabou, nunca se esqueça de fecha-lo, caso contrário o pawno não irá entender que o comando acabou.


Pronto, você finalizou o comando /ir . Agora, para o /trazer, basta você copiar e colar abaixo todo o código que acabamos de criar (Sim, copie e cole abaixo todo o comando /ir.)
Após isso vá até a primeira linha do comando copiado e modifique:

De:
[size=11]Quote:
[/size]
CMD:ir(playerid, params[]) {


Para: 
Quote:
CMD:trazer(playerid, params[]) {



Depois..
[size=11]Quote:
[/size]
// Procure por estas linhas:
new Float: x, Float: y, Float: z;
GetPlayerPos(id, x, y, z); // Troque "id" por "playerid"
SetPlayerPos(playerid, x, y, z); // Troque "playerid" por "id"

// Para o /trazer basta trocar o "id" no GetPlayerPos por "playerid" e o SetPlayerPos "playerid" por "id".


Após isso, basta modificar as mensagens!

[size=24]Fim[/size]

Aceito Dicas e Críticas Tópicos com a tag include em SSGamers - 12 Anos online por você. Biggrin
Qualquer dúvida é só me dizer, irei responder logo. ( Obs: Compilei aqui, e foi tudo certo! )

Espero ter ajudado alguém, até mais.

Lincoln_Br

[TUTORIAL] SScanf Em ZCMD - Qui 22 Set 2016 - 13:37

¤Usando sscanf em zcmd¤




Bem comecei a usar zcmd a pouco tempo, mas tenho visto que é muito diferente de strcmp, alem de tudo é mais fácil de se aprender, neste tutorial vou ensinar como usar sscanf em zcmd, irei ensinar o que aprendi claro, não estarei dizendo coisas que não sei, por tanto vamos começar...


Bem para usar sscanf em zcmd terá que criar o comando zcmd logico, então vamos lá.


No topo do GM/Fs adicione
Code:
#include sscanf2


Então agora vamos criar um comando de mp


Não se esqueça de adicionar as arrays como logico, claro que pode mudar o nome, não é preciso chamar-se new Texto, pode ser new frase, o que quiser, só tem que saber colocar...
Code:
//=====[ARRAYS]======
new texto;
new nome[MAX_PLAYER_NAME];
new Str[128];
new id;


Code:
CMD:mp(playerid, params[])
{
    if(sscanf(params, "us",id,texto))
    {
        SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
    }
    else
    {
        if(IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "Este jogador não está conectado");
        GetPlayerName(playerid,nome,sizeof(nome));
        format(Str, sizeof(Str), "Mesangem Privada de %s: %s",nome,texto);
        SendClientMessage(id,-1,Str);
    }
    return true;
}


Bem vamos falar agora um pouco sobre o comando.


Code:
if(sscanf(params, "us",id,texto))


if - Primeiramente. Pra quê if? Simples. sscanf, quando consegue cumprir sua função, retorna 0 (O que é um costume desconhecido em pawn). Ou seja, quando ele separa a string corretamente e todas as variávels são preenchidas, retorna 0, caso contrário 1, o que mostraria a ajuda do comando. (Créditos Luís Miki)




params - Como você já sabe, no zcmd, params é o que vem depois do /comando. Ou seja, seu objetivo é quebrar a string 'params' para poder pegar a hora para setar o servidor. (Créditos Luís Miki)


us - Bem essa parte é o que torna sscanf facil de usar em zcmd, vc sabe sabe quando usa mensagem que tenha que pegar o nome do player? ou o id, que usa %s, %d aqui é mesma coisa só que sem %, então vamos ver alguns dos que eu sei...


Code:
d ou i - usado quando você usa números, exemplo numero do seu celular...
s - é o string usado quando você usa letras, exemplo "Meu nome é BlueX"
u - usado para aquele famoso [Id do Player]...
f - usado para coordenadas...
Existem mais, mas eu ainda não todos....
depois para acabar basta adicionar as arrays, tipo, para o u você pode criar uma array chamada id, para o s você pode criar uma chamada Texto, por ai a diante...


Code:
SendClientMessage(playerid,-1,"Use: /mp [id] [texto]");
↑ isso é aquela mensagem quando você só digita o comando, /mp dai aparece essa mensagem...


Code:
else
↑ irá retornar caso você adicione o id e o texto exemplo /mp 1 eae.


Por fim usamos ↓
Code:
format(Str, sizeof(Str), "Mesangem Privada de%s: %s",nome,texto);
Ah mlk mais vc não tem que adicionar o id?
Não pois você irá mandar para o player não será necessário, mas caso você queira que mostre o id basta colocar assim:
Code:
format(Str, sizeof(Str), "Mesangem Privada de %s [ID%d]: %s",nome,playerid,texto);


Bom eu expliquei este comando todo, acho que por agora aprenderam, então, vou exemplificar mais outros comandos


/av para admin:
Code:
CMD:av(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    {
        if(sscanf(params, "s",texto))
        {
            SendClientMessage(playerid,-1,"Use: /av [texto]");
        }
        else
        {
            GetPlayerName(playerid,nome,sizeof(nome));
            format(Str, sizeof(Str),"Admin %s [ID:%d]: %s",nome,playerid,texto);
            SendClientMessageToAll(-1,Str);
        }
    }
    else SendClientMessage(playerid,-1,"Você não esta logado na rcon");
    return true;
}


/a (chat de admins)
Code:
CMD:a(playerid, params[])
{
    for( new i; i < MAX_PLAYERS; i++ )
    {
        if(IsPlayerAdmin(playerid))
        {
            if(sscanf(params, "s",texto))
            {
                SendClientMessage(playerid,-1,"Use: /a [texto]");
            }
            else
            {
                GetPlayerName(playerid,nome,sizeof(nome));
                format(Str, sizeof(Str),"%s: %s",nome,texto);
                SendClientMessage(i,-1,Str);
            }
        }
        else SendClientMessage(playerid,-1,"Você não é adminRcon");
    }
    return true;
}


Bem agora basta usar imaginação e pronts, você consegue fazer coisas mais rapidas com zcmd e sscanf.
Usando imaginação você chega lá. Espero que goste

DaniloReis

GameMode - Brasil Mundo Online - Qua 10 Ago 2016 - 11:44

amigo  na pasta do gm esta faltando a #include < BMO > da error ao compila a ediçao manda o link da gm completa pf !

$$$Sistema AFK$$$BY:GustavoAlves - Qua 20 Jul 2016 - 8:47

Comandos
/afk > fica AFK
/voltar > volta
/ausentes > mostra quem está AFK

Código
[size=11]Code:
/*
Sistema AFK com Auto-Kick

Feito por [XPG]MarlonCS
Skype: marloncs_22
*/

//includes
#include
#include

// defines
#define cinza 0xBEBEBEFF
#define laranja 0xFFA500FF
#define verde_claro 0x00FF00FF
#define vermelho 0xFF0000FF

// forwards
forward ChecarAfk(playerid);
forward AtualizarAfk(playerid);
forward ChecarPosicao(playerid,Float:afkX,Float:afkY,Float:afkZ);

// news
new
bool:AFKCMD[MAX_PLAYERS],
AfkCount[MAX_PLAYERS],
Text:afk[MAX_PLAYERS],
timeafk[MAX_PLAYERS],
Float:Position[3],
AFK[MAX_PLAYERS],
string[256]
;

public OnFilterScriptInit()
{
SetTimer("ChecarPosicao", 600000, true); // Se o player ficar parado por 10 minutos, ele é tido como AFK
SetTimer("ChecarAfk", 1000, true); // De um em um segundo chega o tempo do player AFK, caso ele esteja 10 minutos, ele é kickado
print("\nSisteminha AFK carregado *.* -------");
print("----------------------by [XPG]MarlonCS\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

public OnPlayerConnect(playerid)
{
CriarTextDraw(playerid);
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
if(AFKCMD[playerid]==true) // Se o player sair enquanto tiver AFK antes de usar /voltar
{
AFK[playerid]=0;
AFKCMD[playerid]=false;
}
return 1;
}

CMD:afk(playerid, params[])
{
if(AFKCMD[playerid] == true) { SendClientMessage(playerid, cinza, "[SERVER] Você já está ausente!"); }
AFK[playerid]=1;
AFKCMD[playerid]=true;
TogglePlayerControllable(playerid,0);
TextDrawShowForPlayer(playerid,afk[playerid]);
timeafk[playerid] = SetTimer("AtualizarAfk", 60000, true);
format(string, sizeof(string), "[SERVER] %s está ausente. ( /afk )", pnome(playerid));
SendClientMessageToAll(laranja, string);
return 1;
}

CMD:voltar(playerid, params[])
{
if(AFKCMD[playerid] == false) { SendClientMessage(playerid, cinza, "[SERVER] Você não está ausente!"); }
AFK[playerid]=0;
AFKCMD[playerid]=false;
TogglePlayerControllable(playerid,1);
TextDrawHideForPlayer(playerid,afk[playerid]);
KillTimer(timeafk[playerid]);
format(string, sizeof(string), "[SERVER] %s voltou ao jogo. ( /voltar )", pnome(playerid));
SendClientMessageToAll(laranja, string);
return 1;
}

CMD:ausentes(playerid, params[])
{
new arm[500];
new str[500];
new Nome[24];
new count;
for(new i=0;i if(IsPlayerConnected(i)) {
if(AFK[i] > 0) {
count++;
GetPlayerName(i, Nome, sizeof(Nome));
format(str, sizeof(str),"{FFFFFF}Nome: {FFA500}%s {FFFFFF}[%i]\n", Nome, i);
strcat(arm, str);
}
}
}
if(count<=0)return ShowPlayerDialog(playerid, 10, DIALOG_STYLE_MSGBOX, "===== {FFA500}Ausentes{FFFFFF} ======", "{00FF00}Nenhum player ausente", "OK", "");
if(count>0)ShowPlayerDialog(playerid, 10, DIALOG_STYLE_MSGBOX, "===== {FFA500}Ausentes{FFFFFF} ======", arm, "OK", "");
return 1;
}

public OnPlayerUpdate(playerid)
{
GetPlayerPos(playerid, Position[0], Position[1], Position[2]); // Getar posição
if(AFK[playerid] == 1 && AfkCount[playerid] > 0 && AFKCMD[playerid]==false) // Se o player se mover
{
AfkCount[playerid] = 0;
AFK[playerid]=0;
KillTimer(timeafk[playerid]);
}
return 1;
}

stock CriarTextDraw(playerid)
{
afk[playerid] = TextDrawCreate(260.000000,222.000000,"~r~AFK ~w~( sair: ~g~/voltar~w~ )");
TextDrawSetOutline(afk[playerid], 1);
TextDrawFont(afk[playerid], 2);
TextDrawSetProportional(afk[playerid], true);
TextDrawAlignment(afk[playerid], 1);
TextDrawLetterSize(afk[playerid], 0.4, 3.0);
TextDrawSetShadow(afk[playerid], 1);
return 1;
}
public AtualizarAfk(playerid)
{
AfkCount[playerid]++; // De um em um minuto soma mais 1
return 1;
}
public ChecarPosicao(playerid,Float:afkX,Float:afkY,Float:afkZ) // Checar se o player está parado
{
GetPlayerPos(playerid,afkX,afkY,afkZ);
if (Position[0] == afkX && Position[1] == afkY && Position[2] == afkZ)
{
AFK[playerid]=1;
timeafk[playerid] = SetTimer("AtualizarAfk", 60000, true);
}
return 1;
}
public ChecarAfk(playerid)
{
if(AFK[playerid]==1 && AfkCount[playerid] > 10) { // Verifica se o player está afk por 10 minutos
SendClientMessage(playerid, vermelho, "[SERVER] Você foi kickado por estar AFK por muito tempo!");
Kick(playerid);
format(string, sizeof string, "[SERVER] %s foi kickado por estar AFK por 10 minutos.", pnome(playerid));
SendClientMessageToAll(vermelho, string);
}
return 1;
}
stock pnome(playerid)
{
new nome[32];
GetPlayerName(playerid, nome, sizeof(nome));
return nome;
}

OPS:SE DE ALGUM ERRO AO COMPILAR FALO NO MEU SKYPE:Retirado[/size]

[Scripter]GustavoAlves

$$$TELA DE LOGIN$$$BY:GustavoAlves - Ter 19 Jul 2016 - 17:17

[list=text]
[*][list=text]
[*]
[*]*/
[*]
[*]#include 
[*]new Text:Helder0;

[*]new Text:Helder1;

[*]new Text:Helder2;

[*]new Text:Helder3;

[*]new Text:Helder4;

[*]new Text:Helder5;

[*]new Text:Helder6;

[*]new Text:Helder7;
 

[*]#if defined FILTERSCRIPT
 

[*]public OnFilterScriptInit()

[*]{

[*]    print("\n-=-=-=-=-=-=-=-=-=-=-=-=-=");

[*] print("=-=-=-=-=--=-=--=-=--=-=-=-=");

[*] print("=-=-=-Especial SSGAMERS=-=-=");

[*] print(" Sistema De Texdraw Na Tela ");

[*] print("=-=-=-=-=-Login=-=-=-=--=-=-");

[*] print("=-=-=-=-=--==--==--=-=-=-=\n");

[*] return 1;

[*]}
 

[*]public OnFilterScriptExit()

[*]{

[*] return 1;

[*]}
 

[*]#else
 

[*]main()

[*]{

[*] print("\n-=-=-=-=-=-=-=-=-=-=-=-=-=");

[*] print("=-=-=-=-=--==--==--=-=-=-=\n");

[*] print("=-=-Especial SSGAMERS===-=\n");

[*] print(" Sistema De Texdraw Na Tela ");

[*] print("=-=-=-=-=-Login=-=-=-=--=-\n");

[*] print("=-=-=-=-=--==--==--=-=-=-=\n");

[*]}
 

[*]#endif
 

[*]public OnGameModeInit()

[*]{

[*] Helder0 = TextDrawCreate(2.000000, 1.000000, "_");

[*]    TextDrawBackgroundColor(Helder0, 0xFFFFFFFF);

[*]    TextDrawFont(Helder0, 1);

[*]    TextDrawLetterSize(Helder0, 0.500000, 10.099998);

[*]    TextDrawColor(Helder0, -1);

[*]    TextDrawSetOutline(Helder0, 0);

[*]    TextDrawSetProportional(Helder0, 1);

[*]    TextDrawSetShadow(Helder0, 1);

[*]    TextDrawUseBox(Helder0, 1);

[*]    TextDrawBoxColor(Helder0, 0x00000051);

[*]    TextDrawTextSize(Helder0, 639.000000, 10.000000);
 

[*]    Helder1 = TextDrawCreate(2.000000, 355.000000, "_");

[*]    TextDrawBackgroundColor(Helder1, 0xFFFFFFFF);

[*]    TextDrawFont(Helder1, 1);

[*]    TextDrawLetterSize(Helder1, 0.500000, 10.099998);

[*]    TextDrawColor(Helder1, -1);

[*]    TextDrawSetOutline(Helder1, 0);

[*]    TextDrawSetProportional(Helder1, 1);

[*]    TextDrawSetShadow(Helder1, 1);

[*]    TextDrawUseBox(Helder1, 1);

[*]    TextDrawBoxColor(Helder1, 0x00000051);

[*]    TextDrawTextSize(Helder1, 639.000000, 10.000000);
 

[*]    Helder2 = TextDrawCreate(-1.000000, 95.000000, "_");

[*]    TextDrawBackgroundColor(Helder2, 0xFFFFFFFF);

[*]    TextDrawFont(Helder2, 1);

[*]    TextDrawLetterSize(Helder2, 0.500000, -0.200000);

[*]    TextDrawColor(Helder2, -1);

[*]    TextDrawSetOutline(Helder2, 0);

[*]    TextDrawSetProportional(Helder2, 1);

[*]    TextDrawSetShadow(Helder2, 1);

[*]    TextDrawUseBox(Helder2, 1);

[*]    TextDrawBoxColor(Helder2, 0x00000051);

[*]    TextDrawTextSize(Helder2, 642.000000, 0.000000);
 

[*]    Helder3 = TextDrawCreate(-1.000000, 353.000000, "_");

[*]    TextDrawBackgroundColor(Helder3, 0xFFFFFFFF);

[*]    TextDrawFont(Helder3, 1);

[*]    TextDrawLetterSize(Helder3, 0.500000, -0.200000);

[*]    TextDrawColor(Helder3, -1);

[*]    TextDrawSetOutline(Helder3, 0);

[*]    TextDrawSetProportional(Helder3, 1);

[*]    TextDrawSetShadow(Helder3, 1);

[*]    TextDrawUseBox(Helder3, 1);

[*]    TextDrawBoxColor(Helder3, 0x00000051);

[*]    TextDrawTextSize(Helder3, 642.000000, 0.000000);
 

[*]    Helder4 = TextDrawCreate(264.000000, 9.000000, "Seu Sv Aki");

[*]    TextDrawBackgroundColor(Helder4, 0xC5FFC2F6);

[*]    TextDrawFont(Helder4, 0);

[*]    TextDrawLetterSize(Helder4, 0.680000, 2.800000);

[*]    TextDrawColor(Helder4, 65535);

[*]    TextDrawSetOutline(Helder4, 0);

[*]    TextDrawSetProportional(Helder4, 1);

[*]    TextDrawSetShadow(Helder4, 0);
 

[*]    Helder5 = TextDrawCreate(258.000000, 30.000000, "Logotipo Do Seu Servidor");

[*]    TextDrawBackgroundColor(Helder5, -16776961);

[*]    TextDrawFont(Helder5, 2);

[*]    TextDrawLetterSize(Helder5, 0.170000, 1.000000);

[*]    TextDrawColor(Helder5, -16776961);

[*]    TextDrawSetOutline(Helder5, 0);

[*]    TextDrawSetProportional(Helder5, 1);

[*]    TextDrawSetShadow(Helder5, 0);
 

[*]    Helder6 = TextDrawCreate(287.000000, 51.000000, "");

[*]    TextDrawBackgroundColor(Helder6, 0xFFFFFFFF);

[*]    TextDrawFont(Helder6, 2);

[*]    TextDrawLetterSize(Helder6, 0.190000, 1.100000);

[*]    TextDrawColor(Helder6, -65281);

[*]    TextDrawSetOutline(Helder6, 0);

[*]    TextDrawSetProportional(Helder6, 1);

[*]    TextDrawSetShadow(Helder6, 0);
 

[*]    Helder7 = TextDrawCreate(266.000000, 74.000000, "");

[*]    TextDrawBackgroundColor(Helder7,0xFFFFFFFF);

[*]    TextDrawFont(Helder7, 0);

[*]    TextDrawLetterSize(Helder7, 0.380000, 1.200000);

[*]    TextDrawColor(Helder7, -1);

[*]    TextDrawSetOutline(Helder7, 0);

[*]    TextDrawSetProportional(Helder7, 1);

[*]    TextDrawSetShadow(Helder7, 0);

[*] return 1;

[*]}
 

[*]public OnGameModeExit()

[*]{

[*] return 1;

[*]}
 

[*]public OnPlayerRequestClass(playerid, classid)

[*]{
 

[*] return 1;

[*]}
 

[*]public OnPlayerConnect(playerid)

[*]{

[*] TextDrawShowForPlayer(playerid, Helder0);

[*]    TextDrawShowForPlayer(playerid, Helder1);

[*]    TextDrawShowForPlayer(playerid, Helder2);

[*]    TextDrawShowForPlayer(playerid, Helder3);

[*]    TextDrawShowForPlayer(playerid, Helder4);

[*]    TextDrawShowForPlayer(playerid, Helder5);

[*]    TextDrawShowForPlayer(playerid, Helder6);

[*]    TextDrawShowForPlayer(playerid, Helder7);

[*] return 1;

[*]}
 

[*]public OnPlayerDisconnect(playerid, reason)

[*]{

[*] return 1;

[*]}
 

[*]public OnPlayerSpawn(playerid)

[*]{

[*]        TextDrawHideForPlayer(playerid, Helder0);

[*]        TextDrawHideForPlayer(playerid, Helder1);

[*]        TextDrawHideForPlayer(playerid, Helder2);

[*]        TextDrawHideForPlayer(playerid, Helder3);

[*]        TextDrawHideForPlayer(playerid, Helder4);

[*]        TextDrawHideForPlayer(playerid, Helder5);

[*]        TextDrawHideForPlayer(playerid, Helder6);

[*]        TextDrawHideForPlayer(playerid, Helder7);

[*]// return 1;

[*]}

OPS SE NAO FUCIONAR FALE NO MEU SKYPE:Retirado

Smokiie_Gamer

[TUT]Criando CMD para criar veiculos ( ZCMD ) - Qua 8 Jun 2016 - 10:20

OIOI GENTI
( MT kefera agr kk )


Entao, Venho ensina como que cria 1 comando para criar veiculos, ex: /sultan /infernus  etc...


Comecando....




Você coloca a include zcmd.




 Ja que nao pode criar comando no " OnPlayerCommandText "

Vamos para o fim da GM 


Entao so fora disso, eu prefiro no fim da gm...




O Comando é este aqui...

Código:
CMD:CARRO(playerid)// COMANDO
{// ABRE CMD
 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, vermelho,"| ERRO |  Você não é um(a) administrador(a)");// CASO NAO SER ADM RCON, VAI DAR ESSE ERRO
 new Float:Pos[3];// POSICAO
 GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);// POSICAO
 CreateVehicle(ID CARRO, Pos[0], Pos[1], Pos[2], 0.0, 3, 3, VIDA CARRO);// CRIACAO DO VEICULO // ID VEICULO // POS // COR // VIDA VEICULO
 return 1;// RETURN
}// FECHA CMD



Por agora é tudo....
Tuto ta meio merdinha
Mas acho que vcs entende  cheers

Ent, no proximo tuto vo ensinar como q faz

/CV [id-veiculo] [cor1] [cor2]

Pra desocupar menos linha....

J. Legend

Include <SII> - Seg 23 maio 2016 - 19:29



Resolvi postar pelo fato de ter encontrado dificuldade em achar ela...
Muito leve, bem prática e boa para sistema de Registro.


Download: http://www.4shared.com/file/IvfORCVOce/SII.html?


OBS: Se o link estiver off, avisem que eu arrumo!

Media_Roox

[TUTORIAL]Comandos Básicos ~ Players[ZCMD] - Sex 25 Mar 2016 - 23:57

Fala Ai Galera Bom
Hoje Vou Ensinar
a Alguns Novatos No SA:MP
Como Criar Comandos Basicos em "ZCMD"
Intão Vamos la!
//COMEÇANDO
Iremos Usar ZCMD
Adicione NO TOPO DA GAMEMODE
#include
Primeiros Comandos
///////////////////////////////////////////////////////////////////////////
NO FINAL DA GAMEMODE
CMD:ajuda(playerid) //(PLAYERID) Serve Para a Função De Uma Mensagem Em Texto
{
SendClientMessage(playerid, COR, "Mensagem Que Você Deseja");
return 1; //SEMPRE RETORNANDO A 1 NÃO SE ESQUEÇA
} //FECHANDO A CHAVE CRIADA!
Neste Comando /ajuda Definimos a Mensagem Como Podem Ver Message(playerid
Como o CMD:ajuda(playerid) Adicionamos Playerid !CORRETO
///////////////////////////////////////////////////////////////////////////
SEGUNDO COMANDO

CMD:regras(playerid) //AQUI VAI DEFINIR DENOVO A SENDCLIENTMESSAGE(PLAYERID)
{ //ABRINDO A CHAVE DO FUNCIONAMENTO OBS:APAGUE ISSO
SendClientMessage(playerid, COR, "REGRAS DO SEU SERVIDOR AQUI"); //DEFINIDO
return 1; //SEMPRE RETORNANDO A 1 COM O ; NO FINAL NÃO SE ESQUEÇA
} //FECHANDO A CHAVE CRIADA OBS APAGUE ISSO
//EXPLICAÇÃO BOM EM SENDCLIENTMESSAGE(playerid Esta Definindo a Mensagem Que
Ira aparecer ao Player Como no Comando CMD:regras(playerid)
///////////////////////////////////////////////////////////////////////////
PROXIMO COMANDO
CMD:creditos(playerid)
{ //ABRINDO A CHAVE
SendClientMessage(playerid, COR, "Creditos a SSGAMERS OBS PODE EDITAR ISSO");
return 1; //SEMPRE RETORNANDO A 1 NÃO SE ESQUEÇA DO ; NO FINAL
} //FECHANDO A CHAVE CRIADA
///////EXPLICAÇÃO
EM SENDCLIENTMESSAGE(PLAYERID, COR, EM "COR" VOCÊ COLOQUE A COR QUE DESEJA
EXEMPLO
SENDCLIENTMESSAGE(PLAYERID, 0x03D687FF, "DEFINIMOS A COR AQUI E A MENSAGEM"
COMO FOI DEFINIDO EM CMD:creditos(playerid) //PLAYERID !!!
//////////////////////////////////////////////////////////////////////////////


ESPERO TER AJUDADO(BREVE MINHA APOSTILA)

DUVIDAS ? COMENTE AI!!

Iniciando em Programação - Linguagem C - Qua 14 Out 2015 - 11:10

Bom, antes de começarmos a aula de hoje jovens, vou me apresentar, Prazer eu sou o Thiago estarei aqui na SSGamers trazendo Tutoriais sobre a linguagem C entre outras. E para começarmos, primeiro você deve saber pelo menos informática básica, ao longo do curso tarei disponibilizando fontes de estudos e até mesmo aulas interativas de programação com vídeo aulas.

    1- Iniciando em Programação:


  •       Você que esta querendo aprender sobre programação de computadores e deve se perguntar por onde começar. Bom, primeiramente irei mostrar como programar na Linguagem C, que pode ser chamada de "Mãe das Linguagens" que utilizamos hoje ( Ela pode ser chamada, mais não é a Mãe, existem muitas anterior a essa), A primeira versão de C foi criada por Dennis Ritchie em 1972 nos laboratórios Bell para ser incluído como um dos softwares a serem distribuídos juntamente com o sistema operacional Unix do computador PDP-11, na equipe certificada por Ken Thompson.
  • Ao ponto de vista técnico, o surgimento do C iniciou com a linguagem ALGOL 60, definida em 1960. ALGOL era uma linguagem de alto nível, que permitia ao programador trabalhar "longe da máquina", sem se preocupar com os aspectos de como cada comando ou dado era armazenado ou processado. Foi criado para substituir o FORTRAN. ALGOL não teve sucesso, talvez por tentar ser de muito alto nível em uma época em que a maioria dos sistemas operacionais exigiam do usuário um grande conhecimento de hardware.
  • Em 1967 surgiu CPL (Combined Programming Language) nas universidades de Londres e Cambridge com o objetivo, segundo a equipe do projeto, de "trazer ALGOL à terra", ou "manter contato com a realidade de um computador real". Da mesma forma de ALGOL, CPL não foi bem aceita, em especial pelos projetistas de sistemas operacionais que a consideravam difícil de implementar.
  • Ainda em 1967, em Cambridge, Martin Richards criou o BCPL (Basic CPL), uma simplificação do CPL, tentando manter apenas as "boas coisas do CPL".
  • Em 1970, Ken Thompson, chefe da equipe que projetou o UNIX para o PDP11 do Bell Labs, implementou um compilador para uma versão mais reduzida do CPL. Batizou a linguagem de B.
  • Tanto BCPL quanto B mostravam-se muito limitadas, prestando-se apenas para certas classes de problemas. Isto se fez sentir especialmente na primeira versão do PDP11, lançado no mercado em 1971. Um dos fatores que levou à isto foi a intenção do grupo responsável pelo UNIX de reescrevê-lo todo em uma linguagem de alto nível, e para isto B era considerado lenta.
  • Estes problemas levaram a que o projetista Dennis Ritchie, do Bell Labs, fosse encarregado de projetar uma nova linguagem, sucessora do B, que viria então, a ser chamada de C.
  • A linguagem C buscou manter o "contato com o computador real" e ainda sim dar ao programador novas condições para o desenvolvimento de programas em áreas diversas, como comercial, científica e de engenharia.
  • Por muitos anos (aproximadamente 10) a sintaxe (formato) tida como padrão da linguagem C  foi aquela fornecida com o UNIX versão 5.0 do Bell Labs.   A principal documentação deste padrão encontra-se na publicação "The C Programming Language", de Brian Kernighan e Dennis Ritchie (K&R), tida como a "bíblia da linguagem C".
  • O mais interessante desta versão de C era que os programas-fonte criados para rodar em um tipo de computador podiam ser transportados e recompilados em outros sem grandes problemas. A esta característica dá-se o nome de portabilidade. Com ela, uma empresa que desenvolve um programa pode fazê-lo rodar em diferentes computadores sem ter um elevado custo a cada vez que isto for feito.
  • Em 1985, ANSI (American National Standards Institute) estabeleceu um padrão oficial de C o chamado "C ANSI". 


     1.1 Exemplo de programa em C:
        
        #include "stdio.h"
        Main(){
           printf("Ola, Mundo");
        }
 
     Como você pode perceber, a linguagem C tem uma estrutura como as outras linguagens ela se inicia declarando a Biblioteca que você irá utilizar. #include "stdio.h" ou .
     Logo depois você começa o corpo do programa ou seja você declara a função Main onde vai ficar todo o programa feito. Percebe-se que eu Abri e fechei parenteses porque dentro dela não teremos nenhum argumento.
     Assim por diante, eu utilizei o comando printf, ele será responsavel por emitir na Tela do usuário tudo aquele que eu digitei dentro das Aspas.e observer que abrimos os parenteses                    Digitamos seu argumento e logo depois fechamos e colocamos ; para que quando compilarmos o programa o Compilador identifique que ali esta sendo executado um comando ou função.

 1.2 Compiladores:
   Eu Poderia citar vários compiladores aqui nessa aula, mais irei apenas dizer 1, que é conhecido por sua facilidade de manuseio, alem disso, ele ajuda muito os novatos.
      O Programa se Chama: DEV-C++, um compilador de Alto nível e facil aprendizado para iniciantes.Estarei deixando o Link no fim da Aula.

 1.3 Avaliação Final:
  Bom, vo deixando aqui um teste para quem ler o tutorial. Deixe nos comentários um Programa compilado que irá imprimir "SSGames, 4 anos online, construindo servidores por voce"

      Bom, a nossa primeira aula vai ficando por aqui. espero que vocês estejam gostando, esse é meu primeiro tutorial aqui na SSGamers a pedido do Wesley. E trarei muitos outros se o feedback for positivo.Qualquer Dúvida me contate via, EMAIl ou Wathsapp.

EMAIL: tornadozerolive@hotmail.com ( Coloque Assunto e se Identifique).
Wathsapp: 017-991545517

 Link do Compilador para Download: http://www.baixaki.com.br/download/dev-c-.htm


Flw até a proxima aula. Nela Veremos Como Criar variaveis, e a função SCANF.

Black_Snake

[Tutorial] Scripting para iniciantes - Seg 21 Set 2015 - 12:03

Olá galera, voltei aqui Novamente, com mais uma quentinha pra vocês !

Este é um tutorial básico feito para iniciantes em SA: MP Scripting. Lembre-se, Este não é um feito profissionalmente tutorial. Há uma série de outros bons tutoriais você pode encontrar. Eu apenas decidi fazer um para ajudar vocês. Então, vamos começar.

O que é o SA: MP?
San Andreas Multiplayer (SA: MP) é uma modificação para Grand Theft Auto: San Andreas que o transforma em um jogo multiplayer. Você pode jogar através da internet com outras pessoas. Você precisa do Grand Theft Auto original: San Andreas jogo PC para jogar San Andreas Multiplayer.

O que é PENHOR?
Pawn é uma linguagem de programação que está incorporado em outros programas, no nosso caso, SA-MP.

Recomendação.
Para todos os novatos eu recomendo a leitura completamente SA-MP Wiki - noções básicas de scripts. Quando scripting sempre tem essas páginas abertas no seu navegador de internet. Clique aqui.


Começando.

Configurar o seu servidor - Ir para sa-mp.com, ir para download e clique em SA-MP 0.3d R2 Windows Server. Após o download for concluído, salve o arquivo em seu computador. Neste arquivo você iria encontrar, filterscripts, gamemodes incluem npcmodes, PAWNO, plugins, scriptfiles, annouce, samp-licença, samp-APN, samp-servidor, servidor e servidor-leia-me, arquivos.

Vamos começar por definir as configurações de servidor. Vamos abrir o arquivo 'servidor'.


Você vai ver isso:

Citação:
echo Execução de Configuração do servidor ...
lanmode 0
changeme rcon_password
maxplayers 32
port 7777
hostname SA-MP 0.3 Servidor
gamemode0 grandlarc 1
filterscripts baseaf gl_actions gl_property gl_realtime gl_mapicon ls_elevator
anunciar 0
consulta 1
weburl www.sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300,0
stream_rate 1000
maxnpc 0
logtimeformat [% H:% M:% S]
Agora, nós estamos indo para alterar essas configurações padrão ao seu gosto.

Hostname - Isto é o que o nome do servidor será quando hospedado em SA: MP cliente.
Rcon_password - Esta é a senha para acessar o servidor.
Maxplayers - Esta é a alterar a quantidade de jogadores para permitir que no servidor.
gamemode - Esta é script em execução do servidor.

Então, vamos alterar as configurações para os nossos gostos.

Citação:
echo Execução de Configuração do servidor ...
lanmode 0
Servidor rcon_password
maxplayers 50
port 7777
hostname SA-MP 0.3 servidor
gamemode0 Gamemode
filterscripts
anunciar 0
consulta 1
weburl www.sa-mp.com
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300,0
stream_rate 1000
maxnpc 0
logtimeformat [% H:% M:% S]
Após estes são alteradas salvar o arquivo.

Passo 1 - Scripting.

Agora, vamos começar por entrar em> PAWNO> pawno.exe.
Abra o arquivo, ele ficará em branco. Criar um novo arquivo, vá em> File> New, no canto superior direito.

Isto irá aparecer:

Código:
// Este é um comentário
// Descomente a linha abaixo se você quer escrever uma filterscript
// # definir filterscript

#include

#if defined filterscript

OnFilterScriptInit pública ()
{
print ("\ n --------------------------------------");
print ("filterscript vazio por seu nome aqui");
print ("-------------------------------------- \ n");
retornar 1;
}

OnFilterScriptExit pública ()
{
retornar 1;
}

#outro

a Principal()
{
print ("\ n ----------------------------------");
print ("Gamemode vazio por seu nome aqui");
print ("---------------------------------- \ n");
}

#Acabar se

OnGameModeInit pública ()
{
// Não utilizar estas linhas se é um filterscript
SetGameModeText ("Script em branco");
AddPlayerClass (0, 1958,3783, 1343,1572, 15,3746, 269,1425, 0, 0, 0, 0, 0, 0);
retornar 1;
}

OnGameModeExit pública ()
{
retornar 1;
}

OnPlayerRequestClass pública (playerid, classid)
{
SetPlayerPos (playerid, 1958,3783, 1343,1572, 15,3746);
SetPlayerCameraPos (playerid, 1958,3783, 1343,1572, 15,3746);
SetPlayerCameraLookAt (playerid, 1958,3783, 1343,1572, 15,3746);
retornar 1;
}

OnPlayerConnect pública (playerid)
{
retornar 1;
}

OnPlayerDisconnect pública (playerid, razão)
{
retornar 1;
}

OnPlayerSpawn pública (playerid)
{
retornar 1;
}

OnPlayerDeath pública (playerid, killerid, razão)
{
retornar 1;
}

público OnVehicleSpawn (vehicleid)
{
retornar 1;
}

OnVehicleDeath público (vehicleid, killerid)
{
retornar 1;
}

OnPlayerText pública (playerid, texto [])
{
retornar 1;
}

OnPlayerCommandText pública (playerid, cmdtext [])
{
if (strcmp ("/ mycommand", cmdtext, é verdade, 10) == 0)
{
// Faz alguma coisa aqui
retornar 1;
}
retornar 0;
}

OnPlayerEnterVehicle pública (playerid, vehicleid, ispassenger)
{
retornar 1;
}

OnPlayerExitVehicle pública (playerid, vehicleid)
{
retornar 1;
}

OnPlayerStateChange pública (playerid, NewState, oldstate)
{
retornar 1;
}

OnPlayerEnterCheckpoint pública (playerid)
{
retornar 1;
}

OnPlayerLeaveCheckpoint pública (playerid)
{
retornar 1;
}

OnPlayerEnterRaceCheckpoint pública (playerid)
{
retornar 1;
}

OnPlayerLeaveRaceCheckpoint pública (playerid)
{
retornar 1;
}

OnRconCommand público (cmd [])
{
retornar 1;
}

OnPlayerRequestSpawn pública (playerid)
{
retornar 1;
}

público OnObjectMoved (objectid)
{
retornar 1;
}

OnPlayerObjectMoved pública (playerid, objectid)
{
retornar 1;
}

OnPlayerPickUpPickup pública (playerid, pickupid)
{
retornar 1;
}

OnVehicleMod pública (playerid, vehicleid, ComponentID)
{
retornar 1;
}

OnVehiclePaintjob pública (playerid, vehicleid, paintjobid)
{
retornar 1;
}

OnVehicleRespray pública (playerid, vehicleid, color1, color2)
{
retornar 1;
}

OnPlayerSelectedMenuRow pública (playerid, linha)
{
retornar 1;
}

OnPlayerExitedMenu pública (playerid)
{
retornar 1;
}

OnPlayerInteriorChange pública (playerid, newinteriorid, oldinteriorid)
{
retornar 1;
}

OnPlayerKeyStateChange pública (playerid, newkeys, oldkeys)
{
retornar 1;
}

público OnRconLoginAttempt (ip [], password [], o sucesso)
{
retornar 1;
}

OnPlayerUpdate pública (playerid)
{
retornar 1;
}

OnPlayerStreamIn pública (playerid, forplayerid)
{
retornar 1;
}

OnPlayerStreamOut pública (playerid, forplayerid)
{
retornar 1;
}

OnVehicleStreamIn público (vehicleid, forplayerid)
{
retornar 1;
}

público OnVehicleStreamOut (vehicleid, forplayerid)
{
retornar 1;
}

OnDialogResponse pública (playerid, DialogID, resposta, listitem, inputText [])
{
retornar 1;
}

OnPlayerClickPlayer pública (playerid, clickedplayerid, fonte)
{
retornar 1;
}


Este é um script em branco. Agora clique F5 para compilar, esta irá notificá-lo se há algum erro.
Se você está compilando seu script pela primeira vez você vai ter que salvá-lo também. Salve-o como o nome que você tem para suas configurações gamemode0 no arquivo de configurações de servidor para que o servidor pode executar o script. Para mim, eu tenho 'Gamemode' então eu vou guardá-lo como 'Gamemode'.


Agora clique samp-servidor para iniciar o servidor. Adicionar: 7777 para sua lista de favoritos em seu SA: MP cliente e seu servidor será exibida.


Passo 2 - Scripting

Então, vamos começar por remover as 3 primeiras linhas.
Agora, o que nós estamos indo para escrever alguns comentários. Exemplo, créditos, versão, desenvolvedor etc.

Então vamos fazer isso:

Código:
/ ************************************************* ******************************
* SERVER NAME: Gamemode
* Server versão: Modo v1.0
* Server Developer: Nicholas
*
* INFORMAÇÃO:
*
************************************************** ***************************** /

Eu recomendaria a compilação antes de continuar com o seu script.

Agora vamos trabalhar na nossa função "main ()"

Então você terá o seguinte:

Código:
a Principal()
{
    print ("\ n ----------------------------------");
    print ("Gamemode vazio por seu nome aqui");
    print ("---------------------------------- \ n");
}

O que é isto? Isto é o que é impresso em seu console (SAMP-server)
Então, isso vai mostrar o que basicamente roteiro o servidor está executando.

Então vamos fazer isso:

Código:
a Principal()
{
print ("SERVER: Gamemoder");
print ("VERSÃO: Modo v1.0");
print ("Revelador: Nicholas");
}

Então, vamos agora trabalhar em OnGameModeInit () function.

Temos este:

Código:
OnGameModeInit pública ()
{
// Não utilizar estas linhas se é um filterscript
SetGameModeText ("Script em branco");
AddPlayerClass (0, 1958,3783, 1343,1572, 15,3746, 269,1425, 0, 0, 0, 0, 0, 0);
retornar 1;
}

Agora, estamos gongo para definir o 'SetGameModeText'. Isto irá mostrar o modo do servidor, exemplo da versão.

Então vamos fazer isso:

Código:
OnGameModeInit pública ()
{
// Não utilizar estas linhas se é um filterscript
SetGameModeText ("v2.0.0 Party");
AddPlayerClass (0, 1958,3783, 1343,1572, 15,3746, 269,1425, 0, 0, 0, 0, 0, 0);
retornar 1;
}

Agora, nós estamos indo para o trabalho em nossa seleção de classe, AddPlayerClass. Leia mais.
Por padrão, as coordenadas são definidas para o casino High Roller em Las Venturas.

Agora vamos remover as coordenadas padrão e adicionar nossas próprias coordenadas. Para obter coordenadas que você tem que usar este comando no servidor, / salvar, este comando guarda a sua posição Onfoot. Agora as coordenadas são salvos no arquivo do usuário GTA San Andreas> SAMP> Savepositions.

Estas são as coordenadas que recolhi.

Código:
AddPlayerClass (23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);
AddPlayerClass (46,1831.0970, -1682.6102,13.5469,88.3051,0,0,0,0,0,0);
AddPlayerClass (45,1481.3297, -1748.6530,15.4453,359.7071,0,0,0,0,0,0);
AddPlayerClass (83,723.3815, -1494.9203,1.9343,359.2792,0,0,0,0,0,0);
AddPlayerClass (92,1126.6831, -1425.8101,15.7969,357.7497,0,0,0,0,0,0);

Agora adicione suas coordenadas para o seu script.

Agora, temos o seguinte:

Código:
OnGameModeInit pública ()
{
SetGameModeText ("v2.0.0 Party");
// ------------------------ [PLAYER classe de seleção] ------------------- -------
AddPlayerClass (23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);
    AddPlayerClass (46,1831.0970, -1682.6102,13.5469,88.3051,0,0,0,0,0,0);
    AddPlayerClass (45,1481.3297, -1748.6530,15.4453,359.7071,0,0,0,0,0,0);
    AddPlayerClass (83,723.3815, -1494.9203,1.9343,359.2792,0,0,0,0,0,0);
    AddPlayerClass (92,1126.6831, -1425.8101,15.7969,357.7497,0,0,0,0,0,0);
    retornar 1;
}

Vamos adicionar um veículo para o script / servidor. Leia mais.
Nós vamos usar AddStaticVehicle. Nós vamos adicionar isso sob a OnGameModeInit.
Nós estamos indo para usar o / salvar comando para obter nossas coordenadas para que o veículo irá desovar.

Aqui estão as minhas coordenadas
Código:
(0,1478.9257, -1737.8595,13.2929,270.0982,0,0);
O primeiro 0 na coordenadas será a identificação do veículo, então vamos mudar isso para 402.

Portanto, temos o seguinte:

Código:
OnGameModeInit pública ()
{
SetGameModeText ("v2.0.0 Party");
// ------------------------ [PLAYER classe de seleção] ------------------- -------
AddPlayerClass (23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);
    AddPlayerClass (46,1831.0970, -1682.6102,13.5469,88.3051,0,0,0,0,0,0);
    AddPlayerClass (45,1481.3297, -1748.6530,15.4453,359.7071,0,0,0,0,0,0);
    AddPlayerClass (83,723.3815, -1494.9203,1.9343,359.2792,0,0,0,0,0,0);
    AddPlayerClass (92,1126.6831, -1425.8101,15.7969,357.7497,0,0,0,0,0,0);
    // --------------------------- [Servidor VEÍCULOS] ----------------- -------------
    AddStaticVehicle (402,1478.9257, -1737.8595,13.2929,270.0982,0,0);
retornar 1;
}

Então, sim, como eu disse este é o tutorial básico. Há mais tutoriais adiantamentos sobre SA: MP fóruns. Então eu vou terminar o meu tutorial, fazendo um simples comando / help.

Isto é o que temos:

Código:
OnPlayerCommandText pública (playerid, cmdtext [])
{
if (strcmp ("/ mycommand", cmdtext, é verdade, 10) == 0)
{
// Faz alguma coisa aqui
retornar 1;
}
retornar 0;
}

Portanto, vamos trabalhar nesse ....
Vamos fazer isso:

Código:
{
if (strcmp ("/ help", cmdtext, verdadeiro, 4) == 0)

Agora vamos adicionar o nosso SendClientMessage.
Vamos fazer isso:

Código:
SendClientMessage (playerid, 0xFFFFFF, "Este é um Script Deathmatch.");

Portanto, temos o seguinte:

Código:
OnPlayerCommandText pública (playerid, cmdtext [])
{
if (strcmp ("/ help", cmdtext, verdadeiro, 5) == 0)
{
SendClientMessage (playerid, 0xFFFFFF, "Este é um Script Deathmatch.");
        }
 retornar 0;
}

Lembrando, este é um tutorial para iniciantes, qualquer dúvida me chame nas Mensagens Privadas ou aqui mesmo !
Não manjo muito de Script, mas isso aí é o que eu sei, espero ter ajudado Wink 

Att. [SSGAMES LÍDER DOS SCRIPTERS]Black_Snake

Black_Snake

[Tutorial] Pawn pra iniciantes !! - Dom 20 Set 2015 - 11:55

Muitos vivem com essa idéia na cabeça de que "pawn." é a mesma coisa que "pwn." Aí que vocês se enganam ! Aí vai uma breve explicação seguido de um Tutorial ! *Para iniciantes*




  • Introdução a Linguagem
    Diretivas (Includes Defines)
    CallBacks (Publics)
    Funções
    Pequena Explicação a "Chaves"


Introdução (Definição a Linguagem)
Pawn é uma linguagem de programação de código aberto e de terceira geração, criada em 1998 pela empresa CompuPhase
Pawn é uma linguagem de programação compilável, ou seja, o seu código é transformado para linguagem de computador, que somente o intérprete da linguagem consegue entender. O intérprete da linguagem, é a máquina virtual, onde o código passa a ser chamado de AMX. AMX é interpretado como na linguagem de programação Assembly, assim, podendo ser interpretado com outras linguagens de programação de terceira geração, como por exemplo, C++.

Fonte: Wikipédia
Diretivas

  • Includes e Defines

O Que São Includes?
Bom Includes São arquivo *INC no quais são colocados para ocupar menos espaço ao GM e não declarar novas variaveis.
Como Adicionar uma Includes?
Bom Basta ao Topo do GM Adicionar:
Code:
Ex:
Code:
Todo GM Deve Conter a Include "a_samp" pelo fato de ser a includes padrão que contém a básicas e principais funções
Aqui as Funções da mesma:
Quote:
[table border="0" cellpadding="6" cellspacing="0" width="100%"][tr][td class="alt2" style="border: 1px solid #C2C2C2; font-size: 8pt;"]http://stephantom2.st.funpic.de/expe..._samp-inc.html [/td]
[/tr]
codigo bloqueado

  • Defines

São Usadas para Definir algo a um código muito usado em cores etc..
Exemplo:
Code:
#define COR_GAY 0x0000CDFF
Então Ira Definir a Cor Então ao Código Ficando:
Code:
SendClientMessage(playerid, COR_GAY, "Este é um Exemplo de mensagem");

  • News/Arrrays

:
New como próprio nome já diz server para adicionar novas funções ao GM/FS exemplo:
Code:
new string[128];
Arrays também podem ser declaradas com grupos de dados padrão, tais como:
Code:
new numeros[4]= ( 0,1,2,3)

  • Boleans/Boleana

:
O último tipo é variável "boolean". É muito simples - ou é "true", ou "falso". Tanto "1" e "0" são estruturas de dados pré-definidos.
Code:
new bool : xyz = true / / Declara uma nova variável xyz "definido como verdadeiro
Exemplo em um SetTimer:
Code:
SetTimer("PUBLICADICIONAL",1000,false); //FALSE = FALSO ou Seja Não ira Repetir o SetTimer e TRUE = Verdadeiro Irá Repetir

  • CallBacks

:
São as Chamadas Publics Cada uma tem uma função, Tais Como
OnPlayerCommandText -> Ao Player Digitar Coomand
OnPlayerText -> Ao Player Digitar

Todas CallBacks Deve Seguir o Modelo:
Code:
public OnGameModeInit
{//DEVERÁ SER ABERTO
//CÓDIGOS E FUNÇÕES QUE IRÁ ADICIONAR
return 1;//RETORNA A UMA FUNÇÃO ESPECIFICA true/false/1/0
}//SE FOI ABERTO DEVE SER FECHADO

  • Alguma Funções do a_samp

:
Code:
Print Escrever Texto ao Console
printf Escrever uam string ao console (tela preta)
SendClientMessage Envia Mensagem ao Player
SendClientMessageToAll Envia Mensagem a Todo players Spawneados
GameTextForAll Envia Mensagem ao centro da tela a Todos players Spawneados
GameTextForPlayer Envia Mensagem ao centro da tela apenas a 1 player
SetTimer Iniciar um Temporarizado que chama um public a numero de segundos...
KillTimer Parara o Temporazidaor
GetTickCount Retorna o número de milissegundos desde a OS foi iniciado.
SetGameModeText Mudará o Nome de GameMode
SetTeamCount Define o número de equipes permitido.
AddPlayerClass Adicionara um Class ao player Onde Spawnara por padrão Incluindo armas
AddStaticVehicle Adicionar um Veiculo estaticos Definindo as Cores
AddStaticPickup Adicionar um Pikcup estaticos Definindo os Medelos
ShowNameTags Define se será mostrado o nome do player encima
ShowPlayerMarkers Definir se os jogadores marcadores (no mapa/radar) deve ser mostrado ou não.
GameModeExit Sair do modo de jogo
SetWorldTime Acerte o relógio do jogo a um certo tempo e congelá-lo.
GetWeaponName Pegar Nomes
IsPlayerAdmin Define se admin ou nao
Kick Kickar Player
Ban Banir player
SetSpawnInfo
SpawnPlayer Define alguns parâmetros spawn (incluindo a equipe, a pele, gerando posição, armas e munições)
SetPlayerTeam Define a Equipe do Player
GetPlayerTeam Geta/Pega a equipe do Player
SetPlayerSkin Muda Skin do player
SetPlayerScore Muda Scoredo player
GetPlayerScore Geta Score do Player
GetPlayerPos Geta Posição do Playe
SetPlayerPos Muda Posição do Player do player
GetPlayerHealth Geta Vida do Player
SetPlayerHealth Muda Vida do player
PutPlayerInVehicle Coloque Player no Veiculo
RemovePlayerFromVehicle Remove Player do Veiculo
IsPlayerInVehicle Determina se um jogador está em um determinado veículo.
IsPlayerInAnyVehicle Determina se um jogador está em qualquer veículo.
GetPlayerName Obter o nome de um jogador do seu ID e armazená-lo em nome de [].
SetPlayerColor Muda Cor do Player
GetPlayerColor geta cor do player
SetPlayerCheckpoint Seta um Check Point a Player
DisablePlayerCheckpoint Disbilita o Check Point ao player
IsPlayerInCheckpoint Define se o player esta em um checkpoint
SetPlayerInterior Muda Player para um interior
SetPlayerCameraPos muda camera do player
SetPlayerCameraLookAt muda visão da camera ao player
TogglePlayerControllable Define se o player pode se mecher
PlayerPlaySound Toca um som ao player
SetPlayerWorldBounds Muda Player a um Virtual Word
GivePlayerMoney dá dinheiro ao player
SetPlayerFacingAngle Set o Angula da Face do player
GetPlayerMoney getar Dinheiro do player
ResetPlayerMoney Reseta Dinheiro do playera 0
IsPlayerConnected Define se o player esta conectado
GetPlayerState Geta Estado do Player
ResetPlayerWeapons Reseta Armas do player
GivePlayerWeapon dar arma ao player
CreateVehicle criar um veiculo nao estatico
GetVehiclePos geta pos do veiculo
SetVehiclePos seta pos do veiculos
SetVehicleZAngle seta angulo do veiculos
SetVehicleParamsForPlayer seta parametros ao player do veiculos
SetVehicleToRespawn respawn o veiculos
AddVehicleComponent adiciona componentes ao veiculos
ChangeVehicleColor mudar cor do veiculo
ChangeVehiclePaintjob Alterar o paintjob sobre um determinado veículo.
Forwards Declarar CallBacks (publics) Adicionais
OnGameModeInit ao gamemode iniciar
OnGameModeExit ao gamemode desligar
OnFilterScriptInit ao fs iniciar
OnPlayerConnect ao player conectar
OnPlayerDisconnect ao player desconectar
OnPlayerSpawn ao player spawnar
OnPlayerDeath ao player morrer
OnVehicleSpawn ao player spawnar
OnPlayerText ao player digitar
OnPlayerCommandText ao player digitar comando
OnPlayerEnterVehicle ao player entrar no veiculo
OnPlayerExitVehicle ao player sair do veiculo
OnPlayerStateChange ao player mudar de estado
OnPlayerEnterCheckpoint ao player entrar ao check point
OnPlayerLeaveCheckpoint

  • Comparadores

:
Quote:
[table border="0" cellpadding="6" cellspacing="0" width="100%"][tr][td class="alt2" style="border: 1px solid #C2C2C2; font-size: 8pt;"]+ > Executa como Adição.

- > Executa como Subtração.

* -- > Executa como Multiplicação.

/ -- > Executa como Divisão.

> -- > Executa como Maior que.

< -- > Executa como Menor que.

= --> Executa como Igual.

!= -- > Executa como Diferente.
[/td]
[/tr]
codigo bloqueado

Bom, é um Tutorial Apenas de Base não explica coisa avançadas espero que tenham entendido! Se tiver alguma dúvida deixe aí em baixo !!


Att.[SSGames Líder dos Scripters] BlackSnake_.

[Tutorial] Como Colocar Imagem ao Logar-se ou Registra-se - Seg 3 Ago 2015 - 19:53

Olá,Eu Esto Fazendo a Nova Versão do Meu Servidor(a primeira) e fiz esse fundo de login,eu quis postar aqui.1

Codigo Pawno:
#include a_samp
---------
new Text: ImagemEntrada;
---------
public OnPlayerConnect(playerid)
{
                                                                                            TextDrawShowForPlayer(playerid, ImagemEntrada);
 }
---------
public OnPlayerRequestClass(playerid, classid)
{
                                                                                                TextDrawHideForPlayer(playerid, ImagemEntrada);
}





PS: Caso Houver algum bug, me contate pelo skype: bps.samp

Weslley_Script

Criador de radar de velocidade - Dom 14 Jun 2015 - 0:29

[size=32]Radar de velocidade[/size]

Eae galera estava sem fazer nada e decidi criar um criador de radar de velocidade, simples de mais, mais pode ser útil para quem tem servidor rp/g...

Imagens:

Criando radar
Tópicos com a tag include em SSGamers - 12 Anos online por você. 0dUjNDK
https://i.imgur.com/0dUjNDK.png


Radar criado
Tópicos com a tag include em SSGamers - 12 Anos online por você. SDumGy2
https://i.imgur.com/SDumGy2.png


Passando pelo radar e recebendo as estrelinhas la
Tópicos com a tag include em SSGamers - 12 Anos online por você. Rexsk7o
https://i.imgur.com/rexsk7o.png


Deletando o radar
Tópicos com a tag include em SSGamers - 12 Anos online por você. EFQIzxD
https://i.imgur.com/eFQIzxD.png

Comandos:
/comandos ~ /criarradar ~ /deletarradar
É necessário estar logado na rcon para digitar os comandos!

Includes necessárias:
ZCMD ~ SSCANF ~ DOF2

**Obs: é necessário criar uma pasta Radares no scriptfiles

Código...

[size=11]Code:
[/size]
#include
#include zcmd
#include sscanf
#include dof2
#define MAX_RADAR 100

#define PastaRadares "Radares/Radar%d.ini"

static
lString[256],
radarid[MAX_PLAYERS],
vel,
Text3D:TRadar[MAX_RADAR],
Variavel[MAX_PLAYERS],
ObjetoRadar[2][MAX_RADAR],
CriandoRadar,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:Angulo;
enum radar {
Float:lPosX,
Float:lPosY,
Float:lPosZ,
Float:lAngulo,
lVelocidade,
};
new InfoRadar[MAX_RADAR][radar];


public OnFilterScriptInit()
{
CarregarRadares();
return 1;
}

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

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 3030)
{
if(response)
{
static
strradar[100];
GetPlayerPos(playerid, PosX,PosY,PosZ);
GetPlayerFacingAngle(playerid, Angulo);
IdRadarLivre(playerid);
InfoRadar[radarid[playerid]][lPosX] = PosX;
InfoRadar[radarid[playerid]][lPosY] = PosY;
InfoRadar[radarid[playerid]][lPosZ] = PosZ-1.5;
InfoRadar[radarid[playerid]][lAngulo] = Angulo;
InfoRadar[radarid[playerid]][lVelocidade] = vel;
ObjetoRadar[0][radarid[playerid]] = CreateObject(18880, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ], 0.0, 0.0, InfoRadar[radarid[playerid]][lAngulo]);
ObjetoRadar[1][radarid[playerid]] = CreateObject(18880, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ], 0.0, 0.0, InfoRadar[radarid[playerid]][lAngulo] + 180.0);
format(strradar, sizeof(strradar),"{FF0000}Radar\nLimite de velocidade: %d KM/H",InfoRadar[radarid[playerid]][lVelocidade]);
TRadar[radarid[playerid]] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[radarid[playerid]][lPosX], InfoRadar[radarid[playerid]][lPosY], InfoRadar[radarid[playerid]][lPosZ]+1, 50.0, 0);
format(lString, sizeof(lString),"Radar ID: %d criado.",radarid[playerid]);
SendClientMessage(playerid, 0x004C00FF, lString);
SetPlayerPos(playerid, PosX+1,PosY+1,PosZ+1);
CriandoRadar = 0;
SalvarRadares();
}
else
{
CriandoRadar = 0;
SendClientMessage(playerid, 0xFFFFFFFF,"Você fechou o dialog de criar radar!");
}
}
return 1;
}

public OnPlayerUpdate(playerid)
{
CheckRadar(playerid);
return 1;
}

CMD:v(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x,y,z);
CreateVehicle(522,x,y,z,0,-1,-1,-1);
return 1;
}

CMD:comandos(playerid)
{
SendClientMessage(playerid, -1,"/criarradar | /deletarradar - Comandos apenas para admin rcon!");
SendClientMessage(playerid, -1, "Sistema de criar radar por Living(Living_22) qualquer erro entre em contato com o mesmo!");
return true;
}

CMD:deletarradar(playerid, params[])
{
new id, strpasta[200];
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xB40000FF,"Você não é um administrador!");
if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "Digite: /deletarradar [Id do radar]");
format(strpasta, sizeof(strpasta), PastaRadares, id);
if(DOF2_FileExists(strpasta))
{
DOF2_RemoveFile(strpasta);
format(lString, sizeof(lString), "Você deletou o radar de ID: %d.", id);
SendClientMessage(playerid, 0xFF0000FF,lString);
DestroyObject(ObjetoRadar[0][id]);
DestroyObject(ObjetoRadar[1][id]);
Delete3DTextLabel(TRadar[id]);
InfoRadar[id][lPosX] = 0;
InfoRadar[id][lPosY] = 0;
InfoRadar[id][lPosZ] = 0;
InfoRadar[id][lAngulo] = 0;
InfoRadar[id][lVelocidade] = 999;
return 1;
}
else
{
format(lString, sizeof(lString), "O radar de ID: %d não existe.", id);
SendClientMessage(playerid, 0xFF0000FF, lString);
}
return 1;
}

CMD:criarradar(playerid, params[])
{
new velocidade;
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xB40000FF,"Você não é um administrador!");
if(CriandoRadar == 1) return SendClientMessage(playerid,0xB40000FF, "Já tem alguém criando um radar, aguarde por favor!");
if(sscanf(params,"d",velocidade)) return SendClientMessage(playerid, 0x999C9BFF,"Digite: /criarradar [velocidade]");
vel = velocidade;
GetPlayerPos(playerid, PosX,PosY,PosZ);
GetPlayerFacingAngle(playerid, Angulo);
TogglePlayerControllable(playerid, true);
SetPlayerPos(playerid, PosX,PosY,PosZ);
format(lString, sizeof(lString),"{FFFFFF}Você deseja mesmo criar um radar neste local?\n\n");
format(lString, sizeof(lString),"%s{00B4FF}Posição X: {FFFFFF}%0.4f\n{00B4FF}Posição Y: {FFFFFF} %0.4f\n{00B4FF}Posição Z: {FFFFFF} %0.4f\n{00B4FF}Angulo: {FFFFFF}%0.4f\n{00B4FF}Velocidade: {FFFFFF}%d",lString,PosX,PosY,PosZ,Angulo,velocidade);
CriandoRadar = 1;
ShowPlayerDialog(playerid, 3030, DIALOG_STYLE_MSGBOX, "Criador de radar",lString, "Criar","Cancelar");
return 1;
}

forward CarregarRadares();
public CarregarRadares()
{
new
strradar[100],
strpasta[200];

for(new rad=0;rad {
format(strpasta,sizeof(strpasta),PastaRadares,rad);
if(DOF2_FileExists(strpasta))
{
InfoRadar[rad][lVelocidade] = DOF2_GetInt(strpasta,"Velocidade");
InfoRadar[rad][lPosX] = DOF2_GetFloat(strpasta,"PosX");
InfoRadar[rad][lPosY] = DOF2_GetFloat(strpasta,"PosY");
InfoRadar[rad][lPosZ] = DOF2_GetFloat(strpasta,"PosZ");
InfoRadar[rad][lAngulo] = DOF2_GetFloat(strpasta,"Angulo");
ObjetoRadar[0][rad] = CreateObject(18880, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ], 0.0, 0.0, InfoRadar[rad][lAngulo]);
ObjetoRadar[1][rad] = CreateObject(18880, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ], 0.0, 0.0, InfoRadar[rad][lAngulo] + 180.0);
format(strradar, sizeof(strradar),"{FF0000}Radar\nLimite de velocidade: %d KM/H",InfoRadar[rad][lVelocidade]);
TRadar[rad] = Text3D:Create3DTextLabel(strradar, -1, InfoRadar[rad][lPosX], InfoRadar[rad][lPosY], InfoRadar[rad][lPosZ]+1, 50.0, 0);
}
}
return 1;
}

forward SalvarRadares();
public SalvarRadares()
{
new
strpasta[200];

for(new rad=0;rad {
format(strpasta,sizeof(strpasta),PastaRadares,rad);
if(DOF2_FileExists(strpasta))
{
DOF2_SetInt(strpasta,"Velocidade",InfoRadar[rad][lVelocidade]);
DOF2_SetFloat(strpasta,"PosX",InfoRadar[rad][lPosX]);
DOF2_SetFloat(strpasta,"PosY",InfoRadar[rad][lPosY]);
DOF2_SetFloat(strpasta,"PosZ",InfoRadar[rad][lPosZ]);
DOF2_SetFloat(strpasta,"Angulo",InfoRadar[rad][lAngulo]);
}
}
return 1;
}

forward CheckRadar(playerid);
public CheckRadar(playerid)
{
new
Float:PlayerSpeedDistance,
VelocidadeDoPlayer[MAX_PLAYERS];

GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
PlayerSpeedDistance = floatmul(floatsqroot(floatadd(floatadd(floatpower(PosX, 2), floatpower(PosY, 2)), floatpower(PosZ, 2))), 170.0);
new spe = floatround(PlayerSpeedDistance * 1);
VelocidadeDoPlayer[playerid] = spe;
for(new rad = 0; rad < MAX_RADAR; rad++)
{
if(IsPlayerInRangeOfPoint(playerid, 8.0, InfoRadar[rad][lPosX],InfoRadar[rad][lPosY],InfoRadar[rad][lPosZ]))
{
if(VelocidadeDoPlayer[playerid] > InfoRadar[rad][lVelocidade])
{
if(gettime() > Variavel[playerid])
{
Variavel[playerid] = (gettime() + 1);
format(lString, sizeof(lString),"(Radar) Você ultrapassou o limite de velocidade, o limite é {FFFFFF}%d KM/H{FD0600} e você passou a {FFFFFF}%d KM/H!",InfoRadar[rad][lVelocidade],VelocidadeDoPlayer[playerid]);
SendClientMessage(playerid, 0xFD0600FF,lString);
SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+1);
}
}
}
}
return 1;
}

stock IdRadarLivre(playerid)
{
static
rstring[74];
for(new i; i< MAX_RADAR; i++)
{
format(rstring, sizeof rstring, PastaRadares, i);
if(!DOF2_FileExists(rstring))
{
radarid[playerid] = i;
DOF2_CreateFile(rstring);
return 1;
}
}
return 0;
}
Créditos a mim Living(Living_22) por ter criado o sistema
Créditos aos criadores das includes zcmd,sscanf,dof2

Bad_Boi

[Include] Fogueira em SA-MP 'Object' By OTACON - Sáb 18 Abr 2015 - 11:25

[] Fogueira em SA-MP 'Object' By OTACON


Tópicos com a tag include em SSGamers - 12 Anos online por você. 8gj6



[] informações:
N/A



[] função:

native CreateObjectCampfire(&slots, &Float:x, &Float:y, &Float:z, &Float:a); //para criar o objeto da Fogueira.
native DestroyObjectCampfire(&slots); //A fim de destruir o fogo
native IsPlayerInRangeOfFire(playerid, &Float:distance); /para verificar se o jogador está perto do objeto da Fogueira.


] Exemplo de Uso:

#include
#include
#include

public OnFilterScriptInit() {
print("\n**************************************");
print(" Fogueira em SA-MP 'Object' ");
print(" Date: 16/07/2013 ");
print(" Author: OTACON ");
print(" --* Loaded with Success!!. *-- ");
print("***************************************\n");

CreateObjectCampfire(0, 664.4656,-1903.3425,3.1809,353.5751);
return true;
}
public OnFilterScriptExit() {
print("\n**************************************");
print(" Fogueira em SA-MP 'Object' ");
print(" Date: 16/07/2013 ");
print(" Author: OTACON ");
print(" --* Downloaded with Success!!. *-- ");
print("***************************************\n");

DestroyObjectCampfire(0);
return true;
}
COMMAND:fire(playerid, params[]) {
if(!IsPlayerConnected(playerid)) return true;
if(IsPlayerInRangeOfFire(playerid, 3.0)) SendClientMessage(playerid, -1, " [ ! ] Você vai encontrar perto da Fogueira.!.");
else SendClientMessage(playerid, -1, " [ ! ]Você não vai estar localizado perto da Fogueira!.");
return true;
}


[] Transferências:
https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQ-5BH-i6iDJGGrPuwBmCsxpejAux_1epUquuatuSGZqj4jUxrv8A (http://www.solidfiles.com/d/9268107220/)

[] senha:
Otacon

[] créditos:
OTACON

Bad_Boi

[Include] Timer [Para PayDay's, etc] - Sex 17 Abr 2015 - 23:39

- Como funciona?
Você adiciona a include a pasta: pawno/include, depois segue os passos abaixo e pronto!


- O que tem de bom?
É um timer, que ao chegar ao tempo correto, ele chama uma Public (ele salva e se desconectar, voltará de onde parou), assim podendo ser utilizado em PayDay's, sistemas de prisão, etc!


- Legal, como instalo?

Primeiro, baixe a Include: http://solidfiles.com/d/58b9/
Depois de colocá-la na pasta das include do pawno, siga os passos:

1º- No topo de seu GameMode:
#include

2º- Em seu OnPlayerConnect, adicione:
OnPlayerConnect_SZTimer(playerid);

3º- Em seu OnPlayerDisconnect, adicione:
OnPlayerDisconnect_SZTimer(playerid);

4º- Crie uma pasta chamada: Tempo na pasta scriptfiles

5º- Adicione a publique em seu GameMode:
public OnPlayerTimerFinish(playerid) 
{
//Coloque aqui, o que é para fazer quando chegar ao tempo delimitado
return 1;
}


Pronto!
Está instalado e pronto para uso!

Opcional
Para pegar o tempo restante para o PayDay, para alguma pessoa, use:
GetTimeToFinish(playerid);

Configurações "Default"
- Timer a cada 1 minuto
- Depois de 30 minutos conectados, chama a Public
- Lugar dos arquivos: Tempo


Obs: Todas as configurações, podem ser mudadas a partir das Define's na Include!
Obs²: Se seu sistema de registro é em Dini, mude o lugar da Pasta para o arquivo do player, assim ocupando menos espaço!
No tempo, é sempre em milisegundos!



Bom proveito!
*Por favor, não retire os meus créditos, mesmo editando ele por completo!*
*Publicação em Blogs/sites permitida, desde que com os devidos créditos!*

Viny_

[Tuturial]Criando Um Gamemode [GM] iniciantes - Qua 15 Abr 2015 - 11:40

Olá Pessoal do fórum, neste tutorial irei ensinar passo-a-passo a como criar um gamemode do zero, aqui irei ensinar a fazer um GM com algumas funções mais usadas e irei explica-las totalmente, então vamos lá...

Algumas pessoas tem dúvida se Pawno é a mesma coisa que Pawn, então eu digo, nada a vêr...
Pawno é um programa editor de C++ que é usado para criar gamemodes, filterscript e includes..
Pawn é uma linguagem de script de código aberto dentro do Pawno, que tem por abreviação o formato do arquivo chamado .pwn, o mesmo só é reconhecido ao ser compilado apertando F5.

Então vamos ao restante..

No topo:

Code:
#include a_samp
Esta include ela é a principal função que faz com que seu GM funcione, motivo: dentro da include a_samp.inc bem dizer tem tooodas as funções, exemplo: SetTimer, SetPlayerHealth, SetPlayerArmour, etc...

Depois vamos adicionar o:

Code:
main()
{
}

Esta função deve ser adicionada no GM ou seu GM não compila, então dentro desta main() você pode adicionar uma 

Code:
print("Mensagem");
Pra que serve essa print?
Então ela serve para mandar uma mensagem no log do seu servidor, que você pode adicionar em qualquer função do gamemode, exemplo:

Code:
main()
{
print("Servidor execultado com sucesso");
print("-------------------------");
print("Forum.SA-MP.com - Acesse!");
}

Ele enviará as seguintes mensagens para seu server-log.txt,
Servidor execultado com sucesso
-------------------------
Forum.SA-MP.com - Acesse!


Logo após você adiciona uma das principais funções de um gm

Code:
public OnGameModeInit()
{
return 1;
}

Nesta função você adiciona as funções que vai fazer funcionar no seu gm, exemplo: quero adicionar skins e veículos, você usará

Code:
public OnGameModeInit()
{
AddPlayerClass(skinid, Float:X, Float:Y, Float:Z, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:angle, color1, color2);
return 1;
}

Que para aumentar o número de skins e veículos basta apenas você ir duplicando...

Logo após viemos fazer o:

Code:
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}

Aqui será a visualização dos skins que terá no servidor, que para exibir as skins você usará

SetPlayerPos
SetPlayerInterior
SetPlayerCameraPos
SetPlayerCameraLookAt

Essa são apenas algumas das funções mais usadas na public OnPlayerRequestClass(playerid, classid) com seus links da wiki com suas explicações...

Voltando ao public anterior que fizermos e com suas funções ele ficaria deste modo:

Code:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, Float:x, Float:y, Float:z);
SetPlayerInterior(playerid, interiorid);
SetPlayerCameraPos(playerid, Float:x, Float:y, Float:z);
SetPlayerCameraLookAt(playerid, Float:x, Float:y, Float:z);
return 1;
}


Agora passando para o próximo passo é o:

Code:
public OnPlayerConnect(playerid)
{
return 1;
}

Nesta calbak é usada para quando o player se conecta ao servidor ou para carregar alguns sistemas ou funções, exemplo: sistema de login, entre outros que não me vem na cabeça '-'

Aqui vai um exemplo de um código na public OnPlayerConnect(playerid) que vai identificar quando o player se conecta ao servidor:

Code:
public OnPlayerConnect(playerid)
{
new str[78], pnome[MAX_PLAYER_NAME];
GetPlayerName(playerid, pnome, sizeof(pnome));
format(str, sizeof(str), "%s (ID:%d) conectou-se ao servidor.", pnome, playerid);
SendClientMessageToAll(-1, str);
return 1;
}

Então aqui vai o nome das funções com seus links de explicações na SA-MP Wiki

GetPlayerName
format
SendClientMessageToAll - OBS: Na wiki eles tão dando a SendClientMessageToAll em uma só linha como se fosse SendClientMessage, mais aqui neste tutorial avançei um pouco fazendo com format '-', não é difícil de entender Tópicos com a tag include em SSGamers - 12 Anos online por você. Wink

Próximo passo será o:

Code:
public OnPlayerDisconnect(playerid, reason)
{
return 1;
}

Na public OnPlayerDisconnect é quase a mesma coisa que o public OnPlayerConnect só que na public OnPlayerDisconnect já fala né, quando o player desconecta do servidor.. é usado a mesma função da que está na public OnPlayerConnect(playerid) não tem nada de difícil Tópicos com a tag include em SSGamers - 12 Anos online por você. Wink

Próximo passo é o:

Code:
public OnPlayerSpawn(playerid)
{
return 1;
}

Esta calbak é a função que o player nasce, que para fazer o player nascer é usado SetPlayerPos e SetPlayerInterior exemplo:

Code:
public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid, interiorid);
SetPlayerPos(playerid, Float:x, Float:y, Float:z);
return 1;
}

Lembrando que para pegar os interiores você deve entrar dentro do interior que deseja depois digitar /interior, você pode fazer com que o player dê spawn dentro de interior ou não...

Próximo passo iremos mecher com:

Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}

Hoje em dia, muitos scripters profissional ou até mesmo iniciantes ou intermediários usam o strcmp enquantos alguns usam ZCMD, para dar inicio a criação de um comando simples usaremos o seguinte:

Code:
if(strcmp(cmdtext, "/seucomando", true) == 0)
{
//Função
return 1;
}

Este é um comando para você ter uma noção de como se faz o comando, que o mesmo também pode ser desta forma:

Code:
if(strcmp("/seucomando", cmdtext, true, 10) == 0)
{
//Função
return 1;
}

Vai dar na mesma coisa, só que pelo que vimos fica maior né? Dai você se pergunta o que aquele 10 faz ali? Então ela é uma string para o comando que não pode ser definida em nome, somente em número.. O comando junto com a public OnPlayerCommandTextficará:

Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/seucomando", true) == 0)
{
//Função
return 1;
}
return 0;
}

Simples né? Para finalizar o:

Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}

Este é para você por dialogs com id direcionado em comandos, sistema de logins e etc... Para saber mais informações sobre a OnDialogReponse acesse: http://wiki.sa-mp.com/wiki/OnDialogResponse
Lá tem tudo sobre o OnDialogResponse..

Então é isso aê pessoal, espero que tenham gostado, lembrando que fiz este tutorial para quem é "INICIANTE" depois não fale besteira =}

Qualquer dúvida, pode postar ai!
Há... Se eu esqueci de alguma coisa só falar ok?

Obrigado a todos, grande abraço!

__________________
[SSGames]Viny_

Weslley_Script

PAWN - SAMP - Qua 4 Fev 2015 - 2:30

PAWN

Índice
Introdução
Use o search
FAQ
Perguntas Frequentes
Primeiros passos
Examinando o código
Variaveis
Strings
Floats
Ints
Bools
Funções
Chamando
Definindo
Parâmetros
Exemplos de Funções
Source Code
Tipos de script
Créditos
Introdução
Bem, eu estive a pensar em criar um grande tutorial sobre pawn, já tenho algum conhecimento e penso que seja capaz de fazer um tutorial destes, tenho o objetivo de facilitar os membros a aprenderem pawn e tentar reduzir as duvidas que muitos tem, lembrando que isto é um tutorial muito complexo.
Use o search
Muita gente vem ao forum sa-mp e cria uma conta, espera que ela seja ativada e começa a criar pedidos de ajudas sem verificar as regras e/ou sem procurar no forum usando o search, muitas vezes o que nós escrevemos é absurdo, ou seja, é algo que a probabilidade que exista é nula, por exemplo:

"O meu sistema de gasolina não funciona" (ERRADO)
"sistema de gasolina" (CERTO)
Por vezes podemos não achar o que queremos em português, então se colocarmos em inglês podemos ter algum resultado, veja "fuel system" , nem sempre o forum facilita a nossa ajuda, então também é aconselhável usar o Google.
Na minha opinião é mais interessante procurar do que for criar um tópico, porque ao procurar você ganha conhecimento e experiência.
FAQ
Perguntas Frequentes
Pergunta: O que é o PAWN?
Resposta: PAWN é uma linguagem de programação não-oficial, criada em 1998 pela ITB CompuPhase, pawn é derivado da linguagem de programação chamada Small-C e que tem uma sintaxe parecida a C.
Pergunta: O que é o PAWNO?
Resposta: Pawno é o IDE(Integrated development environment) oficial da linguagem de programação pawn, ou seja, pawno é o editor da linguagem de programação.
Pergunta: O que é o PAWNCC?
Resposta: O pawncc é o compilador, ele serve para compilar os nossos códigos, após serem compilados será criado um arquivo .amx .
Pergunta: PAWN é uma linguagem de programação oficial?
Resposta: Não, pawn é uma linguagem de programação não-oficial, ele é usado em jogos, como o SA-MP, Counter-Strike 1.6 AmxMod, Half-Life mod.
Pergunta: PAWN é dificil de programar?
Resposta: Não, eu acho pawn uma linguagem muito simples de programar, após você aprender pawn, torna-se simples aprender as outras linguagens de programação.
Pergunta: O que é um GF?
Resposta: GF, vem do prefixo GodFather, o GF foi um Gamemode muito famoso, é atualmente utilizado pela maioria dos servidores de RPG no Brasil e em Portugal.
Pergunta:Vale a pena editar um gamemode?
Resposta:Na minha opinião não, porque muitos desses gamemodes vem bugados, mal feitos, sem optimização, não utilizam coisas corretas, etc... Mas existem gamemodes que são bem feitos e bem estruturados, esses sim vale a pena editar.
Pergunta:Vale a pena criar um gamemode?
Resposta: Sim, lembre-se que tudo criado por si é bom, claro que nem sempre podemos usar coisas criadas por nós, porque cada linguagem de programação tem coisas nativas que foram criadas por outras pessoas, mas sobre criar um gamemode, vale sempre mais a pena criar o seu gamemode, você conta com muitas coisas, optimização, sem bugs, estruturado, coisas exclusivas, entre outras...
Pergunta: Porque devo deixar os créditos de um script que eu não fiz?
Resposta: Bem, como disse nem todos os scripts são feitos por nós certo, então convém deixar os devidos créditos do autor, os créditos não precisam de ser um comando, deixar no script já é muito útil, então pense sempre, gostava que alguém roubasse algo seu e disse-se que foi ele que fez?
Clique aqui para ver mais Perguntas Frequentes
Primeiros passos
Bem, os primeiros passos são fáceis, mas muita gente pergunta "Como eu começo a programar pawn?", simples, se você quer mesmo programar pawn basta ter dedicação e você aprende.
Pawn não é um quebra cabeças, muito pelo contrario, no inicio pode ser complicado, mas se nos dedicarmos ele torna-se fácil.

Então para começar você deve fazer o download do sa-mp server:
SA-MP 0.3e Windows Server: Download
SA-MP 0.3e Linux Server (x86): Download

1º Após fazer o download, extraia os arquivos para uma pasta.
2º Apos extrair os arquivos, abra o pawno e clique em new.
3º Agora vamos começar por criar um pequeno script, começe por eliminar tudo menos:
#include
public OnFilterScriptInit
public OnFilterScriptExit
public OnPlayerConnect
4º Apos isso, compile (pressionando F5) e de um nome ao seu arquivo.
Após você ter compilado o arquivo, poderemos começar a programar e a criar pequenas coisas, lembre-se que o source code deve se parecer com este.
Source code (*.pwn):
pawn Code:



Código:
#include <a_samp>

public OnFilterScriptInit()
{
   print("\n--------------------------------------");
   print(" Blank Filterscript by your name here");
   print("--------------------------------------\n");
   return 1;
}

public OnFilterScriptExit()
{
   return 1;
}

public OnPlayerConnect(playerid)
{
   return 1;
}

Examinando o código
Agora vamos passar a fase de examinar o código, quando examinamos o código temos a noção do que estamos a fazer, por vezes é util usamos comentarios, ou seja (//comentário) , assim isto facilita-nos quando temos de ler o nosso código, se implementarmos a lógica nos comentários ate podemos resolver alguns bugs caso eles existem.
Variaveis
As variáveis são coisas muito importantes no nosso script, para alem de serem dinâmicas, elas guardam dados temporários, ou seja, enquanto tivermos o server ligado e as variáveis não modificadas, sem valores alterados, os dados vão ser iguais.
Strings
Uma string, é uma Array1D, que permite-nos armazenar caracteres, para quem não sabe, array's1D são aquelas arrays que contem apenas um [], ou seja, new arr[20]; , isto é uma array 1D, pelo que eu sei, o máximo que existe é ate 4D's, ou seja, new arr[20][20][20][20]; , então, digamos que a string é uma array 1D, lembrando que tambem é possivel criar uma string com apenas um caracter, mas eu chamo isso de, cell, ou seja, new arr = '1'; , mas para ser considerada uma string é necessário ser no mínimo 1D, menos que isso, será considerada uma cell, ou seja, célula e lembrando que as cells só permitem apenas 1 carácter.
Floats
Uma float, é uma variavel decimal, ela contem um ponto (.) entre os dois numeros, para declararmos uma float, necessitamos de fazer, new Float:tempposx; , penso que o tamanho máximo da Float é entre 6000 e -6000, isto é o tamanho do mapa do GTA.
Ints
Uma int, é uma variavel base, os dados que armazenamos na int pode ser números, ou Hexadecimal, para criarmos uma int, basta escrever new arr = 1;
Bools
Uma bool, é uma variável que tem apenas 2 condições, verdadeira ou falsa, para declararmos uma variavel booleana, basta escrever, new bool: arr = false;
Funções
As funções podem ser funções nativas, como SendClientMessage , ou podem ser funções criadas por nós, as funções podem ser criadas de 5 formas, forward & public, stock, #define, native ou digitando apenas o nome da função.
Chamando
Para chamarmos uma função podemos usar 3 formas, via timer, via Remote/Local Function ou via normal, para chamarmos via timer, usamos o SetTimer ou SetTimerEx.
pawn Code:
SetTimer(callback[],tempo,bool:repetir)
callback[] Neste parâmetro iremos definir o nome da função que queremos chamar.
tempo Neste parametro iremos definir o tempo necessário para a função ser chamada, lembrando que o tempo é definido em ms, ou seja, milissegundos, clique aqui para ver um conversor de tempo
repetir Neste parâmetro iremos definir se queremos chamar a função apenas 1 vez, ou se queremos chamar a função para sempre, lembrando que aqui teremos que usar apenas a condição verdadeiro ou falso, ou seja (1, true || 0, false)
Nota: Esta função funciona apenas para publics.
pawn Code:
SetTimerEx(callback[],tempo,repetir,format[],{Float,_}:...);
callback[] Neste parâmetro iremos definir o nome da função que queremos chamar.
tempo Neste parametro iremos definir o tempo necessário para a função ser chamada, lembrando que o tempo é definido em ms, ou seja, milissegundos, clique aqui para ver um conversor de tempo
repetir Neste parâmetro iremos definir se queremos chamar a função apenas 1 vez, ou se queremos chamar a função para sempre, lembrando que aqui teremos que usar apenas a condição verdadeiro ou falso, ou seja (1, true || 0, false)
format[] Aqui iremos definir o parametro que queremos usar, ou seja:
i & d - Representa um parâmetro inteiro, ou seja, uma int
s - Representa um parâmetro string, ou seja, uma string
f - Representa um parâmetro float, ou seja, uma float.
b - Representa um parâmetro bool, ou seja, uma booleana.
{Float,_}:... Número indefinido de argumentos para passar
Nota: Esta função funciona apenas para publics.
Tambem podemos usar o CallRemoteFunction para chamar funções de um filterscript, mas lembrando que essas funções tem de ser publics, para chamar funções normais, basta colocar o nome dela no script, exemplo.
pawn Code:



Código:
SayHello();,kr




Definindo
Como disse a pouco, existem 5 formas para definir uma função, então vamos rever.
public & forward Criarmos uma função com public & forward é mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), também é rápida.
stock Criarmos uma função com stock, são funções simples, como dar dinheiro do jogador e nível ao mesmo tempo, entre outras, veja um exemplo stock HelloWorld();
#define Podemos criar uma pequena função com o #define, porém na minha opinião e pelo que me disseram, usar #define não vale muito a pena, porque o #define ao ser executado ele vai ser criado varias vezes tornando o tamanho do amx maior.
native Isto é muito curiso, porque quando se cria uma include, podemos colocar /* native HelloWorld(); */ e ele vai mostrar a função na lista lateral direita, onde tem todas as includes, mas a native é usada para plugins, digamos que ela faz a conexão entre o script e o plugin.
Nome da função Em vez de criarmos uma stock, podemos colocar logo o nome da função, veja HelloWorld();
Parâmetros
Os parâmetros de uma função são variáveis que nos permitem transferir dados, ou seja, em vez de usarmos variáveis globais, podemos usar variaveis locais e transferir os dados para essa mesma função, vejamos:




pawn Code:
Código:
stock MyFunction(&var,var2){
    var = 1;
    var2 = 2;
    printf("var1: %d | var2: %d",var,var2);
    return 1;
}


Como podemos ver aqui, usamos 2 integers, mas o primeiro tem um &, esse & serve para passar valores por referencia, ou seja, quando fazemos



pawn Code:
Código:
new xd = 3,xd2 = 4;
printf("xd: %d | xd2: %d",xd,xd2);
MyFunction(xd,xd2);
printf("xd: %d | xd2: %d",xd,xd2);


O valor do xd será passado por referencia e em vez de ficar 3, ficara 1, veja esta imagem:

 Tópicos com a tag include em SSGamers - 12 Anos online por você. 2l8ykk7


Então só podemos usar o & para as seguintes coisas: ints,floats e bools, não é possível usar em uma string porque elas já são passadas por referencia.
Vejamos como podemos definir os parametros em uma função:
pawn Code:
MyFunction(var,Float:var2,bool:var3,var4[]):
//var - aqui temos um parâmetro integer.
//var2 - aqui temos um parâmetro float.
//var3 - aqui temos um parâmetro booleano.
//var4 - aqui temos um parâmetro array 1D ou uma string.
Exemplos de funções
SayHello
Função criada a partir de stock e o seu objetivo é mandar uma mensagem personalizada para o servidor.
Source Code:

pawn Code:
Código:
stock SayHello(playerid,text[]){ //definimos os nossos parâmetros aqui, neste caso usaremos uma int e uma array 1D (string)
    
    if(strlen(text) > 3 && IsPlayerConnected(playerid)) //verificamos se a nossa string tem mais que 3 caracteres e se o jogador esta conectado.
        return SendClientMessage(playerid,-1,text);
        //retornamos com uma mensagem para um jogador.
    return 1;
}

Exemplo de uso:
pawn Code:
SayHello(playerid,"Bot diz: Olá mundo!");
PawnLogin


Função criada sem stock, permito-nos avisar todos os jogador quando algum jogador novo entra.
Source Code:

pawn Code:
Código:
PawnLogin(playerid){
    static string[80]; //definimos o tamanho da nossa string usando static, assim será uma variável estática e não será sempre criada, o tamanho dela é 25(nome do jogador) + 31(texto);
    [GetPlayerName(playerid,string,25); //pegamos o nome do jogador
    format(string,sizeof string,"O jogador %s entrou no servidor",string); //formatamos a nossa string
    SendClientMessageToAll(-1,string); //enviamos uma mensagem para todos os jogadores
    return 1;
}

PawnPaycheck
Esta função é criada com public & forward, a função dela é dar dinheiro aos jogadores online.


pawn Code:
Código:
forward PawnPaycheck(grana);
public PawnPaycheck(grana){
    for(new i; i<GetMaxPlayers(); ++i){ //fazemos um loop e o tamanho do loop será a quantidade de slots que existem no server.cfg
        if(IsPlayerConnected(i)) //verificamos se os jogadores estão conectados
            return GivePlayerMoney(i,grana),SendClientMessage(i,-1,"Parabéns voce recebeu $$"); //retornamos com dinheiro e uma mensagem.
    }
    return 1;
}


Nesta função podemos usar um timer, veja.
pawn Code:
SetTimerEx("PawnPaycheck",600000,true,"d",1000);
Então, o tempo de chamada será de 10 minutos, será sempre repetido e o dinheiro será de 1000.
Source Code
Então, após vermos estes exemplos e explicações obtemos um código como este:


pawn Code:
Código:
#include <a_samp>

stock SayHello(playerid,text[]){ //definimos os nossos parâmetros aqui, neste caso usaremos uma int e uma array 1D (string)
    
    if(strlen(text) > 3 && IsPlayerConnected(playerid)) //verificamos se a nossa string tem mais que 3 caracteres e se o jogador esta conectado.
        return SendClientMessage(playerid,-1,text);
        //retornamos com uma mensagem para um jogador.
    return 1;
}

PawnLogin(playerid){
    static string[80]; //definimos o tamanho da nossa string usando static, assim será uma variável estática e não será sempre criada, o tamanho dela é 25(nome do jogador) + 31(texto);
    GetPlayerName(playerid,string,25); //pegamos o nome do jogador
    format(string,sizeof string,"O jogador %s entrou no servidor",string); //formatamos a nossa string
    SendClientMessageToAll(-1,string); //enviamos uma mensagem para todos os jogadores
    return 1;
}

public OnFilterScriptInit()
{
    print(" *Filterscript carregado com sucesso.");
    SetTimerEx("PawnPaycheck",600000,true,"d",random(20000)); //usaremos a função random para dar dinheiro randonomicamente.
    return 1;
}

public OnFilterScriptExit()
{
    print(" *Filterscrip descarregado com sucesso");
    return 1;
}

public OnPlayerConnect(playerid)
{
    PawnLogin(playerid);    
    SayHello(playerid,"Bot diz: Seja bem vindo ao servidor");
    return 1;
}

forward PawnPaycheck(grana);
public PawnPaycheck(grana){
    for(new i; i<GetMaxPlayers(); ++i){ //fazemos um loop e o tamanho do loop será a quantidade de slots que existem no server.cfg
        if(IsPlayerConnected(i)) //verificamos se os jogadores estão conectados
            return GivePlayerMoney(i,grana),SendClientMessage(i,-1,"Parabéns voce recebeu $$"); //retornamos com dinheiro e uma mensagem.
    }
    return 1;
}


Isto foi apenas uma das coisas que podemos fazer, claro que podemos fazer outras coisa.
Tipos de script
Existem muitos tipos de script, desde um código útil ate um gamemode, então vejamos quais são os tipos de script.
Código Útil Um código util, é um script muito pequeno, ele pode ser apenas uma função (Clique Aqui)
FilterScript Um filterscript, pelo nome diz, filtro de script, é um script pequeno, que contem algumas funções e sistemas.
GameMode Um GameMode, pelo nome diz modo de jogo, é um script grande, em que os jogadores pode jogar nele, existem vários tipos de GameModes, desde RP,RPG,DM,TDM,DRIFT,STUNT entre outros.
Include Uma include é um script externo, ou seja, ele é um ficheiro gravado em .inc, assim facilita ao programador usar as funções, para usar uma include basta colocar no seu script #include
Plugin Um plugin também é um script externo, mas ele usa a linguagem de programação C++, ou seja, com um plugin poderemos fazer coisas que no pawn não dá, por vezes devida ao seu tamanho o plugin usa uma include, como por exemplo o plugin sscanf.
Créditos
BlueX - Criação do tutorial;
rjjj - Retirada de duvidas;
Stewie` - Retirada de duvidas;
Wiki SA-MP - Retirada de duvidas;
Wikipédia - Informações;
[iPs]TeaM - Creative Logic;
SA-MP TeaM - Passado\Presente\Futuro;
Kyosaur - Fonte de inspiração para o tutorial;



Postado na ssgames por weslley_script




Ir para o topo

Data/hora atual: Sex 19 Abr 2024 - 1:33