AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Snippets and Tutorials (https://forums.alliedmods.net/forumdisplay.php?f=112)
-   -   [L4D] Event Debugger (https://forums.alliedmods.net/showthread.php?t=85330)

-pk- 02-08-2009 17:37

[L4D] Event Debugger
 
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()
{
}


Neon123 03-27-2017 12:57

Re: [L4D] Event Debugger
 
how to hook safe room open and closed (first and final door) ???

cravenge 03-28-2017 07:13

Re: [L4D] Event Debugger
 
Quote:

Originally Posted by Neon123 (Post 2507169)
[...]

There are two options:
Either through door related events:

Or player_use event:

axelnieves2012 10-27-2018 17:32

Re: [L4D] Event Debugger
 
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 10-27-2018 17:35

Re: [L4D] Event Debugger
 
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...

Bacardi 10-29-2018 09:29

Re: [L4D] Event Debugger
 
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.


All times are GMT -4. The time now is 14:15.

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