Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*----------------------------------------------------------------------------*\
- Dynamic Zones - Include
- @Descrição:
- Esta include contém funções para ajudar no manuseio de gangzones.
- @Legal:
- Este código-fonte está sob os termos de licença da Mozilla Public
- License, v. 2.0. Se uma cópia do MPL não for distribuida com este
- arquivo, você pode obter uma em http://mozilla.org/MPL/2.0/
- O inicial desenvolvedor deste código é Larceny.
- Códigos criados pelos iniciais desenvolvedores são Copyright (C) 2012
- Inicial desenvolvedor.
- Todos os direitos reservados.
- @Versão:
- 1.0 - 14:23 02/08/2012 - linhas: 405
- 1.4 - 16:30 25/11/2012 - linhas: 732
- @Change-log:
- 1.0:
- Primeira versão.
- 1.4:
- Melhorias em loops, swap ao criar gangzones, documentação do código
- @Autor:
- Larceny
- @Obrigado-a:
- Y_Less ------------------------> Metódo de hook callbacks & swap func.
- rjj/Ken -----------------------> Me deu a dica de usar swap
- ipsBruno/BrunodaSilva ---------> Me deu a dica de usar swap
- SA-MP Team --------------------> (c) SA-MP
- \*----------------------------------------------------------------------------*/
- #include <a_samp>
- #if defined _dzones_included
- #endinput
- #endif
- #define _dzones_included
- /*
- native GetDynamicZoneArea(zoneid, &Float:minx, &Float:miny, &Float:maxx, &Float:maxy);
- native SetDynamicZoneArea(zoneid, Float:minx, Float:miny, Float:maxx, Float:maxy);
- native CreateDynamicZone(Float:minx, Float:miny, Float:maxx, Float:maxy, color);
- native FlashDynamicZoneForPlayer(playerid, zoneid, color);
- native IsDynamicZoneFlashingForPlayer(playerid, zoneid);
- native IsDynamicZoneVisibleForPlayer(playerid, zoneid);
- native StopFlashDynamicZoneForPlayer(playerid, zoneid);
- native ShowDynamicZoneForPlayer(playerid, zoneid);
- native HideDynamicZoneForPlayer(playerid, zoneid);
- native IsPlayerInDynamicZone(playerid, zoneid);
- native FlashDynamicZoneForAll(zoneid, color);
- native SetDynamicZoneColor(zoneid, color);
- native StopFlashDynamicZoneForAll(zoneid);
- native ShowDynamicZoneForAll(zoneid);
- native HideDynamicZoneForAll(zoneid);
- native GetDynamicZoneColor(zoneid);
- native DestroyDynamicZone(zoneid);
- native zexist(zoneid);
- */
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Variavéis globais do projeto
- \*----------------------------------------------------------------------------*/
- enum g_GANG_ZONE {
- g_GANG_ZONE_ID,
- g_GANG_ZONE_COLOR,
- Float:g_GANG_ZONE_MINX,
- Float:g_GANG_ZONE_MINY,
- Float:g_GANG_ZONE_MAXX,
- Float:g_GANG_ZONE_MAXY
- }
- new
- gZoneData[ MAX_GANG_ZONES ][ g_GANG_ZONE ];
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Forwards do projeto
- \*----------------------------------------------------------------------------*/
- forward dzones_Check();
- /*----------------------------------------------------------------------------*-
- Função:
- swap
- Params:
- num1 - Primeira variável.
- num2 - Segunda variável.
- Return:
- -
- Notas:
- Troca os valores entre duas variáveis sem uma variavel intermediária.
- (c) By Y_Less
- -*----------------------------------------------------------------------------*/
- #define swap(%1,%2) \
- %1 ^= %2, %2 ^= %1, %1 ^= %2
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função cria uma dynamic gangzone.
- Params:
- - Float:minx -> Minima coordenada X da gangzone
- - Float:miny -> Minima coordenada Y da gangzone
- - Float:maxx -> Maxima coordenada X da gangzone
- - Float:maxy -> Maxima coordenada Y da gangzone
- - color ------> Cor da gangzone (Hexadecimal)
- Return:
- - Esta função retorna 0 caso o limite de gangzones for ultrapasado.
- - Esta função retorna o id da gangzones criada caso criada
- com sucesso.
- \*----------------------------------------------------------------------------*/
- stock CreateDynamicZone(Float:minx, Float:miny, Float:maxx, Float:maxy, color)
- {
- new int_zone_id = SearchZones();
- if (int_zone_id == INVALID_GANG_ZONE) {
- print("ERROR: Maximum limit of zones exceeded. (dzones.inc)");
- return 0;
- }
- if(minx > maxx)
- swap(minx, maxx);
- if(miny > maxy)
- swap(miny, maxy);
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] = GangZoneCreate(minx,
- miny,
- maxx,
- maxy);
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MINX ] = minx;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MINY ] = miny;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXX ] = maxx;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXY ] = maxy;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ] = color;
- return int_zone_id;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função destrói uma dynamic gangzone.
- Params:
- - int_zone_id -> ID da gangzone que será destruída
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso a gz for destruída com sucesso.
- \*----------------------------------------------------------------------------*/
- stock DestroyDynamicZone(int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- GangZoneDestroy(gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] = INVALID_GANG_ZONE;
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função muda a posição de uma dynamic gangzone
- Params:
- - int_zone_id -> ID da gangzone que mudará de posição
- - Float:minx --> Minima coordenada X da gangzone
- - Float:miny --> Minima coordenada Y da gangzone
- - Float:maxx --> Maxima coordenada X da gangzone
- - Float:maxy --> Maxima coordenada Y da gangzone
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso a gz for movida com sucesso.
- \*----------------------------------------------------------------------------*/
- stock SetDynamicZoneArea(int_zone_id, Float:minx, Float:miny, Float:maxx,
- Float:maxy)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- GangZoneDestroy(gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MINX ] = minx;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MINY ] = miny;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXX ] = maxx;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXY ] = maxy;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] = GangZoneCreate(minx,
- miny,
- maxx,
- maxy);
- new str_zone_id[14];
- for (new i; i < MAX_PLAYERS; i++) {
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- if (GetPVarInt(i, str_zone_id) == 1) {
- GangZoneHideForPlayer(i,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- GangZoneShowForPlayer(i,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ],
- gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ]);
- }
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função obtém as coordenadas minx, miny, maxx, maxy tipo float
- de uma dynamic gangzone, passada por referência.
- Params:
- - int_zone_id -> ID da gangzone para obter as coordenadas
- - Float:minx --> Minima coordenada X da gangzone, passada por ref.
- - Float:miny --> Minima coordenada Y da gangzone, passada por ref.
- - Float:maxx --> Maxima coordenada X da gangzone, passada por ref.
- - Float:maxy --> Maxima coordenada Y da gangzone, passada por ref.
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso os valores forem passados.
- \*----------------------------------------------------------------------------*/
- stock GetDynamicZoneArea(int_zone_id, &Float:minx, &Float:miny, &Float:maxx,
- &Float:maxy)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- minx = gZoneData[ int_zone_id ][ g_GANG_ZONE_MINX ];
- miny = gZoneData[ int_zone_id ][ g_GANG_ZONE_MINY ];
- maxx = gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXX ];
- maxy = gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXY ];
- return int_zone_id;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função mostra uma dynamic gangzone para um jogador.
- Params:
- - playerid ----> ID do jogador que verá a gangzone
- - int_zone_id -> ID da gangzone que será mostrada ao jogador
- Return:
- - Esta função retorna -1 caso o jogador for inválido.
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for mostrada para o jogador.
- \*----------------------------------------------------------------------------*/
- stock ShowDynamicZoneForPlayer(playerid, int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- if(!IsPlayerConnected(playerid) || playerid == INVALID_PLAYER_ID)
- return -1;
- GangZoneShowForPlayer(playerid,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ],
- gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ]);
- new str_zone_id[14];
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- SetPVarInt(playerid, str_zone_id, 1);
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função oculta uma dynamic gangzone para um jogador.
- Params:
- - playerid ----> ID do jogador que será oculta a gangzone
- - int_zone_id -> ID da gangzone que será ocultada ao jogador
- Return:
- - Esta função retorna -1 caso o jogador for inválido.
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for ocultada ao jogador.
- \*----------------------------------------------------------------------------*/
- stock HideDynamicZoneForPlayer(playerid, int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- if(!IsPlayerConnected(playerid) || playerid == INVALID_PLAYER_ID)
- return -1;
- GangZoneHideForPlayer(playerid,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- new str_zone_id[14];
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- DeletePVar(playerid, str_zone_id);
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função mostra uma dynamic gangzone para todos
- Params:
- - int_zone_id -> ID da gangzone que será mostrada
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for mostrada a todos.
- \*----------------------------------------------------------------------------*/
- stock ShowDynamicZoneForAll(int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- new str_zone_id[14];
- for (new i; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i))
- continue;
- GangZoneShowForPlayer(i, gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ],
- gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ]);
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- SetPVarInt(i, str_zone_id, 1);
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função oculta uma dynamic gangzone para todos
- Params:
- - int_zone_id -> ID da gangzone que será ocultada
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for ocultada a todos.
- \*----------------------------------------------------------------------------*/
- stock HideDynamicZoneForAll(int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- new str_zone_id[14];
- for (new i; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i))
- continue;
- GangZoneHideForPlayer(i, gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- DeletePVar(i, str_zone_id);
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função pisca uma dynamic gangzone para todos
- Params:
- - int_zone_id -> ID da gangzone que irá piscar
- - color -------> Segunda cor na qual a gangzone irá piscar.
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for piscada a todos.
- \*----------------------------------------------------------------------------*/
- stock FlashDynamicZoneForAll(int_zone_id, color)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- new str_zone_id[14];
- for (new i; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i))
- continue;
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- if (GetPVarInt(i, str_zone_id) == 1) {
- GangZoneFlashForPlayer(i,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ],
- color);
- format(str_zone_id, sizeof str_zone_id, "fszone_%i",
- int_zone_id);
- SetPVarInt(i, str_zone_id, 1);
- }
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função para de piscar uma dynamic gangzone para todos
- Params:
- - int_zone_id -> ID da gangzone que parará de piscar
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for piscada a todos.
- \*----------------------------------------------------------------------------*/
- stock StopFlashDynamicZoneForAll(int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- new str_zone_id[14];
- for (new i; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i))
- continue;
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- if (GetPVarInt(i, str_zone_id) == 1) {
- GangZoneStopFlashForPlayer(i,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- format(str_zone_id, sizeof str_zone_id, "fszone_%i",
- int_zone_id);
- DeletePVar(i, str_zone_id);
- }
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função pisca uma dynamic gangzone para um jogador
- Params:
- - playerid ----> ID do jogador que verá a gangzone piscar
- - int_zone_id -> ID da gangzone que irá piscar
- - color -------> Segunda cor na qual a gangzone irá piscar
- Return:
- - Esta função retorna -1 caso o jogador for inválido.
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso for piscada.
- \*----------------------------------------------------------------------------*/
- stock FlashDynamicZoneForPlayer(playerid, int_zone_id, color)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- if(!IsPlayerConnected(playerid) || playerid == INVALID_PLAYER_ID)
- return -1;
- new str_zone_id[14];
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- if (GetPVarInt(playerid, str_zone_id) == 1) {
- GangZoneFlashForPlayer(playerid,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ],
- color);
- format(str_zone_id, sizeof str_zone_id, "fszone_%i", int_zone_id);
- SetPVarInt(playerid, str_zone_id, 1);
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função para de piscar uma dynamic gangzone para um jogador
- Params:
- - playerid ----> ID do jogador que verá a gangzone parar de piscar
- - int_zone_id -> ID da gangzone que irá parar de piscar
- Return:
- - Esta função retorna -1 caso o jogador for inválido.
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso parar de piscar.
- \*----------------------------------------------------------------------------*/
- stock StopFlashDynamicZoneForPlayer(playerid, int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- if(!IsPlayerConnected(playerid) || playerid == INVALID_PLAYER_ID)
- return -1;
- new str_zone_id[14];
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- if (GetPVarInt(playerid, str_zone_id) == 1) {
- GangZoneStopFlashForPlayer(playerid,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- format(str_zone_id, sizeof str_zone_id, "fszone_%i",
- int_zone_id);
- DeletePVar(playerid, str_zone_id);
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função define a cor de uma gangzone
- Params:
- - int_zone_id -> ID da gangzone que irá mudar de cor
- - color -------> Nova cor da gangzone (hexadecimal)
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna 1 caso mudar a cor da gangzone
- \*----------------------------------------------------------------------------*/
- stock SetDynamicZoneColor(int_zone_id, color)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ] = color;
- new str_zone_id[14];
- for (new i; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i))
- continue;
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- if (GetPVarInt(i, str_zone_id) == 1) {
- GangZoneHideForPlayer(i,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]);
- GangZoneShowForPlayer(i,
- gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ],
- gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ]);
- }
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função retorna a cor de uma gangzone.
- Params:
- - int_zone_id -> ID da gangzone que irá obter a cor
- Return:
- - Esta função retorna 0 caso a gangzone for inválida.
- - Esta função retorna a cor da gangzone caso executada com sucesso.
- \*----------------------------------------------------------------------------*/
- stock GetDynamicZoneColor(int_zone_id)
- {
- if (gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return 0;
- return gZoneData[ int_zone_id ][ g_GANG_ZONE_COLOR ];
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função retorna se uma zona é visível para um jogador.
- Params:
- - playerid ----> ID do jogador para verificar se pode ver a zona
- - int_zone_id -> ID da gangzone para verificar se o jogador pode ve-la
- Return:
- - Esta função retorna 0 se o jogador não puder ver a zona.
- - Esta função retorna 1 se o jogador puder ver a zona.
- \*----------------------------------------------------------------------------*/
- stock IsDynamicZoneVisibleForPlayer(playerid, int_zone_id)
- {
- new str_zone_id[14];
- format(str_zone_id, sizeof str_zone_id, "vszone_%i", int_zone_id);
- return (!GetPVarInt(playerid, str_zone_id)) ? 0 : 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função retorna se uma zona está piscando para um jogador.
- Params:
- - playerid ----> ID do jogador para verificar se a zona está piscando
- - int_zone_id -> ID da gangzone para verificar se o jogador ve piscando
- Return:
- - Esta função retorna 0 se a zona não estiver picando para o jogador.
- - Esta função retorna 1 se a zona estiver picando para o jogador.
- \*----------------------------------------------------------------------------*/
- stock IsDynamicZoneFlashingForPlayer(playerid, int_zone_id)
- {
- new str_zone_id[14];
- format(str_zone_id, sizeof str_zone_id, "fszone_%i", int_zone_id);
- return (!GetPVarInt(playerid, str_zone_id)) ? 0 : 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função checa se um jogador está em uma dynamic gangzone
- Params:
- - playerid ----> ID do jogador para verificar se está na zona
- - int_zone_id -> ID da gangzone para verificar se o jogador está na zona
- Return:
- - Esta função retorna 0 se o jogador não estiver na zona.
- - Esta função retorna 1 se o jogador estiver na zona.
- \*----------------------------------------------------------------------------*/
- stock IsPlayerInDynamicZone(playerid, int_zone_id)
- {
- new
- Float:x,
- Float:y,
- Float:z;
- GetPlayerPos(playerid, x, y, z);
- if (x > gZoneData[ int_zone_id ][ g_GANG_ZONE_MINX ] &&
- x < gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXX ] &&
- y > gZoneData[ int_zone_id ][ g_GANG_ZONE_MINY ] &&
- y < gZoneData[ int_zone_id ][ g_GANG_ZONE_MAXY ]) return 1;
- return 0;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função checa se uma dynamic gangzone existe
- Params:
- - int_zone_id -> ID da gangzone para verificar se existe
- Return:
- - Esta função retorna 0 se a gangzone não existir.
- - Esta função retorna 1 se a gangzone existir.
- \*----------------------------------------------------------------------------*/
- stock zexist(int_zone_id)
- {
- return (!gZoneData[ int_zone_id ][ g_GANG_ZONE_ID ]) ? 0 : 1;
- }
- /*----------------------------------------------------------------------------*\
- Descrição:
- - Esta função procura por gangzones existentes.
- Params:
- -
- Return:
- - Esta função retorna o primeiro id de dgangzone livre no enum
- - Esta função retorna invalid_gang_zone caso não houver ^
- \*----------------------------------------------------------------------------*/
- stock SearchZones()
- {
- for (new z = 0; z < MAX_GANG_ZONES; z++)
- if (gZoneData[ z ][ g_GANG_ZONE_ID ] == INVALID_GANG_ZONE)
- return z;
- return INVALID_GANG_ZONE;
- }
- /*----------------------------------------------------------------------------*\
- Descrição;
- Esta callback é chamada uma vez a cada segundo
- Params:
- -
- Return:
- -
- \*----------------------------------------------------------------------------*/
- public dzones_Check()
- {
- new str_zone_id[14];
- for (new i = 0; i < MAX_PLAYERS; i++) {
- if(!IsPlayerConnected(i))
- continue;
- for (new z = 0; z < MAX_GANG_ZONES; z++) {
- format(str_zone_id, sizeof str_zone_id, "etzone_%i", z);
- if (IsPlayerInDynamicZone(i, z) &&
- GetPVarInt(i, str_zone_id) == 0) {
- CallLocalFunction("OnPlayerEnterDynamicZone", "ii",
- i,
- z);
- SetPVarInt(i, str_zone_id, 1);
- }
- else if (!IsPlayerInDynamicZone(i, z) &&
- GetPVarInt(i, str_zone_id) == 1) {
- CallLocalFunction("OnPlayerExitDynamicZone", "ii",
- i,
- z);
- DeletePVar(i, str_zone_id);
- }
- }
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*\
- Hooking OnGameMode/FilterScriptInit, Obrigado Y_Less.
- \*----------------------------------------------------------------------------*/
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- for (new z = 0; z < MAX_GANG_ZONES; z++) {
- gZoneData[ z ][ g_GANG_ZONE_ID ] = INVALID_GANG_ZONE;
- }
- SetTimer("dzones_Check", 1000, true);
- return CallLocalFunction("dzones_OnFilterScriptInit", "");
- }
- #if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
- #else
- #define _ALS_OnFilterScriptInit
- #endif
- #define OnFilterScriptInit dzones_OnFilterScriptInit
- forward dzones_OnFilterScriptInit();
- forward OnPlayerEnterDynamicZone(playerid, zoneid);
- forward OnPlayerExitDynamicZone(playerid, zoneid);
- #else
- public OnGameModeInit()
- {
- for (new z = 0; z < MAX_GANG_ZONES; z++) {
- gZoneData[ z ][ g_GANG_ZONE_ID ] = INVALID_GANG_ZONE;
- }
- SetTimer("dzones_Check", 1000, true);
- return CallLocalFunction("dzones_OnGameModeInit", "");
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnGameModeInit
- #endif
- #define OnGameModeInit dzones_OnGameModeInit
- forward dzones_OnGameModeInit();
- forward OnPlayerEnterDynamicZone(playerid, zoneid);
- forward OnPlayerExitDynamicZone(playerid, zoneid);
- #endif
- #undef swap
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement