SERVER:Unknown command.
#1

hi guys
have some problems
PHP код:
SERVER:Unknown command. 
i download many FS there this problem too
i dont know why but trust me
i have all inc and plugin updated
and i load it in server.cfg i dont know why i get this error
PHP код:
SERVER:Unknown command. 
Reply
#2

Hello!

Which command processor do you use?
Do you use this in the filterscripts too?
Reply
#3

It may be a simple case of a filterscript returning first, because well.. they're loaded/processed first.

Check your filterscripts for 'OnPlayerCommandText' and change the 'return 1;' right at the very bottom to 'return 0;'
Reply
#4

Quote:
Originally Posted by Mencent
Посмотреть сообщение
Hello!

Which command processor do you use?
Do you use this in the filterscripts too?
i use this fs
PHP код:
/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++######+++++++++########++++########+++++##++++##+++
+++########++++++##########+++#########++++##+++##++++
+++##+++++##++++##++++++++##++##++++++##+++##++##+++++
+++##++++++##+++##++++++++##++##+++++++##++##+##++++++
+++##+++++++##++##++++++++##++##########+++####+++++++
+++##++++++##+++############++##++##+++++++##+##++++++
+++##+++++##++++##++++++++##++##+++##++++++##++##+++++
+++########+++++##++++++++##++##++++##+++++##+++##++++
+++######+++++++##++++++++##++##+++++##++++##++++#++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
#define FILTERSCRIPT
#include <a_samp>
#include <streamer>
#include <Dini>
#include <sscanf2>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOR_ROSSO          0xFF0000FF
#define COLOR_FUCSIA        0x9900FFFF
#define COLOR_BLU            0x0000FFFF
#define COLOR_CELESTE        0x00BFFFFF
#define COLOR_VERDE          0x00FF00FF
#define COLOR_VERDEACQUA     0x00FF99FF
#define COLOR_GIALLO         0xFFFF00FF
#define COLOR_ARANCIONE      0xFF9900FF
#define COLOR_MARRONE        0x663300FF
#define COLOR_ROSA           0xFF6666FF
#define COLOR_SALMONE        0xFF9966FF
#define COLOR_NERO           0x000000FF
#define COLOR_GRIGIO        0x4F5152FF
#define COLOR_BIANCO         0xFFFFFFFF
#define GCOLOR_ROSSO          0xFF0000BB
#define GCOLOR_FUCSIA        0x9900FFBB
#define GCOLOR_BLU            0x0000FFBB
#define GCOLOR_CELESTE        0x00BFFFBB
#define GCOLOR_VERDE          0x00FF00BB
#define GCOLOR_VERDEACQUA     0x00FF99BB
#define GCOLOR_GIALLO         0xFFFF00BB
#define GCOLOR_ARANCIONE      0xFF9900BB
#define GCOLOR_MARRONE        0x663300BB
#define GCOLOR_ROSA           0xFF6666BB
#define GCOLOR_SALMONE        0xFF9966BB
#define GCOLOR_NERO           0x000000BB
#define GCOLOR_GRIGIO        0x4F5152BB
#define GCOLOR_BIANCO         0xFFFFFFBB
#define DIALOG_GANGCREATE     73
#define DIALOG_GANGCOLOUR     74
#define DIALOG_GANGINVITE     75
#define DIALOG_GANGKICK     76
#define DIALOG_GANGPICKUP     77
#define DIALOG_GANGTAG         78
#define DIALOG_PAYMENT      79
#define MAX_ZONES 64            //Max zones
#define MAX_GANGS 20            //Max gangs
#define MAX_MEMBERS 15          //Max Gang's members
#define MAX_GVEHICLES 3         //Max Vehicle for a zone
#define GANG_CASH_ICON_ID 0
#define AllowDecreaseTotKills true //If it is true, when a player in a gang death, the player's gang TotKills will decrease
#define MembersForConq 3        //Members needed to conquer a gangzone
#define TimeForConq 60000       //Time in milliseconds to conquire a gangzone
#define MoneyAfterConq 2500     //Will give this value at all members who conquired a zone
#define TimerAddCash 60000      //Every this time, the gangzone will receve the value AddCash
#define AddCash 25              //influeced by TimerAddCash: Every that time, the cash of gang zones will increased with this value
#define mapiconid 0
#define GangPayDay 12           //Expressed in hour (Will give gang money on this hour of the day at the members, default: 12:00)
#define GangCFGFile      "M3_Server/GangFS/Gang.cfg"         //Create a little Info about Gang and Zones created
#define GangIDFile      "M3_Server/GangFS/Gangs/%d.cfg"     //Storage the gang file
#define GangZoneFile    "M3_Server/GangFS/Zones/%d.cfg"     //Storage the zone file
#define GangUserFile    "M3_Server/GangFS/Users/%s.ini"     //Storage User file (Of gang system)
#define UserBankFile    "M3_Server/GangFS/Users/%s.ini"     //Storage the cash of the payday's Player (Important to change it if you have an another folder for your Bank System)
new TotGang,
    
TotZone,
    
TotVeh;
new 
Float: ZonePos[2][3],
    
bool: CreatingZone;
new 
Invaders[MAX_GANGS][MAX_ZONES];
new 
GangTimer[MAX_GANGS][MAX_ZONES];
new 
TimerCash;
enum ZONE_INFO_MAIN
{
    
ID,
    
GZID,
    
CKID,
    
OfGangID,
    
Float: PosX1,
    
Float: PosY1,
    
Float: PosX2,
    
Float: PosY2,
    
Color,
    
Float: PickX,
    
Float: PickY,
    
Float: PickZ,
    
PickUp,
    
PickUpCash,
    
Text3D: Label
}
new 
ZoneInfo[MAX_ZONES][ZONE_INFO_MAIN];
enum GANG_INFO_MAIN
{
    
GangID,
    
GangName[255],
    
Tag[255],
    
Color,
    
Owner[255],
    
Bank,
    
Members,
    
TotConqZ,
    
TotKills,
    
VehModel,
    
VehCol1,
    
VehCol2
}
new 
GangInfo[MAX_GANGS][GANG_INFO_MAIN];
enum MEMBER_INFO_MAIN
{
    
Name[255],
    
Percentage
}
new 
MemberInfo[MAX_GANGS][MAX_MEMBERS][MEMBER_INFO_MAIN];
enum gVehicle
{
    
VehID,
    
Float: PosX,
    
Float: PosY,
    
Float: PosZ,
    
Float: Angle
}
new 
GangVehicle[MAX_ZONES][MAX_GVEHICLES][gVehicle];
enum PLAYER_INFO_MAIN
{
    
GangID,
    
bool:GangOwner,
    
InvitedByGang,
    
bool:Invader,
    
idarea0,
    
idarea1
}
new 
PlayerInfo[MAX_PLAYERS][PLAYER_INFO_MAIN];
new 
VehicleNames[][] =
{
    
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
    
"Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    
"Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    
"Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
    
"Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
    
"Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
    
"Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster A", "Admiral",
    
"Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
    
"Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
    
"Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
    
"Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
    
"Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
    
"Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
    
"Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring A", "Sandking",
    
"Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
    
"Hotring B", "Hotring C", "Bloodring Banger", "Rancher", "Super GT",
    
"Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
    
"Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
    
"FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
    
"Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
    
"Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
    
"Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
    
"Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
    
"Windsor", "Monster B", "Monster C", "Uranus", "Jester", "Sultan", "Stratium",
    
"Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    
"Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
    
"Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
    
"News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    
"Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police LS",
    
"Police SF", "Police LV", "Police Ranger", "Picador", "SWAT", "Alpha",
    
"Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
    
"Tiller", "Utility Trailer"
};
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    
//Carica le gang
    
SetTimer("CheckGangPayDayTime", 1000, true);
    new 
GangFile[255], SlotFile[255];
    for(new 
gangid = 0; gangid < MAX_GANGS; gangid++)
    {
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        if(
dini_Exists(GangFile))
        {
               
GangInfo[gangid][GangID] = dini_Int(GangFile, "GangID");
            
GangInfo[gangid][GangName] = dini_Get(GangFile, "Name");
            
GangInfo[gangid][Tag] = dini_Get(GangFile, "Tag");
            
GangInfo[gangid][Owner] = dini_Get(GangFile, "Owner");
            
GangInfo[gangid][Color] = dini_Int(GangFile, "Color");
            
GangInfo[gangid][Members] = dini_Int(GangFile, "Members");
            
GangInfo[gangid][TotConqZ] = dini_Int(GangFile, "TotConqZ");
            
GangInfo[gangid][TotKills] = dini_Int(GangFile, "TotKills");
            
GangInfo[gangid][VehModel] = dini_Int(GangFile, "VehModel");
            
GangInfo[gangid][VehCol1] = dini_Int(GangFile, "VehCol1");
            
GangInfo[gangid][VehCol2] = dini_Int(GangFile, "VehCol2");
            
            for(new 
slotid; slotid < MAX_PLAYERS; slotid++)
            {
                
format(SlotFile, sizeof(SlotFile), "Member_%d", slotid);
                
MemberInfo[gangid][slotid][Name] = dini_Get(GangFile, SlotFile);
                
                
format(SlotFile, sizeof(SlotFile), "MemberCash_%d", slotid);
                
MemberInfo[gangid][slotid][Percentage] = dini_Int(GangFile, SlotFile);
            }
            
            
TotGang ++;
        }
    }
    
//Carica le GangZone
    
new ZoneFile[255];
    for(new 
zoneid = 1; zoneid < MAX_ZONES; zoneid++)
    {
        
format(ZoneFile,sizeof(ZoneFile),GangZoneFile, zoneid);
        if(
dini_Exists(ZoneFile))
        {
            
ZoneInfo[zoneid][ID] = dini_Int(ZoneFile,"ZoneID");
            
ZoneInfo[zoneid][OfGangID] = dini_Int(ZoneFile,"OfGangID");
            
ZoneInfo[zoneid][PosX1] = dini_Float(ZoneFile,"X1");
            
ZoneInfo[zoneid][PosY1] = dini_Float(ZoneFile,"Y1");
            
ZoneInfo[zoneid][PosX2] = dini_Float(ZoneFile,"X2");
            
ZoneInfo[zoneid][PosY2] = dini_Float(ZoneFile,"Y2");
            
ZoneInfo[zoneid][ID] = zoneid;
               
ZoneInfo[zoneid][GZID] = GangZoneCreate(ZoneInfo[zoneid][PosX1], ZoneInfo[zoneid][PosY1], ZoneInfo[zoneid][PosX2], ZoneInfo[zoneid][PosY2]);
               if(
ZoneInfo[zoneid][OfGangID] == -1)
               {
                   for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
                   {
                       if(
IsPlayerConnected(playerid)) GangZoneShowForPlayer(playerid, ZoneInfo[zoneid][GZID], GCOLOR_GRIGIO);
                }
            }
            else
            {
                
format(GangFile, sizeof(GangFile), GangIDFile, ZoneInfo[zoneid][OfGangID]);
                if(
dini_Exists(GangFile))
                {
                    for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
                       {
                           if(
IsPlayerConnected(playerid)) GangZoneShowForPlayer(playerid, ZoneInfo[zoneid][GZID], GangInfo[ZoneInfo[zoneid][OfGangID]][Color]);
                    }
                }
                else
                {
                    for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
                       {
                           if(
IsPlayerConnected(playerid)) GangZoneShowForPlayer(playerid, ZoneInfo[zoneid][GZID], GCOLOR_GRIGIO);
                    }
                    
dini_IntSet(ZoneFile,"OfGangID", -1);
                    
ZoneInfo[zoneid][OfGangID] = -1;
                }
            }
            
ZoneInfo[zoneid][CKID] = CreateDynamicRectangle(ZoneInfo[zoneid][PosX1], ZoneInfo[zoneid][PosY1], ZoneInfo[zoneid][PosX2], ZoneInfo[zoneid][PosY2]);
            
TotZone ++;
            
ZoneInfo[zoneid][PickX] = dini_Float(ZoneFile,"PickX");
            
ZoneInfo[zoneid][PickY] = dini_Float(ZoneFile,"PickY");
            
ZoneInfo[zoneid][PickZ] = dini_Float(ZoneFile,"PickZ");
            
ZoneInfo[zoneid][PickUpCash] = dini_Int(ZoneFile,"Cash");
            
ZoneInfo[zoneid][PickUp] = CreatePickup(1274, 1, ZoneInfo[zoneid][PickX], ZoneInfo[zoneid][PickY], ZoneInfo[zoneid][PickZ]);
            new 
txt[50];
            
format(txt, sizeof(txt), "Money\n%d$", ZoneInfo[zoneid][PickUpCash]);
            
ZoneInfo[zoneid][Label] = Create3DTextLabel(txt, COLOR_VERDE, ZoneInfo[zoneid][PickX], ZoneInfo[zoneid][PickY], ZoneInfo[zoneid][PickZ]+0.5, 10, 0, 0);
            for(new 
gvehicleid; gvehicleid < MAX_GVEHICLES; gvehicleid++)
            {
                new 
strX[16], strY[16], strZ[16], strAngle[16];
                
format(strX, sizeof(strX), "Veh%d_X", gvehicleid);
                
format(strY, sizeof(strY), "Veh%d_Y", gvehicleid);
                
format(strZ, sizeof(strZ), "Veh%d_Z", gvehicleid);
                
format(strAngle, sizeof(strAngle), "Veh%d_Ang", gvehicleid);
                
GangVehicle[zoneid][gvehicleid][PosX] = dini_Float(ZoneFile, strX);
                
GangVehicle[zoneid][gvehicleid][PosY] = dini_Float(ZoneFile, strY);
                
GangVehicle[zoneid][gvehicleid][PosZ] = dini_Float(ZoneFile, strZ);
                
GangVehicle[zoneid][gvehicleid][Angle] = dini_Float(ZoneFile, strAngle);
                if(
ZoneInfo[zoneid][OfGangID] != -1)
                {
                    new 
gangid = ZoneInfo[zoneid][OfGangID], gPlate[8];
                    if(
GangInfo[gangid][VehModel] >= 400 && GangInfo[gangid][VehModel] <= 609 && GangVehicle[zoneid][gvehicleid][PosX] != 0)
                    {
                        new 
vehiclemodel = GangInfo[gangid][VehModel], col1 = GangInfo[gangid][VehCol1], col2 = GangInfo[gangid][VehCol2];
                        
GangVehicle[zoneid][gvehicleid][VehID] = CreateVehicle(vehiclemodel, GangVehicle[zoneid][gvehicleid][PosX], GangVehicle[zoneid][gvehicleid][PosY], GangVehicle[zoneid][gvehicleid][PosZ], GangVehicle[zoneid][gvehicleid][Angle], col1, col2, 1800000);
                        
format(gPlate, sizeof(gPlate), "[%s]-%d", GangInfo[gangid][Tag], gvehicleid);
                        
SetVehicleNumberPlate(GangVehicle[zoneid][gvehicleid][VehID], gPlate);
                        
                        
TotVeh++;
                    }
                }
            }
        }
    }
    
    
TimerCash = SetTimer("AddCashInPickUp", TimerAddCash, true);
    for(new 
gangid = 0; gangid < MAX_GANGS; gangid++)
    {
        for(new 
zoneid = 0; zoneid < MAX_ZONES; zoneid++)
        {
            
Invaders[gangid][zoneid] = 0;
        }
    }
     
//Carica l'UserFile se il giocatore и connesso
     
new UserFile[255], pName[MAX_PLAYER_NAME];
     for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
     {
         if(
IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
         {
             
PlayerInfo[playerid][InvitedByGang] = -1;
            
GetPlayerName(playerid, pName, sizeof(pName));
            
format(UserFile,sizeof(UserFile),GangUserFile, pName);
            if(!
dini_Exists(UserFile))
            {
                
dini_Create(UserFile);
                
dini_IntSet(UserFile,"GangID", -1);
                
dini_BoolSet(UserFile,"GangOwner", false);
               }
               
PlayerInfo[playerid][GangID] = dini_Int(UserFile,"GangID");
               
PlayerInfo[playerid][GangOwner] = dini_Bool(UserFile,"GangOwner");
               
//controlla se la gang del player esiste
               
format(GangFile, sizeof(GangFile), GangIDFile, PlayerInfo[playerid][GangID]);
            if(!
dini_Exists(GangFile))
            {
                
PlayerInfo[playerid][GangID] = -1;
                   
PlayerInfo[playerid][GangOwner] = false;
            }
        }
    }
    
//visualizza nel log/console quante GangZone e Gang sono state caricate
    
print("\n--------------------------------------");
    print(
"Gang system By DarK_FeneR Loaded");
    
printf("Zones loaded: %d", TotZone);
    
printf("Gangs loaded: %d", TotGang);
    
printf("Vehicles loaded: %d", TotVeh);
    print(
"--------------------------------------\n");
    return 
1;
}
public 
OnFilterScriptExit()
{
    
//Distrugge GangZone
    
for(new zoneid = 1; zoneid < MAX_ZONES; zoneid++)
    {
        
GangZoneDestroy(ZoneInfo[zoneid][GZID]);
        
DestroyDynamicArea(ZoneInfo[zoneid][CKID]);
        
DestroyPickup(ZoneInfo[zoneid][PickUp]);
        
Delete3DTextLabel(ZoneInfo[zoneid][Label]);
    }
    
KillTimer(TimerCash);
    
//salva gli userfile se il giocatore и connesso
    
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
        new 
GangFile[255], pName[MAX_PLAYER_NAME];
        
GetPlayerName(playerid, pName, sizeof(pName));
        
format(GangFile,sizeof(GangFile),GangUserFile, pName);
        if(
dini_Exists(GangFile))
        {
            
dini_Create(GangFile);
            
dini_IntSet(GangFile,"GangID", PlayerInfo[playerid][GangID]);
            
dini_BoolSet(GangFile,"GangOwner", PlayerInfo[playerid][GangOwner]);
           }
    }
    return 
1;
}
#else
main()
{
    print(
"\n----------------------------------");
    print(
" Blank Gamemode by your name here");
    print(
"----------------------------------\n");
}
#endif
public OnPlayerRequestClass(playerid, classid)
{
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
//carica l'UserFile
    
new UserFile[255], pName[MAX_PLAYER_NAME];
    
GetPlayerName(playerid, pName, sizeof(pName));
    
format(UserFile,sizeof(UserFile),GangUserFile, pName);
    if(!
dini_Exists(UserFile))
    {
        
dini_Create(UserFile);
        
dini_IntSet(UserFile,"GangID", -1);
        
dini_BoolSet(UserFile,"GangOwner", false);
       }
       
PlayerInfo[playerid][GangID] = dini_Int(UserFile,"GangID");
       
PlayerInfo[playerid][GangOwner] = dini_Bool(UserFile,"GangOwner");
    return 
1;
}
public 
OnPlayerDisconnect(playerid, reason)
{
    
//salva l'UserFile
    
new GangFile[255], pName[MAX_PLAYER_NAME];
    
GetPlayerName(playerid, pName, sizeof(pName));
    
format(GangFile,sizeof(GangFile),GangUserFile, pName);
    if(
dini_Exists(GangFile))
    {
        
dini_Create(GangFile);
        
dini_IntSet(GangFile,"GangID", PlayerInfo[playerid][GangID]);
        
dini_BoolSet(GangFile,"GangOwner", PlayerInfo[playerid][GangOwner]);
       }
    return 
1;
}
public 
OnPlayerSpawn(playerid)
{
    if(
PlayerInfo[playerid][GangID] != -1) SetPlayerColor(playerid, GangInfo[PlayerInfo[playerid][GangID]][Color]); //setta il colore della gang al player se и in qualche gang
    //fa visualizzare le GangZone al player che si и connesso
       
new ZoneFile[255];
       for(new 
zoneid = 1; zoneid < MAX_ZONES; zoneid++)
    {
        
format(ZoneFile,sizeof(ZoneFile),GangZoneFile, zoneid);
        if(
dini_Exists(ZoneFile))
        {
               if(
ZoneInfo[zoneid][OfGangID] == -1)
               {
                
GangZoneShowForPlayer(playerid, ZoneInfo[zoneid][GZID], GCOLOR_GRIGIO);
            }
            else
            {
                
GangZoneShowForPlayer(playerid, ZoneInfo[zoneid][GZID], GangInfo[ZoneInfo[zoneid][OfGangID]][Color]);
            }
           }
    }
    return 
1;
}
public 
OnPlayerDeath(playerid, killerid, reason)
{
    if(
PlayerInfo[killerid][GangID] != -1 && PlayerInfo[playerid][GangID] != -1)
    {
        
//increase TotKills to killer's gang
        
new gangid = PlayerInfo[killerid][GangID], GangFile[255];
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        
dini_IntSet(GangFile, "TotKills", GangInfo[gangid][TotKills]++);
        
GangInfo[gangid][TotKills] = dini_Int(GangFile, "TotKills");
        
        
#if AllowDecreaseTotKills == true
        //decrease TotKills to killed's gang
        
gangid = PlayerInfo[playerid][GangID];
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        
dini_IntSet(GangFile, "TotKills", GangInfo[gangid][TotKills]++);
        
GangInfo[gangid][TotKills] = dini_Int(GangFile, "TotKills");
        
#endif
    
}
    return 
1;
}
public 
OnVehicleSpawn(vehicleid)
{
    return 
1;
}
public 
OnVehicleDeath(vehicleid, killerid)
{
    return 
1;
}
public 
OnPlayerText(playerid, text[])
{
    if(
text[0] == '!' && PlayerInfo[playerid][GangID] != -1)
    {
        if(
strlen(text) < 2) return 1;
        new 
string[128];
        new 
name[MAX_PLAYER_NAME];
        new 
gangid = PlayerInfo[playerid][GangID];
        
GetPlayerName(playerid, name, sizeof(name));
        
format(string, sizeof(string), "[GANG][%s: %s]", name, text[1]);
        for(new 
p = 0; p < MAX_PLAYERS; p++)
        {
            if(
IsPlayerConnected(p) && PlayerInfo[p][GangID] == gangid) SendClientMessage(p, GangInfo[gangid][Color], string);
        }
        return 
0;
    }
    return 
1;
}
public 
OnPlayerCommandText(playerid, cmdtext[])
{
    
dcmd(g, 1, cmdtext);
    
dcmd(gang, 4, cmdtext);
    return 
0;
}
//gang inizio
dcmd_g(playerid, params[]) return dcmd_gang(playerid, params);
dcmd_gang(playerid, params[])
{
    new 
gcmd[32];
    if(
sscanf(params, "s[32]", gcmd))
    {
        
SendClientMessage(playerid, COLOR_ARANCIONE, "Use: /g(ang) <Type>");
        
SendClientMessage(playerid, COLOR_GIALLO, "_________________Gang System Commands_________________");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) info - Help the gang system");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) stats - Look at the details of the gang");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) top - See the score of the gangs");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) list - Generate a list of gang created along with the gang info");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) create - Create a new gang");
        if(
PlayerInfo[playerid][GangOwner] == true)
        {
            
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) tag - Set tag for the gang");
            
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) color - Select the color of the gang");
            
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) kick - Kick a member of the gang");
            
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) PaymentSet - Set the payday's percentage of a Member");
        }
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) invite - Invites a player to enter the gang");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) join - Get into the gang to which you have been invited");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) leave - Leave the gang");
        
SendClientMessage(playerid, COLOR_VERDE, "/g(ang) PaymentList - See percentage of all member's payday");
        
SendClientMessage(playerid, COLOR_GIALLO, "______________________________________________________");
        return 
1;
    }
    if(
strcmp("info", gcmd, true, sizeof(gcmd)) == 0)
    {
        
SendClientMessage(playerid, COLOR_GIALLO, "_________________Tutorial Gang System_________________");
        
SendClientMessage(playerid, COLOR_VERDE, "Conquest: In order to win GangZone must be at least 2");
        
SendClientMessage(playerid, COLOR_VERDE, "Conquest: If the GangZone is not nobody takes 30 seconds if you are already conquered two minutes");
        
SendClientMessage(playerid, COLOR_VERDE, "Earnings: Every conquest of GangZone receive Money");
        
SendClientMessage(playerid, COLOR_VERDE, "Earnings: The founder may collect the revenues of the zones (money) and can spartirli, HE WANTS");
        
SendClientMessage(playerid, COLOR_VERDE, "Earnings: Most areas have and the more money you'll get");
        
SendClientMessage(playerid, COLOR_VERDE, "Withdrawal revenues: The founder may withdraw the revenues going into a Pickup ($ symbol)");
        
SendClientMessage(playerid, COLOR_VERDE, "Withdrawal revenues: The Pickup can be found in all gangzone (PS: you can find inside interior sometimes");
        
SendClientMessage(playerid, COLOR_VERDE, "Gang Chat: Each gang has its own chat, to use it just type '!' + Text (eg '! Let's win?')");
          
SendClientMessage(playerid, COLOR_GIALLO, "______________________________________________________");
        return 
1;
    }
     if(
strcmp(gcmd, "create", true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangID] != -1) return SendClientMessage(playerid, COLOR_VERDE, "You're already in a gang, use /g(ang) leave to leave the gang");
        
ShowPlayerDialog(playerid, DIALOG_GANGCREATE, DIALOG_STYLE_INPUT, "Gang Create", "Input the nome of your new gang", "Ok", "Cancel");
        return 
1;
    }
     if(
strcmp("tag", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be founder of the gang!");
        
ShowPlayerDialog(playerid, DIALOG_GANGTAG, DIALOG_STYLE_INPUT, "Gang Tag", "Input the tag for your gang", "Ok", "Cancel");
        return 
1;
    }
    if(
strcmp("color", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be founder of the gang!");
        
ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "Change Gang Color", "{FF0000}Red\n{9900FF}Fuchsia\n{0000FF}Blue\n{0066FF}Light Blue\n{00FF00}Green\n{00FF99}Water Green\n{FFFF00}Yellow\n{FF9900}Orange\n{663300}Brown\n{FF6666}Pink\n{9900FF}Salmon", "Ok", "Cancel");
        return 
1;
    }
     if(
strcmp("zone", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "You need to be admin RCon to use this command!");
         if(
CreatingZone == false)
         {
            
GetPlayerPos(playerid, ZonePos[0][0], ZonePos[0][1], ZonePos[0][2]);
            
CreatingZone = true;
            
SendClientMessage(playerid, COLOR_GIALLO, "Redo the command in the other side to terminate the creation");
        }
        else
        {
            
CreatingZone = false;
            
GetPlayerPos(playerid, ZonePos[1][0], ZonePos[1][1], ZonePos[1][2]);
            for(new 
zoneid = 1; zoneid <= MAX_ZONES; zoneid++) //inizio controllo degli ID liberi
             
{
                new 
ZoneFile[255];
                 
format(ZoneFile,sizeof(ZoneFile),GangZoneFile, zoneid);
                 if(!
dini_Exists(ZoneFile))
                 {
                     
//salvataggio CFG
                     
new cfgFile[255];
                     
TotZone ++;
                    
format(cfgFile,sizeof(cfgFile),GangCFGFile);
                    
dini_Create(cfgFile);
                    
dini_IntSet(cfgFile,"TotZone", TotZone);
                    
//creazione zona
                    
format(ZoneFile,sizeof(ZoneFile),GangZoneFile, zoneid);
                    
dini_Create(ZoneFile);
                    
dini_IntSet(ZoneFile,"ZoneID", zoneid);
                     
dini_IntSet(ZoneFile,"OfGangID", -1);
                     if(
ZonePos[0][0] < ZonePos[1][0])
                    {
                        
dini_FloatSet(ZoneFile,"X1", ZonePos[0][0]);
                        
dini_FloatSet(ZoneFile,"X2", ZonePos[1][0]);
                    }
                    else
                    {
                        
dini_FloatSet(ZoneFile,"X1", ZonePos[1][0]);
                        
dini_FloatSet(ZoneFile,"X2", ZonePos[0][0]);
                    }
                    if(
ZonePos[0][1] < ZonePos[1][1])
                    {
                        
dini_FloatSet(ZoneFile,"Y1", ZonePos[0][1]);
                        
dini_FloatSet(ZoneFile,"Y2", ZonePos[1][1]);
                    }
                    else
                    {
                        
dini_FloatSet(ZoneFile,"Y1", ZonePos[1][1]);
                        
dini_FloatSet(ZoneFile,"Y2", ZonePos[0][1]);
                    }
                    
ZoneInfo[zoneid][ID] = dini_Int(ZoneFile,"ZoneID");
                    
ZoneInfo[zoneid][OfGangID] = dini_Int(ZoneFile,"OfGangID");
                    
ZoneInfo[zoneid][PosX1] = dini_Float(ZoneFile,"X1");
                    
ZoneInfo[zoneid][PosY1] = dini_Float(ZoneFile,"Y1");
                    
ZoneInfo[zoneid][PosX2] = dini_Float(ZoneFile,"X2");
                    
ZoneInfo[zoneid][PosY2] = dini_Float(ZoneFile,"Y2");
                    
ZoneInfo[zoneid][GZID] = GangZoneCreate(ZoneInfo[zoneid][PosX1], ZoneInfo[zoneid][PosY1], ZoneInfo[zoneid][PosX2], ZoneInfo[zoneid][PosY2]);
                    if(
ZoneInfo[zoneid][OfGangID] == -1)
                       {
                        
GangZoneShowForAll(ZoneInfo[zoneid][GZID], GCOLOR_GRIGIO);
                    }
                    else
                    {
                        
GangZoneShowForAll(ZoneInfo[zoneid][GZID], GangInfo[ZoneInfo[zoneid][OfGangID]][Color]);
                    }
                    
ZoneInfo[zoneid][CKID] = CreateDynamicRectangle(ZoneInfo[zoneid][PosX1], ZoneInfo[zoneid][PosY1], ZoneInfo[zoneid][PosX2], ZoneInfo[zoneid][PosY2]);
                    
//ferma il ciclo dopo la creazione gang
                    
zoneid = MAX_ZONES;
                }
            }
        }
        return 
1;
    }
    if(
strcmp("pickup", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "You need to be admin RCon to use this command!");
        
ShowPlayerDialog(playerid, DIALOG_GANGPICKUP, DIALOG_STYLE_INPUT, "PickUp Zone Create", "Input the ID of the zone to assign the Pickup", "Ok", "Cancel");
        return 
1;
    }
    if(
strcmp("stats", gcmd, true, sizeof(gcmd)) == 0)
    {
        new 
gangid = PlayerInfo[playerid][GangID];
        if(
gangid == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        new 
GangFile[255];
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        if(!
dini_Exists(GangFile)) return SendClientMessage(playerid, COLOR_ROSSO, "Gang doesn't exist! Il founder will abandoned the gang...");
        new 
MembriOn = 0;
        for(new 
l = 0; l < MAX_PLAYERS; l++)
        {
            if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == gangid) MembriOn ++;
        }
        new 
ZoneDellaGang = 0;
        new 
ZoneFile[255];
        for(new 
z = 0; z < MAX_ZONES; z++)
        {
            
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, z);
            if(
dini_Exists(ZoneFile)) if(ZoneInfo[z][OfGangID] == gangid) ZoneDellaGang ++;
        }
        new 
strENG[255];
        
format(strENG, sizeof(strENG), "ID: %d | Name: %s | Founder: %s | Conquired zones: %d | Online Members: %d", GangInfo[gangid][GangID], GangInfo[gangid][GangName], GangInfo[gangid][Owner], ZoneDellaGang, MembriOn);
        
SendClientMessage(playerid, GangInfo[gangid][Color], strENG);
        return 
1;
    }
    if(
strcmp("invite", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        new 
gangid = PlayerInfo[playerid][GangID];
        if(
GangInfo[gangid][Members] >= MAX_MEMBERS) return SendClientMessage(playerid, COLOR_ROSSO, "Gang reached maximum members");
        
ShowPlayerDialog(playerid, DIALOG_GANGINVITE, DIALOG_STYLE_INPUT, "Gang Invite", "Insert the ID of the Player to invite", "Ok", "Cancel");
        return 
1;
    }
    if(
strcmp("join", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangID] != -1) return SendClientMessage(playerid, COLOR_ROSSO, "Are you already part of a gang! Use / gang leave to leave the gang present");
        if(
PlayerInfo[playerid][InvitedByGang] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You have no invitation gang");
        new 
gangid = PlayerInfo[playerid][InvitedByGang];
        if(
GangInfo[gangid][Members] >= MAX_MEMBERS) return SendClientMessage(playerid, COLOR_ROSSO, "Gang reached maximum members");
        new 
GangFile[255], pName[MAX_PLAYER_NAME], strENG[255], SlotFile[255], slotid = CheckFreeGangSeat(gangid);
        
GetPlayerName(playerid, pName, sizeof(pName));
        
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        
format(SlotFile, sizeof(SlotFile), "Member_%d", slotid);
        
        
dini_Set(GangFile, SlotFile, pName);
        
MemberInfo[gangid][slotid][Name] = dini_Get(GangFile, SlotFile);
        
        if(
IsPlayerInAnyDynamicArea(playerid))
        {
            new 
zoneid = GetPlayerNumberDynamicAreas(playerid);
            
Invaders[gangid][zoneid] ++;
            if(
Invaders[gangid][zoneid] == MembersForConq)
            {
                for(new 
l = 0; l < MAX_PLAYERS; l++)
                {
                    if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == gangid)
                    {
                        
SendClientMessage(l, GangInfo[gangid][Color], "You are conquiring the zone");
                    }
                }
                
GangZoneFlashForAll(ZoneInfo[zoneid][GZID], GangInfo[gangid][Color]);
                if(
ZoneInfo[zoneid][OfGangID] != -1)
                {
                    
GangTimer[gangid][zoneid] = SetTimerEx("ConquistaGZ", TimeForConq, false, "ii", zoneid, gangid);
                }
                else
                {
                    
GangTimer[gangid][zoneid] = SetTimerEx("ConquistaGZ", TimeForConq/2, false, "ii", zoneid, gangid);
                }
                for(new 
l; l < MAX_PLAYERS; l++)
                {
                    if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == ZoneInfo[zoneid][OfGangID] && PlayerInfo[playerid][GangID] != ZoneInfo[zoneid][OfGangID] && PlayerInfo[l][GangID] != -1)
                    {
                        
SendClientMessage(l, GangInfo[ZoneInfo[zoneid][OfGangID]][Color], "Your zone is under attack!");
                    }
                }
            }
        }
          
        
GangInfo[gangid][Members] ++;
        
dini_IntSet(GangFile,"Members", GangInfo[gangid][Members]);
        
format(strENG, sizeof(strENG), "%s (ID:%d) has joined the gang %s", pName, playerid, GangInfo[PlayerInfo[playerid][InvitedByGang]][GangName]);
        
SendClientMessageToAll(GangInfo[gangid][Color], strENG);
        
format(strENG, sizeof(strENG), "%s (ID:%d) has joined your gang", pName, playerid);
        for(new 
p = 0; p < MAX_PLAYERS; p++)
        {
            if(
IsPlayerConnected(p) && PlayerInfo[p][GangID] == gangid) SendClientMessage(p, GangInfo[gangid][Color], strENG);
        }
        
SetPlayerColor(playerid, GangInfo[gangid][Color]);
        
PlayerInfo[playerid][GangID] = PlayerInfo[playerid][InvitedByGang];
        
PlayerInfo[playerid][InvitedByGang] = -1;
        return 
1;
    }
    if(
strcmp("leave", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        new 
GangFile[255], SlotFile[255], NomeGang[255];
        new 
gangid = PlayerInfo[playerid][GangID];
        new 
strENG[255];
        if(
IsPlayerInAnyDynamicArea(playerid))
        {
            new 
zoneid = GetPlayerNumberDynamicAreas(playerid);
            
Invaders[gangid][zoneid] --;
            if(
Invaders[gangid][zoneid] < MembersForConq)
            {
                
KillTimer(GangTimer[gangid][zoneid]);
                
GangZoneStopFlashForAll(ZoneInfo[zoneid][GZID]);
            }
        }
        if(
PlayerInfo[playerid][GangOwner] == true)
        {
            
format(strENG, sizeof(strENG), "The founder of the gang {FFFF00}'%s' {00FF00}has abandoned the gang. The gang has dissolved", GangInfo[gangid][GangName]);
            for(new 
p = 0; p < MAX_PLAYERS; p++)
            {
                if(
IsPlayerConnected(p) && PlayerInfo[p][GangID] == gangid)
                {
                    
SendClientMessage(p, COLOR_VERDE, strENG);
                }
            }
            for(new 
z = 1; z < MAX_ZONES; z++)
            {
                new 
ZoneFile[255];
                
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, z);
                if(
dini_Exists(ZoneFile))
                {
                    if(
ZoneInfo[z][OfGangID] == gangid)
                    {
                        for(new 
gvehicleid; gvehicleid < MAX_GVEHICLES; gvehicleid++) DestroyVehicle(GangVehicle[z][gvehicleid][VehID]);
                         
dini_IntSet(ZoneFile,"OfGangID",-1);
                        
ZoneInfo[z][OfGangID] = dini_Int(ZoneFile,"OfGangID");
                        
GangZoneShowForAll(ZoneInfo[z][GZID], GCOLOR_GRIGIO);
                    }
                }
            }
            
format(GangFile, sizeof(GangFile), GangIDFile, PlayerInfo[playerid][GangID]);
            if(
dini_Exists(GangFile))
            {
                
dini_Remove(GangFile);
            }
            
PlayerInfo[playerid][GangOwner] = false;
        }
        else
        {
            new 
slotid = CheckGangPlayerSlot(gangid, playerid);
            
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
            
format(SlotFile, sizeof(GangFile), "Member_%d", slotid);
            
GangInfo[gangid][Members] --;
            
            
dini_IntSet(GangFile,"Members", GangInfo[gangid][Members]);
            
dini_Set(GangFile, SlotFile, "");
            
            
MemberInfo[gangid][slotid][Name] = dini_Get(GangFile, SlotFile);
            
format(GangFile, sizeof(GangFile), GangIDFile, PlayerInfo[playerid][GangID]);
            if(
dini_Exists(GangFile))
            {
                
NomeGang = dini_Get(GangFile,"Name");
            }
            
format(strENG, sizeof(strENG), "You left the gang %s (ID:%d)", GangInfo[gangid][GangName], gangid);
            
SendClientMessage(playerid, COLOR_VERDE, strENG);
        }
        
        
PlayerInfo[playerid][GangID] = -1;
        
PlayerInfo[playerid][GangOwner] = false;
        return 
1;
    }
    if(
strcmp("kick", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be founder of the gang!");
         
ShowPlayerDialog(playerid, DIALOG_GANGKICK, DIALOG_STYLE_INPUT, "Kick Player from Gang", "Input the ID of the player to kick by the Gang", "Ok", "Cancel");
        return 
1;
    }
     if(
strcmp("list", gcmd, true, sizeof(gcmd)) == 0)
    {
        
SendClientMessage(playerid, COLOR_VERDE, "________________Gang List________________");
        for(new 
g = 0; g < MAX_GANGS; g++)
        {
            new 
GangFile[255], strENG[255];
            
format(GangFile, sizeof(GangFile), GangIDFile, g);
            if(
dini_Exists(GangFile))
            {
                new 
MembriOn = 0;
                for(new 
l = 0; l < MAX_PLAYERS; l++)
                {
                    if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == g) MembriOn ++;
                }
                new 
ZoneDellaGang = 0;
                new 
ZoneFile[255];
                for(new 
z = 0; z < MAX_ZONES; z++)
                {
                    
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, z);
                    if(
dini_Exists(ZoneFile)) if(ZoneInfo[z][OfGangID] == g) ZoneDellaGang ++;
                }
                
format(strENG, sizeof(strENG), "ID: %d | Name: %s | Founder: %s | Conquired zones: %d | Members: %d | Online Members: %d", GangInfo[g][GangID], GangInfo[g][GangName], GangInfo[g][Owner], ZoneDellaGang, GangInfo[g][Members], MembriOn);
                
SendClientMessage(playerid, GangInfo[g][Color], strENG);
            }
        }
        return 
1;
    }
    if(
strcmp("top", gcmd, true, sizeof(gcmd)) == 0)
    {
        
SendClientMessage(playerid, COLOR_VERDE, "________________Gang List________________");
        for(new 
g = 0; g < MAX_GANGS; g++)
        {
            new 
GangFile[255], strENG[255];
            
format(GangFile, sizeof(GangFile), GangIDFile, g);
            if(
dini_Exists(GangFile))
            {
                new 
GangScore = GangInfo[g][TotConqZ] + (GangInfo[g][TotKills]/10);
                
format(strENG, sizeof(strENG), "ID: %d | Name: %s | Score: %d | Tot Conquired Zones: %d | Tot kills: %d", GangInfo[g][GangID], GangInfo[g][GangName], GangScore, GangInfo[g][TotConqZ], GangInfo[g][TotKills]);
                
SendClientMessage(playerid, GangInfo[g][Color], strENG);
            }
        }
        return 
1;
    }
    if(
strcmp("resetcash", gcmd, true, sizeof(gcmd)) == 0)
    {
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "You must be RCon Admin to use this command!");
        new 
ZoneFile[255];
        for(new 
zoneid = 1; zoneid <= MAX_ZONES; zoneid++)
        {
            
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, zoneid);
            if(
dini_Exists(ZoneFile))
            {
                
dini_IntSet(ZoneFile,"Cash", 0);
                
ZoneInfo[zoneid][PickUpCash] = 0;
                new 
txt[50];
                  
format(txt, sizeof(txt), "Money\n%d$", ZoneInfo[zoneid][PickUpCash]);
                
Update3DTextLabelText(ZoneInfo[zoneid][Label], COLOR_VERDE, txt);
            }
        }
        
SendClientMessage(playerid, COLOR_VERDE, "Zones' zone resetted!");
        return 
