's animal mod xp based plugin. it took awhile to get it to compile, and actually save xp, still having trouble loading x after map chnge and such, but thats not the main issue i'm having, its actually the least of my worries at the moment. the big problem is the menu, i can not get the menu to work properly, when a user picks option 2, it says u picked option 1, option 1 works, but 3, and 4 do not.
I know the code is no where near clean, i've been tryin to learn reading tutorials and code snipits, but im actually lost now. it would be nice to have input on other things aswell, but my main concern is the menu, without this working correctly, the whole thing should just be scrapped.
Code:
Code:
<font face="monospace"><font color="#000000">[</font>code<font color="#000000">]//-------------------------------------------------------------------------------------------
//
// based on XunTric's animal omd
//
// modified for MosthatedOnline Servers
//
// <a href="http://clan.mosthatedonline.com" target="_blank" rel="nofollow noopener">http://clan.mosthatedonline.com</a>
//-------------------------------------------------------------------------------------------
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <vault>
//#include <superheromod>
#include <Vexd_Utilities>
#include <engine>
#define PLUGIN "mho_mod"
#define VERSION "1.12"
#define AUTHOR "Gzus"
#define CLASS_NOTHING 0
#define CLASS_MUTANT 1
#define CLASS_ALIEN 2
#define CLASS_PREDATOR 3
#define CLASS_MACHINE 4
#define MAXCLASSES 5
//-------------------------------------------------------------------------------------------
//new g_nightCrawlerTimer[33]
new PlayerClass[33]
new PlayerXP[33]
new PlayerLevel[33]
//-------------------------------------------------------------------------------------------
new const CLASSES[MAXCLASSES][] = {
"Mutant",
"Alien",
"Predator",
"Machine",
"None"
}
//-------------------------------------------------------------------------------------------
new msgtext
//-------------------------------------------------------------------------------------------
new const LEVELS[6] = {
100,
200,
400,
800,
1600,
3200
}
//-------------------------------------------------------------------------------------------
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("SaveXP", "1")
register_cvar("sv_mhomod", "1")
register_event("DeathMsg", "DeathMsg", "ae")
register_cvar("XP_per_kill", "20")
register_menucmd(register_menuid("menu_ChooseRace"),(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5),"DoChooseRace");
register_event("ResetHUD", "hook_hud", "b")
msgtext = get_user_msgid("StatusText")
register_clcmd("say changerace", "DoChooseRace")
register_clcmd("say_team changerace", "DoChooseRace")
register_clcmd("mosthatedonline", "MHO_Skill")
//register_concmd("mho_givexp", "mho_xp", ADMIN_SLAY, "<target> ")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1");
}
//-------------------------------------------------------------------------------------------
public Event_CurWeapon(id)
{
new Float:Speed = 300.0+(PlayerLevel[id]*50)
set_user_maxspeed(id, Float:Speed)
}
//-------------------------------------------------------------------------------------------
public SaveXP(id)
{
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
format(vaultkey,63,"RACE-%s-class",authid);
format(vaultdata,63,"%d",PlayerClass[id]);
set_vaultdata(vaultkey,vaultdata);
format(vaultkey,63,"RACE-%s-xp",authid);
format(vaultdata,63,"%d",PlayerXP[id]);
set_vaultdata(vaultkey,vaultdata);
format(vaultkey,63,"RACE-%s-level",authid);
format(vaultdata,63,"%d",PlayerLevel[id]);
set_vaultdata(vaultkey,vaultdata);
server_print("--MHO MOD-- SAVED XP",0.01)
}
//-------------------------------------------------------------------------------------------
public LoadXP(id)
{
new authid[32];
get_user_authid(id,authid,31);
new vaultkey[64], vaultdata[64];
format(vaultkey,63,"RACE-%s-class",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerClass[id] = str_to_num(vaultdata);
format(vaultkey,63,"RACE-%s-xp",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerXP[id] = str_to_num(vaultdata);
format(vaultkey,63,"RACE-%s-level",authid);
get_vaultdata(vaultkey,vaultdata,63);
PlayerLevel[id] = str_to_num(vaultdata);
server_print("--MHO MOD-- LOADED XP",0.01)
}
//-------------------------------------------------------------------------------------------
public client_connect(id)
{
//if(get_cvar_num("SaveXP") == 1) {
// LoadXP(id)
// client_print(id, print_chat, "[MHO Mod] XP Loaded!")
// client_print(id, print_chat, "[MHO Mod] You are a %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id])
//}
}
//-------------------------------------------------------------------------------------------
public client_authorized(id)
{
if(get_cvar_num("SaveXP") == 1) {
LoadXP(id)
client_print(id, print_chat, "[MHO Mod] XP Loaded!")
client_print(id, print_chat, "[MHO Mod] You are a %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id])
}
}
//-------------------------------------------------------------------------------------------
public MHO_Skill(id)
{
//new i
//new sum
//for (i=1; i<=10; i++)
//{
// sum += i
//}
if(PlayerClass[id] == CLASS_MUTANT) {
//invisible
}
if(PlayerClass[id] == CLASS_ALIEN) {
//lazer/acid spit
}
if(PlayerClass[id] == CLASS_PREDATOR) {
//knifespeed
}
if(PlayerClass[id] == CLASS_MACHINE && is_user_alive(id) ) {
//if ( g_nightCrawlerTimer[id] > 0 ) {
// set_user_godmode(id, 0)
// new message[128]
// format(message, 127, "%d seconds left of GOD Mode^n", g_nightCrawlerTimer[id] )
// set_hudmessage(255,0,0,-1.0,0.3,0,1.0,1.2,0.0,0.0,87)
// show_hudmessage( id, message)
// g_nightCrawlerTimer[id]--
//}
//else if ( g_nightCrawlerTimer[id] == 0 ) {
// g_nightCrawlerTimer[id]--
// set_user_godmode(id)
//}
}
//client_print(id, print_chat, "[MHO Mod] %s skill level %s used by %s ", PlayerClass[id], PlayerLevel[id], PlayerXP[id])
}
//-------------------------------------------------------------------------------------------
public client_disconnect(id)
{
if(get_cvar_num("SaveXP") == 1) {
SaveXP(id)
}
}
//-------------------------------------------------------------------------------------------
stock ChooseRace(id)
{
new menu[192];
new keys //= MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
//format(menu, 191, "MHO Mod: Choose Race^n^n1. Mutant^n2. Alien^n3. Predator^n4. Machine^n^n0. Exit")
new nLen = format( menu, 191, "MHO Mod: Choose Race:^n" )
nLen += format( menu[nLen], 191-nLen, "^n\w1. Mutant" )
nLen += format( menu[nLen], 191-nLen, "^n\w2. Alien" )
nLen += format( menu[nLen], 191-nLen, "^n\w3. Predator" )
nLen += format( menu[nLen], 191-nLen, "^n\w4. Machine" )
//nLen += format( szMenuBody[nLen], 255-nLen, "^n\w5. Fifth Option" )
//nLen += format( szMenuBody[nLen], 255-nLen, "^n\w6. Sixth Option" )
//nLen += format( szMenuBody[nLen], 255-nLen, "^n\w7. Seventh Option" )
//nLen += format( szMenuBody[nLen], 255-nLen, "^n\w8. Eighth Option" )
//nLen += format( szMenuBody[nLen], 255-nLen, "^n\w9. Ninth Option" )
//nLen += format( szMenuBody[nLen], 255-nLen, "^n^n\w0. Exit" )
keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5)
//keys = (1<<0)|(1<<1|(2<<1|(3<<1|(4<<1)
show_menu(id, keys, menu, -1, "menu_ChooseRace")
return PLUGIN_CONTINUE
}
//-------------------------------------------------------------------------------------------
public DoChooseRace(id, key)
{
if(key == 0) {
//if(PlayerClass[id] == CLASS_NOTHING) {
// client_print(id, print_chat, "[MHO Mod] Race was already set to NOTHING! [display chooseRace]")
// ChooseRace(id)
// return PLUGIN_HANDLED
//}
PlayerClass[id] = CLASS_NOTHING
//server_print("--MHO MOD-- KEY 0 SELECTED - No Race to Set",0.01)
client_print(id, print_chat, "[MHO Mod] KEY:0 Select a Race! [DEBUG NOTHING SELECTED]")
ChooseRace(id)
} else if(key == 1) {
//if(PlayerClass[id] == CLASS_MUTANT) {
// client_print(id, print_chat, "[MHO Mod] You are allready a Mutant! Choose something else!")
// ChooseRace(id)
// return PLUGIN_HANDLED
//}
PlayerClass[id] = CLASS_MUTANT
client_print(id, print_chat, "[MHO Mod] You are now a Mutant!")
server_print("--MHO MOD-- KEY 1 SELECTED - Mutant",0.01)
} else if(key == 2) {
//if(PlayerClass[id] == CLASS_ALIEN) {
// client_print(id, print_chat, "[MHO Mod] You are allready a Alien! Choose something else!")
// ChooseRace(id)
// return PLUGIN_HANDLED
//}
PlayerClass[id] = CLASS_ALIEN
client_print(id, print_chat, "[MHO Mod] You are now a Alien!")
server_print("--MHO MOD-- KEY 2 SELECTED - Alien",0.01)
} else if(key == 3) {
//if(PlayerClass[id] == CLASS_PREDATOR) {
// client_print(id, print_chat, "[MHO Mod] You are allready a Predator! Choose something else!")
// ChooseRace(id)
// return PLUGIN_HANDLED
//}
PlayerClass[id] = CLASS_PREDATOR
client_print(id, print_chat, "[MHO Mod] You are now a Predator!")
server_print("--MHO MOD-- KEY 3 SELECTED - Predator",0.01)
} else if(key == 4) {
//if(PlayerClass[id] == CLASS_MACHINE) {
// client_print(id, print_chat, "[MHO Mod] You are allready a Machine! Choose something else!")
// ChooseRace(id)
// return PLUGIN_HANDLED
//}
PlayerClass[id] = CLASS_MACHINE
client_print(id, print_chat, "[MHO Mod] You are now a Machine!")
server_print("--MHO MOD-- KEY 4 SELECTED - Machine",0.01)
}
ShowHUD(id)
return PLUGIN_HANDLED
}
//-------------------------------------------------------------------------------------------
public hook_hud(id)
{
if(PlayerClass[id] == CLASS_NOTHING) {
set_user_gravity(id, 1.03)
set_user_health(id, 100)
set_user_footsteps(id, 0)
set_user_maxspeed(id, 0.0)
setInvisibility(id, 250)
ChooseRace(id)
return PLUGIN_HANDLED
}
if(PlayerClass[id] == CLASS_MUTANT) {
//mutant powers
if (PlayerLevel[id] == 1){
set_user_gravity(id, 0.9)
set_user_health(id, 110)
} else if (PlayerLevel[id] == 2){
set_user_gravity(id, 0.8)
set_user_health(id, 115)
}else if (PlayerLevel[id] == 3){
set_user_gravity(id, 0.7)
set_user_health(id, 120)
}else if (PlayerLevel[id] == 4){
set_user_gravity(id, 0.6)
set_user_health(id, 130)
}
}
if(PlayerClass[id] == CLASS_ALIEN) {
//alien powers
if (PlayerLevel[id] == 1){
set_user_gravity(id, 0.9)
set_user_health(id, 110)
} else if (PlayerLevel[id] == 2){
set_user_gravity(id, 0.8)
set_user_health(id, 135)
}else if (PlayerLevel[id] == 3){
set_user_gravity(id, 0.7)
set_user_health(id, 150)
}else if (PlayerLevel[id] == 4){
set_user_gravity(id, 0.6)
set_user_health(id, 160)
}
}
if(PlayerClass[id] == CLASS_PREDATOR) {
//predator powers
if (PlayerLevel[id] == 1){
setInvisibility(id, 210)
set_user_gravity(id, 0.9)
set_user_health(id, 110)
set_user_footsteps(id, 1)
} else if (PlayerLevel[id] == 2){
setInvisibility(id, 190)
set_user_gravity(id, 0.8)
set_user_health(id, 135)
set_user_footsteps(id, 1)
}else if (PlayerLevel[id] == 3){
setInvisibility(id, 150)
set_user_gravity(id, 0.7)
set_user_health(id, 150)
set_user_footsteps(id, 1)
}else if (PlayerLevel[id] == 4){
setInvisibility(id, 100)
set_user_gravity(id, 0.6)
set_user_health(id, 160)
set_user_footsteps(id, 1)
}
}
if(PlayerClass[id] == CLASS_MACHINE) {
//machine powers
if (PlayerLevel[id] == 1){
set_user_gravity(id, 0.9)
set_user_health(id, 110)
set_user_maxspeed(id, 1.0)
cs_set_user_armor(id, 150, CS_ARMOR_VESTHELM)
} else if (PlayerLevel[id] == 2){
set_user_gravity(id, 0.69)
set_user_health(id, 135)
set_user_maxspeed(id, 1.5)
cs_set_user_armor(id, 175, CS_ARMOR_VESTHELM)
}else if (PlayerLevel[id] == 3){
set_user_gravity(id, 0.6)
set_user_health(id, 150)
set_user_maxspeed(id, 2.0)
cs_set_user_armor(id, 200, CS_ARMOR_VESTHELM)
}else if (PlayerLevel[id] == 4){
set_user_gravity(id, 0.5)
set_user_health(id, 160)
set_user_maxspeed(id, 4.0)
cs_set_user_armor(id, 250, CS_ARMOR_VESTHELM)
}
}
//client_print(id, print_chat, "[MHO Mod] XP Loaded!")
//client_print(id, print_chat, "[MHO Mod] You are a %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id])
server_print("--MHO MOD-- Setting Player Stats [hooking hud]",0.01)
return PLUGIN_HANDLED
}
//-------------------------------------------------------------------------------------------
public DeathMsg()
{
if(get_cvar_num("sv_mhomod") == 0) {
return PLUGIN_HANDLED
}
new attacker = read_data(1)
if(PlayerClass[attacker] == CLASS_NOTHING) {
return PLUGIN_HANDLED
}
if(PlayerLevel[attacker] == 6) {
return PLUGIN_HANDLED
}
PlayerXP[attacker] += get_cvar_num("XP_per_kill")
if(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {
PlayerLevel[attacker] += 1
client_print(attacker, print_chat, "[MHO Mod] Congratulations! You are now level %i!", PlayerLevel[attacker])
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", CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
server_print("--MHO MOD-- HOOK HUD COMPLETE",0.05)
return
}
//-------------------------------------------------------------------------------------------
public setInvisibility(id, alpha)
{
if (alpha < 125) {
set_user_rendering(id,kRenderFxGlowShell,8,8,8,kRenderTransAlpha,alpha)
}
else {
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,alpha)
}
server_print("--MHO MOD-- Set Invisibility",0.01)
}
//-------------------------------------------------------------------------------------------
public server_changeleve(map[], id)
{
server_print("--MHO MOD-- CHANGE LEVEL",0.01)
SaveXP(id)
}
</font> <font color="#000000">[</font>/code<font color="#000000">]</font></font>