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.


43 resultados encontrados para define

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] Passo A Passo Criando Menus/Adicionando/Itens By:Pietrotm2012 - Sáb 3 Jun 2023 - 10:05

[b][size=24][TUTORIAL] Como ADD Carros Para Org Do Server RPG [TUTORIAL]
Bom Vamos Comeзar

Primeiramente Topo

[/size][/b]
pawn Код:

Código:
forward IsASuaOrg(playerid);
forward IsASuaOrgCar(carid);



[b]Na public OnPlayerEnterVehicle

Crie Isso
[/b]
pawn Код:

Código:
[left]if(IsASuaOrgCar(vehicleid) && !ispassenger)//Lembre-se Mesma Coisa que vc escreveu na forward
            {
                if(!IsASuaOrg(playerid))
                {
                    SendClientMessage(playerid, 0x9E50FFAA, "Vocк nгo й Da Org Tal Tal!");
                    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
                    SetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
                }
            }[/left]



[b]Na Public OnPlayerConnect
[/b]
pawn Код:

Código:
public OnPlayerConnect

for(new x = 1; x <= MAX_VEHICLES; x++)
    {
        if(IsASuaOrgCar(x))
        {
            SetVehicleNumberPlate(x, "{1E90FF}Nome Org");
        }
    }



[b]Na Public

[/b]
pawn Код:

Código:
public IsASuaOrg(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new lider = PlayerInfo[playerid][pLider];
        new member = PlayerInfo[playerid][pMembro];
        if(member==iddaorg || member==iddaorg)
        {
            return 1;
        }
        else if(lider==iddaorg || lider==iddaorg)
        {
            return 1;
        }
    }
    return 0;
}
//Se Quiser Colocar Abaixo Disso Ja Coloque isso //
public IsASuaOrgCar(carid)
{
    if((carid >= IdDosCarros) && (carid <= IdDosCarros) || (carid == IdDosCarros) || (carid == IdDosCarros))
    {
        return 1;
    }
    return 0;
}



[b]Depois De Feito Isso
Vamos Colocar os Carros No GameMode


Procura Por AddStaticVehicleEx E Coloque Por Baixo De Todos Os Carros Para Nгo Dar Bug Nos Ids
[/b]
pawn Код:

Código:
[left]AddStaticVehicleEx(601,-524.6410,-472.8258,25.2881,183.4395,0,6,60000*RESPAWN_TIME); // CARRO PF1 [456]
    AddStaticVehicleEx(528,-519.6420,-472.6649,25.5781,180.2912,0,6,60000*RESPAWN_TIME); // CARRO PF2 [457]
    AddStaticVehicleEx(598,-479.2738,-472.9961,25.2762,179.1194,0,6,60000*RESPAWN_TIME); // CARRO PF3 [458]
    AddStaticVehicleEx(598,-474.0335,-473.0156,25.2835,178.7196,0,6,60000*RESPAWN_TIME); // CARRO PF4 [459]
    AddStaticVehicleEx(523,-467.2058,-503.1348,25.0780,86.7181,0,6,60000*RESPAWN_TIME); // moto PF1 [460]
    AddStaticVehicleEx(523,-467.2025,-501.3653,25.0803,88.6242,0,6,60000*RESPAWN_TIME); // moto PF2 [461]
    AddStaticVehicleEx(523,-467.2528,-504.9776,25.0571,78.6762,0,6,60000*RESPAWN_TIME); // moto PF3 [462]
    AddStaticVehicleEx(490,-494.4342,-472.2443,25.6488,178.3937,0,6,60000*RESPAWN_TIME); // CARRO PF5 [463]
    AddStaticVehicleEx(427,-539.5823,-473.0930,25.6893,177.8778,0,6,60000*RESPAWN_TIME); // CARRO PF6 [464]
    AddStaticVehicleEx(497,-604.7039,-475.4040,25.7380,271.1672,0,6,60000*RESPAWN_TIME); // heli PF1 [465]
    AddStaticVehicleEx(528,-514.5025,-472.7819,25.5689,180.0707,0,6,60000*RESPAWN_TIME); // CARRO PF7 [466]
    AddStaticVehicleEx(490,-499.5060,-471.9969,25.6548,179.2666,0,6,60000*RESPAWN_TIME); // CARRO PF8 [467]
    AddStaticVehicleEx(528,-529.6046,-472.5577,25.5718,180.1069,116,116,60000*RESPAWN_TIME); // CARRO PF9 [468]
    AddStaticVehicleEx(528,-534.4102,-473.0138,25.5867,180.4239,116,116,60000*RESPAWN_TIME);// CARRO PF10 [469][/left]



[b]Depois Faзa A Contagem De Todos Os Carros E Va Na #define CAR_AMOUNT

[/b]
pawn Код:

Código:
#define CAR_AMOUNT // O Meu Ta DE Total 1013  o De Vcs Vai Tar Diferente

O Meu Ficou

#define CAR_AMOUNT 1027

#define totalveiculos 650 // Carros Normais
#define totalveiculosh 651 // Carros Normais
#define totalveiculosc 891 // Carros Normais + CARROS DAS CASAS/990



Depois Faзa A Mesma Coisa Com Isso

Depois Disso Entre No Jogo Pegue os Ids Dos Carros No /dl
e Adicione Na Public IsASuaOrgCar(carid)

Bom й Isso Vc Ja Consegue Criar Os Carros Da Sua Org De Boa
Creditos: Wellington1999

[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 define 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 define 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] Criando Captadores - Ter 2 maio 2023 - 8:52

CRIANDO PICKUPS FACIL E RÁPIDO!!!
1є - Inserindo as INCLUI e DEFINE
peão Код:

Código:
#include <a_samp>

#define Cinza3D 0xB4B5B7FF

#define Mensagem SendClientMessage
#define Ponto CreatePickup
#define Arma GivePlayerWeapon
#define Vida SetPlayerHealth
#define Colete SetPlayerArmour
#define Destroir DestroyPickup
#define Servidor print



2є - Inserindo como NEWS
peão Код:

Código:
novo Pickup1;



[size=48]Agora vamos começar a fazer a FS[/size]
1є - Inserindo as coordenadas e o código
peão Код:

Código:
public OnFilterScriptInit ( )
{

         Pickup1 = Ponto ( 1248 , 21 , 331.0800 , 1129.3678 , 1083.8828 , 0 ) ; //Equipar

    return  1 ;
}




[size=24]//Explicação do 1º passo\\[/size]
Pickup1 = Estamos definindo o Pickup para o próximo passo

Ponto = Do define #define Ponto CreatePickup

(COORDENADAS EO ID) = ID DO OBJETO ( 1248 ) Coordenadas ( 331.0800,1129.3678,1083.8828 )
[size=32]Agora vamos RESPONDER o pickup[/size]
1є - Vamos responder
peão Код:

Código:
public OnPlayerPickUpPickup ( playerid, pickupid )
{

if ( pickupid == Pickup1 )
{
     Mensagem ( playerid, 0x03F2FFFF, "[INFO ESPECIAL] Você pegou seu colete e sua vida!!!" ) ; //Colete
     Vida ( playerid, 100 ) ;
    Colete ( playerid, 100.0 ) ;


        //Obs: aki tu coloca oque ele vai fazer pode desligar o codigo acima se quizer!!!
 
    retornar  1 ;
}

retorna  1 ;
}


E Para nao da erro quando renunciar a FS
peão Код:

Código:
public OnFilterScriptExit ( )
{
     Servidor ( " [b]\n[/b] --------------------------------------" ) ;
    Servidor ( "Pickup1 [DESATIVO]" ) ;
    Servidor ( "-------------------------------------- [b]\n[/b] " ) ;
   
    Destroir ( Pickup1 ) ; //Equipar
   
    return  1 ;
}


Explicando:

Destroir = Destroi o Pickup

Servidor = Serve para guardar a informação, e para mostrar o status no SAMP_SERVE


Código:
Obs: COLOQUEM NOTA DE [10/0] SOBRE A EXPLICAÇÃO!!!


Creditos: Torres ....

[Tutorial] • Como criar um comando básico , em SendClientMessage! - Sáb 15 Abr 2023 - 11:53

Olá pessoal , entгo estou sem ideia no momento do que postar pois nгo vou postar uma coisa que nгo sei й уbvio , jб sei que vбrios irгo vim nos comentбrios e postar " ban .../10 " ou algo parecido me criticando , simplesmente pelo fato de eu ter pedido ajuda e ter criado muitos tуpicos , mais peзo desculpas a isso !

Entгo vamos lб !

Índice :
Introdução
Como fazer
Como mudar as cores das letras ?

• Introdução :
Olá a todos , hoje estou ensinando a criar um comando básico de SendClientMessage , o comando quando o player usar o comando , automaticamente a mensagem que você definir irá mandar para ele a mensagem configurada por você dentro de seu GameMode , o comando é básico não é nada de difícil é super fácil , nгo se preocupe qual quer um irá dar conta de fazer caso siga o tutorial certinho , sem problemas espero que gostem pois é meu primeiro tutorial !

• Como fazer ? :
Primeiro vб em seu GameMode Aperte : CTRL + F e bote isso : OnPlayerCommandText logo abaixo , vocк irб criar um comando e com assunto que preferir de exemplo vou criar um que simplesmente irб mostrar uma pequena saudaзгo ao novoto do servidor , de exemplo .. •

_Como mudar a cor das letras ?
Entre no site http://www.colorpicker.com/ , escolha sua cor copie o cуdigo que irб criar em cima , apуs isso vai em sua GameMode no topo adicionar : #define COR_.... 0x(aqui a cor)FF , depois disso é só criar o comando como abaixo ^^
peão Код:

Código:
#define COR_BLUE 0x0800FF // Bote isso no topo do GameMode , "0x0800FF" bote a cor que preferir !

// Primeiro , crie uma linha igual a minha :
      if ( strcmp ( cmd, "/BemVindo" , true )  ==  0 )
     {
// Linha criada nosso comando de exemplo serб o "/BemVindo" , vocк poderб botar o que preferir !
     if ( IsPlayerConnected ( playerid ) )
     {
// Está linha irá permitir e verificar apenas o usuário para poder digitar online , para que ele não possa digitar offline na tela de login por exemplo ^^
     SendClientMessage ( playerid,COR_BLUE,"Olá Bem Vindo ao servidor novo! " ;
    SendClientMessage ( playerid, COR_BLUE, "Novo caso tenha duvidas chame um administrador!" ) ;
    SendClientMessage ( playerid, COR_BLUE, "Boa Sorte em sua nova jornada em nosso servidor!" ) ;
// SendClientMessage = Aqui vai definir para mandar para apenas o player que usar comando .
// playerid = Aqui será comanda a mensagem para o Player que usa o comando .
// COR_BLUE = Aqui é a cor que você define em #define !
// Aspas = Dentro das " " você irá colocar sua mensagem que mandará para o player .!
// ); = Isso define que ali termina o comando e irá pra prуxima linha caso vocк por ...!
// Pronto , agora adiciona isso no final :
return true;
        }
    }

[size=13]


// Pronto . Comando criado!

/*

É isso pessoal espero que quando fazerem que gostem do resultado final , faзam bom aproveito , e esse é meu primeiro tutorial , digam no que eu posso melhorar ... um iniciante nгo sabe e pode precisar ^^ espero que gostem e ajudem bastante pessoas !

*/
[/size]
Para pegar a cor: http://www.colorpicker.com/

Creditos: ScripterinicianteBR

[Tutorial] Sistema de Sexo (Masculino e Feminino) em DOF2 + CMD /mudarsexo - Sáb 8 Abr 2023 - 6:22

Olб pessoal do forъm sa-mp.
Esse й o meu primeiro tutorial, sou iniciante em pawno. Eu nгo consigo explicar muito direito, mas tentarei explicar o mбximo para vocкs intenderem. Bom, esse tutorial й simples... Mas por mim, acho que irб ajudar alguns iniciantes em pawno.

[size=24]OQUE Й UM SITEMA DE SEXO?[/size]

Resposta: Sistema de sexo salva o Sexo ( Feminino ou Masculino ) do jogador. Apуs o jogador digitar a senha que ele deseja registrar-se, aparecerб uma dialog perguntando qual o sexo que o jogador deseja usar...

Terб um comando, que serб usado caso o jogador desejar mudar de sexo (no jogo).

OBS: Se vocкs nгo intenderem minha 'explicaзгo', me falem que tentarei explicar melhor.

Entгo acho que й isso... Vamos ao cуdigo.

Primeiro, crie uma #define para a DIALOG_SEXO
Код:

Código:
// Topo do seu gamemode:
#define DIALOG_SEXO ( 0 )



Utilizei '( 0 )' pois й serб a primeira DIALOG do gamemode...

Agora iremos criar uma enum para numerar o sexo do jogador...
Код:

Código:
enum PInfo
{
 Sexo
}



Agora, criaremos os 'Leveis' (Os sexos enumerados)
Код:

Código:
new pSexo[3][24] =
{
 {"Indefinido"}, // Sexo 0
 {"Masculino"}, // Sexo 1
 {"Feminino"} // Sexo 2
};



Agora, criaremos uma new para a Variavel do enum PInfo (Nгo consegui explicar direito aqui).
Код:

Código:
new pInfo[MAX_PLAYERS][PInfo];



Agora em sua dialog de Registro, depois que o jogador se registra vai ser criado o texto "Sexo = 0"
Код:

Código:
// Na dialog de Registro:
DOF2_SetInt(Arquivo, "Sexo", pInfo[playerid][Sexo]);



E depois adicione a ShowPlayerDialog da pergunta "Qual й seu sexo?"
Код:

Código:
//Na dialog de Registro ainda:
ShowPlayerDialog(playerid, DIALOG_SEXO, DIALOG_STYLE_MSGBOX, "{FFFF00}# {FFFFFF}- Defina Seu Sexo", "Qual й seu sexo?", "Masculino", "Feminino");



Agora na Dialog de Login, se a senha que o jogador digitou for a certa a funзгo "GetInt" irб pegar qual й o Level do sexo, por exemplo "Sexo = 1" vai pegar que o jogador й sexo masculino.
Код:

Código:
//Na dialog de Login:
pInfo[playerid][Sexo] = DOF2_GetInt(Arquivo, "Sexo");



Agora iremos criar uma dialog, que й a DIALOG_SEXO ( Que foi numerada no topo do gamemode "#define DIALOG_SEXO ( 0 )" )
Код:

Código:
//Na public OnDialogResponse:
case DIALOG_SEXO:
{
 if(response) // Se o jogador clicar em 'Masculino'
 {
 pInfo[playerid][Sexo] = 1; // O level do sexo do jogador serб setado para Masculino
 SendClientMessage(playerid, 0xFFFF00FF, "[INFO]: Seu Sexo Estб Como{FFFFFF} Masculino{FFFF00}.");
 }
 else //Se clicar em 'Feminino'
 {
 pInfo[playerid][Sexo] = 2; // O Level do sexo do jogador serб setado para Feminino
 SendClientMessage(playerid, 0xFFFF00FF, "[INFO]: Seu Sexo Estб Como{FFFFFF} Feminino{FFFF00}.");
 }
}



Agora, na stock que salva a conta iremos adicionar para quando o jogador sair do servidor, salvar o Sexo que ele estava enquanto estava conectado.
Код:

Código:
DOF2_SetInt(Arquivo, "Sexo", pInfo[playerid][Sexo]);



Agora vamos para a stock que carrega as informaзхes do jogador, ela irб pegar o sexo que foi salvado na ultima vez que o jogador se conectou...
Код:

Código:
pInfo[playerid][Sexo] = DOF2_GetInt(Arquivo, "Sexo");



Agora, iremos fazer o comando que muda o sexo do jogador.
Код:

Código:
//No fim do gamemode, ou em algum outro lugar (Fora de public's):
CMD:mudarsexo(playerid,params[])
{
 new Stringui[256];
 format(Stringui,sizeof(Stringui), "Atualmente Seu Sexo й %s.\nVocк Deseja Deixar Seu Sexo Como:", pSexo[pInfo[playerid][Sexo]]);
 ShowPlayerDialog(playerid, DIALOG_SEXO, DIALOG_STYLE_MSGBOX, "{FFFF00}# {FFFFFF}- Defina Seu Sexo", Stringui, "Masculino", "Feminino");
 return 1;
}



Se vocк quiser adicionar algumas mensagens em forma Masculina ou Feminina, й sу fazer uma if(pInfo[playerid][Sexo] == 1) ou == 2)
Exemplo:
Код:

Código:
public OnPlayerText(playerid, text[])
{
   if (pInfo[playerid][pLogado] == false) // Minha funзгo que verifica se o jogador estб ou nгo estб logado.
   {
 if(pInfo[playerid][Sexo] == 1) //Sexo masculino!!
 {
    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}[ERRO]: Vocк nгo estб logado e nгo pode falar."); // Se o sexo for masculino serб mostrado essa mensagem para ele.
 return 0; // Retornarб falsa, ou seja, a mensagem que o jogador tentou enviar nгo serб enviada no chat pois o jogador nгo estб logado.
 }
 if(pInfo[playerid][Sexo] == 2) //Sexo masculino!!
 {
 SendClientMessage(playerid, 0xFF0000FF, "{fF0000}[ERRO]: Vocк nгo estб logada e nгo pode falar."); // Se o sexo for feminino serб mostrado essa mensagem para ela.
 return 0; // Retornarб falsa, pois a jogadora nгo estб logada.
 }
 }
 return 1;
 }



OBS: "if(pInfo[playerid][pLogado] == false)"
a funзгo pLogado nгo foi criada na enum do player lб em cima, pois no tutorial nгo vou utiliza-la para nada, mas eu a utilizo para verificar se o player estб logado ou nгo, entгo, desconsidere-a.

Meu codigo, nгo estб dos melhores entгo vocкs deem uma aperfeiзoada no code da maneira que vocкs conseguem se forem adicionar ao seu gamemode.

Entгo й isso galera, desculpem quaisquer erro de portuguкs... Tenho 13 anos, e em ortografia nгo sou muito bom.

Desculpem algum erro nos codes, como no inicio do tutorial eu disse "sou iniciante em pawno"...

Por favor, pode criticar ou dar dicas. Meus cуdigos nгo sгo aqueles 'Tops', mas com o tempo irei aprendendo nй.

Explicaзгo nгo foi muito boa nй, pois como disse no comeзo do tutorial tambйm, nгo sou muito bom com explicaзхes...

Obrigado a todos. Att: DjonathaTM

[Tutorial] Principais erros/warnings e as respetivas soluções - Ter 4 Abr 2023 - 12:21

*Logicamente há muitos e muitos erros/avisos e acredito que não seja possível listar todos, mas os principais e mais "chatos" pretendo listar e tentar acabar com tópicos típicos com erros exatamente iguais e muito fáceis de concertar, apenas deve-se ter atenção.

*Para facilitar a listagem dos erros e avisos, coloque em ordem numérica.

*Peço a colaboração dos usuários para me ajudar a inserir mais erros e avisos, evitando desta forma um spam desnecessário de tópicos criados para solucionar erros e avisos que, de certa forma, são "bobos".

* Caso eu tenha me precipitado em alguma solução e/ou motivo, peço que me corrija imediatamente.

*Vou aproveitar também e deixar este tópico aberto para quem estiver com dъvidas relacionadas a esses erros e/ou avisos, caso nгo consiga solucionar o problema eu vou fazer o possível para sanar suas respectivas dъvidas... є ERROS є


ERRO : error

001 : token esperado: ";", mas encontrado "-end of file-"
MOTIVO : Declarou uma variável e/ou inseriu uma função e esqueceu de inserir ";" (ponto e vírgula) no final.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste



SOLUÇÃO :
Код:

Código:
novo teste ;




ERRO : erro 006: deve ser atribuído a um array
MOTIVO : Criou uma variável inteira e tentou armazenar um valor string.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste;
teste = "teste" ;



SOLUÇÃO :
Код:

Código:
novo teste;
teste = 5 ;




ERRO : error 017: undefined symbol "test"
MOTIVO : Esqueceu de declarar a variável.
CÁDIGO EXEMPLO :
Код:

Código:
teste = 5;



SOLUÇÃO :
Код:

Código:
novo teste = 5;




ERRO : error 020: invalid symbol name ""
MOTIVO : Criou, porйm nгo denominado variбvel nenhuma.
CÁDIGO EXEMPLO :
Код:

Código:
novo



SOLUÇÃO :
Код:

Código:
novo teste ;




ERRO : erro 031: diretiva desconhecida
MOTIVO : Criou, porém nгo declarou nenhuma macro/define.
CÁDIGO EXEMPLO :
Код:

Código:
#



SOLUÇÃO :
Код:

Código:
# define




ERRO : erro 033: array deve ser indexado (variável "teste")
MOTIVO : Criou uma string variável e tentou armazenar um valor inteiro.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste[10];
teste = 5 ;



SOLUÇÃO :
Код:

Código:
novo teste[10];
teste = "teste" ;



SOLUÇÃO 2: (By Whoo )
Код:

Código:
novo teste[10];
teste[ 3 ] = 1 ;




ERRO : error 035: argument type mismatch (argument 1)
MOTIVO : Usou um argumento incompatível em uma função.
CÁDIGO EXEMPLO :
Код:

Código:
função de estoque ( numérica ){}
função( "teste" );



SOLUÇÃO :
Код:

Código:
função de estoque ( numérica ){}
função( 5 );




ERRO : erro 036: declaração vazia
MOTIVO : Foi inserido duas vezes o sinal ";" (ponto e vírgula) no final da variável e/ou função.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste ;;



SOLUÇÃO :
Код:

Código:
novo teste ;




ERRO : error 074: #define pattern must start with a alpha character
MOTIVO : Nгo declarou nenhum valor ao macro/define e/ou o mesmo foi iniciado com caracteres especiais e/ou nъmeros.
CÁDIGO EXEMPLO :
Код:

Código:
#define // nulo



CÁDIGO EXEMPLO 2 :
Код:
#define 5
SOLUÇÃO :
Код:

Código:
#define teste




ERRO FATAL : erro fatal 100: não é possível ler do arquivo: "teste"
MOTIVO : Nгo encontrou a include no caminho especificado.
CÁDIGO EXEMPLO :
Код:

Código:
#incluir teste



CÁDIGO EXEMPLO 2 :
Код:

Código:
#include "..\scriptfiles\ teste "



SOLUÇÃO :
Код:

Código:
Certificar-se que a include está no caminho especificado .




є WARNINGS є

WARNING : warning 202: número de argumentos não coincide com a definição
MOTIVO : Inseriu argumentos a mais ou a menos do que foi declarado na função.
CÁDIGO EXEMPLO :
Код:

Código:
função pública( teste ){}
função();



SOLUÇÃO :
Код:

Código:
função( teste ){}
função( 5 );




WARNING : warning 203: símbolo nunca é usado: "test"
MOTIVO : Criou a variável e nгo a usado.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste;



SOLUÇÃO :
Код:

Código:
novo teste;
teste = 5 ;




WARNING : warning 204: ao símbolo é atribuído um valor que nunca é usado: "test"
MOTIVO : Atribuiu um valor a variável, porйm nгo usou seu valor para nenhum fim.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste;
teste = 5;



SOLUÇÃO :
Код:

Código:
novo teste;
teste = 5;
printf("%i", teste );




WARNING : warning 209: a função "main" deve retornar um valor
MOTIVO : Nгo existe return na funзгo main.
CÁDIGO EXEMPLO :
Код:

Código:
principal() {
 novo teste;
 if(teste == 1) return print("1"); ;
}



SOLUÇÃO :
Код:

Código:
principal() {
 novo teste;
 if(teste == 1) print("1"); ;
}




WARNING : warning 213: tag mismatch
MOTIVO : Usou uma variável de maneira incompatível da qual foi criada para ser utilizada.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste;
teste = 5,5;



SOLUÇÃO :
Код:

Código:
novo Float: teste;
teste = 5,5;




WARNING : warning 225: código inacessível
MOTIVO : Inseriu vários retornos em um mesmo código.
CÁDIGO EXEMPLO :
Код:

Código:
novo teste;
if(teste < 0) return print("< 0");



else return print("> 0");
SOLUÇÃO :
Код:

Código:
novo teste;
if(teste < 0) print("< 0");
else return print("> 0");




AVISO : warning 235: função public carece de declaração de encaminhamento (símbolo "função")
MOTIVO : Criou uma callback, porém nгo a declarada.
CÁDIGO EXEMPLO :

Código:
Код:
função pública(){}



SOLUÇÃO :
Код:

Código:
função encaminhar(); 
função pública(){}



Creditos:F1N4L

[Tutorial] Enumeradores (enums). O que eles realmente são? - Ter 4 Abr 2023 - 12:15

Enumeradores
Há algo sobre enums que muitos scripters não conhecem.

Muitos de vocês usam enums em seu script para armazenar dados de jogador/veículo/casa etc. (especialmente informações do usuário)

Um exemplo típico (ou muito comum):
Código do peão:

Código:
enum
     e_PlayerInfo
{
     PONTUAÇÃO,
    DINHEIRO,
    MATAS,
    MORTES
} ;

[size=13]


[/size]
Código:
novo pInfo [ MAX_PLAYERS ] [ e_PlayerInfo ] ;



Agora, é assim que é usado:
Código do peão:

Código:
public OnPlayerDeath ( playerid, killerid, razão )
{
     pInfo [ playerid ] [ MORTES ] ++ ;
   
    if ( IsPlayerConnected ( killerid )  && killerid != playerid )
     pInfo [ killerid ] [ KILLS ] ++ ;
   
    retornar  1 ;
}



Tudo bem, agora isso é facilmente compreendido.

Agora:
Código do peão:

Código:
enum
     e_PlayerInfo
{
     PONTUAÇÃO,
    DINHEIRO =  9 ,
    MATA =  5 ,
    MORTES =  56
} ;

[size=13]


[/size]
Código:
novo pInfo [ MAX_PLAYERS ] [ e_PlayerInfo ] ;

[size=13]


[/size]
Código:
printf ( "%i | %i | %i | %i" , pInfo [ 0 ] [ SCORE ] , pInfo [ 0 ] [ MONEY ] , pInfo [ 0 ] [ KILLS ] , pInfo[ 0 ] [ MORTES ] ) ;



Então, a saída será "0 | 9 | 5 | 56", certo?


Se você pensou "yeah"..

Errado, porque vai dar: "0 | 0 | 0 | 0", você pode pensar que os enums são os que armazenam dados.
Quando fiz "MONEY = 9" no enum, depois usei "pInfo[0][MONEY]" no printf, ele considerou pInfo[0][9] e não ePlayerInfo:MONEY. O que significa que usei "MONEY" como um índice para minha variável pInfo.

Portanto, enums NÃO são variáveis! Eles são realmente "constantes", eles apenas ajudam você a atribuir um nome específico ao seu índice de variável.

Ok, vamos nos aprofundar um pouco mais e esperamos que você entenda mais..

Exemplo:
Código do peão:

Código:
const e_CAR1 =  0 ;
const e_CAR2 =  1 ;
const e_CAR3 =  2 ;

[size=13]


novos MyCars [ 3 ] ;

[/size]
Código:
main ( )
{
     MeusCarros [ e_CAR1 ]  =  520 ;
    MeusCarros [ e_CAR2 ]  =  458 ;
    MeusCarros [ e_CAR3 ]  =  411 ;
}



Faremos a mesma coisa com enums agora:
Código do peão:

Código:
enum
     e_TEST
{
     e_CAR1,
    e_CAR2,
    e_CAR3
} ;

[size=13]


novos MyCars [ e_TEST ] ;

[/size]
Código:
main ( )
{
     MeusCarros [ e_CAR1 ]  =  520 ;
    MeusCarros [ e_CAR2 ]  =  458 ;
    MeusCarros [ e_CAR3 ]  =  411 ;
}



Ambos (usando const e enums aqui) irão compilar bem e fazer a mesma coisa, você vê a diferença?
Sim, apenas em como você cria o código.

Este pedaço de código que mostrei a você diz que enums fazem as mesmas coisas que constantes.
Mas existem algumas diferenças que nos fazem usar enums em vez de constantes ou definições (const e_CAR1 = 0; ou #define e_CAR1 0) Falaremos sobre as diferenças mais tarde.

Primeiro você deve entender como os enums são estruturados:
Código do peão:

Código:
enum TESTE
{
    Abc,
   Def,
   Ghi,
} ;



Abc é uma constante com o valor de 0 (quase o mesmo que fazer const Abc = 0; ou #define Abc 0),
Def é uma const de valor 1 (const Def = 1; ou #define Def 1)
E Ghi é uma const de valor 2 (const Ghi = 2; ou #define Ghi 2)

O pré-compilador define automaticamente os valores dessas constantes começando de 0 a .. n
Considerando que, ao criar constantes, você é quem deve atribuí-las. Mas em enum, é estruturado automaticamente.


Exemplo:
Código do peão:

Código:
enum TEST
{
    e_ONE, //Isso obterá automaticamente "0"
    e_TWO,   //this: "1"
    e_THREE,   // "2"
    e_FOUR =  12 , // Agora, aqui está uma diferença, já que você atribuiu "12" a ele , ao invés de ser "3", ele se tornará 12..
    e_FIVE, //Este será 13 porque seu enumerador superior tinha "12"
    e_SIX //Este será 14. É superior: "13"
}



Como você pode ver, se você mesmo atribuir um (como eu fiz "e_FOUR = 12") O próximo enumerador terá e_FOUR+1 e assim por diante. Mais algumas

explicações:
Código do peão:

Código:
enum
     DATA
{
     INT, //Isto obterá "0" (Lembre-se, valor inicial)
     STRING [ 10 ] , //(Isto obterá 1, mas como é uma string, apenas um bloco não é suficiente!)
        //^ Então , os números corretos serão: 1,2,3,4,5,6,7,8,9,10! Porque o comprimento da string é 10!
    INT2, //Isso vai pegar o número 11, ele vem depois do STRING[10] que tinha o último número 10..
     STRING2 [ 10 ]  //E isso vai começar com 12 e terminar em 22 porque requer 10 espaços.
} ;



Usando
Código do peão:

Código:
printf ( "%i" , _ : DADOS ) ;



Eu obtive: "22"

Porque o tamanho de toda a enumeração é 22.
INT, STRING, INT2, STRING2
1+ 10+ 1+ 10 = 22

Agora, você pode pensar porque usei "1" para mostrar INT e não "0 "?
O problema é que estou mostrando a você "QUANTOS" blocos estão sendo usados ​​pelo INT, não "QUAL UM".
Se fosse "qual", então seria "0", o bloco 0 é ocupado por INT.

Para um bloco de tamanho 22, estes são os índices "0..1..2 até 19..20..21" < Você tem 22 números aqui.

Usando
Código do peão:

Código:
printf ( "%i" , _ : STRING ) ;



Eu obtive: "1"

porque o primeiro bloco foi ocupado por INT que é "0"
E, portanto, STRING começou a partir do bloco "1"

Se eu mostrar o uso de blocos por cada enumerador, ficará assim:

INT : bloco 0
STRING : blocos 1,2,3,4,5,6,7,8,9,10
INT2 : bloco 11
STRING2 : blocos 12,13,14,15,16,17,18,19,20,21

Usando
Código do peão:

Código:
nova Matriz [ DADOS ] ;
    printf ( "%i" , tamanho do Array ) ;



Também me deu 22, porque, sim, "DATA" tinha o tamanho de 22.

Finalmente, vemos que Array é na verdade:

Array[INT + STRING + INT2 + STRING2];
(não irá compilar, apenas visualizá-lo)

Portanto, sempre que você usar enums, use a variável real e os enumeradores como índices.

Um exemplo esquemático:
Tópicos com a tag define em SSGamers - 12 Anos online por você. Scaled.php?server=855&filename=enum

Outro exemplo:
Código do peão:

Código:
enum
     TEST
{
     SomeInteger =  124 ,
    SomeString [ 12 ] ,
    Float : SomeFloat
} ;

[size=13]


[/size]
Código:
[size=14][size=13]public OnFilterScriptInit ( )
{
    new var_TEST [ TEST ] ;
   
    var_TEST [ SomeInteger ]  =  1337 ;
   
    printf ( "1) Armazenado em var: %i, Constante: %i" , var_TEST [ SomeInteger ] , _ : SomeInteger ) ;//1
   
    formato ( var_TEST [ AlgumaString ] , 12 , "Ei!" ) ;
   
    printf ( "2) Armazenado em var: %s, Constante: %i" , var_TEST [ SomeString ] , _ : SomeString ) ; //2
   
     var_TEST [ SomeFloat ]  =  2054.124 ;
   
    printf ( "3) Armazenado em var: %f, Constante: %i" , var_TEST [ SomeFloat ] , _ : SomeFloat ) ;//3
   
    retorna verdadeiro;
}[/size][/size]


Saídas:
1) "Stored in var: 1337, Constant: 124"

Como você viu, atribuí var_TEST[SomeInteger] com 1337.
E nas enumerações, SomeInteger tem um valor constante de 124.

2) "Stored in var: Hey!, Constant: 125"
Aqui, atribuí var_TEST[SomeString] com "Hey!".
E nas enumerações, SomeString tem um tamanho de 12, mas imprimiu 125

porque, 125 é o bloco inicial da string, termina em 125 + 12.

3) "Stored in var: 2054.124023, Constant: 137"
Ponto flutuante impresso normalmente, mas SomeFloat imprimiu "137"!
Deve ser 126 certo? Porque foi criado depois de SomeString que tinha o valor de 125..

Mas, como SomeString[12] é um Array (String), ele ocupou mais 12 espaços. O que fez SomeFloat obter o valor de 137
(Observe que 125 + 12 = 137)

Mais algumas informações importantes:

Enums também podem ser usados ​​como tags:
Código do peão:

Código:
enum E_EG
{
     E_FIRST =  4 ,
    E_SECOND =  2
}




Agora eu posso fazer:
Código do peão:
[size=13]novo  E_EG : SomeVar;
[/size]
E:
Código do peão:

Código:
novo  E_EG : MinhaVariável = E_FIRST; // Sem avisos apesar de usar "E_FIRST".
//Porque E_FIRST já faz parte do enumerador E_EG
//Desde que marcamos MyVariable com E_EG, está tudo bem com E_FIRST.



Código do peão:

Código:
novos dados [ E_EG ] ;

[size=13]

    dados [ E_FIRST ]  =  7 ; // Erro do compilador - índice fora dos limites
    //Porque o valor de E_EG é 3 e E_FIRST é 4 (o índice não existe)
[/size]
Enums anônimos:
Código do peão:
[size=13]enum  //<< Não demos um nome.
[/size]
Código:
{
     E_TEST [ 10 ]  =  32 ,
    E_VAR
} ;

[size=13]


[/size]
Código:

main ( )
{
    novos dados [ E_TEST ] ; //E_TEST = 32 não 10.
    //Observe que também não usamos nenhuma tag _:E_TEST
}



Tags fortes e fracos:
Código do peão:

Código:
enum
     E_STRONG //< Como o nome começa com letra maiúscula, a tag é considerada "Forte"
{
     E

[size=13]
_VAR =  64
} ;

[/size]
Código:
principal ( )
{
   
    novo Teste =  E_STRONG : E_VAR;
    //Será um aviso: "tag mismatch" porque "Test" não tem a tag E_STRONG
   
    #pragma não utilizado Teste
}



Código do peão:

Código:
enum
     e_WEAK //< E aqui começa com letra minúscula, então o enum cria uma tag fraca.
{
     E_VAR =  64
} ;

[size=13]


[/size]
Código:
principal ( )
{
   
    novo Teste =  e_WEAK : E_VAR;
    //Sem aviso...
   
    #pragma teste não utilizado
}



Isso é quase tudo sobre enums, e essas são as razões pelas quais preferimos usar enums.

Obrigado a Y_Less por suas explicações.

[Ferramenta/Web/Outro] Patches do compilador PAWN da Zeex - Qui 30 Mar 2023 - 8:22

[b]Patches do compilador PAWN da Zeex[/b]


Introdução
Esta é uma ferramenta que corrige vários bugs e travamentos do compilador PAWN feito pela Zeex. Ele removeu o link de download direto e nós mesmos temos que compilar a fonte. Como muita gente não sabe compilar o fonte, ou não usa Linux, compilei o fonte no Windows XP SP3 usando Visual C++ 2010 e agora estou liberando os arquivos. Deve funcionar em todos os servidores Windows. Não vou compilar a versão do Linux, pois não a uso e os arquivos podem variar para diferentes sistemas operacionais Linux.

Você pode visitar a página do projeto aqui: https://github.com/Zeex/pawn
Na verdade, ele forneceu um tutorial sobre como compilar a fonte lá. Para compilar o compilador, você deve definir o caminho de origem para o diretório "source\compiler" no CMake, em vez do subdiretório "source". Por exemplo, se você colocar os arquivos do projeto em C:\Pawn, o diretório de origem será C:\Pawn\source\compiler.

Correções
Acho que o patch mais importante do projeto é aumentar o limite de linha para 4095, em vez de 511. Isso significa que você pode ter 4095 caracteres por linha sem causar travamentos.

Ele também corrige a falha de estados triplos e a inicialização da matriz multidimensional. Stringize e concatenação de tempo de compilação são suportados, mas não tenho muita certeza sobre o que exatamente esses 3 patches fazem. Se você souber, por favor me diga.

Para stringize e concatenação de tempo de compilação, parece que você pode fazer isso (em http://www.compuphase.com/bitboard/i...q_1179971957):
Citar:

Postado originalmente por ******
printf("olá" "lá");

printf("olá " #lá);

#define MAJOR 1
#define MINOR 2
#define BUILD 2342
#define VERSION(%1,%2,%3) "Versão: " #%1 "." #%2 "." #%3
printf(VERSION(MAIOR, MINOR, BUILD));

Nota: o token # ignora o espaço em branco entre ele e o primeiro caractere, caso contrário, definir assim seria impresso como:

Versão: 1. 2. 2342

Se é isso que você deseja, basta adicionar um espaço no ".".

Este sistema também ignora #'s sem escape, portanto:

printf(#hello #there);

imprimiria como:

olá.

Baixar
Somente Executáveis
​​Executáveis ​​+ Código Completo (Fonte do Compilador + Projeto VC++ 2010)

Instalação
Basta colocar os executáveis ​​(pawncc.exe e pawnc.dll) na pasta do pawno e substituir os arquivos.

Créditos
  • leong124 - Compilando os arquivos para Windows.

  • Zeex - patches do compilador PAWN.

[Tutorial] Como Criar Profissão Em Sua Gamemode - Dom 19 Mar 2023 - 10:09

Fala Aк Galera Hoje irei encinar a como adicionar uma profissгo em sua gamemode nгo sei se alguma pessoa ja postou isso mais o que vale й a intenзгo nйh? esse aqui e meu primeiro topico intгo me desculpem vou dar meu melhor Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin | Intгo Mгo Na Massa


no inicio de seu gamemode coloque isso aqui (perto de outros #define)
Quote:








Código:
#define Assasino 0







Bem Agora Vou Explicar o Que Significa As Coisas Que Fiz Ali Em Cima

#define (й para definir algo em sua gm)
Assasino (Й o nome da profissгo | ai vocк coloca o nome da profissгo que vocк quer)
0 (й o id da profissao ou seja que eu ja criei outra profissao ai vou adicionar 1 ou o numero seguinte)

bom agora vamos criar a parte fudamental para usarmos a profissгo que vocк crio acima

No Comeзo De Seu GM Junto Com Os Outros new vocк adiciona esse novo:

Quote:








Código:
new Emprego[MAX_PLAYERS];







new -- Para Vocк criar uma nova coisa em seu GM.
Emprego[MAX_PLAYERS]; -- Aqui й onde vocк estarб criando a peзa que vocк usarб para identificar as profissхes em comandos e outras coisas que vocк pretende fazer com esta profissгo.
No caso onde esta o nome "Emprego" vocк poderб trocar por qualquer outro de sua preferкncia podendo ser: " Profissao " ou " Trabalho " tanto faz depende de sua imaginaзгo

Bem sei que muitos estгo pesando que й difнcil. Mas ao acabar de fazer isso vocкs jб fizeram a profissгo de assasino com o ( #define Assasino 0) e criando a peзa fundamental para usar a profissгo( new Emprego[MAX_PLAYERS]

Entгo agora vocкs se perguntam Como vou usar essa profissгo pois isso nгo faz o menor sentido.. Bom depois de ter criado a profissгo e o que usaremos para usa-la vamos criar coisas para esta profissгo..
No Exemplo abaixo vamos Criar um simples comando reservado para a profissгo de assasino:

Em public OnPlayerCommandText(playerid, cmdtext[])
Quote:








Código:
if(strcmp(cmdtext,"/ajudaemprego", true) == 0)
{
if(Emprego[playerid] == Assasino)
{
SendClientMessage(playerid,cor_cinza,"Agora Vocк й um assasino mate as negada '-'");
}
else
{
SendClientMessage(playerid,cor_cinza,"Vocк nгo й um assasino triste");
}
return 1;
}






se vocк criase um comando normal na sua gm sem o else iria so sair
Quote:








Código:
if(strcmp(cmdtext,"/ajudaemprego", true) == 0)
{
SendClientMessage(playerid,cor_cinza,"Agora Vocк й um assasino mate as negada '-'");
return 1;
}







intгo ali tem o
Quote:







i


Código:
f(Emprego[playerid] == Assasino)







Й aonde vamos identificar de qual profissгo poderб usar este comando. й nesta hora que a nossa peзa fundamental entra em Aзгo que ai vamos ver que se o player for da profissгo de assasino irб acontecer o que esta entre as Chaves

Explicando melhor em pawn.

Quote:







i


Código:
f(strcmp(cmdtext,"/ajudaemprego", true) == 0)
{//Abri a chave principal do comando
if(Emprego[playerid] == Assasino)//Aqui eleirб verificar de qual profissao poderб usar este comando
{//A chave que ira abrir caminho para as funзхes se for da profissao de assasino
SendClientMessage(playerid,cor_cinza,"Agora Vocк й um assasino mate as negada '-');//Irб enviar a menssagem para o jogador dizendo que ele й assasino
}//Fecha a chave das coisas que irб acontecer se ele for assasino
else//Isso й usado para se alguma coisa for ao contrбrio do que estamos falando
{//A chave para abrir caminho para as funзхes caso ele nгo for assasino
SendClientMessage(playerid,cor_cinza,"Vocк nгo й um assasino triste");//Irб enviar uma menssagem dizendo que somente assasino poderб usar este comando
}//Fecha a chave das coisas que irб acontecer caso ele NГO for assasino
return 1;//Depois retorna a 1.
}//Fecha a chave principal do comando






Pronto Sua Profissгo Esta Criada Agora Vou Encinar Para Vocк Setar a cor da profissгo que irar aparecer quando vocк morre!

Ok Vamos Lб

Para Nois Mudar a cor do player quando ele morrer vai em: public OnPlayerDeath(playerid, killerid, reason) Coloque isto:

Quote:








Código:
if(Emprego[playerid] == Assasino)//Caso ele for da profissгo de assasino
{//abria a chave
SetPlayerColor(playerid, cor_azul);//vai colocar a cor azul nele..
}//Fecha a chave






Pronto Profissгo Criada Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin
obs: cor_cinza e cor_azul e um exemplo vocк irar usar as cor de sua gm que vocк setou Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin desculpe algo ae Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin COMO DISSE E MEU PRIMEIRO TUTORIAL EU ACEITO CRITICAS OK? '-'



Creditos: RianWanteD

Weslley_Script

[Tutorial] Tutorial de como criar um dialog - Qua 15 Mar 2023 - 7:46

Criando um dialog

Vendo que muitos tem dъvidas sobre como criar um dialog vou aqui fazer uma coisa rбpida de como cria-lo..

Primeiramente vocк tem que conhecer as funзхes..


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

Este й o callback onde vocк irб colocar as funзхes de cada dialog.

playerid - ID do player a qual estб sendo mostrado o dialog e ocorrerб a funзгo.
dialogid - ID do dialogo criado. Й extremamente importante que vocк coloque sempre ids diferentes, e de preferкncia em ordem crescente. E para uma maior organizaзгo, vocк pode usar defines. Ex: #define DialogoDeRegistro 1
response - Й usado para gerenciar os dois botхes.
listitem - Й usado para gerenciar os itens da lista conforme a ordem. listitem 1, 2, 3 e quantos vocк estiver colocado. Usado no estilo DIALOG_STYLE_LIST.
inputtext - Й usado para pegar o texto(string[]) digitado pelo jogador na caixa. Usado no estilo DIALOG_STYLE_INPUT.


ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);

Funзгo usada para criar o dialog.

playerid - ID do player a ser exibido o dialog.
dialogid - ID de ordem do dialog criado. Й extremamente importante que vocк coloque sempre ids diferentes, e de preferкncia em ordem crescente. E para uma maior organizaзгo, vocк pode usar defines. Ex: #define DialogoDeRegistro 1
style - Estilo do dialog a ser criado. Existem 3 tipos:
0 - DIALOG_STYLE_MSGBOX - Estilo que sу mostra uma mensagem na caixa.
1 - DIALOG_STYLE_INPUT - Estilo onde abre uma caixa com uma mensagem, e um espaзo para o player digitar.
2 - DIALOG_STYLE_LIST - Exibe uma lista de itens para ser selecionado e ocorrer a funзгo para tal id.

caption[] - Usado para colocar o texto do cabeзalho.

info[] - Usado para escrever o conteъdo que aparecerб dentro do dialog.

button1[] - Texto que aparecerб no botгo nъmero 1.

button2[] - Texto que aparecerб no botгo nъmero 2.

Para criar um dialog й simples. Vamos comeзar com o estilgo MSGBOX:

Primeiramente crie-o com a funзгo ShowPlayerDialog:
pawn Код:
#define DialogBoxEx 1
new str[256];
format(str, sizeof(str), "%d < Mostra o ID do Player \n Aqui serб o texto a ser introduzido no dialog.\n Vocк terб que determinar um valor correto na variбvel criada de acordo \n com o tamanho do seu texto", playerid);

ShowPlayerDialog(playerid, DialogBoxEx, DIALOG_STYLE_MSGBOX, "Cabeзalho", str, "Ok", "Cancelar");
Este dialog criado, nгo necessitarб inicialmente de usar o callback OnDialogResponse, a nгo ser para algumas funзхes desejadas, como usar variбveis, timers e etc.

Agora com o estilo DIALOG_STYLE_INPUT:
pawn Код:

Código:
#define DialogInputEx 2
new str[512];
format(str, sizeof(str), "%d < Mostra o ID do Player \n Aqui serб o texto a ser introduzido no dialog.\n Vocк terб que determinar um valor correto na variбvel criada de acordo \n com o tamanho do seu texto \n Abaixo o Player digitarб um texto", playerid);


ShowPlayerDialog(playerid, DialogInputEx, DIALOG_STYLE_INPUT, "Cabeзalho", str, "Ok", "Cancelar");

//Agora vocк irб no OnDialogResponse e colocarб a funзгo apуs ele ter apertado OK.

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DialogInputEx)//identifica o id do dialog.
    {
        if(response)//Caso ele clique no primeiro botгo
        {
            new Nome[64];
            GetPlayerName(playerid, Nome, sizeof(nome));
            if(!strcmp(inputtext, Nome, true)) //Identifica se o texto digitado й igual ao seu nome/nick do jogo.
            {
                SendClientMessage(playerid, COR, "Parabйns! Vocк sabe seu nome e por isso ganharб 1000 Reais!!!");
                GivePlayerMoney(playerid, 1000);
                return 1;
            }
        }
        else //caso ele click no segundo botгo
        {
            SendClientMessage(playerid, COR, "Vocк clicou no segundo botгo, o dialog desaparecerб que nem mбgica e vocк serб kickado!!!!!");
            Kick(playerid);
        }
    }
    return 1;
}



Agora com o estilo DIALOG_STYLE_LIST:
pawn Код:

Código:
new Clicado[MAX_PLAYERS];//Usado para armazenar o ID do player clicado

public OnPlayerClickPlayer(playerid, clickedplayerid, source) //Quando o player clicar em outro player (No Tab)
{
    if(IsPlayerAdmin(playerid))
    {
      new str[64] = "Ir atй\nTrazer\nKickar\nBanir"; //Para cada item use "/n" o que pularб uma linha para o prуximo item.
      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "Opзхes - Administrador", str, "Selecionar", "Cancelar"); //mostrarб o dialog
        Clicado[playerid] = clickedplayerid;//armazenarб o id do player clicado
    }
    return 1;
}




//Agora no OnDialogResponse


Código:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])//Dialog criado por [VGS]Mac_OC
{
    new string[128];
   
    if(dialogid == 0)
    {
        if(IsPlayerAdmin(playerid))//verifica se o player й administrador, caso nгo queira sу para administrador, retire-o
        {
        if(response)//botгo 1
        {
          new Float:Coord[3];
          if(listitem == 0)//Item 0 da lista( й o primeiro da lista)
          {
                    GetPlayerPos(Clicado[playerid], Coord[0], Coord[1], Coord[2]);
                    new intid = GetPlayerInterior(Clicado[playerid]);
                    if(IsPlayerInAnyVehicle(playerid))
                    {
                        new vid = GetPlayerVehicleID(playerid);
                        SetVehiclePos(vid, Coord[0], Coord[1]+4, Coord[2]+4);//teleportarб o veiculo
                        SetPlayerInterior(playerid, intid);
                        LinkVehicleToInterior(vid, intid);
                    }
                    else
                    {
                        SetPlayerInterior(playerid, intid);
                        SetPlayerPos(playerid, Coord[0], Coord[1]+4, Coord[2]+4);//teleportarб o player
                    }
                    format(string, sizeof(string), "Vocк se teleportou atй %s(id: %d)", PlayerName(Clicado[playerid]), Clicado[playerid]);
                    SendClientMessage(playerid, Cor_Verde, string);
                    return 1;
          }
         
          else if(listitem == 1)//item da lista 1 (segundo da lista) farб com que traga o player
          {
                    GetPlayerPos(playerid, Coord[0], Coord[1], Coord[2]);
                    new intid = GetPlayerInterior(playerid);
                    if(IsPlayerInAnyVehicle(Clicado[playerid]))
                    {
                        new vid = GetPlayerVehicleID(Clicado[playerid]);
                        SetVehiclePos(vid, Coord[0], Coord[1]+4, Coord[2]+4);
                        SetPlayerInterior(Clicado[playerid], intid);
                        LinkVehicleToInterior(vid, intid);
                    }
                    else
                    {
                        SetPlayerInterior(Clicado[playerid], intid);
                        SetPlayerPos(Clicado[playerid], Coord[0], Coord[1]+4, Coord[2]+4);
                    }
                    format(string, sizeof(string), "Vocк trouxe %s(id: %d) atй vocк.", PlayerName(Clicado[playerid]), Clicado[playerid]);
                    SendClientMessage(playerid, Cor_Verde, string);
                    return 1;
                }
               
                else if(listitem == 2)
                {
                format(string, sizeof(string),"%s foi kickado por %s ", PlayerName(Clicado[playerid]), PlayerName(playerid));
                SendClientMessageToAll(Cor_Vermelho, string);
                Kick(Clicado[playerid]);
                return 1;

                }
               
                else if(listitem == 3)
                {
                    format(string, sizeof(string), "%s foi kickado por %s ", PlayerName(Clicado[playerid]), PlayerName(playerid));
                    SendClientMessageToAll(Cor_Vermelho, string);
                    Ban(Clicado[playerid]);
                  return 1;

                }
           }
        }
        return 1;
    }
    return 0;
}



Quem tiver erro de PlayerName, crie uma variavel e use o GetPlayerName, ou adicionem essa funзгo ao seu mode:
pawn Код:
stock PlayerName(playerid)

Código:
{
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, MAX_PLAYER_NAME);
    return Nome;
}



Espero que tenham entendido
Qualquer dъvida, postem ai.

Obs: Qualquer erro informem



Creditos: speliarmos

! Nebrascos

Ajuda com erro - Ter 31 Jan 2023 - 17:26




No topo da Gm escreva

#define DIALOG_VEICULOS                      123

o Número 123 pode ser trocado, apenas verifique se não tem outra define com esse número.


E também é dialogid não dialog

[Tutorial] » Perguntas & respostas frequentes sobre pawn - Qui 28 Jul 2022 - 17:44

Perguntas & respostas frequentes  sobre pawn



Pergunta 1 - O que é o erro loose Indentation e porque é causado?
- Resposta : Loose Indentation é uma má Indentation e é Causada por códigos mal alinhados ou falta de tab.


Pergunta 2 - O que é o erro/warning "Symbol Already Defined"?
- Resposta : Significa que um simbolo, seja ele função/stock/define já está definido, a solução consiste em modificar o nome, ou simplesmente deletar uma das definições.


Pergunta 3 - O que é o erro/warning "symbol is never used"?
- Resposta: Significa que algo foi definido, porém, nunca foi utilizado em nenhum local do script.


Pergunta 4 - O que acontece quando surge 26 erros, sem ter feito maiores modificações?
- Resposta : Geralmente 26 erros é mostrado, por erro de chaves no pawn, verifique se suas funções estão corretas.


Pergunta 5 - O que é este erro: "imput line too long (after substituitions)"?
- Resposta: É uma linha considerada grande para o pawn, a melhor solução é deletar itens da mesma, ou utilizar strcat quando se tratar de strings.


Pergunta 6 - O que significa isto "public lacks forward declaration(symbol: "Public")"?
- Resposta: Consiste em uma públic que você criou, mas não criou a forward no topo do script, toda public necessita de uma forward para funcionar sem erros.


Pergunta 7 - O que significa: "cannot read from file "nome""?
- Resposta: é uma Include que você tem, porém o pawn não reconheceu, seja ela por nome errado, ou extensão errada, verifique se sua include está na pasta \pawno\include.


Pergunta 8 - O que significa: "initialization data exceeds declared size"?
- Resposta: Você criou uma array, possivelmente menor do que ela apresenta no conteudo em sí, um exemplo disto é palavras, você cria uma array com 27 e põe 30 palavras, então você deve definir como 30.


Pergunta 9 - Como sei se algum arquivo é para Windows ou Linux?
- Resposta: veja se o arquivo baixado contém a extensão .so ou .dll, se tiver a extensão .so, é para Linux, e se for para Windows, irá conter a extensão .dll.


Pergunta 10 - Como coloco o Personagem para Andar em Modo CJ?
- Resposta: Em OnGameModeInit, insira este código: UsePlayerPedAnims();


Pergunta 11 - Quantos Objetos o CreateObject Suporta?
- Resposta: 1000 Objetos ao total.


Pergunta 12 - Devo utilizar streamer para objetos? E qual o recomendado?
- Resposta: Vá pelo povo, ou seja, escolha o que todos usam e dizem que é bom, opte pelo streamer do Incognito, até por ser Objetos Ilimitados


Pergunta 13 - Como faço para aparecer o texto acima da cabeça do jogador?
- Resposta - Use a função, SetPlayerChatBubble


Pergunta 14 - Coloquei uma função no meu OnPlayerText, e as Mensagens Saem Duplicadas, o que Devo Fazer?
- Resposta: Use return 0; ao final desta função, return 1; é o causador de enviar a mensagem normal, junto com a função sobreposta.


Pergunta 15 - Como mudo a cor do nome do jogador?
- Resposta: Use a função SetPlayerColor.


Pergunta 16 - Começei a programar agora, como dou arma, vida e colete para um jogador?
- Resposta: Use as funções, GivePlayerWeapon, SetPlayerHealth, SetPlayerArmour.


Pergunta 17 - Como sei quanto de vida o Jogador tem, há como pegar?
- Resposta: Sim, crie um Float, e utilize GetPlayerHealth e GetPlayerArmour
- Exemplo: new Float:Vida > GetPlayerHealth(playerid, Vida);


Pergunta 18 - O que é um float?
- Resposta: É o elemento criado, para getar tal quantidade quebrada.


Pergunta 19 - Fiz um sistema de vida vinal, mas ele sai com varias casas após o ponto, como resolver?
- Resposta: Utilize %.0f > 0 conta quantas casas terá após o . , se tiver 0 automaticamente o ponto desaparecerá.


Pergunta 20 - Como somar vida com colete?
- Resposta: Crie um Float, e utilize funções de adição
- Exemplo: new Float:Total = Armor + HP;


Pergunta 21 - O que é bool?
- Resposta: Também chamada de booleana, é uma forma facil de entender, ou distinguir tais funções, ou seja, em vez de 1 ou 0, será true ou false simplesmente.


Pergunta 22 - Como pego a posição do jogador?
- Resposta: Crie Floats de coordenadas, e utilize GetPlayerPos
- Exemplo : new Float:X, Float:Y, Float:Z > GetPlayerPos(playerid, X, Y, Z);


Pergunta 23 - Há como fazer com veiculos?
--Resposta: Sim, apenas modifique GetPlayerPos para GetVehiclePos.


Pergunta 24 - Pawn Compiler Parou de Funcionar, o que faço?
--Resposta: Verifique suas ultimas modificações, pode ser um simples erro de código que fará com que isto aconteça


Pergunta 25 - O Pawn enviou um aviso de stack/heap ultrapassados, o que devo fazer?
--Resposta: Pode utilizar #pragma dynamic 65535 no topo do GM, ou Simplesmente, separar parte do GM para um Filterscript


Pergunta 26 - Há algum Problema em Deixar Warnings?
--Resposta:Sim, pois nem sempre suas funções vão funcionar, ou irá dar lag no servidor.


Pergunta 27 - O Que é FPS?
--Resposta: Frames Per Second, ou seja, a qualidade gráfica do seu computador com o determinado jogo.


Pergunta 28 - O Que é Ping?
--Resposta: é a Taxa estimada da conexão entre o servidor e sua internet, quanto maior for, mais lag irá causar.


Pergunta 29 - Como Defino um Filterscript?
--Resposta: Use: #define FILTERSCRIPT
                             #if defined FILTERSCRIPT
                             #endif
No Topo do Script.


Pergunta 30 - Qual o melhor GM, Editado ou Iniciado do 0?
--Resposta: Creio eu que seja melhor iniciado do 0, pois assim, além de você aprender mais, você entende o que você está fazendo e terá mais chances de sucesso no projeto.


Pergunta 31 - Com qual Modo de Jogo devo Começar a Programar?
--Resposta: Começe com drift, é o mais facil de entender.


Pergunta 32 - O Que é "warning 219: local variable "Nome" shadows a variable at a preceding level"?
--Resposta: Já está definido, apenas mude o nome da variável local.


Pergunta 33 - O Que é "Unmatched Closing Brace"
--Resposta: Você abriu uma chave e não a fechou, procure ela e coloque "}".


Pergunta 34 - Como faço para retirar aquele "SERVER: Unknown Command"?
--Resposta: coloque: return SendClientMessage(playerid, -1, "Mensagem"); ao final do OnPlayerCommandText.


Pergunta 35 - Quais São os Melhores editores para Linguagem Pawn?
--Resposta: Notepad++ , Pawn, e Scripting Machine IDE creio eu, Infernus Pawn Editor esconde muitos erros.


Pergunta 36 - Pawn Surgiu de Qual Linguagem de Programação?
--Resposta: Pawn é derivado da linguagem de programação C, tendo em si duas distribuições, Sendo elas "Small" e a Atual "Pawn"


Pergunta 37 - Quais os melhores Processadores de comandos hoje em dia?
--Resposta: Creio eu que dentre as includes que existem hoje, bcmd / zcmd / ycmd são os melhores considerados pelos usuários.


Pergunta 38 - Como configuro o nome do meu servidor / senha de rcon / nome do mapa?
--Resposta: Abra o arquivo server.cfg e modifique as Linhas: rcon_password / hostname / mapname


Pergunta 39 - SA:MP Se limita a quantos jogadores ao maximo?
--Resposta: Bom, a ultima versão se limita até 1000 jogadores.


Pergunta 40 - Como faço pra colocar execuções de músicas em meu servidor?
--Resposta: Utilize PlayAudioStreamForPlayer e para Parar o Mesmo utilize StopAudioStreamForPlayer


Pergunta 41 - Mudar a placa do veículo ainda é possível?
--Resposta: Não, a função foi retirada na versão 0.3c e atualmente não é mais funcional


Pergunta 42 - Como faço aquelas caixas de texto?
--Resposta: Chamam-se Dialogs, neste link há toda a explicação: https://pawn.2al.ru/?lang=en&q=dialogs


Pergunta 43 - Qual o melhor lugar para aprender a programação inicial?
--Resposta: Wiki-SAMP, Tudo que você precisa, está lá ao seu dispor


Pergunta 44 - Quantas skins existem atualmente e quantos modelos de veiculos há no SA:MP 0.3e?
--Resposta: São 299 Skins, sendo Elas do 0 ao 299 e 211 Veiculos Sendo eles ID's 400 a 611.


Pergunta 45 - Como faço para logar-me na rcon e ter acesso aos comandos rcon?
--Resposta: digite /rcon login suasenha (senha definida no server.cfg) e digite /rcon cmdlist.


Pergunta 46 - Qual é a Função Responsável por Criar Veiculos no Script?
--Resposta: AddStaticVehicle, AddStaticVehicleEx, CreateVehicle.


Pergunta 47 - O Que é "Number of Arguments does not match definition"?
--Resposta: Numero de argumentos inválidos, ou algum deles está incorreto, verifique os parametros da função.


Pergunta 48 - Quais são as Combinações de Comando (Ex sscanf + zcmd)?
--Resposta: sscanf + zcmd, dcmd, bcmd... com strcmp é utilizado strtok.


Pergunta 49 - O Que é chamado o Código fonte de algo?
--Resposta: é aquilo que você programou, em alguns lugares, é exigido postar o código fonte de seu trabalho.


Pergunta 50 - "symbol zcmd_comando already defined" O Que é?
--Resposta: é uma Falta de chaves fechadas no comando, pois se você não fechar, ele dirá que o comando abaixo deste faz parte do que não foi fechado.


Pergunta 51 - Quais são as callbacks para zcmd , strcmp, bcmd e dcmd?
--Resposta: ZCMD = OnPlayerCommandPerformed(playerid, cmdtext[], success)
                     BCMD = OnPlayerCallCommand(playerid, cmdtext[], sucess)
                     DCMD = OnPlayerCommandText(playerid, cmdtext[])
                     strcmp = OnPlayerCommandText(playerid, cmdtext[])


Pergunta 52 - O Que é o main(){} do inicio do script?
--Resposta: é a função Responsável por falar pro script que o "GameMode" Foi iniciado, após isto é chamada a OnGameModeInit.


Pergunta 53 - Como Destruo Veiculos? qual função Utilizar?
--Resposta: DestroyVehicle(vehicleid);


Pergunta 54 - Como Faço para Pegar o ID Do Veiculo em que um Jogador Está?
--Resposta: GetPlayerVehicleID(playerid); >> https://wiki.multitheftauto.com/wiki/Vehicle_IDs


Pergunta 55 - Como adiciono partes de veículo (aquelas que são tunáveis)?
--Resposta: AddVehicleComponent.


Pergunta 56 - O Que é um Looping?
--Resposta: Ou...
                     for(new i = 0; i < MAX_PLAYERS; i++)
                     {
          //....
                     }


Pergunta 57 - Porque entro em alguns servidores, e fica só reconectando?
--Resposta: Verifique se sua versão do SA:MP é a mesma versão utilizada pelo servidor, poderá ver ao lado direito da janela do samp após clicar no servidor.


Pergunta 58 - Como Coloco Objeto em Algum Jogador ou Veiculo?
--Resposta: SetPlayerAttachedObject e AttachObjectToVehicle.


Pergunta 59 - Como crio Textos 3D?
- Resposta:  - Demais variações estão na mesma página.


Pergunta 60 - Como faço para criar TextDraws e GameTexts?
- Resposta:


Plataforma Para Criar Textdraw PC




Plataforma para criar textdraw no mobile




GameTexts:

By Fenix Gaming

Weslley_Script

[Tutorial] »  GPS SIMPLES - Qui 26 Ago 2021 - 17:46

COMO FAZER UM GPS?

Bom, nesta postagem vou ensinar como fazer um GPS, pode ser simples para alguns porém é útil para novatos.




1 - Includes

Bom, vou fazer este GPS em ZCMD, para o GPS em si só precisa de 1 includes (fora as nativas do samp, claro).

ZCMD

Download: http://www.mediafire.com/file/5iouz96umiwy2aq/file




2- Definir

Abaixo das includes, defina o GPS com um ID

Código:
Código:
#define GPS 1


#define é pra definir algo
GPS é o nome da sua definição
1 é o ID da sua definição



3 - Criando o comando

Como o foco do tutorial não é como usar o ZCMD, não vou mostrar como cria um comando.

No final de sua GM coloque isto:

Código:
Código:
CMD:gps(playerid, params[])
{
    ShowPlayerDialog(playerid, GPS, DIALOG_STYLE_LIST, "GPS", "LOCAL 1\nLOCAL 2\nLOCAL 3\nLOCAL 4\nLOCAL 5", "Ok", "Sair");
    return 1;
}


Na onde esta escrito "LOCAL 1" "LOCAL 2" etc, você coloca os nomes dos locais para o GPS.




4 - Checkpoint após clicar 

Bom, para fazer o checkpoint após clicar na opção, vá na Callback OnDialogResponse e coloque isto

Código:
Código:
   if(dialogid == GPS)
   {
      if(response)
      {
          if(listitem == 0) //LOCAL 1
          {
                SetPlayerCheckpoint(playerid, x, y, z,8.0); //COLOQUE SUA CORDENADA
                SendClientMessage(playerid, 0xFF7403FF, "[INFO]: Local marcado em seu mapa");
                return 1;
          }
          if(listitem == 1) //LOCAL 2
          {
                SetPlayerCheckpoint(playerid, x, y, z,8.0); //COLOQUE SUA CORDENADA
                SendClientMessage(playerid, 0xFF7403FF, "[INFO]: Local marcado em seu mapa");
                return 1;
          }
          if(listitem == 2) //LOCAL 3
          {
                SetPlayerCheckpoint(playerid, x, y, z,8.0); //COLOQUE SUA CORDENADA
                SendClientMessage(playerid, 0xFF7403FF, "[INFO]: Local marcado em seu mapa");
                return 1;
          }
          if(listitem == 3) //LOCAL 4
          {
                SetPlayerCheckpoint(playerid, x, y, z,8.0); //COLOQUE SUA CORDENADA
                SendClientMessage(playerid, 0xFF7403FF, "[INFO]: Local marcado em seu mapa");
                return 1;
          }
          if(listitem == 4) //LOCAL 5
          {
                SetPlayerCheckpoint(playerid, x, y, z,8.0); //COLOQUE SUA CORDENADA
                SendClientMessage(playerid, 0xFF7403FF, "[INFO]: Local marcado em seu mapa");
                return 1;
          }
           
        }
   }


Em cada local, será correspondente aos locais que você colocou na comando do GPS. por exemplo se o primeiro local do seu GPS for prefeitura, voce vai colocar as coordenadas da prefeitura no primeiro "SetPlayerCheckpoint" mude os x, y ,z pelas coordenadas dos locais.



6 - Bonus

Vou deixar um comando que desabilita o GPS se você selecionou o local errado, não é necessario por isso deixei como "Bonus".


Código:
Código:
CMD:desligargps(playerid, params[])
    {
        DisablePlayerCheckpoint(playerid);
        RemovePlayerMapIcon(playerid, 0);
        return true;
    }



7 - Final

E pronto, seu GPS estará feito, lembrando você pode colocar mais locais de acordo com oque você precisa.

Vou fazer uma nova postagem de um GPS com "Locais importantes" "HQ's" etc... um GPS avançado, mas por enquanto é isso, se te ajudei +REP.




Creditos: Gomes
Alguns matam, alguns roubam e outros quebram seu coração...

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

Weslley_Script

Tempo Real (Clima) - Qui 10 Out 2019 - 18:12

[size=24]Tempo Real

Bom pessoal, depois de muito tempo sem programar, trago esse filterscript aqui pra vocês, espero que gostem e aproveitem![/size]


[size=18]Caracteristicas do Filterscript[/size]

Fiz esse filterscript baseado em um que o ipsBruno criou, esse filterscript serve para você pegar o tempo da sua cidade e colocar em seu server, por exemplo: Em São paulo está chovendo, e você quer que no seu server também chova, bom, é basicamente essa a função do FilterScript!


Como usar


O FilterScript é muito facil de ser configurado, existe a define "cidade" onde você coloca o nome da sua cidade, por exemplo: #define cidade sao-paulo ( Precisa ser minusculo e caso precise de espaço ultilize "-" ), e também, outra define que você pode alterar a quantidade de horas que o FilterScript atualize, exemplo: #define h_atualizar 1 ele irá atualizar de uma em uma hora.

[size=18]Créditos e Agradecimentos[/size]

* FreeGells - Criador do FilterScript
* ipsBruno - Base do FilterScript
* Lós - Esclarecimento de algumas duvidas



Download

RNPC - Recordfree NPCs | Control NPCs without recording | DEV - Dom 9 Jun 2019 - 14:05

Time for another update! Here comes 0.3.4.
Again, this is mainly an update to make RNPC more user-friendly. There arent any big new features.

Changelog:


  • Added an update notifier (see below)

  • Added RNPC_CreateCustomBuild(type, name[]) to create npc-unspecific .rec files with a custom name

  • Added RNPC_CreateBuild_s(npcid, type, slot=0) to avoid build-slot collision crashes

  • Added OnRNPCPlaybackStopped(npcid) callback

  • RNPC_StopPlayback now performs a "clean" stop without any "running on the place"

  • Plugin restructuring, Buildmode should be slightly faster now and creates less file accesses

  • Seamless support for ZCMD (experimental)

  • Made RNPC_StartPlayback more stable and tolerant

  • Fixed RNPC_AddPause actually adding a pause twice as long as specified (you might need to double your pauses now for the update)

  • Greatly expanded the debug output (#define RNPC_DEBUG before including rnpc.inc to activate)

  • Updated the integrated MapAndreas to 1.2



I think thats all. As said, the main intention of this update is to make life easier for guys using RNPC. The debug outputs might also help me debugging, so feel free to post them if you got some problem/bug.

The update notifier / RNPC statistics
On gamemode init the include now connects to my server and "asks" if theres a new version available. If there is, it will print a message to the log. I added this because in the past there were several minor updates, some so small that people didnt even notice theres an update. But these updates sometimes contain important fixes that people shouldnt miss.

Additionally, RNPC now sends an update to my server every 15 minutes, containing only the used RNPC version and the used port of the samp server. WHOA, I use RNPC for spying on servers? No, of course I dont. I am a fan of getting statistics out of everything, so Id also like to know a bit about the usage and version spreading of RNPC, thats all. The port and IP are hashed just to get an unique, anonymous identifier, so I can count how many RNPC servers are currently running. Im really not interested in building up a list of servers, or absue your port and version for some evil plan. Youre not revealing more information than you would by opening a website in your browser.
Anyways, this is just optional of course, and if you dont like it, you can use one of the two defines to limit or disable communications with my server, just define them before including rnpc.inc for that:
#define RNPC_NO_VERSION_CHECK // Completely deactivates any kind of communication with my server
#define RNPC_NO_STATUPDATES // Still checks for updates, but dont send the 15-minute-updates to my server

RNPC_CreateBuild_s
This new function simply checks if the build slot youre trying to create is currently being played back. If it is, it will pick the next one, and return it. Writing to a currently played file can crash the NPC, but this way this cant happen. You dont need to change this now for every RNPC_CreateBuild in your script, if youre sure there wont be a collision you dont need to use it at all. But if you experience NPC crashes from time to time you might want to use this one. Anyways you CAN change it for every RNPC_CreateBuild if you like, theres nothing bad coming from this, except that you need to watch for the returned slot, so youre not playing back the wrong one:

[size=11]pawn Code:
// Store the returned slot
new slot = RNPC_CreateBuild_s(npcid, PLAYER_RECORDING_TYPE_ONFOOT);
RNPC_AddMovement(0.0, 0.0, 0.0, 10.0, 10.0, 10.0);
RNPC_FinishBuild();
RNPC_StartBuildPlayback(npcid, slot); // That simple[/size]


Also, about the msvcp120d.dll error for the debug version: I think that one comes with Visual Studio 2013. I noticed youre not allowed to redistribute that file, so I cant upload it. I cant stop you from getting it somewhere else, youd need to put it in the server directory then, but be aware that dll files might contain a virus and stuff, so dont use untrusted sources.

Alright then, I hope you like this update and it doesnt cause too many new bugs Tópicos com a tag define em SSGamers - 12 Anos online por você. Wink
Link is in the first post btw.

NTz_

Tutorial de como criar um dialog - Seg 8 Abr 2019 - 20:22

[size=13]Criando um dialog[/size]
Feito por: speliarmos

Vendo que muitos tem dúvidas sobre como criar um dialog vou aqui fazer uma coisa rápida de como cria-lo..

Primeiramente você tem que conhecer as funções..
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])]
Este é o callback onde você irá colocar as funções de cada dialog.

playerid - ID do player a qual está sendo mostrado o dialog e ocorrerá a função.
dialogid - ID do dialogo criado. É extremamente importante que você coloque sempre ids diferentes, e de preferência em ordem crescente. E para uma maior organização, você pode usar defines. Ex: #define DialogoDeRegistro 1
response - É usado para gerenciar os dois botões.
listitem - É usado para gerenciar os itens da lista conforme a ordem. listitem 1, 2, 3 e quantos você estiver colocado. Usado no estilo DIALOG_STYLE_LIST.
inputtext - É usado para pegar o texto(string[]) digitado pelo jogador na caixa. Usado no estilo DIALOG_STYLE_INPUT.

ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);
Função usada para criar o dialog.

playerid ID do player a ser exibido o dialog.
dialogid - ID de ordem do dialog criado. É extremamente importante que você coloque sempre ids diferentes, e de preferência em ordem crescente. E para uma maior organização, você pode usar defines. Ex: #define DialogoDeRegistro 1
style - Estilo do dialog a ser criado. Existem 3 tipos:
0 - DIALOG_STYLE_MSGBOX - Estilo que só mostra uma mensagem na caixa.
1 - DIALOG_STYLE_INPUT - Estilo onde abre uma caixa com uma mensagem, e um espaço para o player digitar.
2 - DIALOG_STYLE_LIST - Exibe uma lista de itens para ser selecionado e ocorrer a função para tal id.

caption[] - Usado para colocar o texto do cabeçalho.

info[] Usado para escrever o conteúdo que aparecerá dentro do dialog.

button1[] - Texto que aparecerá no botão número 1.

button2[] Texto que aparecerá no botão número 2.

Para criar um dialog é simples. Vamos começar com o estilgo MSGBOX:

Primeiramente crie-o com a função ShowPlayerDialog:
[size=11]

Agora com o estilo DIALOG_STYLE_INPUT:
[size=11][/size]

Agora com o estilo DIALOG_STYLE_LIST:
[size=11][/size]

Quem tiver erro de PlayerName, crie uma variavel e use o GetPlayerName, ou adicionem essa função ao seu mode:

huskyTortoise35

[GM] LSBR @Re-UP @Casas Desbugadas - Qui 13 Set 2018 - 20:31

Very Happy Very Happy Very Happy Very Happy

PoisoN escreveu:
Fala aí, Estou retrazendo a GM do LSBR com as casas "desbugadas"


LINK: LSBR

Alguns Sistemas e comandos:

sistema de /comerchurrasco
sistema de /beber
sistema de /radios
sistema de casas editadas
sistema de orgs editadas (Organização X, Cia, FBI)
sistema de orgs com novos comandos exemplo: (/procurarfbi, /procurarcia, /sumirradar, /invadirhq, /monitorarradio, /monitorarligacoes, etc...
sistema de cofres que cabe mas de 40bilhão no cofre
sistema de escritórios editados
sistema de vips diferenciados VIP Premium, Ostenta, Alguns comandos: /org(nome da org) /orgdetran, /jetpack, /kitpremium, etc..
Ostenta pode ter até 8 veiculos, Vip premium 4 veiculos.
sistema de /freio 
Apartamentos Customizaveis, Encontra-se Perto da praia de Santa Maria Beach.
Entre outros sistemas que você pode encontrar dentro da GM.


Como virar Admin Dono do GM:


Abra pasta scriptfiles/Contas


Altere o nome para o seu nick


Logue!


+ Tutorial de como ligar  By: Bruno Style

Passo 1
abre o lsbr.pwn


passo 2


procure por #define ML


http://prntscr.com/imrgut


passo 3 


Altere RCP,PP,PI,ML(ML é obrigatório mudar todo mês, Exemplo: se for Mês 03 coloca #define ML 3, se for Mês 04 coloca 4


http://prntscr.com/imrhwt


passo 4


Compile-o


passo 5 


Abra o server.cfg


passo 6


Altere o bind, rcon, porta, Para o mesmo que você colocou no pawno (RCP=Rcon Password, PP=Porta, PI= IP)
http://prntscr.com/imrilm


No meu caso vai ficar assim:
http://prntscr.com/imrjer


passo 7


Salve o server.cfg


Passo 8


Abra o LSBR.exe e Divirta-se.




------------------------------------LEIA É IMPORTANTE CASO SERVER NÂO LIGUE------------------------------


Acontece isso?

Código:


----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team

[04/03/2018 15:22:23]
[04/03/2018 15:22:23] Server Plugins
[04/03/2018 15:22:23] --------------
[04/03/2018 15:22:23]  Loading plugin: crashdetect
[04/03/2018 15:22:23]   CrashDetect v4.15.1 is OK.
[04/03/2018 15:22:23]   Loaded.
[04/03/2018 15:22:23]  Loading plugin: streamer
[04/03/2018 15:22:40]

*** Streamer Plugin v2.9.1 by Incognito loaded ***

[04/03/2018 15:22:40]   Loaded.
[04/03/2018 15:22:40]  Loading plugin: sscanf
[04/03/2018 15:22:40]

[04/03/2018 15:22:40]  ===============================

[04/03/2018 15:22:40]       sscanf plugin loaded.    

[04/03/2018 15:22:40]          Version:  2.8.1        

[04/03/2018 15:22:40]    (c) 2012 Alex "Y_Less" Cole  

[04/03/2018 15:22:40]  ===============================

[04/03/2018 15:22:40]   Loaded.
[04/03/2018 15:22:40]  Loaded 3 plugins.

[04/03/2018 15:22:40]
[04/03/2018 15:22:40] Ban list
[04/03/2018 15:22:40] --------
[04/03/2018 15:22:40]  Loaded: samp.ban
[04/03/2018 15:22:40]
[04/03/2018 15:22:40]
[04/03/2018 15:22:40] Filterscripts
[04/03/2018 15:22:40] ---------------
[04/03/2018 15:22:40]   Loading filterscript 'portao.amx'...
[04/03/2018 15:22:44]   Loaded 1 filterscripts.

[04/03/2018 15:22:44] **************************************
[04/03/2018 15:22:44] *    LOS SANTOS BRASILEIRA RPG ®️    *
[04/03/2018 15:22:44] *ºººººººººººººººººººººººººººººººººººº*
[04/03/2018 15:22:44] *    RPG versão 5.1 ®️                *
[04/03/2018 15:22:44] *    Los Santos ®️                    *
[04/03/2018 15:22:44] *------------------------------------*
[04/03/2018 15:22:44] *                  Servidor Ligado.  *
[04/03/2018 15:22:44] **************************************
[04/03/2018 15:22:44]  
[04/03/2018 15:22:44] Number of vehicle models: 0
[04/03/2018 15:22:44] --- Server Shutting Down.
[04/03/2018 15:22:45]
=================================================================
[04/03/2018 15:22:45] Servidor Desligado: [04/03/2018 15:22:45]
[04/03/2018 15:22:45] =================================================================

[04/03/2018 15:22:45]

*** Streamer Plugin v2.9.1 by Incognito unloaded ***

[04/03/2018 15:22:45]

[04/03/2018 15:22:45]  ===============================

[04/03/2018 15:22:45]      sscanf plugin unloaded.    

[04/03/2018 15:22:45]  ===============================


Facil corrigir...



Remova isso do LSBR.pwn





Código:
new Data[3];
getdate(Data[0], Data[1], Data[2]); if(Data[1] != ML) {        SendRconCommand("exit");        return true; }
new SERVER_RCON[16]; GetServerVarAsString("rcon_password", SERVER_RCON, sizeof SERVER_RCON);    if(strcmp(SERVER_RCON,RCP))    {        SendRconCommand("exit");        return true;    }
new SERVER_PORT = GetServerVarAsInt("port");    if(SERVER_PORT != PP)    {        SendRconCommand("exit");        return true;    }
new SERVER_IP[16]; GetServerVarAsString("bind", SERVER_IP, sizeof SERVER_IP); if(strcmp(SERVER_IP,PI) || !strlen(SERVER_IP)) {   SendRconCommand("exit"); return true; }







LINHAS:

http://prntscr.com/imrkws

Como Vai Ficar Ao Ligar:
http://prntscr.com/ims44e

Pronto Divirta-se.

Playboy VN

[GM] LSBR @Re-UP @Casas Desbugadas - Dom 4 Mar 2018 - 15:41

Fala aí, Estou retrazendo a GM do LSBR com as casas "desbugadas"


LINK: LSBR

Alguns Sistemas e comandos:

sistema de /comerchurrasco
sistema de /beber
sistema de /radios
sistema de casas editadas
sistema de orgs editadas (Organização X, Cia, FBI)
sistema de orgs com novos comandos exemplo: (/procurarfbi, /procurarcia, /sumirradar, /invadirhq, /monitorarradio, /monitorarligacoes, etc...
sistema de cofres que cabe mas de 40bilhão no cofre
sistema de escritórios editados
sistema de vips diferenciados VIP Premium, Ostenta, Alguns comandos: /org(nome da org) /orgdetran, /jetpack, /kitpremium, etc..
Ostenta pode ter até 8 veiculos, Vip premium 4 veiculos.
sistema de /freio 
Apartamentos Customizaveis, Encontra-se Perto da praia de Santa Maria Beach.
Entre outros sistemas que você pode encontrar dentro da GM.


Como virar Admin Dono do GM:


Abra pasta scriptfiles/Contas


Altere o nome para o seu nick


Logue!


+ Tutorial de como ligar  By: Bruno Style

Passo 1
abre o lsbr.pwn


passo 2


procure por #define ML


http://prntscr.com/imrgut


passo 3 


Altere RCP,PP,PI,ML(ML é obrigatório mudar todo mês, Exemplo: se for Mês 03 coloca #define ML 3, se for Mês 04 coloca 4


http://prntscr.com/imrhwt


passo 4


Compile-o


passo 5 


Abra o server.cfg


passo 6


Altere o bind, rcon, porta, Para o mesmo que você colocou no pawno (RCP=Rcon Password, PP=Porta, PI= IP)
http://prntscr.com/imrilm


No meu caso vai ficar assim:
http://prntscr.com/imrjer


passo 7


Salve o server.cfg


Passo 8


Abra o LSBR.exe e Divirta-se.




------------------------------------LEIA É IMPORTANTE CASO SERVER NÂO LIGUE------------------------------


Acontece isso?

Código:


----------
Loaded log file: "server_log.txt".
----------

SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team

[04/03/2018 15:22:23]
[04/03/2018 15:22:23] Server Plugins
[04/03/2018 15:22:23] --------------
[04/03/2018 15:22:23]  Loading plugin: crashdetect
[04/03/2018 15:22:23]   CrashDetect v4.15.1 is OK.
[04/03/2018 15:22:23]   Loaded.
[04/03/2018 15:22:23]  Loading plugin: streamer
[04/03/2018 15:22:40]

*** Streamer Plugin v2.9.1 by Incognito loaded ***

[04/03/2018 15:22:40]   Loaded.
[04/03/2018 15:22:40]  Loading plugin: sscanf
[04/03/2018 15:22:40]

[04/03/2018 15:22:40]  ===============================

[04/03/2018 15:22:40]       sscanf plugin loaded.    

[04/03/2018 15:22:40]          Version:  2.8.1        

[04/03/2018 15:22:40]    (c) 2012 Alex "Y_Less" Cole  

[04/03/2018 15:22:40]  ===============================

[04/03/2018 15:22:40]   Loaded.
[04/03/2018 15:22:40]  Loaded 3 plugins.

[04/03/2018 15:22:40]
[04/03/2018 15:22:40] Ban list
[04/03/2018 15:22:40] --------
[04/03/2018 15:22:40]  Loaded: samp.ban
[04/03/2018 15:22:40]
[04/03/2018 15:22:40]
[04/03/2018 15:22:40] Filterscripts
[04/03/2018 15:22:40] ---------------
[04/03/2018 15:22:40]   Loading filterscript 'portao.amx'...
[04/03/2018 15:22:44]   Loaded 1 filterscripts.

[04/03/2018 15:22:44] **************************************
[04/03/2018 15:22:44] *    LOS SANTOS BRASILEIRA RPG ®️    *
[04/03/2018 15:22:44] *ºººººººººººººººººººººººººººººººººººº*
[04/03/2018 15:22:44] *    RPG versão 5.1 ®️                *
[04/03/2018 15:22:44] *    Los Santos ®️                    *
[04/03/2018 15:22:44] *------------------------------------*
[04/03/2018 15:22:44] *                  Servidor Ligado.  *
[04/03/2018 15:22:44] **************************************
[04/03/2018 15:22:44]  
[04/03/2018 15:22:44] Number of vehicle models: 0
[04/03/2018 15:22:44] --- Server Shutting Down.
[04/03/2018 15:22:45]
=================================================================
[04/03/2018 15:22:45] Servidor Desligado: [04/03/2018 15:22:45]
[04/03/2018 15:22:45] =================================================================

[04/03/2018 15:22:45]

*** Streamer Plugin v2.9.1 by Incognito unloaded ***

[04/03/2018 15:22:45]

[04/03/2018 15:22:45]  ===============================

[04/03/2018 15:22:45]      sscanf plugin unloaded.    

[04/03/2018 15:22:45]  ===============================


Facil corrigir...



Remova isso do LSBR.pwn





Código:
new Data[3];
getdate(Data[0], Data[1], Data[2]); if(Data[1] != ML) {        SendRconCommand("exit");        return true; }
new SERVER_RCON[16]; GetServerVarAsString("rcon_password", SERVER_RCON, sizeof SERVER_RCON);    if(strcmp(SERVER_RCON,RCP))    {        SendRconCommand("exit");        return true;    }
new SERVER_PORT = GetServerVarAsInt("port");    if(SERVER_PORT != PP)    {        SendRconCommand("exit");        return true;    }
new SERVER_IP[16]; GetServerVarAsString("bind", SERVER_IP, sizeof SERVER_IP); if(strcmp(SERVER_IP,PI) || !strlen(SERVER_IP)) {   SendRconCommand("exit"); return true; }







LINHAS:

http://prntscr.com/imrkws

Como Vai Ficar Ao Ligar:
http://prntscr.com/ims44e

Pronto Divirta-se.

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.

Roger

Enviar Mensagem ao usar um comando - Ter 9 maio 2017 - 12:51

Gabriel_Xavier escreveu:Código ótimo, mas teria que acrescentar o define COLOR_WHITE, a maioria das Gamemodes não tem esses tipos de cores, mas enfim, pra reforçar o tópico coloque o "#DEFINE SUA_COR" no caso seria um define que está no seu gamemode


Obrigado, ótima observação !

Xavier

Enviar Mensagem ao usar um comando - Ter 9 maio 2017 - 0:03

Código ótimo, mas teria que acrescentar o define COLOR_WHITE, a maioria das Gamemodes não tem esses tipos de cores, mas enfim, pra reforçar o tópico coloque o "#DEFINE SUA_COR" no caso seria um define que está no seu gamemode

GabrielMT

[Tutorial] Como Criar PORTÕES Automáticos! - Seg 7 Nov 2016 - 23:50

Olá Galerinha do SA-MP Tópicos com a tag define em SSGamers - 12 Anos online por você. Razz

Hoje irei Postar meu primeiro TUT ! Aprenda Como fazer um PORTÃO Automático! Sei que já Existem, mas irei Lhes ensinar de forma diferente!




[size=32]MÉTODO 1[/size]
Portão com Comando ( /seucomando ) e Automatizado com Teclas do Teclado !

[size=16]Bem, começamos Definindo algumas coisas, criando new's ETC, adicionem isto no TOPO de seu GM/FS:[/size]
[size=11]Code:
new Gate; // Lembrando que o nome que Colocar aqui será Usado em TODO PROCESSO !
forward CloseGate(gateid); // Deixe QUETO ( Isso que fará com que o Portão Feche )
#define COLOR_YELLOW 0xFFFF00AA
// Definindo COR - Amarelo ![/size]
Agora Já Podemos seguir em Frente Tópicos com a tag define em SSGamers - 12 Anos online por você. Surprised


[size=16]OK, após feito Isso, vamos Adicionar nosso Portão, que esta definido como "Gate". Procure pelo public "OnGameModeInit" e Adicione seu PORTÃO com as Coordenadas dele Fechado, VEJA:[/size]
[size=11]Code:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ); // Coloque as Info do Portão FECHADO Aqui =D (MODEL,X,Y,Z,ROTX,ROTY,ROTZ) Site para Conversão: http://www.convertffs.com/[/size]
Por que o "Gate"? Pois foi esse nome que foi Definido no "new" do topo do GM/FS =D


[size=16]Isso, agora o Portão já Esta criado, agora temos que Move-ló. Irei mostrar uma forma Bem diferente e legal =D Primeiro crie o Comando, procure pela public "OnPlayerCommandText" e Coloque isso:[/size]
[size=11]Code:
if (strcmp("/seucomando", cmdtext, true, 10) == 0) // Coloque o Comando que irá Abrir o Portão ( Será usado depois Também )
{
if(IsPlayerInRangeOfPoint(playerid,7.0, X,Y,Z)) // Troque X,Y,Z Pelas Coordenadas do Portão Fechado ! Troque 7.0 Pela Distancia que o Comando poderá ser Usado a Partir das Cood que você Colocou !
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão Aberto ! 3.0 = Velocidade para ele se Mecher !
SetTimerEx("CloseGate", 10000, false, "i", Gate); // Troque 10000 pelo que Tempo que vai Levar para o Portão Fechar ( Lembrando que o TEMPO é em MS, ou seja, 10000 = 10 Segundos )!
SendClientMessage(playerid, COLOR_YELLOW, "ACESSE: http://forum.sa-mp.com"); // Coloque aqui a Mensagem que quer que Mande para o Player, EX: O Gate vai Facgar em 10 Segundos !
return 1;
}
}[/size]
Vocês devem Estar se Perguntando: "Por que comando se é Automático?" Calma, irei Explicar:
Eu resolvi desta forma pois Fica mais facil para Adaptação de mais de um Portões e quando o Player estiver fora do Veículo ou seja lá Como, ele também teria a Opção de digitar o Comando Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin Jájá irei Mostrar com Automatizar o Portão com Teclas do Teclado !



[size=16]Feito Isso, temos que fazer com que o Portão Feche né? Adicione o COD a seguir no Final do seu GM/FS:[/size]
[size=11]Code:
public CloseGate(gateid)
{
if(gateid == Gate)
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão FECHADO !
}
return 1;
}[/size]
Esta public fará com que o Portão Feche Tópicos com a tag define em SSGamers - 12 Anos online por você. Evil Como ela já foi Criada/Definida no inicio do GM/FS, não terá Problemas Tópicos com a tag define em SSGamers - 12 Anos online por você. Cool


[size=16]Agora o Mais esperado " Abrir o Portão com Teclas do Teclado ", procure pela public "OnPlayerKeyStateChange", caso não Tenha, crie-a.[/size]
[size=11]Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys==KEY_JUMP)) // Mude o KEY_JUMP pelo COD que Quiser, neste caso KEY_JUMP = Tecla SHIFT ( A pé ) / Espaço ( Em Veiculo ) - ( Pular/Freiar )
{
OnPlayerCommandText(playerid,"/seucomando"); // O Comando que Estiver aqui deve Ser o Memso que você Colocou Anteriormente !
// Adicione Outros Comandos para serem Executados com a Tecla SHIFT ( A pé ) / Espaço ( Em Veiculo ) - ( Pular/Freiar ) Aqui !
}
return 0;
}[/size]
Tópicos com a tag define em SSGamers - 12 Anos online por você. Cool Pronto - KEY_CROUCH = Buzina do Carro - Outras Teclas que podem ser Trocadas pelo "KEY_JUMP":
~~Key~~
Clique Aqui para ver as KEYs !



[size=32]MÉTODO 2[/size]
Portão Abre Automaticamente ao Chegar Perto !

[size=16]Bem, começamos Definindo algumas coisas, criando new's ETC, adicionem isto no TOPO de seu GM/FS:[/size]
[size=11]Code:
new Gate; // Lembrando que o nome que Colocar aqui será Usado em TODO PROCESSO !
forward CloseGate(gateid); // Deixe QUETO ( Isso que fará com que o Portão Feche )
forward IsPlayerAtToll(); // Deixe QUETO
#define COLOR_YELLOW 0xFFFF00AA
// Definindo COR - Amarelo ![/size]
Agora Já Podemos seguir em Frente Tópicos com a tag define em SSGamers - 12 Anos online por você. Surprised


[size=16]OK, após feito Isso, vamos Adicionar nosso Portão, que esta definido como "Gate". Procure pelo public "OnGameModeInit" e Adicione seu PORTÃO com as Coordenadas dele Fechado, VEJA:[/size]
[size=11]Code:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ); // Coloque as Info do Portão FECHADO Aqui =D (MODEL,X,Y,Z,ROTX,ROTY,ROTZ) Site para Conversão: http://www.convertffs.com/
SetTimer("IsPlayerAtToll", 1000, true); // 1000 = Tempo em MS que Verifica a Ação ( 1000 = 1 Segundo )[/size]
Por que o "Gate = CreateObject"? Pois foi esse nome que foi Definido no "new" do topo do GM/FS =D
O "SetTimer" Serve para Verificar ( de 1 em 1 Segundo ) SE a Alguém proximo ao Portão ! 



Feito Isso devemos Mover o OBJETO Certo? Então vamos lá! Criei a public "IsPlayerAtToll()" e coloque o Seguinte COD nela:
[size=11]Code:
{
for(new playerid=0; playerid {
if(IsPlayerInRangeOfPoint(playerid,7.0,Y,Y,Z)) // Troque X,Y,Z Pelas Coordenadas do Portão Fechado ! Troque 7.0 Pela Distancia que o Comando poderá ser Usado a Partir das Cood que você Colocou !
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão Aberto ! 3.0 = Velocidade para ele se Mecher !
SendClientMessage(playerid, COLOR_YELLOW, "ACESSE: http://forum.sa-mp.com"); // Coloque aqui a Mensagem que quer que Mande para o Player, EX: O Gate vai Facgar em 10 Segundos !
SetTimerEx("CloseGate", 10000, false, "i", Gate); // Troque o 10000 pelo que Tempo que vai Levar para o Portão Fechar ( Lembrando que o TEMPO é em MS, ou seja, 10000 = 10 Segundos )!
}
}
return 1;
}[/size]
Sim, o Portão será Aberto Automaticamente quando algum Player chegar perto Das Coords que você Colocou a Cima ( if(IsPlayerInRangeOfPoint ) !
Esta public fará com que o Portão Abra Tópicos com a tag define em SSGamers - 12 Anos online por você. Evil Como ela já foi Criada/Definida no inicio do GM/FS, não terá Problemas



[size=16]Ok, Agora temos que fazer com que o Portão Feche né? Adicione o COD a seguir no Final do seu GM/FS:[/size]
[size=11]Code:
public CloseGate(gateid)
{
if(gateid == Gate)
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão FECHADO !
}
return 1;
}[/size]
Esta public fará com que o Portão Feche Tópicos com a tag define em SSGamers - 12 Anos online por você. Evil Como ela já foi Criada/Definida no inicio do GM/FS, não terá Problemas Tópicos com a tag define em SSGamers - 12 Anos online por você. Cool Pronto!





CRÉDITOS: 100% by Gustavo_Bonomo

$$$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]

[TUT]Como criar Comando para Mudar a cor dos Players em Dialog + zcmd - Qui 23 Jun 2016 - 16:57

Aviso ja, se nao gostou , to nem ai ...

1° Coloce a Include zcmd no topo da Gamemode.
2° Defina as Cores. Ex:  #define cor 0xFF0000FF.
3° Va no fim da gamemode e coloce o seguinte comando.

Código:

CMD:mudarcor(playerid, params[])// COMANDO
{//ABRE CMD
// CASO QUERIA COLOCAR PARA ADM, COLOCE NA SEGUINTE MANEIRA. || if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COR,"| ERRO | Você nao está logado na RCON !");
 ShowPlayerDialog(playerid, 20003, DIALOG_STYLE_LIST, "Cores", "Cor que você quer.\nCor que você quer.\nCor que você quer.", "Confirmar", "Sair"); // DIALOG / LISTA EM DIALOG.
 return 1;// RETORNO.
}// FECHA CMD

3° Na em " OnDialogResponse "


4°Coloce na Seguinte Maneira.



Código:
 if(dialogid == 20003){// [ 20003 ] id dialog que formatei. Coloce sempre 1 Valor Alto.
 if(response){
 if(listitem == 0){
 SetPlayerColor(playerid, COR);
 }
 if(listitem == 1){
 SetPlayerColor(playerid, COR);
 }
 if(listitem == 2){
 SetPlayerColor(playerid, COR);
 }
 }
 }

Entao, Eu espero que tenha gostado...
Script é basico, eu sei, mas to nem ai
So to aqui para ajudar os outros e nao pra receber criticas dos scripters avancados.
Tbm sou iniciante, ent fica keto ai
Very Happy ti amo ta? UI

Lucas_Scarfe

Chat Fundador - Sex 27 maio 2016 - 11:13

=========================Lucas_Scarfe==========================




-Fala Galera Trago Hoje um Chat para sua gm (Base BPF) Chat Fundador
Onde Apenas Fundadores Nivel (5000) Pode fala E bem Simples mais espero ajudar.


Codigo:

===em defines====
#define azulbebe 1083D8


==============Em Baixo do CMD /a coloca esse CMD=============

Código:


        CMD:fu(playerid, result[])
{
   if(isnull(result))return SendClientMessage(playerid, COLOR_GRAD2, "USE: (/fu)dador [Chat Fundadores]");

if (PlayerInfo[playerid][pAdmin] >= 5000)
{
   new string[128];
format(string, sizeof(string), "{008000}[{FFFFFF}Fundador{008000}] {FFFFFF}%s: {1083D8}%s", PlayerInfo[playerid][pAdmin], PlayerName(playerid), result);
ABroadCast(Color_Admin, string, 1);
BRSLogs("admchat", string);
}
else if (PlayerInfo[playerid][pAdminTemp] >= 5000)
{
   new string[128];
format(string, sizeof(string), "{008000}[{FFFFFF}Fundador{008000}] {FFFFFF}%s: {1083D8}%s", PlayerName(playerid), result);
ABroadCast(Color_Admin, string, 1);
BRSLogs("admchat", string);
}
return true;
}




============================CREDITOS===================================


CriadorLucas_Scarfe
BASE do CMD:GameMode Brasil Play Facil
Skype do CriadorLucas_Scarfe






Obrigado! Very Happy

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_.

• Como criar um comando básico , em SendClientMessage! - Ter 21 Jul 2015 - 11:08

Olá pessoal , então estou sem ideia no momento do que postar pois não vou postar uma coisa que não sei é óbvio , já sei que vários irão vim nos comentários e postar " ban .../10 " ou algo parecido me criticando , simplesmente pelo fato de eu ter pedido ajuda e ter criado muitos tópicos , mais peço desculpas a isso !

Então vamos lá !

Índice :
Introdução
Como fazer
Como mudar as cores das letras ?

• Introdução :
Olá a todos , hoje irei ensinar a criar um comando básico de SendClientMessage , o comando quando o player usar o comando , automaticamente a mensagem que você definir irá mandar para ele a mensagem configurada por você dentro de seu GameMode , o comando é básico não é nada de difícil é super fácil , não se preocupe qual quer um irá dar conta de fazer caso seguir o tutorial certinho , sem problemas espero que gostem pois é meu primeiro tutorial !

• Como fazer ? :
Primeiro vá em seu GameMode Aperte : CTRL + F e bote isso : OnPlayerCommandText logo abaixo , você irá criar um comando e com assunto que preferir de exemplo irei criar um que simplesmente irá mostrar uma pequena saudação ao novato do servidor , de exemplo ...

• Como mudar a cor das letras ?
Entre no site http://www.colorpicker.com/ , escolhe sua cor copie o código que irá criar em cima , após isso vai em sua GameMode no topo adicione : #define COR_.... 0x(aqui a cor)FF , após isso só criar o comando como abaixo ^^

[size=11]Code:
#define COR_BLUE 0x0800FF // Bote isso no topo do GameMode , "0x0800FF" bote a cor que preferir !

// Primeiro , crie uma linha igual a minha :
if(strcmp(cmd, "/BemVindo", true) == 0)
{
// Linha criada nosso comando de exemplo será o "/BemVindo" , você poderá botar o que preferir !
if(IsPlayerConnected(playerid))
{
// Está linha irá permitir e verificar apenas o usuário para poder digitar online , para ele não poder digitar offline na tela de login por exemplo ^^
SendClientMessage(playerid,COR_BLUE, "Olá Bem Vindo ao servidor novato ! ");
SendClientMessage(playerid, COR_BLUE, "Novato caso tiver duvidas chame um administrador! ");
SendClientMessage(playerid, COR_BLUE, "Boa Sorte em sua nova jornada em nosso servidor!");
// SendClientMessage = Aqui irá definir para mandar para apenas o player que usar comando .
// playerid = Aqui será mandado a mensagem para o Player que usar o comando .
// COR_BLUE = Aqui é a cor que você definir em #define !
// Aspas = Dentro das " " você irá colocar sua mensagem que mandará para o player .!
// ); = Isso defini que ali termina o comando e irá pra próxima linha caso você por ...!
// Pronto , agora adicione isso no final :
return true;
}
}

// Pronto . Comando criado !

/*

É isso pessoal espero que quando fazerem que gostem do resultado final , façam bom aproveito , e esse é meu primeiro tutorial , digam no que eu posso melhorar ... óbvio você irá falar àh isso todo "mundo" sabe , mais as vezes um iniciante não sabe e pode precisar ^^ espero que gostem e ajudem bastante pessoas !

Acesse : www.brasilplayfaster.forumeiros.com

*/[/size]

Para pegar a cor : http://www.colorpicker.com/
Creditos: ScripterinicianteBR

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 define em SSGamers - 12 Anos online por você. 0dUjNDK
https://i.imgur.com/0dUjNDK.png


Radar criado
Tópicos com a tag define 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 define em SSGamers - 12 Anos online por você. Rexsk7o
https://i.imgur.com/rexsk7o.png


Deletando o radar
Tópicos com a tag define 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

Criando Gangs com mais armas no Spawn - Sex 17 Abr 2015 - 23:37

Galera vamu la hoje vo encinar a vocês como criar um gang e muito simple
intão vamos começar.
No inicio do seu game mode coloque isso

#define GangRangel 1
#define GangRangel2 2
new GangRangel[MAX_PLAYERS];
new Armas[MAX_PLAYERS];

depois vamus colocar as gangs

va em public OnGameModeInit()

e adicione isso

AddPlayerClass(ID-Da-Skin,Float:X,Float:Y,Float:Z,Float:Angulo ,0,0,0,0,0,0);//GangRangel1
AddPlayerClass(ID-Da-Skin,Float:X,Float:Y,Float:Z,Float:Angulo ,0,0,0,0,0,0);//GangRangel2

agora va em public OnPlayerRequestClass(playerid, classid)
e adicione isso

if(classid == 0)
{
GameTextForPlayer(playerid,"~n~~r~gang do Rangel1",2000,3);
SetPlayerColor(playerid, 0x0000BBAA);
SetPlayerTeam(playerid, GangRangel);
Armas[playerid] = 1;
GangRangel[playerid] = GangRangel;
}
else if(classid == 1)
{
GameTextForPlayer(playerid,"~n~~r~gang do rangel2",2000,3);
SetPlayerColor(playerid, 0xDC143CAA);
SetPlayerTeam(playerid, GangRangel2);
Armas[playerid] = 2;
GangRangel[playerid] = GangRangel2;
}
SetPlayerPos(playerid, Float:X,Float:Y,Float:Z );
SetPlayerCameraPos(playerid,Float:X,Float:Y,Float: Z);
SetPlayerCameraLookAt(playerid,Float:X,Float:Y,Flo at:Z);

depois va para public OnPlayerSpawn(playerid)
e adicione isso

if(Armas[playerid] == 1)
{
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
}
else if(Armas[playerid] == 2)
{
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
GivePlayerWeapon(playerid, IDArma, Balas);
}
Depois va para public OnPlayerDeath(playerid, killerid, reason)
e adicione isso

if(killerid == INVALID_PLAYER_ID)
{
SendDeathMessage(INVALID_PLAYER_ID,playerid,reason ); // aparece quem matou, com o que e quem morreu
}
else if(GangRangel[playerid] == GangRangel[playerid]) // verifica se quem morreu é da mesma gang, se for ele será Morto
{
new warning[256];
format(warning, sizeof(warning), "Mensagem que o player recebera quando fazer TK Team kill");
SendClientMessage(killerid, 0xFFFF00AA, warning);
SetPlayerHealth(killerid, 0);//muda a vida do player que fez tk para 0
SetPlayerScore(killerid,GetPlayerScore(playerid) -1);//tira 1 de score de quem fez o TK
}
else if(GangRangel[playerid] != GangRangel[playerid]) // caso o player tenha matado outro player que NÃO seja da mesma gang que ele, ele ganhará +1 de score e $500
{
SetPlayerScore(killerid,GetPlayerScore(killerid) +1); // aumenta o score do assassino em +1
GivePlayerCash(killerid,GetPlayerMoney(killerid) +1000);//aumenta o dinheiro para +1000
SetPlayerScore(killerid,GetPlayerScore(killerid) +1);//aumenta o score so player para +1
GivePlayerCash(playerid,GetPlayerMoney(playerid) -500);//diminue a grana do player que morreu -500
SetPlayerScore(playerid,GetPlayerScore(playerid) -1);//diminue o score do player que morreru -1
}
Tutorial By Rangel

LooP_Tutoriais

Filterscript Velocimetro - Sex 17 Abr 2015 - 17:38

lá estou trazendo a vocês uma (FS) de Velocimetro bem completa , Espero que você gostem e utilizem.

IMAGEM:
Tópicos com a tag define em SSGamers - 12 Anos online por você. Delet10

Como Configurar

#define POSICAO 1 // Escolhe a Melhor posicao para o velocimetro
/* #define POSIÇÃO 1 IMAGEM: https://2img.net/h/oi45.tinypic.com/2wroz6a.jpg
   #define POSICAO 2 IMAGEM: https://2img.net/h/oi48.tinypic.com/105v8ci.jpg */
#define MAXPLAYERSJFS 50 // Slots do seu Servidor
#define BlindagemTodosVeiculos 0 //  Bote 1 se quiser por blindagem em todos os veiculos logo no comeco e 0 para não !
#define DesgasteMAX 100 // Maximo de Desgaste do Pneu ( 100% )
#define BlindagemMAX 100 // Maximo de Blindagem ( 100% )
#define GasMAX 100 // Maximo de GAS ( 100% )
#define Tempo 15000 // Tempo para Diminuir o GAS
#define TempoDes 30000 // Tempo para Diminuir o Desgaste do Pneu


Como Adicionar o Velocimetro no seu servidor

Coloque o JFSVelocimetro1.amx na pasta do seu servidor em "FilterScripts" e em seguida no server.cfg coloque:
filterscripts JFSVelocimetro1



PASTERBIN  COM ZCMDhttp://pastebin.com/xUqQshdB 

PASTERBIN COM STRCMP(GF):
 http://pastebin.com/wmS8RgT8 


Créditos
Jonathan Feitosa:Por criar a (FS)
Loop_Tutoriais:Por postar e experimentar a (FS)

Day_

[Tutorial] Criar emprego - Qua 8 Abr 2015 - 12:06

ATEÇÃO: ESTE TUTORIAL É APENAS PARA OS QUE CONHECEM DE CONDICIONAL E VARIVELS

Primeiro você irá declarar uma variavel de emprego para cada player:


new Emprego[MAX_PLAYERS];


Logo você irá adicionar um valor ao emprego do player:

#define Advogado      (1)

Emprego[playerid] = Advogado;


Depois nos comandos do emprego você ira fazer a verificação com uma condicional:

if(Emprego[playerid] == Advogado)

Tae o tutorial, como eu disse você tem que conhecer de variaveis e condicionais, para poder criar seu emprego.

Day_

Enumerator com Multi Dimensional Array - Dom 5 Abr 2015 - 15:31

Recentemente tive um problema ao usar, uma Variavel Multi Dimensional Array, então pesquisei sobre o assunto e MadeMan encontrou uma solução, achei bem util então resolvi postar para vocês:

O erro acontece nestes casos:


#define MAX_SPAWNS (25)
#define MAX_RACES (10)

enum _RaceInfo
{
rName[30],
rInterior,
rVirtualWorld,
Float:rSpawn[MAX_SPAWNS][4]// Erro
}
new Race[MAX_RACES][_RaceInfo];

Vamos lá uma solução:

#define MAX_SPAWNS (25)
#define MAX_RACES (10)

const sizeof_rSpawn = MAX_SPAWNS * 4;
// Explicando 10 será o primeiro "parametro"
// Explicando 4 será o segundo "parametro"
// X, Y, Z, ANG
#define rSpawn][%1][%2] rSpawn][((%1) * 2)+(%2)]

enum _RaceInfo
{
rName[30],
rInterior,
rVirtualWorld,
Float:rSpawn[sizeof_rSpawn]// Erro
// Ficando assim:  Float:rSpawn[MAX_SPAWNS][4]
}
new Race[MAX_RACES][_RaceInfo];



