Raised This Month: $12 Target: $400
 3% 

[L4D] Event Debugger


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
-pk-
Member
Join Date: Feb 2009
Old 02-08-2009 , 17:37   [L4D] Event Debugger
Reply With Quote #1

This is a small plugin I wrote to help debug events along side your own plugin projects. With this you no longer have to constantly add/remove events, and make a mess of your code to find out if the code is bad or just not triggering.

Events are Logged to help find silent events, and sent to Chat to find events that can display information to players.

l4d_events_spam 0|1 //log events that can spam (Checkpoints, etc)
l4d_events_player 0|1 //log player events (Spawns, Deaths, etc)
Includes a private working space for additional event debugging.


Code:
/*
l4d_events.sp
Description:
Prints l4devents to chat and server console for debugging.
*/
 
#include <sourcemod>
#define Version "1.0.0"
#define BasicEvents 1
#define Custom 1  //set to 0 to disable custom events
new Handle:ESpam;
new Handle:PSpam;
 
 
public Plugin:myinfo = 
{
    name = "L4D Event Debugger",
    author = "-pk-",
    description = "Displays triggered events.",
    version = Version,
};
 
public OnPluginStart()
{
    decl String:ModName[50];
    GetGameFolderName(ModName, sizeof(ModName));
 
    if(!StrEqual(ModName, "left4dead", false))
    {
        SetFailState("Use this in Left 4 Dead only.");
    }
 
    ESpam = CreateConVar("l4d_events_spam", "0", "Log events that have a tendency to spam (Checkpoints, etc).  0=Disable, 1=Enable");
    PSpam = CreateConVar("l4d_events_player", "0", "Log player events (Spawns, etc).  0=Disable, 1=Enable");
 
    AutoExecConfig(true, "l4d_events");
 
 
    //Events we need to hook
    #if BasicEvents
    HookEvent("player_left_start_area", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("success_checkpoint_button_used", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("rescue_door_open", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("mission_lost", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("map_transition", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_radio_start", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_radio_damaged", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_start", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_rush", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_escape_start", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_vehicle_ready", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_vehicle_leaving", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("finale_win", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("final_reportscreen", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("round_end_message", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("round_start_pre_entity", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("round_start_post_nav", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("round_freeze_end", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("round_start", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("round_end", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("game_newmap", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("game_start", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("game_end", GameEvents, EventHookMode_PostNoCopy);
    HookEvent("game_message", GameEvents, EventHookMode_PostNoCopy);
 
    //EventSpam
    HookEvent("player_entered_start_area", EventSpam, EventHookMode_PostNoCopy);
    HookEvent("player_entered_checkpoint", EventSpam, EventHookMode_PostNoCopy);
    HookEvent("player_left_checkpoint", EventSpam, EventHookMode_PostNoCopy);
 
    //PlayerSpam
    HookEvent("player_first_spawn", PlayerSpam, EventHookMode_PostNoCopy);
    HookEvent("player_death", PlayerSpam, EventHookMode_PostNoCopy);
    #endif
 
 
    // Place your own events below for a private working space.
    #if Custom
 
    //HookEvent("", GameEvents, EventHookMode_PostNoCopy);
 
    #endif
}
 
 
 
 
public GameEvents(Handle:event, const String:name[], bool:dontBroadcast)
{
    LogMessage("EVENT TRIGGERED ::::: \"%s\" ", name); // Add events to the sourcemod logs, helps find silent events
    PrintToChatAll("event \"%s\" ", name);   // Helps find events that could be used to display information to players
}
 
public EventSpam(Handle:event, const String:name[], bool:dontBroadcast)
{
  if (GetConVarInt(ESpam) >= 1)
    {
        LogMessage("EVENT TRIGGERED ::::: \"%s\" ", name);
        PrintToChatAll("event \"%s\" ", name);
    }
}
 
public PlayerSpam(Handle:event, const String:name[], bool:dontBroadcast)
{
    if (GetConVarInt(PSpam) >= 1)
    {
        LogMessage("EVENT TRIGGERED ::::: \"%s\" ", name);
        PrintToChatAll("event \"%s\" ", name);
    }
}
 
 
 
 
public OnMapStart()
{
}
public OnMapEnd()
{
}

Last edited by -pk-; 02-11-2009 at 20:48. Reason: fixed
-pk- is offline
Neon123
Senior Member
Join Date: Jan 2016
Old 03-27-2017 , 12:57   Re: [L4D] Event Debugger
Reply With Quote #2

how to hook safe room open and closed (first and final door) ???
Neon123 is offline
cravenge
Veteran Member
Join Date: Nov 2015
Location: Chocolate Factory
Old 03-28-2017 , 07:13   Re: [L4D] Event Debugger
Reply With Quote #3

Quote:
Originally Posted by Neon123 View Post
[...]
There are two options:
Either through door related events:

Or player_use event:

Last edited by cravenge; 03-28-2017 at 07:20.
cravenge is offline
axelnieves2012
Senior Member
Join Date: Oct 2014
Location: Argentina
Old 10-27-2018 , 17:32   Re: [L4D] Event Debugger
Reply With Quote #4

Hi i Need to hook mission_lost and finale_start
BUT i need the plugin tells me the reason of mission fail. how to?

possible reassons:
all players dead,
last standing man incapacitated,
just one player alive in The Sacrifice finale,

I'm trying to block "mission_lost" when there is less than 2 players alive but there is 1 player alive (sacrifice finale). So i need to hook that error message but i dont know how.
I need mission_lost again if last standing man dies.

thanks
axelnieves2012 is offline
axelnieves2012
Senior Member
Join Date: Oct 2014
Location: Argentina
Old 10-27-2018 , 17:35   Re: [L4D] Event Debugger
Reply With Quote #5

I can see your plugins only logs events names... but it doesnt log all information about these events....
Example: if a player dies, you will never know how killed him, inflictor, weaponname, friendlyfire, etc...
axelnieves2012 is offline
Bacardi
Veteran Member
Join Date: Jan 2010
Location: mom's basement
Old 10-29-2018 , 09:29   Re: [L4D] Event Debugger
Reply With Quote #6

you could try in server:
sm_cvar net_showevents 2

There could be situations where event not work when should.
For example in Counter Strike (source), player dying c4 explosion not trigger player_death events.
Bacardi is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:26.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode