diff --git a/Classic/scripts/autoexec/zzDiscordBot.cs b/Classic/scripts/autoexec/zzDiscordBot.cs index d94c094..a8f758d 100644 --- a/Classic/scripts/autoexec/zzDiscordBot.cs +++ b/Classic/scripts/autoexec/zzDiscordBot.cs @@ -11,6 +11,7 @@ $discordBot::reconnectTimeout = 3 * 60000; $discordBot::autoStart = 1; //used on the bot to help split thigns up $discordBot::cmdSplit = "%cmd%"; +$discordBot::cmdSubSplit = "%tab%"; //These correspond with $discordBot::discordCHID $discordBot::monitorChannel = 1; $discordBot::serverFeed = 2; @@ -28,11 +29,12 @@ package discordPackage function messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8, %a9, %a10, %a11, %a12, %a13) { parent::messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8, %a9, %a10, %a11, %a12, %a13); - %type = getTaggedString(%msgType); + %type = getTaggedString(%msgType); switch$(%type) { case "msgExplosionKill" or "msgSuicide" or "msgVehicleSpawnKill" or "msgVehicleCrash" or "msgVehicleKill" or "msgTurretSelfKill" or "msgTurretSelfKill" or "msgCTurretKill" or "msgTurretKill" or - "msgSelfKill" or "msgOOBKill" or "msgCampKill" or "msgTeamKill" or "msgLavaKill" or "msgLightningKill" or "MsgRogueMineKill" or "MsgHeadshotKill" or "MsgRearshotKill" or "MsgLegitKill": + "msgSelfKill" or "msgOOBKill" or "msgCampKill" or "msgTeamKill" or "msgLavaKill" or "msgLightningKill" or "MsgRogueMineKill" or "MsgHeadshotKill" or "MsgRearshotKill" or "MsgLegitKill" or + "MsgClientJoin" or "MsgClientDrop": %message = getTaggedString(%msgString); %message = strreplace(%message,"%1",getTaggedString(%a1)); %message = strreplace(%message,"%2",getTaggedString(%a2)); @@ -44,73 +46,12 @@ function messageAll(%msgType, %msgString, %a1, %a2, %a3, %a4, %a5, %a6, %a7, %a8 %message = strreplace(%message,"%8",getTaggedString(%a8)); %message = stripChars(%message, "\cp\co\c0\c6\c7\c8\c9"); sendToDiscordEmote(%message, $discordBot::serverFeed); - } + } + if($missionName !$= $discordBot::cm && ClientGroup.getCount() > 2){ + sendToDiscordEmote("The mission changed to" SPC $missionName, $discordBot::serverFeed); + $discordBot::cm = $missionName; + } } - -function discordBotProcess(%type, %var1, %var2, %var3, %var4, %var5, %var6) -{ - //echo(%type SPC %var1 SPC %var2 SPC %var3 SPC %var4 SPC %var5 SPC %var6); - - switch$ (%type) - { - case "flagCap": - %game = %var1; - %player = %var2; - %flag = %player.holdingFlag; - %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); - %msg = getTaggedString(%player.client.name) SPC "captured the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; - case "touchEnemyFlag": - %game = %var1; - %player = %var2; - %flag = %var3; - if(!%player.flagTossWait) - { - %grabspeed = mFloor(VectorLen(setWord(%player.getVelocity(), 2, 0)) * 3.6); - if(%flag.isHome) - %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Speed:" SPC %grabspeed @ "Kph)"; - else if(!%flag.isHome) - %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag in the field. (Speed:" SPC %grabspeed @ "Kph)"; - } - case "droppedFlag": - %game = %var1; - %player = %var2; - %flag = %player.holdingFlag; - %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); - %msg = getTaggedString(%player.client.name) SPC "dropped the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; - case "flagReturn": - %game = %var1; - %flag = %var2; - %player = %var3; - if(%player !$= "") - %msg = getTaggedString(%player.client.name) SPC "returned the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag."; - else - %msg = "The" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag was returned to base."; - case "lakTouchFlag": - %game = %var1; - %player = %var2; - %flag = %var3; - if(!%player.client.flagDeny && %player.getState() !$= "Dead" && PlayingPlayers() > 1) - %msg = getTaggedString(%player.client.name) SPC "has taken the flag."; - case "lakMApoints": - %sourceObject = %var1; - %points = %var2; - if(%points == 1) - %s = "s"; - %hitType = %var3; - %weapon = %var4; - %distance = %var5; - %vel = %var6; - if(%points) - %msg = getTaggedString(%sourceObject.client.name) SPC "receives" SPC %points @ %s SPC "points! [" @ %hitType SPC %weapon @ "] [Distance:" SPC %distance @ "] [Speed:" SPC %vel @ "]"; - } - - if(%msg !$= "") - { - %msg = stripChars(%msg, "\cp\co\c0\c6\c7\c8\c9"); - sendToDiscordEmote(%msg, $discordBot::serverFeed); - } -} - function CTFGame::flagCap(%game, %player) { if(discord.lastState $= "Connected") @@ -198,7 +139,70 @@ function LogMessage(%client, %msg, %cat){ if(!isActivePackage(discordPackage)) activatePackage(discordPackage); - + +function discordBotProcess(%type, %var1, %var2, %var3, %var4, %var5, %var6) +{ + //echo(%type SPC %var1 SPC %var2 SPC %var3 SPC %var4 SPC %var5 SPC %var6); + + switch$ (%type) + { + case "flagCap": + %game = %var1; + %player = %var2; + %flag = %player.holdingFlag; + %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); + %msg = getTaggedString(%player.client.name) SPC "captured the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; + case "touchEnemyFlag": + %game = %var1; + %player = %var2; + %flag = %var3; + if(!%player.flagTossWait) + { + %grabspeed = mFloor(VectorLen(setWord(%player.getVelocity(), 2, 0)) * 3.6); + if(%flag.isHome) + %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Speed:" SPC %grabspeed @ "Kph)"; + else if(!%flag.isHome) + %msg = getTaggedString(%player.client.name) SPC "took the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag in the field. (Speed:" SPC %grabspeed @ "Kph)"; + } + case "droppedFlag": + %game = %var1; + %player = %var2; + %flag = %player.holdingFlag; + %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); + %msg = getTaggedString(%player.client.name) SPC "dropped the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag. (Held:" SPC %held @ ")"; + case "flagReturn": + %game = %var1; + %flag = %var2; + %player = %var3; + if(%player !$= "") + %msg = getTaggedString(%player.client.name) SPC "returned the" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag."; + else + %msg = "The" SPC getTaggedString(%game.getTeamName(%flag.team)) SPC "flag was returned to base."; + case "lakTouchFlag": + %game = %var1; + %player = %var2; + %flag = %var3; + if(!%player.client.flagDeny && %player.getState() !$= "Dead" && PlayingPlayers() > 1) + %msg = getTaggedString(%player.client.name) SPC "has taken the flag."; + case "lakMApoints": + %sourceObject = %var1; + %points = %var2; + if(%points == 1) + %s = "s"; + %hitType = %var3; + %weapon = %var4; + %distance = %var5; + %vel = %var6; + if(%points) + %msg = getTaggedString(%sourceObject.client.name) SPC "receives" SPC %points @ %s SPC "points! [" @ %hitType SPC %weapon @ "] [Distance:" SPC %distance @ "] [Speed:" SPC %vel @ "]"; + } + + if(%msg !$= "") + { + %msg = stripChars(%msg, "\cp\co\c0\c6\c7\c8\c9"); + sendToDiscordEmote(%msg, $discordBot::serverFeed); + } +} function sendToDiscord(%msg,%channel) { if(isObject(discord) && %msg !$= "") @@ -281,6 +285,7 @@ function discord::onLine(%this, %line){ case "PINGAVG": %min = 10000; %max = -10000; + %lowCount = %lowPing = 0; for(%i = 0; %i < ClientGroup.getCount(); %i++){ %cl = ClientGroup.getObject(%i); %ping = %cl.isAIControlled() ? 0 : %cl.getPing(); @@ -293,7 +298,7 @@ function discord::onLine(%this, %line){ %pc++; %pingT += %ping; } - %lowCount = %lowPing = (%lowCount == 0) ? 1 : %lowCount; + %lowCount = (%lowCount == 0) ? 1 : %lowCount; if(!%pc){ sendToDiscord("Ping AVG:" @ 0 SPC "Low Avg:" @ 0 SPC "Min:" @ 0 SPC "Max:" @ 0, $discordBot::monitorChannel); } @@ -309,10 +314,10 @@ function discord::onLine(%this, %line){ for(%i = 0; %i < ClientGroup.getCount(); %i++){ %cl = ClientGroup.getObject(%i); %ping = %cl.isAIControlled() ? 0 : %cl.getPing(); - %msg = %cl.namebase @ "-" @ %ping @ "-" @ %i; + %msg = %cl.namebase @ $discordBot::cmdSubSplit @ %ping @ $discordBot::cmdSubSplit @ %i; discord.schedule(%i*32,"send","MSGSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ %msg @ "\r\n"); } - discord.schedule((%i+1)*32,"send","PROCSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ "MessageEmbed" @ "\r\n"); + discord.schedule((%i+1)*32,"send","PROCSTACK" @ $discordBot::cmdSplit @ (%channel-1) @ $discordBot::cmdSplit @ "msgList" @ "\r\n"); } } default: