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!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
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.

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

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11377
    Moedas : 1031957
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

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

    Mensagem por Weslley_Script Qua 1 Abr 2015 - 12:34

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

    1. Criando as Gangs:
    Code:

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


    1.1 Colocando as Skins:
    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);


    1.2 Colocando o jogador na Gang:
    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
    }


    1.3 Colocando o Spawn da Gang:
    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:
    Code:

    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]


    2. Criando as GangZones:
    GangZoneCreate(1876.7298, -1145.8150, 2056.8627, -1250.8861);//Parque Glen
    E copie este codigo:
    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);

    2.1 Como pegar:
    Use o comando de pegar posições e pegue:
    1°: Baixo e do lado esquerdo.
    2°: Cima e do lado Direito.
    2.2 Colocando-a no GameMode:
    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.
    2.3 Criando um Verificador de Cor e de Posições:
    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:

    Code:
    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.
    2.4 Mostrando a GangZone:
    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;
    }

    2.5 Criando o Comando:
    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.
    }

    2.6 30 Segundos Depois do Comando:
    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/GameMode] Sistema de Gang e GangZone + GameMode D07Xwqb
    [Tutorial/GameMode] Sistema de Gang e GangZone + GameMode Yjab9HN
    Anonymous
    Convidado
    Convidado


    [Tutorial/GameMode] Sistema de Gang e GangZone + GameMode Empty Re: [Tutorial/GameMode] Sistema de Gang e GangZone + GameMode

    Mensagem por Convidado Dom 23 Dez 2018 - 0:18

    ôtimo, to estudando pra fazer ums cmds basicos... Criargz e deletargz ashduhausdha

      Data/hora atual: Sex 19 Abr 2024 - 4:19