23.10.2011, 22:49
Carol's Dominate GangZone
Introduзгo:Olб!.
depois de muito tempo sem postar algum projeto, resolvi postar sistema de GZ que eu fiz para um amico meu (XD),
ele й bem simples. eu testei por algum tempo e nгo me apareceu nenhum bug.
Funзхes:
Esta minha include tem poucas funзхes, porque й versгo beta,
vou falar de algumas:
Funзгo | Oque ela faz |
GetGangZoneIDFromName | Pega a o id de uma gangzone pelo nome. |
CreateGangZone | Cria uma GangZone(colocar no OnGameModeInit/OnFilterScriptInit) |
LoadGangZones | Exibe todas as gangzones para o player( Colocar no OnPlayerSpawn ) |
PlayerGangZone | Returna o id da gangzone que o player estб ( esta funзгo returna -1 caso nгo estiver em nenhuma gangzone). |
DominateGangZone | Faz o player dominar a gangzona. |
Configuraзгo:
Esta parte й muito crнtica, aqui sгo as configuraзхes do sistema,
caso vocк nгo entenda do assunto, poste no tуpico que eu terei o prazer de ajudar =).
Definiзгo | Oque ela Faz |
MAX_GANGZONES | Limite de GangZonas(quando ultrapassado o sistema para automaticamente) |
MAX_GZNAME | Define o mбximo de nome para gangzone |
MAX_TIMEDOMINATE | O tempo que o player fica para terminar de dominar(contagem) |
LIGHTER_COLOR | Pequena definiзгo da cor transparente(usada para nгo ficar cor forte xD) |
Instruзхes:
- Copie todo o cуdigo que estб para download;
- aperte WINDOWS+R e digite notepad, cole e depois em salvar como, selecione a pasta Includes que fica localizada na pasta Pawno. salve com a extensгo CDG.INC, e bote "Salvar como todos os arquivos".
- Bote no topo do GM/FS:
pawn Код:
#include <CDG>
Crйditos:
- [O.z]Caroline
- SA-MP Team
Download:
Vrsгo 1.0 (Beta)
pawn Код:
#define MAX_GANGZONES (20)
#define MAX_GZNAME (50)
#define MAX_TIMEDOMINATE (30)
#define LIGHTER_COLOR (204)
#define GetGangZoneName(%0) GangZone[%0][Name]
#define ShowGangZone(%0) GangZoneShowForAll(GangZoneID[%0],GangZone[%0][Cor])
forward DominateGangZone(pid, gzid);
enum gangg
{
Float:gangzoneY2, Name[MAX_GZNAME], Dono[MAX_PLAYER_NAME],
Float:gangzoneX, Float:gangzoneY, Float:gangzoneX2,
Ganha, Cor
};
new
GangZone[MAX_GANGZONES][gangg],
GangZoneID[MAX_GANGZONES] = -1,
MyTIME[32],
gID = 0
;
stock GetGangZoneIDFromName(gangname[])
{
for(new i; i < MAX_GANGZONES; ++i)
{
if(!strcmp(gangname, GangZone[i][Name], true)) return i;
}
return -1;
}
stock CreateGangZone(gangzonename[], Float:x, Float:y, Float:x2, Float:y2, color, lucro)
{
if(gID == MAX_GANGZONES)
{
print("\n\n Limite de GangZones Estourados!\n\n");
return 0;
}
format(GangZone[gID][Name], MAX_GZNAME, gangzonename);
GangZone[gID][gangzoneX] = x;
GangZone[gID][gangzoneY] = y;
GangZone[gID][gangzoneX2] = x2;
GangZone[gID][gangzoneY2] = y2;
GangZone[gID][Cor] = color;
GangZone[gID][Ganha] = lucro;
GangZoneID[gID] = GangZoneCreate(GangZone[gID][gangzoneX], GangZone[gID][gangzoneY], GangZone[gID][gangzoneX2], GangZone[gID][gangzoneY2]);
return gID++;
}
stock LoadGangZones()
{
for(new i; i < gID; ++i)
{
ShowGangZone(i);
}
}
stock PlayerGangZone(pid)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(pid, X, Y, Z);
for(new i; i < MAX_GANGZONES; ++i)
{
if (X > GangZone[i][gangzoneX] && X < GangZone[i][gangzoneX2] && Y > GangZone[i][gangzoneY] && Y < GangZone[i][gangzoneY2])
{
return i;
}
}
return -1;
}
public DominateGangZone(pid, gzid)
{
if(PlayerGangZone(pid) == -1)
return GangZoneStopFlashForAll(gzid);
if(MyTIME[pid] == MAX_TIMEDOMINATE)
{
GameTextForPlayer(pid, "~y~Dominado]", 3000, 3);
MyTIME[pid] = 0;
GangZoneStopFlashForAll(gzid);
GangZone[gzid][Cor] = GetPlayerColor(pid) + LIGHTER_COLOR;
GangZoneShowForAll(gzid,GetPlayerColor(pid) + LIGHTER_COLOR);
format(GangZone[gzid][Dono], strlen(GetNick(pid)), GetNick(pid));
return false;
}
new _st[100];
format(_st, sizeof(_st),"Dominando a gangzone %s~n~(%d/%d)",GetGangZoneName(gzid), MyTIME[pid], MAX_TIMEDOMINATE);
GameTextForPlayer(pid, _st, 1200, 3);
GangZoneFlashForAll(gzid, GetPlayerColor(pid) + LIGHTER_COLOR);
SetTimerEx("DominateGangZone", 1000, false, "id", pid, gzid);
return MyTIME[pid]++;
}
Exemplo de uso:
Como terб muitas dъvidas e coisas do tipo, deixarei um FilterScript como exemplo:
pawn Код:
#include <a_samp>
#include <CDG>
public OnFilterScriptInit()
{
CreateGangZone("Carol", 2079.743,978.1417, 2329.653,1171.545, 0x00000055, 1000);
return 1;
}
public OnPlayerSpawn(playerid)
{
LoadGangZones();
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext,"/dominar", true))
{
if(PlayerGangZone(playerid) == -1) return SendClientMessage(playerid, -1,"VocК nгo estб em uma GangZone!");
if(strcmp(GangZone[PlayerGangZone(playerid)][Dono], GetNick(playerid), true))
return SendClientMessage(playerid, -1,"Esta GangZona jб й sua!");
DominateGangZone(playerid, PlayerGangZone(playerid));
return 1;
}
return false;
}
stock GetNick(playerid)
{
new x[24]; GetPlayerName(playerid, x, 24);
return x;
}
Nгo permito publicar este Projeto em qualquer lugar, mande-me Mensagem Privada(PM).