Difference between revisions of "Porting to Left 4 Dead"

From AlliedModders Wiki
Jump to: navigation, search
m (New page: __FORCETOC__ Porting Valve Server Plugins or Metamod:Source plugins to Left 4 Dead is not very difficult. This article explores some of the changes and how to simplify them. Users of Met...)
 
m
Line 9: Line 9:
 
The <tt>IVEngineServer</tt> functions <tt>PEntityOfEntIndex</tt> and <tt>IndexOfEdict</tt> have been removed for faster code that can be inlined.  An example of how to re-implement this (as Valve has not released a new SDK yet):
 
The <tt>IVEngineServer</tt> functions <tt>PEntityOfEntIndex</tt> and <tt>IndexOfEdict</tt> have been removed for faster code that can be inlined.  An example of how to re-implement this (as Valve has not released a new SDK yet):
  
<pre>
+
<cpp>
 
inline int IndexOfEdict(const edict_t *pEdict)
 
inline int IndexOfEdict(const edict_t *pEdict)
 
{
 
{
Line 22: Line 22:
 
return NULL;
 
return NULL;
 
}
 
}
</pre>
+
</cpp>
  
  

Revision as of 01:38, 26 November 2008

Porting Valve Server Plugins or Metamod:Source plugins to Left 4 Dead is not very difficult. This article explores some of the changes and how to simplify them.

Users of Metamod:Source must upgrade to Metamod:Source 1.7 and use the 1.6+ API (see MM:S API Differences).

As there is no official SDK yet, we've simply reverse engineered the new header files. These changes aren't guaranteed to be 100% correct and the SDK isn't complete for building mods -- just most plugins.

Removals

The IVEngineServer functions PEntityOfEntIndex and IndexOfEdict have been removed for faster code that can be inlined. An example of how to re-implement this (as Valve has not released a new SDK yet):

inline int IndexOfEdict(const edict_t *pEdict)
{
	return (int)(pEdict - gpGlobals->baseEdict);
}
inline edict_t *PEntityOfEntIndex(int iEntIndex)
{
	if (iEntIndex >= 0 && iEntIndex < gpGlobals->maxEntities)
	{
		return (edict_t *)(gpGlobals->baseEdict + iEntIndex);
	}
	return NULL;
}


Annoyances

The console will spew "VPK" warnings unless your file-backed KeyValues operations use relative paths instead of absolute paths.