Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #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
- #undef MAX_PLAYERS
- #define MAX_SLOTS 500 //The max players of your server
- #define COLOR_WHITE 0xFFFFFFAA
- #define COLOR_RED 0xFF0000AA
- #define COLOR_GREEN 0x00FF00AA
- #define MAX_STREETS 500
- new MoneyPerFolder = 150;
- new MinFolders = 10;
- new MaxFolders = 30;
- enum StreetInfo__ENUM()
- {
- sID,
- Float:sMinX,
- Float:sMaxX,
- Float:sMinY,
- Float:sMaxY,
- sStreetName[65],
- bool:sStreetSpawned
- };
- new StreetInfo[MAX_STREETS][StreetInfo__ENUM];
- new StreetCount = 0;
- forward CheckPlayerInArea(playerid);
- forward FailDelivering(playerid);
- enum pFJInfo__ENUM()
- {
- bool:JobStarted,
- CurrentStreetID,
- MoneyThisRound,
- CheckAreaTimer,
- FailTimer,
- bool:TimersStarted,
- SecondsInStreet,
- bool:StreetIsFlashing
- };
- new pFJInfo[MAX_SLOTS][pFJInfo__ENUM];
- new StreetZone[MAX_STREETS];
- public OnFilterScriptInit()
- {
- print(" ");
- print("\n****************************************************");
- print("* Folder Delivery Job v1.0 - By Kwarde :: Loading... *");
- AddStreet("Ganton", 2528.039, 2216.207, -1634.489, -1737.13);
- AddStreet("Jefferson", 2071.699, -1381.833, 2261.841, -1223.924);
- AddStreet("Playa Del Seville", 2706.773, -2068.74, 2790.435, -1906.883);
- AddStreet("Verdant Bluffs", 2706.773, -2068.74, 2790.435, -1906.883);
- printf("--> %d streets loaded", StreetCount);
- print("* Folder Delivery Job v1.0 - By Kwarde :: Loaded *");
- print("****************************************************\n");
- print(" ");
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- dcmd(startfj, 7, cmdtext);
- dcmd(stopfj, 6, cmdtext);
- return 0;
- }
- public OnFilterScriptExit()
- {
- print(" ");
- print("\n******************************************************");
- print("* Folder Delivery Job v1.0 - By Kwarde :: Unloading... *");
- for(new i = 0; i < MAX_STREETS; i++)
- if(StreetInfo[i][sStreetSpawned])
- RemoveStreet(i);
- for(new i = 0; i < MAX_SLOTS; i++)
- if(IsPlayerConnected(i) && pFJInfo[i][JobStarted])
- print("******************************************************\n");
- print("* Folder Delivery Job v1.0 - By Kwarde :: Unloaded *");
- print(" ");
- return 1;
- }
- public CheckPlayerInArea(playerid)
- {
- new pTmpName[MAX_PLAYER_NAME], string[128], streetid;
- GetPlayerName(playerid, pTmpName, MAX_PLAYER_NAME);
- if(pFJInfo[playerid][JobStarted]){
- streetid = pFJInfo[playerid][CurrentStreetID];
- if(IsPlayerInArea(playerid, StreetInfo[streetid][sMinX], StreetInfo[streetid][sMinY], StreetInfo[streetid][sMaxX], StreetInfo[streetid][sMaxY])){
- if(!pFJInfo[playerid][StreetIsFlashing]){
- GangZoneFlashForPlayer(playerid, StreetZone[streetid], COLOR_RED);
- pFJInfo[playerid][StreetIsFlashing] = true;
- }
- if(pFJInfo[playerid][SecondsInStreet] == 0)
- SendClientMessage(playerid, COLOR_GREEN, "FolderChief: Good. Now stay here 60 seconds");
- pFJInfo[playerid][SecondsInStreet]++;
- }
- if(!IsPlayerInArea(playerid, StreetInfo[streetid][sMinX], StreetInfo[streetid][sMinY], StreetInfo[streetid][sMaxX], StreetInfo[streetid][sMaxY]) && pFJInfo[playerid][SecondsInStreet] > 0){
- format(string, 128, "FolderChief: %s, don't leave there! Go back, now!", pTmpName);
- SendClientMessage(playerid, COLOR_RED, string);
- pFJInfo[playerid][SecondsInStreet] = 0;
- }
- if(!IsPlayerInArea(playerid, StreetInfo[streetid][sMinX], StreetInfo[streetid][sMinY], StreetInfo[streetid][sMaxX], StreetInfo[streetid][sMaxY]) && pFJInfo[playerid][StreetIsFlashing]){
- pFJInfo[playerid][StreetIsFlashing] = false;
- GangZoneStopFlashForPlayer(playerid, StreetZone[streetid]);
- }
- }
- return 1;
- }
- public FailDelivering(playerid)
- {
- new pTmpName[MAX_SLOTS], string[128];
- GetPlayerName(playerid, pTmpName, MAX_PLAYER_NAME);
- format(string, 128, "FolderChief: %s, I told you to deliver the folders within 10 minutes, they are over. You failed...", pTmpName);
- SendClientMessage(playerid, COLOR_RED, string);
- StopPlayerJob(playerid);
- return 1;
- }
- stock AddStreet(streetname[], Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
- {
- StreetCount++;
- StreetInfo[StreetCount][sID] = StreetCount;
- StreetInfo[StreetCount][sMinX] = MinX;
- StreetInfo[StreetCount][sMinY] = MinY;
- StreetInfo[StreetCount][sMaxX] = MaxX;
- StreetInfo[StreetCount][sMaxY] = MaxY;
- strset(StreetInfo[StreetCount][sStreetName], streetname);
- StreetInfo[StreetCount][sStreetSpawned] = true;
- StreetZone[StreetCount] = GangZoneCreate(MinX, MinY, MaxX, MaxY);
- }
- stock RemoveStreet(streetid)
- {
- StreetInfo[streetid][sID] = (-1);
- StreetInfo[streetid][sMinX] = 0.0;
- StreetInfo[streetid][sMinY] = 0.0;
- StreetInfo[streetid][sMaxX] = 0.0;
- StreetInfo[streetid][sMaxY] = 0.0;
- strset(StreetInfo[streetid][sStreetName], "Invalid");
- StreetInfo[StreetCount][sStreetSpawned] = false;
- GangZoneDestroy(StreetZone[streetid]);
- }
- stock strset(astr[], astrtoset[])
- {
- strdel(astr, 0, strlen(astr));
- strins(astr, astrtoset, 0, strlen(astrtoset));
- }
- stock IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
- {
- new Float:pX, Float:pY, Float:pZ;
- GetPlayerPos(playerid, pX, pY, pZ);
- if(pX >= MinX && pX <= MaxX && pY >= MinY && pY <= MaxY)
- return true;
- return false;
- }
- stock Float:GetCenterOfGangZone(Float:MinX, Float:MinY, Float:MaxX, Float:MaxY, &Float:X, &Float:Y) //Not used yet
- {
- new Float:xCenter, Float:yCenter;
- xCenter = (( MinX + MaxX ) / 2);
- yCenter = (( MinY + MaxY ) / 2);
- return Float:X = xCenter, Float:Y = yCenter;
- }
- stock StartJob(playerid)
- {
- new pTmpName[MAX_PLAYER_NAME], RandomStreet, RandomFolders, string[128], ActivatedStreets;
- GetPlayerName(playerid, pTmpName, MAX_PLAYER_NAME);
- for(new i = 0; i < MAX_STREETS; i++){
- if(StreetInfo[i][sStreetSpawned])
- ActivatedStreets++;
- if(i == 0){
- StopPlayerJob(playerid);
- StartJob(playerid);
- }
- }
- RandomStreet = random(ActivatedStreets);
- RandomFolders = MinFolders + random(MaxFolders - MinFolders);
- pFJInfo[playerid][CurrentStreetID] = RandomStreet;
- pFJInfo[playerid][MoneyThisRound] = RandomFolders * MoneyPerFolder;
- format(string, 128, "FolderChief: Hi %s. We've got some folders for you.", pTmpName);
- SendClientMessage(playerid, COLOR_WHITE, string);
- SendClientMessage(playerid, COLOR_WHITE, "FolderChief: Here's information of your folder job this time");
- format(string, 128, "FolderChief: Ammount of folders: %d. Money: $%d,-, Street: %s", RandomFolders, pFJInfo[playerid][MoneyThisRound], StreetInfo[pFJInfo[playerid][CurrentStreetID]][sStreetName]);
- SendClientMessage(playerid, COLOR_WHITE, string);
- SendClientMessage(playerid, COLOR_WHITE, "FolderChief: Go to the street and stay 60 seconds in the street. You've got 10 minutes. Now, go!");
- pFJInfo[playerid][CheckAreaTimer] = SetTimerEx("CheckPlayerInArea", 1000, true, "i", playerid);
- pFJInfo[playerid][FailTimer] = SetTimerEx("FailDelivering", 600000, false, "i", playerid);
- pFJInfo[playerid][TimersStarted] = true;
- pFJInfo[playerid][JobStarted] = true;
- GangZoneShowForPlayer(playerid, StreetZone[pFJInfo[playerid][CurrentStreetID]], COLOR_GREEN);
- return 1;
- }
- stock StopPlayerJob(playerid)
- return ResetPlayerJob(playerid);
- stock ResetPlayerJob(playerid)
- {
- GangZoneHideForPlayer(playerid, StreetZone[pFJInfo[playerid][CurrentStreetID]]);
- if(pFJInfo[playerid][TimersStarted]){
- KillTimer(pFJInfo[playerid][CheckAreaTimer]);
- KillTimer(pFJInfo[playerid][FailTimer]);
- pFJInfo[playerid][TimersStarted] = false;
- }
- pFJInfo[playerid][CurrentStreetID] = (-1);
- pFJInfo[playerid][MoneyThisRound] = 0;
- pFJInfo[playerid][CheckAreaTimer] = (-1);
- pFJInfo[playerid][FailTimer] = (-1);
- pFJInfo[playerid][TimersStarted] = false;
- pFJInfo[playerid][SecondsInStreet] = 0;
- pFJInfo[playerid][StreetIsFlashing] = false;
- pFJInfo[playerid][JobStarted] = false;
- return 1;
- }
- dcmd_startfj(playerid, params[])
- {
- #pragma unused params
- if(pFJInfo[playerid][JobStarted]) return SendClientMessage(playerid, COLOR_RED, "FolderChief: You are already doing a job. You can only do one job at once!");
- StartJob(playerid);
- return 1;
- }
- dcmd_stopfj(playerid, params[])
- {
- #pragma unused params
- if(!pFJInfo[playerid][JobStarted]) return SendClientMessage(playerid, COLOR_RED, "FolderChief: You aren't doing a folder job. How do you wanna cancel your job if you don't have one?");
- SendClientMessage(playerid, COLOR_RED, "FolderChief: Okay. Your job has been stopped. Please come back any time");
- StopPlayerJob(playerid);
- return 1;
- }
Add Comment
Please, Sign In to add comment