I'm doing a mod called World of Warcraft Mod and it looks like this:
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <vault>
#include <engine>
//RACES
#define RACE_NOTHING 0
#define RACE_HUMAN 1
#define RACE_NIGHTELF 2
#define RACE_DWARF 3
#define RACE_GNOME 4
#define RACE_ORC 5
#define RACE_TAUREN 6
#define RACE_UNDEAD 7
#define RACE_TROLL 8
//CLASSES
#define CLASS_NOTHING 0
#define CLASS_MAGE 1
#define CLASS_PALADIN 2
#define CLASS_PRIEST 3
#define CLASS_ROGUE 4
#define CLASS_WARRIOR 5
#define CLASS_WARLOCK 6
#define CLASS_HUNTER 7
#define CLASS_SHAMAN 8
//MAX CLASSES AND MAX RACES
#define MAXCLASSES 9
#define MAXRACES 9
new PlayerRace[33]
new PlayerClass[33]
new PlayerXP[33]
new PlayerLevel[33]
new const CLASSES[MAXCLASSES][] = {
"None",
"Mage",
"Paladin",
"Priest",
"Rogue",
"Warrior",
"Warlock",
"Hunter",
"Shaman"
}
new const RACES[MAXRACES][] = {
"None",
"Human",
"Night Elf",
"Dwarf",
"Gnome",
"Orc",
"Tauren",
"Undead",
"Troll"
}
new msgtext
new const LEVELS[10] = {
100,
200,
400,
800,
1600,
3200,
6400,
12800,
25600,
51200
}
public plugin_init()
{
register_plugin("WoW Mod", "1.0", "MaTTe")
register_cvar("sv_wowmod", "1")
register_event("DeathMsg", "DeathMsg", "a")
register_cvar("XP_per_kill", "50")
register_menucmd(register_menuid("menu_ChooseRace"),1023,"DoChooseRace");
register_menucmd(register_menuid("menu_ChooseClass"),1023,"DoChooseClass");
register_event("ResetHUD", "ResetHud", "b")
msgtext = get_user_msgid("StatusText")
register_clcmd("say /changerace", "ChangeRace")
register_clcmd("say_team /changerace", "ChangeRace")
register_clcmd("say changerace", "ChangeRace")
register_clcmd("say_team changerace", "ChangeRace")
register_clcmd("say /changeclass", "ChangeClass")
register_clcmd("say_team /changeclass", "ChangeClass")
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,"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);
}
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);
}
public client_connect(id)
{
if(get_cvar_num("SaveXP") == 1) {
LoadXP(id)
client_print(id, print_chat, "[WoW Mod] XP Loaded!")
client_print(id, print_chat, "[WoW Mod] You are a %s %s with level %s and %s XP", PlayerRace[id], PlayerClass[id], PlayerLevel[id], PlayerXP[id])
PlayerRace[id] = RACE_NOTHING
PlayerClass[id] = CLASS_NOTHING
PlayerXP[id] = 0
PlayerLevel[id] = 0
}
}
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|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
format(menu, 191, "WoW Mod: Choose Race:^n Alliance:^n^n1. Human^n2. Night Elf^n3. Dwarf^n4. Gnome^n^n Horde: Orc^n6. Tauren^n7. Undead^n8. Troll^n0. Exit")
show_menu(id, keys, menu, -1, "menu_ChooseRace")
return PLUGIN_CONTINUE
}
public DoChooseRace(id, key)
{
if(key == 0) {
if(PlayerRace[id] == RACE_HUMAN) {
client_print(id, print_chat, "[WoW Mod] You are already a Human! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_HUMAN
client_print(id, print_chat, "[WoW Mod] You are now a Human!")
}
if(key == 1) {
if(PlayerRace[id] == RACE_NIGHTELF) {
client_print(id, print_chat, "[WoW Mod] You are already a Night Elf! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_NIGHTELF
client_print(id, print_chat, "[WoW Mod] You are now a Night Elf!")
}
if(key == 2) {
if(PlayerRace[id] == RACE_DWARF) {
client_print(id, print_chat, "[WoW Mod] You are already a Dwarf! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_DWARF
client_print(id, print_chat, "[WoW Mod] You are now a Dwarf!")
}
if(key == 3) {
if(PlayerRace[id] == RACE_GNOME) {
client_print(id, print_chat, "[WoW Mod] You are already a Gnome! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_GNOME
client_print(id, print_chat, "[WoW Mod] You are now a Gnome!")
}
if(key == 4) {
if(PlayerRace[id] == RACE_ORC) {
client_print(id, print_chat, "[WoW Mod] You are already an Orc! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_ORC
client_print(id, print_chat, "[WoW Mod] You are now an Orc!")
}
if(key == 5) {
if(PlayerRace[id] == RACE_TAUREN) {
client_print(id, print_chat, "[WoW Mod] You are already a Tauren! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_TAUREN
client_print(id, print_chat, "[WoW Mod] You are now a Tauren!")
}
if(key == 6) {
if(PlayerRace[id] == RACE_UNDEAD) {
client_print(id, print_chat, "[WoW Mod] You are already an Undead! Choose something else!")
ChooseRace(id)
return PLUGIN_HANDLED
}
PlayerRace[id] = RACE_UNDEAD
client_print(id, print_chat, "[WoW Mod] You are now an Undead!")
}
ShowHUD(id)
return PLUGIN_HANDLED
}
stock ChooseClass(id)
{
new menu[192]
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
format(menu, 191, "WoW Mod: Choose Class:^n^n1. Mage^n2. Paladin^n3. Priest^n4. Rogue^n5. Warrior^n6. Warlock^n7. Hunter^n8. Shaman^n0. Exit")
show_menu(id, keys, menu, -1, "menu_ChooseClass")
return PLUGIN_CONTINUE
}
public DoChooseClass(id, key)
{
if(key == 0) {
if(PlayerClass[id] == CLASS_MAGE) {
client_print(id, print_chat, "[WoW Mod] You are already a Mage! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_MAGE
client_print(id, print_chat, "[WoW Mod] You are now a Mage!")
}
if(key == 1) {
if(PlayerClass[id] == CLASS_PALADIN) {
client_print(id, print_chat, "[WoW Mod] You are already a Paladin! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_PALADIN
client_print(id, print_chat, "[WoW Mod] You are now a Paladin!")
}
if(key == 2) {
if(PlayerClass[id] == CLASS_PRIEST) {
client_print(id, print_chat, "[WoW Mod] You are already a Priest! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_PRIEST
client_print(id, print_chat, "[WoW Mod] You are now a Priest!")
}
if(key == 3) {
if(PlayerClass[id] == CLASS_ROGUE) {
client_print(id, print_chat, "[WoW Mod] You are already a Rogue! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_ROGUE
client_print(id, print_chat, "[WoW Mod] You are now a Rogue!")
}
if(key == 4) {
if(PlayerClass[id] == CLASS_WARRIOR) {
client_print(id, print_chat, "[WoW Mod] You are already a Warrior! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_WARRIOR
client_print(id, print_chat, "[WoW Mod] You are now a Warrior!")
}
if(key == 5) {
if(PlayerClass[id] == CLASS_WARLOCK) {
client_print(id, print_chat, "[WoW Mod] You are already a Warlock! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_WARLOCK
client_print(id, print_chat, "[WoW Mod] You are now a Warlock!")
}
if(key == 6) {
if(PlayerClass[id] == CLASS_HUNTER) {
client_print(id, print_chat, "[WoW Mod] You are already a Hunter! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_HUNTER
client_print(id, print_chat, "[WoW Mod] You are now a Hunter!")
}
if(key == 7) {
if(PlayerClass[id] == CLASS_SHAMAN) {
client_print(id, print_chat, "[WoW Mod] You are already a Shaman! Choose something else!")
ChooseClass(id)
return PLUGIN_HANDLED
}
PlayerClass[id] = CLASS_SHAMAN
client_print(id, print_chat, "[WoW Mod] You are now a Shaman!")
}
ShowHUD(id)
return PLUGIN_HANDLED
}
public ResetHUD(id)
{
if(PlayerRace[id] == RACE_NOTHING) {
ChooseRace(id)
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public DeathMsg()
{
if(get_cvar_num("sv_wowmod") == 0) {
return PLUGIN_HANDLED
}
new attacker = read_data(1)
if(PlayerRace[attacker] == RACE_NOTHING) {
return PLUGIN_HANDLED
}
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, "[WoW 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][%s]Level: %i XP: %i", RACES[PlayerRace[id]], CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id])
message_begin(MSG_ONE, msgtext, {0,0,0}, id)
write_byte(0)
write_string(HUD)
message_end()
}
And i'd like some ideas of what skills the different races and classes shall have too.