| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- //
- //
- // SA-MP Roleplay style chat module for Grand Larceny
- // (c) 2012 SA-MP Team
- // All rights reserved
- //
- #include <a_samp>
- #include "../include/gl_common.inc"
- #include "../include/gl_messages.inc" // <- contains all the main text/messaging functions
- //---------------------------------------------
- stock ProcessChatText(playerid, text[])
- {
- new useindex=1;
- // Handle shouting prefix (!)
- if(text[0] == '!' && strlen(text) > 1) {
- if(text[1] == ' ') useindex++;
- TalkMessage(SHOUT_DISTANCE, playerid, "*shouts*", text[useindex]);
- return;
- }
- // Handle quiet prefix (#)
- if(text[0] == '#' && strlen(text) > 1) {
- if(text[1] == ' ') useindex++;
- TalkMessage(LOW_DISTANCE, playerid, "*quietly*", text[useindex]);
- return;
- }
- // Send to other players in range and fade
- TalkMessage(TALK_DISTANCE, playerid, "", text);
- }
- //---------------------------------------------
- stock ProcessActionText(playerid, message[], actiontype)
- {
- new ActionText[256+1];
- new ActionBubble[MAX_CHATBUBBLE_LENGTH+1];
- new PlayerName[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- if(actiontype == ACTION_DO) {
- format(ActionText, 256, "* %s ((%s))", message, PlayerName);
- format(ActionBubble, MAX_CHATBUBBLE_LENGTH, "* (( %s ))", message);
- } else {
- format(ActionText, 256, "* %s %s", PlayerName, message);
- format(ActionBubble, MAX_CHATBUBBLE_LENGTH, "* %s", message);
- }
-
- LocalMessage(ACTION_DISTANCE, playerid, ACTION_COLOR, ActionText);
- SetPlayerChatBubble(playerid, ActionBubble, ACTION_COLOR, ACTION_DISTANCE, CHAT_BUBBLE_TIME);
- }
- //---------------------------------------------
- new gOOCDisabled = false;
- stock GlobalOOCMessage(playerid, message[])
- {
- new msg[256+1];
- new PlayerName[MAX_PLAYER_NAME+1];
- if(gOOCDisabled) {
- CmdErrorMessage(playerid, "The OOC channel is not enabled right now");
- return;
- }
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- format(msg, 256, "(( %s: %s ))", PlayerName, message);
- for(new i = 0; i < MAX_PLAYERS; i++) { // for every player
- if(IsPlayerConnected(i)) { // Todo: check if player accepts occ
- PlayerMessage(i, OOC_COLOR, msg);
- }
- }
- }
- //---------------------------------------------
- stock ToggleOOC(playerid)
- {
- if(IsPlayerAdmin(playerid)) {
- // toggle it
- if(gOOCDisabled) gOOCDisabled = false;
- else gOOCDisabled = true;
-
- if(!gOOCDisabled) {
- GlobalMessage(GENERAL_COLOR, "{D0D0D0}[ooc] channel is {80CC80}enabled");
- } else {
- GlobalMessage(GENERAL_COLOR, "{D0D0D0}[ooc] channel is {CC8080}disabled");
- }
- } else {
- CmdErrorMessage(playerid, "Your admin level isn't high enough to change this");
- }
- }
- //---------------------------------------------
- stock ProcessLocalOOC(playerid, message[])
- {
- new new_message[256+1];
- new PlayerName[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- format(new_message, 256, "%s (( %s ))", PlayerName, message);
- LocalMessage(TALK_DISTANCE, playerid, LOCAL_TALK_COLOR, new_message);
- }
- //---------------------------------------------
- stock ProcessMegaphone(playerid, message[])
- {
- // Todo: add permissions on megaphone usage
- new new_message[256+1];
- new PlayerName[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- format(new_message, 256, "(megaphone) %s >> %s", PlayerName, message);
- LocalMessage(MEGAPHONE_DISTANCE, playerid, MEGAPHONE_COLOR, new_message, 1);
- }
- //---------------------------------------------
- stock ProcessWhisper(playerid, toplayerid, message[])
- {
- new PlayerName[MAX_PLAYER_NAME+1];
- new ToPlayerName[MAX_PLAYER_NAME+1];
- new PmMessage[256+1];
- GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
- GetPlayerName(toplayerid,ToPlayerName,sizeof(ToPlayerName));
- format(PmMessage, sizeof(PmMessage), ">> %s(%d): %s", ToPlayerName, toplayerid, message);
- PlayerMessage(playerid, WHISPER_COLOR, PmMessage);
- format(PmMessage, sizeof(PmMessage), "** %s(%d): %s", PlayerName, playerid, message);
- PlayerMessage(toplayerid, WHISPER_COLOR, PmMessage);
- PlayerPlaySound(toplayerid, 1085, 0.0, 0.0, 0.0);
- }
- //---------------------------------------------
- stock ProcessChatCommands(playerid, cmdtext[])
- {
- new cmd[256+1];
- new message[256+1];
- new tmp[256+1];
- new idx;
- cmd = strtok(cmdtext, idx);
- // Action commands
- if(!strcmp("/me", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "/me [action]");
- return 1;
- }
- ProcessActionText(playerid, message, ACTION_ME);
- return 1;
- }
- if(!strcmp("/do", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "/do [action]");
- return 1;
- }
- ProcessActionText(playerid, message, ACTION_DO);
- return 1;
- }
- // Talk commands
- // /low
- if(!strcmp("/l", cmd, true) || !strcmp("/low", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "(/l)ow [text]");
- return 1;
- }
- TalkMessage(LOW_DISTANCE, playerid, "*quietly*", message);
- return 1;
- }
- // /shout
- if(!strcmp("/s", cmd, true) || !strcmp("/shout", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "(/s)hout [text]");
- return 1;
- }
- TalkMessage(SHOUT_DISTANCE, playerid, "*shouts*", message);
- return 1;
- }
- // /b (local ooc)
- if(!strcmp("/b", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "/b [text]");
- return 1;
- }
- ProcessLocalOOC(playerid, message);
- return 1;
- }
- // /megaphone
- if(!strcmp("/m", cmd, true) || !strcmp("/megaphone", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "(/m)egaphone [text]");
- return 1;
- }
- ProcessMegaphone(playerid, message);
- return 1;
- }
- // Global OOC /o and /ooc
- if(!strcmp("/o", cmd, true) || !strcmp("/ooc", cmd, true))
- {
- message = strrest(cmdtext,idx);
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "(/o)oc [text]");
- return 1;
- }
- GlobalOOCMessage(playerid, message);
- return 1;
- }
- // Toggle the OOC channel /togooc
- if(!strcmp("/togooc", cmd, true))
- {
- ToggleOOC(playerid);
- return 1;
- }
- // /whisper /pm
- if(!strcmp("/w", cmd, true) || !strcmp("/wisper", cmd, true) || !strcmp("/pm", cmd, true))
- {
- tmp = strtok(cmdtext,idx);
- if(!strlen(tmp)) {
- CmdUsageMessage(playerid, "(/w)isper [playerid/PartOfName] [whisper text]");
- return 1;
- }
-
- new toplayerid = ReturnUser(tmp);
- if(toplayerid == RETURN_USER_MULTIPLE) {
- CmdErrorMessage(playerid, "Multiple matches found for [name]. Please narrow the search.");
- return 1;
- }
- if(toplayerid == RETURN_USER_FAILURE || !IsPlayerConnected(toplayerid)) {
- CmdErrorMessage(playerid, "That player isn't connected right now.");
- return 1;
- }
-
- message = strrest(cmdtext,idx);
-
- if(!strlen(message)) {
- CmdUsageMessage(playerid, "(/w)isper [playerid/PartOfName] [whisper text]");
- return 1;
- }
- if(IsPlayerConnected(toplayerid)) {
- ProcessWhisper(playerid, toplayerid, message);
- }
-
- return 1;
- }
- return 0;
- }
- //---------------------------------------------
- public OnPlayerText(playerid, text[])
- {
- ProcessChatText(playerid, text);
- return 0;
- }
- //------------------------------------------------
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(ProcessChatCommands(playerid,cmdtext)) {
- return 1;
- }
- return 0;
- }
- //---------------------------------------------
|