Hello, I found this plugin here from you and I liked it and it works perfectly. But I would ask you if someone makes it instead of knives to become ak47.Thanks to everyone who made it, greetings from Bulgaria.
Kod:
#include <amxmodx>
#include <reapi>
#include <nvault>
#include <cromchat>
new const tag[] = "\rKNIFE \ySKIN \wFRAG";
new gorunum3[MAX_CLIENTS + 1];
new g_kills[MAX_CLIENTS + 1];
new const RANK_NAMES[][] = {
"Default", "Grizzly", "Snow", "Blueplasma", "White", "Galaxy",
"Space", "Tron", "Purple", "Green", "Frozen", "Tronblue", "Venom",
"Mecenat", "Blooby", "Color", "Shadow Fire", "Pro Skull", "Graffiti", "Titan",
"Vip"
};
new const RANK_KILL_LIMITS[] = {
0, 100, 200, 300, 400, 500, 600, 700, 800, 1000, 1400, 1600, 1800, 2000, 2200, 2400, 2600, 2800, 3400, 3800, 4500
};
new const menuclcmd[][] = { "say /kf", "say /knife" };
new knifemodel[][][] = {
{"Default", "models/v_knife.mdl"},
{"Grizzly", "models/latinn/v_grizly.mdl"},
{"Snow", "models/latinn/v_snow.mdl"},
{"Blueplasma", "models/latinn/v_blueplazma.mdl"},
{"White", "models/latinn/v_white.mdl"},
{"Galaxy", "models/latinn/v_galaxy.mdl"},
{"Space", "models/latinn/v_space.mdl"},
{"Tron", "models/latinn/v_tron.mdl"},
{"Purple", "models/latinn/v_purple.mdl"},
{"Green", "models/latinn/v_green.mdl"},
{"Frozen", "models/latinn/v_frozen.mdl"},
{"Tronblue", "models/latinn/v_tronblue.mdl"},
{"Venom", "models/latinn/v_venom.mdl"},
{"Mecenat", "models/latinn/v_mecenat.mdl"},
{"Blooby", "models/latinn/v_blooby.mdl"},
{"Color", "models/latinn/v_color.mdl"},
{"Shadow Fire", "models/latinn/v_shadow_fire.mdl"},
{"Pro Skull", "models/latinn/v_pro_skull.mdl"},
{"Graffiti", "models/latinn/v_graffiti.mdl"},
{"Titan", "models/latinn/v_titan.mdl"},
{"Vip", "models/latinn/v_vip.mdl"}
};
new g_vault;
public plugin_init() {
register_plugin("Knife Menu + Rank ", "1.0", "Latinn");
for (new i; i < sizeof(menuclcmd); i++) {
register_clcmd(menuclcmd[i], "anamenu");
}
register_event("DeathMsg", "event_death", "a");
RegisterHookChain(RG_CBasePlayerWeapon_DefaultDeploy, "CBasePlayerWeapon_DefaultDeploy_Pre", .post = false);
set_task(1.0, "show_hud", .flags="b");
}
public plugin_precache() {
for (new i = 0; i < sizeof(knifemodel); i++) {
precache_model(knifemodel[i][1]);
}
}
public CBasePlayerWeapon_DefaultDeploy_Pre(const pEntity, szViewModel[], szWeaponModel[], iAnim, szAnimExt[], skiplocal) {
new pPlayer = get_member(pEntity, m_pPlayer);
if (get_member(pEntity, m_iId) == WEAPON_KNIFE) {
SetHookChainArg(2, ATYPE_STRING, knifemodel[gorunum3[pPlayer]][1]);
}
}
public anamenu(const id) {
new rankname[32];
get_user_rankname(id, rankname, charsmax(rankname));
new menu = menu_create(fmt("\d[ %s\d ]^n \r~\w> \wKnife Menu | \dSkin: \y%s", tag, rankname), "anamenu_devam");
menu_additem(menu, "Knife Skins^n");
menu_setprop(menu, MPROP_EXITNAME, fmt("\wExit"));
menu_display(id, menu);
}
public anamenu_devam(const id, const menu, const item) {
switch (item) {
case 0: knifemenu(id);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public knifemenu(const id) {
new rankname[32];
get_user_rankname(id, rankname, charsmax(rankname));
new menu = menu_create(fmt("\d[ %s\d ] \r~\w> \wKnife Menu | \dSkin: \y%s", tag, rankname), "knifemenu_handler");
new player_kills = g_kills[id];
for (new i = 0; i < sizeof(knifemodel); i++) {
if (player_kills >= RANK_KILL_LIMITS[i]) {
menu_additem(menu, fmt("\w%s \d[ \y%s \d]", knifemodel[i][0], RANK_NAMES[i]), fmt("%d", i));
} else {
menu_additem(menu, fmt("\d%s \d[ \y%d kill need \d]", knifemodel[i][0], RANK_KILL_LIMITS[i]));
}
}
menu_setprop(menu, MPROP_EXITNAME, fmt("\wExit"));
menu_display(id, menu);
}
public knifemenu_handler(const id, const menu, const item) {
if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6];
menu_item_getinfo(menu, item, _, data, charsmax(data));
new key = str_to_num(data);
if (g_kills[id] >= RANK_KILL_LIMITS[key]) {
gorunum3[id] = key;
CC_SendMessage(id, "&x01[&x04SKIN&x01] &x03%s &x01the knife was chosen.", knifemodel[key][0]);
} else {
CC_SendMessage(id, "&x01[&x04SKIN&x01] &x03You don't have enough kills for this knife&x01!");
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public plugin_cfg() {
g_vault = nvault_open("ChampionsKnifeData");
}
public plugin_end() {
nvault_close(g_vault);
}
public client_authorized(id) {
new authid[MAX_AUTHID_LENGTH];
get_user_authid(id, authid, charsmax(authid));
g_kills[id] = nvault_get(g_vault, fmt("%s-[Kills]", authid));
gorunum3[id] = nvault_get(g_vault, fmt("%s-[Pick]", authid));
new rankname[32];
get_user_rankname(id, rankname, charsmax(rankname));
CC_SendMessage(id, "&x01[&x04SKIN&x01] &x04Knife: &x01%s &x03| &x04Kill: &x01%d", rankname, g_kills[id]);
}
public client_disconnected(id) {
new authid[MAX_AUTHID_LENGTH];
get_user_authid(id, authid, charsmax(authid));
nvault_set(g_vault, fmt("%s-[Pick]", authid), fmt("%d", gorunum3[id]));
nvault_set(g_vault, fmt("%s-[Kills]", authid), fmt("%d", g_kills[id]));
}
public event_death() {
new killer = read_data(1);
new victim = read_data(2);
if (killer > 0 && killer <= 32 && killer != victim) {
g_kills[killer]++;
new authid[MAX_AUTHID_LENGTH];
get_user_authid(killer, authid, charsmax(authid));
nvault_set(g_vault, fmt("%s-[Kills]", authid), fmt("%d", g_kills[killer]));
}
}
public get_user_rankname(id, rankname[], len) {
new kills = g_kills[id];
for (new i = sizeof(RANK_KILL_LIMITS) - 1; i >= 0; i--) {
if (kills >= RANK_KILL_LIMITS[i]) {
formatex(rankname, len, RANK_NAMES[i]);
return;
}
}
formatex(rankname, len, RANK_NAMES[0]);
}
public show_hud() {
for (new id = 1; id <= 32; id++) {
if (!is_user_connected(id)) continue;
new kills = g_kills[id];
new nextRankKills = 0;
new rankIdx = 0;
for (new i = 0; i < sizeof(RANK_KILL_LIMITS); i++) {
if (kills < RANK_KILL_LIMITS[i]) {
nextRankKills = RANK_KILL_LIMITS[i];
rankIdx = i - 1;
break;
}
rankIdx = i;
}
// Настройки на позицията за зелен цвят и ляв централен дисплей
set_hudmessage(0, 255, 0, 0.01, 0.92, 0, 1.0, 1.0, 0.1, 0.2, -1); // RGB: 0,255,0 (Yeşil)
show_hudmessage(id, "[Knife: %s] [Frag: %d/%d kill]",
RANK_NAMES[rankIdx], kills, nextRankKills);
}
}