Witam, mam problem z kompilacją tego kodu:
/* AMX Mod X Plugin
*
* (c) Copyright 2008, ConnorMcLeod
* This file is provided as is (no warranties).
*
*/
#include <amxmodx>
#include <fakemeta>
#define MAX_PRECACHE 512
#define MAX_FILE_LENGHT 128
new g_iCounter
new g_szPrecachedFiles[MAX_PRECACHE+1][MAX_FILE_LENGHT+1]
new g_szCustomFiles[MAX_PRECACHE+1][MAX_FILE_LENGHT+1]
new g_iForwardsIds[3]
public plugin_precache()
{
register_plugin("Precache Management", "1.0.0", "ConnorMcLeod")
g_iForwardsIds[0] = register_forward(FM_PrecacheModel, "Precache_Post", 1)
g_iForwardsIds[1] = register_forward(FM_PrecacheSound, "Precache_Post", 1)
g_iForwardsIds[2] = register_forward(FM_PrecacheGeneric, "Precache_Post", 1)
}
public plugin_natives()
{
register_library("precache")
register_native("can_precache","native_can_precache")
register_native("PrecacheModel","native_PrecacheModel")
register_native("PrecacheSound","native_PrecacheSound")
register_native("PrecacheGeneric","native_PrecacheGeneric")
}
public plugin_init()
{
unregister_forward(FM_PrecacheModel, g_iForwardsIds[0], 1)
unregister_forward(FM_PrecacheSound, g_iForwardsIds[1], 1)
unregister_forward(FM_PrecacheGeneric, g_iForwardsIds[2], 1)
new const szLogFile[] = "PrecacheList.log"
new const szLogFile2[] = "PrecacheListCust.log"
for(new i=1; i<=MAX_PRECACHE; i++)
{
if(g_szPrecachedFiles[i][0])
{
log_to_file(szLogFile, "<%d><%s>", i, g_szPrecachedFiles[i])
}
if(g_szCustomFiles[i][0])
{
log_to_file(szLogFile2, "<%d><%s>", i, g_szCustomFiles[i])
}
}
log_to_file(szLogFile, "%i files precached", g_iCounter)
pause("ad")
}
public Precache_Post(const szFile[])
{
static iVal
iVal = get_orig_retval()
update_counter(iVal)
if( !g_szPrecachedFiles[iVal][0] )
{
formatex(g_szPrecachedFiles[iVal], MAX_FILE_LENGHT, szFile)
}
}
update_counter(iVal)
{
if( iVal > g_iCounter )
{
g_iCounter = iVal
return 1
}
return 0
}
public native_can_precache(iPlugin, iParams)
{
return (g_iCounter < MAX_PRECACHE)
}
public native_PrecacheModel(iPlugin, iParams)
{
if(iParams != 1)
return -1
static szFile[MAX_FILE_LENGHT], iVal
get_string(1, szFile, MAX_FILE_LENGHT-1)
iVal = engfunc(EngFunc_PrecacheModel, szFile)
update_counter( iVal )
if( !g_szCustomFiles[iVal][0] )
{
formatex(g_szCustomFiles[iVal], MAX_FILE_LENGHT, szFile)
}
return iVal
}
public native_PrecacheSound(iPlugin, iParams)
{
if(iParams != 1)
return -1
static szFile[MAX_FILE_LENGHT], iVal
get_string(1, szFile, MAX_FILE_LENGHT-1)
iVal = engfunc(EngFunc_PrecacheSound, szFile)
update_counter( iVal )
if( !g_szCustomFiles[iVal][0] )
{
formatex(g_szCustomFiles[iVal], MAX_FILE_LENGHT, szFile)
}
return iVal
}
public native_PrecacheGeneric(iPlugin, iParams)
{
if(iParams != 1)
return -1
static szFile[MAX_FILE_LENGHT], iVal
get_string(1, szFile, MAX_FILE_LENGHT-1)
iVal = engfunc(EngFunc_PrecacheGeneric, szFile)
update_counter( iVal )
if( !g_szCustomFiles[iVal][0] )
{
formatex(g_szCustomFiles[iVal], MAX_FILE_LENGHT, szFile)
}
return iVal
}
Plugin ten ma przy każdej zmianie mapy liczyć i wypisywać do logu liczbę plików, które znajdują się w tablicy. Prosiłbym o ewentualną poprawę kodu, gdyż powyższego nie mogę skompilować. Z góry dziękuję.


Dodatki SourceMod






xxx.amxx







