RSSy MYGO.pl Opublikowano Maj 20, 2024 o 14:15 RSSy Udostępnij Opublikowano Maj 20, 2024 o 14:15 I've been trying to make (Not make but instead combine two skin system because one of them used mysql which was bad, and the other one used nvault which is good) a save system that whenever a map changes or the player leaves the server, the selected skins he chose would remain. Like if he chose a skin and the map changes or he leaves and rejoins, that skin would be selected and not the default ones... Could someone help? Code; #include <amxmodx> #include <engine> #include <fakemeta> #include <cstrike> #include <nvault> #pragma tabsize 0 #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Author" #define KILL_POINT 2 #define HEADSHOT_POINT 5 #define TULAJ ADMIN_LEVEL_G #define FOADMIN ADMIN_LEVEL_B #define ADMIN ADMIN_LEVEL_C #define VIP ADMIN_LEVEL_H enum _:Rangs { Szint[32], Xp[8] }; enum _:GunDatas { M4A1, AK47, AWP, DEAGLE, KNIFE, } new g_SelectedGun[GunDatas][33], g_uPoints[GunDatas][33], g_Wpn[33] new oles[33]; new hudkibe[33]; new const PREFIX[] = "\r-[NME]-" new const C_Perfix[] = "-[NME]-" new vault enum _:DATA { GunName[64], ModelName[128], Points[8], AnimType[8] } new const WeaponM4A1[][DATA] = { {"M4A1 | Alap", "models/v_m4a1.mdl", 0, -1}, {"M4A1 | Neo-Noir", "models/NMESkinek/M4a1/v_m4a1_6.mdl", 0, -1}, {"M4A1 | Nuclear Leak", "models/NMESkinek/M4a1/v_m4a1_7.mdl", 0, -1}, {"M4A1 | Decimator", "models/NMESkinek/M4a1/v_m4a1_9.mdl", 0, -1}, {"M4A1 | White Printstream", "models/NMESkinek/M4a1/v_m4a1_12printfix.mdl", 0, -1}, {"M4A1 | Anime", "models/NMESkinek/M4a1/v_m4a1anime.mdl", 0, -1}, {"M4A1 | Black Printstream", "models/NMESkinek/M4a1/v_m4a1bps.mdl", 0, -1}, {"M4A1 | Purple Attack", "models/NMESkinek/M4a1/m4purpleattack.mdl", 0, -1}, {"M4A1 | Black & Purple", "models/NMESkinek/M4a1/m4a1blackpurple.mdl", 0, -1}, {"M4A1 | Nightmare", "models/NMESkinek/M4a1/v_m4a115.mdl", 0, -1}, {"M4A1 | Galaxy", "models/NMESkinek/M4a1/v_m4a1galaxy.mdl", 0, -1}, {"M4A1 | Desolate Space", "models/NMESkinek/M4a1/v_m4a1desolate.mdl", 0, -1}, {"M4A1 | Icarus Fell", "models/NMESkinek/M4a1/v_m4a1icarus.mdl", 0, -1}, {"M4A1 | Hyper Beast", "models/NMESkinek/M4a1/v_m4a113.mdl", 0, -1} } new const WeaponAK47[][DATA] = { {"AK47 | Alap", "models/v_ak47.mdl", 0, -1}, {"AK47 | Blood Sport", "models/NMESkinek/Ak47/v_ak47_13.mdl", 0, -1}, {"AK47 | Redline", "models/NMESkinek/Ak47/v_ak47_15.mdl", 0, -1}, {"AK47 | Blue Came", "models/NMESkinek/Ak47/v_ak47_16.mdl", 0, -1}, {"AK47 | White Printstream", "models/NMESkinek/Ak47/v_ak47_print.mdl", 0, -1}, {"AK47 | Anime", "models/NMESkinek/Ak47/v_akanime.mdl", 0, -1}, {"AK47 | Bubblegum", "models/NMESkinek/Ak47/v_ak47bubblegum.mdl", 0, -1}, {"AK47 | Black Printstream", "models/NMESkinek/Ak47/v_ak47_18.mdl", 0, -1}, {"AK47 | Inheritance", "models/NMESkinek/Ak47/v_ak47_20.mdl", 0, -1}, {"AK47 | Koi", "models/NMESkinek/Ak47/v_ak47_21.mdl", 0, -1}, {"AK47 | Eyes", "models/NMESkinek/Ak47/v_ak47_19.mdl", 0, -1} } new const WeaponAWP[][DATA] = { {"Awp | Alap", "models/v_awp.mdl", 0, -1}, {"AWP | Dragon Lore", "models/NMESkinek/Awp/v_awp_1.mdl", 0, -1}, {"AWP | Asiimov", "models/NMESkinek/Awp/v_awp_2.mdl", 0, -1}, {"AWP | Dexpota", "models/NMESkinek/Awp/v_awp_3.mdl", 0, -1}, {"AWP | Graphite", "models/NMESkinek/Awp/v_awp_4.mdl", 0, -1}, {"AWP | Raptor", "models/NMESkinek/Awp/v_awp_5.mdl", 0, -1}, {"AWP | Artistic", "models/NMESkinek/Awp/v_awp_6.mdl", 0, -1}, {"AWP | Hyper Beast", "models/NMESkinek/Awp/v_awp_7.mdl", 0, -1}, {"AWP | Fever Dream", "models/NMESkinek/Awp/v_awp_8.mdl", 0, -1}, {"AWP | Tiger Tooth", "models/NMESkinek/Awp/v_awp_9.mdl", 0, -1}, {"AWP | Cyrex", "models/NMESkinek/Awp/v_awp_10.mdl", 0, -1}, {"AWP | Rainbow", "models/NMESkinek/Awp/v_awp_11.mdl", 0, -1}, {"AWP | Southeast Tiger", "models/NMESkinek/Awp/v_awp_12.mdl", 0, -1}, {"AWP | Red Destin", "models/NMESkinek/Awp/v_awp_13.mdl", 0, -1} } new const WeaponDEAGLE[][DATA] = { {"Deagle | Alap", "models/v_deagle.mdl", 0, -1}, {"Deagle | Asiimov", "models/NMESkinek/Deagle/v_deagle_1.mdl", 0, -1}, {"Deagle | Blue Crystal", "models/NMESkinek/Deagle/v_deagle_2.mdl", 0, -1}, {"Deagle | Dragon Lore", "models/NMESkinek/Deagle/v_deagle_3.mdl", 0, -1}, {"Deagle | Fade", "models/NMESkinek/Deagle/v_deagle_4.mdl", 0, -1}, {"Deagle | Ghost", "models/NMESkinek/Deagle/v_deagle_5.mdl", 0, -1}, {"Deagle | Chromatic", "models/NMESkinek/Deagle/v_deagle_6.mdl", 0, -1}, {"Deagle | IDN Paint", "models/NMESkinek/Deagle/v_deagle_7.mdl", 0, -1}, {"Deagle | Pink Haze", "models/NMESkinek/Deagle/v_deagle_8.mdl", 0, -1}, {"Deagle | Rainbow", "models/NMESkinek/Deagle/v_deagle_9.mdl", 0, -1} } new const WeaponKNIFE[][DATA] = { {"Knife | Alap", "models/v_knife.mdl", 0, -1}, {"Karambit | Doppler Phase 3", "models/NMESkinek/kes/v_knife5.mdl", 0, -1}, {"Karambit | Fade", "models/NMESkinek/kes/v_knife4.mdl", 0, -1}, {"Karambit | Eletric Hive", "models/NMESkinek/kes/v_knife3.mdl", 0, -1}, {"Karambit | Psychedelic", "models/NMESkinek/kes/v_knife2.mdl", 0, -1}, {"Bayonet | Prohibition", "models/NMESkinek/kes/v_knife6.mdl", 0, -1}, {"Bayonet | Nathlose", "models/NMESkinek/kes/v_knife7.mdl", 0, -1}, {"Bayonet | Redux", "models/NMESkinek/kes/v_knife8.mdl", 0, -1}, {"Bayonet | Echotek", "models/NMESkinek/kes/v_knife9.mdl", 0, -1}, {"Bayonet | Dystopia", "models/NMESkinek/kes/v_knife10.mdl", 0, -1}, {"M9 Bayonet | Redux", "models/NMESkinek/kes/v_knife11.mdl", 0, -1}, {"M9 Bayonet | Reptilleupted", "models/NMESkinek/kes/v_knife12.mdl", 0, -1}, {"M9 Bayonet | Trojan Horse", "models/NMESkinek/kes/v_knife13.mdl", 0, -1}, {"M9 Bayonet | Diva Knife", "models/NMESkinek/kes/v_knife14.mdl", 0, -1}, {"M9 Bayonet | Polymer", "models/NMESkinek/kes/v_knife15.mdl", 0, -1}, {"Butterfly | Neo Assasin", "models/NMESkinek/kes/v_knife16.mdl", 0, -1}, {"Butterfly | Space", "models/NMESkinek/kes/v_knife17.mdl", 0, -1} } new const MainStrings[][] = { "\yM4A1\w Skins", "\yAK47\w Skins", "\yAWP\w Skins", "\yDeagle\w Skins", "\yKnife\w Skins", } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /menu", "openMainMenu") register_clcmd("nme_skinmenu", "openMainMenu") register_clcmd("say /add", "Addolas") register_event("DeathMsg","Halal","a") register_event("DeathMsg","Halals","a") register_event("CurWeapon", "evChangeWeapon", "be", "1=1") register_impulse(100, "cmdInspectWeap"); register_clcmd("say", "sayhook"); set_task(1.0, "hudrendszer",_,_,_,"b"); vault = nvault_open("Fegyverskin"); } public hudrendszer(id){ if(is_user_alive(id) && hudkibe[id]) { } else { return } } public hudkibekapcs(id) { if(hudkibe[id]) { client_print_color(id, print_team_default, "^4[%s] ^1Kikapcsoltad a hudot.", C_Perfix); hudkibe[id] = false; } else { client_print_color(id, print_team_default, "^4[%s] ^1Bekapcsoltad a hudot.", C_Perfix); hudkibe[id] = true; } } public Halals() { new attacker = read_data(1) new victim = read_data(2) if(attacker == victim) return PLUGIN_HANDLED oles[attacker] ++ return PLUGIN_HANDLED } public Addolas(id) { g_uPoints[M4A1][id] += 300 g_uPoints[AK47][id] += 300 g_uPoints[AWP][id] += 300 g_uPoints[DEAGLE][id] += 300 g_uPoints[KNIFE][id] += 300 } public plugin_precache() { for(new i;i < sizeof(WeaponM4A1); i++) precache_model(WeaponM4A1[i][ModelName]) for(new i;i < sizeof(WeaponAK47); i++) precache_model(WeaponAK47[i][ModelName]) for(new i;i < sizeof(WeaponAWP); i++) precache_model(WeaponAWP[i][ModelName]) for(new i;i < sizeof(WeaponDEAGLE); i++) precache_model(WeaponDEAGLE[i][ModelName]) for(new i;i < sizeof(WeaponKNIFE); i++) precache_model(WeaponKNIFE[i][ModelName]) } public cmdInspectWeap(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; new Wpns = get_user_weapon(id) switch(Wpns) { case CSW_M4A1: { if(WeaponM4A1[g_SelectedGun[M4A1][id]][AnimType] == -1) return PLUGIN_HANDLED; UTIL_PlayWeaponAnimation(id, WeaponM4A1[g_SelectedGun[M4A1][id]][AnimType]); } case CSW_AK47: { if(WeaponAK47[g_SelectedGun[AK47][id]][AnimType] == -1) return PLUGIN_HANDLED; UTIL_PlayWeaponAnimation(id, WeaponAK47[g_SelectedGun[AK47][id]][AnimType]); } case CSW_AWP: { if(WeaponAWP[g_SelectedGun[AWP][id]][AnimType] == -1) return PLUGIN_HANDLED; UTIL_PlayWeaponAnimation(id, WeaponAWP[g_SelectedGun[AWP][id]][AnimType]); } case CSW_DEAGLE: { if(WeaponDEAGLE[g_SelectedGun[DEAGLE][id]][AnimType] == -1) return PLUGIN_HANDLED; UTIL_PlayWeaponAnimation(id, WeaponDEAGLE[g_SelectedGun[DEAGLE][id]][AnimType]); } case CSW_KNIFE: { if(WeaponKNIFE[g_SelectedGun[KNIFE][id]][AnimType] == -1) return PLUGIN_HANDLED; UTIL_PlayWeaponAnimation(id, WeaponKNIFE[g_SelectedGun[KNIFE][id]][AnimType]); } } return PLUGIN_HANDLED } public evChangeWeapon(id) { switch(get_user_weapon(id)) { case CSW_M4A1: entity_set_string(id, EV_SZ_viewmodel, WeaponM4A1[g_SelectedGun[M4A1][id]][ModelName]); case CSW_AK47: entity_set_string(id, EV_SZ_viewmodel, WeaponAK47[g_SelectedGun[AK47][id]][ModelName]); case CSW_AWP: entity_set_string(id, EV_SZ_viewmodel, WeaponAWP[g_SelectedGun[AWP][id]][ModelName]); case CSW_DEAGLE: entity_set_string(id, EV_SZ_viewmodel, WeaponDEAGLE[g_SelectedGun[DEAGLE][id]][ModelName]); case CSW_KNIFE: entity_set_string(id, EV_SZ_viewmodel, WeaponKNIFE[g_SelectedGun[KNIFE][id]][ModelName]); } return PLUGIN_CONTINUE; } public Halal() { new iAttacker = read_data(1) new iVictim = read_data(2) new iHs = read_data(3) if(iAttacker == iVictim || iAttacker == 0) return PLUGIN_HANDLED new iPoints = iHs ? HEADSHOT_POINT : KILL_POINT switch(get_user_weapon(iAttacker)) { case CSW_AK47: g_uPoints[AK47][iAttacker] += iPoints case CSW_M4A1: g_uPoints[M4A1][iAttacker] += iPoints case CSW_AWP: g_uPoints[AWP][iAttacker] += iPoints case CSW_DEAGLE: g_uPoints[DEAGLE][iAttacker] += iPoints case CSW_KNIFE: g_uPoints[KNIFE][iAttacker] += iPoints } return PLUGIN_CONTINUE; } public openMainMenu(id) { new szMenu[121], String[6] formatex(szMenu, charsmax(szMenu), "\r-[NME]- \wSkin Menu^n\y< \rChoose your model \y>", C_Perfix) new menu = menu_create(szMenu, "hMainMenu"); for(new i ;i < sizeof(MainStrings); i++) { num_to_str(i, String, 5) formatex(szMenu, charsmax(szMenu), MainStrings[i]); menu_additem(menu, szMenu, String); } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public hMainMenu(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } g_Wpn[id] = item+1 openskinrangmenu(id) menu_destroy(menu); return PLUGIN_HANDLED; } public openskinrangmenu(id) { new szMenu[121], szMenu2[64], String[15] if(g_Wpn[id] == 1) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your M4A1 model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[M4A1][id]) else if(g_Wpn[id] == 2) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your AK47 model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[AK47][id]) else if(g_Wpn[id] == 3) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your AWP model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[AWP][id]) else if(g_Wpn[id] == 4) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your DEAGLE model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[DEAGLE][id]) else if(g_Wpn[id] == 5) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your KNIFE model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[KNIFE][id]) new menu = menu_create(szMenu, "hSkinChooser"); if(g_Wpn[id] == 1) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your M4A1 model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[M4A1][id]) if(g_Wpn[id] == 2) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your AK47 model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[AK47][id]) if(g_Wpn[id] == 3) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your AWP model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[AWP][id]) if(g_Wpn[id] == 4) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your DEAGLE model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[DEAGLE][id]) if(g_Wpn[id] == 5) formatex(szMenu, charsmax(szMenu), "%s \w%s^n\y< \rChoose your KNIFE model \y>", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[KNIFE][id]) if(g_Wpn[id] == 1) { for(new i; i < sizeof(WeaponM4A1); i++) { num_to_str(i, String, 5) formatex(szMenu2, charsmax(szMenu2), "", WeaponM4A1[i][Points]); formatex(szMenu, charsmax(szMenu), "%s %s", WeaponM4A1[i][GunName], g_SelectedGun[M4A1][id] == i ? "\y|Active|": szMenu2); menu_additem(menu, szMenu, String); } } else if(g_Wpn[id] == 2) { for(new i; i < sizeof(WeaponAK47); i++) { num_to_str(i, String, 5) formatex(szMenu2, charsmax(szMenu2), "", WeaponAK47[i][Points]); formatex(szMenu, charsmax(szMenu), "%s %s", WeaponAK47[i][GunName], g_SelectedGun[AK47][id] == i ? "\y|Active|": szMenu2); menu_additem(menu, szMenu, String); } } else if(g_Wpn[id] == 3) { for(new i; i < sizeof(WeaponAWP); i++) { num_to_str(i, String, 5) formatex(szMenu2, charsmax(szMenu2), "", WeaponAWP[i][Points]); formatex(szMenu, charsmax(szMenu), "%s %s", WeaponAWP[i][GunName], g_SelectedGun[AWP][id] == i ? "\y|Active|": szMenu2); menu_additem(menu, szMenu, String); } } else if(g_Wpn[id] == 4) { for(new i; i < sizeof(WeaponDEAGLE); i++) { num_to_str(i, String, 5) formatex(szMenu2, charsmax(szMenu2), "", WeaponDEAGLE[i][Points]); formatex(szMenu, charsmax(szMenu), "%s %s", WeaponDEAGLE[i][GunName], g_SelectedGun[DEAGLE][id] == i ? "\y|Active|": szMenu2); menu_additem(menu, szMenu, String); } } else if(g_Wpn[id] == 5) { for(new i; i < sizeof(WeaponKNIFE); i++) { num_to_str(i, String, 5) formatex(szMenu2, charsmax(szMenu2), "", WeaponKNIFE[i][Points]); formatex(szMenu, charsmax(szMenu), "%s %s", WeaponKNIFE[i][GunName], g_SelectedGun[KNIFE][id] == i ? "\y|Active|": szMenu2); menu_additem(menu, szMenu, String); } } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public hSkinChooser(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(g_Wpn[id]) { case 1: { if(g_uPoints[M4A1][id] >= WeaponM4A1[item][Points]) { g_SelectedGun[M4A1][id] = item client_print_color(id, print_team_default, "^4%s ^1You successfully activated the skin!", C_Perfix) } else client_print_color(id, print_team_default, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", C_Perfix) } case 2: { if(g_uPoints[AK47][id] >= WeaponAK47[item][Points]) { g_SelectedGun[AK47][id] = item client_print_color(id, print_team_default, "^4%s ^1You successfully activated the skin!", C_Perfix) } else client_print_color(id, print_team_default, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", C_Perfix) } case 3: { if(g_uPoints[AWP][id] >= WeaponAWP[item][Points]) { g_SelectedGun[AWP][id] = item client_print_color(id, print_team_default, "^4%s ^1You successfully activated the skin!", C_Perfix) } else client_print_color(id, print_team_default, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", C_Perfix) } case 4: { if(g_uPoints[DEAGLE][id] >= WeaponDEAGLE[item][Points]) { g_SelectedGun[DEAGLE][id] = item client_print_color(id, print_team_default, "^4%s ^1You successfully activated the skin!", C_Perfix) } else client_print_color(id, print_team_default, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", C_Perfix) } case 5: { if(g_uPoints[KNIFE][id] >= WeaponKNIFE[item][Points]) { g_SelectedGun[KNIFE][id] = item client_print_color(id, print_team_default, "^4%s ^1You successfully activated the skin!", C_Perfix) } else client_print_color(id, print_team_default, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", C_Perfix) } } menu_destroy(menu); return PLUGIN_HANDLED; } stock UTIL_PlayWeaponAnimation(const Player, const Sequence) { set_pev(Player, pev_weaponanim, Sequence) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player) write_byte(Sequence) write_byte(pev(Player, pev_body)) message_end() } public mentes(id) { new name[32]; get_user_name(id, name, 31); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s", name); format(vaultdata, 255, "%i", oles[id]); if (!nvault_set(vault, vaultkey, vaultdata)) { client_print(id, print_console, "Failed to save selected skin to vault!"); } return PLUGIN_CONTINUE; } public betoltes(id) { new name[32]; get_user_name(id, name, 31); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s", name); if (nvault_get(vault, vaultkey, vaultdata, 255)) { replace_all(vaultdata, 255, "#", " "); new a_o[32]; parse(vaultdata, a_o, 31); oles[id] = str_to_num(a_o); } else { client_print(id, print_console, "Failed to load selected skin from vault!"); } return PLUGIN_CONTINUE; } public client_putinserver(id) { // Reset selected skins... // Load selected skin from vault... betoltes(id); // Apply selected skin... evChangeWeapon(id); } public client_connect(id) { // Load selected skin... betoltes(id); // Apply selected skin... evChangeWeapon(id); } public client_disconnect(id) { // Save selected skin... mentes(id); } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs18 \n\\ par } */ Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi