[Tutorial] Criando Gangs para tdm completo modo fбcil
#1

Introduзгo:
Neste tutorial serб explicado sobre como criar gangs, armas especificias, carros especifнcos portгo das hq's comandos somente para membros e mais um pouquinho.
usaremos:
bCMD e SLOTS resto funзгo nativa do a_samp

Planejando sua Gang
Bom, toda gang tem cor, nome, e skins, certo ?Para este tutorial vou escolher verde para Grove e azul para os aztecas.


Parte 1- primeiramente no topo do seu game mode definimos:
pawn Код:
#define SLOTS   100
#include <a_samp>
#include <bcmd>  //https://sampforum.blast.hk/showthread.php?tid=360748
new gTeam[SLOTS];
// Poderб Ser Usado "  Aztecas  " Ou Poderб Ser Usado "  1  "
#define Aztecas 1
// Poderб Ser Usado "  Grove  " Ou Poderб Ser Usado "  1  "
#define Grove 2

// Poderб Ser Usado "  CorGrove " Ou Poderб Ser Usado "  0x00D900C8"
#define CorGrove   0x00D900C8 // Aqui vamos definir a cor da grove.

// Poderб Ser Usado "  CorAztecas " Ou Poderб Ser Usado "  0x2641FEC8 "
#define CorAztecas 0x2641FEC8// Aqui vamos definir a cor dos aztecas.
Parte 2 -Criando Skins Para Nossa Gang
Como й Mais Complicado Fazer isso, Nгo vou Falar Muito. Vamos Comeзar.

Na Callback OnGameModeInit, Coloque Nossas Skins. Usando a Funзгo AddPlayerClass.

Explicando :
Код:
AddPlayerClass(1,2752.3999,-1970.7333,17.3203,178.5558,0,0,0,0,0,0);
// 110 ( ID DA SKIN )
// 2752.3999 ( CorX Da onde Vai da Spawn Ao Escolher esse Skin = X )
// -1970.7333 ( CorY Da onde Vai da Spawn Ao Escolher esse Skin = Y )
// 17.3203 ( CorZ Da onde Vai da Spawn Ao Escolher esse Skin = Z )
// 0,0,0,0,0,0 = ( Armas,Balas,Armas,Balas,Armas,Balas, = Armas, sй Quiser que ele Nasзa com Algumam Coloque o ID й a bala. )
Explicado a Funзгo a cima Vamos Comeзar. Fazer Uma Explicaзгo abaixo :
pawn Код:
// =========================== GOVRE STREET =====================================================================================
    AddPlayerClass(86,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);//[ID 0]
    AddPlayerClass(105,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);//[ID 1]
    AddPlayerClass(106,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);//[ID 2]
    AddPlayerClass(107,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);//[ID 3]
    AddPlayerClass(149,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);//[ID 4]
    AddPlayerClass(270,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);//[ID 5]
//========================== AZTECAS =============================================================================================
    AddPlayerClass(114,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);// ID 6
    AddPlayerClass(115,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);// ID 7
    AddPlayerClass(116,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);// ID 8
    AddPlayerClass(173,2615.7163,-962.7603,80.3227,183.9649,24,500,0,0,0,0);// ID 9
Lembrando que a Contagem Comeзa do 0

Parte 3Criando Uma GameTextForPlayer Quando For Escolher Uma Skin.
Na Callback OnPlayerRequestClass, Iremos Colocar a GameTextForPlayer , Para Quando Aparecer a Skin Aztecas ou Grove, Irб Aparecer Ela.
pawn Код:
if((classid >= 0) && (classid <= 5))  // Ou Seja Igual й Maior que 0. й Menor й Igual a 5. Ou Seja, 0,1,2,3,4,5.
    {
    gTeam[playerid] = Grove;// seta a gang GROVE
    GameTextForPlayer(playerid,"~n~~n~~n~~g~Grove",7000,5);
    }
    if((classid >= 6) && (classid <= 9))  
    {
    gTeam[playerid] = Aztecas; // Setarб ele Para GANG Aztecas.
    GameTextForPlayer(playerid,"~n~~n~~n~~b~Aztecas",7000,5);
    }
parte 4Colocando o Local Para a Gang
Na Callback OnPlayerSpawn, Colocamos a Onde Ele Vai Nascer Ao Escolher a Skin de Sua Tal Gang.
pawn Код:
// Se Ele Escolher o Skin  dos Aztecas. Ele Darб Spawn No Local Abaixo :

if(gTeam[playerid] == Aztecas) // Se Ele For Aztecas Ele Setarб Pro Local Abaixo :
{
   SetPlayerColor(playerid, CorAztecas); // Setarб a Cor Dele Para AZUL Que й a Cor definida no Topo !
   SetPlayerPos(playerid, 2232.2813,-1158.4985,29.7969); // Setarб Ele Para Estб Posiзгo
   SetPlayerInterior(playerid, 0); // Setarб o Interior Dele.
}
// Se Ele Escolher o Skin  dos Grove. Ele Darб Spawn No Local Abaixo :

if(gTeam[playerid] == Grove) // Se Ele For Grove Ele Setarб Pro Local Abaixo :
{
   SetPlayerColor(playerid, CorGrove); // Setarб a Cor dele Para VERDE Que й a Cor definida no Topo.
   SetPlayerPos(playerid, 2531.0586,-1666.2322,15.1678);// Setarб Ele Para Estб Posiзгo
   SetPlayerInterior(playerid, 0);// Setarб o Interior Dele.
}
Parte 5 criando comandos
aqui entra o bCMD que vode pode baixar https://sampforum.blast.hk/showthread.php?tid=360748
na callback OnPlayerCallCommand
pawn Код:
bCMD[oqueeusou]-(playerid)
{
    if(gTeam[playerid] == Aztecas)  // Ou Seja, Essa Mensagem Sу Aparecerб Pros Astecas.
    {
       SendClientMessage(playerid, CorAztecas, "Vocк й Aztecas.");
       // Mensagem Que Irб Aparecer se For Aztecas.
       return true;
    }
    if(gTeam[playerid] == Grove)  // Ou Seja, Essa Mensagem Sу Aparecerб Pros Grove.
    {
       SendClientMessage(playerid, CorGrove, "Vocк й Grove.");
       // Mensagem Que Irб Aparecer se For Grove.
       return true;
    }
    return true;
}

Parte 6Criando carros para as gangs
Novamente no topo do game mode:
pawn Код:
new GroveCars[6];//os carros dos groves lembre sempre de colocar um numero a mais do que a org tem de carros
new AztecasCars[6]; //carros dos aztecas lembre sempre de colocar um numero a mais do que a org tem de carros
Novamente na callback OnGameModeInit
colocamos assim tbm sempre comeзando a contar do zero acho que nao preciso explicar certo todo mundo sabe colocar carro
pawn Код:
GroveCars[0] = AddStaticVehicleEx(412,2510.19995117,-1687.40002441,13.50000000,40.50000000,86,1,999999999); //Voodoo
    GroveCars[1] = AddStaticVehicleEx(600,2473.80004883,-1690.19995117,13.39999962,0.00000000,86,1,999999999); //Picador
    GroveCars[2] = AddStaticVehicleEx(567,2508.60009766,-1671.19995117,13.39999962,352.00000000,86,1,999999999); //Savanna
    GroveCars[3] = AddStaticVehicleEx(492,2499.39990234,-1683.00000000,13.30000019,108.00000000,86,1,999999999); //Greenwood
    GroveCars[4] = AddStaticVehicleEx(468,2510.00000000,-1659.30004883,13.39999962,100.00000000,86,1,999999999); //Sanchez
    GroveCars[5] = AddStaticVehicleEx(468,2511.00000000,-1661.09997559,13.39999962,96.00000000,86,1,999999999); //Sanchez
//==================================================================================
AztecasCars[0] = AddStaticVehicleEx(575,2205.60009766,-1154.09997559,25.50000000,270.00000000,2,1,999999999); //Broadway
    AztecasCars[1] = AddStaticVehicleEx(576,2205.50000000,-1157.80004883,25.50000000,270.00000000,2,1,999999999); //Tornado
    AztecasCars[2] = AddStaticVehicleEx(474,2228.10009766,-1156.19995117,25.70000076,92.00000000,2,1,999999999); //Hermes
    AztecasCars[3] = AddStaticVehicleEx(468,2227.39990234,-1159.90002441,25.50000000,90.00000000,2,1,999999999); //Sanchez
    AztecasCars[4] = AddStaticVehicleEx(468,2227.39990234,-1162.40002441,25.50000000,90.00000000,2,1,999999999); //Sanchez
    AztecasCars[5] = AddStaticVehicleEx(466,2205.69995117,-1161.59997559,25.70000076,270.00000000,2,1,999999999); //Glendale
Agora vamos na callback OnPlayerStateChange
e colocamos:
pawn Код:
{
    new VehID = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER)// assim ve se o cara esta no banco do piloto caso esteja e nao for da org executa as funзхes abaixo se estiver no banco do carona tudo bem ele fica no carro
{
        if(gTeam[playerid] != Grove) for(new Pt = 5; Pt > -1; --Pt) if(VehID == GroveCars[Pt]) return SendClientMessage(playerid, -1, "Vocк nгo tem as chaves deste veнculo e foi expulso."), RemovePlayerFromVehicle(playerid);
        if(gTeam[playerid] != Aztecas) for(new Pt = 5; Pt > -1; --Pt) if(VehID == AztecasCars[Pt]) return SendClientMessage(playerid, -1, "Vocк nгo tem as chaves deste veнculo e foi expulso."), RemovePlayerFromVehicle(playerid);
}
return 1;
}
Parte 7: criando portгo para as gangs
Vamos novamente ao topo do game mode // eu estarei deixando duas hq's simples de exemplo agora para voces
agora no topo do gm colocamos
Код:
new portaogrove; //um iremos usar essa new no portao
new portaoaztecas;//"   "        "     "       "     "    "

forward fportao(playerid); // sera usado no comando forward serve para criar uma public(callback)
bom deixarei essas 2 hqs super simples de exemplo:
na callback OnGameModeInt
colocamos
pawn Код:
CreateObject(985,2446.30004883,-1698.00000000,12.60000038,0.00000000,0.00000000,186.00000000); //object(gate_autor) (1)
    CreateObject(985,2480.10009766,-1722.00000000,12.50000000,0.00000000,0.00000000,0.00000000); //object(gate_autor) (2)
    CreateObject(985,2449.69995117,-1688.09997559,12.50000000,0.00000000,0.00000000,270.00000000); //object(gate_autor) (5)
    CreateObject(985,2449.69995117,-1680.30004883,12.50000000,0.00000000,0.00000000,270.00000000); //object(gate_autor) (6)
    CreateObject(985,2449.80004883,-1672.50000000,12.50000000,0.00000000,0.00000000,270.00000000); //object(gate_autor) (7)
    CreateObject(985,2449.80004883,-1667.09997559,12.30000019,0.00000000,0.00000000,270.00000000); //object(gate_autor) (8)
    portaogrove = CreateObject(976,2449.80004883,-1663.09997559,12.30000019,0.00000000,0.00000000,92.00000000); //object(phils_compnd_gate) (1)
    CreateObject(986,2449.60009766,-1650.50000000,12.39999962,0.00000000,0.00000000,270.00000000); //objectt(gate_autol) (1)
    CreateObject(986,2449.60009766,-1643.50000000,12.80000019,0.00000000,0.00000000,272.00000000); //object(gate_autol) (2)
e agora a dos aztecas

pawn Код:
CreateObject(987,2217.60009766,-1142.69995117,24.79999924,0.00000000,0.00000000,168.00000000); //object(elecfence_bar) (1)
    portaoaztecas = CreateObject(975,2222.00000000,-1143.80004883,26.50000000,0.00000000,0.00000000,344.00000000); //object(columbiangate) (1)
    CreateObject(987,2237.10009766,-1149.00000000,24.79999924,0.00000000,0.00000000,161.99743652); //object(elecfence_bar) (2)
    CreateObject(986,2240.60009766,-1150.80004883,25.39999962,0.00000000,0.00000000,152.00000000); //object(gate_autol) (1)
agora vamos na callback OnPlayerCallCommand
vamos fazer o codigo para abrir os portoes
pawn Код:
bCMD[abrirpt]-(playerid)
{
if(gTeam[playerid] == Aztecas)  
{
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 2222.00000000,-1143.80004883,26.50000000))// vemos se ele esta perto do portao
    {
    MoveObject(portaoaztecas,2213.60009766,-1141.30004883,26.50000000, 5.0);//cordenadas do portao aberto 5.0 velocidade que abrira
    SendClientMessage(playerid, CorAztecas, "Abrindo o Portao !");
    SetTimer("fportao", 4500, false);// um timer que chamara a public que vamos fazer para fechar o portao
    }
       return true;
    }
    if(gTeam[playerid] == Grove)  //  Pros Grove.
    {
        if(IsPlayerInRangeOfPoint(playerid, 10.0, 2449.69995117,-1654.50000000,12.60000038))// vemos se ele esta perto do portao
        {
        MoveObject(portaogrove, 2449.69995117,-1654.50000000,12.60000038, 5.0);
        SendClientMessage(playerid, CorGrove, "Abrindo O Portao !");
        SetTimer("fportao", 4500, false);
        }
}
          return true;
        }
agora vamos no final do game mode e criamos a seguinte callback public fportao(playerid)
pawn Код:
public fportao(playerid)
{
    if(gTeam[playerid] == Grove)
    {
    MoveObject(portaogrove,2449.80004883,-1663.09997559,12.30000019,5.0);//Cordenadas do Portгo Fechado
    SendClientMessage(playerid, CorGrove, "Fechando O Portao !");//Manda A Mensagen ao Player
    }
    else if(gTeam[playerid] == Aztecas)
{
    MoveObject(portaoaztecas,2222.00000000,-1143.80004883,26.50000000, 5.0);
    SendClientMessage(playerid, CorAztecas, "Fechando O Portao !");
    }
return 1;
}
ok terminamos mais se voces quiserem fazer com que o portao abra se o player buzinar


vamos na seguinte callback OnPlayerKeyStateChange
e colamos esse codigo
pawn Код:
if(newkeys==KEY_CROUCH)// id da tecla H
    {
        if(IsPlayerInRangeOfPoint(playerid, 10.0, 2449.80004883,-1663.09997559,12.30000019))//E Estiver Nas Possicoes proximas ao Portao:
        {
            if (IsPlayerInAnyVehicle(playerid))//E Estiver dentro de um veiculo:
            {
            bcmd_abrirpt(playerid);// executa o comando
        }
    }
}
if(newkeys==KEY_CROUCH)
{
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 2222.00000000,-1143.80004883,26.50000000))
    {
        if (IsPlayerInAnyVehicle(playerid))//E Estiver dentro de um veiculo:
        {
        bcmd_abrirpt(playerid);
      }
   }
}
return 1;
}
Parte FinalVamos criar o equipar das gangs
vamos novamente ao GameModeInt
fazemos o seguinte
pawn Код:
AddStaticPickup(1242,1,2497.6074,-1694.5923,1014.7422);// cria um pickup no formato de um colete dentro da casa do cj  para o player saber que ele equipa ali
    AddStaticPickup(1318,1,2495.5425,-1690.3789,14.7656);// cria uma seta pro player saber que ali й a entrada      
    AddStaticPickup(1318,1,2232.8452,-1159.7899,25.8906);// cria uma seta pro player saber que ali й a entrada  
    AddStaticPickup(1242,1,503.3769,-75.2882,998.7651);// cria uma pickup dentro do interior dos aztecas
    Create3DTextLabel("Para Pegar seus\n equipamentos aperte F",0x2641FEC8,503.3769,-75.2882,998.7651,9.0,0);
    Create3DTextLabel("Para Pegar seus\n equipamentos aperte F",0x00D900C8,2497.6074,-1694.5923,1014.7422,9.0,0); //criamos uma textdraw escrito como equipar com a cor da gang dele
vamos na seguinte callback OnPlayerKeyStateChange
e fazemos a entrada saida de dentro da hq com o equipar
pawn Код:
if(newkeys== 16)
{
    if(IsPlayerInRangeOfPoint(playerid, 1.0,2232.8452,-1159.7899,25.8906))// ve se ele ta onde й a entrada
    {
    SetPlayerInterior(playerid, 11);// seta o interior dele
    SetPlayerPos(playerid,502.0789,-68.1854,998.7578);// seta as cordenadas dele
    }
}
if(newkeys== 16)
{
   if(IsPlayerInRangeOfPoint(playerid, 2.0,502.0789,-68.1854,998.7578))// ve se ele ta no lugar de sair
   {
   SetPlayerInterior(playerid, 0);// seta intereior dele
   SetPlayerPos(playerid,2232.8452,-1159.7899,25.8906);// seta as cordenadas dele
   }
}
if(newkeys== 16)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0,503.3769,-75.2882,998.7651))// ve se ele ta no lugar de equipar
{
    if(gTeam[playerid] == Aztecas)// ve se ele й aztecas
    {
    ResetPlayerWeapons(playerid);// tira as armas dele
    GivePlayerWeapon(playerid, 24, 500);// da a arma pra ele
    GivePlayerWeapon(playerid, 0, 500);
    GivePlayerWeapon(playerid, 29, 500);
    GivePlayerWeapon(playerid, 30, 500);
    GivePlayerWeapon(playerid, 1, 500);
    SetPlayerHealth(playerid, 100);// da vida 100%
    SetPlayerArmour(playerid, 50);// da colete 50%
        }
    }
}

if(newkeys== 16)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0,2497.6074,-1694.5923,1014.7422))
{
    if(gTeam[playerid] == Grove)
    {
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid, 24, 500);
    GivePlayerWeapon(playerid, 0, 500);
    GivePlayerWeapon(playerid, 29, 500);
    GivePlayerWeapon(playerid, 30, 500);
    GivePlayerWeapon(playerid, 1, 500);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 50);
        }
    }
}
if(newkeys== 16)
{
   if(IsPlayerInRangeOfPoint(playerid, 3.0,2495.5425,-1690.3789,14.7656))
   {
   SetPlayerInterior(playerid, 3);
   SetPlayerPos(playerid,2496.0520,-1692.9275,1014.7422);
   }
}
if(newkeys== 16)
{
  if(IsPlayerInRangeOfPoint(playerid, 1.0,2496.0520,-1692.9275,1014.7422))
  {
  SetPlayerInterior(playerid, 0);
   SetPlayerPos(playerid,2495.5425,-1690.3789,14.7656);
   }
}
return 1;
}
este й um tutorial caso voce apenas de ctrl+c e ctrl+v pode aver alguns erros


Код:
questionario
pergunta: porque voce usou bcmd ?
responda: й mais rapido que zcmd e seguro tbm

pergunta: ja existe tutoriais assim no forum
responda: eu sei mais fiz esse atualizado e completo com carros e tudo para quem procurar achar tudo em um lugar sу

pergunta: por que voce usou SLOTS ?
responda: eu sу uso SLOTS acho que o desempenho й melhor que MAX_PLAYERS
Dъvidas ? criticas bugs reporte nos comentarios estarei arrumando o mais rapido o possivel
Reply
#2

Bem Bacana to vendo que vocк evoluiu bastante , Parabйns.

pawn Код:
// ======= GOVRE STREET ========
kkkkkkkkkkkkkkkkkkkkkkkkkkkkk Rachei
Reply
#3

Estava mesmo precisando de um tutorial desse aqui na area PT/BR, parabйns pelo tutorial. +Rep.
Reply
#4

Quote:
Originally Posted by AmericanStyle'™
Посмотреть сообщение
Bem Bacana to vendo que vocк evoluiu bastante , Parabйns.

pawn Код:
// ======= GOVRE STREET ========
kkkkkkkkkkkkkkkkkkkkkkkkkkkkk Rachei
kkk ^^ eu to me esforзando pra aprender ^^
Quote:
Originally Posted by Luciano*
Посмотреть сообщение
Estava mesmo precisando de um tutorial desse aqui na area PT/BR, parabйns pelo tutorial. +Rep.
obrigado
Reply
#5

DICA: Poste os cуdigo de pawn, entre [pawn], em PHP, fica ridнculo.
Fora isso, estб bom. Parabйns!!
Reply
#6

Atй que ficou bom, parabйns.
Reply
#7

Quote:
Originally Posted by @Riichard
Посмотреть сообщение
DICA: Poste os cуdigo de pawn, entre [pawn], em PHP, fica ridнculo.
Fora isso, estб bom. Parabйns!!
irei trocar valew ^^
Quote:
Originally Posted by Pedro_Miranda
Посмотреть сообщение
Atй que ficou bom, parabйns.
valew =)
Reply
#8

Muito bom cara, 10/10
Reply
#9

BOM, mas pode ficar melhor!
Reply
#10

Quote:
Originally Posted by AmericanStyle'™
Посмотреть сообщение
Bem Bacana to vendo que vocк evoluiu bastante , Parabйns.

pawn Код:
// ======= GOVRE STREET ========
kkkkkkkkkkkkkkkkkkkkkkkkkkkkk Rachei
kkkkkkkkkk Racheeei tbm Mas fora isso ficou Bacana pra que ta comeзando agora
Reply
#11

Porque deu erro aqui ?

C:\Documents and Settings\Administrador\Desktop\Server\gamemodes\lv dm.pwn(4) : fatal error 100: cannot read from file: "bcmd"

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.
Reply
#12

falta de include
https://sampforum.blast.hk/showthread.php?tid=360748
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)