.. and when I join on server, the organizations dosen't exist.
pawn Код:
/*
DYNAMIC ORGANIZATIONS FILTERSCRIPT
CODED FROM SCRATCH BY JAKKU
COPYRIGHT © 2011 - 2012
RELEASE DATE: 15/12/2011
PLEASE REPORT ALL BUGS (If found) @ SA-MP FORUMS - https://sampforum.blast.hk/showthread.php?tid=303864
Feel free to edit this script, but DO NOT REMOVE THE CREDITS! I have used time to code this system and give it to you for FREE!
It isn't much asked to keep the credits in it!
*//*
Changelog v.2
- CreateOrganizationZone can be used to create coloured "gangzones" for orgs
- IsPlayerInOrgZone(playerid, orgname)
- SendClientMessageToOrg(orgname, color, message)
- Fixed some small bugs, nothing serious
- Added auto-save for player stats and org. leaders (45sec delay)
- Added /decline command for leaders to decline incoming requests
*/#include <a_samp>#include <Dini>#include <sscanf2>#include <zcmd>//Color defines#define COLOR_GREY 0xAFAFAFAA#define COLOR_WHITE 0xFFFFFFAA#define COLOR_ORANGE 0xFF9900AA#define COLOR_YELLOW 0xFFFF00AA#define COLOR_RED 0xFF0000FF#define COLOR_LIGHTBLUE 0x33CCFFAA#define COLOR_BLUE 0x33CCFFAA#define COLOR_YAKUZA 0x00800096//#define WAGE 150 //Define the wage here#define MAX_ORGS 10 //Change only if you need more than 10 orgs#define MAX_ORG_WEAPONS 10 //Max amount of weapons for orgs#define ORG_NAME_LENGTH 32 //Max name length for organization and it's leader#define MAX_ORG_VEHICLES 32#define MAX_ZONES_PER_ORG 10#define SAVE_LEADERS_TO "org_leaders.txt"// Script configuration#define SPAWN_WITH_ORG_SKIN //Comment this line IF YOU DON'T WANT THE PLAYERS SPAWN WITH ORGANIZATION SKIN!#define ENABLE_HQ_TELE //Comment this line IF YOU WANT TO DISABLE /teletohq//forward PayDay
();
forward CheckArea
();
forward AutoSave
();
new OrgsCount;
new ZoneCount;
enum Orgs
{Name
[32],
Leader
[24],
Skin,
Float:X,
Float:Y,
Float:Z,
Weapons
[3],
Ammo
[3],
Vehicles
[MAX_ORG_VEHICLES
],
VehiclesCreated,
Text3D:OrgLabel,
Zones
[MAX_ZONES_PER_ORG
],
Float:ZoneMinX
[MAX_ZONES_PER_ORG
],
Float:ZoneMinY
[MAX_ZONES_PER_ORG
],
Float:ZoneMaxX
[MAX_ZONES_PER_ORG
],
Float:ZoneMaxY
[MAX_ZONES_PER_ORG
],
ZoneColor
[MAX_ZONES_PER_ORG
],
ZonesCreated,
};
new Organization
[MAX_ORGS
][Orgs
];
new PlayerOrg
[MAX_PLAYERS
];
new PlayerLeader
[MAX_PLAYERS
];
new PlayerRank
[MAX_PLAYERS
][28];
new Requesting
[MAX_PLAYERS
];
new CollectedWage
[MAX_PLAYERS
];
new Skins
[4][1] = {{287},
{191},
{255},
{272}};
public OnGameModeInit
(){ for(new i
= 0; i
<= sizeof(Skins
)-1; i
++) { AddPlayerClass
(Skins
[i
][0],
414.6559,
2531.7651,
19.1601,
173.5583,
-1,
-1,
-1,
-1,
-1,
-1);
} print("\n--------------------------------------");
print("==Dynamic organization filterscript by Jakku - initialized!==");
print("==© 2011 - 2012==");
print("--------------------------------------\n");
SetTimer
("PayDay",
1500000,
1);
//PayDay every 25 minutes SetTimer
("CheckArea",
1000,
1);
SetTimer
("AutoSave",
45000,
1);
//Create ORGS here: CreateOrganization
("Yakuza",
1130.6305,
-2036.5112,
69.0078);
CreateOrganization
("Mafia",
681.5449,
-477.1273,
16.3359);
//Create ORG VEHICLES here: CreateOrgVehicle
("Yakuza",
411,
1246.7961,
-2036.0626,
59.5329,
271.6008,
16,
1);
CreateOrgVehicle
("Yakuza",
411,
1246.5938,
-2031.7949,
59.5362,
270.7776,
16,
1);
CreateOrgVehicle
("Yakuza",
522,
1277.2794,
-2009.6547,
58.4957,
89.6466,
16,
1);
CreateOrgVehicle
("Yakuza",
522,
1277.3419,
-2011.3572,
58.4834,
89.9773,
16,
1);
CreateOrgVehicle
("Yakuza",
522,
1277.3722,
-2012.7498,
58.4848,
92.9702,
16,
1);
CreateOrgVehicle
("Yakuza",
487,
1261.5380,
-2013.3866,
59.5547,
182.4366,
16,
1);
CreateOrgVehicle
("Yakuza",
487,
1249.4764,
-2012.8176,
59.8980,
186.4179,
16,
1);
CreateOrgVehicle
("Yakuza",
451,
1254.9363,
-2011.1251,
59.2712,
180.0180,
16,
1);
CreateOrgVehicle
("Yakuza",
451,
1267.7017,
-2011.1666,
58.9066,
180.4064,
16,
1);
CreateOrgVehicle
("Yakuza",
451,
1267.7017,
-2011.1666,
58.9066,
180.4064,
16,
1);
CreateOrgVehicle
("Yakuza",
451,
1244.9727,
-2011.1682,
59.5584,
177.9159,
16,
1);
CreateOrgVehicle
("Yakuza",
444,
1276.9401,
-2043.1921,
59.4064,
88.8083,
16,
1);
CreateOrgVehicle
("Yakuza",
444,
1277.0553,
-2038.9352,
59.3882,
87.3814,
16,
1);
CreateOrgVehicle
("Yakuza",
444,
1277.4615,
-2033.4034,
59.4207,
90.1980,
16,
1);
CreateOrgVehicle
("Yakuza",
411,
1246.8702,
-2039.5063,
59.5307,
270.4175,
16,
1);
//Create ORG ZONES here: CreateOrganizationZone
("Yakuza",
116.7788,
2370.609,
502.1487,
2662.556, 0x00800096
);
/*
ALWAYS add your organization BELOW the old one, otherwise the IDs will change = leaders mix up ! ! ! ! !
Syntax for CreateOrganization: CreateOrganization(name[32], skin, Float:x,Float:y,Float:z, wp1,a1,wp2,a2,wp3,a3)
Syntax for CreateOrgVehicle: CreateOrgVehicle(orgname[32], modelid, Float:x,Float:y,Float:z,Float:rotation, color1,color2)
Syntax for CreateOrganizationZone: CreateOrganizationZone(orgname[32], Float:minx,Float:miny,Float:maxx,Float:maxy, color)
*/ LoadLeaders
();
//This MUST BE executed AFTER the organizations are being created! new pcount
= 0;
for (new playerid
= 0;playerid
<MAX_PLAYERS;playerid
++) { if (IsPlayerConnected
(playerid
)) { LoadPlayerOrgInfo
(playerid
);
pcount
++;
} } if (pcount
> 0) { printf("==Dynamic organization filterscript by Jakku reloaded!==");
printf("==Data loaded for %d connected players==", pcount
);
} return 1;
}public OnPlayerRequestClass
(playerid, classid
){ if(IsPlayerNPC
(playerid
)) return 1;
SetPlayerPos
(playerid,
-329.4759,
1536.7206,
76.6117);
SetPlayerFacingAngle
(playerid,
208.6522);
SetPlayerCameraPos
(playerid,
-327.5824,
1533.8258,
75.3594);
SetPlayerCameraLookAt
(playerid,
-329.4759,
1536.7206,
76.6117);
PlayerPlaySound
(playerid,
1183 ,
0.0,
0.0,
0.0);
return 1;
}public PayDay
(){ for (new i
=0;i
<MAX_PLAYERS;i
++) { if (IsPlayerConnected
(i
)) { if (PlayerOrg
[i
] != 0) { new string
[80];
format(string,
sizeof(string
),
"You have earned from your org. ($%d)", WAGE
);
SendClientMessage
(i, COLOR_GREY, string
);
CollectedWage
[i
]+=WAGE;
SavePlayerOrgInfo
(i
);
} } }}public AutoSave
(){ for (new i
=0;i
<MAX_PLAYERS;i
++) { if (IsPlayerConnected
(i
)) { SavePlayerOrgInfo
(i
);
} } SaveLeaders
();
}public CheckArea
(){ for (new i
=0;i
<MAX_PLAYERS;i
++) { if (IsPlayerConnected
(i
)) { new count, name
[32];
for (new c
=1;c
<OrgsCount
+1;c
++) { if (DoesOrgExist
(GetOrgName
(c
))) { for (new a
=1;a
<Organization
[c
][ZonesCreated
]+1;a
++) { if (IsPlayerInArea
(i, Organization
[c
][ZoneMinX
][a
],Organization
[c
][ZoneMinY
][a
],Organization
[c
][ZoneMaxX
][a
],Organization
[c
][ZoneMaxY
][a
])) { count
++;
name
= GetOrgName
(c
);
} } } } if (count
!= 0) { if (GetPVarInt
(i,
"IsInOrgZone") == 0) { new string
[120];
if (strcmp(name, GetOrgName
(i
), true
) == 0) format(string,
sizeof(string
),
"Welcome to your organization's zone!");
else format(string,
sizeof(string
),
"You are now in {5CB3FF}%s's{FFFFFF} zone!", name
);
SendClientMessage
(i, COLOR_WHITE, string
);
SetPVarInt
(i,
"IsInOrgZone",
1);
return 1;
} } else { SetPVarInt
(i,
"IsInOrgZone",
0);
} } } return 1;
}public OnGameModeExit
(){ print("Thank you for using Jakku's Dynamic organizations- filterscript");
print("© 2011 - 2012");
for (new i
=1;i
<OrgsCount
+1;i
++) { for (new a
=0;a
<MAX_ORG_VEHICLES;a
++) { if (IsVehicleConnected
(Organization
[i
][Vehicles
][a
])) { DestroyVehicle
(Organization
[i
][Vehicles
][a
]);
} } Delete3DTextLabel
(Organization
[i
][OrgLabel
]);
} for (new playerid
= 0;playerid
<MAX_PLAYERS;playerid
++) { if (IsPlayerConnected
(playerid
)) { SavePlayerOrgInfo
(playerid
);
} } SaveLeaders
();
return 1;
}public OnPlayerConnect
(playerid
){ PlayerOrg
[playerid
] = 0;
//Resetting player org PlayerLeader
[playerid
] = 0;
//Resetting player org leader status Requesting
[playerid
] = 0;
CollectedWage
[playerid
] = 0;
PlayerRank
[playerid
] = "None";
if(!dini_Exists
(PlayerPath
(playerid
))) //Creating file (check stock PlayerPath(playerid) ) { SendClientMessage
(playerid, COLOR_ORANGE,
"As this is your first visit here, we decided to tell you that this server is using Dynamic organization- script by Jakku");
dini_Create
(PlayerPath
(playerid
));
} else { LoadPlayerOrgInfo
(playerid
);
} return 1;
}public OnPlayerDisconnect
(playerid, reason
){ SavePlayerOrgInfo
(playerid
);
return 1;
}public OnPlayerSpawn
(playerid
){ PlayerPlaySound
(playerid,
1184 ,
0.0,
0.0,
0.0);
if (IsLeader
(playerid
)) { SetPlayerSkin
(playerid,
61);
} if (PlayerOrg
[playerid
] == 1) { SetPlayerPos
(playerid,
414.6559,
2531.7651,
19.1601);
GivePlayerWeapon
(playerid,
35,
60);
//Rocket Launcher GivePlayerWeapon
(playerid,
30,
200);
//AK-47 SetPlayerTeam
(playerid,
0);
SetPlayerColor
(playerid, COLOR_RED
);
} if (PlayerOrg
[playerid
] == 2) { SetPlayerColor
(playerid,COLOR_GREY
);
SetPlayerTeam
(playerid,
1);
SetPlayerPos
(playerid,
1607.7803,
1169.4840,
14.2188);
GivePlayerWeapon
(playerid,
35,
60);
//Rocket Launcher GivePlayerWeapon
(playerid,
26,
100);
//Sawn-off Shotgun GivePlayerWeapon
(playerid,
30,
200);
//AK-47 } if (PlayerOrg
[playerid
] == 3) { SetPlayerColor
(playerid,COLOR_BLUE
);
SetPlayerTeam
(playerid,
2);
SetPlayerPos
(playerid,
1998.3118,
-2352.3438,
13.5469);
GivePlayerWeapon
(playerid,
35,
60);
//Rocket Launcher GivePlayerWeapon
(playerid,
26,
100);
//Sawn-off Shotgun GivePlayerWeapon
(playerid,
30,
200);
//AK-47 } if (PlayerOrg
[playerid
] == 4) { SetPlayerColor
(playerid,COLOR_YELLOW
);
SetPlayerTeam
(playerid,
3);
SetPlayerPos
(playerid,
-687.5341,
425.3484,
11.5729);
GivePlayerWeapon
(playerid,
35,
60);
//Rocket Launcher GivePlayerWeapon
(playerid,
26,
100);
//Sawn-off Shotgun GivePlayerWeapon
(playerid,
30,
200);
//AK-47 } if (PlayerOrg
[playerid
] != 0) { if (GetPVarInt
(playerid,
"Dead") == 0) { new string
[200];
new leader
[4];
if (IsLeader
(playerid
)) leader
= "Yes";
else leader
= "No";
format(string,
sizeof(string
),
"Organization: {5CB3FF}%s {FFFFFF}|| Leader: {5CB3FF}%s {FFFFFF}|| Rank: {5CB3FF}%s", GetOrgName
(PlayerOrg
[playerid
]), leader, PlayerRank
[playerid
]);
SendClientMessage
(playerid, COLOR_WHITE, string
);
GiveOrgFeatures
(playerid
);
} } SetPVarInt
(playerid,
"Dead",
0);
for (new i
=1;i
<OrgsCount
+1;i
++) { for (new a
=1;a
<Organization
[i
][ZonesCreated
]+1;a
++) { GangZoneShowForPlayer
(playerid, Organization
[i
][Zones
][a
], Organization
[i
][ZoneColor
][a
]);
} } return 1;
}public OnPlayerDeath
(playerid, killerid, reason
){SetPVarInt
(playerid,
"Dead",
1);
}public OnPlayerCommandText
(playerid, cmdtext
[]){ return 0;
}public OnPlayerEnterCheckpoint
(playerid
){ return 1;
}public OnPlayerPickUpPickup
(playerid, pickupid
){ return 1;
}public OnDialogResponse
(playerid, dialogid, response, listitem, inputtext
[]){ if (dialogid
== 755) { if (response
) { new string
[120];
format(string,
sizeof(string
),
"You have resigned from %s", Organization
[PlayerOrg
[playerid
]][Name
]);
SendClientMessage
(playerid, COLOR_YELLOW, string
);
format(string,
sizeof(string
),
"**%s has resigned from %s", PlayerName
(playerid
), Organization
[PlayerOrg
[playerid
]][Name
]);
SendClientMessageToAllEx
(playerid, COLOR_GREY, string
);
if (IsLeader
(playerid
)) { new none
[24];
format(none,
sizeof(none
),
"None");
Organization
[PlayerOrg
[playerid
]][Leader
] = none;
} ResetPlayerOrg
(playerid
);
SavePlayerOrgInfo
(playerid
);
} else { SendClientMessage
(playerid, COLOR_YELLOW,
"Resignation cancelled");
} } if (dialogid
== 756 && response
) { switch (listitem
) { case 0: { for (new i
=1;i
<OrgsCount
+1;i
++) { if (IsPlayerInRangeOfPoint
(playerid,
3.0, Organization
[i
][X
], Organization
[i
][Y
],Organization
[i
][Z
])) { new string
[140];
format(string,
sizeof(string
),
"{5CB3FF}Organization: {FFFFFF}%s\n{5CB3FF}Leader: {FFFFFF}%s", GetOrgName
(i
), Organization
[i
][Leader
]);
ShowPlayerDialog
(playerid,
757, DIALOG_STYLE_MSGBOX,
"Organization",string,
"Close",
"");
return 1;
} } } case 1: { if (CollectedWage
[playerid
] <= 0) return SendClientMessage
(playerid, COLOR_RED,
"You don't have any wage earned yet!");
new string
[80];
format(string,
sizeof(string
),
"You have collected $%d", CollectedWage
[playerid
]);
SendClientMessage
(playerid, COLOR_YELLOW, string
);
GivePlayerMoney
(playerid, CollectedWage
[playerid
]);
CollectedWage
[playerid
] = 0;
SavePlayerOrgInfo
(playerid
);
} } } return 1;
}public OnPlayerStateChange
(playerid,newstate,oldstate
){ if (newstate
== PLAYER_STATE_DRIVER
) { for (new i
=1;i
<OrgsCount
+1;i
++) { for (new a
=0;a
<MAX_ORG_VEHICLES;a
++) { new vehicleid
= GetPlayerVehicleID
(playerid
);
if (IsVehicleConnected
(vehicleid
)) { if (vehicleid
== Organization
[i
][Vehicles
][a
] && PlayerOrg
[playerid
] != i
) { if (DoesOrgExist
(GetOrgName
(i
))) { new string
[100];
format(string,
sizeof(string
),
"This vehicle belongs to %s. You are not authorized to use it", GetOrgName
(i
));
SendClientMessage
(playerid, COLOR_RED, string
);
RemovePlayerFromVehicle
(playerid
);
} } } } } } return 1;
}stock PlayerName
(playerid
){ new playername
[24];
GetPlayerName
(playerid, playername,
24);
return playername;
}stock CreateOrganization
(name
[32],
Float:x,
Float:y,
Float:z
){OrgsCount
++;
if (OrgsCount
>= MAX_ORGS
) return printf("You have exceeded the MAX_ORGS- define! Aborted");
new id
= OrgsCount;
Organization
[id
][Name
] = name;
Organization
[id
][X
] = x;
Organization
[id
][Y
] = y;
Organization
[id
][Z
] = z;
printf("Organization created: ID: %d || Name: %s",id, name
);
new string
[100];
format(string,
sizeof(string
),
"{5CB3FF}HQ:{FFFFFF} %s\nType {5CB3FF}/org{FFFFFF} for more information!",name
);
Organization
[id
][OrgLabel
] = Create3DTextLabel
(string, 0x008080FF, x, y, z,
25.0,
0);
return 1;
}stock PlayerPath
(playerid
){new path
[45];
format(path,
sizeof(path
),
"Orginfo_%s.ini", PlayerName
(playerid
));
return path;
}stock SaveLeaders
(){ new part
[40];
if (!dini_Exists
(SAVE_LEADERS_TO
)) { dini_Create
(SAVE_LEADERS_TO
);
} for (new i
=1;i
<OrgsCount
+1;i
++) { format(part,
sizeof(part
),
"%d", i
);
dini_Set
(SAVE_LEADERS_TO,part,Organization
[i
][Leader
]);
}}stock LoadLeaders
(){ new part
[24];
new part2
[40];
if (!dini_Exists
(SAVE_LEADERS_TO
)) { for (new i
=1;i
<OrgsCount
+1;i
++) { dini_Create
(SAVE_LEADERS_TO
);
format(part,
sizeof(part
),
"None");
Organization
[i
][Leader
] = part;
SaveLeaders
();
} return 1;
} for (new i
=1;i
<OrgsCount
+1;i
++) { format(part2,
sizeof(part2
),
"%d", i
);
format(part,
sizeof(part
),dini_Get
(SAVE_LEADERS_TO,part2
));
if (strcmp(part,
" ", false
) == 0) { part
= "None";
} Organization
[i
][Leader
] = part;
} return 1;
}stock SavePlayerOrgInfo
(playerid
){if (!dini_Exists
(PlayerPath
(playerid
))){dini_Create
(PlayerPath
(playerid
));
}//dini_Set(savef,"ContactName1",ContactNames[0][playerid]);dini_Set
(PlayerPath
(playerid
),
"Org",Organization
[PlayerOrg
[playerid
]][Name
]);
dini_Set
(PlayerPath
(playerid
),
"Rank",PlayerRank
[playerid
]);
dini_IntSet
(PlayerPath
(playerid
),
"CollectedWage",CollectedWage
[playerid
]);
}stock LoadPlayerOrgInfo
(playerid
){new string
[45];
format(string,
sizeof(string
),
"%s",dini_Get
(PlayerPath
(playerid
),
"Org"));
PlayerOrg
[playerid
] = GetOrgID
(string
);
new string2
[28];
format(string2,
sizeof(string2
),
"%s",dini_Get
(PlayerPath
(playerid
),
"Rank"));
PlayerRank
[playerid
] = string2;
CollectedWage
[playerid
] = dini_Int
(PlayerPath
(playerid
),
"CollectedWage");
if (strcmp(Organization
[PlayerOrg
[playerid
]][Leader
], PlayerName
(playerid
),true
) == 0 && PlayerOrg
[playerid
] != 0){PlayerLeader
[playerid
] = 1;
}}stock GiveOrgFeatures
(playerid
){ new org
= PlayerOrg
[playerid
];
if (!org
) return 1;
GivePlayerWeapon
(playerid, Organization
[org
][Weapons
][0],Organization
[org
][Ammo
][0]);
GivePlayerWeapon
(playerid, Organization
[org
][Weapons
][1],Organization
[org
][Ammo
][1]);
GivePlayerWeapon
(playerid, Organization
[org
][Weapons
][2],Organization
[org
][Ammo
][2]);
#if defined SPAWN_WITH_ORG_SKIN SetPlayerSkin
(playerid, Organization
[org
][Skin
]);
#endif return 1;
}stock GetOrgName
(orgid
){new name
[32];
format(name,
sizeof(name
),
"%s",Organization
[orgid
][Name
]);
if (orgid
== 0) format(name,
sizeof(name
),
"None");
return name;
}stock SendClientMessageToAllEx
(exception, clr,
const message
[]){ for(new i; i
<MAX_PLAYERS; i
++) { if(IsPlayerConnected
(i
)) { if(i
!= exception
) { SendClientMessage
(i, clr, message
);
} } }}stock ResetPlayerOrg
(playerid
){if (PlayerOrg
[playerid
] == 0) return 1;
printf("%s has been removed from %s", PlayerName
(playerid
), GetOrgName
(PlayerOrg
[playerid
]));
SetPlayerSkin
(playerid,
0);
ResetPlayerWeapons
(playerid
);
PlayerOrg
[playerid
] = 0;
Requesting
[playerid
] = 0;
PlayerLeader
[playerid
] = 0;
return 1;
}CMD:resign
(playerid, params
[]){#pragma unused paramsif (PlayerOrg
[playerid
] == 0) return SendClientMessage
(playerid, COLOR_RED,
"You are not a member of an organization");
ShowPlayerDialog
(playerid,
755, DIALOG_STYLE_MSGBOX,
"{FFFFFF}Are you sure you want to resign?",
"{FFFFFF}Please {00FF00}confirm {FFFFFF}your resignation request",
"Resign",
"Cancel");
return 1;
}CMD:ochat
(playerid, params
[]){if (PlayerOrg
[playerid
] == 0) return SendClientMessage
(playerid, COLOR_RED,
"You are not a member of an organization");
new text
[100];
if (sscanf
(params,
"s[100]", text
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /ochat [message]");
new org
= PlayerOrg
[playerid
];
new string
[128];
format(string,
sizeof(string
),
"{5CB3FF}(Org Chat) {FFFFFF}(%s): %s", PlayerName
(playerid
), text
);
SendClientMessageToOrg
(GetOrgName
(org
), COLOR_WHITE, string
);
return 1;
}CMD:teletohq
(playerid, params
[]){#pragma unused params #if defined ENABLE_HQ_TELE if (PlayerOrg
[playerid
] == 0) return SendClientMessage
(playerid, COLOR_RED,
"You are not a member of an organization");
if (IsPlayerInRangeOfPoint
(playerid,
10.0,Organization
[PlayerOrg
[playerid
]][X
],Organization
[PlayerOrg
[playerid
]][Y
],Organization
[PlayerOrg
[playerid
]][Z
])) { SendClientMessage
(playerid, COLOR_RED,
"You are already close to your HQ!");
return 1;
} SetPlayerPos
(playerid, Organization
[PlayerOrg
[playerid
]][X
],Organization
[PlayerOrg
[playerid
]][Y
],Organization
[PlayerOrg
[playerid
]][Z
]);
SendClientMessage
(playerid, COLOR_YELLOW,
"You have teleported to your HQ");
#else SendClientMessage
(playerid, COLOR_RED,
"This feature has been disabled");
#endifreturn 1;
}CMD:ovrespawn
(playerid, params
[]){#pragma unused paramsif (!IsLeader
(playerid
)) return SendClientMessage
(playerid, COLOR_RED,
"You are not the leader of an organization!");
new org
= PlayerOrg
[playerid
];
if (Organization
[org
][VehiclesCreated
] <= 0) return SendClientMessage
(playerid, COLOR_RED,
"There are no vehicles created for your org!");
SendClientMessage
(playerid, COLOR_YELLOW,
"You have respawned your org. vehicles!");
for (new i
=0;i
<MAX_ORG_VEHICLES;i
++){ if (IsVehicleConnected
(Organization
[org
][Vehicles
][i
])) { SetVehicleToRespawn
(Organization
[org
][Vehicles
][i
]);
}}return 1;
}CMD:org
(playerid, params
[]){#pragma unused params for (new i
=1;i
<OrgsCount
+1;i
++) { if (IsPlayerInRangeOfPoint
(playerid,
3.0, Organization
[i
][X
],Organization
[i
][Y
],Organization
[i
][Z
])) { new string
[35];
new string2
[80];
format(string,
sizeof(string
),
"%s", GetOrgName
(i
));
format(string2,
sizeof(string2
),
"Information");
if (PlayerOrg
[playerid
] == i
) format(string2,
sizeof(string2
),
"Information\nCollect Wage");
ShowPlayerDialog
(playerid,
756, DIALOG_STYLE_LIST, string,string2,
"Ok",
"Cancel");
return 1;
} } SendClientMessage
(playerid, COLOR_RED,
"You are not close enough to an organization!");
return 1;
}CMD:setmember
(playerid, params
[]){if (!IsLeader
(playerid
)) return SendClientMessage
(playerid,COLOR_RED,
"You are not the leader of an organization");
new ID;
if (sscanf
(params,
"u", ID
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /setmember [playerid]");
if (!IsPlayerConnected
(ID
) || ID
== playerid
) return 1;
new org
= PlayerOrg
[playerid
];
if (PlayerOrg
[ID
]) return SendClientMessage
(playerid, COLOR_RED,
"That player already belongs to an organization");
if (Requesting
[ID
] != org
) return SendClientMessage
(playerid, COLOR_RED,
"That player is not requesting to join your organization!");
new string
[120];
format(string,
sizeof(string
),
"%s has set you as a member of %s", PlayerName
(playerid
), GetOrgName
(org
));
SendClientMessage
(ID, COLOR_YELLOW, string
);
format(string,
sizeof(string
),
"You have set %s a member of %s", PlayerName
(ID
), GetOrgName
(org
));
SendClientMessage
(playerid, COLOR_YELLOW, string
);
PlayerOrg
[ID
] = org;
GiveOrgFeatures
(ID
);
Requesting
[ID
] = 0;
return 1;
}CMD:setleader
(playerid, params
[]){if (!IsPlayerAdmin
(playerid
)) return SendClientMessage
(playerid,COLOR_RED,
"You must be logged into RCON to use this command!");
new ID,orgid;
if (sscanf
(params,
"ud", ID,orgid
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /setleader [playerid] [orgid]");
if (!IsPlayerConnected
(ID
)) return 1;
if (PlayerOrg
[ID
]) return SendClientMessage
(playerid, COLOR_RED,
"That player already belongs to an organization");
if (orgid
< 1 || orgid
> OrgsCount
) return SendClientMessage
(playerid, COLOR_RED,
"Invalid org. ID!");
new string
[140];
format(string,
sizeof(string
),
"An admin %s has set you as the leader of %s", PlayerName
(playerid
), GetOrgName
(orgid
));
SendClientMessage
(ID, COLOR_YELLOW, string
);
format(string,
sizeof(string
),
"You have set %s the leader of %s", PlayerName
(ID
), GetOrgName
(orgid
));
SendClientMessage
(playerid, COLOR_YELLOW, string
);
PlayerOrg
[ID
] = orgid;
PlayerLeader
[ID
] = 1;
Organization
[orgid
][Leader
] = PlayerName
(ID
);
SaveLeaders
();
SavePlayerOrgInfo
(ID
);
GiveOrgFeatures
(ID
);
return 1;
}CMD:setrank
(playerid, params
[]){if (!IsLeader
(playerid
)) return SendClientMessage
(playerid,COLOR_RED,
"You are not the leader of an organization");
new ID, rank
[28];
if (sscanf
(params,
"us[28]", ID, rank
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /setrank [playerid] [rank]");
if (strlen(rank
) > 28) return SendClientMessage
(playerid, COLOR_RED,
"The maximum rank length is 28 characters!");
if (!IsPlayerConnected
(ID
)) return 1;
new org
= PlayerOrg
[playerid
];
if (PlayerOrg
[ID
] != org
) return SendClientMessage
(playerid, COLOR_RED,
"That player does not belong to your organization");
new string
[120];
format(string,
sizeof(string
),
"Your leader %s has given you a rank: '%s'", PlayerName
(playerid
), rank
);
SendClientMessage
(ID, COLOR_YELLOW, string
);
format(string,
sizeof(string
),
"You have given a rank to %s (%s)", PlayerName
(ID
), rank
);
SendClientMessage
(playerid, COLOR_YELLOW, string
);
PlayerRank
[ID
] = rank;
SavePlayerOrgInfo
(ID
);
return 1;
}CMD:kickmember
(playerid, params
[]){if (!IsLeader
(playerid
)) return SendClientMessage
(playerid,COLOR_RED,
"You are not the leader of an organization");
new ID;
if (sscanf
(params,
"u", ID
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /kickmember [playerid]");
if (!IsPlayerConnected
(ID
) || ID
== playerid
) return 1;
new org
= PlayerOrg
[playerid
];
if (PlayerOrg
[ID
] != org
) return SendClientMessage
(playerid, COLOR_RED,
"That player does not belong to your organization");
new string
[130];
format(string,
sizeof(string
),
"%s has kicked you from %s", PlayerName
(playerid
), GetOrgName
(org
));
SendClientMessage
(ID, COLOR_YELLOW, string
);
format(string,
sizeof(string
),
"You have kicked %s from %s", PlayerName
(ID
), GetOrgName
(org
));
SendClientMessage
(playerid, COLOR_YELLOW, string
);
ResetPlayerOrg
(ID
);
return 1;
}CMD:request
(playerid, params
[]){if (PlayerOrg
[playerid
] > 0) return SendClientMessage
(playerid, COLOR_RED,
"You already belong to an organization!");
if (Requesting
[playerid
] > 0) return SendClientMessage
(playerid, COLOR_RED,
"You are already requesting to join an organization!");
new ID;
if (sscanf
(params,
"d", ID
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /request [org id]");
if (ID
< 1 || ID
> OrgsCount
) return SendClientMessage
(playerid,COLOR_RED,
"Invalid organization ID! Type /orglist for a complete list");
if (!IsLeaderOnline
(ID
)) return SendClientMessage
(playerid,COLOR_RED,
"The leader of this organization is currently offline!");
new string
[120];
format(string,
sizeof(string
),
"%s is requesting to join the %s", PlayerName
(playerid
), GetOrgName
(ID
));
SendClientMessageToAllEx
(playerid, COLOR_GREY, string
);
format(string,
sizeof(string
),
"Your request to %s has been sent", GetOrgName
(ID
));
SendClientMessage
(playerid, COLOR_YELLOW, string
);
Requesting
[playerid
] = ID;
return 1;
}CMD:decline
(playerid, params
[]){#pragma unused paramsif (!IsLeader
(playerid
)) return SendClientMessage
(playerid,COLOR_RED,
"You are not the leader of an organization");
new ID;
if (sscanf
(params,
"u", ID
)) return SendClientMessage
(playerid,COLOR_WHITE,
"Usage: /decline [playerid]");
if (!IsPlayerConnected
(ID
) || ID
== playerid
) return 1;
new org
= PlayerOrg
[playerid
];
if (Requesting
[ID
] != org
) return SendClientMessage
(playerid, COLOR_RED,
"That player is not requesting to join your organization!");
new string
[120];
format(string,
sizeof(string
),
"Your request to %s has been declined by %s", GetOrgName
(org
), PlayerName
(playerid
));
SendClientMessage
(ID, COLOR_GREY, string
);
format(string,
sizeof(string
),
"You have successfully declined %s's request", PlayerName
(ID
));
SendClientMessage
(playerid, COLOR_YELLOW, string
);
Requesting
[ID
] = 0;
return 1;
}CMD:orglist
(playerid, params
[]){#pragma unused paramsnew string
[90];
if (OrgsCount
== 0) return SendClientMessage
(playerid, COLOR_RED,
"Sorry, there are no organizations created at the moment!");
SendClientMessage
(playerid, COLOR_WHITE,
"Current organizations:");
for (new i
=1;i
<OrgsCount
+1;i
++){format(string,
sizeof(string
),
"ID: %d || Name: %s || Leader: %s", i, GetOrgName
(i
), Organization
[i
][Leader
]);
SendClientMessage
(playerid, COLOR_YELLOW, string
);
}return 1;
}CMD:members
(playerid, params
[]){#pragma unused paramsif (!IsLeader
(playerid
)) return SendClientMessage
(playerid, COLOR_RED,
"You're not the leader of an organization");
new string
[60];
new count
= 0;
SendClientMessage
(playerid, COLOR_YELLOW,
"Employees online");
for (new i
=0;i
<MAX_PLAYERS;i
++) { if (IsPlayerConnected
(i
)) { if (PlayerOrg
[i
] == PlayerOrg
[playerid
] && i
!= playerid
) { format(string,
sizeof(string
),
"%s - %s", PlayerName
(i
), PlayerRank
[i
]);
SendClientMessage
(playerid, COLOR_WHITE, string
);
count
++;
} }}if (count
== 0){SendClientMessage
(playerid, COLOR_YELLOW,
"None of your employees are online");
} else { format(string,
sizeof(string
),
"%d member(s) online", count
);
SendClientMessage
(playerid, COLOR_WHITE, string
);
}return 1;
}CMD:myorg
(playerid, params
[]){#pragma unused paramsif (PlayerOrg
[playerid
] == 0) return SendClientMessage
(playerid, COLOR_RED,
"You are not a member of an organization");
new string
[140];
format(string,
sizeof(string
),
"{5CB3FF}Organization: {FFFFFF}%s\n{5CB3FF}Leader: {FFFFFF}%s", GetOrgName
(PlayerOrg
[playerid
]), Organization
[PlayerOrg
[playerid
]][Leader
]);
ShowPlayerDialog
(playerid,
757, DIALOG_STYLE_MSGBOX,
"My organization", string,
"Ok",
"");
return 1;
}CMD:orghelp
(playerid, params
[]){#pragma unused paramsSendClientMessage
(playerid, COLOR_YELLOW,
"Dynamic Organizations by Jakku");
SendClientMessage
(playerid, COLOR_WHITE,
"/orglist || /myorg || /request || /resign || /org || /ochat");
if (IsPlayerAdmin
(playerid
)) SendClientMessage
(playerid, COLOR_WHITE,
"RCON- Admin commands: /setleader");
if (IsLeader
(playerid
)) SendClientMessage
(playerid, COLOR_WHITE,
"Leader commands: /setmember || /kickmember || /setrank || /members || /ovrespawn || /decline");
return 1;
}stock GetOrgID
(name
[]){ if (strlen(name
) <= 0) return 0;
for (new i
=1;i
<OrgsCount
+1;i
++) { if (strcmp(name,Organization
[i
][Name
],true
) == 0) return i;
} return 0;
}stock CreateOrgVehicle
(org
[32], model,
Float:x,
Float:y,
Float:z,
Float:rot, clr1,clr2
){if (!DoesOrgExist
(org
)) return printf("You are attempting to create org. vehicles for an org. which does not exist!");
new orgid
= GetOrgID
(org
);
new freeslot
= Organization
[orgid
][VehiclesCreated
];
if (freeslot
>= MAX_ORG_VEHICLES
) return printf("Error: %s cannot handle more vehicles! Aborted", org
);
Organization
[orgid
][Vehicles
][freeslot
] = CreateVehicle
(model, x,y,z,rot,clr1,clr2,
900);
printf("Added org. vehicle: %d to slot %d for %s",model,freeslot
+1, org
);
Organization
[orgid
][VehiclesCreated
]++;
return 1;
}stock IsLeaderOnline
(org
){ for (new i
= 0; i
< MAX_PLAYERS; i
++) { if (IsPlayerConnected
(i
)) { if (PlayerOrg
[i
] == org
&& PlayerLeader
[i
] == 1) return true;
} } return false;
}stock IsLeader
(playerid
){ if (PlayerOrg
[playerid
] != 0 && PlayerLeader
[playerid
] == 1) return 1;
return 0;
}stock IsVehicleConnected
(vehicleid
){ new Float:x1,
Float:y1,
Float:z1;
GetVehiclePos
(vehicleid,x1,y1,z1
);
if(x1
==0.0 && y1
==0.0 && z1
==0.0) { return 0;
} return 1;
}stock DoesOrgExist
(orgname
[32]){ for (new i
=1;i
<OrgsCount
+1;i
++) { if (strcmp(Organization
[i
][Name
], orgname, true
) == 0) return 1;
} return 0;
}stock CreateOrganizationZone
(orgname
[32],
Float:minx,
Float:miny,
Float:maxx,
Float:maxy, color
){ if (!DoesOrgExist
(orgname
)) return printf("Error: You are attempting to create a gangzone for '%s' which does not exist", orgname
);
new orgid
= GetOrgID
(orgname
);
Organization
[orgid
][ZonesCreated
]++;
if (Organization
[orgid
][ZonesCreated
] >= MAX_ZONES_PER_ORG
) return printf("Error: You are attempting to create more than %d zones for %s", MAX_ZONES_PER_ORG, orgname
);
new id
= Organization
[orgid
][ZonesCreated
];
Organization
[orgid
][ZoneMinX
][id
] = minx;
Organization
[orgid
][ZoneMinY
][id
] = miny;
Organization
[orgid
][ZoneMaxX
][id
] = maxx;
Organization
[orgid
][ZoneMaxY
][id
] = maxy;
Organization
[orgid
][ZoneColor
][id
] = hexToDec
(color
);
Organization
[orgid
][Zones
][id
] = GangZoneCreate
(minx, miny, maxx, maxy
);
ZoneCount
++;
return ZoneCount;
}stock hexToDec
(hex
) { new out
[11];
format(out,
11,
"%i", hex
);
return strval(out
);
}stock IsPlayerInArea
(playerid,
Float:MinX,
Float:MinY,
Float:MaxX,
Float:MaxY
){ new Float:AX,
Float:AY,
Float:AZ;
GetPlayerPos
(playerid, AX, AY, AZ
);
if (AX
> MinX
&& AX
< MaxX
&& AY
> MinY
&& AY
< MaxY
) return true;
else return false;
}stock IsPlayerInOrgZone
(playerid, orgname
[32]){ new orgid
= GetOrgID
(orgname
);
if (DoesOrgExist
(orgname
)) { for (new i
=1;i
<ZoneCount
+1;i
++) { if (Organization
[orgid
][ZoneMinX
][i
] != 0.0) { if (IsPlayerInArea
(playerid, Organization
[orgid
][ZoneMinX
][i
],Organization
[orgid
][ZoneMinY
][i
],Organization
[orgid
][ZoneMaxX
][i
],Organization
[orgid
][ZoneMaxY
][i
])) { return 1;
} } } } return 0;
}stock SendClientMessageToOrg
(orgname
[32], clr, msg
[]){ if (!DoesOrgExist
(orgname
)) return 0;
for (new i
=1;i
<OrgsCount
+1;i
++) { for (new a
=0;a
<MAX_PLAYERS;a
++) { if (IsPlayerConnected
(a
)) { if (strcmp(GetOrgName
(PlayerOrg
[a
]), orgname, false
) == 0) { SendClientMessage
(a, clr, msg
);
} } } } return 1;
}
It seems not to create the organizations / their vehicles properly. It should print some lines once this is done by the script. Anyways, try loading it as the first filterscript in server.cfg or whereever you want load it. And also check your spelling (Loading filterscript 'organizatii.amx'...) as the original filename is DynamicOrganizations (I assume you renamed them). And last but not the least, recompile the script with the newest sscanf plugin and includes.
EDIT: Why do you manually give the weapons to players in OnPlayerSpawn? You kinda ruin the idea of dynamic systems this way
.. and then call this in OnPlayerSpawn