AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   get_user_wstats() doesn't work in AMX X or something? (https://forums.alliedmods.net/showthread.php?t=3091)

Downtown1 06-25-2004 19:49

get_user_wstats() doesn't work in AMX X or something?
 
Hello, having trouble with the ucstats_cstrike.sma, trying to run it under AMX X :). It works fine in AMX, however it does not in AMXX:

Code:
/* *   AMXMOD script. *   (ucstats_cstrike.sma) *   by mike_cao <[email protected]> *   This file is provided as is (no warranties). * */ #include <amxmodx> #include <amxmisc> #include <csstats> #include <ucstats> // Admin access level #define ACCESS_LEVEL ADMIN_LEVEL_A // Globals new gPlayerStats[MAX_PLAYERS+1][PLAYER_INDEX] new gMoneyIndex[MAX_PLAYERS+1] new gFirstKill = 0 new gPlanter = 0 /************************************************************ * LOG FUNCTIONS ************************************************************/ log_trigger(id,trigger[]) {     new iUserid = get_user_userid(id)     new sTeam[MAX_NAME_LENGTH]     new sName[MAX_NAME_LENGTH]     new sAuthid[MAX_NAME_LENGTH]     get_user_name(id,sName,MAX_NAME_LENGTH)     get_user_authid(id,sAuthid,MAX_NAME_LENGTH)     get_user_team(id,sTeam,MAX_NAME_LENGTH)     log_message("^"%s<%d><%s><%s>^" triggered ^"%s^"",sName,iUserid,sAuthid,sTeam,trigger) } log_weapon_stats(id) {     new iStats[8]     new iBodyHits[8]     new iUserid = get_user_userid(id)     new sTeam[MAX_NAME_LENGTH]     new sName[MAX_NAME_LENGTH]     new sAuthid[MAX_NAME_LENGTH]     new sWeapon[MAX_NAME_LENGTH]     get_user_name(id,sName,MAX_NAME_LENGTH)     get_user_authid(id,sAuthid,MAX_NAME_LENGTH)     get_user_team(id,sTeam,MAX_NAME_LENGTH)     for (new i = 1; i < MAX_WEAPONS; ++i) {         if (get_user_wstats(id,i,iStats,iBodyHits)) {             get_weaponname(i,sWeapon,MAX_NAME_LENGTH)             if ((iStats[0]+iStats[1]+iStats[2]+iStats[3]+iStats[4]+iStats[5]+iStats[6]) > 0) {                 // "Weapon_Stats" (weapon "kills,deaths,headshots,teamkills,shots,hits,damage")                 log_message("^"%s<%d><%s><%s>^" triggered ^"Weapon_Stats^" (%s ^"%i,%i,%i,%i,%i,%i,%i^")",                     sName,                     iUserid,                     sAuthid,                     sTeam,                     sWeapon,                     iStats[0],                     iStats[1],                     iStats[2],                     iStats[3],                     iStats[4],                     iStats[5],                     iStats[6]                 )             }             if ((iBodyHits[0]+iBodyHits[1]+iBodyHits[2]+iBodyHits[3]+iBodyHits[4]+iBodyHits[5]+iBodyHits[6]+iBodyHits[7]) > 0) {                 // "Weapon_Hits" (weapon "generic,head,chest,stomach,leftarm,rightarm,leftleg,rightleg")                 log_message("^"%s<%d><%s><%s>^" triggered ^"Weapon_Hits^" (%s ^"%i,%i,%i,%i,%i,%i,%i,%i^")",                     sName,                     iUserid,                     sAuthid,                     sTeam,                     sWeapon,                     iBodyHits[0],                     iBodyHits[1],                     iBodyHits[2],                     iBodyHits[3],                     iBodyHits[4],                     iBodyHits[5],                     iBodyHits[6],                     iBodyHits[7]                 )             }         }     } } log_player_stats(id) {     new iUserid = get_user_userid(id)     new sTeam[MAX_NAME_LENGTH]     new sName[MAX_NAME_LENGTH]     new sAuthid[MAX_NAME_LENGTH]     new sMap[MAX_NAME_LENGTH]     get_user_name(id,sName,MAX_NAME_LENGTH)     get_user_authid(id,sAuthid,MAX_NAME_LENGTH)     get_user_team(id,sTeam,MAX_NAME_LENGTH)     get_mapname(sMap,MAX_NAME_LENGTH)     if ((gPlayerStats[id][PLAYER_KILLS]+gPlayerStats[id][PLAYER_DEATHS]) > 0) {         // "Player_Stats" (map "kills,deaths,killstreak,rounds_survived,rounds_played,playing_time,misc")         log_message("^"%s<%d><%s><%s>^" triggered ^"Player_Stats^" (%s ^"%i,%i,%i,%i,%i,%i^")",             sName,             iUserid,             sAuthid,             sTeam,             sMap,             gPlayerStats[id][PLAYER_KILLS],             gPlayerStats[id][PLAYER_DEATHS],             gPlayerStats[id][PLAYER_KILLSTREAK],             gPlayerStats[id][PLAYER_SURVIVE],             gPlayerStats[id][PLAYER_ROUNDS],             floatround(get_gametime())-gPlayerStats[id][PLAYER_TIME]         )     } } /************************************************************ * EVENT FUNCTIONS ************************************************************/ public event_death() {     new iKiller = read_data(1)     new iVictim = read_data(2)     new iHeadshot = read_data(3)     gPlayerStats[iKiller][PLAYER_KILLS] += 1     gPlayerStats[iVictim][PLAYER_DEATHS] += 1         if (iKiller != iVictim && iKiller != 0) {         if (!gFirstKill) {             log_trigger(iKiller,"First_Kill")             gFirstKill = 1         }         if (iHeadshot) {             log_trigger(iKiller,"Head_Shot")         }         gPlayerStats[iKiller][PLAYER_KILLCOUNT] += 1         gPlayerStats[iVictim][PLAYER_KILLCOUNT] = 0                 // New streak         if (gPlayerStats[iKiller][PLAYER_KILLCOUNT] > gPlayerStats[iKiller][PLAYER_KILLSTREAK]) {             gPlayerStats[iKiller][PLAYER_KILLSTREAK] = gPlayerStats[iKiller][PLAYER_KILLCOUNT]         }     }         return PLUGIN_CONTINUE } public event_world_action() {     new sAction[MAX_NAME_LENGTH]     read_logargv(1,sAction,MAX_VAR_LENGTH)      if (equal(sAction,"Round_Start")) {         gFirstKill = 0         gPlanter = 0     }     else if (equal(sAction,"Round_End")) {         new iPlayer, iPlayers[MAX_PLAYERS], iNumPlayers         get_players(iPlayers,iNumPlayers)         for (new i = 0; i < iNumPlayers; i++) {             iPlayer = iPlayers[i]             // If not spectator             if (get_user_team(iPlayer)==1 || get_user_team(iPlayer)==2) {                 // Add round survived                 if (is_user_alive(iPlayer)) {                     gPlayerStats[iPlayer][PLAYER_SURVIVE] += 1                 }                 // Add round played                 gPlayerStats[iPlayer][PLAYER_ROUNDS] += 1             }         }     }         return PLUGIN_CONTINUE } public event_player_action() {     new iUserId, iPlayer     new sArg[MAX_VAR_LENGTH]     new sName[MAX_NAME_LENGTH]     new sAction[MAX_NAME_LENGTH]         read_logargv(0,sArg,MAX_VAR_LENGTH)     read_logargv(2,sAction,MAX_VAR_LENGTH)     parse_loguser(sArg,sName,MAX_NAME_LENGTH,iUserId)         if (equal(sAction,"Planted_The_Bomb")) {         iPlayer = find_player("k",iUserId)         if (iPlayer) {             gPlanter = iPlayer         }     }         return PLUGIN_CONTINUE } public event_bomb_explode() {     if (gPlanter) {         log_trigger(gPlanter,"Bomb_Exploded")     }     return PLUGIN_CONTINUE } public event_money(id) {         new iMoney = read_data(1)         new iPrevMoney = gMoneyIndex[id]     if (iMoney < iPrevMoney) {         gPlayerStats[id][PLAYER_MISC] += iPrevMoney - iMoney     }         gMoneyIndex[id] = iMoney         return PLUGIN_CONTINUE } public event_reset_stats(id) {     for (new i = 0; i < PLAYER_INDEX; i++) {         gPlayerStats[id][i] = 0     }     gPlayerStats[id][PLAYER_TIME] = floatround(get_gametime())     return PLUGIN_CONTINUE } /************************************************************ * PLUGIN FUNCTIONS ************************************************************/ public client_connect(id) {     event_reset_stats(id)     return PLUGIN_CONTINUE } public client_disconnect(id) {     log_player_stats(id)     log_weapon_stats(id)     event_reset_stats(id)     return PLUGIN_CONTINUE } public client_infochanged(id) {     new sName[MAX_TEXT_LENGTH], sNewName[MAX_TEXT_LENGTH]     get_user_name(id,sName,MAX_TEXT_LENGTH)     get_user_info(id,"name",sNewName,MAX_TEXT_LENGTH)     if (!equal(sName,sNewName) && !equal(sName,"")) {         // Log old name's stats         if (get_user_time(id) > MIN_PLAYTIME) {             log_player_stats(id)             log_weapon_stats(id)         }         // Reset stats for new name         reset_user_wstats(id)         event_reset_stats(id)     }     return PLUGIN_CONTINUE } public plugin_init() {     register_plugin("UCStats CSTRIKE","1.1","mike_cao")     register_event("DeathMsg","event_death","a")     register_event("Money","event_money","b")         register_logevent("event_player_action",3,"1=triggered")     register_logevent("event_bomb_explode",6,"2=triggered","3=Target_Bombed")     register_logevent("event_world_action",2,"0=World triggered")         server_print("[UCStats] CSTRIKE: Logging initialized successfully.")         return PLUGIN_CONTINUE }

At the end of a map, it logs all the user weapon stats (only at the end of a map). However in AMXX I get this error several times just before a map changes:

Code:

[AMX] Run time error 10 on line 58 (plugin "ucstats_cstrike.amx")
Line 58 points to:
Code:
        if (get_user_wstats(id,i,iStats,iBodyHits)) {

I checked out csstats.inc and all the parameters being passed just fine (it's the same exact function as for amxmod), so my question is this.. is the function just broken or what?

I'm also using the .SO file from the latest news, the "fixed" cstrike module incase anyone is wondering.

Thanks for anyone who can help me out here.

rack 01-05-2005 07:39

Use the csx-module instead of the cstrike.
Same functionality AND beyond.
ps. Runs ucstats like a charm.


All times are GMT -4. The time now is 14:39.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.