Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright (c) 2010, RealGamer
- *
- * All rights reserved.
- *
- * Redistribution and use in source , with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice, this
- * list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution.
- * * Neither the name of the mta-mysql nor the names of its contributors may be used
- * to endorse or promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #define FILTERSCRIPT
- #include <a_samp>
- #define chatdiag 1
- #define playerchatdiag 2
- #define COLOR_RED 0xAA3333AA
- #define COLOR_YELLOW 0xFFFF00AA
- new inchat[MAX_PLAYERS];
- new inroom[MAX_PLAYERS];
- new msg1[256];
- new msg2[256];
- new msg3[256];
- new msg4[256];
- new msg5[256];
- new chatmsg1[MAX_PLAYERS][256];
- new chatmsg2[MAX_PLAYERS][256];
- new chatmsg3[MAX_PLAYERS][256];
- new chatmsg4[MAX_PLAYERS][256];
- new chatmsg5[MAX_PLAYERS][256];
- forward UpdateChat();
- forward UpdateprivChat(chatid);
- forward KickPlayersFromChat(chatid);
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Kleines Chatsystem by RealGamer");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- inchat[playerid] = 0;
- inroom[playerid] = 0;
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- inchat[playerid] = 0;
- new tmpid[256];
- format(tmpid, sizeof(tmpid), "");
- chatmsg1[playerid]=tmpid;
- format(tmpid, sizeof(tmpid), "");
- chatmsg2[playerid]=tmpid;
- format(tmpid, sizeof(tmpid), "");
- chatmsg3[playerid]=tmpid;
- format(tmpid, sizeof(tmpid), "");
- chatmsg4[playerid]=tmpid;
- format(tmpid, sizeof(tmpid), "");
- chatmsg5[playerid]=tmpid;
- inroom[playerid] = 0;
- KickPlayersFromChat(playerid);
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/chat", cmdtext, true, 5) == 0)
- {
- new tmpmessage[256];
- new tmphour;
- new tmpminute;
- new tmpsecond;
- gettime(tmphour, tmpminute, tmpsecond);
- new tmpname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, tmpname, sizeof(tmpname));
- format(tmpmessage, sizeof(tmpmessage), "[%d:%d]%s hat den Chat betreten",tmphour,tmpminute,tmpname);
- msg5 = msg4;
- msg4 = msg3;
- msg3 = msg2;
- msg2 = msg1;
- msg1 = tmpmessage;
- UpdateChat();
- new string1[256],string7[256],string8[7*(192+1)+1];
- format(string1, sizeof(string1), "|________________________ Chatroom ______________________|");
- format(string7, sizeof(string7), "|________________________________________________________|");
- format(string8, sizeof(string8), "%s\n%s\n%s\n%s\n%s\n%s\n%s",string1,msg5,msg4,msg3,msg2,msg1,string7);
- ShowPlayerDialog(playerid,chatdiag,DIALOG_STYLE_INPUT,"Chatroom",string8,"Senden","Verlassen");
- inchat[playerid] = 1;
- return 1;
- }
- new idx,cmd[128];
- cmd=split(cmdtext,idx);
- if(!strcmp(cmd,"/joinchat",true,9))
- {
- new tmpmessage[256];
- new tmphour;
- new tmpminute;
- new tmpsecond;
- gettime(tmphour, tmpminute, tmpsecond);
- inchat[playerid] = 1;
- new sID[128],pID;
- sID=split(cmdtext,idx);
- if(!strlen(sID))
- {
- return SendClientMessage(playerid,COLOR_RED,"USAGE: /joinchat [playerid]");
- }
- pID=strval(sID);
- if(!IsPlayerConnected(pID))
- {
- return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
- }
- inroom[playerid] = pID;
- new string1[256],string7[256],string8[7*(192+1)+1];
- new name[MAX_PLAYER_NAME];
- GetPlayerName(pID, name, sizeof(name));
- new tmpname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, tmpname, sizeof(tmpname));
- format(tmpmessage, sizeof(tmpmessage), "[%d:%d]%s hat den Chat betreten",tmphour,tmpminute,tmpname);
- chatmsg5[pID] = chatmsg4[pID];
- chatmsg4[pID] = chatmsg3[pID];
- chatmsg3[pID] = chatmsg2[pID];
- chatmsg2[pID] = chatmsg1[pID];
- chatmsg1[pID] = tmpmessage;
- format(string1, sizeof(string1), "|_____________ Chatroom (RoomMaster:%s) _____________|",name);
- format(string7, sizeof(string7), "|________________________________________________________|");
- format(string8, sizeof(string8), "%s\n%s\n%s\n%s\n%s\n%s\n%s",string1,chatmsg5[pID],chatmsg4[pID],chatmsg3[pID],chatmsg2[pID],chatmsg1[pID],string7);
- ShowPlayerDialog(playerid,playerchatdiag,DIALOG_STYLE_INPUT,"Chatroom",string8,"Senden","Verlassen");
- SendClientMessage(playerid, COLOR_RED, "Chatroom betreten.");
- return 1;
- }
- if(!strcmp(cmd,"/kickfromchat",true,13))
- {
- new sID[128],pID;
- sID=split(cmdtext,idx);
- if(!strlen(sID)) return SendClientMessage(playerid,COLOR_RED,"USAGE: /kickfromchat [playerid]");
- pID=strval(sID);
- if(inchat[pID] == 0) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist in keinem Chat!");
- if(inroom[pID] != playerid) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht in deinem Chat!");
- inroom[pID] = 0;
- inchat[pID] = 0;
- SendClientMessage(pID,COLOR_RED,"Du wurdest vom Roommaster aus dem Chat gekickt!");
- new tmpname[MAX_PLAYER_NAME];
- GetPlayerName(pID,tmpname,sizeof(tmpname));
- new tmpstring[128];
- format(tmpstring,sizeof(tmpstring),"Du hast %s erfolgreich aus deinem Chatroom gekickt!",tmpname);
- SendClientMessage(playerid,COLOR_RED,tmpstring);
- return 1;
- }
- if(!strcmp(cmd,"/delmessage",true,11))
- {
- new tmptext;
- tmptext = playerid;
- new sID[128],pID;
- sID=split(cmdtext,idx);
- if(!strlen(sID))
- {
- return SendClientMessage(playerid,COLOR_RED,"USAGE: /delmessage [msgnr. 1-5]");
- }
- pID=strval(sID);
- if(pID >=6|| pID <= 0)
- {
- return SendClientMessage(playerid,COLOR_RED,"Diese Nachricht existiert nicht!");
- }
- if(pID == 1)
- {
- new tmpid[256];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg1[playerid]=tmpid;
- UpdateprivChat(tmptext);
- }
- if(pID == 2)
- {
- new tmpid[256];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg2[playerid]=tmpid;
- UpdateprivChat(tmptext);
- }
- if(pID == 3)
- {
- new tmpid[256];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg3[playerid]=tmpid;
- UpdateprivChat(tmptext);
- }
- if(pID == 4)
- {
- new tmpid[256];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg4[playerid]=tmpid;
- UpdateprivChat(tmptext);
- }
- if(pID == 5)
- {
- new tmpid[256];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg5[playerid]=tmpid;
- UpdateprivChat(tmptext);
- }
- return 1;
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == chatdiag)
- {
- if(!response)
- {
- new tmpmessage[256];
- new tmphour;
- new tmpminute;
- new tmpsecond;
- gettime(tmphour, tmpminute, tmpsecond);
- SendClientMessage(playerid, COLOR_RED, "Du hast den Chatroom verlassen.");
- new tmpname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, tmpname, sizeof(tmpname));
- format(tmpmessage, sizeof(tmpmessage), "[%d:%d]%s hat den Chat verlassen",tmphour,tmpminute,tmpname);
- msg5 = msg4;
- msg4 = msg3;
- msg3 = msg2;
- msg2 = msg1;
- msg1 = tmpmessage;
- inchat[playerid] = 0;
- UpdateChat();
- }
- else
- {
- new tmphour;
- new tmpminute;
- new tmpsecond;
- gettime(tmphour, tmpminute, tmpsecond);
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- strval(inputtext);
- msg5 = msg4;
- msg4 = msg3;
- msg3 = msg2;
- msg2 = msg1;
- format(msg1,sizeof(msg1),"[%d:%d][CHAT]%s: %s",tmphour,tmpminute,name,inputtext);
- UpdateChat();
- }
- }
- if(dialogid == playerchatdiag)
- {
- if(!response)
- {
- new tmpmessage[256];
- new tmphour;
- new tmpminute;
- new tmpsecond;
- gettime(tmphour, tmpminute, tmpsecond);
- SendClientMessage(playerid, COLOR_RED, "Du hast den Chatroom verlassen.");
- new tmpname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, tmpname, sizeof(tmpname));
- format(tmpmessage, sizeof(tmpmessage), "[%d:%d]%s hat den Chat verlassen",tmphour,tmpminute,tmpname);
- chatmsg5[inroom[playerid]] = chatmsg4[inroom[playerid]];
- chatmsg4[inroom[playerid]] = chatmsg3[inroom[playerid]];
- chatmsg3[inroom[playerid]] = chatmsg2[inroom[playerid]];
- chatmsg2[inroom[playerid]] = chatmsg1[inroom[playerid]];
- chatmsg1[inroom[playerid]] = tmpmessage;
- inroom[playerid] = 0;
- inchat[playerid] = 0;
- UpdateprivChat(inroom[playerid]);
- }
- else
- {
- new idx,cmd[128];
- cmd=split(inputtext,idx);
- if(!strcmp(cmd,"delmessage",true,10))
- {
- new tmptext;
- tmptext = playerid;
- new sID[128],pID;
- sID=split(inputtext,idx);
- if(!strlen(sID))
- {
- UpdateprivChat(tmptext);
- return SendClientMessage(playerid,COLOR_RED,"USAGE: delmessage [msgnr. 1-5]");
- }
- pID=strval(sID);
- if(pID >=6|| pID <= 0)
- {
- return SendClientMessage(playerid,COLOR_RED,"Diese Nachricht existiert nicht!");
- }
- if(pID == 1)
- {
- new tmpid[256];
- tmpid=chatmsg1[playerid];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg1[playerid]=tmpid;
- UpdateprivChat(tmptext);
- return 1;
- }
- if(pID == 2)
- {
- new tmpid[256];
- tmpid=chatmsg2[playerid];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg2[playerid]=tmpid;
- UpdateprivChat(tmptext);
- return 1;
- }
- if(pID == 3)
- {
- new tmpid[256];
- tmpid=chatmsg3[playerid];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg3[playerid]=tmpid;
- UpdateprivChat(tmptext);
- return 1;
- }
- if(pID == 4)
- {
- new tmpid[256];
- tmpid=chatmsg4[playerid];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg4[playerid]=tmpid;
- UpdateprivChat(tmptext);
- return 1;
- }
- if(pID == 5)
- {
- new tmpid[256];
- tmpid=chatmsg5[playerid];
- format(tmpid, sizeof(tmpid), "~*NACHRICHT VOM ROOMMASTER GELÖSCHT*~");
- SendClientMessage(playerid, COLOR_RED, "Nachricht erfolgreich gelöscht.");
- chatmsg5[playerid]=tmpid;
- UpdateprivChat(tmptext);
- return 1;
- }
- }
- if(!strcmp(cmd,"kickfromchat",true,12))
- {
- new sID[128],pID;
- sID=split(inputtext,idx);
- if(!strlen(sID)) return SendClientMessage(playerid,COLOR_RED,"USAGE: kickfromchat [playerid]")& UpdateprivChat(inroom[playerid]);
- pID=strval(sID);
- if(inchat[pID] == 0) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist in keinem Chat!");
- if(inroom[pID] != playerid) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht in deinem Chat!");
- inroom[pID] = 0;
- inchat[pID] = 0;
- SendClientMessage(pID,COLOR_RED,"Du wurdest vom Roommaster aus dem Chat gekickt!");
- new tmpname[MAX_PLAYER_NAME];
- GetPlayerName(pID,tmpname,sizeof(tmpname));
- new tmpstring[128];
- format(tmpstring,sizeof(tmpstring),"Du hast %s erfolgreich aus deinem Chatroom gekickt!",tmpname);
- SendClientMessage(playerid,COLOR_RED,tmpstring);
- return 1;
- }
- new tmptext;
- tmptext = inroom[playerid];
- if(!IsPlayerConnected(tmptext))
- {
- inroom[playerid] = 0;
- inchat[playerid] = 0;
- SendClientMessage(playerid,COLOR_RED,"Du wurdest aus dem Chat geworfen, da der Roommaster den Chat verlassen hat!");
- return 1;
- }
- strval(inputtext);
- new tmphour;
- new tmpminute;
- new tmpsecond;
- new tmpmessage[256];
- gettime(tmphour, tmpminute, tmpsecond);
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- chatmsg5[tmptext] = chatmsg4[tmptext];
- chatmsg4[tmptext] = chatmsg3[tmptext];
- chatmsg3[tmptext] = chatmsg2[tmptext];
- chatmsg2[tmptext] = chatmsg1[tmptext];
- format(tmpmessage,sizeof(tmpmessage),"[%d:%d][CHAT]%s: %s",tmphour,tmpminute,name,inputtext);
- chatmsg1[tmptext] = tmpmessage;
- UpdateprivChat(tmptext);
- }
- }
- return 1;
- }
- public UpdateChat()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(inchat[i] == 1)
- {
- new string1[256],string7[256],string8[7*(192+1)+1];
- format(string1, sizeof(string1), "|________________________ Chatroom ______________________|");
- format(string7, sizeof(string7), "|________________________________________________________|");
- format(string8, sizeof(string8), "%s\n%s\n%s\n%s\n%s\n%s\n%s",string1,msg5,msg4,msg3,msg2,msg1,string7);
- ShowPlayerDialog(i,chatdiag,DIALOG_STYLE_INPUT,"Chatroom",string8,"Senden","Verlassen");
- return 1;
- }
- }
- return 1;
- }
- public UpdateprivChat(chatid)
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(inchat[i] == 1)
- {
- if(inroom[i] == chatid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(i, name, sizeof(name));
- new string1[256],string7[256],string8[7*(192+1)+1];
- format(string1, sizeof(string1), "|_____________ Chatroom (RoomMaster:%s) _____________|",name);
- format(string7, sizeof(string7), "|________________________________________________________|");
- format(string8, sizeof(string8), "%s\n%s\n%s\n%s\n%s\n%s\n%s",string1,chatmsg5[chatid],chatmsg4[chatid],chatmsg3[chatid],chatmsg2[chatid],chatmsg1[chatid],string7);
- ShowPlayerDialog(i,playerchatdiag,DIALOG_STYLE_INPUT,"Chatroom",string8,"Senden","Verlassen");
- return 1;
- }
- }
- }
- return 1;
- }
- public KickPlayersFromChat(chatid)
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(inchat[i] == 1)
- {
- if(inroom[i] == chatid)
- {
- if(!IsPlayerConnected(chatid))
- {
- inroom[i] = 0;
- inchat[i] = 0;
- SendClientMessage(i,COLOR_RED,"Du wurdest aus dem Chat geworfen, da der Roommaster den Chat verlassen hat!");
- return 1;
- }
- inroom[i] = 0;
- inchat[i] = 0;
- SendClientMessage(i,COLOR_RED,"Du wurdest aus dem Chat geworfen!");
- return 1;
- }
- }
- }
- return 1;
- }
- split(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement