Member
|
05-29-2022
, 22:45
Re: Improving and optimizing this thing
|
#20
|
Quote:
Originally Posted by Bugsy
If this is over your head then stick with individual arrays, this isn't really going to benefit functionality, it's more of a code readability/organization type of change.
|
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" };
enum Knives {
DefaultKnife,
SomeKnife1,
SomeKnife2
}
enum P90s
{
DefaultP90,
SomeP901,
SomeP902
}
enum ItemData {
ItemName[ 64 ],
ItemModel[ 64 ],
ItemFlags
}
new const KnivesItems[ Knives ][ ItemData ] = {
{ "Podstawowy" , "models/v_knife.mdl" , 0 },
{ "Zwykly \d×\w Tajga" , "models/PB_GH/KNIFE_GH/v_knife_boreal_forest.mdl" , 0 },
{ "Zwykly \d×\w Siatka safari" , "models/PB_GH/KNIFE_GH/v_knife_safari_mesh.mdl" , 0 }
};
new const P90Items[ P90s ][ ItemData ] =
{
{ "Podstawowy" , "models/PB_GH/P90_GH/v_p90_rabbit.mdl" , 0 },
{ "P90 \d×\w Asiimov" , "models/PB_GH/P90_GH/v_p90_assimov.mdl" , 0 },
{ "P90 \d×\w Wojenny kurczak" , "models/PB_GH/P90_GH/v_p90_chicken_of_war.mdl" , 0 }
};
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[ 3 ][ 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("PB_Skins_dev");
}
public client_connect( index ) {
LoadsModels( index );
}
public client_disconnected( index ) {
player_item[ 1 ][ index ] = 0;
player_item[ 2 ][ index ] = 0;
}
public plugin_end()
nvault_close(g_vault);
public plugin_precache() {
for ( new Knives:kKnifeID = DefaultKnife ; kKnifeID < Knives ; kKnifeID++ ) {
precache_model( KnivesItems[ kKnifeID ][ ItemModel ] );
}
for ( new P90s:pP90ID = DefaultP90 ; pP90ID < P90s ; pP90ID++ ) {
precache_model( P90Items[ pP90ID ][ ItemModel ] );
}
for (new i = 0; i < sizeof weaponSOUND; i++)
precache_generic(weaponSOUND[i]);
}
public Command_MainMenu( index ){
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( index, (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( index, key)
{
switch(key)
{
case 0: @MENU_KNIFE( index );
case 1: @MENU_P90( index );
}
}
@MENU_KNIFE( index ) {
new Knife = menu_create(fmt("\dPaintball - GreenHaze.pl^n\r[PB] \wWybor skina do \rNOZA\d"), "@MENU_KNIFE_Handler")
for(new Knives:i = 0; i < Knives; i++) {
if(KnivesItems[i][ ItemFlags ] == ADMIN_LEVEL_H){
menu_additem(Knife , fmt("\d» %s %s", get_user_flags( index ) & ADMIN_LEVEL_H ? "\y(VIP)\w" : "\d(VIP)\d", KnivesItems[i][ ItemName ]), "", KnivesItems[i][ ItemFlags ], -1);
}
if(KnivesItems[i][ ItemFlags ] == ADMIN_LEVEL_D){
menu_additem(Knife , fmt("\d» %s %s", get_user_flags( index ) & ADMIN_LEVEL_D ? "\y(MODEL MIKU)\w" : "\d(MODEL MIKU)\d", KnivesItems[i][ ItemName ]), "", KnivesItems[i][ ItemFlags ], -1);
}
if(KnivesItems[i][ ItemFlags ] == 0){
menu_additem(Knife , fmt("\d»\w %s", KnivesItems[i][ ItemName ]), "", KnivesItems[i][ ItemFlags ], -1);
}
}
menu_setprop(Knife, MPROP_EXITNAME, "Wyjscie");
menu_setprop(Knife, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(Knife, MPROP_NEXTNAME, "Nastepna strona");
menu_display( index, Knife );
return PLUGIN_HANDLED;
}
@MENU_KNIFE_Handler( index, Knife, item ) {
if (item == MENU_EXIT) {
menu_destroy(Knife);
return PLUGIN_HANDLED;
}
if(KnivesItems[ Knives:item ][ ItemFlags ] == 0) {
player_item[ 1 ][ index ] = item
}
else if(KnivesItems[ Knives:item ][ ItemFlags ] > 0 && get_user_flags( index ) & KnivesItems[ Knives:item ][ ItemFlags ]){
player_item[ 1 ][ index ] = item
}
SetsModels( index );
SavesModels( index )
menu_destroy(Knife);
return PLUGIN_HANDLED;
}
@MENU_P90(index) {
new P90 = menu_create(fmt("\dSkins \rP90\d"), "@MENU_P90_Handler")
for(new P90s:i = 0; i < P90s; i++) {
if(P90Items[i][ ItemFlags ] == ADMIN_LEVEL_H){
menu_additem(P90 , fmt("\d» %s %s", get_user_flags( index ) & ADMIN_LEVEL_H ? "\y(VIP)\w" : "\d(VIP)\d", P90Items[i][ ItemName ]), "", P90Items[i][ ItemFlags ], -1);
}
if(P90Items[i][ ItemFlags ] == ADMIN_LEVEL_D){
menu_additem(P90 , fmt("\d» %s %s", get_user_flags( index ) & ADMIN_LEVEL_D ? "\y(MODEL MIKU)\w" : "\d(MODEL MIKU)\d", P90Items[i][ ItemName ]), "", P90Items[i][ ItemFlags ], -1);
}
if(P90Items[i][ ItemFlags ] == 0){
menu_additem(P90 , fmt("\d»\w %s", P90Items[i][ ItemName ]), "", P90Items[i][ ItemFlags ], -1);
}
}
menu_setprop(P90, MPROP_EXITNAME, "Exit");
menu_display(index, P90);
return PLUGIN_HANDLED;
}
@MENU_P90_Handler(index, P90, item) {
if (item == MENU_EXIT) {
menu_destroy(P90);
return PLUGIN_HANDLED;
}
if(P90Items[ P90s:item ][ ItemFlags ] == 0) {
player_item[ 2 ][ index ] = item
}
else if(P90Items[ P90s:item ][ ItemFlags ] > 0 && get_user_flags( index ) & P90Items[ P90s:item ][ ItemFlags ]) {
player_item[ 2 ][ index ] = item
}
SetsModels(index);
SavesModels(index);
menu_destroy(P90);
return PLUGIN_HANDLED;
}
public LoadsModels( index ){
new pszName[33][64]; get_user_name( index, pszName[ index ], charsmax(pszName));
new pszValue[128];
if(nvault_get(g_vault, fmt("%s", pszName[ index ]), pszValue, charsmax(pszValue)))
{
new skinUser[7][32];
parse(pszValue, skinUser[1], charsmax(skinUser), skinUser[2]);
player_item[ 1 ][ index ] = str_to_num(skinUser[1]);
player_item[ 2 ][ index ] = str_to_num(skinUser[2]);
}
return PLUGIN_CONTINUE;
}
public SavesModels( index ){
new pszName[33][64]; get_user_name(index, pszName[ index ], charsmax(pszName));
nvault_set(g_vault, fmt("%s", pszName[ index ]), fmt("%i %i", player_item[ 1 ][ index ], player_item[ 2 ][ index ]));
return PLUGIN_CONTINUE;
}
public SetsModels( index ) {
if ( !is_user_connected( index ) ) {
return PLUGIN_HANDLED;
}
switch( get_user_weapon( index ) ) {
case CSW_KNIFE: {
set_pev( index, pev_viewmodel2, KnivesItems[ Knives:player_item[ 1 ][ index ] ][ ItemModel ] );
}
case CSW_P90: {
set_pev( index, pev_viewmodel2, P90Items[ P90s:player_item[ 2 ][ index ] ][ ItemModel ] );
}
}
return PLUGIN_CONTINUE;
}
public CurWeapon( index ) {
if ( !is_user_connected( index ) ) {
return PLUGIN_HANDLED;
}
switch( get_user_weapon( index ) ) {
case CSW_KNIFE, CSW_P90: {
SetsModels( index );
}
}
return PLUGIN_CONTINUE;
}
Do you think this is okay? The tag_mismatch is just occurring in lines 127 and 172.
|
|