| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 |
- forward NewProxDetector(playerid, Float:range, statictext[], msg[], colour);
- forward GetColorValue(colour, mode);
- forward SetRGB(colour, mode, value);
- //used for testing
- //#define coords 1555.08, -1675.55, 16.19
- public NewProxDetector(playerid, Float:range, statictext[], msg[], colour) {
- //Get individual colour values
- new red = GetColorValue(colour, 'r');
- new green = GetColorValue(colour, 'g');
- new blue = GetColorValue(colour, 'b');
- //Keep original for chat bubble
- new original[144];
- format(original, sizeof(original), "%s%s", statictext, msg);
- //Add in accents, statictext is now neglected
- new staticstr[MAX_PLAYER_NAME+50];
- format(staticstr, sizeof(staticstr), "%s", statictext); // accent is already set
- //if(strcmp(Accent[playerid], "none", true, 3)) format(staticstr, sizeof(staticstr), "%s[%s Accent] ", statictext, Accent[playerid]);
- //else format(staticstr, sizeof(staticstr), "%s", statictext);
- new string[144];
- format(string, sizeof(string), "%s%s", staticstr, msg);
- SendClientMessage(playerid, colour, string);
- new Float:tarx, Float:tary, Float:tarz;
- GetPlayerPos(playerid, tarx, tary, tarz);
- new vw = GetPlayerVirtualWorld(playerid);
-
- foreach(new pid: Player) {
- if(pid == playerid) continue;
- if(!IsPlayerConnected(playerid)) continue;
- if(GetPlayerVirtualWorld(pid) != vw) continue;
- //Is player in range?
- new Float:x, Float:y, Float:z;
- GetPlayerPos(pid, x, y, z);
- new Float:dist = GetPointDistanceToPointExMorph(x, y, z, tarx, tary, tarz);
- if(dist <= range) {
- //Get individual colours, decrease by some dependent scalar
- new pr = red, pg = green, pb = blue;
- new scalar = floatround(140/range); //140 RGB values
- pr -= scalar*floatround(dist);
- pg -= scalar*floatround(dist);
- pb -= scalar*floatround(dist);
- //Jumble the text message up.
- /* if(dist >= 0.8*floatround(range)) {
- new step = 4 + floatround(range-dist);
- new i;
- while(i < strlen(msg)) {
- msg[i] = random(255);
- if(msg[i] > 190) i++;
- else i += step;
- }
- }
- */
- new col;
- //Set the colours
- col = SetRGB(colour, 'r', pr);
- col = SetRGB(col, 'g', pg);
- col = SetRGB(col, 'b', pb);
- //Send it
- format(string, sizeof(string), "%s%s", staticstr, msg);
- SendClientMessage(pid, col, string);
- }
- }
- //Finally, show chat bubble
- if(ThiefText[playerid] != Text3D:INVALID_3DTEXT_ID) return 1;
- if(nametagText[playerid] != Text3D:INVALID_3DTEXT_ID) return 1;
-
- SetPlayerChatBubble(playerid, original, colour, 0.3*floatround(range), 10000);
- return 1;
- }
- public GetColorValue(colour, mode) {
- switch(mode) {
- case 'r', 'R':
- return (colour & 0xFF000000) >>> 24;
- case 'g', 'G':
- return (colour & 0x00FF0000) >>> 16;
- case 'b', 'B':
- return (colour & 0x0000FF00) >>> 8;
- }
- return 0xFF;
- }
- public SetRGB(colour, mode, value) {
- switch(mode) {
- case 'r', 'R':
- return (colour & 0x00FFFFFF | (0xFF000000 & (value) << 24));
-
- case 'g', 'G':
- return (colour & 0xFF00FFFF | (0x00FF0000 & (value) << 16));
- case 'b', 'B':
- return (colour & 0xFFFF00FF | (0x0000FF00 & (value) << 8));
- }
- return colour;
- }
- //=============[ Commands ]=============
- //To be optimized later
- CMD:s(playerid, params[]) return cmd_shout(playerid, params);
- CMD:shout(playerid, params[])
- {
- if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_GREY, "You havent logged in yet.");
- if(pDeathState[playerid] == PLAYER_STATE_INHOSP || WatchingTV[playerid] == true) return 1;
- if(pDeathState[playerid] == PLAYER_STATE_REVIVE) //injured players cannot speak
- {
- SendClientMessage(playerid, -1, "You're too tired to say anything.");
- new str[128];
- format(str, sizeof(str), "* %s tries to mumble something", PlayerICName(playerid));
- SetPlayerChatBubble(playerid, str, COLOR_PURPLE, 20.0, 15000);
- return 0;
- }
- if(pDeathState[playerid] == PLAYER_STATE_REVIVE){
- }
- if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, COLOR_GREY, "You can't use this whilst muted.");
- new result[128];
- new str[144];
- if(sscanf(params, "s[128]", result)) return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} (/s)hout [local chat]");
-
- // Gagged
- if(IsPlayerGagged(playerid)) {
- SendClientMessage(playerid, COLOR_GREY, "The gag in your mouth makes you unable to speak...");
-
- new gagStr[128];
- format(gagStr, sizeof(gagStr), "* %s tries to mumble something loudly.", PlayerICName(playerid));
- SetPlayerChatBubble(playerid, gagStr, COLOR_PURPLE, 20.0, 15000);
- return 1;
- }
- /*foreach( new i: Player )
- {
- if(PlayerInfo[i][pWire] == 1 && !CheckForJammer(playerid) && !CheckForJammer(i))
- {
- new Float: x[3];
- GetPlayerPos(playerid, x[0], x[1], x[2]);
- if(IsPlayerInRangeOfPoint(i, 30.0, x[0], x[1], x[2]))
- {
- if(i == playerid)
- {
- if(strcmp(Accent[i], "none", true, 3)) format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s: [%s Accent] %s!", PlayerICName(i), Accent[i], result);
- else format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s: %s!", PlayerICName(i), result);
- }
- else
- {
- if(strcmp(Accent[playerid], "none", true, 3)) format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s's surroundings: [%s Accent] %s!", PlayerICName(i), Accent[playerid], result);
- else format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s's surroundings: %s!", PlayerICName(i), result);
- }
- foreach( new fbi: Player )
- {
- if(PlayerInfo[fbi][pMember] == 2 || PlayerInfo[fbi][pMember] == 11)
- {
- if(IsPlayerInAnyVehicle(fbi))
- {
- if(sVehicleInfo[GetDynamicVehicleID(GetPlayerVehicleID(fbi))][v_faction] == 2 || sVehicleInfo[GetDynamicVehicleID(GetPlayerVehicleID(fbi))][v_faction] == 11 && GetVehicleModel(GetPlayerVehicleID(fbi)) == 482)
- {
- SendClientMessage(fbi, COLOR_ORANGE, str);
- }
- }
- }
- }
- }
- }
- }*/
-
- foreach( new i: Player )
- {
- if(PlayerInfo[i][pWire] == 1 && !CheckForJammer(playerid) && !CheckForJammer(i))
- {
- new Float: x[3];
- GetPlayerPos(playerid, x[0], x[1], x[2]);
- if(IsPlayerInRangeOfPoint(i, 20.0, x[0], x[1], x[2]))
- {
- if(i == playerid)
- {
- if(strcmp(Accent[i], "none", true, 3)) format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s: [%s Accent] %s!", PlayerICName(i), Accent[i], result);
- else format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s: %s!", PlayerICName(i), result);
- }
- else
- {
- if(strcmp(Accent[playerid], "none", true, 3)) format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s's surroundings: [%s Accent] %s!", PlayerICName(i), Accent[playerid], result);
- else format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s's surroundings: %s!", PlayerICName(i), result);
- }
- if(PlayerInfo[i][pMember] != 2) // if player isn't FBI, send to both FBI and S9
- {
- SendBuggedMessage(COLOR_ORANGE, str);
- SendS9BuggedMessage(COLOR_ORANGE, str);
- }
- else SendS9BuggedMessage(COLOR_ORANGE, str); // if player is FBI, send to S9 only, this is to avoid FBI figuring out
- // that s9 bugged them
- }
- }
- }
- new string[MAX_PLAYER_NAME+10];
- format(string, sizeof(string), "%s shouts: ", PlayerICName(playerid));
- NewProxDetector(playerid, 30.0, string, result, COLOR_FADE1);
- return 1;
- }
- CMD:l(playerid, params[]) return cmd_low(playerid, params);
- CMD:low(playerid, params[])
- {
- new msg[128];
- new str[144];
- if(!sscanf(params, "s[128]", msg))
- {
- if(gPlayerLogged[playerid] == 0)
- {
- SendClientMessage(playerid, COLOR_GREY, "You havent logged in yet.");
- return 1;
- }
- if(pDeathState[playerid] == PLAYER_STATE_INHOSP || ThiefText[playerid] != Text3D:INVALID_3DTEXT_ID || WatchingTV[playerid] == true) return 1;
- if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, COLOR_GREY, "You can't use this whilst muted.");
-
- // Gagged
- if(IsPlayerGagged(playerid)) {
- SendClientMessage(playerid, COLOR_GREY, "The gag in your mouth makes you unable to speak...");
-
- new gagStr[128];
- format(gagStr, sizeof(gagStr), "* %s tries to mumble something quietly.", PlayerICName(playerid));
- SetPlayerChatBubble(playerid, gagStr, COLOR_PURPLE, 20.0, 15000);
- return 1;
- }
- /*foreach( new i: Player )
- {
- if(PlayerInfo[i][pWire] == 1 && !CheckForJammer(playerid) && !CheckForJammer(i))
- {
- new Float: x[3];
- GetPlayerPos(playerid, x[0], x[1], x[2]);
- if(IsPlayerInRangeOfPoint(i, 5.0, x[0], x[1], x[2]))
- {
- if(i == playerid)
- {
- format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s [low]: %s", PlayerOOCName(i), msg);
- }
- else
- {
- format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s's surroundings [low]: %s", PlayerOOCName(i), msg);
- }
- foreach( new fbi: Player )
- {
- if(PlayerInfo[fbi][pMember] == 2 || PlayerInfo[fbi][pMember] == 11)
- {
- if(IsPlayerInAnyVehicle(fbi))
- {
- if(sVehicleInfo[GetDynamicVehicleID(GetPlayerVehicleID(fbi))][v_faction] == 2 || sVehicleInfo[GetDynamicVehicleID(GetPlayerVehicleID(fbi))][v_faction] == 11 && GetVehicleModel(GetPlayerVehicleID(fbi)) == 482)
- {
- SendClientMessage(fbi, COLOR_ORANGE, str);
- }
- }
- }
- }
- }
- }
- }*/
- foreach( new i: Player )
- {
- if(PlayerInfo[i][pWire] == 1 && !CheckForJammer(playerid) && !CheckForJammer(i))
- {
- new Float: x[3];
- GetPlayerPos(playerid, x[0], x[1], x[2]);
- if(IsPlayerInRangeOfPoint(i, 20.0, x[0], x[1], x[2]))
- {
- if(i == playerid)
- {
- format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s [low]: %s", PlayerOOCName(i), msg);
- }
- else
- {
- format(str, sizeof(str), "{8D8DFF}(BUGGED){AFAFAF} %s's surroundings [low]: %s", PlayerOOCName(i), msg);
- }
- if(PlayerInfo[i][pMember] != 2) // if player isn't FBI, send to both FBI and S9
- {
- SendBuggedMessage(COLOR_ORANGE, str);
- SendS9BuggedMessage(COLOR_ORANGE, str);
- }
- else SendS9BuggedMessage(COLOR_ORANGE, str); // if player is FBI, send to S9 only, this is to avoid FBI figuring out
- // that s9 bugged them
- }
- }
- }
- if(!IsPlayerInAnyVehicle(playerid))
- {
- format(str, sizeof(str), "%s [low]: ", PlayerICName(playerid));
- NewProxDetector(playerid, 5.0, str, msg, COLOR_GREY);
- }
- else
- {
- if(VehicleHasWindows(GetPlayerVehicleID(playerid)))
- {
- if(windowsDown[GetPlayerVehicleID(playerid)] == false)
- {
- format(str, sizeof(str), "(vehicle) %s [low]: %s", PlayerICName(playerid), msg);
- CarMessage(playerid, COLOR_GREY, str);
- }
- else
- {
- format(str, sizeof(str), "%s [low]: ", PlayerICName(playerid));
- NewProxDetector(playerid, 5.0, str, msg, COLOR_GREY);
- }
- }
- else
- {
- format(str, sizeof(str), "%s [low]: ", PlayerICName(playerid));
- NewProxDetector(playerid, 5.0, str, msg, COLOR_GREY);
- }
- }
- }
- else
- {
- SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} (/l)ow [local chat]");
- }
- return 1;
- }
|