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