|
|
Line 1: |
Line 1: |
| {{Fixme|Everything, making a crude start page right now.}}
| | {{Sitenav|Sourcemod Plugins}} |
| {{Sitenav|Server Sourcemod 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]. |
| | |
| For instructions on how to install, see the [[Sourcemod]] page.
| |
| | |
| == GitLab page for Empires SM plugins ==
| |
| https://git.empiresmod.com/sourcemod <br />
| |
| | |
| == Compiling from Source ==
| |
| Thanks to people smarter than me, compiling from source is pretty easy. <br />
| |
| Take your source-file or source-text and pop it in this: http://www.sourcemod.net/compiler.php <br />
| |
| Download your compiled plugin, and put it in your sourcemod/plugins folder. <br />
| |
| | |
| Or you can use spcomp.exe inside your sourcemod folders (\addons\sourcemod\scripting\spcomp.exe) (for windows) <br />
| |
| Just drag and drop your source-file onto the .exe. <br />
| |
| | |
| == Sourcemod offsets and signatures ==
| |
| '''Get latest offsets ready to use here''' https://git.empiresmod.com/sourcemod/sourcemodoffsets <br />
| |
| <br />
| |
| If you have issues with invalid signatures. <br />
| |
| Example: <br />
| |
| <pre>L 03/18/2017 - 00:02:51: [SDKTOOLS] Invalid detour address passed - Disabling detour to prevent crashes
| |
| L 03/18/2017 - 00:02:51: [SM] Exception reported: Entity Outputs are disabled - See error logs for details</pre>
| |
| | |
| '''Choice 1.''' '''Just download latest ready to use offsets here:''' https://git.empiresmod.com/sourcemod/sourcemodoffsets <br />
| |
| '''Choice 2.''' Replace the linux signatures in sdkhooks and sdktools files with the mac signatures. (this is already included in the above release) <br />
| |
| This is rather temporary fix and needs testing <br />
| |
| Example: <br />
| |
| <pre>/* CBaseEntityOutput::FireOutput */
| |
| "#default"
| |
| {
| |
| "Signatures"
| |
| {
| |
| "FireOutput"
| |
| {
| |
| "library" "server"
| |
| "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"
| |
| "linux" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
| |
| "mac" "@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
| |
| }
| |
| }
| |
| }</pre>
| |
| | |
| == Dumping updated Sourcemod offsets and signatures ==
| |
| Related thread: https://forums.empiresmod.com/index.php?threads/calculating-updated-sourcemod-vtable-offsets.20571/ <br />
| |
| Tool needed: https://delftelectronics.nl/empires/tools/vtablescanner3.zip <br />
| |
| The tool requires linux. If you are running 64bit linux, you will probably need to run the following to be able to run 32bit apps: <br />
| |
| <pre>dpkg --add-architecture i386
| |
| apt-get update
| |
| apt install libc6:i386 libelf1:i386</pre>
| |
| Unpack the vtablescanner3.zip anywhere in your linux. <br />
| |
| Next you need a server.so file from your dedicated server which is located in /empires_dedicated/empires/bin <br />
| |
| Copy server.so to the Release folder in the vtablescanner folder that you extracted. (vtablescanner/Release/server.so) <br />
| |
| | |
| Now open your terminal inside the Release folder. <br />
| |
| And enter the following command:
| |
| <pre>LD_LIBRARY_PATH="./" ./vtabledump ./server.so '_ZTV10CEmpPlayer' >dump.txt</pre>
| |
| The outputted RAW offsets are now located in vtablescanner/Release/dump.txt <br />
| |
| <br />
| |
| Now if you want to output a proper file for SourceMod. <br />
| |
| Open the terminal again inside Release folder. <br />
| |
| Type: <br />
| |
| <pre>./createoffsetscript >dumpsmoffsets.txt</pre>
| |
| This output file is the game.empires.txt which you can put into your: <br />
| |
| \addons\sourcemod\gamedata\sdkhooks.games\custom\game.empires.txt <br />
| |
| \addons\sourcemod\gamedata\sdktools.games\custom\game.empires.txt <br />
| |
| <br />
| |
| '''Also check this for offsets that need adjusting after a dump: https://git.empiresmod.com/sourcemod/sourcemodoffsets/issues/1''' <br />
| |
| | |
| == Plugin-Making tips ==
| |
| Dumping:
| |
| To get a dump of entity properties specific to empires and similar things, use following commands. <br />
| |
| '''"sm_dump_teprops"''' - Dumps tempentity props to a file <br />
| |
| '''"sm_dump_netprops_xml"''' - Dumps the networkable property table as an XML file <br />
| |
| '''"sm_dump_netprops"''' - Dumps the networkable property table as a text file <br />
| |
| '''"sm_dump_classes"''' - Dumps the class list as a text file <br />
| |
| '''"sm_dump_datamaps"''' - Dumps the data map list as a text file <br />
| |
| '''"sm_dump_admcache"''' - Dumps the admin cache for debugging <br />
| |
| '''"sm_dump_handles"''' - Dumps Handle usage to a file for finding Handle leaks <br />
| |
| | |
| Just add a filename after the command and you will find the dump files in empires folder. <br />
| |
| Just using some of those commands might make your client/server hang or even crash, but it will probably still make the dump, or just retry. <br />
| |
| ------
| |
| '''Colors for messages:''' <br />
| |
| Custom colors usable by PrintToChat and similar. <br />
| |
| ''Examples:'' <br />
| |
| <pre>\x079764FF BE
| |
| \x07FF2323 NF
| |
| | |
| PrintToChatAll("\x04[PLUGIN]\x079764FF BE\x01 not ready");
| |
| PrintToChatAll("\x04[PLUGIN]\x01 Commander left\x07FF2323 NF");</pre>
| |
| | |
| '''\x07''' - ''Type of coloring/message (custom colors seem to only work with \x07 and \x08)'' <br />
| |
| '''9764FF''' - ''HTML '''RRGGBB''' color without the '''#''' (You can pick your own color for example here: https://www.w3schools.com/colors/colors_picker.asp)'' <br />
| |
| | |
| '''Neoony's color standards:''' (Updated 18.4.2017 - Added player name color<br />
| |
| <pre>\x01 for standard text
| |
| \x04 for plugin things (example: "\x04[NCEV]\x01") [green]
| |
| \x079764FF for Brenodi Empire team [eyedropped from chat text]
| |
| \x07FF2323 for Northern Faction team [eyedropped from chat text]
| |
| \x07CB4491 for Both teams [mixed color of BE and NF, somewhat pink]
| |
| \x07CCCCCC for Spectators [gray]
| |
| \x07ff6600 for player name, if you cant use team colors for that [orange]
| |
| \x073399ff for displaying time, mainly seconds [light blue]
| |
| \x07008000 for enabled, unlocked or simply positive [green]
| |
| \x07b30000 for disabled, locked or simply negative, also for warnings [red]</pre>
| |
|
| |
|
| | =Empires Specific Plugins= |
| | ==Draftpick== |
| | ==Empfun== |
| | ==Empstats== |
| | ==Emputils== |
| | ==EventTimeleftHostname== |
| | ==Lawlietstats== |
| | ==Lobby== |
| | ==NoCommExtendVote== |
| | ==PugPlugin== |
| | ==ResearchInfo== |
| | ==sameIPBlock== |
| | ==SourcemodOffsets== |
| | ==SquadControl== |
| | ==Surrender== |
| | ==Updated== |
| | ==Ungrief== |
| | ==Votetime== |
| | ==vprofReport== |
| | =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>
| |
|
| |
| EDIT: Reported some commands not working with quotes, probably only works for R flags. Only use it if you need it.
| |
|
| |
|
| == 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 283: |
Line 56: |
| 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 293: |
Line 62: |
| 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/gamestart events:''' https://github.com/Neoony/Execute-Configs-Empiresfix/releases <br /> | | '''More updated version (1.2.4) + added empires roundstart/gamestart events:''' https://github.com/Neoony/Execute-Configs-Empiresfix/releases <br /> |
|
| |
| == No Comm Extend Vote ==
| |
| ''Plugin link:'' https://forums.empiresmod.com/index.php?threads/sm-plugin-release-nocommextendvote.20887<br />
| |
| Extend commander vote when nobody opted in and someone voted for him and much more. <br />
| |
| Features: <br />
| |
| - Extending vote time if no comms. <br />
| |
| - You can set minimum players needed in a team for the plugin to work. <br />
| |
| - Regular info message about comms and votes. <br />
| |
| - Customize almost everything. <br />
| |
| - Skipping to another map if CV stays empty after round starts, set your custom time. (CV with no comm will die) <br />
| |
| - Locking spectators and enabling at custom time after round starts. <br />
| |
| - Ability to limit how many times can the vote be extended. <br />
| |
| - Config file. <br />
| |
| - And much more! <br />
| |
|
| |
| == Surrender ==
| |
| ''Plugin link:'' https://forums.empiresmod.com/index.php?threads/sm-plugin-release-surrender.21056/<br />
| |
| Simply a plugin for surrendering. <br />
| |
|
| |
| == Updater ==
| |
| ''Plugin link:'' https://git.empiresmod.com/sourcemod/Updater/tags<br />
| |
| Updater plugin to keep other plugins which support Updater updated. <br />
| |