Sourcemod Plugins: Difference between revisions

From Empires Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 131: Line 131:


== Chat Triggers ==
== Chat Triggers ==
Plugin link: https://forums.alliedmods.net/showthread.php?p=585758
Plugin link: https://forums.alliedmods.net/showthread.php?p=585758 <br />
Adds commandlist.txt functionality (From Mani) to SourceMod. You can easily define chat commands (e.g. !unstuck), to be linked to console commands.
Adds commandlist.txt functionality (From Mani) to SourceMod.  
You can easily define chat commands (e.g. !unstuck), to be linked to console commands.

Revision as of 03:19, 14 March 2017

~Fixme
Everything, making a crude start page right now.

Home > Sourcemod Plugins

Compiling from Source

Thanks to people smarter than me, compiling from source is pretty easy. Take your source-file or source-text and pop it in this: http://www.sourcemod.net/compiler.php Download your compiled plugin, and put it in your sourcemod/plugins folder

End of Round AllTalk

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

#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();
  }
}

Chat Triggers

Plugin link: https://forums.alliedmods.net/showthread.php?p=585758
Adds commandlist.txt functionality (From Mani) to SourceMod. You can easily define chat commands (e.g. !unstuck), to be linked to console commands.