//=========================================================================// //* Automatic Client Message Sender Filterscript //* Version: 3.0 //=========================================================================// //* Created by: //* Biesmen // http://forum.sa-mp.com/member.php?u=52068 //=========================================================================// #include #include // SSCANF by Y_Less #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 forward MessageTimer(); new Lines[20][256], MessageTime = 1, MessageTimerS, MaxLines, NextLine; stock WriteFileLine() { new cline = 0; new File:name = fopen("messages.txt", io_write); while(cline != MaxLines) { cline++; fwrite(name, Lines[cline]); } fclose(name); return 1; } stock ReadLines() { new str[256], dlines = 0; new File:Messages = fopen("messages.txt", io_read); while(fread(Messages, str, sizeof(str))) { dlines++; format(Lines[dlines],256,"%s",str); } MessageTime = strval(Lines[1]); MaxLines = dlines; fclose(Messages); return 1; } //////////////////////////////// // Created by Ryder` // /////////////////////////////// stock ColouredText(text[]) { new pos = -1, string[(128 + 16)] ; strmid(string, text, 0, 128, (sizeof(string) - 16)); while((pos = strfind(string, "#", true, (pos + 1))) != -1) { new i = (pos + 1), hexCount ; for( ; ((string[i] != 0) && (hexCount < 6)); ++i, ++hexCount) { if(!(('a' <= string[i] <= 'f') || ('A' <= string[i] <= 'F') || ('0' <= string[i] <= '9'))) { break; } } if((hexCount == 6) && !(hexCount < 6)) { string[pos] = '{'; strins(string, "}", i); } } return string; } //////////////////////////////// public OnFilterScriptInit() { ReadLines(); MessageTimerS = SetTimer("MessageTimer", MessageTime*1000, true); print("\n--------------------------------------"); print(" Automatic Client Message sender"); print(" Created by: Biesmen"); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { return 1; } public MessageTimer() { new rand; if(NextLine == 0) { rand = random(MaxLines); if(strlen(Lines[rand]) == 0) return MessageTimer(); if(strcmp(Lines[rand], Lines[1], true) == 0) return MessageTimer(); } else { rand = NextLine; NextLine = 0; } SendClientMessageToAll(0xFFFFFFAA, Lines[rand]); printf("%s", Lines[rand]); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { dcmd(nextline, 8, cmdtext); dcmd(setline, 7, cmdtext); dcmd(messagetime, 11, cmdtext); if (strcmp("/toggletimer", cmdtext, true) == 0) { if(IsPlayerAdmin(playerid)) { if(MessageTimerS != 0) { KillTimer(MessageTimerS); MessageTimerS = 0; SendClientMessage(playerid, 0xFF8040FF, "The Message Timer has been deactivated."); } else { MessageTimerS = SetTimer("MessageTimer", MessageTime*1000, true); SendClientMessage(playerid, 0xFF8040FF, "The Message Timer has been activated."); } } return 1; } return 0; } dcmd_nextline(playerid, params[]) { new line, str[128]; if(IsPlayerAdmin(playerid)) { if(sscanf(params, "i", line)) return SendClientMessage(playerid, 0xFF8040FF, "USAGE: /nextline [line]"); if(line > MaxLines-1 || line < 1) return SendClientMessage(playerid, 0xFF8040FF, "ERROR: This line doesn't exist!"); NextLine = line+1; format(str, sizeof(str), "Next line to be announced is Line %i", line); SendClientMessage(playerid, 0xFFC68CFF, str); } return 1; } dcmd_setline(playerid, params[]) { new line, message[256]; if(IsPlayerAdmin(playerid)) { if(sscanf(params, "is[256]", line, message)) return SendClientMessage(playerid, 0xFF8040FF, "USAGE: /setline [line] [message]"); if(strlen(message) > 256) return SendClientMessage(playerid, 0xFF8040FF, "ERROR: Message too long!"); if(line > MaxLines-1 || line < 1) return SendClientMessage(playerid, 0xFF8040FF, "ERROR: This line doesn't exist!"); message = ColouredText(message); format(Lines[line+1], 256, "%s\r\n", message); WriteFileLine(); format(message, sizeof(message), "[LINE %i]{FF8040} has changed into: %s", line, message); SendClientMessage(playerid, 0xFFC68CFF, message); } return 1; } dcmd_messagetime(playerid, params[]) { new string[53], time; if(IsPlayerAdmin(playerid)) { if(sscanf(params, "i", time)) return SendClientMessage(playerid, 0xFF8040FF, "USAGE: /messagetime [seconds]"); KillTimer(MessageTimerS); MessageTime = time; MessageTimerS = SetTimer("MessageTimer", MessageTime*1000, true); format(string, sizeof(string), "The messages will now display once every %i seconds", MessageTime); SendClientMessage(playerid, 0xFF8040FF, string); format(Lines[1], 256, "%i\r\n", time); WriteFileLine(); } return 1; }