Combining gangzones with families
#1

Hello everyone,
I'm completely stuck on how to combine gangzones with my dynamic family system. I've been searching through the forums for ages, and yeah.. I found a few guides. But all the guides is meant for TDM gamemodes.(I'm using an RP gm) All the guides includes defining teams such as grove or ballas which I find very difficult as my system is dynamic.

So, how can I possibly create gang zones with certain colors for a dynamic family system?

Load/save Code:
pawn Код:
// Families
enum famInfo
{
    fTaken,
    fName[32],
    fMOTD[64],
    fColor,
    fLeader[MAX_PLAYER_NAME],
    fMembers,
    Float:fSafeX,
    Float:fSafeY,
    Float:fSafeZ,
    fMoney,
    fMats,
    fWeed,
    fcocaine,
    fHeroin,
    fSeeds,
    fSyringe,
    fOpium,
    fBd,
    fRank1[32],
    fRank2[32],
    fRank3[32],
    fRank4[32],
    fRank5[32],
    fRank6[32],
    fSkins[7],
    fStrikes,
    Text3D:fText,
    fPickup,
    fVeh[5],
    fVehType[5],
    Float:fVehCoX[5],
    Float:fVehCoY[5],
    Float:fVehCoZ[5],
    fVehCol1[5],
    fVehCol2[5],
    Float:fVehRot[5]
}
new FamInfo[MAX_FAMILIES][famInfo];


stock SaveFamilies()
{
    new idx = 1, File:file;
    new string[1300];
    while(idx < MAX_FAMILIES)
    {
        format(string, sizeof(string), "%d|%s|%s|%d|%s|%d|%f|%f|%f|%d|%d|%d|%d|%s|%s|%s|%s|%s|%s|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d\r\n",
        FamInfo[idx][fTaken],
        FamInfo[idx][fName],
        FamInfo[idx][fMOTD],
        FamInfo[idx][fColor],
        FamInfo[idx][fLeader],
        FamInfo[idx][fMembers],
        FamInfo[idx][fSafeX],
        FamInfo[idx][fSafeY],
        FamInfo[idx][fSafeZ],
        FamInfo[idx][fMoney],
        FamInfo[idx][fMats],
        FamInfo[idx][fWeed],
        FamInfo[idx][fHeroin],
        FamInfo[idx][fSeeds],
        FamInfo[idx][fSyringe],
        FamInfo[idx][fOpium],
        FamInfo[idx][fcocaine],
        FamInfo[idx][fRank1],
        FamInfo[idx][fRank2],
        FamInfo[idx][fRank3],
        FamInfo[idx][fRank4],
        FamInfo[idx][fRank5],
        FamInfo[idx][fRank6],
        FamInfo[idx][fSkins][0],
        FamInfo[idx][fSkins][1],
        FamInfo[idx][fSkins][2],
        FamInfo[idx][fSkins][3],
        FamInfo[idx][fSkins][4],
        FamInfo[idx][fSkins][5],
        FamInfo[idx][fSkins][6],
        FamInfo[idx][fStrikes],
        FamInfo[idx][fVehType][0], // Veh 1
        FamInfo[idx][fVehType][1], // Veh 2
        FamInfo[idx][fVehType][2], // Veh 3
        FamInfo[idx][fVehType][3], // Veh 4
        FamInfo[idx][fVehType][4], // Veh 5
        FamInfo[idx][fVehCoX][0], // Veh 1 Coords
        FamInfo[idx][fVehCoY][0],
        FamInfo[idx][fVehCoZ][0],
        FamInfo[idx][fVehCoX][1], // Veh 2 Coords
        FamInfo[idx][fVehCoY][1],
        FamInfo[idx][fVehCoZ][1],
        FamInfo[idx][fVehCoX][2], // Veh 3 Coords
        FamInfo[idx][fVehCoY][2],
        FamInfo[idx][fVehCoZ][2],
        FamInfo[idx][fVehCoX][3], // Veh 4 Coords
        FamInfo[idx][fVehCoY][3],
        FamInfo[idx][fVehCoZ][3],
        FamInfo[idx][fVehCoX][4], // Veh 5 Coords
        FamInfo[idx][fVehCoY][4],
        FamInfo[idx][fVehCoZ][4],
        FamInfo[idx][fVehRot][0],
        FamInfo[idx][fVehRot][1],
        FamInfo[idx][fVehRot][2],
        FamInfo[idx][fVehRot][3],
        FamInfo[idx][fVehRot][4],
        FamInfo[idx][fVehCol1][0],
        FamInfo[idx][fVehCol1][1],
        FamInfo[idx][fVehCol1][2],
        FamInfo[idx][fVehCol1][3],
        FamInfo[idx][fVehCol1][4],
        FamInfo[idx][fVehCol2][0],
        FamInfo[idx][fVehCol2][1],
        FamInfo[idx][fVehCol2][2],
        FamInfo[idx][fVehCol2][3],
        FamInfo[idx][fVehCol2][4]);
        if(idx == 1)
        {
            file = fopen("families.cfg", io_write);
        }
        else
        {
            file = fopen("families.cfg", io_append);
        }
        fwrite(file, string);
        fclose(file);
        idx++;
    }
    print("Families saved successfully.");
}

stock LoadFamilies()
{
    new finfo[66][48];
    new string[512];
    new File:file = fopen("families.cfg", io_read);
    if(file)
    {
        new idx = 1;
        while(idx < MAX_FAMILIES)
        {
            fread(file, string);
            split(string, finfo, '|');
            FamInfo[idx][fTaken] = strval(finfo[0]);
            format(FamInfo[idx][fName], 32, "%s", finfo[1]);
            format(FamInfo[idx][fMOTD], 64, "%s", finfo[2]);
            FamInfo[idx][fColor] = strval(finfo[3]);
            format(FamInfo[idx][fLeader], MAX_PLAYER_NAME, "%s", finfo[4]);
            FamInfo[idx][fMembers] = strval(finfo[5]);
            FamInfo[idx][fSafeX] = floatstr(finfo[6]);
            FamInfo[idx][fSafeY] = floatstr(finfo[7]);
            FamInfo[idx][fSafeZ] = floatstr(finfo[8]);
            FamInfo[idx][fMoney] = strval(finfo[9]);
            FamInfo[idx][fMats] = strval(finfo[10]);
            FamInfo[idx][fWeed] = strval(finfo[11]);
            FamInfo[idx][fHeroin] = strval(finfo[12]);
            FamInfo[idx][fSyringe] = strval(finfo[13]);
            FamInfo[idx][fOpium] = strval(finfo[14]);
            FamInfo[idx][fcocaine] = strval(finfo[15]);
            FamInfo[idx][fSeeds] = strval(finfo[16]);
            format(FamInfo[idx][fRank1], 32, "%s", finfo[17]);
            format(FamInfo[idx][fRank2], 32, "%s", finfo[18]);
            format(FamInfo[idx][fRank3], 32, "%s", finfo[19]);
            format(FamInfo[idx][fRank4], 32, "%s", finfo[20]);
            format(FamInfo[idx][fRank5], 32, "%s", finfo[21]);
            format(FamInfo[idx][fRank6], 32, "%s", finfo[22]);
            FamInfo[idx][fSkins][0] = strval(finfo[23]);
            FamInfo[idx][fSkins][1] = strval(finfo[24]);
            FamInfo[idx][fSkins][2] = strval(finfo[25]);
            FamInfo[idx][fSkins][3] = strval(finfo[26]);
            FamInfo[idx][fSkins][4] = strval(finfo[27]);
            FamInfo[idx][fSkins][5] = strval(finfo[28]);
            FamInfo[idx][fSkins][6] = strval(finfo[29]);
            FamInfo[idx][fStrikes] = strval(finfo[30]);
            FamInfo[idx][fVehType][0] = strval(finfo[31]);
            FamInfo[idx][fVehType][1] = strval(finfo[32]);
            FamInfo[idx][fVehType][2] = strval(finfo[33]);
            FamInfo[idx][fVehType][3] = strval(finfo[34]);
            FamInfo[idx][fVehType][4] = strval(finfo[35]);
            FamInfo[idx][fVehCoX][0] = floatstr(finfo[36]);
            FamInfo[idx][fVehCoY][0] = floatstr(finfo[37]);
            FamInfo[idx][fVehCoZ][0] = floatstr(finfo[38]);
            FamInfo[idx][fVehCoX][1] = floatstr(finfo[39]);
            FamInfo[idx][fVehCoY][1] = floatstr(finfo[40]);
            FamInfo[idx][fVehCoZ][1] = floatstr(finfo[41]);
            FamInfo[idx][fVehCoX][2] = floatstr(finfo[42]);
            FamInfo[idx][fVehCoY][2] = floatstr(finfo[43]);
            FamInfo[idx][fVehCoZ][2] = floatstr(finfo[44]);
            FamInfo[idx][fVehCoX][3] = floatstr(finfo[45]);
            FamInfo[idx][fVehCoY][3] = floatstr(finfo[46]);
            FamInfo[idx][fVehCoZ][3] = floatstr(finfo[47]);
            FamInfo[idx][fVehCoX][4] = floatstr(finfo[48]);
            FamInfo[idx][fVehCoY][4] = floatstr(finfo[49]);
            FamInfo[idx][fVehCoZ][4] = floatstr(finfo[50]);
            FamInfo[idx][fVehRot][0] = strval(finfo[51]); // Rot
            FamInfo[idx][fVehRot][1] = strval(finfo[52]);
            FamInfo[idx][fVehRot][2] = strval(finfo[53]);
            FamInfo[idx][fVehRot][3] = strval(finfo[54]);
            FamInfo[idx][fVehRot][4] = strval(finfo[55]);
            FamInfo[idx][fVehCol1][0] = strval(finfo[56]); // Colors
            FamInfo[idx][fVehCol1][1] = strval(finfo[57]);
            FamInfo[idx][fVehCol1][2] = strval(finfo[58]);
            FamInfo[idx][fVehCol1][3] = strval(finfo[59]);
            FamInfo[idx][fVehCol1][4] = strval(finfo[60]);
            FamInfo[idx][fVehCol2][0] = strval(finfo[61]);
            FamInfo[idx][fVehCol2][1] = strval(finfo[62]);
            FamInfo[idx][fVehCol2][2] = strval(finfo[63]);
            FamInfo[idx][fVehCol2][3] = strval(finfo[64]);
            FamInfo[idx][fVehCol2][4] = strval(finfo[65]);

            if(FamInfo[idx][fSafeX] != 0 && FamInfo[idx][fSafeY] != 0 && FamInfo[idx][fSafeZ] != 0)
            {
                FamInfo[idx][fPickup] = CreateDynamicPickup(1239, 1, FamInfo[idx][fSafeX], FamInfo[idx][fSafeY], FamInfo[idx][fSafeZ], -1);
                format(string, sizeof(string), "%s's Safe", FamInfo[idx][fName]);
                FamInfo[idx][fText] = CreateDynamic3DTextLabel(string, COLOR_WHITE, FamInfo[idx][fSafeX], FamInfo[idx][fSafeY], FamInfo[idx][fSafeZ]+0.3, 15);
            }
            for(new i=0; i<5; i++)
            {
                if(FamInfo[idx][fVehType][i])
                {
                    FamInfo[idx][fVeh][i] = CreateVehicle(FamInfo[idx][fVehType][i], FamInfo[idx][fVehCoX][i], FamInfo[idx][fVehCoY][i], FamInfo[idx][fVehCoZ][i], FamInfo[idx][fVehRot][i], FamInfo[idx][fVehCol1][i], FamInfo[idx][fVehCol2][i], 1200);
                    ChangeVehicleColor(FamInfo[idx][fVeh][i], FamInfo[idx][fVehCol1][i], FamInfo[idx][fVehCol2][i]);
                    Fam[FamInfo[idx][fVeh][i]] = idx;
                }
            }
            idx++;
        }
    }
    print("Families loaded successfully.");
    return 1;
}

Create code:
pawn Код:
CMD:fcreate(playerid, params[])
{
    new string[128], playerb, idx;
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(!aDuty[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You are not on duty as an administrator!");
    if(PlayerInfo[playerid][pAdmin] < 4 && !PlayerInfo[playerid][pGangMod]) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
    if(sscanf(params, "ui", playerb, idx)) return SendClientMessage(playerid, COLOR_WHITE, "[Usage]: /fcreate [playerid] [slot]");
    if(!IsPlayerLoggedIn(playerb)) return SendClientMessage(playerid, COLOR_GREY, "Invalid player id.");
    if(idx < 1 || idx > 10) return SendClientMessage(playerid, COLOR_GREY, "Families are between 1 and 10.");
    if(FamInfo[idx][fTaken]) return SendClientMessage(playerid, COLOR_GREY, "Family slot is already in use.");
    FamInfo[idx][fTaken] = 1;
    FamInfo[idx][fMembers] ++;
    PlayerInfo[playerb][pFam] = idx;
    PlayerInfo[playerb][pFamRank] = 6;
    FamInfo[idx][fStrikes] = 0;
    format(FamInfo[idx][fLeader], MAX_PLAYER_NAME, "%s", RPN(playerb));
    format(string, sizeof(string), "New York Undergrounds: %s has given %s family slot %d.", RPN(playerid), RPN(playerb), idx);
    SendAdminMessage(COLOR_GREEN, 1, string);
    Log("logs/families.log", string);
    format(string, sizeof(string), " %s has given you family slot {33AA33}%d {33CCFF}ownership.", RPN(playerid), idx);
    SendClientMessage(playerb, COLOR_LIGHTBLUE, string);
    return 1;
}
Any feedback is appreciated!
Reply
#2

I don't get you man, sorry.
You want to create a Gang Zone System, like a Territory System?
Or just create colored Gang Zones into your radar?
Reply
#3

If you dont have dynamic gangzone system that gets automatically associated with the family, then you have to script it individually for each family as per wish.
Reply
#4

Yeah, I want to create a gangzone system which is captureable by the dynamic families.. I have a point system implented, could I possibly add the turfs to that system?

Point sys:
pawn Код:
enum pointInfo
{
    pName[32],
    pTime,
    pOwner,
    Float:pX,
    Float:pY,
    Float:pZ,
    pProfit,
    pPickup,
    Text3D:pText
}
new PointInfo[MAX_POINTS][pointInfo];

stock SavePoints()
{
    new idx = 0, File:file;
    new string[256];
    while(idx < MAX_POINTS)
    {
        format(string, sizeof(string), "%s|%d|%d|%f|%f|%f|%d\r\n",
        PointInfo[idx][pName],
        PointInfo[idx][pTime],
        PointInfo[idx][pOwner],
        PointInfo[idx][pX],
        PointInfo[idx][pY],
        PointInfo[idx][pZ],
        PointInfo[idx][pProfit]);
        if(idx == 0)
        {
            file = fopen("points.cfg", io_write);
        }
        else
        {
            file = fopen("points.cfg", io_append);
        }
        fwrite(file, string);
        fclose(file);
        idx++;
    }
    print("Points saved successfully.");
}

stock LoadPoints()
{
    new dinfo[7][128];
    new string[256];
    new File:file = fopen("points.cfg", io_read);
    if(file)
    {
        new idx = 0;
        while(idx < MAX_POINTS)
        {
            fread(file, string);
            split(string, dinfo, '|');
            format(PointInfo[idx][pName], 32, "%s", dinfo[0]);
            PointInfo[idx][pTime] = strval(dinfo[1]);
            PointInfo[idx][pOwner] = strval(dinfo[2]);
            PointInfo[idx][pX] = floatstr(dinfo[3]);
            PointInfo[idx][pY] = floatstr(dinfo[4]);
            PointInfo[idx][pZ] = floatstr(dinfo[5]);
            PointInfo[idx][pProfit] = strval(dinfo[6]);
            if(!PointInfo[idx][pTime]) // If point time is 0
            {
                DestroyDynamicPickup(PointInfo[idx][pPickup]);
                DestroyDynamic3DTextLabel(PointInfo[idx][pText]);
                PointInfo[idx][pProfit] = 0;
                PointInfo[idx][pText] = CreateDynamic3DTextLabel("Point\n/capture", COLOR_WHITE, PointInfo[idx][pX], PointInfo[idx][pY], PointInfo[idx][pZ]+0.3, 15);
                format(string, sizeof(string), "The {00FF00}%s {FF6347}is available to be captured.", PointInfo[idx][pName]);
                SendClientMessageToAll(COLOR_LIGHTRED, string);
            }
            idx++;
        }
    }
    print("Points loaded successfully.");
    return 1;
}


Point capture:
pawn Код:
CMD:capture(playerid, params[])
{
    new string[128], done;
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(PlayerInfo[playerid][pFamRank] < 5) return SendClientMessage(playerid, COLOR_GREY, "You are not a family leader.");
    for(new idx = 0; idx < MAX_POINTS; idx++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1, PointInfo[idx][pX], PointInfo[idx][pY], PointInfo[idx][pZ]))
        {
            if(PointInfo[idx][pTime] > 1) return SendClientMessage(playerid, COLOR_GREY, "Please wait for the point time to cool down.");
            if(Capturing) return SendClientMessage(playerid, COLOR_GREY, "Please wait for the point capturing to cool down.");
            format(string, sizeof(string), " %s is attempting to capture the %s.", RPN(playerid), PointInfo[idx][pName]);
            SendNearbyMessage(playerid, 30, string, COLOR_ORANGE, COLOR_ORANGE, COLOR_ORANGE, COLOR_ORANGE, COLOR_ORANGE);
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "Stay in your position for 10 seconds to make the capture attempt succeed.");
            Capturing = 1;
            GetPlayerPos(playerid, Capture[0], Capture[1], Capture[2]);
            Capturer = playerid;
            CapturerFam = idx;
            SetTimerEx("CapturePoint", 10000, false, "dd", Capturer, CapturerFam);
            done = 1;
            break;
        }
    }
    if(!done) SendClientMessage(playerid, COLOR_GREY, "You are not near a capturable point.");
    return 1;
}

The point system is combined with the family system...
Reply
#5

Use YSF Plugin. It has awesome functions for GangZones.

pawn Код:
native IsValidGangZone(zoneid);
native IsPlayerInGangZone(playerid, zoneid);
native IsGangZoneVisibleForPlayer(playerid, zoneid);
native GangZoneGetColorForPlayer(playerid, zoneid);
native GangZoneGetFlashColorForPlayer(playerid, zoneid);
native GangZoneGetPos(zoneid, &Float:fMinX, &Float:fMinY, &Float:fMaxX, &Float:fMaxY);

// Callbacks
forward OnPlayerEnterGangZone(playerid, zoneid);
forward OnPlayerLeaveGangZone(playerid, zoneid);
Reply
#6

Quote:
Originally Posted by icra
Посмотреть сообщение
I don't get you man, sorry.
You want to create a Gang Zone System, like a Territory System?
Or just create colored Gang Zones into your radar?
I would appreciate an example on how to make a gangzones without using teams.
And please, do not link a guide.. they all contain teams.
Reply
#7

bump
Reply
#8

I think lets start here:
pawn Код:
new TEAM1;
TEAM1= GangZoneCreate(1248.011, 2072.804, 1439.348, 2204.319);
//example
But you need know xmin, ymin and xmax,ymax
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)