Assim você poderá usar:


Race[ID][rSpawn][1][3] = 1111.0;

Day_

Include(Funcao) Processar Dialogs - Dom 5 Abr 2015 - 13:34

Lembrando que você tem que usar 


Dialog(Apenas O ID)


e não se pode usar:

#define IDDIALOG 01

Dialog(IDDIALOG)

O erro não é meu, apenas o processador pawn não suporta tal condição, existe um projeto de GamerZ que alterou o pawncc para ultilizar isto, porém não aconselho pois nunca saiu do Beta.

Caso isto for ajudar alguem eu posso pensar em fazer algo pelo Nome da Dialog

#define IDDIALOG 01

Dialog(IDDIALOG)

Mesmo assim lembrando que pode usar a define para enviar a dialog, e usar o ID na funcao dialog

jesus

[Codigo Útil] Criando uma stock - Sex 3 Abr 2015 - 17:41

Fala ae pessoa beleza? Bom, eu sou novo aqui na SSGamers e pretendo ficar aprendendo com vocês e ensinando a vocês.

Então vamos lá!

Como criar uma stock! Eu vou fazer uma stock de créditos!
Vou deixar algumas cores também!

Spoiler:


2° Passo! Você vai em " Public OnPlayerCommandText "

E crie um comando! Deixarei aqui.

Spoiler:


Cores Tutorial

#DEFINE COR 0x0CBCD0FF

[Tutorial/GameMode] Sistema de Gang e GangZone + GameMode - Qua 1 Abr 2015 - 12:34

]Tutorial/GameMode] Sistema de Gang e GangZone + GameMode

[size=18]1. Criando as Gangs:[/size]
Code:

Código:
new TeamGang[MAX_PLAYERS];//Esta será a definição da Gang do Jogador.



[size=18]1.1 Colocando as Skins:[/size]
Para ver as Skins vá a http://wiki.sa-mp.com/wiki/Skins.
Para pegar os ID's das Armas vá em http://wiki.sa-mp.com/wiki/Weapons.
Code:

Código:
public OnGameModeInit()
{
 //Skins dos Balas:
 AddPlayerClass(102, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(103, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(104, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 //Skins da Grove:
 AddPlayerClass(105, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(106, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(107, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 //Skins dos Los Aztecas:
 AddPlayerClass(114, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(115, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(116, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 //Skins dos Los Vagos:
 AddPlayerClass(108, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(109, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(110, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 //Skins da San Fierro Rifa:
 AddPlayerClass(173, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(174, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 AddPlayerClass(175, 0, 0, 5, 0, 24, 300, 29, 300, 4, 1);
 return 1;//Fim
}



Explicando o AddPlayerClass:
Code:

Código:
AddPlayerClass(Skin, Pos:X, Pos:Y, Pos:Z, Rot:Z, Arma1, Balas1, Arma2, Balas2, Arma3, Balas3);



[size=18]1.2 Colocando o jogador na Gang:[/size]
Code:

Código:
public OnPlayerRequestClass(playerid, classid)
{
 if(classid >= 0 && classid <= 2)//De 0 á 2 são so Numeros das Skins, ou seja, os três primeiros AddPlayerClass.
 {
 TeamGang[playerid] = 0;//Colocará o jogador na Gang 0, ou seja: Ballas.
 }//Fim das Funções das skins dos ballas.
 if(classid >= 3 && classid <= 5)//Grove
 {
 TeamGang[playerid] = 1;
 }
 if(classid >= 6 && classid <= 8)//Los Aztecas
 {
 TeamGang[playerid] = 2;
 }
 if(classid >= 9 && classid <= 12)//Los Vagos
 {
 TeamGang[playerid] = 3;
 }
 if(classid >= 13 && classid <= 15)//San Fierro Rifa
 {
 TeamGang[playerid] = 4;
 }
 SetPlayerTeam(playerid, TeamGang[playerid]+1);//Não permitirá que um parceiro mate o outro.
 return 1;//Fim
}



[size=18]1.3 Colocando o Spawn da Gang:[/size]
Code:

Código:
public OnPlayerSpawn(playerid)//Quando o Jogador Spawna...
{
 if(TeamGang[playerid] == 0)//Se: Gang do Jogador for 0(Ballas)
 {
 SetPlayerPos(playerid, 1939.1229, -1114.7427, 27.4522);//Colocará o jogador na posição.
 SetPlayerFacingAngle(playerid, 179.6596);//Colocará o jogador em uma rotação.
 }
 if(TeamGang[playerid] == 1)//Grove
 {
 SetPlayerPos(playerid, 2495.3671, -1688.4191, 13.7943);
 SetPlayerFacingAngle(playerid, 4.5339);
 }
 if(TeamGang[playerid] == 2)//Los Aztecas
 {
 SetPlayerPos(playerid, 2512.6210, -1027.8750, 70.0859);
 SetPlayerFacingAngle(playerid, 180.7592);
 }
 if(TeamGang[playerid] == 3)//Los Vagos
 {
 SetPlayerPos(playerid, 1832.0184, -1995.9156, 13.5468);
 SetPlayerFacingAngle(playerid, 82.2389);
 }
 if(TeamGang[playerid] == 4)//San Fierro Rifa
 {
 SetPlayerPos(playerid, -2624.3217, 1411.1578, 7.0937);
 SetPlayerFacingAngle(playerid, 194.6358);
 }
 return 1;//Fim
}



Dicas:
Você pode colocar para as Gangs spawnarem com mais armas usando:
[size=11]Code:
[/size]
Código:
[size=13]GivePlayerWeapon(playerid, ID, Balas);[/size]


[size=13]Coloque este comando em seu GameMode para pegar posições:[/size]


[size=13][size=11]Code:[/size]
if(strcmp(cmdtext, "/pos", true) == 0)
{
 new Float:POS[4], string[256];
 new vehicleid = GetPlayerVehicleID(playerid);
 if(!IsPlayerInAnyVehicle(playerid))
 {
 GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
 GetPlayerFacingAngle(playerid, POS[3]);
 }
 else
 {
 GetVehiclePos(vehicleid, POS[0], POS[1], POS[2]);
 GetVehicleZAngle(vehicleid, POS[3]);
 }
 format(string, sizeof(string), "X = %f, {FFFFFF}Y = %f, {FF0000}Z = %f, {0066FF}R = %f, {FFFF00}INT: %d", POS[0], POS[1], POS[2], POS[3], GetPlayerInterior(playerid));
 SendClientMessage(playerid, 0x00FF00AA, string);
 return 1;
}
[/size]



[size=18]2. Criando as GangZones:[/size]
GangZoneCreate(1876.7298, -1145.8150, 2056.8627, -1250.8861);//Parque Glen
E copie este codigo:
[size=11]Code:
#define BALLAS_COLOR 0xFF00FFAA
#define GROVE_COLOR 0x00FF00AA
#define AZTECAS_COLOR 0x00FFFFAA
#define VAGOS_COLOR 0xFFFF00AA
#define RIFA_COLOR 0x0000FFAA
new GangName[5][] = {//Aqui irei colocar os nomes de 5 Gangs:
{"Ballas"},//Nome da Gang 1
{"Grove Street"},//Nome da Gang 2
{"Varios Los Aztecas"},//Nome da Gang 3
{"Los Santos Vagos"},//Nome da Gang 4
{"San Fierro Rifa"}//Nome da Gang 5
};//Fim dos Nomes
new GZParque,//Para definir a GangZone.
GZPista;//Para definir a GangZone.
new Dominando[MAX_PLAYERS];//Para impedir o jogador de dominar 2 GangZones ao mesmo tempo.
new ParqueSendoDominado,//Para verificar se o parque glen já esta sendo dominado.
PistaSendoDominada;//Para verificar se a pista de skate já esta sendo dominada.
new DonoParque = 99,//Para colocar a cor no parque.
DonoPista = 99;//Para colocar a cor na pista.
forward DominarParque(playerid);
forward DominarPista(playerid);[/size]
[size=18]2.1 Como pegar:[/size]
Use o comando de pegar posições e pegue:
[size=16]1°:[/size] Baixo e do lado esquerdo.
[size=16]2°:[/size] Cima e do lado Direito.
[size=18]2.2 Colocando-a no GameMode:[/size]
Code:

Código:
public OnGameModeInit()
{
 GZParque = GangZoneCreate(1876.7298, -1145.8150, 2056.8627, -1250.8861);//Parque Glen
 GZPista = GangZoneCreate(1862.1929, -1351.2478, 1976.6811, -1450.5447);//Pista de Skate
 return 1;//Fim
}



Explicando o GangZoneCreate:
Code:

Código:
GangZoneCreate(MIN_Pos:X, MIN_Pos:Y, MAX_Pos:X, MAX_Pos:Y);



Ou seja: Não inclui uma Pos:Z.
[size=18]2.3 Criando um Verificador de Cor e de Posições:[/size]
Code:

Código:
stock GetGangColor(gang)
{
 if(gang == 0)
 {
 return BALLAS_COLOR;
 }
 if(gang == 1)
 {
 return GROVE_COLOR;
 }
 if(gang == 2)
 {
 return AZTECAS_COLOR;
 }
 if(gang == 3)
 {
 return VAGOS_COLOR;
 }
 if(gang == 4)
 {
 return RIFA_COLOR;
 }
 return 1;
}
stock IsPlayerInParqueGlen(playerid)
{
 new Float:X,
 Float:Y,
 Float:Z;
 GetPlayerPos(playerid, X, Y, Z);//Pega a Posição.
 if(X >= 1876.7298 && Y >= -1145.8150 && X <= 2056.8627 && Y <= -1250.8861)//Verifica se ele esta na GangZone.
 {
 return 1;//Isto significa que ele ESTA na GangZone.
 }
 return 0;//Isto significa que ele NÃO ESTA na GangZone.
}
stock IsPlayerInPistaDeSkate(playerid)
{
 new Float:X,
 Float:Y,
 Float:Z;
 GetPlayerPos(playerid, X, Y, Z);
 if(X >= 1862.1929 && Y >= -1351.2478 && X <= 1976.6811 && Y <= -1450.5447)
 {
 return 1;
 }
 return 0;
}


Como Fazer:
Pegue a Sua GangZone, Ex:

[size=11]Code:[/size]
Código:
stock IsPlayerInGangZone(playerid)
{
 new Float:X,
 Float:Y,
 Float:Z;
 GetPlayerPos(playerid, X, Y, Z);
 if(X >= 1 && Y >= 2 && X <= 3 && Y <= 4)
 {
 return 1;
 }
 return 0;
}[/size]

Onde esta o 1, você ira pegar a 1° parte do GangZoneCreate, no caso, 1876.7298, onde esta o 2, você ira pegar a 2° parte do GangZoneCreate, no caso, -1145.8150. E assim por diante.
[size=18]2.4 Mostrando a GangZone:[/size]
Code:

Código:
public OnPlayerSpawn(playerid)
{
 if(DonoParque == 99)
 {
 GangZoneShowForPlayer(playerid, GZParque, 0x666666AA);
 }
 if(DonoParque != 99)
 {
 GangZoneShowForPlayer(playerid, GZParque, GetGangColor(DonoParque));
 }
 if(DonoPista == 99)
 {
 GangZoneShowForPlayer(playerid, GZPista, 0x666666AA);
 }
 if(DonoPista != 99)
 {
 GangZoneShowForPlayer(playerid, GZPista, GetGangColor(DonoPista));
 }
 return 1;
}


[size=18]2.5 Criando o Comando:[/size]
Code:

Código:
public OnPlayerCommandText(playerid, cmdtext[])
{
 new string[256], sendername[MAX_PLAYERS];
 GetPlayerName(playerid, sendername, sizeof(sendername));
 if(!strcmp("/do", cmdtext, true) || !strcmp("/dominar", cmdtext, true))//Se: O comando digitado for /do ou /dominar...
 {
 if(IsPlayerInParqueGlen(playerid))//Se: Jogador no Parque Glen...
 {
 if(Dominando[playerid] != 0)//Se: Dominando não for igual a 0.
 {
 SendClientMessage(playerid, 0x666666FF, "Você já esta dominando uma GangZone.");//Mensagem de Erro.
 return 1;//Termina o Comando.
 }
 if(ParqueSendoDominado != 0)//Se: O parque esta sendo dominado...
 {
 SendClientMessage(playerid, 0x666666FF, "O Parque Glen já esta sendo dominado.");//Mensagem de Erro.
 return 1;//Termina o Comando.
 }
 if(DonoParque == TeamGang[playerid])//Se: O Parque for da Gang do Jogador...
 {
 SendClientMessage(playerid, 0x666666FF, "O Parque Glen já é da sua Gang.");//Mensagem de Erro.
 return 1;//Termina o Comando.
 }
 format(string, sizeof(string), "O Jogador %s da Gang %s esta dominando o Parque Glen.", sendername, GangName[TeamGang[playerid]]);//Cria um Texto com o Nome e Gang do jogador
 SendClientMessageToAll(0x007700FF, string);//Envia o Texto para todos
 GangZoneFlashForAll(GZParque, GetGangColor(TeamGang[playerid]);//Faz a GangZone ficar piscando com a cor da gang do jogador que irá dominar
 SetTimerEx("DominarParque", 30000, false, "i", playerid);//Executar uma função depois de 30 segundos
 ParqueSendoDominada = 1;//Não permite o parque ser dominado
 Dominando[playerid] = 1;//Não permite o jogador dorminar outra gang zone
 return 1;//Termina o Comando.
 }
 else if(IsPlayerInPistaDeSkate(playerid))
 {
 if(Dominando[playerid] != 0)
 {
 SendClientMessage(playerid, 0x666666FF, "Você já esta dominando uma GangZone.");
 return 1;
 }
 if(PistaSendoDominada != 0)
 {
 SendClientMessage(playerid, 0x666666FF, "A Pista de Skate já esta sendo dominado.");
 return 1;
 }
 if(DonopPista == TeamGang[playerid])
 {
 SendClientMessage(playerid, 0x666666FF, "A Pista de Skate já é da sua Gang.");
 return 1;
 }
 format(string, sizeof(string), "O Jogador %s da Gang %s esta dominando a Pista de Skate.", sendername, GangName[TeamGang[playerid]]);
 SendClientMessageToAll(0x007700FF, string);
 GangZoneFlashForAll(GZPista, GetGangColor(TeamGang[playerid]);
 SetTimerEx("DominarPista", 30000, false, "i", playerid);
 PistaSendoDominada = 1;
 Dominando[playerid] = 1;
 return 1;
 }
 else//Se o Jogador não estivem em nem uma gang zone...
 {
 SendClientMessage(playerid, 0x666666FF, "Você não esta em uma GangZone.");
 return 1;
 }
 }
 return SendClientMessage(playerid, 0xFFFFFFFF, "Comando Invalido.");//Fim.
}


[size=18]2.6 30 Segundos Depois do Comando:[/size]
Code:

Código:
public DominarParque(playerid)
{
 if(IsPlayerConnected(playerid))
 {
 new string[256], sendername[MAX_PLAYER_NAME];
 GetPlayerName(playerid, sendername, sizeof(sendername));
 if(IsPlayerInParqueGlen(playerid))
 {
 GangZoneShowForAll(GZParque, GetGangColor(TeamGang[playerid]));//Coloca a GangZona com a cor da Gang
 DonoParque = TeamGang[playerid];//Muda o Dono do Parque para a Gang do Jogador
 format(string, sizeof(string), "O Jogador %s da Gang %s dominou o Parque Glen.", sendername, GangName[TeamGang[playerid]]);//Cria um texto com o nome do jogador e a gang
 SendClientMessageToAll(0x007700FF, string);//Manda o texto para todos
 }
 else
 {
 format(string, sizeof(string), "O Jogador %s da Gang %s não dominou o Parque Glen.", sendername, GangName[TeamGang[playerid]]);
 SendClientMessageToAll(0x007700FF, string);
 }
 }
 ParqueSendoDominado = 0;//Permite o Parque ser dominado novamente
 Dominando[playerid] = 0;//Permite o Jogador dominar novamente
 GangZoneStopFlashForAll(GZParque);//Para de Piscar
 return 1;
}
public DominarPista(playerid)
{
 if(IsPlayerConnected(playerid))
 {
 new string[256], sendername[MAX_PLAYER_NAME];
 GetPlayerName(playerid, sendername, sizeof(sendername));
 if(IsPlayerInPistaDeSkate(playerid))
 {
 GangZoneShowForAll(GZPista, GetGangColor(TeamGang[playerid]));
 DonoPista = TeamGang[playerid];
 format(string, sizeof(string), "O Jogador %s da Gang %s dominou a Pista de Skate.", sendername, GangName[TeamGang[playerid]]);
 SendClientMessageToAll(0x007700FF, string);
 }
 else
 {
 format(string, sizeof(string), "O Jogador %s da Gang %s não dominou a Pista de Skate.", sendername, GangName[TeamGang[playerid]]);
 SendClientMessageToAll(0x007700FF, string);
 }
 }
 PistaSendoDominada = 0;
 Dominando[playerid] = 0;
 GangZoneStopFlashForAll(GZPista);
 return 1;
}


Caso esteja com preguiça de fazer todo esses sistema para testar baixe! (Link Abaixo)
https://rapidshare.com/files/3610642977/GangZone.RAR

Creditos: Dr_Pawno

[Tutorial] Como add carros sem bugar GM e add Objectos - Qui 19 Mar 2015 - 10:28

Como instalar?

Procure por public 
[size=11]Code:
public OnGameModeInit()[/size]

Pege isto

Code:

Código:
CreateObject(17692,835.60241699,-2016.02636719,12.19763374,0.00000000,0.00000000,90.00000000); //object(lae2_roads83) (1)
 CreateObject(17692,835.58422852,-1958.03125000,12.07263565,0.00000000,0.00000000,90.00000000); //object(lae2_roads83) (2)
 CreateObject(17692,835.60888672,-1899.72448730,12.12263489,0.00000000,359.75000000,90.00000000); //object(lae2_roads83) (3)
 CreateObject(17692,835.59069824,-1843.17675781,12.24763298,0.00000000,359.74731445,90.00000000); //object(lae2_roads83) (4)
 CreateObject(18284,824.09027100,-2053.64477539,14.81202698,0.00000000,0.00000000,0.00000000); //object(cw_tscanopy) (1)
 CreateObject(18284,848.95379639,-2053.76977539,14.63702965,0.00000000,0.00000000,0.00000000); //object(cw_tscanopy) (2)
 CreateObject(972,816.27258301,-2057.58105469,11.86718750,0.00000000,0.00000000,0.00000000); //object(tunnelentrance) (1)
 CreateObject(972,834.07592773,-2071.16967773,11.86718750,0.00000000,0.00000000,90.00000000); //object(tunnelentrance) (2)
 CreateObject(972,843.06555176,-2071.16918945,11.86718750,0.00000000,0.00000000,90.00000000); //object(tunnelentrance) (3)
 CreateObject(972,856.59887695,-2053.43408203,11.86718750,0.00000000,0.00000000,180.00000000); //object(tunnelentrance) (4)
 CreateObject(972,856.45410156,-2028.70495605,11.86718750,0.00000000,0.00000000,179.99450684); //object(tunnelentrance) (5)
 CreateObject(972,816.25958252,-2032.81420898,11.86718750,0.00000000,0.00000000,0.00000000); //object(tunnelentrance) (6)
 CreateObject(1655,840.36560059,-2048.64501953,11.04229355,346.00000000,0.00000000,0.00000000); //object(waterjumpx2) (1)
 CreateObject(1655,833.83062744,-1808.67016602,11.16730309,343.99719238,0.26007080,180.07159424); //object(waterjumpx2) (8)
 CreateObject(1655,842.67022705,-1808.60754395,11.16730309,343.99291992,0.25817871,180.07141113); //object(waterjumpx2) (9)
 CreateObject(3505,835.68035889,-2022.27246094,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (2)
 CreateObject(3505,835.12261963,-2000.30285645,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (3)
 CreateObject(3505,834.99005127,-1978.98156738,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (4)
 CreateObject(3505,835.41278076,-1956.45227051,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (6)
 CreateObject(3505,829.54296875,-1750.59606934,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (18)
 CreateObject(7952,835.91064453,-2001.28723145,12.87359905,0.00000000,0.00000000,0.00000000); //object(miragehedge09) (1)
 CreateObject(7952,835.77661133,-1912.33093262,12.89106655,0.00000000,0.00000000,0.00000000); //object(miragehedge09) (2)
 CreateObject(7952,835.80084229,-1867.83630371,12.86661053,0.00000000,0.00000000,0.00000000); //object(miragehedge09) (3)
 CreateObject(3505,835.59240723,-1933.03247070,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (20)
 CreateObject(3505,835.48718262,-1910.57104492,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (21)
 CreateObject(3505,835.40765381,-1888.89929199,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (22)
 CreateObject(3505,836.09271240,-1866.41149902,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (23)
 CreateObject(3505,836.03906250,-1845.53027344,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (24)
 CreateObject(3505,835.72076416,-1823.78796387,12.47804070,0.00000000,0.00000000,0.00000000); //object(vgsn_nitree_y01) (25)
 CreateObject(1655,824.96087646,-1808.84887695,11.16730309,343.99291992,0.25817871,180.07141113); //object(waterjumpx2) (10)
 CreateObject(3749,827.51074219,-1820.40979004,18.14950562,0.00000000,0.00000000,0.00000000); //object(clubgate01_lax) (1)
 CreateObject(3749,843.14782715,-1820.43395996,18.14950562,0.00000000,0.00000000,0.00000000); //object(clubgate01_lax) (2)
 CreateObject(3749,843.26177979,-2033.83422852,18.14950562,0.00000000,0.00000000,0.00000000); //object(clubgate01_lax) (3)
 CreateObject(3749,828.08111572,-2033.83068848,18.14950562,0.00000000,0.00000000,0.00000000); //object(clubgate01_lax) (4)
 CreateObject(1655,831.70800781,-2048.64501953,11.04229355,345.99792480,0.00000000,0.00000000); //object(waterjumpx2) (14)
 CreateObject(3502,827.53857422,-1986.57983398,10.62885857,0.00000000,0.00000000,269.50000000); //object(vgsn_con_tube) (1)
 CreateObject(3502,842.48474121,-1986.46374512,10.62885857,0.00000000,0.00000000,269.49462891); //object(vgsn_con_tube) (2)
 CreateObject(3502,843.68420410,-1986.52111816,10.62885857,0.00000000,0.00000000,89.74462891); //object(vgsn_con_tube) (3)
 CreateObject(3502,828.63757324,-1986.62780762,10.65385818,0.00000000,0.00000000,89.74182129); //object(vgsn_con_tube) (4)
 CreateObject(3502,842.65301514,-1928.40869141,10.50386047,0.00000000,0.00000000,269.49462891); //object(vgsn_con_tube) (7)
 CreateObject(3502,827.64941406,-1928.45092773,10.50386047,0.00000000,0.00000000,269.49462891); //object(vgsn_con_tube) (8)
 CreateObject(3502,828.57525635,-1928.51367188,10.50386047,0.00000000,0.00000000,89.49462891); //object(vgsn_con_tube) (9)
 CreateObject(3502,843.70220947,-1928.44555664,10.50386047,0.00000000,0.00000000,89.48913574); //object(vgsn_con_tube) (10)
 CreateObject(3502,843.55438232,-1871.88879395,10.60385895,0.00000000,0.00000000,89.48913574); //object(vgsn_con_tube) (11)
 CreateObject(3502,828.50280762,-1872.02856445,10.60385895,0.00000000,0.00000000,89.48913574); //object(vgsn_con_tube) (12)
 CreateObject(3502,827.38513184,-1872.01770020,10.60385895,0.00000000,0.00000000,269.48916626); //object(vgsn_con_tube) (13)
 CreateObject(3502,842.43737793,-1871.87976074,10.60385895,0.00000000,0.00000000,269.48913574); //object(vgsn_con_tube) (14)
 CreateObject(18284,836.59387207,-2065.30273438,14.66203308,0.00000000,0.00000000,90.00000000); //object(cw_tscanopy) (5)
 CreateObject(18284,824.06488037,-2048.15380859,14.78702736,0.00000000,0.00000000,0.00000000); //object(cw_tscanopy) (6)
 CreateObject(18284,848.92022705,-2048.26977539,14.71202850,0.00000000,0.00000000,0.00000000); //object(cw_tscanopy) (7)
 CreateObject(1425,835.30169678,-2040.51062012,13.86913586,0.00000000,0.00000000,0.00000000); //object(dyn_roadbarrier_3) (1)
 CreateObject(1425,837.14221191,-1815.52319336,12.71913052,357.00000000,0.00000000,176.00000000); //object(dyn_roadbarrier_3) (3)
 CreateObject(1425,835.80511475,-1815.36035156,12.71913052,356.99523926,0.00000000,175.99548340); //object(dyn_roadbarrier_3) (4)
 CreateObject(1425,834.59649658,-1815.68139648,12.71913052,356.99523926,0.00000000,175.99548340); //object(dyn_roadbarrier_3) (5)
 CreateObject(1425,836.32489014,-2040.46606445,13.86913586,0.00000000,0.00000000,0.00000000); //object(dyn_roadbarrier_3) (6)
 CreateObject(1425,835.41076660,-2039.23730469,13.86913586,0.00000000,0.00000000,274.00000000); //object(dyn_roadbarrier_3) (7)
 CreateObject(1425,836.36553955,-2039.17370605,13.86913586,0.00000000,0.00000000,91.99902344); //object(dyn_roadbarrier_3) (8)





Depois procure assim 
[size=11]Code:
AddStaticVehicleEx[/size]
Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin

Continue procurando , quando chegar no ultimo "AddStaticVehicleEx" ae você vai adcionar isto abaixo dele:
[size=11]Code:
[/size]
Código:
AddStaticVehicleEx(545,824.95086670,-2058.96948242,12.81718731,270.00000000,6,1,15); //Hustler
 AddStaticVehicleEx(545,826.04016113,-2043.48181152,13.11719418,269.50000000,86,1,15); //Hustler
 AddStaticVehicleEx(545,825.09698486,-2053.67895508,12.81718731,270.00000000,126,1,15); //Hustler
 AddStaticVehicleEx(545,825.29162598,-2047.99865723,12.81718731,270.00000000,3,1,15); //Hustler
 AddStaticVehicleEx(545,847.82550049,-2048.63427734,12.81718731,88.00000000,106,1,15); //Hustler
 AddStaticVehicleEx(545,848.35162354,-2053.69433594,12.81718731,87.99499512,-1,1,15); //Hustler
 AddStaticVehicleEx(545,848.25982666,-2059.15307617,12.81718731,87.99499512,1,1,15); //Hustler
 AddStaticVehicleEx(545,848.42352295,-2043.54772949,13.26718044,87.99499512,53,1,15); //Hustler
 AddStaticVehicleEx(462,841.02636719,-2064.16503906,12.46036720,1.99951172,1,1,15); //Faggio
 AddStaticVehicleEx(462,837.39971924,-2064.37231445,12.43536377,1.99951172,6,3,15); //Faggio
 AddStaticVehicleEx(462,843.15551758,-2064.21264648,12.43537140,1.99951172,85,3,15); //Faggio
 AddStaticVehicleEx(462,835.73101807,-2064.33666992,12.43537140,357.99951172,7,3,15); //Faggio
 AddStaticVehicleEx(462,831.86425781,-2064.36621094,12.48536682,1.99951172,16,3,15); //Faggio
 AddStaticVehicleEx(462,829.99768066,-2064.35229492,12.46037865,357.99951172,-1,3,15); //Faggio
 AddStaticVehicleEx(462,842.05236816,-2064.17504883,12.46036720,1.99951172,3,1,15); //Faggio
 AddStaticVehicleEx(462,836.65496826,-2064.30688477,12.46036720,1.99951172,34,1,15); //Faggio
 AddStaticVehicleEx(462,830.88256836,-2064.39526367,12.46036720,1.99951172,40,1,15); //Faggio



Depois de Adcionado os veiculo temos que conta-los quantos veiculos adcionamos e fazer um simples procedimento, porque se não ele pode dar um bug e todos os seus carros do GM ficaram bugado's =S

Bem, continuando , procure por : CAR_AMOUNT
Você encontrara algo parecido a isto:

[size=11]Code:
#define CAR_AMOUNT 801[/size]

Ok, 801 e o numero de carros do seu GM Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin então vamos adicionar o numero/montante de carros no nosso caso estamos adicionando 17+ carros agora e so fazer as contas Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin

No meu caso serão 801 + 17 = 818 "no seu carro será um numero diferente Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin"

Agora procure por totalveiculosc e add ou 17 carros nome meu caso são 17 no seu pode ate ser 1 só , procure tabem por totalveiculosh , totalveiculos e faça o mesmo procedimento!

no meu caso ficou assim Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin


Antes
Code:

Código:
#define totalveiculos 535 // Veículos Normais do Servidor
#define totalveiculosh 536 // Veículos do Servidor + 1.(508)
#define totalveiculosc 750 // Veículos do Servidor + Veículos das Casas
#define CAR_AMOUNT 801




Depois"depois que add os 17 veiculos"
Code:

Código:
#define totalveiculos 552 // Veículos Normais do Servidor
#define totalveiculosh 553 // Veículos do Servidor + 1
#define totalveiculosc 767// Veículos do Servidor + Veículos das Casas
#define CAR_AMOUNT 818//Todos os Carros




Bem Agora e So compilar!

Se no seu Gm não for estes:


Código:
-#define totalveiculos
-#define totalveiculosh
-#define totalveiculosc
-#define CAR_AMOUNT




E so ir no inicio e so procurar...
DICA: eles ficam geralmente logo no inicio do GM
Exemplo :

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

Custuma de estar nas primeiras linhas Tópicos com a tag define em SSGamers - 12 Anos online por você. Biggrin


Tutorial Feito por: Vinicius_Hardcore

David_Groove

Cores Para a GameMode - Qui 12 Fev 2015 - 16:18

Aqui vai algumas cores para você colocar no seu GM deixar os dialogs mais coloridos 
Basta colocar a linha embaixo das includes

Cores:

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 define 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



David_Groove

Sistema De Armas By David_Groove - Seg 2 Fev 2015 - 22:02

//Topo Do Gamemode
new ArmasObjetos[47][0] = {
       {0},// Emty // 0
       {331},// Brass Knuckles
       {333},// Golf Club
       {334},// Nitestick
       {335},// Knife
       {336},// Baseball Bat
       {337},// Showel
       {338},// Pool Cue
       {339},// Katana
       {341},// Chainsaw
       {321},// Purple Dildo
       {322},// Small White Dildo
       {323},// Long White Dildo
       {324},// Vibrator
       {325},// Flowers
       {326},// Cane
       {342},// Grenade
       {343},// Tear Gas
       {344},// Molotov
       {0},
       {0},
       {0},
       {346},// Glock
       {347},// Silenced Colt
       {348},// Desert Eagle
       {349},// Shotgun
       {350},// Sawn Off
       {351},// Combat Shotgun
       {352},// Micro UZI
       {353},// MP5
       {355},// AK47
       {356},// M4
       {372},// Tec9
       {357},// Rifle
       {358},// Sniper Rifle
       {359},// Rocket Launcher
       {360},// HS Rocket Launcher
       {361},// Flamethrower
       {362},// Minigun
       {363},// Detonator
       {364},// Detonator Button
       {365},// Spraycan
       {366},// Fire Extinguisher
       {367},// Camera
       {368},// Nightvision
       {368},// Infrared Vision
       {371}// Parachute
};

#define MaximoObjetos 50
new NomeDaArma[MaximoObjetos];
new Float:CordenadaObjeto[MaximoObjetos][3];
new ObjetoGuns[MaximoObjetos];
new Dropou[MaximoObjetos];
new IdObjeto[MaximoObjetos][3];
//FIM  NEWS E DEFINES DO TOPO DO GAMEMODE

Public OnPlayerCommandText

   if (strcmp(cmd, "/pegararma", true) == 0)
       {
               new f = MaximoObjetos+1;
               for(new a=0;a                {
                       if(IdObjeto[a][0] != 0)
                       {
                               if(IsPlayerInRangeOfPoint(playerid, 1, CordenadaObjeto[a][0], CordenadaObjeto[a][1], CordenadaObjeto[a][2]))
                               f = a;
                       }
               }
               if(f == MaximoObjetos+1 || Dropou[f] == 1) return SendClientMessage(playerid, 0x33AA3300, "{FFFFFF} [WARNING SSG] Você Não está Proximo de Uma Arma.");
               else
               {

                   new buffer[512];
          DestroyObject(ObjetoGuns[f]);
                       GivePlayerWeapon(playerid, IdObjeto[f][0], IdObjeto[f][1]);
                       GetWeaponName(IdObjeto[f][0], NomeDaArma, sizeof(NomeDaArma));
          ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,0,1,1,1,1,1);
                       format(buffer, sizeof(buffer), "{FFFFFF}[Informação BPF]  Você Recolheu Uma Arma %s do chao.", NomeDaArma);
                       SendClientMessage(playerid, COLOR_DBLUE, buffer);
                       IdObjeto[f][0] = 0;
          IdObjeto[f][1] = 0;
          IdObjeto[f][2] = 0;
                   CordenadaObjeto[f][0] = 0.0;
                       CordenadaObjeto[f][1] = 0.0;
                       CordenadaObjeto[f][2] = 0.0;
               }
               return 1;
       }
  if (strcmp(cmd, "/jogararma", true) == 0)
       {
               new gunID = GetPlayerWeapon(playerid);
               new gunAmmo = GetPlayerAmmo(playerid);
               if(gunID != 0 && gunAmmo != 0)
               {
                       new f = MaximoObjetos+1;
                       for(new a = 0; a < sizeof(CordenadaObjeto); a++)
                       {
                               if(CordenadaObjeto[a][0] == 0.0) f = a;
                       }

                       if(f == MaximoObjetos+1) return SendClientMessage(playerid, 0x33AA3300, "{FFFFFF} [WARNING SSGAMES] Você Não Pode recolher Armas No momento,Espere alguns minutos.");
                       else
                       {
                           new buffer[512];
                               GetWeaponName(gunID, NomeDaArma, sizeof(NomeDaArma));
                               format(buffer, sizeof(buffer), "{FFFFFF} [INFO BPF] Você Largou uma %s no Chão", NomeDaArma);
              ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,0,1,1,1,1,1);
              SendClientMessage(playerid, COLOR_DBLUE, buffer);
                               RemovePlayerWeapon(playerid, gunID);
                               IdObjeto[f][0] = gunID;
                               IdObjeto[f][1] = gunAmmo;
                               IdObjeto[f][2] = GetPlayerVirtualWorld(playerid);
                       GetPlayerPos(playerid, CordenadaObjeto[f][0], CordenadaObjeto[f][1], CordenadaObjeto[f][2]);
              ObjetoGuns[f] = CreateObject(ArmasObjetos[gunID][0], CordenadaObjeto[f][0], CordenadaObjeto[f][1], CordenadaObjeto[f][2]-1, 93.7, 120.0, 120.0, 200.0);
                       }
                       return 1;
               }
       }

Walison_Gomes

[FS] Sistema de Balões - Sáb 31 Jan 2015 - 9:27

|AStyle| Baloeiro |AStyle|

esse FilterScript, Eu desenvolvi Quando Vi Baloes No Editor Aqui.
dai eu Pensei... Vou Criar um Sistema de Balão .
Dai saiu esse FS
Bom Vamos Ao que interessa.
Bom Os SetTimer No CODE, Não Tem A Precisão Correta.
Pois Você Pode Criar um Balão de Qualquer Local, Ou seja
Você pode criar um Balao Em LS e parar em LV.
Por isso eu Coloquei apenas 3 Minutos tem cada Timer.
Você Pode ajustar
Para Evitar Bugs, Nunca Faça um Balão de baixo de Algum Objeto (TETOS, ARVORES),
Pois isso irar Bugar, Não faça Dentro de Interiores ou Algo Com espaço pequeno.


Editaveis:
No Code Tera 2 #define
Uma Chamada Velocidade e a outra Chamada Altura.
Você Pode Alterar Para o valor que você quiser.

Na #define Altura "Valor da altura Maxima Aqui". (Coloque a altura que o balao vai subir).
Na #define Velocidade"Velocidade Do Balão" (Coloque a velocidade do balão aqui).

BUGS:
Não foram encontrado
Encontrado 2 Mas Ja foi arrumado

Comandos:
/Criarbalao
/Destruirbalao

Prints:
Tópicos com a tag define em SSGamers - 12 Anos online por você. Samp002lm

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


Download >> http://pastebin.com/iK6xePYk


CREDITOS

AmericanStyle
Walison_Gomes - Pela postagem


Ir para o topo

Data/hora atual: Sex 19 Abr 2024 - 5:41