Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- The MIT License (MIT)
- Copyright (c) 2014 James Monger
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- */
- #include <YSI\y_hooks>
- #include <YSI\y_master>
- #include <YSI\y_commands>
- forward INTEL_OnPlayerClaim(playerid, name[], level);
- #define MAX_INTEL_SPAWNS 50
- #define INVALID_INTEL_ID -1
- #define INTEL_OBJECT_ID 1429
- #define INTEL_REFRESH_RATE 1
- #define INTEL_CLAIM_RANGE 5
- #define INTEL_MESSAGE_COLOR 0x5CD147FF
- #define INTEL_MESSAGE_COLOR_EMBED "5CD147"
- new bool: PlayerCanClaimIntel[MAX_PLAYERS char];
- new StoredIntelSpawns = 0;
- new CurrentIntelObject;
- enum IntelSpawnInfo
- {
- Name[40],
- Float:PositionX,
- Float:PositionY,
- Float:PositionZ,
- Float:AngleX,
- Float:AngleY,
- Float:AngleZ,
- Level
- };
- new IntelSpawns[MAX_INTEL_SPAWNS][IntelSpawnInfo];
- new CurrentIntelId;
- hook OnGameModeInit()
- {
- CurrentIntelId = -1;
- }
- forward INTEL_GetClaimPermission(playerid);
- public INTEL_GetClaimPermission(playerid)
- {
- return PlayerCanClaimIntel{playerid};
- }
- forward INTEL_SetClaimPermission(playerid, bool: canClaim);
- public INTEL_SetClaimPermission(playerid, bool: canClaim)
- {
- PlayerCanClaimIntel{playerid} = canClaim;
- #if defined INTEL_DEBUG_MODE
- if (canClaim)
- printf("INTEL_SetClaimPermission: Claim permission set to true for player %d", playerid);
- else
- printf("INTEL_SetClaimPermission: Claim permission set to false for player %d", playerid);
- #endif
- return 1;
- }
- forward INTEL_AddIntelSpawn(IntelName[], Float:IntelPositionX, Float:IntelPositionY, Float:IntelPositionZ, Float:IntelAngleX, Float:IntelAngleY, Float:IntelAngleZ, IntelLevel);
- public INTEL_AddIntelSpawn(IntelName[], Float:IntelPositionX, Float:IntelPositionY, Float:IntelPositionZ, Float:IntelAngleX, Float:IntelAngleY, Float:IntelAngleZ, IntelLevel)
- {
- if (StoredIntelSpawns >= MAX_INTEL_SPAWNS)
- {
- #if defined INTEL_DEBUG_MODE
- printf("INTEL_AddIntelSpawn: Intel limit reached!");
- #endif
- return INVALID_INTEL_ID;
- }
- new intelId = StoredIntelSpawns;
- format(IntelSpawns[intelId][Name], 40, "%s", IntelName);
- IntelSpawns[intelId][PositionX] = IntelPositionX;
- IntelSpawns[intelId][PositionY] = IntelPositionY;
- IntelSpawns[intelId][PositionZ] = IntelPositionZ;
- IntelSpawns[intelId][AngleX] = IntelAngleX;
- IntelSpawns[intelId][AngleY] = IntelAngleY;
- IntelSpawns[intelId][AngleZ] = IntelAngleZ;
- IntelSpawns[intelId][Level] = IntelLevel;
- #if defined INTEL_DEBUG_MODE
- printf("INTEL_AddIntelSpawn: Intel id %d (%s) added", intelId, IntelName);
- #endif
- StoredIntelSpawns++;
- return intelId;
- }
- new SpawnNewIntelTimer;
- forward INTEL_SpawnNewIntel();
- public INTEL_SpawnNewIntel()
- {
- KillTimer(SpawnNewIntelTimer);
- if (StoredIntelSpawns > -1)
- {
- new intelId = random(StoredIntelSpawns);
- new string[128];
- format(string, sizeof(string), "Some new intel has been discovered: {FFFFFF}%s{" INTEL_MESSAGE_COLOR_EMBED "}! It will last for %d minutes! Use /claimintel to claim it.", IntelSpawns[intelId][Name], INTEL_REFRESH_RATE);
- SendClientMessageToAll(INTEL_MESSAGE_COLOR, string);
- CurrentIntelObject = CreateObject(INTEL_OBJECT_ID, IntelSpawns[intelId][PositionX], IntelSpawns[intelId][PositionY], IntelSpawns[intelId][PositionZ], IntelSpawns[intelId][AngleX], IntelSpawns[intelId][AngleY], IntelSpawns[intelId][AngleZ]);
- CurrentIntelId = intelId;
- SpawnNewIntelTimer = SetTimer("INTEL_SpawnNewIntel", (INTEL_REFRESH_RATE * 60000), false);
- }
- return 1;
- }
- YCMD:claimintel(playerid, params[], help)
- {
- if (CurrentIntelId == -1)
- {
- SendClientMessage(playerid, INTEL_MESSAGE_COLOR, "There is no intel to be claimed!");
- return 1;
- }
- if (!INTEL_GetClaimPermission(playerid))
- {
- SendClientMessage(playerid, INTEL_MESSAGE_COLOR, "You don't have the relevant permissions to claim intel.");
- return 1;
- }
- if (IsPlayerInRangeOfPoint(playerid, INTEL_CLAIM_RANGE, IntelSpawns[CurrentIntelId][PositionX], IntelSpawns[CurrentIntelId][PositionY], IntelSpawns[CurrentIntelId][PositionZ]))
- {
- DestroyObject(CurrentIntelObject);
- CallRemoteFunction("INTEL_OnPlayerClaim", "dsd", playerid, IntelSpawns[CurrentIntelId][Name], IntelSpawns[CurrentIntelId][Level]);
- INTEL_SpawnNewIntel();
- }
- else
- {
- SendClientMessage(playerid, INTEL_MESSAGE_COLOR, "You're too far from the intel!");
- }
- return 1;
- }
- hook OnPlayerDisconnect(playerid)
- {
- INTEL_SetClaimPermission(playerid, false);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement