gamedata/sdktools.games/engine.ep2.txt
author Matt Woodrow <pred@alliedmods.net>
Mon Feb 23 10:09:51 2009 +1300 (2009-02-23)
changeset 2599 e639923af7dd
parent 2595 4eed13e139fd
child 2690 e3906d051a3b
permissions -rw-r--r--
Fixed linux offset for SetClientInfo (bug 3652, r=Fyren)
dvander@2524
     1
"Games"
dvander@2524
     2
{
dvander@2524
     3
	/* General Temp Entities */
dvander@2524
     4
	"#default"
dvander@2524
     5
	{
dvander@2524
     6
		"#supported"
dvander@2524
     7
		{
dvander@2524
     8
			"game"		"dod"
dvander@2524
     9
			"game"		"tf"
dvander@2524
    10
			"game"		"ageofchivalry"
dawgclan@2526
    11
			"game"		"ZPS"
dvander@2524
    12
		}
dvander@2524
    13
dvander@2524
    14
		"Offsets"
dvander@2524
    15
		{
dvander@2524
    16
			/* Offset into CBaseTempEntity constructor */
dvander@2524
    17
			"s_pTempEntities"
dvander@2524
    18
			{
dvander@2524
    19
				"windows"	"17"
dvander@2524
    20
			}
dvander@2524
    21
			"GetTEName"
dvander@2524
    22
			{
dvander@2524
    23
				"windows"	"4"
dvander@2524
    24
				"linux"		"4"
dvander@2524
    25
			}
dvander@2524
    26
			"GetTENext"
dvander@2524
    27
			{
dvander@2524
    28
				"windows"	"8"
dvander@2524
    29
				"linux"		"8"
dvander@2524
    30
			}
dvander@2524
    31
			"TE_GetServerClass"
dvander@2524
    32
			{
dvander@2524
    33
				"windows"	"0"
dvander@2524
    34
				"linux"		"0"
dvander@2524
    35
			}
dvander@2524
    36
		}
dvander@2524
    37
dvander@2524
    38
		"Signatures"
dvander@2524
    39
		{
dvander@2524
    40
			"CBaseTempEntity"
dvander@2524
    41
			{
dvander@2524
    42
				"library"	"server"
dvander@2524
    43
				"windows"	"\x8B\xC1\x8B\x4C\x24\x04\xC7\x00\x2A\x2A\x2A\x2A\x89\x48\x04\x8B\x15\x2A\x2A\x2A\x2A\x89\x50\x08\xA3\x2A\x2A\x2A\x2A\xC2\x04\x00"
dvander@2524
    44
			}
dvander@2524
    45
			"s_pTempEntities"
dvander@2524
    46
			{
dvander@2524
    47
				"library"	"server"
dvander@2524
    48
				"linux"		"@_ZN15CBaseTempEntity15s_pTempEntitiesE"
dvander@2524
    49
			}
dvander@2524
    50
		}
dvander@2524
    51
	}
dvander@2524
    52
	
dvander@2524
    53
	/* Create Entity Signatures */
dvander@2524
    54
	"#default"
dvander@2524
    55
	{
dvander@2524
    56
		"#supported"
dvander@2524
    57
		{
dvander@2524
    58
			"game"		"dod"
dvander@2524
    59
			"game"		"tf"
dvander@2524
    60
			"game"		"ageofchivalry"
dawgclan@2526
    61
			"game"		"ZPS"
dvander@2524
    62
		}
dvander@2524
    63
dvander@2524
    64
		"Signatures"
dvander@2524
    65
		{
dvander@2524
    66
			"DispatchSpawn"
dvander@2524
    67
			{
dvander@2524
    68
				"library"	"server"
dvander@2524
    69
				"linux"		"@_Z13DispatchSpawnP11CBaseEntity"
dvander@2524
    70
				"windows"	"\x53\x55\x56\x8B\x74\x24\x10\x85\xF6\x57\x0F\x84\x2A\x2A\x2A\x2A\x8B\x1D\x2A\x2A\x2A\x2A\x8B\x03\x8B\x50\x64\x8B\xCB"
dvander@2524
    71
			}
dvander@2524
    72
			"CreateEntityByName"
dvander@2524
    73
			{
dvander@2524
    74
				"library"	"server"
dvander@2524
    75
				"linux"		"@_Z18CreateEntityByNamePKci"
dvander@2524
    76
				"windows"	"\x56\x8B\x74\x24\x0C\x83\xFE\xFF\x57\x8B\x7C\x24\x0C\x74\x27\x8B\x0D\x2A\x2A\x2A\x2A\x8B\x01\x8B\x50\x54\x56\xFF\xD2"
dvander@2524
    77
			}
dvander@2524
    78
		}
dvander@2524
    79
	}
dvander@2524
    80
dvander@2524
    81
	/* CGlobalEntityList */
dvander@2524
    82
	"#default"
dvander@2524
    83
	{
dvander@2524
    84
		"#supported"
dvander@2524
    85
		{
dvander@2524
    86
			"game"		"dod"
dvander@2524
    87
			"game"		"tf"
dvander@2524
    88
			"game"		"ageofchivalry"
dawgclan@2526
    89
			"game"		"ZPS"
dvander@2524
    90
		}
dvander@2524
    91
		
dvander@2524
    92
		"Offsets"
dvander@2524
    93
		{
dvander@2524
    94
			/* Offset into LevelShutdown */
dvander@2524
    95
			"gEntList"
dvander@2524
    96
			{
dvander@2524
    97
				"windows"	"11"
dvander@2524
    98
			}
dvander@2524
    99
		}
dvander@2524
   100
		
dvander@2524
   101
		"Signatures"
dvander@2524
   102
		{
dvander@2524
   103
			"LevelShutdown"
dvander@2524
   104
			{
dvander@2524
   105
				"library"	"server"
dvander@2524
   106
				"windows"	"\xE8\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xE8"
dvander@2524
   107
			}
dvander@2524
   108
			"gEntList"
dvander@2524
   109
			{
dvander@2524
   110
				"library"	"server"
dvander@2524
   111
				"linux"		"@gEntList"
dvander@2524
   112
			}
dvander@2524
   113
			
dvander@2524
   114
			/* Functions in CGlobalEntityList */
dvander@2524
   115
			"FindEntityByClassname"
dvander@2524
   116
			{
dvander@2524
   117
				"library"	"server"
dvander@2524
   118
				"windows"	"\x53\x55\x56\x8B\xF1\x8B\x4C\x24\x10\x85\xC9\x57\x74\x19\x8B\x01\x8B\x50\x08\xFF\xD2\x8B\x00\x25\xFF\x0F\x00\x00\x83\xC0\x01\xC1\xE0\x04\x8B\x3C\x30\xEB\x06\x8B\xBE\x2A\x2A\x2A\x2A\x85\xFF\x74\x39\x8B\x5C\x24\x18\x8B\x2D\x2A\x2A\x2A\x2A\xEB\x03"
dvander@2524
   119
				"linux"		"@_ZN17CGlobalEntityList21FindEntityByClassnameEP11CBaseEntityPKc"
dvander@2524
   120
			}
dvander@2524
   121
		}
dvander@2524
   122
	}
dvander@2524
   123
dvander@2524
   124
	/* General GameRules */
dvander@2524
   125
	"#default"
dvander@2524
   126
	{
dvander@2524
   127
		"#supported"
dvander@2524
   128
		{
dvander@2524
   129
			"game"		"dod"
dvander@2524
   130
			"game"		"tf"
dvander@2524
   131
			"game"		"ageofchivalry"
dawgclan@2526
   132
			"game"		"ZPS"
dvander@2524
   133
		}
dvander@2524
   134
		
dvander@2524
   135
		"Offsets"
dvander@2524
   136
		{
dvander@2524
   137
			/* Offset into CreateGameRulesObject */
dvander@2524
   138
			"g_pGameRules"
dvander@2524
   139
			{
dvander@2524
   140
				"windows"	"2"
dvander@2524
   141
			}
dvander@2524
   142
		}
dvander@2524
   143
		
dvander@2524
   144
		"Signatures"
dvander@2524
   145
		{
dvander@2524
   146
			/* This signature sometimes has multiple matches, but this
dvander@2524
   147
			 * does not matter as g_pGameRules is involved in all of them.
dvander@2524
   148
			 * The same g_pGameRules offset applies to each match.
dvander@2524
   149
			 *
dvander@2524
   150
			 * Sometimes this block of bytes is at the beginning of the static
dvander@2524
   151
			 * CreateGameRulesObject function and sometimes it is in the middle
dvander@2524
   152
			 * of an entirely different function. This depends on the game.
dvander@2524
   153
			 */
dvander@2524
   154
			"CreateGameRulesObject"
dvander@2524
   155
			{
dvander@2524
   156
				"library"	"server"
dvander@2524
   157
				"windows"	"\x8B\x0D\x2A\x2A\x2A\x2A\x85\xC9\x74\x2A\x8B\x01\x8B\x50\x2A\x6A\x01\xFF\xD2"
dvander@2524
   158
			}
dvander@2524
   159
			"g_pGameRules"
dvander@2524
   160
			{
dvander@2524
   161
				"library"	"server"
dvander@2524
   162
				"linux"		"@g_pGameRules"
dvander@2524
   163
			}
dvander@2524
   164
		}
dvander@2524
   165
	}
dvander@2524
   166
dvander@2524
   167
	/* IServer interface pointer */
dvander@2524
   168
	"#default"
dvander@2524
   169
	{
ds@2535
   170
		"Keys"
ds@2535
   171
		{
ds@2535
   172
			/* Signature for the beginning of IVEngineServer::CreateFakeClient.
ds@2535
   173
			 *
ds@2535
   174
			 * The engine binary is not actually scanned in order to look for
ds@2535
   175
			 * this. SourceHook is used to used to determine the address of the
ds@2535
   176
			 * function and this signature is used to verify that it contains
ds@2535
   177
			 * the expected code. A pointer to sv (IServer interface) is used
ds@2535
   178
			 * here.
ds@2535
   179
			 */
ds@2535
   180
			"CreateFakeClient_Windows"	"\x8B\x44\x24\x2A\x50\xB9\x2A\x2A\x2A\x2A\xE8"
ds@2535
   181
		}
ds@2535
   182
		
dvander@2524
   183
		"Offsets"
dvander@2524
   184
		{
dvander@2524
   185
			/* Offset into IVEngineServer::CreateFakeClient */
dvander@2524
   186
			"sv"
dvander@2524
   187
			{
dvander@2524
   188
				"windows"	"6"
dvander@2524
   189
			}
dvander@2524
   190
		}
dvander@2524
   191
dvander@2524
   192
		"Signatures"
dvander@2524
   193
		{
dvander@2524
   194
			/* CBaseServer object for IServer interface */
dvander@2524
   195
			"sv"
dvander@2524
   196
			{
dvander@2524
   197
				"library"	"engine"
dvander@2524
   198
				"linux"		"@sv"
dvander@2524
   199
			}
dvander@2524
   200
		}
dvander@2524
   201
	}
dvander@2524
   202
	
dvander@2524
   203
	/* EntityFactoryDictionary function */
dvander@2524
   204
	"#default"
dvander@2524
   205
	{
dvander@2524
   206
		"Signatures"
dvander@2524
   207
		{
dvander@2524
   208
			"EntityFactory"
dvander@2524
   209
			{
dvander@2524
   210
				"library"	"server"
dvander@2524
   211
				"windows"	"\xB8\x01\x00\x00\x00\x84\x2A\x2A\x2A\x2A\x2A\x75\x1D\x09\x2A\x2A\x2A\x2A\x2A\xB9\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x68\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\x83\xC4\x04\xB8\x2A\x2A\x2A\x2A\xC3"
dvander@2524
   212
				"linux"		"@_Z23EntityFactoryDictionaryv"
dvander@2524
   213
			}
dvander@2524
   214
		}
dvander@2524
   215
	}
dvander@2524
   216
dvander@2524
   217
	/* CBaseEntityOutput::FireOutput */
dvander@2524
   218
	"#default"
dvander@2524
   219
	{
dvander@2524
   220
		"#supported"
dvander@2524
   221
		{
dvander@2524
   222
			"game"		"dod"
dvander@2524
   223
			"game"		"tf"
dvander@2524
   224
			"game"		"ageofchivalry"
dvander@2524
   225
		}
dvander@2524
   226
		"Signatures"
dvander@2524
   227
		{
dvander@2524
   228
			"FireOutput"
dvander@2524
   229
			{
dvander@2524
   230
				"library"	"server"
dvander@2524
   231
				"windows"	"\x81\xEC\x1C\x01\x00\x00\x53\x55\x56\x8B\x71\x14\x85\xF6"
dvander@2524
   232
				"linux"		"@_ZN17CBaseEntityOutput10FireOutputE9variant_tP11CBaseEntityS2_f"
dvander@2524
   233
			}
dvander@2524
   234
		}
dvander@2524
   235
		"Offsets"
dvander@2524
   236
		{
dvander@2524
   237
			"FireOutputBackup"
dvander@2524
   238
			{
dvander@2524
   239
				"windows"	"6"
dvander@2524
   240
				"linux"		"10"
dvander@2524
   241
			}
dvander@2524
   242
		}
dvander@2524
   243
	}
dvander@2524
   244
	
dvander@2524
   245
	/* SetUserInfo data */
dvander@2524
   246
	"#default"
dvander@2524
   247
	{
dvander@2524
   248
		"Offsets"
dvander@2524
   249
		{
dvander@2524
   250
			/**
dvander@2524
   251
			 * CBaseClient::SetUserCVar(char  const*,char  const*);
dvander@2524
   252
			 * Linux offset straight from VTable dump.
dvander@2524
   253
			 * Windows offset is crazy. Found the windows 'SetName' function using string "(%d)%-0.*s"
dvander@2524
   254
			 * Cross referenced back to the vtable and counted manually (SetUserCvar is 1 higher, offsets start from 1)
dvander@2524
   255
			 */
dvander@2524
   256
			"SetUserCvar"
dvander@2524
   257
			{
dvander@2524
   258
				"windows"	"17"
dvander@2524
   259
				"linux"		"55"
dvander@2524
   260
			}
dvander@2524
   261
			/**
dvander@2524
   262
			 * Offset into CBaseClient - Used by CBaseServer::UpdateUserSettings to determine when changes have been made.
dvander@2524
   263
			 * Find CBaseClient::UpdateUserSettings (strings "net_maxroutable", "cl_updaterate" etc) and the offset is set to 0 near the end.
dvander@2524
   264
			 * Linux: 	mov     byte ptr [esi+98h], 0
dvander@2524
   265
			 * Win:	mov     byte ptr [esi+0A4h], 0
dvander@2524
   266
			 */
dvander@2524
   267
			"InfoChanged"
dvander@2524
   268
			{
pred@2595
   269
				"windows"	"140"
pred@2599
   270
				"linux"		"140"
dvander@2524
   271
			}
dvander@2524
   272
		}
dvander@2524
   273
	}
dvander@2524
   274
}