|
|
- //
- // ADMIN SPECTATE FILTER SCRIPT
- // kye 2007
- //
-
- #pragma tabsize 0
- #include <a_samp>
- #include <core>
- #include <float>
-
- #include "../include/gl_common.inc"
-
- #define COLOR_GREY 0xAFAFAFAA
- #define COLOR_GREEN 0x33AA33AA
- #define COLOR_RED 0xAA3333AA
- #define COLOR_YELLOW 0xFFFF00AA
- #define COLOR_WHITE 0xFFFFFFFF
-
- //------------------------------------------------------------------------------------------------------
-
- #define ADMIN_SPEC_TYPE_NONE 0
- #define ADMIN_SPEC_TYPE_PLAYER 1
- #define ADMIN_SPEC_TYPE_VEHICLE 2
-
- new gSpectateID[MAX_PLAYERS];
- new gSpectateType[MAX_PLAYERS];
-
- //------------------------------------------------------------------------------------------------------
-
- public OnFilterScriptInit()
- {
- }
-
- //------------------------------------------------------------------------------------------------------
-
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- // IF ANYONE IS SPECTATING THIS PLAYER, WE'LL ALSO HAVE
- // TO CHANGE THEIR INTERIOR ID TO MATCH
- new x = 0;
- while(x!=MAX_PLAYERS) {
- if( IsPlayerConnected(x) && GetPlayerState(x) == PLAYER_STATE_SPECTATING &&
- gSpectateID[x] == playerid && gSpectateType[x] == ADMIN_SPEC_TYPE_PLAYER )
- {
- SetPlayerInterior(x,newinteriorid);
- }
- x++;
- }
- }
-
- //------------------------------------------------------------------------------------------------------
-
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[256];
- new specplayerid, specvehicleid, idx;
-
- // WE ONLY DEAL WITH COMMANDS FROM ADMINS IN THIS FILTERSCRIPT
- if(!IsPlayerAdmin(playerid)) return 0;
-
- cmd = strtok(cmdtext, idx);
-
- // SPECTATE A PLAYER
- if(strcmp(cmd, "/specplayer", true) == 0) {
- new tmp[256];
- tmp = strtok(cmdtext, idx);
-
- if(!strlen(tmp)) {
- SendClientMessage(playerid, COLOR_WHITE, "USAGE: /specplayer [playerid]");
- return 1;
- }
- specplayerid = strval(tmp);
-
- if(!IsPlayerConnected(specplayerid)) {
- SendClientMessage(playerid, COLOR_RED, "specplayer: that player isn't active.");
- return 1;
- }
-
- TogglePlayerSpectating(playerid, 1);
- PlayerSpectatePlayer(playerid, specplayerid);
- SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
- gSpectateID[playerid] = specplayerid;
- gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
-
- return 1;
- }
-
- // SPECTATE A VEHICLE
- if(strcmp(cmd, "/specvehicle", true) == 0) {
- new tmp[256];
- tmp = strtok(cmdtext, idx);
-
- if(!strlen(tmp)) {
- SendClientMessage(playerid, COLOR_WHITE, "USAGE: /specvehicle [vehicleid]");
- return 1;
- }
- specvehicleid = strval(tmp);
-
- if(specvehicleid < MAX_VEHICLES) {
- TogglePlayerSpectating(playerid, 1);
- PlayerSpectateVehicle(playerid, specvehicleid);
- gSpectateID[playerid] = specvehicleid;
- gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
- }
- return 1;
- }
-
- // STOP SPECTATING
- if(strcmp(cmd, "/specoff", true) == 0) {
- TogglePlayerSpectating(playerid, 0);
- gSpectateID[playerid] = INVALID_PLAYER_ID;
- gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
- return 1;
- }
-
- return 0;
- }
-
- //------------------------------------------------------------------------------------------------------
-
-
|