25.08.2012, 16:50
(
Последний раз редактировалось Math3us; 25.08.2012 в 17:22.
)
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:
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 :
Explicado a Funзгo a cima Vamos Comeзar. Fazer Uma Explicaзгo abaixo :
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.
parte 4Colocando o Local Para a Gang
Na Callback OnPlayerSpawn, Colocamos a Onde Ele Vai Nascer Ao Escolher a Skin de Sua Tal Gang.
Parte 5 criando comandos
aqui entra o bCMD que vode pode baixar https://sampforum.blast.hk/showthread.php?tid=360748
na callback OnPlayerCallCommand
Parte 6Criando carros para as gangs
Novamente no topo do game mode:
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
Agora vamos na callback OnPlayerStateChange
e colocamos:
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
bom deixarei essas 2 hqs super simples de exemplo:
na callback OnGameModeInt
colocamos
e agora a dos aztecas
agora vamos na callback OnPlayerCallCommand
vamos fazer o codigo para abrir os portoes
agora vamos no final do game mode e criamos a seguinte callback public fportao(playerid)
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
Parte FinalVamos criar o equipar das gangs
vamos novamente ao GameModeInt
fazemos o seguinte
vamos na seguinte callback OnPlayerKeyStateChange
e fazemos a entrada saida de dentro da hq com o equipar
este й um tutorial caso voce apenas de ctrl+c e ctrl+v pode aver alguns erros
Dъvidas ? criticas bugs reporte nos comentarios estarei arrumando o mais rapido o possivel
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.
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. )
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
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);
}
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.
}
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
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
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;
}
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)
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)
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)
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;
}
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;
}
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;
}
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
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;
}
Код:
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