Member
|
05-29-2022
, 10:35
Improving and optimizing this thing
|
#1
|
Hello, would someone be so kind and point out how to improve "this thing?", since it can't be called a plugin due to the rather clunky code ;DD
PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < nvault >
new const PLUGIN[] = "Skins"
new const VERSION[] = "1.0.0"
new const AUTHOR[] = ""
new const gcCommands[][] = { "say /skins", "say /skiny", "say /skin", "say /modele", "say /model", "say /models" };
new KnifeNames[][] = {
"Default",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins",
"Knife \d×\w Skins"
};
new const KnifeModels[][] = {
"models/v_knife.mdl",
"models/v_knife_boreal_forest.mdl",
"models/v_knife_safari_mesh.mdl",
"models/v_falchion_slaughter.mdl",
"models/v_bayonet_doppler_saphire.mdl",
"models/v_bayonet_lore.mdl",
"models/v_butterfly_case_hardened.mdl",
"models/v_butterfly_doppler_ruby.mdl",
"models/v_huntsman_fade.mdl",
"models/v_huntsman_tiger_tooth.mdl",
"models/v_navaja_forestddpat.mdl",
"models/v_navaja_night.mdl",
"models/v_bowie_damascus_steel.mdl",
"models/v_bowie_marble_fade.mdl",
"models/v_noz_miku.mdl"
};
new FlagsKnife[] = { 0, 0, 0, 0, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_D };
new P90Names[][] = {
"Kroliczek",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins",
"P90 \d×\w Skins"
};
new const P90Models[][] = {
"models/v_p90_rabbit.mdl",
"models/v_p90_assimov.mdl",
"models/v_p90_chicken_of_war.mdl",
"models/v_p90_chopper.mdl",
"models/v_p90_death_by_kitty.mdl",
"models/v_p90_emerald_dragon.mdl",
"models/v_p90_grim.mdl",
"models/v_p90_puzzle.mdl",
"models/v_p90_trigon.mdl",
"models/v_p90_miku.mdl"
};
new FlagsP90[] = { 0, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_H, ADMIN_LEVEL_D };
new const weaponSOUND[][] = {
"sound/weapons/blockas1_change1.wav",
"sound/weapons/blockas1_change2.wav",
"sound/weapons/blockas1_reload_loop.wav",
"sound/weapons/blockas2_change1_1.wav",
"sound/weapons/blockas2_change2_1.wav",
"sound/weapons/blockas2_draw.wav",
"sound/weapons/blockas2_idle.wav",
"sound/weapons/blockas2_reload.wav",
"sound/weapons/blockas2_shoot_end.wav",
"sound/weapons/blockas2_shoot_start.wav"
};
new player_item[7][MAX_PLAYERS + 1]
new g_vault
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon", "CurWeapon", "be", "1=1");
register_menucmd(register_menuid("MENU_MAIN"), 1023, "MENU_MAIN_Handler");
register_menucmd(register_menuid("@MENU_KNIFE"), 1023, "@MENU_KNIFE_Handler");
register_menucmd(register_menuid("@MENU_P90"), 1023, "@MENU_P90_Handler");
for(new i = 0; i < sizeof(gcCommands); i++)
register_clcmd(gcCommands[i], "Command_MainMenu");
g_vault = nvault_open("Skins");
}
public client_connect(id) {
LoadsModels(id);
}
public client_disconnected(id)
{
player_item[1][id] = 0;
player_item[2][id] = 0;
}
public plugin_end()
nvault_close(g_vault);
public plugin_precache() {
for (new i = 0; i < sizeof KnifeModels; i++)
precache_model(KnifeModels[i]);
for (new i = 0; i < sizeof P90Models; i++)
precache_model(P90Models[i]);
}
public Command_MainMenu(id){
new szMenu[512], len = 0;
len = formatex(szMenu[len], charsmax(szMenu) - len, "\dSkins Menu^n^n");
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r1. \d» \wSkins \rKnife^n^n");
len += formatex(szMenu[len], charsmax(szMenu) - len, "\r2. \d» \wSkins \rP90 \y(VIP)^n");
len += formatex(szMenu[len], charsmax(szMenu) - len, "^n^n\r0. \wExit");
show_menu(id, (1 << 0)|(1 << 1)|(1 << 2)|(1 << 3)|(1 << 4)|(1 << 5)|(1 << 9), szMenu, -1, "MENU_MAIN");
return PLUGIN_HANDLED;
}
public MENU_MAIN_Handler(id, key)
{
switch(key)
{
case 0: @MENU_KNIFE(id);
case 1: @MENU_P90(id);
case 2: @MENU_M249(id);
case 3: @MENU_XM1014(id);
case 4: @MENU_MP5_TT(id);
case 5: @MENU_MP5_CT(id);
}
}
@MENU_KNIFE(id) {
new Knife = menu_create(fmt("\dSkins \rKnifes\d"), "@MENU_KNIFE_Handler")
for(new i = 0; i < sizeof(KnifeNames); i++){
if(FlagsKnife[i] == ADMIN_LEVEL_H){
menu_additem(Knife , fmt("\d» %s %s", get_user_flags(id) & ADMIN_LEVEL_H ? "\y(VIP)\w" : "\d(VIP)\d", KnifeNames[i]), "", FlagsKnife[i], -1);
}
if(FlagsKnife[i] == ADMIN_LEVEL_D){
menu_additem(Knife , fmt("\d» %s %s", get_user_flags(id) & ADMIN_LEVEL_D ? "\y(MODEL MIKU)\w" : "\d(MODEL MIKU)\d", KnifeNames[i]), "", FlagsKnife[i], -1);
}
if(FlagsKnife[i] == 0){
menu_additem(Knife , fmt("\d»\w %s", KnifeNames[i]), "", FlagsKnife[i], -1);
}
}
menu_setprop(Knife, MPROP_EXITNAME, "Exit");
menu_display(id, Knife);
return PLUGIN_HANDLED;
}
@MENU_KNIFE_Handler(id, Knife, item) {
if (item == MENU_EXIT) {
menu_destroy(Knife);
return PLUGIN_HANDLED;
}
if(FlagsKnife[item] == 0){
player_item[1][id] = item
}
else if(FlagsKnife[item] > 0 && get_user_flags(id) & FlagsKnife[item]){
player_item[1][id] = item
}
Set_Model(id);
SaveModels(id)
menu_destroy(Knife);
return PLUGIN_HANDLED;
}
@MENU_P90(id) {
new P90 = menu_create(fmt("\dSkins \rP90\d"), "@MENU_P90_Handler")
for(new i = 0; i < sizeof(P90Names); i++){
if(FlagsP90[i] == ADMIN_LEVEL_H){
menu_additem(P90 , fmt("\d»\w %s %s", get_user_flags(id) & ADMIN_LEVEL_H ? "\y(VIP)\w" : "\d(VIP)\d", P90Names[i]), "", FlagsP90[i], -1);
}
if(FlagsP90[i] == ADMIN_LEVEL_D){
menu_additem(P90 , fmt("\d»\w %s %s", get_user_flags(id) & ADMIN_LEVEL_D ? "\y(MODEL MIKU)\w" : "\d(MODEL MIKU)\d", P90Names[i]), "", FlagsP90[i], -1);
}
if(FlagsP90[i] == 0){
menu_additem(P90 , fmt("\d»\w %s", P90Names[i]), "", FlagsP90[i], -1);
}
}
menu_setprop(P90, MPROP_EXITNAME, "Exit");
menu_display(id, P90);
return PLUGIN_HANDLED;
}
@MENU_P90_Handler(id, P90, item) {
if (item == MENU_EXIT) {
menu_destroy(P90);
return PLUGIN_HANDLED;
}
if(FlagsP90[item] == 0){
player_item[2][id] = item
}
else if(FlagsP90[item] > 0 && get_user_flags(id) & FlagsP90[item]){
player_item[2][id] = item
}
Set_Model(id);
SaveModels(id);
menu_destroy(P90);
return PLUGIN_HANDLED;
}
public LoadsModels(id){
new pszName[33][64]; get_user_name(id, pszName[id], charsmax(pszName));
new pszValue[128];
if(nvault_get(g_vault, fmt("%s", pszName[id]), pszValue, charsmax(pszValue)))
{
new skinUser[7][32];
parse(pszValue, skinUser[1], charsmax(skinUser), skinUser[2]);
player_item[1][id] = str_to_num(skinUser[1]);
player_item[2][id] = str_to_num(skinUser[2]);
}
return PLUGIN_CONTINUE;
}
public SaveModels(id){
new pszName[33][64]; get_user_name(id, pszName[id], charsmax(pszName));
nvault_set(g_vault, fmt("%s", pszName[id]), fmt("%i %i", player_item[1][id], player_item[2][id]));
return PLUGIN_CONTINUE;
}
public Set_Model(id) {
new piWeapon = get_user_weapon(id);
if (piWeapon == CSW_KNIFE) {
set_pev(id, pev_viewmodel2, KnifeModels[player_item[1][id]]);
}
if(piWeapon == CSW_P90) {
set_pev(id, pev_viewmodel2, P90Models[player_item[2][id]]);
}
return PLUGIN_CONTINUE;
}
public CurWeapon(id) {
if (!is_user_alive(id)) {
return PLUGIN_HANDLED;
}
new weapon = get_user_weapon(id);
switch (weapon) {
case CSW_KNIFE: {
Set_Model(id)
}
case CSW_P90: {
Set_Model(id)
}
}
return PLUGIN_CONTINUE;
}
It's about :
- Using code more wisely,
- optimization,
- shortening the insane functions and lines.
I know, I know, the code is tragic and you can cry over it.
|
|