Portal SAMP
[Ajuda] Gangzone não carrega - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Gangzone não carrega (/showthread.php?tid=4172)



Gangzone não carrega - L10motos - 06/11/2023

Eu queria saber como resolver esse problema, a gangzone não aparece no mapa, fiz tudo certinho conforme a dança mais na hora de aparecer no mapa não aparece, abaixo é todo o codigo do sistema, veja:



Código PHP:
#define MAX_GANGZONES 11

new Territory[MAX_GANGZONES];
new 
TerritoryOwner[MAX_GANGZONES];

forward OnPlayerSpawnEx(playerid);
public 
OnPlayerSpawnEx(playerid)
{
GangZoneShowForAll(Territory[8], TeamColor(TerritoryOwner[8]));

}

public 
OnGameModeInit()
{
Territory[8] = GangZoneCreate(1018.49082064.23931109.67162166.1807); // Armazém de Armas
}

stock TeamColor(teamid)
{
    switch(teamid)
    {
        case 00: return COLOR_WHITE;
        case 01: return TEAM_BLUE_COLOR;
        case 02: return COLOR_BLACK;
        case 03: return TEAM_ARMY_COLOR;
        case 04: return COLOR_WHITE;
        case 05: return TEAM_AZTECAS_COLOR;
        case 06: return COLOR_RED;
        case 07: return COLOR_WHITE;
        case 08: return COLOR_WHITE;
        case 09: return COLOR_WHITE;
        case 10: return COLOR_WHITE;
        case 11: return COLOR_WHITE;
        case 12: return COLOR_WHITE;
        case 13: return COLOR_WHITE;
        case 14: return COLOR_LIGHTRED;
        case 15: return COLOR_WHITE;
        case 16: return COLOR_WHITE;
        case 17: return COLOR_NEWS;
        case 18: return COLOR_WHITE;
        case 19: return COLOR_WHITE;
        case 20: return COLOR_WHITE;
        case 21: return Org_Color[teamid];
        case 22: return Org_Color[teamid];
        case 23: return Org_Color[teamid];
        case 24: return Org_Color[teamid];
        case 25: return Org_Color[teamid];
        case 26: return Org_Color[teamid];
        case 27: return Org_Color[teamid];
        case 28: return Org_Color[teamid];
        case 29: return Org_Color[teamid];
        case 30: return Org_Color[teamid];
        case 31: return Org_Color[teamid];
        case 32: return Org_Color[teamid];
        case 33: return Org_Color[teamid];
        case 34: return Org_Color[teamid];
        case 35: return Org_Color[teamid];
        case 36: return Org_Color[teamid];
        case 37: return Org_Color[teamid];
        case 38: return Org_Color[teamid];
        case 39: return Org_Color[teamid];
        default: return COLOR_WHITE;
    }
    return COLOR_WHITE;




RE: Gangzone não carrega - L10motos - 06/11/2023

Up! Alguem?


RE: Gangzone não carrega - Cifra Modder - 06/11/2023

(06/11/2023 18:32)L10motos Escreveu: Eu queria saber como resolver esse problema, a gangzone não aparece no mapa, fiz tudo certinho conforme a dança mais na hora de aparecer no mapa não aparece, abaixo é todo o codigo do sistema, veja:



Código PHP:
#define MAX_GANGZONES 11

new Territory[MAX_GANGZONES];
new 
TerritoryOwner[MAX_GANGZONES];

forward OnPlayerSpawnEx(playerid);
public 
OnPlayerSpawnEx(playerid)
{
GangZoneShowForAll(Territory[8], TeamColor(TerritoryOwner[8]));

}

public 
OnGameModeInit()
{
Territory[8] = GangZoneCreate(1018.49082064.23931109.67162166.1807); // Armazém de Armas
}

stock TeamColor(teamid)
{
    switch(teamid)
    {
        case 00: return COLOR_WHITE;
        case 01: return TEAM_BLUE_COLOR;
        case 02: return COLOR_BLACK;
        case 03: return TEAM_ARMY_COLOR;
        case 04: return COLOR_WHITE;
        case 05: return TEAM_AZTECAS_COLOR;
        case 06: return COLOR_RED;
        case 07: return COLOR_WHITE;
        case 08: return COLOR_WHITE;
        case 09: return COLOR_WHITE;
        case 10: return COLOR_WHITE;
        case 11: return COLOR_WHITE;
        case 12: return COLOR_WHITE;
        case 13: return COLOR_WHITE;
        case 14: return COLOR_LIGHTRED;
        case 15: return COLOR_WHITE;
        case 16: return COLOR_WHITE;
        case 17: return COLOR_NEWS;
        case 18: return COLOR_WHITE;
        case 19: return COLOR_WHITE;
        case 20: return COLOR_WHITE;
        case 21: return Org_Color[teamid];
        case 22: return Org_Color[teamid];
        case 23: return Org_Color[teamid];
        case 24: return Org_Color[teamid];
        case 25: return Org_Color[teamid];
        case 26: return Org_Color[teamid];
        case 27: return Org_Color[teamid];
        case 28: return Org_Color[teamid];
        case 29: return Org_Color[teamid];
        case 30: return Org_Color[teamid];
        case 31: return Org_Color[teamid];
        case 32: return Org_Color[teamid];
        case 33: return Org_Color[teamid];
        case 34: return Org_Color[teamid];
        case 35: return Org_Color[teamid];
        case 36: return Org_Color[teamid];
        case 37: return Org_Color[teamid];
        case 38: return Org_Color[teamid];
        case 39: return Org_Color[teamid];
        default: return COLOR_WHITE;
    }
    return COLOR_WHITE;


Eu não entendo muito bem em questão de criar ganzones, mais eu analisei e vi que a função "OnPlayerSpawnEx" não está sendo chamada em lugar nenhum


RE: Gangzone não carrega - White_Blue - 06/11/2023

A callback "OnPlayerSpawnEx" não serve para nada no escopo do código apresentado. Ela não tem uso no código que você compartilhou.

Você tem que chamar a callback onde a ação da callback é realizada, exemplo:
Código PHP:
public OnPlayerSpawn(playerid) {
       
OnPlayerSpawnEx(playerid); // Ao jogador spawnar, chama a callback "OnPlayerSpawnEx".
       
return 1;


Ou caso você tenha alguma função personalizada que spawna o jogador:
Código PHP:
stock FuncaoDeSpawn(playerid) {
      
OnPlayerSpawnEx(playerid); // Chama a callback "OnPlayerSpawnEx" quando a função "FuncaoDeSpawn" é acionada.
      
return 1;




RE: Gangzone não carrega - L10motos - 07/11/2023

(06/11/2023 23:28)White_Blue Escreveu: A callback "OnPlayerSpawnEx" não serve para nada no escopo do código apresentado. Ela não tem uso no código que você compartilhou.

Você tem que chamar a callback onde a ação da callback é realizada, exemplo:
Código PHP:
public OnPlayerSpawn(playerid) {
       OnPlayerSpawnEx(playerid); // Ao jogador spawnar, chama a callback "OnPlayerSpawnEx".
       return 1;


Ou caso você tenha alguma função personalizada que spawna o jogador:
Código PHP:
stock FuncaoDeSpawn(playerid) {
      OnPlayerSpawnEx(playerid); // Chama a callback "OnPlayerSpawnEx" quando a função "FuncaoDeSpawn" é acionada.
      return 1;


Ela chama sim, chama uma função, a mesma está abaixo.

Código PHP:
public OnPlayerSpawn(playerid)
{
    
GangZoneShowForAll(FishingAreaCOLOR_OOC);
    
GangZoneShowForAll(Territory[08], TeamColor(TerritoryOwner[8]));
    if(TerritoryOwner[4] == 3) { GangZoneShowForAll(gzbs,COLOR_LIGHTBLUE); }
       else if(TerritoryOwner[4] == 11) { GangZoneShowForAll(gzbs,COLOR_RED); }
    if(
TerritoryOwner[5] == 3) { GangZoneShowForAll(gzul,COLOR_LIGHTBLUE); }
     else if(
TerritoryOwner[5] == 6) { GangZoneShowForAll(gzul,COLOR_RED); }
     
    OnPlayerSpawnEx(playerid); //aqui ela é chamada
    
return 1;


Exclusive eu mudei a posição do GangZoneShowForAll e não funciona, não aparece nada no mapa do jogo, nenhuma cor.


RE: Gangzone não carrega - White_Blue - 07/11/2023

(07/11/2023 00:02)L10motos Escreveu:
(06/11/2023 23:28)White_Blue Escreveu: A callback "OnPlayerSpawnEx" não serve para nada no escopo do código apresentado. Ela não tem uso no código que você compartilhou.

Você tem que chamar a callback onde a ação da callback é realizada, exemplo:
Código PHP:
public OnPlayerSpawn(playerid) {
       OnPlayerSpawnEx(playerid); // Ao jogador spawnar, chama a callback "OnPlayerSpawnEx".
       return 1;


Ou caso você tenha alguma função personalizada que spawna o jogador:
Código PHP:
stock FuncaoDeSpawn(playerid) {
      OnPlayerSpawnEx(playerid); // Chama a callback "OnPlayerSpawnEx" quando a função "FuncaoDeSpawn" é acionada.
      return 1;


Ela chama sim, chama uma função, a mesma está abaixo.

Código PHP:
public OnPlayerSpawn(playerid)
{
    
GangZoneShowForAll(FishingAreaCOLOR_OOC);
    
GangZoneShowForAll(Territory[08], TeamColor(TerritoryOwner[8]));
    if(TerritoryOwner[4] == 3) { GangZoneShowForAll(gzbs,COLOR_LIGHTBLUE); }
       else if(TerritoryOwner[4] == 11) { GangZoneShowForAll(gzbs,COLOR_RED); }
    if(
TerritoryOwner[5] == 3) { GangZoneShowForAll(gzul,COLOR_LIGHTBLUE); }
     else if(
TerritoryOwner[5] == 6) { GangZoneShowForAll(gzul,COLOR_RED); }
     
    OnPlayerSpawnEx(playerid); //aqui ela é chamada
    
return 1;


Exclusive eu mudei a posição do GangZoneShowForAll e não funciona, não aparece nada no mapa do jogo, nenhuma cor.

Já verificou se a posição da Gangzone está correta?

Recomendo usar essa ferramenta para criar as Gangzones: https://dev.prineside.com/en/gtasa_gangzone_editor/


RE: Gangzone não carrega - pushline - 07/11/2023

Esse código não faz muito sentido (pra mim), toda vez que um player spawnar vai ser re-mostrado a gangzone. Mas não tem jeito, já que a função GangZoneShowForAll foi criada pra ser chamada no OnPlayerSpawn por algum motivo, sendo que era pra ser feita pra ser dependente da OnGameModeInit, então resolvi trocar para GangZoneShowForPlayer, para não ter que cair num loop toda hora.

(explicação da frase acima - https://github.com/openmultiplayer/open.mp/blob/2037a95616e163de0d794bd685f012e66330efb2/Server/Components/Pawn/Scripting/GangZone/Natives.cpp#L71)
(é literalmente um loop nos players com GangZoneShowForPlayer, desenvolvimento do Kalcor é pra fuder.)

segue um código levemente otimizado:

Código PHP:
#define MAX_GANGZONES 11

new Territory[MAX_GANGZONES];
new 
TerritoryOwner[MAX_GANGZONES];

public 
OnGameModeInit()
{
    
Territory[8] = GangZoneCreate(1018.49082064.23931109.67162166.1807); // Armazém de Armas
}

forward OnPlayerSpawnEx(playerid);
public 
OnPlayerSpawnEx(playerid)
{
    
GangZoneShowForPlayer(playeridFishingAreaCOLOR_OOC);
    
GangZoneShowForPlayer(playeridTerritory[8], TeamColor(TerritoryOwner[8]));

    if(
TerritoryOwner[4] == 3
    {
        
GangZoneShowForPlayer(playeridgzbs,COLOR_LIGHTBLUE); 
    }
    else if(
TerritoryOwner[4] == 11
    { 
        
GangZoneShowForPlayer(playeridgzbs,COLOR_RED); 
    }

    if(
TerritoryOwner[5] == 3
    { 
        
GangZoneShowForPlayer(playeridgzul,COLOR_LIGHTBLUE);
    }
    else if(
TerritoryOwner[5] == 6)
    { 
        
GangZoneShowForPlayer(playeridgzul,COLOR_RED);
    }
}

public 
OnPlayerSpawn(playerid)
{    
    
OnPlayerSpawnEx(playerid);
    return 
1;


stock TeamColor(teamid)
{
    switch(
teamid)
    {
        case 
047..13151618..20: return COLOR_WHITE;
        case 
1: return TEAM_BLUE_COLOR;
        case 
2: return COLOR_BLACK;
        case 
3: return TEAM_ARMY_COLOR;
        case 
5: return TEAM_AZTECAS_COLOR;
        case 
14: return COLOR_LIGHTRED;
        case 
17: return COLOR_NEWS;
        case 
21..39: return Org_Color[teamid];

        default: return 
COLOR_WHITE;
    }
    return 
COLOR_WHITE;