Sourcemod Plugins: Difference between revisions

From Empires Wiki
Jump to navigation Jump to search
m (EventTimeleftHostname is 100% my plugin -.-)
 
(40 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Fixme|Everything, making a crude start page right now.}}  
{{ServerResources}}
{{Sitenav|Server Sourcemod Plugins}}
=Sourcemod installation=
 
Check the following page for guide how to install Metamod and Sourcemod: [[Sourcemod]]
For instructions on how to install, see the [[Sourcemod]] page.
=Empires Specific Plugins=
 
Empires has a few specific plugins coded by members of its community, you can find them on [https://git.empiresmod.com/sourcemod Empires' Gitlab].
== Compiling from Source ==
==Draftpick==
Thanks to people smarter than me, compiling from source is pretty easy. <br />
[[Draftpick]] is a [[Sourcemod]] plugin by [[Mikleo]], it is responsible for automatically balancing the players between teams using statistics gathered by [[Empstats]]. It includes four types of Draft.
Take your source-file or source-text and pop it in this: http://www.sourcemod.net/compiler.php <br />
==Empfun==
Download your compiled plugin, and put it in your sourcemod/plugins folder. <br />
[[Empfun]] is a [[Sourcemod]] plugin by [[Mikleo]], it adds a way to manipulate entities within the game and create custom scenarios.
 
==Empstats==
Or you can use spcomp.exe inside your sourcemod folders (\addons\sourcemod\scripting\spcomp.exe) (for windows) <br />
[[Empstats]] is a [[Sourcemod]] plugin by [[Mikleo]], it tracks various statistics.
Just drag and drop your source-file onto the .exe. <br />
==Emputils==
 
[[Emputils]] is a [[Sourcemod]] plugin by [[Mikleo]], it contains various utilities to be used by other plugins.
== Sourcemod offsets and signatures ==
==EventTimeleftHostname==
Calculating updated sourcemod vtable offsets: https://forums.empiresmod.com/index.php?threads/calculating-updated-sourcemod-vtable-offsets.20571/ <br />
[[EventTimeleftHostname]] is a [[Sourcemod]] plugin by [[Neoony]], it allows server owners to display a countdown in their server's title.
Updated game.empires.txt for sdkhooks (16.3.2017 emp 2.11.3): https://forums.empiresmod.com/index.php?attachments/game-empires-txt.1358/ <br />
==Lawlietstats==
 
[[Lawlietstats]] is a [[Sourcemod]] plugin by [[Lawliet]], it collects various informations.
If you have issues with invalid signatures. <br />
==Lobby==
Example: <br />
[[Lobby]] is a [[Sourcemod]] plugin by [[Neoony]], it controls the Lobby Server.
<pre>L 03/18/2017 - 00:02:51: [SDKTOOLS] Invalid detour address passed - Disabling detour to prevent crashes
==NoCommExtendVote==
L 03/18/2017 - 00:02:51: [SM] Exception reported: Entity Outputs are disabled - See error logs for details</pre>
'''No Commander Extend Vote''' or [[NCEV]] for short is a [[Sourcemod]] plugin by [[Neoony]], it automatically detects commanders and only allows the game to start if both teams have a commander. <br />
 
==PugPlugin==
Replace the linux signatures in sdkhooks and sdktools files with the mac signatures. <br />
==ResearchInfo==
This is rather temporary fix and needs testing <br />
[[ResearchInfo]] is a [[Sourcemod]] plugin by [[Neoony]], gives a chat command to show what your team has researched in console. Unstable and unfinished. WIP
Example: <br />
==sameIPBlock==
<pre>/* CBaseEntityOutput::FireOutput */
[[sameIPBlock]] is a [[Sourcemod]] plugin by [[Neoony]], only allows players to join from unique IP address.
"#default"
==SourcemodOffsets==
{
[[SourcemodOffsets]] is a [[Sourcemod]] plugin by [[Neoony]], it automatically updates the sourcemod offsets required for Empires when they change.
"Signatures"
==SquadControl==
{
[[Squadcontrol]] is a [[Sourcemod]] plugin by [[Mikleo]], it adds various utilities for Empires.
"FireOutput"
==Surrender==
{
[[Surrender]] is a [[SourceMod]] plugin by [[Neoony]], it allows players to trigger a vote to surrender which if successful destroys their [[Command Vehicle]].<br />
"library" "server"
==Updater==
"windows" "\x55\x8B\xEC\x81\x2A\x2A\x2A\x2A\x2A\xA1\x2A\x2A\x2A\x2A\x33\xC5\x89\x45\x2A\x8B\x45\x2A\x53\x56\x8B\x2A\x2A\x57\x8B\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\x89\x2A\x2A\x2A\x2A\x2A\xC7"
[[Updater]] is a [[Sourcemod]] plugin by <> and updated for Empires by [[Neoony]], it allows servers to automatically update their plugins.
"linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
==Ungrief==
"mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
[[Ungrief]] is a [[Sourcemod]] plugin by [[Theowningone]] and updated by [[Neoony]], it allows admins to teleport the [[Command Vehicle]].
}
==Votetime==
}
[[Votetime]] is a [[Sourcemod]] plugin by [[Mikleo]], it adds commands to control the commander vote timer.
}</pre>
==vprofReport==
 
[[vprofReport]] is a [[Sourcemod]] plugin by [[Neoony]], automatically start "vprof" at certain number of clients on the server and then generates report when the round ends.
=Generic Plugins=
== End of Round AllTalk ==
== End of Round AllTalk ==
Original Plugin: https://forums.alliedmods.net/showthread.php?p=1246351
Original Plugin: https://forums.alliedmods.net/showthread.php?p=1246351
<pre>
#pragma semicolon 1
#include <sourcemod>
#define PLUGIN_VERSION "1.0.2"
new Handle:cvar_round_end_enabled = INVALID_HANDLE;
new Handle:cvar_bomb_enabled = INVALID_HANDLE;
new Handle:cvar_announce = INVALID_HANDLE;
new Handle:cvar_alltalk = INVALID_HANDLE;
new alltalk_being_changed_by_us = false;
new okay_to_disable_alltalk = false;
public Plugin:myinfo = {
  name = "Round-End Alltalk",
  author = "Mister_Magotchi",
  description = "Turns sv_alltalk on at round end or when all Terrorists are dead (in CS:S).",
  version = PLUGIN_VERSION,
  url = "https://forums.alliedmods.net/showthread.php?t=133016"
};
public OnPluginStart() {
  CreateConVar(
    "sm_round_end_alltalk_version",
    PLUGIN_VERSION,
    "Round-End Alltalk Version",
    FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD
  );
  cvar_round_end_enabled = CreateConVar(
    "sm_round_end_alltalk_round",
    "1",
    "Toggles whether alltalk is on at round end",
    FCVAR_PLUGIN
  );
  cvar_bomb_enabled = CreateConVar(
    "sm_round_end_alltalk_bomb",
    "0",
    "Toggles whether alltalk is on when all Terrorists are dead",
    FCVAR_PLUGIN
  );
  cvar_announce = CreateConVar(
    "sm_round_end_alltalk_announce",
    "1",
    "Toggles whether changes to sv_alltalk are announced in chat",
    FCVAR_PLUGIN
  );
  cvar_alltalk = FindConVar("sv_alltalk");
  SetConVarFlags(cvar_alltalk, GetConVarFlags(cvar_alltalk)&~FCVAR_NOTIFY);
  HookConVarChange(cvar_alltalk, AlltalkChanged);
  HookEvent("round_start", OnRoundStart);
  HookEvent("player_death", OnPlayerDeath);
  HookEvent("game_end", OnRoundEnd);
  AutoExecConfig(true, "round-end-alltalk");
}
TurnAlltalkOn () {
//  PrintToChatAll("Alltalk: DEBUG1");
  if (!GetConVarBool(cvar_alltalk)) {
    okay_to_disable_alltalk = true;
    alltalk_being_changed_by_us = true;
    SetConVarBool(cvar_alltalk, true);
  }
}
public AlltalkChanged (Handle:convar, const String:oldValue[], const String:newValue[]) {
//  PrintToChatAll("Alltalk: DEBUG2");
  new bool:announce = GetConVarBool(cvar_announce);
  if (StringToInt(newValue)) {
    if (announce) {
      PrintToChatAll("Alltalk is now on.");
    }
    if (alltalk_being_changed_by_us) {
      alltalk_being_changed_by_us = false;
    }
    else {
      okay_to_disable_alltalk = false;
    }
  }
  else {
    if (announce) {
      PrintToChatAll("Alltalk is now off.");
    }
  }
}
public OnRoundStart (Handle:event, const String:name[], bool:dontBroadcast) {
//  PrintToChatAll("Alltalk: DEBUG3");
  if (okay_to_disable_alltalk) {
    SetConVarBool(cvar_alltalk, false);
  }
}
public OnPlayerDeath (Handle:event, const String:name[], bool:dontBroadcast) {
//  PrintToChatAll("Alltalk: DEBUG4");
  if (GetConVarBool(cvar_bomb_enabled)) {
    new client;
    new bool:terrorists_dead = true;
    for (client = MaxClients; 0 < client; client--) {
      if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 2) {
        terrorists_dead = false;
        break;
      }
    }
    if (terrorists_dead) {
      TurnAlltalkOn();
    }
  }
}
public OnRoundEnd (Handle:event, const String:name[], bool:dontBroadcast) {
//  PrintToChatAll("Alltalk: DEBUG5");
  if (GetConVarBool(cvar_round_end_enabled)) {
    TurnAlltalkOn();
  }
}
</pre>
== Chat Triggers ==
== Chat Triggers ==
Plugin link: https://forums.alliedmods.net/showthread.php?p=585758 <br />
Plugin link: https://forums.alliedmods.net/showthread.php?p=585758 <br />
Adds commandlist.txt functionality (From Mani) to SourceMod. <br />
You can easily define chat commands (e.g. !unstuck), to be linked to console commands. <br />
triggers_rcon to define the flags of admins which will be able to use the R flag commands. <br />
And if you for example want !addtime #### with custom value after it you have to use quotes. <br />
Examples:
<pre>!us C emp_unstuck
!unstuck C emp_unstuck
!recwalls F emp_eng_recycle_walls
!fixsound C snd_restart
!enablespec R emp_allowspectators 1
!disablespec R emp_allowspectators 0
"!addtime R emp_sv_vote_commander_time"
</pre>


== Advertisements 2.0 ==
== Advertisements 2.0 ==
Plugin link: https://forums.alliedmods.net/showthread.php?t=155705 <br />
Plugin link: https://forums.alliedmods.net/showthread.php?t=155705 <br />
Simple advertisements plugin. It supports center, chat, hint, menu and top messages.
Simple advertisements plugin. It supports center, chat, hint, menu and top messages.
== SourceBans++ ==
== SourceBans++ ==
(Not tested yet) <br />
Plugin link: https://sbpp.github.io/ <br />
Plugin link: https://sbpp.github.io/ <br />
Unofficial more updated version of SourceBans. <br />
Unofficial more updated version of SourceBans. <br />
-SourceBans++ is a majorly improved version of SourceBans 1.4.11 which was developed by GameConnect. <br />
-SourceBans++ is a majorly improved version of SourceBans 1.4.11 which was developed by GameConnect. <br />
Those major improvements include a new design, more stable web application, login via steam account and much more community made customizations. <br />
Those major improvements include a new design, more stable web application, login via steam account and much more community made customizations. <br />
== SourceBot ==
== SourceBot ==
''Original Plugin link:'' https://forums.alliedmods.net/showthread.php?p=883997 <br />
''Original Plugin link:'' https://forums.alliedmods.net/showthread.php?p=883997 <br />
SourceBot is a bot that you install into your server. You can set it to give helpful server info, or give it a personality, from the things it says. <br />
It floats around the server greeting the players. It has feelings about each player it encounters, and remembers what it feels about each one. <br />
'''If you have problems with getting this plugin to run update your signature as stated in "offsets and signatures" category above.''' <br />
(Leave empty model path in config, for the bot to not float around, example: "model"    "") <br />


