|
|
- //
- //
- // SA-MP Roleplay style chat module for SA-MP 0.3
- // (c) 2012 SA-MP Team
- // All rights reserved
- //
-
- #define GENERAL_COLOR 0xEEEEEEFF
- #define LOCAL_TALK_COLOR 0xD0D0D0FF
- #define SPEECH_BUBBLE_COLOR 0xEEEEEEFF
- #define ACTION_COLOR 0xC2A2DAAA
- #define CMD_USAGE_COLOR 0xBFC0C2FF
- #define MEGAPHONE_COLOR 0xFFFF00AA
- #define WHISPER_COLOR 0xFFFF00AA
- #define OOC_COLOR 0xE0FFFFAA
- #define ADMIN_ACTION_COLOR 0xDAA2ACAA
-
- #define TALK_DISTANCE 30.0
- #define SHOUT_DISTANCE 60.0
- #define LOW_DISTANCE 5.0
- #define ACTION_DISTANCE 30.0
- #define MEGAPHONE_DISTANCE 70.0
-
- #define CHAT_BUBBLE_TIME 6000
-
- #define ACTION_ME 1
- #define ACTION_DO 2
-
- //---------------------------------------------
- // Send a chat message to this player
-
- stock PlayerMessage(playerid, color, message[])
- {
- SendClientMessage(playerid, color, message);
- }
-
- //---------------------------------------------
- // Send a chat message to all players
-
- stock GlobalMessage(color, message[])
- {
- SendClientMessageToAll(color, message);
- }
-
- //---------------------------------------------
-
- stock CmdUsageMessage(playerid, message[])
- {
- new msg[256+1];
- format(msg,256,"[{BFC0C2}usage{EEEEEE}] %s", message);
- SendClientMessage(playerid, GENERAL_COLOR, msg);
- }
-
- //---------------------------------------------
-
- stock CmdErrorMessage(playerid, message[])
- {
- new msg[256+1];
- format(msg,256,"[{E0C0C0}error{EEEEEE}] %s", message);
- SendClientMessage(playerid, GENERAL_COLOR, msg);
- }
-
- //---------------------------------------------
-
- stock CmdAdminMessage(playerid, message[])
- {
- new msg[256+1];
- format(msg,256,"[{5050EE}admin{EEEEEE}] %s", message);
- SendClientMessage(playerid, GENERAL_COLOR, msg);
- }
-
- //---------------------------------------------
-
- stock AdminActionMessage(playerid, message[])
- {
- PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
- SendClientMessage(playerid, ADMIN_ACTION_COLOR, message);
- }
-
- //---------------------------------------------
- // Send a chat message to players in distance of playerid
- // This includes the origin player.
-
- stock LocalMessage(Float:dist, playerid, color, message[], chatbubble=0)
- {
- if(!strlen(message)) return;
-
- if(IsPlayerConnected(playerid))
- {
- new Float:fPlayerX, Float:fPlayerY, Float:fPlayerZ;
- new Float:fPlayerToPlayerDist;
-
- // send to the origin player
- PlayerMessage(playerid, color, message);
-
- // if it requires a chat bubble, show it.
- if(chatbubble) {
- SetPlayerChatBubble(playerid, message, color, dist, CHAT_BUBBLE_TIME);
- }
-
- GetPlayerPos(playerid, fPlayerX, fPlayerY, fPlayerZ);
-
- for(new i = 0; i < MAX_PLAYERS; i++) { // for every player
- if(IsPlayerConnected(i) && (i != playerid) && IsPlayerStreamedIn(playerid,i)) {
- fPlayerToPlayerDist = GetPlayerDistanceFromPoint(i, fPlayerX, fPlayerY, fPlayerZ);
- if(fPlayerToPlayerDist < dist) { // receiving player is within the specified distance
- PlayerMessage(i, color, message);
- }
- }
- }
- }
- }
-
- //---------------------------------------------
- // This will send a local talk message and automatically grey-fade it.
- // This includes the origin player.
-
- stock TalkMessage(Float:dist, playerid, prefix[], message[])
- {
- new PlayerName[MAX_PLAYER_NAME+1];
- new Msg[256+1];
- new MsgWithName[256+1];
-
- if(!strlen(message)) return;
-
- if(IsPlayerConnected(playerid))
- {
- new Float:fPlayerX, Float:fPlayerY, Float:fPlayerZ;
- new Float:fPlayerToPlayerDist;
- new Float:fNormDistance;
- new ColorScale;
- new ColorValue;
-
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- if(strlen(prefix)) {
- format(Msg, sizeof(Msg), "%s %s", prefix, message);
- } else {
- format(Msg, sizeof(Msg), "%s", message);
- }
-
- format(MsgWithName, sizeof(MsgWithName), "%s: %s", PlayerName, Msg);
-
- SetPlayerChatBubble(playerid, Msg, SPEECH_BUBBLE_COLOR, dist, CHAT_BUBBLE_TIME);
-
- // Send to originating player
- PlayerMessage(playerid, LOCAL_TALK_COLOR, MsgWithName);
-
- GetPlayerPos(playerid, fPlayerX, fPlayerY, fPlayerZ);
-
- for(new i = 0; i < MAX_PLAYERS; i++) { // for every player
- if(IsPlayerConnected(i) && (i != playerid) && IsPlayerStreamedIn(playerid,i)) {
- fPlayerToPlayerDist = GetPlayerDistanceFromPoint(i, fPlayerX, fPlayerY, fPlayerZ);
- if(fPlayerToPlayerDist < dist) { // receiving player is within the specified distance
- // get normalized distance to create a fade.
- fNormDistance = 1.0 - (fPlayerToPlayerDist / dist);
- if(fNormDistance > 0.75) ColorScale = 220;
- else ColorScale = floatround(96.0 + (128.0 * fNormDistance));
- ColorValue = 0x000000FF | ColorScale << 24 | ColorScale << 16 | ColorScale << 8;
- PlayerMessage(i, ColorValue, MsgWithName);
- }
- }
- }
- }
- }
-
- //---------------------------------------------
|