initial release to log anything happening to givenamedItem
This commit is contained in:
		
							parent
							
								
									c5a201ab8a
								
							
						
					
					
						commit
						6b6753ec1b
					
				
							
								
								
									
										14
									
								
								track_give_named_item/gamedata/track_give_named_item.css.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								track_give_named_item/gamedata/track_give_named_item.css.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| "Games" | ||||
| { | ||||
|     "cstrike" | ||||
|     { | ||||
|         "Signatures" | ||||
|         { | ||||
|             "CCSPlayer::GiveNamedItem" | ||||
|             { | ||||
|                 "library"       "server" | ||||
|                 "linux"         "@_ZN9CCSPlayer13GiveNamedItemEPKci" | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										64
									
								
								track_give_named_item/scripting/track_give_named_item.sp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								track_give_named_item/scripting/track_give_named_item.sp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,64 @@ | ||||
| #pragma semicolon 1 | ||||
| #define PLUGIN_AUTHOR "jenz" | ||||
| #define PLUGIN_VERSION "1.0" | ||||
| #include <sourcemod> | ||||
| #include <sdktools> | ||||
| #include <dhooks> | ||||
| 
 | ||||
| Handle hGiveNamedItem; | ||||
| 
 | ||||
| //the trololo guy is actively checking all plugins running. he should not be aware that we got somehwere. | ||||
| 
 | ||||
| public Plugin myinfo = | ||||
| { | ||||
|     name = "it does what it does",  | ||||
|     author = PLUGIN_AUTHOR, | ||||
|     description = "yeah", | ||||
|     version = PLUGIN_VERSION, | ||||
|     url = "www.unloze.com" | ||||
| }; | ||||
| 
 | ||||
| public void OnPluginStart() | ||||
| { | ||||
|     Handle conf = LoadGameConfigFile("track_give_named_item.css"); | ||||
|     if (conf == INVALID_HANDLE) | ||||
|         SetFailState("Failed to load gamedata track_give_named_item.css"); | ||||
| 
 | ||||
|     hGiveNamedItem = DHookCreateDetour(Address_Null, CallConv_THISCALL, ReturnType_CBaseEntity, ThisPointer_CBaseEntity); | ||||
|     if (!hGiveNamedItem) | ||||
|         SetFailState("Failed to setup detour for CCSPlayer::GiveNamedItem"); | ||||
| 
 | ||||
|     if (!DHookSetFromConf(hGiveNamedItem, conf, SDKConf_Signature, "CCSPlayer::GiveNamedItem")) | ||||
|         SetFailState("Failed to load CCSPlayer::GiveNamedItem signature from gamedata"); | ||||
| 
 | ||||
|     //function CCSPlayer::GiveNamedItem has two params. | ||||
|     DHookAddParam(hGiveNamedItem, HookParamType_CharPtr); | ||||
|     DHookAddParam(hGiveNamedItem, HookParamType_Int); | ||||
| 
 | ||||
|     if (!DHookEnableDetour(hGiveNamedItem, false, track_give_named_item)) | ||||
|         SetFailState("Failed to detour CCSPlayer::GiveNamedItem"); | ||||
| 
 | ||||
|     delete conf; | ||||
| } | ||||
| 
 | ||||
| public MRESReturn track_give_named_item(int pThis, Handle hReturn, Handle hParams) | ||||
| { | ||||
|     char pszName[512]; | ||||
|     DHookGetParamString(hParams, 1, pszName, sizeof(pszName)); | ||||
| 
 | ||||
|     int iSubType = DHookGetParam(hParams, 2); | ||||
| 
 | ||||
|     LogToFile("addons/sourcemod/logs/GiveNamedItemDebug.txt", "pszName: %s iSubType: %i", pszName, iSubType); | ||||
|     if (IsValidClient(pThis)) | ||||
|     { | ||||
|         LogToFile("addons/sourcemod/logs/GiveNamedItemDebug.txt", "Client: %L\n\n", pThis); | ||||
|     } | ||||
|     return MRES_Ignored; | ||||
| } | ||||
| 
 | ||||
| stock bool IsValidClient(int client) | ||||
| { | ||||
|     if (client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client)) | ||||
|         return true; | ||||
|     return false; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user