1;
    }
    if(
strcmp("vehzone", gcmd, true, 7) == 0)
    {
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be admin RCon to use this command!");
        new 
zoneid, gvehicleid;
        if(
sscanf(params, "s[16]dd", gcmd, zoneid, gvehicleid)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Use: /g(ang) Vehicle <zoneid> <slotvehicleid>");
        if(
zoneid > MAX_ZONES || zoneid < 1) return SendClientMessage(playerid, COLOR_ROSSO, "Zone ID too large or small");
        if(
gvehicleid >= MAX_GVEHICLES || gvehicleid < 0) return SendClientMessage(playerid, COLOR_ROSSO, "Vehicle slot too large or small");
        new 
Float: gvPos[3], Float: gvAngle;
        if(
IsPlayerInAnyVehicle(playerid))
        {
            new 
vehicleid = GetPlayerVehicleID(playerid);
            
GetVehiclePos(vehicleid, gvPos[0], gvPos[1], gvPos[2]);
            
GetVehicleZAngle(vehicleid, gvAngle);
        }
        else
        {
            
GetPlayerPos(playerid, gvPos[0], gvPos[1], gvPos[2]);
            
GetPlayerFacingAngle(playerid, gvAngle);
        }
        new 
ZoneFile[255], strX[16], strY[16], strZ[16], strAngle[16];
        
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, zoneid);
        
format(strX, sizeof(strX), "Veh%d_X", gvehicleid);
        
format(strY, sizeof(strY), "Veh%d_Y", gvehicleid);
        
format(strZ, sizeof(strZ), "Veh%d_Z", gvehicleid);
        
format(strAngle, sizeof(strAngle), "Veh%d_Ang", gvehicleid);
        
dini_FloatSet(ZoneFile, strX, gvPos[0]);
        
dini_FloatSet(ZoneFile, strY, gvPos[1]);
        
dini_FloatSet(ZoneFile, strZ, gvPos[2]);
        
dini_FloatSet(ZoneFile, strAngle, gvAngle);
        
GangVehicle[zoneid][gvehicleid][PosX] = dini_Float(ZoneFile, strX);
        
GangVehicle[zoneid][gvehicleid][PosY] = dini_Float(ZoneFile, strY);
        
GangVehicle[zoneid][gvehicleid][PosZ] = dini_Float(ZoneFile, strZ);
        
GangVehicle[zoneid][gvehicleid][Angle] = dini_Float(ZoneFile, strAngle);
        
        new 
strENG[128];
        
format(strENG, sizeof(strENG), "vPosX: %0.02f | vPosY: %0.02f | vPosZ: %0.02f | vAng: %0.02f", GangVehicle[zoneid][gvehicleid][PosX], GangVehicle[zoneid][gvehicleid][PosY], GangVehicle[zoneid][gvehicleid][PosZ], GangVehicle[zoneid][gvehicleid][Angle]);
        
SendClientMessage(playerid, COLOR_VERDE, strENG);
        
DestroyVehicle(GangVehicle[zoneid][gvehicleid][VehID]);
        if(
ZoneInfo[zoneid][OfGangID] != -1)
        {
            new 
gangid = ZoneInfo[zoneid][OfGangID], gPlate[8];
            if(
GangInfo[gangid][VehModel] >= 400 && GangInfo[gangid][VehModel] <= 611)
            {
                new 
vehiclemodel = GangInfo[gangid][VehModel], col1 = GangInfo[gangid][VehCol1], col2 = GangInfo[gangid][VehCol2];
                
GangVehicle[zoneid][gvehicleid][VehID] = CreateVehicle(vehiclemodel, GangVehicle[zoneid][gvehicleid][PosX], GangVehicle[zoneid][gvehicleid][PosY], GangVehicle[zoneid][gvehicleid][PosZ], GangVehicle[zoneid][gvehicleid][Angle], col1, col2, 1800000);
                
format(gPlate, sizeof(gPlate), "[%s]-%d", GangInfo[gangid][Tag], gvehicleid);
                
SetVehicleNumberPlate(GangVehicle[zoneid][gvehicleid][VehID], gPlate);
            }
        }
        
format(strENG, sizeof(strENG), "Zone ID: %d | Vehicle Slot: %d", zoneid, gvehicleid);
        
SendClientMessage(playerid, COLOR_VERDE, strENG);
        return 
1;
    }
    
    if(
strcmp("paymentlist", gcmd, true, 11) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be founder of the gang!");
        new 
strENG[512], gangid = PlayerInfo[playerid][GangID], PerCentRemain, strTitle[128];
        
format(strENG, sizeof(strENG), "Member Name\tPercentage\n");
        for(new 
slotid; slotid < MAX_MEMBERS; slotid++)
        {
            if(
strlen(MemberInfo[gangid][slotid][Name]) > 1) format(strENG, sizeof(strENG), "%s{00FF00}%s\t%d/100\n", strENG, MemberInfo[gangid][slotid][Name], MemberInfo[gangid][slotid][Percentage]);
            else 
format(strENG, sizeof(strENG), "%s{FF0000}<Empty>\t%d/100\n", strENG, MemberInfo[gangid][slotid][Name], MemberInfo[gangid][slotid][Percentage]);
            
PerCentRemain += MemberInfo[gangid][slotid][Percentage];
        }
        
        
PerCentRemain = 100 - PerCentRemain;
        
format(strTitle, sizeof(strTitle), "Payment (%d/100 percentage Remains) Gang's Bank: $%d", PerCentRemain, GangInfo[gangid][Bank]);
        
ShowPlayerDialog(playerid, DIALOG_PAYMENT, DIALOG_STYLE_TABLIST_HEADERS, strTitle, strENG, "Select", "Exit");
        return 
1;
    }
    
    if(
strcmp("paymentset", gcmd, true, 10) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be founder of the gang!");
        new 
pName[MAX_PLAYER_NAME], UserPay, strENG[128];
        if(
sscanf(params, "s[32]s[16]d", gcmd, pName, UserPay)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Use: /g(ang) PaymentSet <NickName> <Percentage>");
        new 
GangFile[255], gangid = PlayerInfo[playerid][GangID], SlotFile[255], slotid;
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        if(
IsNumeric(pName))
        {
            new 
UserID = strval(pName);
            if(!
IsPlayerConnected(UserID)) return SendClientMessage(playerid, COLOR_ROSSO, "The player is not connected");
            
slotid = CheckGangPlayerSlot(gangid, UserID);
            
        }
        else 
slotid = CheckGangPlayerNameSlot(gangid, pName);
        
        new 
PercentageRem;
        for(new 
sid; sid < MAX_MEMBERS; sid++)
        {
            if(
sid == slotid) PercentageRem += UserPay;
            else 
PercentageRem += MemberInfo[gangid][sid][Percentage];
        }
        
PercentageRem = 100 - PercentageRem;
        if(
PercentageRem < 0) return SendClientMessage(playerid, COLOR_ROSSO, "Percentage you wrote is too high");
        
format(SlotFile, sizeof(SlotFile), "MemberCash_%d", slotid);
        
dini_IntSet(GangFile, SlotFile, UserPay);
        
MemberInfo[gangid][slotid][Percentage] = dini_Int(GangFile, SlotFile);
        
        
format(strENG, sizeof(strENG), "[GANG]You change %s's payment percentage to %d/100. %d/100 will give to the owner", pName, MemberInfo[gangid][slotid][Percentage], PercentageRem);
        
SendClientMessage(playerid, COLOR_VERDE, strENG);
        return 
1;
    }
    if(
strcmp("vehicle", gcmd, true, 7) == 0)
    {
        if(
PlayerInfo[playerid][GangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "You aren't in any gang!");
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "You need to be founder of the gang!");
        new 
modelid, col1, col2;
        if(
sscanf(params, "s[16]ddd", gcmd, modelid, col1, col2)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Use: /g(ang) vehicle <modelid> <Color1> <Color2>");
        if(
modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_ROSSO, "Use numbers from 400 to 611");
        new 
GangFile[255], gangid = PlayerInfo[playerid][GangID];
        
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        
dini_IntSet(GangFile, "VehModel", modelid);
        
dini_IntSet(GangFile, "VehCol1", col1);
        
dini_IntSet(GangFile, "VehCol2", col2);
        
GangInfo[gangid][VehModel] = dini_Int(GangFile, "VehModel");
        
GangInfo[gangid][VehCol1] = dini_Int(GangFile, "VehCol1");
        
GangInfo[gangid][VehCol2] = dini_Int(GangFile, "VehCol2");
        
        new 
strENG[128];
        
format(strENG, sizeof(strENG), "You setted %s (Model: %d) (Color 1: %d | Color 2: %d) as gang vehicle", VehicleNames[GangInfo[gangid][VehModel]-400], GangInfo[gangid][VehModel], GangInfo[gangid][VehCol1], GangInfo[gangid][VehCol2]);
        
SendClientMessage(playerid, GangInfo[gangid][Color], strENG);
        for(new 
zoneid = 1; zoneid < MAX_ZONES; zoneid++)
        {
            if(
ZoneInfo[zoneid][PosX1] != 0 && ZoneInfo[zoneid][OfGangID] == gangid)
            {
                new 
gPlate[8];
                for(new 
gvehicleid; gvehicleid < MAX_GVEHICLES; gvehicleid++)
                {
                    
DestroyVehicle(GangVehicle[zoneid][gvehicleid][VehID]);
                       if(
GangVehicle[zoneid][gvehicleid][PosX] != 0)
                    {
                        
GangVehicle[zoneid][gvehicleid][VehID] = CreateVehicle(GangInfo[gangid][VehModel], GangVehicle[zoneid][gvehicleid][PosX], GangVehicle[zoneid][gvehicleid][PosY], GangVehicle[zoneid][gvehicleid][PosZ], GangVehicle[zoneid][gvehicleid][Angle], GangInfo[gangid][VehCol1], GangInfo[gangid][VehCol2], 1800000);
                        
format(gPlate, sizeof(gPlate), "[%s]-%d", GangInfo[gangid][Tag], gvehicleid);
                        
SetVehicleNumberPlate(GangVehicle[zoneid][gvehicleid][VehID], gPlate);
                    }
                }
            }
        }
        return 
1;
    }
    return 
SendClientMessage(playerid, COLOR_ROSSO, "[Gang]Unknown gang command: type /g(ang) to see all gang's commands");
}
//gang fine
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 
1;
}
public 
OnPlayerExitVehicle(playerid, vehicleid)
{
    return 
1;
}
public 
OnPlayerStateChange(playerid, newstate, oldstate)
{
    return 
1;
}
public 
OnPlayerEnterCheckpoint(playerid)
{
    return 
1;
}
public 
OnPlayerLeaveCheckpoint(playerid)
{
    return 
1;
}
public 
OnPlayerEnterRaceCheckpoint(playerid)
{
    return 
1;
}
public 
OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 
1;
}
public 
OnRconCommand(cmd[])
{
    return 
1;
}
public 
OnPlayerRequestSpawn(playerid)
{
    return 
1;
}
public 
OnObjectMoved(objectid)
{
    return 
1;
}
public 
OnPlayerObjectMoved(playerid, objectid)
{
    return 
1;
}
public 
OnPlayerPickUpPickup(playerid, pickupid)
{
    new 
ZoneFile[255], area[MAX_ZONES], zonaid;
    
GetPlayerDynamicAreas(playerid, area, sizeof(area));
    
zonaid = area[0];
    
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, zonaid);
    if(
pickupid == ZoneInfo[zonaid][PickUp])
    {
        if(
ZoneInfo[zonaid][OfGangID] == -1) return SendClientMessage(playerid, COLOR_ROSSO, "To withdraw the cash of the zone, the zone must be of your gang");
        if(
PlayerInfo[playerid][GangID] != ZoneInfo[zonaid][OfGangID]) return SendClientMessage(playerid, COLOR_ROSSO, "To withdraw the cash of the zone, the zone must be of your gang");
        if(
PlayerInfo[playerid][GangOwner] == false) return SendClientMessage(playerid, COLOR_ROSSO, "Per ritirare i soldi della zona devi essere il Founder della gang To withdraw the cash of the zone you must be Founder of the gang");
        if(
ZoneInfo[zonaid][PickUpCash] == 0) return SendClientMessage(playerid, COLOR_ROSSO, "There are no money... What do you want to withdraw?");
        
GangZoneStopFlashForPlayer(playerid, ZoneInfo[zonaid][GZID]);
          new 
String[255], GangFile[255], gangid = PlayerInfo[playerid][GangID];
          
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
        
format(String, sizeof(String), "You dropped the gain of the zone: %d$", ZoneInfo[zonaid][PickUpCash]);
        
SendClientMessage(playerid, GangInfo[PlayerInfo[playerid][GangID]][Color], String);
        
dini_IntSet(GangFile, "Bank", GangInfo[gangid][Bank] + ZoneInfo[zonaid][PickUpCash]);
        
GangInfo[gangid][Bank] = dini_Int(GangFile, "Bank");
        
         
ZoneInfo[zonaid][PickUpCash] = 0;
        
dini_IntSet(ZoneFile, "Cash", 0);
        new 
txt[50];
          
format(txt, sizeof(txt), "Money\n%d$", ZoneInfo[zonaid][PickUpCash]);
        
Update3DTextLabelText(ZoneInfo[zonaid][Label], COLOR_VERDE, txt);
    }
    return 
