AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   need help with plugin. (https://forums.alliedmods.net/showthread.php?t=29692)

*<3* 06-10-2006 16:33

need help with plugin.
 
readed the http://forums.alliedmods.net/showthread.php?t=12518 and tried to make my own, its very similar to that but.

Code:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #include <vault> #define PLUGIN "my xp" #define VERSION "1.0" #define AUTHOR "*<3*" #define CLASS_NORACE 0   #define CLASS_GOD 1   #define CLASS_THE_DEVIL 2   #define MAXCLASSES 3 new PlayerClass[33]   new PlayerXP[33]   new PlayerLevel[33]   new const CLASSES[MAXCLASSES][] = {       "None",       "GOD",       "THE DEVIL",   } new msgtext   new const LEVELS[8] = {       100,       200,       400,     800,       1600,       3200,     6400,     12800 }     public plugin_init()   {       register_plugin("My Xp", "1.0", "*<3*")                   register_cvar("sv_myxp", "1")                   register_event("DeathMsg", "DeathMsg", "a")                 register_cvar("xp_per_kill", "20")             register_cvar("SaveXP", "1")               register_menucmd(register_menuid("menu_ChooseClass"),1023,"DoChooseClass");                 register_event("ResetHUD", "ResetHud", "b")                   msgtext = get_user_msgid("StatusText")             register_clcmd("say /changeClass", "ChangeClass")       register_clcmd("say_team /changeClass", "ChangeClass")   }   public SaveXP(id)   {       new authid[32];       get_user_authid(id,authid,31);       new vaultkey[64], vaultdata[64];               format(vaultkey,63,"Class-%s",authid);       format(vaultdata,63,"%d",PlayerClass[id]);       set_vaultdata(vaultkey,vaultdata);       format(vaultkey,63,"Class-%s-xp",authid);       format(vaultdata,63,"%d",PlayerXP[id]);       set_vaultdata(vaultkey,vaultdata);             format(vaultkey,63,"Class-%s-level",authid);       format(vaultdata,63,"%d",PlayerLevel[id]);       set_vaultdata(vaultkey,vaultdata);   }   public LoadXP(id)   {       new authid[32];       get_user_authid(id,authid,31);       new vaultkey[64], vaultdata[64];       format(vaultkey,63,"Class-%s",authid);       get_vaultdata(vaultkey,vaultdata,63);       PlayerClass[id] = str_to_num(vaultdata);       format(vaultkey,63,"Class-%s-xp",authid);       get_vaultdata(vaultkey,vaultdata,63);       PlayerXP[id] = str_to_num(vaultdata);             format(vaultkey,63,"Class-%s-level",authid);       get_vaultdata(vaultkey,vaultdata,63);       PlayerLevel[id] = str_to_num(vaultdata);     }   public client_connect(id)   {           if(get_cvar_num("SaveXP") == 1) {                      LoadXP(id)                        client_print(id, print_chat, "[My Xp] XP Loaded!")            client_print(id, print_chat, "[My Xp] You are %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id])       }   }   public client_disconnect(id)   {       if(get_cvar_num("SaveXP") == 1) {                  SaveXP(id)       }   }   stock ChooseClass(id)   {       new menu[192]             new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2               format(menu, 191, "My Xp: Choose Class^n^n1. God^n2. Exit")                   show_menu(id, keys, menu, -1, "menu_ChooseClass")             return PLUGIN_CONTINUE   }   public DoChooseClass(id, key)   {       if(key == 0) {                              if(PlayerClass[id] == CLASS_GOD) {                                                           ChooseClass(id)                                 return PLUGIN_HANDLED            }                              PlayerClass[id] = CLASS_GOD                                client_print(id, print_chat, "[My Xp] You are now GOD, have fun !")       }                                 if(key == 1) {                        if(PlayerClass[id] == CLASS_THE_DEVIL) {                                 ChooseClass(id)                 return PLUGIN_HANDLED            }                                  PlayerClass[id] = CLASS_THE_DEVIL            client_print(id, print_chat, "[My Xp] You are now THE DEVIL, have fun !")       }                           ShowHUD(id)             return PLUGIN_HANDLED   }   public ResetHUD(id)   {             if(get_cvar_num("sv_myxp") == 0) {            return PLUGIN_HANDLED       }             if(PlayerClass[id] == CLASS_NORACE) {                            ChooseClass(id)            return PLUGIN_HANDLED       }             return PLUGIN_HANDLED   }   public DeathMsg()   {           if(get_cvar_num("sv_myxp") == 0) {            return PLUGIN_HANDLED       }                   new attacker = read_data(0)             /       if(PlayerClass[attacker] == CLASS_NORACE) {            return PLUGIN_HANDLED       }                   if(PlayerLevel[attacker] == 8) {            return PLUGIN_HANDLED       }                       PlayerXP[attacker] += get_cvar_num("XP_per_kill")                   if(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {                              PlayerLevel[attacker] += 1                                  if(get_cvar_num("SaveXP") == 1) {                     SaveXP(attacker)            }                      ShowHUD(attacker)       }                   ShowHUD(attacker)             return PLUGIN_CONTINUE   }   public ShowHUD(id)       {       new HUD[51]                   format(HUD, 50, "[%s]Level: %i XP: %i", Class[PlayerClass[id]], PlayerLevel[id], PlayerXP[id])       message_begin(MSG_ONE, msgtext, {0,0,0}, id)       write_byte(0)       write_string(HUD)       message_end()       return   }  }

but there's error :
Code:
Welcome to the AMX Mod X 1.70-300 Compiler. Copyright (c) 1997-2005 ITB CompuPhase, AMX Mod X Team Error: Invalid expression, assumed zero on line 226 Error: Invalid expression, assumed zero on line 229 Warning: Unreachable code on line 234 Error: Undefined symbol "Class" on line 269 Warning: Expression has no effect on line 269 Error: Expected token: ";", but found "]" on line 269 Error: Invalid expression, assumed zero on line 269 Error: Too many error messages on one line on line 269 Compilation aborted. 6 Errors. Could not locate output file C:\Documents and Settings\Liam\Skrivebord\my xp.amx (compile failed).
how do i fix that ?

Kensai 06-10-2006 17:18

Here's part of the problem.

Code:
#define CLASS_NORACE 0   #define CLASS_GOD 1   #define CLASS_THE_DEVIL 2   #define MAXCLASSES 3 new PlayerClass[33]   new PlayerXP[33]   new PlayerLevel[33]   new const CLASSES[MAXCLASSES][] = {       "None",       "GOD",       "THE DEVIL",   }

Change everything with Class in it to Race. Or change everything in your code that has race to class.

For example, you have PlayerClass and yet you use PlayerRace

*<3* 06-10-2006 17:55

i get errors when i juse Race.

Peli 06-10-2006 18:25

Here is the plugin with no errors, and only 1 warning I still don't really get, but I'll try to fix.

NOTE: I tried my best to add as much comments to let you know what you did wrong, or what I tried to make more efficient, didn't add comments on some things that were not necessary and were just indentation errors.
Code:
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #include <vault> //#define PLUGIN "my xp" // Absolutely no reason for this, considering you don't use PLUGIN[], VERSION[] and AUTHOR[] in your register_plugin() //#define VERSION "1.0" //#define AUTHOR "*<3*" #define CLASS_NONE 0 // Changed CLASS_NORACE to CLASS_NONE for simplicity reasons #define CLASS_GOD 1 #define CLASS_DEVIL 2  // Changed CLASS_THE_DEVEIL to CLASS_DEVIL for simplicity reasons #define MAXCLASSES 3 new PlayerClass[33] new PlayerXP[33] new PlayerLevel[33] new const CLASSES[MAXCLASSES][] = {    "None",    "GOD",    "THE DEVIL" // Changed "THE DEVIL", to "THE DEVIL" because you don't need an extra comma after the last line } new msgtext new const LEVELS[8] = {     100,     200,     400,     800,     1600,     3200,     6400,     12800 } public plugin_init() {     register_plugin("My Xp", "1.0", "*<3*")     register_event("DeathMsg", "DeathMsg", "a")     register_event("ResetHUD", "ResetHud", "be") // Changed "b" flag to "be", needed to work properly on a new round     register_cvar("sv_myxp", "1")     register_cvar("xp_per_kill", "20")     register_cvar("SaveXP", "1")     register_clcmd("say /changeClass", "ChangeClass")     register_clcmd("say_team /changeClass", "ChangeClass")     register_menucmd(register_menuid("menu_ChooseClass"), 1023, "DoChooseClass")     msgtext = get_user_msgid("StatusText") } public SaveXP(id) {    new authid[32]    get_user_authid(id, authid, 31)    new vaultkey[64], vaultdata[64]    format(vaultkey, 63, "Class-%s", authid)    format(vaultdata, 63, "%d", PlayerClass[id])    set_vaultdata(vaultkey, vaultdata)    format(vaultkey, 63, "Class-%s-xp", authid)    format(vaultdata, 63, "%d", PlayerXP[id])    set_vaultdata(vaultkey, vaultdata)    format(vaultkey, 63, "Class-%s-level", authid)    format(vaultdata,63, "%d", PlayerLevel[id])    set_vaultdata(vaultkey, vaultdata) } public LoadXP(id) {    new authid[32]    get_user_authid(id,authid,31)    new vaultkey[64], vaultdata[64]    format(vaultkey, 63, "Class-%s", authid)    get_vaultdata(vaultkey, vaultdata, 63)    PlayerClass[id] = str_to_num(vaultdata)    format(vaultkey, 63, "Class-%s-xp", authid)    get_vaultdata(vaultkey, vaultdata, 63)    PlayerXP[id] = str_to_num(vaultdata)    format(vaultkey,63, "Class-%s-level", authid)    get_vaultdata(vaultkey, vaultdata, 63)    PlayerLevel[id] = str_to_num(vaultdata) } public client_connect(id) {    if(get_cvar_num("SaveXP") == 1)    {       LoadXP(id)       client_print(id, print_chat, "[My Xp] XP Loaded!")       client_print(id, print_chat, "[My Xp] You are %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id])    } } public client_disconnect(id) {    if(get_cvar_num("SaveXP") == 1)    {       SaveXP(id)    } } stock ChooseClass(id) {    new menu[192]    new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2    format(menu, 191, "My Xp: Choose Class^n^n1. God^n2. Devil^n3. Exit") // Added Devil option, new line maybe messed up    show_menu(id, keys, menu, -1, "menu_ChooseClass")    return PLUGIN_CONTINUE } public DoChooseClass(id, key) {    switch(key) // Changed if(key==0,1,2,etc) to switch_key & cases, works better    {       case 0:       {          if(PlayerClass[id] == CLASS_GOD)          {             ChooseClass(id)             // Removed return_PLUGIN_HANDLED, not needed in each case          }          PlayerClass[id] = CLASS_GOD          client_print(id, print_chat, "[My Xp] You are now GOD, have fun !")       }       case 1:       {          if(PlayerClass[id] == CLASS_DEVIL)          {             ChooseClass(id)          }          PlayerClass[id] = CLASS_DEVIL          client_print(id, print_chat, "[My Xp] You are now THE DEVIL, have fun !")       }    }    ShowHUD(id)    return PLUGIN_HANDLED } public ResetHUD(id) {    if(get_cvar_num("sv_myxp") == 0)    {       return PLUGIN_HANDLED    }    if(PlayerClass[id] == CLASS_NONE)    {       ChooseClass(id)       return PLUGIN_HANDLED    }    return PLUGIN_HANDLED } public DeathMsg() {    if(get_cvar_num("sv_myxp") == 0)    {       return PLUGIN_HANDLED    }    new attacker = read_data(0)    if(PlayerClass[attacker] == CLASS_NONE)    {       return PLUGIN_HANDLED    }    if(PlayerLevel[attacker] == 8)    {       return PLUGIN_HANDLED    }    PlayerXP[attacker] += get_cvar_num("XP_per_kill")    if(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])    {       PlayerLevel[attacker] += 1       if(get_cvar_num("SaveXP") == 1)       {          SaveXP(attacker)       }       ShowHUD(attacker)    }    ShowHUD(attacker)    return PLUGIN_CONTINUE } public ShowHUD(id) {     new HUD[51]     format(HUD, 50, "[%s]Level: %i XP: %i", PlayerClass[id], PlayerLevel[id], PlayerXP[id])     message_begin(MSG_ONE, msgtext, {0,0,0}, id)     write_byte(0)     write_string(HUD)     message_end()     return }

*<3* 06-10-2006 19:01

thanks alot. :D
+karma.

*<3* 06-12-2006 10:18

i get a bad load from it . ?


All times are GMT -4. The time now is 08:02.

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