Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // [ IGNORE SYSTEM ]
- // INCLUDES:
- #include <a_samp>
- #include <sscanf2>
- #include <foreach>
- #include <zcmd>
- // PER-PLAYER VARIABLES:
- new bool:pIgnoringPlayer[MAX_PLAYERS][MAX_PLAYERS];
- // CALLBACKS:
- public OnFilterScriptInit()
- {
- return 1;
- }
- public OnFilterScriptExit()
- {
- ResetVariables();
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- ResetPlayerVariables(playerid);
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- new string[256];
- format(string, sizeof(string), "{%06x}%s (%d): {FFFFFF}%s", GetPlayerColor(playerid) >>> 8, PlayerName(playerid), playerid, text);
- SendPlayerMessage(110, playerid, 0xFFFFFFFF, string);
- return 0;
- }
- // COMMANDS:
- CMD:ignore(playerid, params[])
- {
- new string[144], lookupid;
- if(sscanf(params, "u", lookupid)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /ignore (id/name).");
- if(IsPlayerNPC(lookupid)) return SendClientMessage(playerid, 0xFF0000FF, "That player is a NPC, you can't ignore them!");
- if(lookupid == playerid) return SendClientMessage(playerid, 0xFF0000FF, "That player is you, you can't ignore yourself!");
- if(IsPlayerIgnoringPlayer(playerid, lookupid))
- {
- format(string, sizeof(string), "%s (%d) is already on your ignore list!", PlayerName(lookupid), lookupid);
- return SendClientMessage(playerid, 0xFF0000FF, string);
- }
- pIgnoringPlayer[playerid][lookupid] = true;
- format(string, sizeof(string), "%s (%d) has been added to your ignore list!", PlayerName(lookupid), lookupid);
- SendClientMessage(playerid, 0x808080FF, string);
- return 1;
- }
- CMD:unignore(playerid, params[])
- {
- new string[144], lookupid;
- if(sscanf(params, "u", lookupid)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /unignore (id/name).");
- if(IsPlayerNPC(lookupid)) return SendClientMessage(playerid, 0xFF0000FF, "That player is a NPC, you can't ignore them!");
- if(lookupid == playerid) return SendClientMessage(playerid, 0xFF0000FF, "That player is you, you can't ignore yourself!");
- if(!IsPlayerIgnoringPlayer(playerid, lookupid))
- {
- format(string, sizeof(string), "%s (%d) isn't on your ignore list!", PlayerName(lookupid), lookupid);
- return SendClientMessage(playerid, 0x808080FF, string);
- }
- pIgnoringPlayer[playerid][lookupid] = false;
- format(string, sizeof(string), "%s (%d) has been removed from your ignore list!", PlayerName(lookupid), lookupid);
- SendClientMessage(playerid, 0x808080FF, string);
- return 1;
- }
- CMD:pm(playerid, params[])
- {
- new string[256], lookupid, message[128];
- if(sscanf(params, "us[128]", lookupid, message)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /pm (id/name) (message).");
- if(IsPlayerNPC(lookupid)) return SendClientMessage(playerid, 0xFF0000FF, "That player is a NPC, you can't send a pm to them!");
- if(lookupid == playerid) return SendClientMessage(playerid, 0xFF0000FF, "That player is you, you can't send a pm to yourself!");
- if(IsPlayerIgnoringPlayer(lookupid, playerid) && !IsPlayerAdmin(playerid) && !IsPlayerAdmin(lookupid))
- {
- format(string, sizeof(string), "%s (%d) is currently ignoring you!", PlayerName(lookupid), lookupid);
- return SendClientMessage(playerid, 0x808080FF, string);
- }
- if(IsPlayerIgnoringPlayer(playerid, lookupid) && !IsPlayerAdmin(playerid) && !IsPlayerAdmin(lookupid))
- {
- format(string, sizeof(string), "You are currently ignoring %s (%d), unignore them first!", PlayerName(lookupid), lookupid);
- return SendClientMessage(playerid, 0x808080FF, string);
- }
- format(string, sizeof(string), "[PM-SENT] %s (%d): %s", PlayerName(lookupid), lookupid, message);
- SendMessage(100, playerid, 0xFFFF00FF, string);
- format(string, sizeof(string), "[PM-FROM] %s (%d): %s", PlayerName(playerid), playerid, message);
- SendMessage(100, lookupid, 0xFFFF00FF, string);
- return 1;
- }
- CMD:w(playerid, params[])
- {
- new string[256], message[128];
- if(sscanf(params, "s[128]", message)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /w (message).");
- format(string, sizeof(string), "[WHISPER] %s (%d): %s", PlayerName(playerid), playerid, message);
- SendWhisperMessage(100, 10.0, playerid, 0xFFFF00FF, string);
- return 1;
- }
- CMD:me(playerid, params[])
- {
- new string[256], message[128];
- if(sscanf(params, "s[128]", message)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /me (message).");
- if(strcmp(params, "'s", true, 2) == 0) format(string, sizeof(string), "* %s's (%d) %s *", PlayerName(playerid), playerid, message[3]);
- else format(string, sizeof(string), "* %s (%d) %s *", PlayerName(playerid), playerid, message);
- SendPlayerMessage(100, playerid, GetPlayerColor(playerid), string);
- return 1;
- }
- // FUNCTIONS:
- stock ResetVariables()
- {
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(pIgnoringPlayer[i][i]) pIgnoringPlayer[i][i] = false;
- if(pIgnoringPlayer[i][i]) pIgnoringPlayer[i][i] = false;
- }
- }
- stock ResetPlayerVariables(playerid)
- {
- for(new i = 0; i < MAX_PLAYERS; i ++)
- {
- if(pIgnoringPlayer[playerid][i]) pIgnoringPlayer[playerid][i] = false;
- if(pIgnoringPlayer[i][playerid]) pIgnoringPlayer[i][playerid] = false;
- }
- }
- stock PlayerName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- return name;
- }
- stock IsPlayerIgnoringPlayer(playerid, lookupid)
- {
- if(pIgnoringPlayer[playerid][lookupid]) return true;
- return false;
- }
- stock SendMessage(length, playerid, color, message[])
- {
- new len = strlen(message);
- if(len <= length) SendClientMessage(playerid, color, message);
- else
- {
- new string[144], lastspace, escape = floatround(length / 1.2);
- while(len > length)
- {
- format(string, sizeof(string), "%s", message);
- for(new i = 0; i <= len; i ++)
- {
- if(message[i] == ' ' && i <= length) lastspace = i;
- if(i > length) i = len;
- }
- if(lastspace == 0)
- {
- strdel(string, length, strlen(string));
- strdel(message, 0, length);
- len -= length;
- }
- else if(lastspace < escape)
- {
- strdel(string, escape, strlen(string));
- strdel(message, 0, escape);
- len -= escape;
- lastspace = 0;
- }
- else
- {
- strdel(string, lastspace, strlen(string));
- strdel(message, 0, lastspace + 1);
- len -= lastspace;
- lastspace = 0;
- }
- SendClientMessage(playerid, color, string);
- if(len < length) SendClientMessage(playerid, color, message);
- }
- }
- return 1;
- }
- stock SendPlayerMessage(length, playerid, color, message[])
- {
- new len = strlen(message);
- if(len <= length)
- {
- foreach(new i: Player)
- {
- if(IsPlayerAdmin(playerid) || IsPlayerAdmin(i))
- {
- SendClientMessage(i, color, message);
- }
- else if(!IsPlayerIgnoringPlayer(playerid, i) && !IsPlayerIgnoringPlayer(i, playerid))
- {
- SendClientMessage(i, color, message);
- }
- }
- }
- else
- {
- new string[144], lastspace, escape = floatround(length / 1.2);
- while(len > length)
- {
- format(string, sizeof(string), "%s", message);
- for(new i = 0; i <= len; i ++)
- {
- if(message[i] == ' ' && i <= length) lastspace = i;
- if(i > length) i = len;
- }
- if(lastspace == 0)
- {
- strdel(string, length, strlen(string));
- strdel(message, 0, length);
- len -= length;
- }
- else if(lastspace < escape)
- {
- strdel(string, escape, strlen(string));
- strdel(message, 0, escape);
- len -= escape;
- lastspace = 0;
- }
- else
- {
- strdel(string, lastspace, strlen(string));
- strdel(message, 0, lastspace + 1);
- len -= lastspace;
- lastspace = 0;
- }
- foreach(new i: Player)
- {
- if(IsPlayerAdmin(playerid) || IsPlayerAdmin(i))
- {
- SendClientMessage(i, color, string);
- if(len < length) SendClientMessage(i, color, message);
- }
- else if(!IsPlayerIgnoringPlayer(playerid, i) && !IsPlayerIgnoringPlayer(i, playerid))
- {
- SendClientMessage(i, color, string);
- if(len < length) SendClientMessage(i, color, message);
- }
- }
- }
- }
- return 1;
- }
- stock SendWhisperMessage(length, Float:range, playerid, color, message[])
- {
- new len = strlen(message);
- if(len <= length)
- {
- foreach(new i: Player)
- {
- if(IsPlayerCloseToPlayer(playerid, i, range))
- {
- if(IsPlayerAdmin(playerid) || IsPlayerAdmin(i))
- {
- SendClientMessage(i, color, message);
- }
- else if(!IsPlayerIgnoringPlayer(playerid, i) && !IsPlayerIgnoringPlayer(i, playerid))
- {
- SendClientMessage(i, color, message);
- }
- }
- }
- }
- else
- {
- new string[144], lastspace, escape = floatround(length / 1.2);
- while(len > length)
- {
- format(string, sizeof(string), "%s", message);
- for(new i = 0; i <= len; i ++)
- {
- if(message[i] == ' ' && i <= length) lastspace = i;
- if(i > length) i = len;
- }
- if(lastspace == 0)
- {
- strdel(string, length, strlen(string));
- strdel(message, 0, length);
- len -= length;
- }
- else if(lastspace < escape)
- {
- strdel(string, escape, strlen(string));
- strdel(message, 0, escape);
- len -= escape;
- lastspace = 0;
- }
- else
- {
- strdel(string, lastspace, strlen(string));
- strdel(message, 0, lastspace + 1);
- len -= lastspace;
- lastspace = 0;
- }
- foreach(new i: Player)
- {
- if(IsPlayerCloseToPlayer(playerid, i, range))
- {
- if(IsPlayerAdmin(playerid) || IsPlayerAdmin(i))
- {
- SendClientMessage(i, color, string);
- if(len < length) SendClientMessage(i, color, message);
- }
- else if(!IsPlayerIgnoringPlayer(playerid, i) && !IsPlayerIgnoringPlayer(i, playerid))
- {
- SendClientMessage(i, color, string);
- if(len < length) SendClientMessage(i, color, message);
- }
- }
- }
- }
- }
- return 1;
- }
- stock IsPlayerCloseToPlayer(playerid, lookupid, Float:distance)
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(lookupid, x, y, z);
- if(IsPlayerInRangeOfPoint(playerid, distance, x, y, z) && GetPlayerInterior(playerid) == GetPlayerInterior(lookupid) && \
- GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(lookupid) && GetPlayerState(playerid) != PLAYER_STATE_SPECTATING && \
- GetPlayerState(lookupid) != PLAYER_STATE_SPECTATING) return true;
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement