08.06.2014, 15:45
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:
Create code:
Any feedback is appreciated!
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;
}