Criando GangZones dominaveis em Checkpoints

23 de dez. de 2012.
Coloque em OnGameModeInit

pawn Code:
SetTimer("ZoneCheckpointCheckerbyRangel", 1000, true);

Coloque isso tambem no começo do game mode
pawn Code:
new Gang[MAX_PLAYERS];


Vo mostrar aki pra vocês hoje como criar GZs dominaveis em Checkpoints 
As includes necessarias são as
pawn Code:
#include <a_samp> #include <cpstream>
Aconselho bota isso tambem no começo do seu GM
pawn Code:
#pragma tabsize 0
depois crie defines para definir as gangs
pawn Code:
#define SOLDADO 1 #define CHINES 2

depois cria a forward para riar a public com as funçoes para dominar o territorio na check
pawn Code:
forward ZoneCheckpointCheckerbyRangel();
depois crie uma new com as cores das gzs
pawn Code:
new gzcolor[3] = //2+1 = (3) pois tem 2 GZs... {     0x33AA33AA, 0xFF9900AA };
Crie uma variavel para definir as gzs
pawn Code:
new cpzone[MAX_PLAYERS][3]; //2+1 (3) pois tem 2 GZs...
Depois crie novamente outra variavel
pawn Code:
new lastcp[MAX_PLAYERS];

Agora criando as GZs
pawn Code:
new Soldado; new Chines;
Defininado as ckecks para dominar nelas
pawn Code:
new cpsoldado; new cpchines;

Agora em OnGameModeInit

coloque as skins
pawn Code:
AddPlayerClass(287,-1324.0948,497.2354,11.1953,137.1467,0,0,0,0,0,0);//Soldado AddPlayerClass(123,-2185.7253,706.9626,53.8906,225.8146,0,0,0,0,0,0);//Chines

Agora as GZs em OnGameModeInit mesmo
pawn Code:
Soldado = GangZoneCreate(-1753.477, 246.9049, -1007.979, 613.7866);  Chines = GangZoneCreate(-2379.232, 577.1168, -1988.689, 1489.569);

Agora as Checks em OnGameModeInit denovo
Checkpont (crie os checkpoins na mesma ordem das GZs, senão da erro na hora de conquistar)
pawn Code:
cpsoldado = CPS_AddCheckpoint(-1371.5627,492.2494,11.1953,2.0,80); cpchines = CPS_AddCheckpoint(-2206.7749,701.3187,49.4375,2.0,80);

denovo em OnGameModeInit

Coloque isso para definir as checks
pawn Code:
#pragma unused cpchines, cpsoldado

Agora o RequestClass 

Vos criar esse basico aki depois você modificao ai
pawn Code:
if(classid == 0)//Isso define a posisao das skins no OnGameModeInit     {     Gang[playerid] = SOLDADO;     GameTextForPlayer(playerid,"~y~Soldado",6000,6);     SetPlayerInterior(playerid,3);     SetPlayerPos(playerid, -2669.8770,1410.3972,912.7240);     SetPlayerFacingAngle(playerid, 267.7684);     SetPlayerCameraPos(playerid, -2663.8770,1410.3972,912.7240);     SetPlayerCameraLookAt(playerid, -2669.8770,1410.3972,912.7240);     ApplyAnimation(playerid,"PED","WALK_DRUNK",4.0,1,1,1,1,0);     }     else if(classid == 1)//Isso define a posisao das skins no OnGameModeInit     {     Gang[playerid] = CHINES;     GameTextForPlayer(playerid,"~y~Chines",6000,6);     SetPlayerInterior(playerid,3);     SetPlayerPos(playerid, -2669.8770,1410.3972,912.7240);     SetPlayerFacingAngle(playerid, 267.7684);     SetPlayerCameraPos(playerid, -2663.8770,1410.3972,912.7240);     SetPlayerCameraLookAt(playerid, -2669.8770,1410.3972,912.7240);     ApplyAnimation(playerid,"PED","WALK_DRUNK",4.0,1,1,1,1,0);     }

OnPlayerRequestSpawn a cor das gangs
pawn Code:
if(Gang[playerid] == SOLDADO)     {     SetPlayerInterior(playerid,0);     SetPlayerColor(playerid, 0x33AA33AA); //Verde Claro     }     else if(Gang[playerid] == CHINES)     {     SetPlayerInterior(playerid,0);     SetPlayerColor(playerid, 0xFF9900AA); //Rosa     }
Em public OnPlayerSpawn

As coreas das GZs
pawn Code:
GangZoneShowForPlayer(playerid, Soldado, gzcolor[0]);     GangZoneShowForPlayer(playerid, Chines, gzcolor[1]);
Se for adicionr mais GZs.. ja sabe que tem que acompanhar os numeros "gzcolor[numero]"...

Na public OnPlayerLeaveCheckpoint

coloque isso
pawn Code:
new checkpointid = lastcp[playerid];     if(checkpointid > 0 && checkpointid <= 2) //são 2 checkpoints, então mude se for colocar mais...     {     cpzone[playerid][checkpointid] = 0; //saiu do CP...     GangZoneStopFlashForAll(checkpointid-1);     }

Agora a public que criandos a Forward la no começo 
pawn Code:
public ZoneCheckpointCheckerbyRangel() {     for(new i; i < MAX_PLAYERS; i++)     {         if(!IsPlayerConnected(i))continue;         if(CPS_GetPlayerCheckpoint(i) > 0 && CPS_GetPlayerCheckpoint(i) <= 2 &&             //são 2 checkpoints, então mude se for colocar mais...             gzcolor[CPS_GetPlayerCheckpoint(i)-1] != GetPlayerColor(i))         {             if(cpzone[i][CPS_GetPlayerCheckpoint(i)] < 30)             {                 cpzone[i][CPS_GetPlayerCheckpoint(i)]++;                 new tmp[10];                 format(tmp, sizeof tmp, "~w~%2d/30", cpzone[i][CPS_GetPlayerCheckpoint(i)]);                 GameTextForPlayer(i, tmp, 1001, 4);                 GangZoneFlashForAll(CPS_GetPlayerCheckpoint(i)-1, GetPlayerColor(i));             } else if(cpzone[i][CPS_GetPlayerCheckpoint(i)] == 30) //passou 30 segundos dentro do checkpoint             {                 GameTextForPlayer(i, "~w~Conquistado", 4000, 1);                 gzcolor[CPS_GetPlayerCheckpoint(i)-1] = GetPlayerColor(i);                 GangZoneStopFlashForAll(CPS_GetPlayerCheckpoint(i)-1);                 GangZoneHideForAll(CPS_GetPlayerCheckpoint(i)-1);                 GangZoneShowForAll(CPS_GetPlayerCheckpoint(i)-1, GetPlayerColor(i));//Ficar piscando a cor do player na GZ             }         }     } }
Bom achu que e isso ai se tiver algum erro faal ai que eu ajudo '.' valeu

0 comentários:

Postar um comentário