• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Advanced Chat System GUI v1.7

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This system is not something new on this site, I see there is only one accepted chat system and I didn't mean to prove that I can make a better same system but I think that system still lacks a lot of improvements and modifications. Since that system never been updated anymore so I made this one. The other reason is I like the idea of a chat system where it allows players to colorize their messages (inspired from Heroes of Newerth). But I feel sorry that I can't add glowing text feature (seems impossible). Still I give credits to the old chat system maker.

Features:
- you are able to colorize your messages using this system
- saves all chats from the begining to the end
- categorize the messages exclusively
- banlist
- exclusive system chat
- AI chat
- scroll up/down
- time tag

to explain what's good about this system I will just quote a post, it's often become a burden for me to make a good description
Wrda;2489174 said:
Can you tell me what map this can be useful in? If you intend to use /all and etc commands you better change the "/" thing, like icemanbo said, or the user will think it is a bugged system when he finds out that in battle.net it doesn't work.
.....;2489253 said:
every map :) the only weird thing is user should configure gameplay constant using notepad then...

personaly, what I want from the first time is colorized chats. using normal chat, whatever you do, you can't colorize them. about "/", you can change it to anything you want, I don't know about bnet because I never played there. and debug message, sometimes system maker clear the screen first then shows yellow text at bottom and it's weird if there is currently an important message at the screen and then it's cleared, if you use "system" chat feature, you don't need to clear the screen. then AI chats, isn't that looks bad if the player's chat shows at the left-bottom of the screen but the AI's chat displayed differently? isn't that prettier if we and AI has a same chat? you can send personal chat easier than using normal chat in multiplayer game, you can enter any game commands without displayed at the screen or you want to display it, it's optional, so... why no use? :)

let me explain more about the red text above, you have to sets everything in your gameplay constant in the notepad first, if you import the war3mapMisc.txt then save the map and you haven't set the gameplay constant in that .txt file, your gameplay constant will be reseted.

another thing I haven't explain is about ban list, if you enter another player into your banlist (which can be done by typing "/<ban command> folowed with targets number) you will not recieve any message from him. you can unban that player anytime by repeating ban command.

then about scroll up/down, you may change the event to anything you want, but atm, you can't scroll up/down if you shows general message. I will make sure this works in general once I write this in JASS, maybe someday..


  • Chat Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set CS_Loop = 0
      • Set CS_Loop2 = 0
      • Set CS_Time_Min = 00
      • Set CS_Time_Sec = 00
      • -------- player name colors --------
      • Set Player_NameColor[1] = |CFFFF0303
      • Set Player_NameColor[2] = |CFF0042FF
      • Set Player_NameColor[3] = |CFF00FFFF
      • Set Player_NameColor[4] = |CFF540081
      • Set Player_NameColor[5] = |CFFFFFF01
      • Set Player_NameColor[6] = |CFFFE8A0E
      • Set Player_NameColor[7] = |CFF20C000
      • Set Player_NameColor[8] = |CFFE55BB0
      • Set Player_NameColor[9] = |CFF959697
      • Set Player_NameColor[10] = |CFF7EBFF1
      • Set Player_NameColor[11] = |CFF106246
      • Set Player_NameColor[12] = |CFF4E2A04
      • -------- CONFIGURATION --------
      • -------- symbol to identity a color code --------
      • Set CS_Conf_ColorID = ^
      • -------- descending = show history from the older to the newer --------
      • Set CS_Conf_Descending = True
      • -------- initial for all commands --------
      • Set CS_Conf_CmdInit = -
      • -------- command to show [ALL] message --------
      • Set CS_Conf_AllCmd = -all
      • -------- command to show [PRIVATE] message --------
      • Set CS_Conf_PrivateCmd = -private
      • -------- command to show message from all categories --------
      • Set CS_Conf_GeneralCmd = -general
      • -------- command to show [SYSTEM] message --------
      • Set CS_Conf_SystemCmd = -system
      • -------- command to show [TEAM] message --------
      • Set CS_Conf_TeamCmd = -team
      • -------- command to hide chat histories from the screen --------
      • Set CS_Conf_HideCmd = -close
      • -------- command to unhide chat histories from the screen --------
      • Set CS_Conf_ShowCmd = -open
      • -------- command to clear all histories --------
      • Set CS_Conf_ClearCmd = -clear
      • -------- to reject all messages from specific player --------
      • Set CS_Conf_RejectCmd = -ban
      • -------- initial of all chat destination commands --------
      • Set CS_Conf_ChatInit = /
      • -------- to send message to all players --------
      • Set CS_Conf_All = /all
      • -------- to send message to specific player --------
      • Set CS_Conf_Private = /pm
      • -------- to send message to allied players --------
      • Set CS_Conf_Team = /team
      • -------- ------------------------------------- --------
      • Set CS_Conf_AllPrefix = [|CFF0000FFAll|r]
      • Set CS_Conf_PrivatePrefix = [|CFFFFAA00Private|r]
      • Set CS_Conf_SystemPrefix = [|CFFFF0000System|r]
      • Set CS_Conf_TeamPrefix = [|CFF00FF00Team|r]
      • Set CS_Conf_TimeColor = |CFFFFFF00
      • -------- don't change these --------
        • Do Multiple ActionsFor each (Integer CS_Loop) from 1 to 12, do (Actions)
          • Loop - Actions
            • Set CS_Player = (Player(CS_Loop))
            • Set Player_NameString[CS_Loop] = (Player_NameColor[CS_Loop] + ((Name of CS_Player) + |r))
            • Custom script: set udg_CS_RejectGroup[udg_CS_Loop] = CreateForce()
            • Player Group - Add CS_Player to CS_Group_General
            • Trigger - Add to Chat Event <gen> the event (Player - CS_Player types a chat message containing <Empty String> as A substring)
            • Trigger - Add to Chat Scroll Down <gen> the event (Player - CS_Player Presses the Down Arrow key)
            • Trigger - Add to Chat Scroll Up <gen> the event (Player - CS_Player Presses the Up Arrow key)
  • Chat Event
    • Events
    • Conditions
    • Actions
      • Set CS_Player = (Triggering player)
      • Set CS_PlayerNumber = (Player number of CS_Player)
      • Set CS_Message = (Entered chat string)
      • Set CS_MsgLength = (Length of CS_Message)
      • Set CS_Command = (Substring(CS_Message, 1, 1))
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • CS_Command Not equal to (!=) CS_Conf_ChatInit
            • CS_Command Not equal to (!=) CS_Conf_CmdInit
          • Then - Actions
            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
              • If - Conditions
                • CS_Boolean[CS_PlayerNumber] Equal to (==) True
              • Then - Actions
                • Set CS_MsgGroup = (All allies of CS_Player)
                • Player Group - Pick every player in CS_MsgGroup and do (Actions)
                  • Loop - Actions
                    • Set CS_Integer = (Player number of (Picked player))
                    • Set CS_Msg_TeamTotal[CS_Integer] = (CS_Msg_TeamTotal[CS_Integer] + 1)
                    • Set CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]] = CS_Message
                      • Do Multiple ActionsFor each (Integer CS_Color_Loop) from 1 to CS_MsgLength, do (Actions)
                        • Loop - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], CS_Color_Loop, CS_Color_Loop)) Equal to (==) CS_Conf_ColorID
                            • Then - Actions
                              • Set CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]] = ((Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], 1, (CS_Color_Loop - 1))) + ((|r|CFF + (Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], (CS_Color_Loop + 1), (CS_Color_Loop + 6)))) + ((Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], (CS_Color_L
                              • Set CS_MsgLength = (CS_MsgLength + 5)
                            • Else - Actions
                    • Set CS_Msg_TeamSender[CS_Msg_TeamTotal[CS_Integer]] = CS_PlayerNumber
                    • Set CS_Min_Team[CS_Msg_TeamTotal[CS_Integer]] = CS_Time_Min
                    • Set CS_Sec_Team[CS_Msg_TeamTotal[CS_Integer]] = CS_Time_Sec
                    • Set CS_General_Total = (CS_General_Total + 1)
                    • Set CS_General_Msg[CS_General_Total] = CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]]
                    • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                    • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                    • Set CS_General_Sender[CS_General_Total] = CS_PlayerNumber
                    • Set CS_General_Recipient[CS_General_Total] = CS_Integer
                    • Set CS_General_Category[CS_General_Total] = 4
                • Custom script: call DestroyForce(udg_CS_MsgGroup)
              • Else - Actions
                • Player Group - Pick every player in (All players) and do (Actions)
                  • Loop - Actions
                    • Set CS_Integer = (Player number of (Picked player))
                    • Set CS_Msg_AllTotal[CS_Integer] = (CS_Msg_AllTotal[CS_Integer] + 1)
                    • Set CS_Msg_All[CS_Msg_AllTotal[CS_Integer]] = CS_Message
                      • Do Multiple ActionsFor each (Integer CS_Color_Loop) from 1 to CS_MsgLength, do (Actions)
                        • Loop - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], CS_Color_Loop, CS_Color_Loop)) Equal to (==) CS_Conf_ColorID
                            • Then - Actions
                              • Set CS_Msg_All[CS_Msg_AllTotal[CS_Integer]] = ((Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], 1, (CS_Color_Loop - 1))) + ((|r|CFF + (Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], (CS_Color_Loop + 1), (CS_Color_Loop + 6)))) + ((Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], (CS_Color_Loop +
                              • Set CS_MsgLength = (CS_MsgLength + 5)
                            • Else - Actions
                    • Set CS_Msg_AllSender[CS_Msg_AllTotal[CS_Integer]] = CS_PlayerNumber
                    • Set CS_Min_All[CS_Msg_AllTotal[CS_Integer]] = CS_Time_Min
                    • Set CS_Sec_All[CS_Msg_AllTotal[CS_Integer]] = CS_Time_Sec
                    • Set CS_General_Total = (CS_General_Total + 1)
                    • Set CS_General_Msg[CS_General_Total] = CS_Msg_All[CS_Msg_AllTotal[CS_Integer]]
                    • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                    • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                    • Set CS_General_Sender[CS_General_Total] = CS_PlayerNumber
                    • Set CS_General_Recipient[CS_General_Total] = CS_Integer
                    • Set CS_General_Category[CS_General_Total] = 1
          • Else - Actions
            • Do Multiple ActionsFor each (Integer CS_Loop) from 1 to CS_MsgLength, do (Actions)
              • Loop - Actions
                • Set CS_Command = (Substring(CS_Message, 1, CS_Loop))
                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CS_Command Equal to (==) CS_Conf_AllCmd
                    • Then - Actions
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (CS_Player is in CS_Group_All) Equal to (==) False
                        • Then - Actions
                          • Set CS_ScrollInteger[CS_PlayerNumber] = 0
                          • Player Group - Add CS_Player to CS_Group_All
                          • Player Group - Remove CS_Player from CS_Group_General
                          • Player Group - Remove CS_Player from CS_Group_Private
                          • Player Group - Remove CS_Player from CS_Group_System
                          • Player Group - Remove CS_Player from CS_Group_Team
                        • Else - Actions
                      • Set CS_Loop = (CS_MsgLength + 1)
                    • Else - Actions
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_Command Equal to (==) CS_Conf_PrivateCmd
                        • Then - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • (CS_Player is in CS_Group_Private) Equal to (==) False
                            • Then - Actions
                              • Set CS_ScrollInteger[CS_PlayerNumber] = 0
                              • Player Group - Add CS_Player to CS_Group_Private
                              • Player Group - Remove CS_Player from CS_Group_All
                              • Player Group - Remove CS_Player from CS_Group_General
                              • Player Group - Remove CS_Player from CS_Group_System
                              • Player Group - Remove CS_Player from CS_Group_Team
                            • Else - Actions
                          • Set CS_Loop = (CS_MsgLength + 1)
                        • Else - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Command Equal to (==) CS_Conf_SystemCmd
                            • Then - Actions
                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • (CS_Player is in CS_Group_System) Equal to (==) False
                                • Then - Actions
                                  • Set CS_ScrollInteger[CS_PlayerNumber] = 0
                                  • Player Group - Add CS_Player to CS_Group_System
                                  • Player Group - Remove CS_Player from CS_Group_All
                                  • Player Group - Remove CS_Player from CS_Group_General
                                  • Player Group - Remove CS_Player from CS_Group_Private
                                  • Player Group - Remove CS_Player from CS_Group_Team
                                • Else - Actions
                              • Set CS_Loop = (CS_MsgLength + 1)
                            • Else - Actions
                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • CS_Command Equal to (==) CS_Conf_TeamCmd
                                • Then - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (CS_Player is in CS_Group_Team) Equal to (==) False
                                    • Then - Actions
                                      • Set CS_ScrollInteger[CS_PlayerNumber] = 0
                                      • Player Group - Add CS_Player to CS_Group_Team
                                      • Player Group - Remove CS_Player from CS_Group_All
                                      • Player Group - Remove CS_Player from CS_Group_General
                                      • Player Group - Remove CS_Player from CS_Group_Private
                                      • Player Group - Remove CS_Player from CS_Group_System
                                    • Else - Actions
                                  • Set CS_Loop = (CS_MsgLength + 1)
                                • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Command Equal to (==) CS_Conf_GeneralCmd
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (CS_Player is in CS_Group_General) Equal to (==) False
                                        • Then - Actions
                                          • Set CS_ScrollInteger[CS_PlayerNumber] = 0
                                          • Player Group - Add CS_Player to CS_Group_General
                                          • Player Group - Remove CS_Player from CS_Group_All
                                          • Player Group - Remove CS_Player from CS_Group_Private
                                          • Player Group - Remove CS_Player from CS_Group_System
                                          • Player Group - Remove CS_Player from CS_Group_Team
                                        • Else - Actions
                                      • Set CS_Loop = (CS_MsgLength + 1)
                                    • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • CS_Command Equal to (==) CS_Conf_All
                                        • Then - Actions
                                          • Set CS_Boolean[CS_PlayerNumber] = False
                                          • Player Group - Pick every player in (All players) and do (Actions)
                                            • Loop - Actions
                                              • Set CS_Integer = (Player number of (Picked player))
                                              • Set CS_Msg_AllTotal[CS_Integer] = (CS_Msg_AllTotal[CS_Integer] + 1)
                                              • Set CS_Msg_All[CS_Msg_AllTotal[CS_Integer]] = (Substring(CS_Message, (CS_Loop + 2), CS_MsgLength))
                                                • Do Multiple ActionsFor each (Integer CS_Color_Loop) from 1 to CS_MsgLength, do (Actions)
                                                  • Loop - Actions
                                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                      • If - Conditions
                                                        • (Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], CS_Color_Loop, CS_Color_Loop)) Equal to (==) CS_Conf_ColorID
                                                      • Then - Actions
                                                        • Set CS_Msg_All[CS_Msg_AllTotal[CS_Integer]] = ((Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], 1, (CS_Color_Loop - 1))) + ((|r|CFF + (Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], (CS_Color_Loop + 1), (CS_Color_Loop + 6)))) + ((Substring(CS_Msg_All[CS_Msg_AllTotal[CS_Integer]], (CS_Color_Loop +
                                                        • Set CS_MsgLength = (CS_MsgLength + 5)
                                                      • Else - Actions
                                              • Set CS_Msg_AllSender[CS_Msg_AllTotal[CS_Integer]] = CS_PlayerNumber
                                              • Set CS_Min_All[CS_Msg_AllTotal[CS_Integer]] = CS_Time_Min
                                              • Set CS_Sec_All[CS_Msg_AllTotal[CS_Integer]] = CS_Time_Sec
                                              • Set CS_General_Total = (CS_General_Total + 1)
                                              • Set CS_General_Msg[CS_General_Total] = CS_Msg_All[CS_Msg_AllTotal[CS_Integer]]
                                              • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                              • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                              • Set CS_General_Sender[CS_General_Total] = CS_PlayerNumber
                                              • Set CS_General_Recipient[CS_General_Total] = CS_Integer
                                              • Set CS_General_Category[CS_General_Total] = 1
                                          • Set CS_Loop = (CS_MsgLength + 1)
                                        • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • CS_Command Equal to (==) CS_Conf_Team
                                            • Then - Actions
                                              • Set CS_Boolean[CS_PlayerNumber] = True
                                              • Set CS_MsgGroup = (All allies of CS_Player)
                                              • Player Group - Pick every player in CS_MsgGroup and do (Actions)
                                                • Loop - Actions
                                                  • Set CS_Integer = (Player number of (Picked player))
                                                  • Set CS_Msg_TeamTotal[CS_Integer] = (CS_Msg_TeamTotal[CS_Integer] + 1)
                                                  • Set CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]] = (Substring(CS_Message, (CS_Loop + 2), CS_MsgLength))
                                                    • Do Multiple ActionsFor each (Integer CS_Color_Loop) from 1 to CS_MsgLength, do (Actions)
                                                      • Loop - Actions
                                                        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                          • If - Conditions
                                                            • (Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], CS_Color_Loop, CS_Color_Loop)) Equal to (==) CS_Conf_ColorID
                                                          • Then - Actions
                                                            • Set CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]] = ((Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], 1, (CS_Color_Loop - 1))) + ((|r|CFF + (Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], (CS_Color_Loop + 1), (CS_Color_Loop + 6)))) + ((Substring(CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]], (CS_Color_L
                                                            • Set CS_MsgLength = (CS_MsgLength + 5)
                                                          • Else - Actions
                                                  • Set CS_Msg_TeamSender[CS_Msg_TeamTotal[CS_Integer]] = CS_PlayerNumber
                                                  • Set CS_Min_Team[CS_Msg_TeamTotal[CS_Integer]] = CS_Time_Min
                                                  • Set CS_Sec_Team[CS_Msg_TeamTotal[CS_Integer]] = CS_Time_Sec
                                                  • Set CS_General_Total = (CS_General_Total + 1)
                                                  • Set CS_General_Msg[CS_General_Total] = CS_Msg_Team[CS_Msg_TeamTotal[CS_Integer]]
                                                  • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                  • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                  • Set CS_General_Sender[CS_General_Total] = CS_PlayerNumber
                                                  • Set CS_General_Recipient[CS_General_Total] = CS_Integer
                                                  • Set CS_General_Category[CS_General_Total] = 4
                                              • Custom script: call DestroyForce(udg_CS_MsgGroup)
                                              • Set CS_Loop = (CS_MsgLength + 1)
                                            • Else - Actions
                                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                • If - Conditions
                                                  • CS_Command Equal to (==) CS_Conf_Private
                                                • Then - Actions
                                                  • Set CS_Integer = (Integer((Substring(CS_Message, (CS_Loop + 1), (CS_Loop + 2)))))
                                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                      • If - Conditions
                                                        • CS_Integer Less than or equal to (<=) 12
                                                        • ((Player(CS_Integer)) slot status) Equal to (==) Is playing
                                                      • Then - Actions
                                                        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                          • If - Conditions
                                                            • CS_Integer Not equal to (!=) CS_PlayerNumber
                                                          • Then - Actions
                                                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                              • If - Conditions
                                                                • (CS_Player is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                                              • Then - Actions
                                                                • Set CS_Msg_PrivateTotal[CS_Integer] = (CS_Msg_PrivateTotal[CS_Integer] + 1)
                                                                • Set CS_Msg_Private[CS_Msg_PrivateTotal[CS_Integer]] = (Substring(CS_Message, (CS_Loop + 4), CS_MsgLength))
                                                                  • Do Multiple ActionsFor each (Integer CS_Color_Loop) from 1 to CS_MsgLength, do (Actions)
                                                                    • Loop - Actions
                                                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                        • If - Conditions
                                                                          • (Substring(CS_Msg_Private[CS_Msg_PrivateTotal[CS_Integer]], CS_Color_Loop, CS_Color_Loop)) Equal to (==) CS_Conf_ColorID
                                                                        • Then - Actions
                                                                          • Set CS_Msg_Private[CS_Msg_PrivateTotal[CS_Integer]] = ((Substring(CS_Msg_Private[CS_Msg_PrivateTotal[CS_Integer]], 1, (CS_Color_Loop - 1))) + ((|r|CFF + (Substring(CS_Msg_Private[CS_Msg_PrivateTotal[CS_Integer]], (CS_Color_Loop + 1), (CS_Color_Loop + 6)))) + ((Substring(CS_Msg_Private[CS_Msg_PrivateTotal[CS_Inte
                                                                          • Set CS_MsgLength = (CS_MsgLength + 5)
                                                                        • Else - Actions
                                                                • Set CS_Msg_PrivateSender[CS_Msg_PrivateTotal[CS_Integer]] = CS_PlayerNumber
                                                                • Set CS_Min_Private[CS_Msg_PrivateTotal[CS_Integer]] = CS_Time_Min
                                                                • Set CS_Sec_Private[CS_Msg_PrivateTotal[CS_Integer]] = CS_Time_Sec
                                                                • Set CS_General_Total = (CS_General_Total + 1)
                                                                • Set CS_General_Msg[CS_General_Total] = CS_Msg_Private[CS_Msg_PrivateTotal[CS_Integer]]
                                                                • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                                • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                                • Set CS_General_Sender[CS_General_Total] = CS_PlayerNumber
                                                                • Set CS_General_Recipient[CS_General_Total] = CS_Integer
                                                                • Set CS_General_Category[CS_General_Total] = 2
                                                              • Else - Actions
                                                                • Set CS_Msg_SystemTotal[CS_PlayerNumber] = (CS_Msg_SystemTotal[CS_PlayerNumber] + 1)
                                                                • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = (Player_NameString[CS_Integer] + |CFF990000 has rejected your message!|R)
                                                                • Set CS_Min_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Min
                                                                • Set CS_Sec_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Sec
                                                                • Set CS_General_Total = (CS_General_Total + 1)
                                                                • Set CS_General_Msg[CS_General_Total] = CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]]
                                                                • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                                • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                                • Set CS_General_Recipient[CS_General_Total] = CS_PlayerNumber
                                                                • Set CS_General_Category[CS_General_Total] = 3
                                                          • Else - Actions
                                                            • Set CS_Msg_SystemTotal[CS_PlayerNumber] = (CS_Msg_SystemTotal[CS_PlayerNumber] + 1)
                                                            • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = |CFF990000You can't send PM to yourself!|r
                                                            • Set CS_Min_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Min
                                                            • Set CS_Sec_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Sec
                                                            • Set CS_General_Total = (CS_General_Total + 1)
                                                            • Set CS_General_Msg[CS_General_Total] = CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]]
                                                            • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                            • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                            • Set CS_General_Recipient[CS_General_Total] = CS_PlayerNumber
                                                            • Set CS_General_Category[CS_General_Total] = 3
                                                      • Else - Actions
                                                        • Set CS_Msg_SystemTotal[CS_PlayerNumber] = (CS_Msg_SystemTotal[CS_PlayerNumber] + 1)
                                                        • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = |CFF990000The recipient is not available!|r
                                                        • Set CS_Min_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Min
                                                        • Set CS_Sec_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Sec
                                                        • Set CS_General_Total = (CS_General_Total + 1)
                                                        • Set CS_General_Msg[CS_General_Total] = CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]]
                                                        • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                        • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                        • Set CS_General_Recipient[CS_General_Total] = CS_PlayerNumber
                                                        • Set CS_General_Category[CS_General_Total] = 3
                                                  • Set CS_Loop = (CS_MsgLength + 1)
                                                • Else - Actions
                                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    • If - Conditions
                                                      • CS_Command Equal to (==) CS_Conf_RejectCmd
                                                    • Then - Actions
                                                      • Set CS_Integer = (Integer((Substring(CS_Message, (CS_Loop + 1), (CS_Loop + 2)))))
                                                      • Set CS_Player = (Player(CS_Integer))
                                                        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                          • If - Conditions
                                                            • CS_Integer Not equal to (!=) CS_PlayerNumber
                                                          • Then - Actions
                                                            • Set CS_Msg_SystemTotal[CS_PlayerNumber] = (CS_Msg_SystemTotal[CS_PlayerNumber] + 1)
                                                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                • If - Conditions
                                                                  • (CS_Player is in CS_RejectGroup[CS_PlayerNumber]) Equal to (==) False
                                                                • Then - Actions
                                                                  • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = (You have just added + (Player_NameString[CS_Integer] + to your reject list.))
                                                                  • Player Group - Add CS_Player to CS_RejectGroup[CS_PlayerNumber]
                                                                • Else - Actions
                                                                  • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = (You have just removed + (Player_NameString[CS_Integer] + from your reject list.))
                                                                  • Player Group - Remove CS_Player from CS_RejectGroup[CS_PlayerNumber]
                                                            • Set CS_Min_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Min
                                                            • Set CS_Sec_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Sec
                                                            • Set CS_General_Total = (CS_General_Total + 1)
                                                            • Set CS_General_Msg[CS_General_Total] = CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]]
                                                            • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                            • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                            • Set CS_General_Recipient[CS_General_Total] = CS_PlayerNumber
                                                            • Set CS_General_Category[CS_General_Total] = 3
                                                          • Else - Actions
                                                            • Set CS_Msg_SystemTotal[CS_PlayerNumber] = (CS_Msg_SystemTotal[CS_PlayerNumber] + 1)
                                                            • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = |CFF990000You can't add yourself to your reject list!|r
                                                            • Set CS_Min_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Min
                                                            • Set CS_Sec_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Sec
                                                            • Set CS_General_Total = (CS_General_Total + 1)
                                                            • Set CS_General_Msg[CS_General_Total] = CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]]
                                                            • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                            • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                            • Set CS_General_Recipient[CS_General_Total] = CS_PlayerNumber
                                                            • Set CS_General_Category[CS_General_Total] = 3
                                                      • Set CS_Loop = (CS_MsgLength + 1)
                                                    • Else - Actions
                                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                        • If - Conditions
                                                          • CS_Command Equal to (==) CS_Conf_ClearCmd
                                                        • Then - Actions
                                                          • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                                                          • Cinematic - Clear the screen of text messages for CS_MsgGroup
                                                          • Set CS_Msg_AllTotal[CS_PlayerNumber] = 0
                                                          • Set CS_Msg_PrivateTotal[CS_PlayerNumber] = 0
                                                          • Set CS_Msg_SystemTotal[CS_PlayerNumber] = 0
                                                          • Set CS_Msg_TeamTotal[CS_PlayerNumber] = 0
                                                            • Do Multiple ActionsFor each (Integer CS_Loop2) from 1 to CS_General_Total, do (Actions)
                                                              • Loop - Actions
                                                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                  • If - Conditions
                                                                    • CS_General_Recipient[CS_Loop2] Equal to (==) CS_PlayerNumber
                                                                  • Then - Actions
                                                                    • Set CS_General_Category[CS_Loop2] = CS_General_Category[CS_General_Total]
                                                                    • Set CS_General_Min[CS_Loop2] = CS_General_Min[CS_General_Total]
                                                                    • Set CS_General_Msg[CS_Loop2] = CS_General_Msg[CS_General_Total]
                                                                    • Set CS_General_Recipient[CS_Loop2] = CS_General_Recipient[CS_General_Total]
                                                                    • Set CS_General_Sec[CS_Loop2] = CS_General_Sec[CS_General_Total]
                                                                    • Set CS_General_Sender[CS_Loop2] = CS_General_Sender[CS_General_Total]
                                                                    • Set CS_General_Total = (CS_General_Total - 1)
                                                                    • Set CS_Loop2 = (CS_Loop2 - 1)
                                                                  • Else - Actions
                                                          • Custom script: call DestroyForce(udg_CS_MsgGroup)
                                                          • Skip remaining actions
                                                        • Else - Actions
                                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                            • If - Conditions
                                                              • CS_Command Equal to (==) CS_Conf_ShowCmd
                                                            • Then - Actions
                                                              • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                                                              • Cinematic - Clear the screen of text messages for CS_MsgGroup
                                                              • Custom script: call DestroyForce(udg_CS_MsgGroup)
                                                              • Player Group - Remove CS_Player from CS_HideGroup
                                                              • Set CS_Loop = (CS_MsgLength + 1)
                                                            • Else - Actions
                                                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                • If - Conditions
                                                                  • CS_Command Equal to (==) CS_Conf_HideCmd
                                                                • Then - Actions
                                                                  • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                                                                  • Cinematic - Clear the screen of text messages for CS_MsgGroup
                                                                  • Custom script: call DestroyForce(udg_CS_MsgGroup)
                                                                  • Player Group - Add CS_Player to CS_HideGroup
                                                                  • Skip remaining actions
                                                                • Else - Actions
                                                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                    • If - Conditions
                                                                      • CS_Loop Equal to (==) CS_MsgLength
                                                                    • Then - Actions
                                                                      • Set CS_Msg_SystemTotal[CS_PlayerNumber] = (CS_Msg_SystemTotal[CS_PlayerNumber] + 1)
                                                                      • Set CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = |CFF990000Your command is invalid!|r
                                                                      • Set CS_Min_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Min
                                                                      • Set CS_Sec_System[CS_Msg_SystemTotal[CS_PlayerNumber]] = CS_Time_Sec
                                                                      • Set CS_General_Total = (CS_General_Total + 1)
                                                                      • Set CS_General_Msg[CS_General_Total] = CS_Msg_System[CS_Msg_SystemTotal[CS_PlayerNumber]]
                                                                      • Set CS_General_Min[CS_General_Total] = CS_Time_Min
                                                                      • Set CS_General_Sec[CS_General_Total] = CS_Time_Sec
                                                                      • Set CS_General_Recipient[CS_General_Total] = CS_PlayerNumber
                                                                      • Set CS_General_Category[CS_General_Total] = 3
                                                                    • Else - Actions
      • Trigger - Run Chat Update <gen> (ignoring conditions)
  • Chat Update
    • Events
    • Conditions
    • Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of players in CS_Group_General) Greater than (>) 0
        • Then - Actions
          • Player Group - Pick every player in CS_Group_General and do (Actions)
            • Loop - Actions
              • Set CS_Player = (Picked player)
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (CS_Player is in CS_HideGroup) Equal to (==) False
                  • Then - Actions
                    • Set CS_Integer = (Player number of CS_Player)
                    • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                    • Cinematic - Clear the screen of text messages for CS_MsgGroup
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_Conf_Descending Equal to (==) True
                        • Then - Actions
                          • Do Multiple ActionsFor each (Integer CS_Loop2) from 1 to CS_General_Total, do (Actions)
                            • Loop - Actions
                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • CS_General_Recipient[CS_Loop2] Equal to (==) CS_Integer
                                • Then - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_General_Category[CS_Loop2] Equal to (==) 3
                                    • Then - Actions
                                      • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_SystemPrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + CS_General_Msg[CS_Loop2]))))))
                                    • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_General_Sender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • CS_General_Category[CS_Loop2] Equal to (==) 1
                                            • Then - Actions
                                              • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_AllPrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + (Player_NameString[CS_General_Sender[CS_Loop2]] + (: + CS_General_Msg[CS_Loop2]))))))))
                                            • Else - Actions
                                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                • If - Conditions
                                                  • CS_General_Category[CS_Loop2] Equal to (==) 2
                                                • Then - Actions
                                                  • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_PrivatePrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + (Player_NameString[CS_General_Sender[CS_Loop2]] + (: + CS_General_Msg[CS_Loop2]))))))))
                                                • Else - Actions
                                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    • If - Conditions
                                                      • CS_General_Category[CS_Loop2] Equal to (==) 4
                                                    • Then - Actions
                                                      • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_TeamPrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + (Player_NameString[CS_General_Sender[CS_Loop2]] + (: + CS_General_Msg[CS_Loop2]))))))))
                                                    • Else - Actions
                                        • Else - Actions
                                • Else - Actions
                        • Else - Actions
                          • Custom script: set udg_CS_Loop2 = udg_CS_General_Total
                          • Custom script: loop
                          • Custom script: exitwhen udg_CS_Loop2 < 1
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • CS_General_Recipient[CS_Loop2] Equal to (==) CS_Integer
                              • Then - Actions
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_General_Category[CS_Loop2] Equal to (==) 3
                                  • Then - Actions
                                    • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_SystemPrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + CS_General_Msg[CS_Loop2]))))))
                                  • Else - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_General_Sender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                          • If - Conditions
                                            • CS_General_Category[CS_Loop2] Equal to (==) 1
                                          • Then - Actions
                                            • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_AllPrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + (Player_NameString[CS_General_Sender[CS_Loop2]] + (: + CS_General_Msg[CS_Loop2]))))))))
                                          • Else - Actions
                                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                              • If - Conditions
                                                • CS_General_Category[CS_Loop2] Equal to (==) 2
                                              • Then - Actions
                                                • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_PrivatePrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + (Player_NameString[CS_General_Sender[CS_Loop2]] + (: + CS_General_Msg[CS_Loop2]))))))))
                                              • Else - Actions
                                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                  • If - Conditions
                                                    • CS_General_Category[CS_Loop2] Equal to (==) 4
                                                  • Then - Actions
                                                    • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_TeamPrefix + ((CS_Conf_TimeColor + <) + (CS_General_Min[CS_Loop2] + (: + (CS_General_Sec[CS_Loop2] + (>|r + (Player_NameString[CS_General_Sender[CS_Loop2]] + (: + CS_General_Msg[CS_Loop2]))))))))
                                                  • Else - Actions
                                      • Else - Actions
                              • Else - Actions
                          • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                          • Custom script: endloop
                    • Custom script: call DestroyForce(udg_CS_MsgGroup)
                  • Else - Actions
        • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of players in CS_Group_All) Greater than (>) 0
        • Then - Actions
          • Player Group - Pick every player in CS_Group_All and do (Actions)
            • Loop - Actions
              • Set CS_Player = (Picked player)
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (CS_Player is in CS_HideGroup) Equal to (==) False
                  • Then - Actions
                    • Set CS_Integer = (Player number of CS_Player)
                    • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                    • Cinematic - Clear the screen of text messages for CS_MsgGroup
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_ScrollInteger[CS_Integer] Greater than (>) CS_Msg_AllTotal[CS_Integer]
                        • Then - Actions
                          • Set CS_ScrollInteger[CS_Integer] = CS_Msg_AllTotal[CS_Integer]
                        • Else - Actions
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_Conf_Descending Equal to (==) True
                        • Then - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_AllTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (CS_Msg_AllTotal[CS_Integer] - (16 + CS_ScrollInteger[CS_Integer])) to (CS_Msg_AllTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_Msg_AllSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_AllPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_All[CS_Loop2] + (: + (CS_Sec_All[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_AllSender[CS_Loop2]] + (: + CS_Msg_All[CS_Loop2]))))))))
                                        • Else - Actions
                                    • Else - Actions
                            • Else - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (1 - CS_ScrollInteger[CS_Integer]) to (CS_Msg_AllTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_Msg_AllSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_AllPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_All[CS_Loop2] + (: + (CS_Sec_All[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_AllSender[CS_Loop2]] + (: + CS_Msg_All[CS_Loop2]))))))))
                                        • Else - Actions
                                    • Else - Actions
                        • Else - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_AllTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_AllTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < udg_CS_Msg_AllTotal[udg_CS_Integer] - 16 + udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_Msg_AllSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_AllPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_All[CS_Loop2] + (: + (CS_Sec_All[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_AllSender[CS_Loop2]] + (: + CS_Msg_All[CS_Loop2]))))))))
                                      • Else - Actions
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                            • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_AllTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < 1 - udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_Msg_AllSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_AllPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_All[CS_Loop2] + (: + (CS_Sec_All[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_AllSender[CS_Loop2]] + (: + CS_Msg_All[CS_Loop2]))))))))
                                      • Else - Actions
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                    • Custom script: call DestroyForce(udg_CS_MsgGroup)
                  • Else - Actions
        • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of players in CS_Group_Private) Greater than (>) 0
        • Then - Actions
          • Player Group - Pick every player in CS_Group_Private and do (Actions)
            • Loop - Actions
              • Set CS_Player = (Picked player)
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (CS_Player is in CS_HideGroup) Equal to (==) False
                  • Then - Actions
                    • Set CS_Integer = (Player number of CS_Player)
                    • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                    • Cinematic - Clear the screen of text messages for CS_MsgGroup
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_ScrollInteger[CS_Integer] Greater than (>) CS_Msg_PrivateTotal[CS_Integer]
                        • Then - Actions
                          • Set CS_ScrollInteger[CS_Integer] = CS_Msg_PrivateTotal[CS_Integer]
                        • Else - Actions
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_Conf_Descending Equal to (==) True
                        • Then - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_PrivateTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (CS_Msg_PrivateTotal[CS_Integer] - (16 + CS_ScrollInteger[CS_Integer])) to (CS_Msg_PrivateTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_Msg_PrivateSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_PrivatePrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Private[CS_Loop2] + (: + (CS_Sec_Private[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_PrivateSender[CS_Loop2]] + (: + CS_Msg_Private[CS_Loop2]))))))))
                                        • Else - Actions
                                    • Else - Actions
                            • Else - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (1 - CS_ScrollInteger[CS_Integer]) to (CS_Msg_PrivateTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_Msg_PrivateSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_PrivatePrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Private[CS_Loop2] + (: + (CS_Sec_Private[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_PrivateSender[CS_Loop2]] + (: + CS_Msg_Private[CS_Loop2]))))))))
                                        • Else - Actions
                                    • Else - Actions
                        • Else - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_PrivateTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_PrivateTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < udg_CS_Msg_PrivateTotal[udg_CS_Integer] - 16 + udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_Msg_PrivateSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_PrivatePrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Private[CS_Loop2] + (: + (CS_Sec_Private[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_PrivateSender[CS_Loop2]] + (: + CS_Msg_Private[CS_Loop2]))))))))
                                      • Else - Actions
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                            • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_PrivateTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < 1 - udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_Msg_PrivateSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_PrivatePrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Private[CS_Loop2] + (: + (CS_Sec_Private[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_PrivateSender[CS_Loop2]] + (: + CS_Msg_Private[CS_Loop2]))))))))
                                      • Else - Actions
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                    • Custom script: call DestroyForce(udg_CS_MsgGroup)
                  • Else - Actions
        • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of players in CS_Group_System) Greater than (>) 0
        • Then - Actions
          • Player Group - Pick every player in CS_Group_System and do (Actions)
            • Loop - Actions
              • Set CS_Player = (Picked player)
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (CS_Player is in CS_HideGroup) Equal to (==) False
                  • Then - Actions
                    • Set CS_Integer = (Player number of CS_Player)
                    • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                    • Cinematic - Clear the screen of text messages for CS_MsgGroup
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_ScrollInteger[CS_Integer] Greater than (>) CS_Msg_SystemTotal[CS_Integer]
                        • Then - Actions
                          • Set CS_ScrollInteger[CS_Integer] = CS_Msg_SystemTotal[CS_Integer]
                        • Else - Actions
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_Conf_Descending Equal to (==) True
                        • Then - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_SystemTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (CS_Msg_SystemTotal[CS_Integer] - (16 + CS_ScrollInteger[CS_Integer])) to (CS_Msg_SystemTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_SystemPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_System[CS_Loop2] + (: + (CS_Sec_System[CS_Loop2] + (>|r + CS_Msg_System[CS_Loop2]))))))
                                    • Else - Actions
                            • Else - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (1 - CS_ScrollInteger[CS_Integer]) to (CS_Msg_SystemTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_SystemPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_System[CS_Loop2] + (: + (CS_Sec_System[CS_Loop2] + (>|r + CS_Msg_System[CS_Loop2]))))))
                                    • Else - Actions
                        • Else - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_SystemTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_SystemTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < udg_CS_Msg_SystemTotal[udg_CS_Integer] - 16 + udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_SystemPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_System[CS_Loop2] + (: + (CS_Sec_System[CS_Loop2] + (>|r + CS_Msg_System[CS_Loop2]))))))
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                            • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_SystemTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < 1 - udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_SystemPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_System[CS_Loop2] + (: + (CS_Sec_System[CS_Loop2] + (>|r + CS_Msg_System[CS_Loop2]))))))
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                    • Custom script: call DestroyForce(udg_CS_MsgGroup)
                  • Else - Actions
        • Else - Actions
      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of players in CS_Group_Team) Greater than (>) 0
        • Then - Actions
          • Player Group - Pick every player in CS_Group_Team and do (Actions)
            • Loop - Actions
              • Set CS_Player = (Picked player)
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (CS_Player is in CS_HideGroup) Equal to (==) False
                  • Then - Actions
                    • Set CS_Integer = (Player number of CS_Player)
                    • Set CS_MsgGroup = (All players matching ((Matching player) Equal to (==) CS_Player))
                    • Cinematic - Clear the screen of text messages for CS_MsgGroup
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_ScrollInteger[CS_Integer] Greater than (>) CS_Msg_TeamTotal[CS_Integer]
                        • Then - Actions
                          • Set CS_ScrollInteger[CS_Integer] = CS_Msg_TeamTotal[CS_Integer]
                        • Else - Actions
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • CS_Conf_Descending Equal to (==) True
                        • Then - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_TeamTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (CS_Msg_TeamTotal[CS_Integer] - (16 + CS_ScrollInteger[CS_Integer])) to (CS_Msg_TeamTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_Msg_TeamSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_TeamPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Team[CS_Loop2] + (: + (CS_Sec_Team[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_TeamSender[CS_Loop2]] + (: + CS_Msg_Team[CS_Loop2]))))))))
                                        • Else - Actions
                                    • Else - Actions
                            • Else - Actions
                              • Do Multiple ActionsFor each (Integer CS_Loop2) from (1 - CS_ScrollInteger[CS_Integer]) to (CS_Msg_TeamTotal[CS_Integer] - CS_ScrollInteger[CS_Integer]), do (Actions)
                                • Loop - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • CS_Loop2 Greater than (>) 0
                                    • Then - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • ((Player(CS_Msg_TeamSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                        • Then - Actions
                                          • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_TeamPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Team[CS_Loop2] + (: + (CS_Sec_Team[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_TeamSender[CS_Loop2]] + (: + CS_Msg_Team[CS_Loop2]))))))))
                                        • Else - Actions
                                    • Else - Actions
                        • Else - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • CS_Msg_TeamTotal[CS_Integer] Greater than (>) 16
                            • Then - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_TeamTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < udg_CS_Msg_TeamTotal[udg_CS_Integer] - 16 + udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_Msg_TeamSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_TeamPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Team[CS_Loop2] + (: + (CS_Sec_Team[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_TeamSender[CS_Loop2]] + (: + CS_Msg_Team[CS_Loop2]))))))))
                                      • Else - Actions
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                            • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Msg_TeamTotal[udg_CS_Integer] - udg_CS_ScrollInteger[udg_CS_Integer]
                              • Custom script: loop
                              • Custom script: exitwhen udg_CS_Loop2 < 1 - udg_CS_ScrollInteger[udg_CS_Integer]
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • CS_Loop2 Greater than (>) 0
                                  • Then - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • ((Player(CS_Msg_TeamSender[CS_Loop2])) is in CS_RejectGroup[CS_Integer]) Equal to (==) False
                                      • Then - Actions
                                        • Game - Display to CS_MsgGroup for 0.00 seconds the text: (CS_Conf_TeamPrefix + ((CS_Conf_TimeColor + <) + (CS_Min_Team[CS_Loop2] + (: + (CS_Sec_Team[CS_Loop2] + (>|r + (Player_NameString[CS_Msg_TeamSender[CS_Loop2]] + (: + CS_Msg_Team[CS_Loop2]))))))))
                                      • Else - Actions
                                  • Else - Actions
                              • Custom script: set udg_CS_Loop2 = udg_CS_Loop2 - 1
                              • Custom script: endloop
                    • Custom script: call DestroyForce(udg_CS_MsgGroup)
                  • Else - Actions
        • Else - Actions
  • Chat Time
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Set CS_Time_Elapsed = (CS_Time_Elapsed + 1)
      • Set CS_Time_Min = (String((CS_Time_Elapsed / 60)))
      • Set CS_Time_Sec = (String((CS_Time_Elapsed - ((Integer(CS_Time_Min)) x 60))))
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Length of CS_Time_Sec) Equal to (==) 1
          • Then - Actions
            • Set CS_Time_Sec = (0 + CS_Time_Sec)
          • Else - Actions
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Length of CS_Time_Min) Equal to (==) 1
          • Then - Actions
            • Set CS_Time_Min = (0 + CS_Time_Min)
          • Else - Actions
  • Chat Scroll Up
    • Events
    • Conditions
    • Actions
      • Set CS_Integer = (Player number of (Triggering player))
      • Set CS_ScrollInteger[CS_Integer] = (CS_ScrollInteger[CS_Integer] + 1)
      • Trigger - Run Chat Update <gen> (ignoring conditions)
  • Chat Scroll Down
    • Events
    • Conditions
    • Actions
      • Set CS_Integer = (Player number of (Triggering player))
      • Set CS_ScrollInteger[CS_Integer] = (CS_ScrollInteger[CS_Integer] - 1)
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • CS_ScrollInteger[CS_Integer] Less than (<) 0
          • Then - Actions
            • Set CS_ScrollInteger[CS_Integer] = 0
          • Else - Actions
      • Trigger - Run Chat Update <gen> (ignoring conditions)


Keywords:
advanced, chat, system
Contents

Chat System (Map)

Reviews
19:44, 2nd Mar 2014 Magtheridon96: I'm only putting this in the Needs Fix state so it goes back to Pending after an update. It's just too much of a disaster to be reviewed because any review I give at this point will not be helpful since the whole...
Status
Not open for further replies.

Moderator

M

Moderator

19:44, 2nd Mar 2014
Magtheridon96: I'm only putting this in the Needs Fix state so it goes back to Pending after an update. It's just too much of a disaster to be reviewed because any review I give at this point will not be helpful since the whole thing requires re-engineering. Try reducing the size of the code by postponing the logical branches you're doing. It'll help. Try splitting the thing into multiple triggers and see if you can split up functionality. That way, you might be able to see the whole system from a better perspective and that could help you reduce the whole thing. Currently, this is a leviathan of a system and it's both hard to review and terrible to have due to its size.
 
Level 17
Joined
Jul 17, 2011
Messages
1,863
nice but i think its kind of annoying to have to write /all and /team each time you want to write something. i think it would be better if the player could write /all once and from then be able to chat with everyone and if they write /team then be able to chat only with team until they write something else
 

Kazeon

Hosted Project: EC
Level 34
Joined
Oct 12, 2011
Messages
3,449
Don't use run trigger checking condition where there is no condition.
Use ignoring condition it is more efficient.
which condition do you mean? there are a lot of conditions there..

nice but i think its kind of annoying to have to write /all and /team each time you want to write something. i think it would be better if the player could write /all once and from then be able to chat with everyone and if they write /team then be able to chat only with team until they write something else
Yeah, I will make it easier next time

Commands which start with '/' won't work on battle net.
I dont know about that.. Anyway, user can change it anytime :wink:

Is there easier way to get the elapsed game time?
 

Kazeon

Hosted Project: EC
Level 34
Joined
Oct 12, 2011
Messages
3,449
updated.
now you can scroll up/down (defaultly by pressing up/down arrow) to view previous messages. you may change the scroll up/down event as you like it. a lot of improvements and fixed bugs on general group. this is a big update, I'm affraid there are a lot of new bugs, just report it if you find one thnks.. :)
 

Kazeon

Hosted Project: EC
Level 34
Joined
Oct 12, 2011
Messages
3,449
let me get this straight, I don't mean that the original one is bad, I see some people tried to create AI chat in their game but it looks weird because the AI chat is different from the player's. this system will make them similiar from each other. also I want to add an aditional touch where player can gives color to their chats. plus there is time tag on each sent message. actually I was fully inspired from HoN, if you have played it before you will know what I mean..
 
Level 30
Joined
Nov 29, 2012
Messages
6,637
This is really a much more improvement to the other approved Chat System by Belgarath with a time shown in the chat as well. The triggers looks neat and great judging from what I know but there might be still some leaks and such for the others.

Certainly useful and +rep.
 

Kazeon

Hosted Project: EC
Level 34
Joined
Oct 12, 2011
Messages
3,449
hey, thnks a lot for the yummy rep :D

are you sure there are leaks inside the triggers?
may I ask you something?

which is faster?
Set CS_Player = Player(CS_Integer)
Do action 1 with CS_Player
...
Do action 5 with CS_Player

or just

Do action 1 with Player(CS_Integer)
...
Do action 5 with Player(CS_Integer)

will that storing Player(CS_Integer) into variable affects the efficiency?
 

Kazeon

Hosted Project: EC
Level 34
Joined
Oct 12, 2011
Messages
3,449
every map :) the only weird thing is user should configure gameplay constant using notepad then...

personaly, what I want from the first time is colorized chats. using normal chat, whatever you do, you can't colorize them. about "/", you can change it to anything you want, I don't know about bnet because I never played there. and debug message, sometimes system maker clear the screen first then shows yellow text at bottom and it's weird if there is currently an important message at the screen and then it's cleared, if you use "system" chat feature, you don't need to clear the screen. then AI chats, isn't that looks bad if the player's chat shows at the left-bottom of the screen but the AI's chat displayed differently? isn't that prettier if we and AI has a same chat? you can send personal chat easier than using normal chat in multiplayer game, you can enter any game commands without displayed at the screen or you want to display it, it's optional, so... why no use? :)
 
It's a useful system.

Tell you what: Make it smaller. Try that, and whether you fail or succeed at that, I'll approve it.

We need to stress on quality and I can't have a system that's not top-notch in all ways be approved, which is why I'm asking you to try shrinking it.
I mean, the last time I reviewed something this big, I spent the whole day staring at my monitor finding inadequacies and writing them down. About 5 hours of work. And what pissed me off was the fact that the system was deleted in the end and the user didn't even try listening to me.
 
Status
Not open for further replies.
Top