Member
Join Date: May 2009
Location: Denmark, KBH
|
05-09-2009
, 11:27
Nothing is displaying - HNS XP mod
|
#1
|
Hi, im currently developing a new xp mod for my hns server. However, I cannot make it display anything, but it is loaded though.
Not even the choose class menu is opening. :S
I hope one of you can tell me what i'm doing wrong.
This is the code:
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <vault>
#define CLASS_NOTHING 0
#define CLASS_JUMPER 1
#define CLASS_BHOPPER 2
#define CLASS_CHOPPER 3
#define CLASS_NOOB 4
// Etc...
// Note: I made a "nothing" Jumper. This is the class that all new people will automaticly get.
#define MAXCLASSES 5
#define MAXLEVELS 15
// I set MAXCLASSES to 5, since we have 5 classes
new PlayerClass[33];
new PlayerXP[33];
new PlayerLevel[33];
new const CLASSES[MAXCLASSES][] = {
"None",
"Jumper",
"BHopper",
"CHopper",
"Noob"
}
new msgtext;
new const LEVELS[MAXLEVELS] = {
90,
180,
300,
450,
700,
1200,
1800,
2800,
4100,
5200,
6000,
6800,
8200,
10200,
12000
}; // Levels
public plugin_init() {
register_plugin("HNS - XP", "1.0", "By [JPro] ReTaRD [ToY]");
//I'll create a on/off cvar for the mod... You dont have to add this.
register_cvar("sv_hnsxpmod", "1");
//Now we register the DeathMsg event. This is where we can add XP when you kill somebody.
register_event("DeathMsg", "DeathMsg", "a");
//Note that i registered it as "a"; global event
//Now we register a "XP Per Kill" cvar...
//Now I made 20 xp per kill.
register_cvar("xp_per_kill", "15");
//Lets register a SaveXP toggle cvar.
register_cvar("SaveXP", "1");
//Lets register a menu to choose Jumper with...
register_menucmd(register_menuid("menu_ChooseJumper"),1023,"DoChooseJumper");
//ResetHUD event.(Check if user has no class)
register_event("ResetHUD", "ResetHud", "b");
//Something for ShowHUD... Will explain later.
msgtext = get_user_msgid("StatusText");
//Lets make a "Change Jumper" cmd for players.
//I just lead it to the change Jumper menu.
//Ill get back to the menu later.
register_clcmd("say /changeJumper", "ChangeJumper");
register_clcmd("say_team /changeJumper", "ChangeJumper");
}
public SaveXP(id) {
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
//Save their class
format(vaultkey,63,"Jumper-%s-class",authid);
format(vaultdata,63,"%d",PlayerClass[id]);
set_vaultdata(vaultkey,vaultdata);
//Save their XP
format(vaultkey,63,"Jumper-%s-xp",authid);
format(vaultdata,63,"%d",PlayerXP[id]);
set_vaultdata(vaultkey,vaultdata);
//Save their level
format(vaultkey,63,"Jumper-%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];
//Load their class
format(vaultkey,63,"Jumper-%s-class",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerClass[id] = str_to_num(vaultdata);
//Load their XP
format(vaultkey,63,"Jumper-%s-xp",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerXP[id] = str_to_num(vaultdata);
//Load their level
format(vaultkey,63,"Jumper-%s-level",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerLevel[id] = str_to_num(vaultdata);
}
public client_connect(id)
{
//Only load their XP if our SaveXP cvar is 1.
if(get_cvar_num("SaveXP") == 1) {
LoadXP(id);
//Add a message if you want....
client_print(id, print_chat, "[HNS XP Mod] XP Loaded!");
client_print(id, print_chat, "[HNS XP Mod] You are a %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id]);
}
}
public client_disconnect(id)
{
//Only save their XP if our SaveXP cvar is 1.
if(get_cvar_num("SaveXP") == 1) {
SaveXP(id);
}
}
//Call it whatever you want...
stock ChooseJumper(id)
{
new menu[192];
//Add keys for how many classes you have + exit key.
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3;
//Here we write the menu options..
format(menu, 191, "HNS XP Mod: Choose a Jumper^n^n1. Jumper^n2. BHopper^n3. CHopper^n4. Noob^n^n0. Exit");
//We created a menu in plugin_init() and now we make the plugin know that its this menu it has to show.
show_menu(id, keys, menu, -1, "menu_ChooseJumper");
return PLUGIN_CONTINUE;
}
public DoChooseJumper(id, key)
{
// Remeber that the keys starts on 0...
if(key == 0) {
//Lets check if the player allready has Jumper...
if(PlayerClass[id] == CLASS_JUMPER) {
//Make a message here if you want...
client_print(id, print_chat, "[HNS XP Mod] You are already a Jumper! Choose something else!");
//Open the menu again...
ChooseJumper(id);
//Exit...
return PLUGIN_HANDLED;
}
//Now, if the player didnt have Jumper allready, we'll set his class to jumper.
PlayerClass[id] = CLASS_JUMPER;
//Make a message if you want...
client_print(id, print_chat, "[HNS XP Mod] You are now a Jumper!");
}
//Im doing the same on all other buttons...
if(key == 1) {
if(PlayerClass[id] == CLASS_BHOPPER) {
client_print(id, print_chat, "[HNS XP Mod] You are already a BHopper! Choose something else!");
ChooseJumper(id);
return PLUGIN_HANDLED;
}
PlayerClass[id] = CLASS_BHOPPER
client_print(id, print_chat, "[HNS XP Mod] You are now a BHopper!");
}
if(key == 2) {
if(PlayerClass[id] == CLASS_CHOPPER) {
client_print(id, print_chat, "[HNS XP Mod] You are already a CHopper! Choose something else!");
ChooseJumper(id);
return PLUGIN_HANDLED;
}
PlayerClass[id] = CLASS_CHOPPER;
client_print(id, print_chat, "[HNS XP Mod] You are now a CHopper!");
}
if(key == 3) {
if(PlayerClass[id] == CLASS_NOOB) {
client_print(id, print_chat, "[HNS XP Mod] You are already a Noob! Choose something else!");
ChooseJumper(id);
return PLUGIN_HANDLED;
}
PlayerClass[id] = CLASS_NOOB;
client_print(id, print_chat, "[HNS XP Mod] You are now a Noob!");
}
//Show new HUD after picking class.
//Ill get back to this later...
ShowHUD(id);
return PLUGIN_HANDLED;
}
public ResetHUD(id) {
//Lets check if "sv_hnsxpmod" is on. If its off, we'll stop the function.
if(get_cvar_num("sv_hnsxpmod") == 0) {
return PLUGIN_HANDLED;
}
//Lets check if the player has no Jumper.
if(PlayerClass[id] == CLASS_NOTHING) {
//If the player doesnt have a Jumper;
//Open the choose Jumper menu for him.
ChooseJumper(id);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public DeathMsg() //Note that i only had (), and not (id)
{
//Lets check if "sv_hnsxpmod" is on. If its off, we'll stop the function.
if(get_cvar_num("sv_hnsxpmod") == 0) {
return PLUGIN_HANDLED;
}
//Now we create a "attacker" varriable. So the XP will be given to the killer, and not all players on the server.
new attacker = read_data(1);
//Now the plugin will check if the attacker doesnt have a class, and if he doesnt, the function will stop.
if(PlayerClass[attacker] == CLASS_NOTHING) {
return PLUGIN_HANDLED;
}
//Now lets see if the attacker allready has level 6, and doesnt need more XP, and if he is, stop the function.
//You can remove this if you want, and let the player get as much XP he want. But we wont get more than level 6 anyway.
if(PlayerLevel[attacker] == 6) {
return PLUGIN_HANDLED;
}
//Now we can add XP to the attacker.
PlayerXP[attacker] += get_cvar_num("XP_per_kill"); //Add the amout of XP you have on the "XP_per_kill" cvar.
//Now we check if the attacker has enough XP for a new level. And if he has, we add it.
if(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {
//Add his level...
PlayerLevel[attacker] += 1;
//Now you can make a "congratualtions" message if you want...
client_print(attacker, print_chat, "[HNS XP Mod] Congratulations! You are now level %i!", PlayerLevel[attacker]);
//Lets save his XP every time he gets a level incase the server crashes or something. So they wont loose it all.
if(get_cvar_num("SaveXP") == 1) {
SaveXP(attacker);
}
//Show His New Level on the HUD message.
//Ill get back to this later...
ShowHUD(attacker);
}
//Show new HUD if you didnt get level too. (To show the new XP)
//Ill get back to this later...
ShowHUD(attacker);
return PLUGIN_CONTINUE;
}
public ShowHUD(id)
{
new HUD[51];
//This is the stuff that will actually show in game.
format(HUD, 50, "[%s]Level: %i XP: %i", CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id]);
message_begin(MSG_ONE, msgtext, {0,0,0}, id);
write_byte(0);
write_string(HUD);
message_end();
return;
}
Made with help from XunTric (banned)
Regards
[JPRO] ReTaRD [ToY]
Last edited by JProReTaRD; 05-09-2009 at 15:21.
|
|