== TeamSwitch ==
== TeamSwitch ==
Line 214: Line 74:
Here is cyberkillers version: https://github.com/CyberKiller/Ultimate-Mapchooser <br />
Here is cyberkillers version: https://github.com/CyberKiller/Ultimate-Mapchooser <br />
But it might be a little outdated...<br />
But it might be a little outdated...<br />
== Ungrief ==
Plugin link: https://forums.alliedmods.net/showthread.php?t=89361 <br />
Teleports the specified command vehicle to where you are looking. <br />


== Execute Configs ==
== Execute Configs ==
Line 223: Line 79:
This plugin executes configs when there are either a certain amount of clients on, a certain event occurs, a certain round starts or when there are a certain amount of minutes left on the map. <br />
This plugin executes configs when there are either a certain amount of clients on, a certain event occurs, a certain round starts or when there are a certain amount of minutes left on the map. <br />
You can use this to disable alltalk above x clients, or to change the map when the timelimit hits, etc. <br />
You can use this to disable alltalk above x clients, or to change the map when the timelimit hits, etc. <br />
'''More updated version (1.2.4) + added empires roundstart events:''' https://github.com/Neoony/Execute-Configs-Empiresfix <br />
'''More updated version (1.2.4) + added empires roundstart/gamestart events:''' https://git.empiresmod.com/sourcemod/executeconfigs <br />
 
[[Category:Sourcemod]]

Latest revision as of 00:00, 7 February 2024

Empires Server Resources
Dedicated Server Setup | Cvars | Optimization | Sourcemod Plugins



Sourcemod installation

Check the following page for guide how to install Metamod and Sourcemod: Sourcemod

Empires Specific Plugins

Empires has a few specific plugins coded by members of its community, you can find them on Empires' Gitlab.

Draftpick

Draftpick is a Sourcemod plugin by Mikleo, it is responsible for automatically balancing the players between teams using statistics gathered by Empstats. It includes four types of Draft.

Empfun

Empfun is a Sourcemod plugin by Mikleo, it adds a way to manipulate entities within the game and create custom scenarios.

Empstats

Empstats is a Sourcemod plugin by Mikleo, it tracks various statistics.

Emputils

Emputils is a Sourcemod plugin by Mikleo, it contains various utilities to be used by other plugins.

EventTimeleftHostname

EventTimeleftHostname is a Sourcemod plugin by Neoony, it allows server owners to display a countdown in their server's title.

Lawlietstats

Lawlietstats is a Sourcemod plugin by Lawliet, it collects various informations.

Lobby

Lobby is a Sourcemod plugin by Neoony, it controls the Lobby Server.

NoCommExtendVote

No Commander Extend Vote or NCEV for short is a Sourcemod plugin by Neoony, it automatically detects commanders and only allows the game to start if both teams have a commander.

PugPlugin

ResearchInfo

ResearchInfo is a Sourcemod plugin by Neoony, gives a chat command to show what your team has researched in console. Unstable and unfinished. WIP

sameIPBlock

sameIPBlock is a Sourcemod plugin by Neoony, only allows players to join from unique IP address.

SourcemodOffsets

SourcemodOffsets is a Sourcemod plugin by Neoony, it automatically updates the sourcemod offsets required for Empires when they change.

SquadControl

Squadcontrol is a Sourcemod plugin by Mikleo, it adds various utilities for Empires.

Surrender

Surrender is a SourceMod plugin by Neoony, it allows players to trigger a vote to surrender which if successful destroys their Command Vehicle.

Updater

Updater is a Sourcemod plugin by <> and updated for Empires by Neoony, it allows servers to automatically update their plugins.

Ungrief

Ungrief is a Sourcemod plugin by Theowningone and updated by Neoony, it allows admins to teleport the Command Vehicle.

Votetime

Votetime is a Sourcemod plugin by Mikleo, it adds commands to control the commander vote timer.

vprofReport

vprofReport is a Sourcemod plugin by Neoony, automatically start "vprof" at certain number of clients on the server and then generates report when the round ends.

Generic Plugins

End of Round AllTalk

Original Plugin: https://forums.alliedmods.net/showthread.php?p=1246351

Chat Triggers

Plugin link: https://forums.alliedmods.net/showthread.php?p=585758

Advertisements 2.0

Plugin link: https://forums.alliedmods.net/showthread.php?t=155705
Simple advertisements plugin. It supports center, chat, hint, menu and top messages.

SourceBans++

Plugin link: https://sbpp.github.io/
Unofficial more updated version of SourceBans.
-SourceBans++ is a majorly improved version of SourceBans 1.4.11 which was developed by GameConnect.
Those major improvements include a new design, more stable web application, login via steam account and much more community made customizations.

SourceBot

Original Plugin link: https://forums.alliedmods.net/showthread.php?p=883997

TeamSwitch

Plugin link: https://forums.alliedmods.net/showthread.php?p=587405
This is a fully mod-independent team switching plugin, which gives an admin the ability to switch players to the opposite team either immediately,
when they die, or at the end of the round (where appropriate).
Players can also be switched to spectators.
TeamSwitch detects which mod it is being run on at startup and configures itself accordingly.

Ultimate Mapchooser 3.4.5

Plugin link: https://forums.alliedmods.net/showthread.php?t=134190
Ultimate Mapchooser allows for increased control over map selection. This includes:

  • Random selection of the next map.
  • Which maps are added to votes
  • Which maps are available for nominations

You can control how the randomization works by dividing your map rotation into groups, and controlling the weights of each group or each individual map,
specify a minimum or maximum number of players allowed on the server for the map to be available, specify how many maps from a group are allowed in a vote, etc.
EDIT: It seems the original version isnt working even with Creepers event fix for end of map votes.
Here is cyberkillers version: https://github.com/CyberKiller/Ultimate-Mapchooser
But it might be a little outdated...

Execute Configs

Original Plugin link: https://forums.alliedmods.net/showthread.php?t=67620
This plugin executes configs when there are either a certain amount of clients on, a certain event occurs, a certain round starts or when there are a certain amount of minutes left on the map.
You can use this to disable alltalk above x clients, or to change the map when the timelimit hits, etc.
More updated version (1.2.4) + added empires roundstart/gamestart events: https://git.empiresmod.com/sourcemod/executeconfigs