1;
}
public 
OnVehicleMod(playerid, vehicleid, componentid)
{
    return 
1;
}
public 
OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 
1;
}
public 
OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 
1;
}
public 
OnPlayerSelectedMenuRow(playerid, row)
{
    return 
1;
}
public 
OnPlayerExitedMenu(playerid)
{
    return 
1;
}
public 
OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 
1;
}
public 
OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 
1;
}
public 
OnRconLoginAttempt(ip[], password[], success)
{
    return 
1;
}
public 
OnPlayerUpdate(playerid)
{
    return 
1;
}
public 
OnPlayerStreamIn(playerid, forplayerid)
{
    return 
1;
}
public 
OnPlayerStreamOut(playerid, forplayerid)
{
    return 
1;
}
public 
OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 
1;
}
public 
OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 
1;
}
public 
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    
//gang inizio
    
if(dialogid == DIALOG_GANGCREATE)
    {
        if(
response)
        {
            if(
strlen(inputtext) > 20 || strlen(inputtext) < 3 ) return SendClientMessage(playerid, COLOR_ROSSO, "Invalid name's lenght. MIN 4 - MAX 19 letters");
             new 
GangFile[255];
             for(new 
gangid = 0; gangid < MAX_GANGS; gangid++) //inizio controllo degli id liberi
             
{
                 
format(GangFile,sizeof(GangFile),GangIDFile, gangid);
                 if(!
dini_Exists(GangFile))
                 {
                     
//salvataggio CFG
                     
new cfgFile[255];
                     
TotGang ++;
                    
format(cfgFile,sizeof(GangFile),GangCFGFile);
                    
dini_Create(cfgFile);
                    
dini_IntSet(cfgFile,"TotGang", TotGang);
                    
//creazione gang
                    
format(GangFile,sizeof(GangFile),GangIDFile, gangid);
                    
GangInfo[gangid][GangID] = gangid;
                    
GetPlayerName(playerid, GangInfo[gangid][Owner], 30);
                    
dini_Create(GangFile);
                    
dini_IntSet(GangFile,"GangID", GangInfo[gangid][GangID]);
                    
dini_IntSet(GangFile,"Color", -1);
                    
dini_Set(GangFile,"Name", inputtext);
                    
dini_Set(GangFile,"Tag", "");
                    
dini_Set(GangFile,"Owner", GangInfo[gangid][Owner]);
                    
dini_IntSet(GangFile,"Members", 1);
                       
GangInfo[gangid][GangID] = dini_Int(GangFile,"GangID");
                       
GangInfo[gangid][Color] = dini_Int(GangFile,"Color");
                       
GangInfo[gangid][GangName] = dini_Get(GangFile,"Name");
                       
GangInfo[gangid][Tag] = dini_Get(GangFile,"Tag");
                       
GangInfo[gangid][Owner] = dini_Get(GangFile,"Owner");
                       
GangInfo[gangid][Members] = dini_Int(GangFile,"Members");
                       
//mostra info gang creata
                       
PlayerInfo[playerid][GangID] = gangid;
                       
PlayerInfo[playerid][GangOwner] = true;
                       new 
strENG[255];
                       
format(strENG, sizeof(strENG), "ID Gang: %d | Gang Name: %s | Founder: %s", GangInfo[gangid][GangID], GangInfo[gangid][GangName], GangInfo[gangid][Owner]);
                       
SendClientMessage(playerid, COLOR_VERDE, strENG);
                       
//ferma il ciclo dopo la creazione gang
                       
gangid = MAX_GANGS;
                       
//manda al dialogo della scelta colore della gang
                    
ShowPlayerDialog(playerid, DIALOG_GANGCOLOUR, DIALOG_STYLE_LIST, "Change Gang Color", "{FF0000}Red\n{9900FF}Fuchsia\n{0000FF}Blue\n{0066FF}Light Blue\n{00FF00}Green\n{00FF99}Water Green\n{FFFF00}Yellow\n{FF9900}Orange\n{663300}Brown\n{FF6666}Pink\n{9900FF}Salmon", "Ok", "Cancel");
                   }
            }
        }
    }
    if(
dialogid == DIALOG_GANGTAG)
    {
        if(
response)
        {
            if(
strlen(inputtext) < 1 || strlen(inputtext) > 4) return SendClientMessage(playerid, COLOR_ROSSO, "The tag must have minimum 1 and maximum 4 characters!");
            if(
strfind(inputtext, "[", true) != -1 || strfind(inputtext, "]", true) != -1) return SendClientMessage(playerid, COLOR_ROSSO, "Don't use square brackets ('[' e ']')");
            new 
gangid = PlayerInfo[playerid][GangID];
            new 
GangFile[255];
            
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
            if(
dini_Exists(GangFile))
            {
                
dini_Set(GangFile,"Tag", inputtext);
                
GangInfo[gangid][Tag] = dini_Get(GangFile,"Tag");
                new 
gPlate[8];
                for(new 
zoneid = 1; zoneid <= MAX_ZONES; zoneid++)
                {
                    for(new 
gvehicleid; gvehicleid < MAX_GVEHICLES; gvehicleid++)
                    {
                        
DestroyVehicle(GangVehicle[zoneid][gvehicleid][VehID]);
                        if(
GangInfo[gangid][VehModel] >= 400 && GangInfo[gangid][VehModel] <= 609 && GangVehicle[zoneid][gvehicleid][PosX] != 0 && GangVehicle[zoneid][gvehicleid][PosY] != 0 && GangVehicle[zoneid][gvehicleid][PosZ] != 0)
                        {
                            new 
vehiclemodel = GangInfo[gangid][VehModel], col1 = GangInfo[gangid][VehCol1], col2 = GangInfo[gangid][VehCol2];
                            
GangVehicle[zoneid][gvehicleid][VehID] = CreateVehicle(vehiclemodel, GangVehicle[zoneid][gvehicleid][PosX], GangVehicle[zoneid][gvehicleid][PosY], GangVehicle[zoneid][gvehicleid][PosZ], GangVehicle[zoneid][gvehicleid][Angle], col1, col2, 1800000);
                            
format(gPlate, sizeof(gPlate), "[%s]-%d", GangInfo[gangid][Tag], gvehicleid);
                            
SetVehicleNumberPlate(GangVehicle[zoneid][gvehicleid][VehID], gPlate);
                        }
                    }
                }
                new 
strENG[255];
                
format(strENG, sizeof(strENG), "The gang's founder has setted [%s] as the gang tag", GangInfo[gangid][Tag]);
                for(new 
p; p < MAX_PLAYERS; p++)
                {
                    if(
IsPlayerConnected(p) && PlayerInfo[p][GangID] == gangid)
                    {
                        
SendClientMessage(p, GangInfo[gangid][Color], strENG);
                    }
                }
                
format(strENG, sizeof(strENG), "You've setted [%s] as the gang tag", GangInfo[gangid][Tag]);
                
SendClientMessage(playerid, GangInfo[playerid][Color], strENG);
            }
        }
    }
    if(
dialogid == DIALOG_GANGCOLOUR)
    {
        new 
gangid = PlayerInfo[playerid][GangID];
        if(
response)
        {
            new 
GangFile[255];
            
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
            if(
dini_Exists(GangFile))
             {
                 switch(
listitem)
                 {
                     case 
0: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_ROSSO);
                    case 
1: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_FUCSIA);
                    case 
2: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_BLU);
                    case 
3: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_CELESTE);
                    case 
4: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_VERDE);
                    case 
5: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_VERDEACQUA);
                    case 
6: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_GIALLO);
                    case 
7: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_ARANCIONE);
                    case 
8: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_MARRONE);
                    case 
9: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_ROSA);
                    case 
10: if(dini_Exists(GangFile)) dini_IntSet(GangFile,"Color", GCOLOR_SALMONE);
                }
            }
            
GangInfo[gangid][Color] = dini_Int(GangFile,"Color");
            
SendClientMessage(playerid, GangInfo[gangid][Color], "You've setted the gang's color");
            for(new 
p = 0; p < MAX_PLAYERS; p++)
            {
                if(
IsPlayerConnected(p) && PlayerInfo[p][GangID] == gangid)
                {
                    
SetPlayerColor(p, GangInfo[gangid][Color]);
                }
            }
            if(
IsPlayerInAnyDynamicArea(playerid))
            {
                new 
zoneid = GetPlayerNumberDynamicAreas(playerid);
                
Invaders[gangid][zoneid] ++;
                if(
Invaders[gangid][zoneid] == MembersForConq)
                {
                    for(new 
l = 0; l < MAX_PLAYERS; l++)
                    {
                        if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == gangid)
                        {
                            
SendClientMessage(l, GangInfo[gangid][Color], "You are conquiring the zone");
                        }
                    }
                    
GangZoneFlashForAll(ZoneInfo[zoneid][GZID], GangInfo[gangid][Color]);
                    if(
ZoneInfo[zoneid][OfGangID] != -1)
                    {
                        
GangTimer[gangid][zoneid] = SetTimerEx("ConquistaGZ", TimeForConq, false, "ii", zoneid, gangid);
                    }
                    else
                    {
                        
GangTimer[gangid][zoneid] = SetTimerEx("ConquistaGZ", TimeForConq/2, false, "ii", zoneid, gangid);
                    }
                    for(new 
l; l < MAX_PLAYERS; l++)
                    {
                        if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == ZoneInfo[zoneid][OfGangID] && PlayerInfo[playerid][GangID] != ZoneInfo[zoneid][OfGangID] && PlayerInfo[l][GangID] != -1)
                        {
                            
SendClientMessage(l, GangInfo[ZoneInfo[zoneid][OfGangID]][Color], "Your zone is under attack!");
                        }
                    }
                }
            }
        }
        else
        {
            if(
GangInfo[gangid][Color] == -1)
            {
                new 
GangFile[255];
                
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
                if(
dini_Exists(GangFile))
                {
                    
dini_Remove(GangFile);
                }
                
SendClientMessage(playerid, COLOR_ROSSO, "In order to create a gang also need a color! The gang has been deleted.");
                
PlayerInfo[playerid][GangID] = -1;
            }
        }
    }
    if(
dialogid == DIALOG_GANGINVITE)
    {
        if(
response)
        {
            new 
strENG[255], pName[MAX_PLAYER_NAME], Invite, NameInvite[MAX_PLAYER_NAME];
            
Invite = strval(inputtext);
            
PlayerInfo[Invite][InvitedByGang] = PlayerInfo[playerid][GangID];
            
GetPlayerName(playerid, pName, sizeof(pName));
            
GetPlayerName(Invite, NameInvite, sizeof(NameInvite));
            
format(strENG, sizeof(strENG), "You've invited {FFFF00}%s {00FF00}(ID:{FFFF00}%d{00FF00}) to join your gang", NameInvite, Invite);
            
SendClientMessage(playerid, COLOR_VERDE, strENG);
            
format(strENG, sizeof(strENG), "%s (ID:%d) ti ha invitato ad entrare nella gang {FFFF00}'%s'{00FF00}. Use /gang join to accept", pName, playerid, GangInfo[PlayerInfo[playerid][GangID]][GangName]);
            
SendClientMessage(Invite, COLOR_VERDE, strENG);
        }
    }
    if(
dialogid == DIALOG_GANGKICK)
    {
        if(
response)
        {
             new 
gangid = PlayerInfo[playerid][GangID];
            if(
IsNumeric(inputtext))
            {
                new 
PlayerToKick = strval(inputtext);
                if(!
IsPlayerConnected(PlayerToKick)) return SendClientMessage(playerid, COLOR_ROSSO, "The player with this ID isn't connected!");
                  if(
PlayerInfo[PlayerToKick][GangID] != PlayerInfo[playerid][GangID]) return SendClientMessage(playerid, COLOR_ROSSO, "The player with this ID isn't in your gang!");
                  if(
PlayerToKick == playerid) return SendClientMessage(playerid, COLOR_ROSSO, "You can't kick yourself!");
                new 
strENG[255], pName[MAX_PLAYER_NAME], PlayerToKickName[MAX_PLAYER_NAME], GangFile[255], SlotFile[255], slotid = CheckGangPlayerSlot(gangid, PlayerToKick);
                
GetPlayerName(playerid, pName, sizeof(pName));
                
GetPlayerName(PlayerToKick, PlayerToKickName, sizeof(PlayerToKickName));
                
format(strENG, sizeof(strENG), "%s (ID:%d) {00FF00}have kicked you from gang {FFFF00}'%s'", pName, playerid, GangInfo[PlayerInfo[PlayerToKick][GangID]][GangName]);
                
SendClientMessage(PlayerToKick, COLOR_GIALLO, strENG);
                
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
                
format(SlotFile, sizeof(SlotFile), "Member_%d", slotid);
                
GangInfo[gangid][Members] --;
                
PlayerInfo[PlayerToKick][GangID] = -1;
                
dini_IntSet(GangFile, "Members", GangInfo[gangid][Members]);
                
dini_Set(GangFile, SlotFile, "");
                
MemberInfo[gangid][slotid][Name] = dini_Get(GangFile, SlotFile);
                
format(strENG, sizeof(strENG), "%s (ID:%d) {00FF00}was kicked from your gang", PlayerToKickName, PlayerToKick);
                for(new 
i = 0; i < MAX_PLAYERS; i++)
                {
                    if(
IsPlayerConnected(i) && PlayerInfo[i][GangID] == PlayerInfo[playerid][GangID]) SendClientMessage(i, COLOR_GIALLO, strENG);
                }
                
format(strENG, sizeof(strENG), "You've kicked {FFFF00}%s (ID:%d) {00FF00}from your gang", PlayerToKickName, PlayerToKick);
                
SendClientMessage(playerid, COLOR_VERDE, strENG);
            }
            else
            {
                if(!
IsPlayerNameInGang(inputtext, gangid)) return SendClientMessage(playerid, COLOR_ROSSO, "This player is not in your gang");
                new 
slotid = CheckGangPlayerNameSlot(gangid, inputtext);
                new 
strENG[255], pName[MAX_PLAYER_NAME], GangFile[255], SlotFile[255];
                
GetPlayerName(playerid, pName, sizeof(pName));
                new 
PlayerToKick = IsPlayerConnectedWithName(inputtext);
                if(
PlayerToKick != -1)
                {
                    
format(strENG, sizeof(strENG), "%s (ID:%d) {00FF00}have kicked you from the gang {FFFF00}'%s'", pName, playerid, GangInfo[gangid][GangName]);
                    
SendClientMessage(PlayerToKick, COLOR_GIALLO, strENG);
                }
                
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
                
GangInfo[gangid][Members] --;
                
PlayerInfo[PlayerToKick][GangID] = -1;
                
dini_IntSet(GangFile, "Members", GangInfo[gangid][Members]);
                
dini_Set(GangFile, SlotFile, "");
                
                
MemberInfo[gangid][slotid][Name] = dini_Get(GangFile, SlotFile);
                
format(strENG, sizeof(strENG), "%s (ID: Offline) {00FF00}was kicked from your gang", inputtext);
                for(new 
i = 0; i < MAX_PLAYERS; i++)
                {
                    if(
IsPlayerConnected(i) && PlayerInfo[i][GangID] == PlayerInfo[playerid][GangID]) SendClientMessage(i, COLOR_GIALLO, strENG);
                }
                
format(strENG, sizeof(strENG), "You've kicked {FFFF00}%s (ID: Offline) {00FF00}from your gang", inputtext);
                
SendClientMessage(playerid, COLOR_VERDE, strENG);
            }
        }
    }
    if(
dialogid == DIALOG_GANGPICKUP)
    {
        if(
response)
        {
            if(!
IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_ROSSO, "The ID of the zone must contain only numbers!");
            new 
zonaid, Float: Pos[3];
            
zonaid = strval(inputtext);
            new 
ZoneFile[255];
            
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, zonaid);
            if(!
dini_Exists(ZoneFile)) return SendClientMessage(playerid, COLOR_ROSSO, "Zone ID doesn't exists");
            
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
            
dini_FloatSet(ZoneFile, "PickX", Pos[0]);
            
dini_FloatSet(ZoneFile, "PickY", Pos[1]);
            
dini_FloatSet(ZoneFile, "PickZ", Pos[2]);
            
ZoneInfo[zonaid][PickX] = dini_Float(ZoneFile, "PickX");
            
ZoneInfo[zonaid][PickY] = dini_Float(ZoneFile, "PickY");
            
ZoneInfo[zonaid][PickZ] = dini_Float(ZoneFile, "PickZ");
            
DestroyPickup(ZoneInfo[zonaid][PickUp]);
            
ZoneInfo[zonaid][PickUp] = CreatePickup(1274, 1, ZoneInfo[zonaid][PickX], ZoneInfo[zonaid][PickY], ZoneInfo[zonaid][PickZ]);
            
Delete3DTextLabel(ZoneInfo[zonaid][Label]);
            new 
txt[50];
            
format(txt, sizeof(txt), "Money\n%d$", ZoneInfo[zonaid][PickUpCash]);
            
ZoneInfo[zonaid][Label] = Create3DTextLabel(txt, COLOR_VERDE, ZoneInfo[zonaid][PickX], ZoneInfo[zonaid][PickY], ZoneInfo[zonaid][PickZ]+0.5, 10, 0, 0);
            for(new 
p = 0; p < MAX_PLAYERS; p++)
            {
                if(
IsPlayerConnected(p) && IsPlayerAdmin(p)) GangZoneStopFlashForPlayer(p, ZoneInfo[zonaid][GZID]);
            }
        }
    }
    
//gang fine
    
return 1;
}
public 
OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 
1;
}
public 
OnPlayerEnterDynamicArea(playerid, areaid)
{
    
//gang inizio
    
new string[255];
    new 
zoneid = areaid;
    new 
gangid = PlayerInfo[playerid][GangID];
    if(
gangid != -1 && gangid != ZoneInfo[zoneid][OfGangID] && GetPlayerVirtualWorld(playerid) == 0) Invaders[gangid][zoneid] ++;
    
format(string, sizeof(string), "[JOIN]ID zone: %d | Invaders: %d | OfGangID: %d | Your Gang ID: %d", zoneid, Invaders[gangid][zoneid], ZoneInfo[zoneid][OfGangID], gangid);
    if(
IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_VERDE, string);
    if(
Invaders[gangid][zoneid] == MembersForConq)
    {
        if(
ZoneInfo[zoneid][OfGangID] != gangid)
        {
            for(new 
l = 0; l < MAX_PLAYERS; l++)
            {
                if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == gangid)
                {
                    
SendClientMessage(l, GangInfo[gangid][Color], "You are conquiring the zone");
                }
            }
            
GangZoneFlashForAll(ZoneInfo[zoneid][GZID], GangInfo[gangid][Color]);
            if(
ZoneInfo[zoneid][OfGangID] != -1) GangTimer[gangid][zoneid] = SetTimerEx("ConquistaGZ", TimeForConq, false, "ii", zoneid, gangid);
            else 
GangTimer[gangid][zoneid] = SetTimerEx("ConquistaGZ", TimeForConq/2, false, "ii", zoneid, gangid);
            for(new 
l; l < MAX_PLAYERS; l++)
            {
                if(
IsPlayerConnected(l) && PlayerInfo[l][GangID] == ZoneInfo[zoneid][OfGangID] && PlayerInfo[playerid][GangID] != ZoneInfo[zoneid][OfGangID] && PlayerInfo[l][GangID] != -1)
                {
                    
SendClientMessage(l, GangInfo[ZoneInfo[zoneid][OfGangID]][Color], "A your zone is under attack by another Gang");
                }
            }
        }
    }
    if(
ZoneInfo[zoneid][OfGangID] == gangid && PlayerInfo[playerid][GangOwner] == true) SetPlayerMapIcon(playerid, GANG_CASH_ICON_ID, ZoneInfo[zoneid][PickX], ZoneInfo[zoneid][PickY], ZoneInfo[zoneid][PickZ], 52, 0, MAPICON_LOCAL);
    if(
ZoneInfo[zoneid][OfGangID] != -1)
    {
        
format(string, sizeof(string), "%s", GangInfo[ZoneInfo[zoneid][OfGangID]][GangName]);
        
GameTextForPlayer(playerid, string, 1000, 1);
    }
    
//gang fine
    
return 1;
}
public 
OnPlayerLeaveDynamicArea(playerid, areaid)
{
    
//gang inizio
    
new string[255];
    new 
zoneid = areaid;
    new 
gangid = PlayerInfo[playerid][GangID];
    if(
gangid != ZoneInfo[zoneid][OfGangID] && gangid != -1 && GetPlayerVirtualWorld(playerid) == 0) Invaders[gangid][zoneid] --; //---- Togliere un invasor
    
if(Invaders[gangid][zoneid] < MembersForConq)
    {
        
KillTimer(GangTimer[gangid][zoneid]);
        
GangZoneStopFlashForAll(ZoneInfo[zoneid][GZID]);
    }
    if(
ZoneInfo[zoneid][OfGangID] == gangid && PlayerInfo[playerid][GangOwner] == true) RemovePlayerMapIcon(playerid, GANG_CASH_ICON_ID);
    
format(string, sizeof(string), "[LEAVE]ID zone: %d | Invaders: %d | OfGangID: %d | Gang ID: %d", zoneid, Invaders[gangid][zoneid], ZoneInfo[zoneid][OfGangID], gangid);
    if(
IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_VERDE, string);
    
//gang fine
    
return 1;
}
forward ConquistaGZ(zoneid, gangid);
public 
ConquistaGZ(zoneid, gangid)
{
    new 
file[100];
    
format(file, sizeof(file), GangZoneFile, zoneid);
     
dini_IntSet(file, "OfGangID", gangid);
    
GangZoneStopFlashForAll(ZoneInfo[zoneid][GZID]);
    
ZoneInfo[zoneid][OfGangID] = gangid;
    
ZoneInfo[zoneid][Color] = GangInfo[gangid][Color];
    new 
gPlate[8];
    for(new 
gvehicleid; gvehicleid < MAX_GVEHICLES; gvehicleid++)
    {
        
DestroyVehicle(GangVehicle[zoneid][gvehicleid][VehID]);
        if(
GangInfo[gangid][VehModel] >= 400 && GangInfo[gangid][VehModel] <= 609 && GangVehicle[zoneid][gvehicleid][PosX] != 0 && GangVehicle[zoneid][gvehicleid][PosY] != 0 && GangVehicle[zoneid][gvehicleid][PosZ] != 0)
        {
            new 
vehiclemodel = GangInfo[gangid][VehModel], col1 = GangInfo[gangid][VehCol1], col2 = GangInfo[gangid][VehCol2];
            
GangVehicle[zoneid][gvehicleid][VehID] = CreateVehicle(vehiclemodel, GangVehicle[zoneid][gvehicleid][PosX], GangVehicle[zoneid][gvehicleid][PosY], GangVehicle[zoneid][gvehicleid][PosZ], GangVehicle[zoneid][gvehicleid][Angle], col1, col2, 1800000);
            
format(gPlate, sizeof(gPlate), "[%s]-%d", GangInfo[gangid][Tag], gvehicleid);
            
SetVehicleNumberPlate(GangVehicle[zoneid][gvehicleid][VehID], gPlate);
        }
    }
    for(new 
i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && PlayerInfo[i][GangID] == gangid) GivePlayerMoney(i, MoneyAfterConq);
     
GangZoneShowForAll(ZoneInfo[zoneid][GZID], ZoneInfo[zoneid][Color]);
     
     new 
GangFile[255];
     
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
     
dini_IntSet(GangFile, "TotConqZ", GangInfo[gangid][TotConqZ]++);
     
GangInfo[gangid][TotConqZ] = dini_Int(GangFile, "TotConqZ");
    return 
1;
}
forward AddCashInPickUp();
public 
AddCashInPickUp()
{
    new 
ZoneFile[255];
    for(new 
zoneid = 1; zoneid < MAX_ZONES; zoneid++)
    {
        
format(ZoneFile, sizeof(ZoneFile), GangZoneFile, zoneid);
        if(
dini_Exists(ZoneFile))
        {
            
ZoneInfo[zoneid][PickUpCash] = ZoneInfo[zoneid][PickUpCash] + AddCash;
            
dini_IntSet(ZoneFile, "Cash", ZoneInfo[zoneid][PickUpCash]);
            new 
txt[50];
            
format(txt, sizeof(txt), "Money\n%d$", ZoneInfo[zoneid][PickUpCash]);
            
Update3DTextLabelText(ZoneInfo[zoneid][Label], COLOR_VERDE, txt);
            new 
StrENG[255];
            
format(StrENG, sizeof(StrENG), "Your zone (ID:%d) reached %d$ of proceeds! The zone is marked with a White Flash", zoneid, ZoneInfo[zoneid][PickUpCash]);
            for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
            {
                if(
IsPlayerConnected(playerid) && ZoneInfo[zoneid][PickUpCash] >= 25000 && PlayerInfo[playerid][GangID] == ZoneInfo[zoneid][OfGangID] && PlayerInfo[playerid][GangOwner] == true)
                {
                    
GangZoneFlashForPlayer(playerid, ZoneInfo[zoneid][GZID], GCOLOR_BIANCO);
                    
SendClientMessage(playerid, COLOR_GIALLO, StrENG);
                }
            }
            
            
//avviso mancanza del pick up cash della zona
            
if(ZoneInfo[zoneid][PickX] == 0 && ZoneInfo[zoneid][PickY] == 0 && ZoneInfo[zoneid][PickZ] == 0)
            {
                
format(StrENG, sizeof(StrENG), "[ADMIN WARN]Pickup Cash missing! ID Zone: %d | Zone marked with a Black Flash", zoneid);
                for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
                {
                    if(
IsPlayerConnected(playerid) && IsPlayerAdmin(playerid))
                    {
                        
SendClientMessage(playerid, COLOR_GIALLO, StrENG);
                        
GangZoneFlashForPlayer(playerid, ZoneInfo[zoneid][GZID], GCOLOR_NERO);
                    }
                }
            }
            
            
//avviso mancanza veicoli gang
            
for(new gvehicleid; gvehicleid < MAX_GVEHICLES; gvehicleid++)
            {
                if(
GangVehicle[zoneid][gvehicleid][PosX] == 0 && GangVehicle[zoneid][gvehicleid][PosY] == 0 && GangVehicle[zoneid][gvehicleid][PosZ] == 0)
                {
                    
format(StrENG, sizeof(StrENG), "[WARN ADMIN]Gang vehicle doesn't exists! ID Zone: %d | ID Vehicle: %d | Zone marked with a Black Flash", zoneid, gvehicleid);
                    for(new 
playerid = 0; playerid < MAX_PLAYERS; playerid++)
                    {
                        if(
IsPlayerConnected(playerid) && IsPlayerAdmin(playerid))
                        {
                            
SendClientMessage(playerid, COLOR_GIALLO, StrENG);
                            
GangZoneFlashForPlayer(playerid, ZoneInfo[zoneid][GZID], GCOLOR_NERO);
                        }
                    }
                }
            }
        }
    }
    return 
1;
}
forward CheckGangPayDayTime();
public 
CheckGangPayDayTime()
{
    new 
GangFile[255], UserBank[255];
    new 
Hour, Minute, Second;
    
gettime(Hour, Minute, Second);
    if(
Hour == GangPayDay && Minute == 0)
    {
        for(new 
gangid; gangid < MAX_GANGS; gangid++)
        {
            new 
PercentageRemains;
            
format(GangFile, sizeof(GangFile), GangIDFile, gangid);
            for(new 
slotid; slotid < MAX_MEMBERS; slotid++)
            {
                if(
strlen(MemberInfo[gangid][slotid][Name]) > 1)
                {
                    
format(UserBank, sizeof(UserBank), UserBankFile, MemberInfo[gangid][slotid][Name]);
                    
                    
dini_IntSet(UserBankFile, "Deposita", GangInfo[gangid][Bank] / 100 * MemberInfo[gangid][slotid][Percentage]);
                    
PercentageRemains = 100 - MemberInfo[gangid][slotid][Percentage];
                    
                    new 
playerid = IsPlayerConnectedWithName(MemberInfo[gangid][slotid][Name]);
                    if(
playerid != -1)
                    {
                        new 
strENG[128];
                        
format(strENG, sizeof(strENG), "You earned $%d from your gang work", GangInfo[gangid][Bank] / 100 * MemberInfo[gangid][slotid][Percentage]);
                        
SendClientMessage(playerid, COLOR_VERDE, strENG);
                    }
                }
            }
            
format(UserBank, sizeof(UserBank), UserBankFile, GangInfo[gangid][Owner]);
            
dini_IntSet(UserBankFile, "Deposita", GangInfo[gangid][Bank] / 100 * PercentageRemains);
            
            new 
playerid = IsPlayerConnectedWithName(GangInfo[gangid][Owner]);
            if(
playerid != -1)
            {
                new 
strENG[128];
                
format(strENG, sizeof(strENG), "You earned $%d from your gang work", GangInfo[gangid][Bank] / 100 * PercentageRemains);
                
SendClientMessage(playerid, COLOR_VERDE, strENG);
            }
            
            
dini_IntSet(GangFile, "Bank", 0);
        }
    }
    return 
1;
}
                
stock CheckFreeGangSeat(gangid)
{
    for(new 
slotid; slotid < MAX_MEMBERS; slotid++)
    {
        if(
strlen(MemberInfo[gangid][slotid][Name]) == 0) return slotid;
    }
    return -
1;
}
stock CheckGangPlayerSlot(gangid, playerid)
{
    new 
pName[MAX_PLAYER_NAME];
    
GetPlayerName(playerid, pName, sizeof(pName));
    
    for(new 
slotid; slotid < MAX_MEMBERS; slotid++)
    {
        if(
strlen(pName) == strlen(MemberInfo[gangid][slotid][Name]) && strcmp(pName, MemberInfo[gangid][slotid][Name], false, MAX_PLAYER_NAME) == 0) return slotid;
    }
    return -
1;
}
stock CheckGangPlayerNameSlot(gangid, PlayerName[])
{
    for(new 
slotid; slotid < MAX_MEMBERS; slotid++)
    {
        if(
strlen(PlayerName) == strlen(MemberInfo[gangid][slotid][Name]) && strcmp(PlayerName, MemberInfo[gangid][slotid][Name], false, MAX_PLAYER_NAME) == 0) return slotid;
    }
    return -
1;
}
stock IsPlayerNameInGang(PlayerName[], gangid)
{
    for(new 
slotid; slotid < MAX_MEMBERS; slotid++)
    {
        if(
strlen(PlayerName) == strlen(MemberInfo[gangid][slotid][Name]) && strcmp(PlayerName, MemberInfo[gangid][slotid][Name], false, MAX_PLAYER_NAME) == 0) return true;
    }
    return 
false;
}
stock IsPlayerConnectedWithName(PlayerName[])
{
    new 
pName[MAX_PLAYER_NAME];
    for(new 
playerid; playerid < MAX_PLAYERS; playerid ++)
    {
        
GetPlayerName(playerid, pName, sizeof(pName));
        if(
strlen(PlayerName) == strlen(pName) && strcmp(PlayerName, pName, false, MAX_PLAYER_NAME) == 0) return playerid;
    }
    return -
1;
}
stock IsNumeric(string[])
{
    for (new 
i = 0, j = strlen(string); i < j; i++)
    {
        if (
string[i] > '9' || string[i] < '0') return 0;
    }
    return 
1;
} 
http://forum.sa-mp.com/showthread.ph...ht=gang+system
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)