RSSy MYGO.pl Opublikowano Sierpień 17, 2022 o 12:27 RSSy Udostępnij Opublikowano Sierpień 17, 2022 o 12:27 Hello, i got a plugin which has a problem that cause players not to enter the server even though the server is running. It makes players quit on the half of loading. Here how the problem occurs: When i add { "Abstract", 400, "models/usp/v_usp_abstract.mdl", "models/p_usp.mdl" }, to new const USPSkins[][skin_e], i can't enter the server even though it's running. There is no model error or 512 limit. Code: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <engine> #include <hamsandwich> #include <fvault> #include <fakemeta> #define MAX_PLAYERS 32 #pragma compress 1 native back_skin_menu( id ) new const SkinVault[] = "DeathRun_USP_Knife"; new g_bitOwnedUSPs[MAX_PLAYERS+1], g_iEquippedUSP[MAX_PLAYERS+1] new g_bitOwnedKnifes[MAX_PLAYERS+1], g_iEquippedKnife[MAX_PLAYERS+1] #define BIT(%0) (1<<%0) native get_dr_points( id ) native set_dr_points( id, amount ) new g_iUID[ 33 ] enum _:skin_e { SKIN_NAME[32], SKIN_COST, SKIN_V_MODEL[64], SKIN_P_MODEL[64], }; new const USPSkins[][skin_e] = { { "Default USP" }, // Always keep this USP { "Fov USP", 100, "models/usp/v_usp_fov.mdl", "models/p_usp.mdl" }, { "Laser USP", 150, "models/usp/v_usp_laser.mdl", "models/p_usp.mdl" }, { "No Hand USP", 200, "models/usp/v_no_hand.mdl", "models/p_usp.mdl" }, { "Chrome Slide", 250, "models/usp/v_chrome_slide.mdl", "models/p_usp.mdl" }, { "Guardian", 300, "models/usp/v_guardian.mdl", "models/p_usp.mdl" }, { "Black Sleeve", 350, "models/usp/v_black_sleeve.mdl", "models/p_usp.mdl" }, { "Brutal Sleeve", 380, "models/usp/v_brutal_sleeve.mdl", "models/p_usp.mdl" }, }; new const KnifeSkins[][skin_e] = { { "Default Knife" }, // Always keep this Knife { "Fov Knife", 100, "models/knife/v_knife_fov.mdl", "models/p_knife.mdl" }, { "Spiderman", 150, "models/knife/v_spiderman.mdl", "models/p_knife.mdl" }, { "Blue", 200, "models/knife/v_blue_default.mdl", "models/p_knife.mdl" }, { "Veteran", 250, "models/knife/v_veteran.mdl", "models/p_knife.mdl" }, { "Among Us", 300, "models/knife/v_among.mdl", "models/p_knife.mdl" }, { "Gray KZ", 400, "models/knife/v_graykz.mdl", "models/p_knife.mdl" }, { "Fire Carbon", 450, "models/knife/v_fire_carbon.mdl", "models/p_knife.mdl" }, { "Tattoo", 550, "models/knife/v_tattoo.mdl", "models/p_knife.mdl" }, { "Tattoo White", 600, "models/knife/v_tattoo_white.mdl", "models/p_knife.mdl" }, { "Black&White", 650, "models/knife/v_blackwhite.mdl", "models/p_knife.mdl" }, { "Blue Lori", 700, "models/knife/v_bluelori.mdl", "models/p_knife.mdl" }, { "Orange Commander", 750, "models/knife/v_orangecoma.mdl", "models/p_knife.mdl" }, { "Venom", 800, "models/knife/v_venom.mdl", "models/p_knife.mdl" }, { "Kreedz", 850, "models/knife/v_kz.mdl", "models/p_knife.mdl" }, { "Foot Red", 900, "models/knife/v_footred.mdl", "models/p_knife.mdl" }, { "Razer", 1000, "models/knife/v_razer.mdl", "models/p_knife.mdl" }, { "Sharp", 1500, "models/knife/v_sharp.mdl", "models/p_knife.mdl" }, { "Bayonet Safari", 2000, "models/knife/v_bayonet_safari.mdl", "models/p_knife.mdl" }, }; public plugin_init() { register_plugin( "DR Usp/Knife Menu", "1.0", "author" ) RegisterHam( Ham_Item_Deploy, "weapon_usp", "CUSP_Deploy_Post", true ) RegisterHam( Ham_Item_Deploy, "weapon_knife", "CKnife_Deploy_Post", true ) register_dictionary( "deathrun.txt" ) set_task( 3.0, "curl_example", 0 ) } public plugin_natives() { register_native( "usp_menu", "USPMenu", 1 ) register_native( "knife_menu", "KnifeMenu", 1 ) } public plugin_precache() { for (new i = 0; i < sizeof USPSkins; i++) { if (USPSkins[i][SKIN_V_MODEL][0]) precache_model(USPSkins[i][SKIN_V_MODEL]); if (USPSkins[i][SKIN_P_MODEL][0]) precache_model(USPSkins[i][SKIN_P_MODEL]); } for( new i; i < sizeof KnifeSkins; i++ ) { if( KnifeSkins[ i ][ SKIN_V_MODEL ][ 0 ] ) precache_model( KnifeSkins[ i ][ SKIN_V_MODEL ] ) if( KnifeSkins[ i ][ SKIN_P_MODEL ][ 0 ] ) precache_model( KnifeSkins[ i ][ SKIN_P_MODEL ] ) } } public client_putinserver( id ) { g_iUID[ id ] = get_user_userid( id ) g_bitOwnedUSPs[ id ] = 0; g_iEquippedUSP[ id ] = 0; g_bitOwnedKnifes[ id ] = 0 g_iEquippedKnife[ id ] = 0 if( !is_user_bot( id ) || !is_user_hltv( id ) ) LoadPlayerData(id, g_iUID[ id ]); } public client_disconnected( id ) { if( g_bitOwnedUSPs[ id ] != 0 || g_bitOwnedKnifes[ id ] != 0 ) SavePlayerData(id, g_iUID[ id ] ); } LoadPlayerData(id, uid) { new szAuthId[35]; get_user_authid(id, szAuthId, charsmax(szAuthId)); new uid1 = get_user_userid( id ) if (!szAuthId[0]) return; new szBuffer[56], data[5][15]; if (fvault_get_data(SkinVault, szAuthId, szBuffer, charsmax(szBuffer))) { if( uid1 != uid ) return parse(szBuffer, data[0], charsmax(data[]), data[1], charsmax(data[]), data[2], charsmax(data[]), data[3], charsmax(data[])); g_iEquippedUSP[id] = str_to_num(data[0]); g_bitOwnedUSPs[id] = str_to_num(data[1]); g_iEquippedKnife[id] = str_to_num(data[2]); g_bitOwnedKnifes[id] = str_to_num(data[3]); } } SavePlayerData(id, uid) { new szAuthId[35]; get_user_authid(id, szAuthId, charsmax(szAuthId)); new szBuffer[56]; if( uid == get_user_userid( id ) ) { formatex(szBuffer, charsmax(szBuffer), "%d %d %d %d", g_iEquippedUSP[id], g_bitOwnedUSPs[id], g_iEquippedKnife[id], g_bitOwnedKnifes[id]); fvault_pset_data(SkinVault, szAuthId, szBuffer); } } public USPMenu(id) { new szBuffer[96]; //formatex(szBuffer, charsmax(szBuffer), "USP Skins^n\dYour Points:\y %d", get_dr_points( id )); formatex(szBuffer, charsmax(szBuffer), fmt( "%L", id, "USP_SKIN_TITLE", get_dr_points( id ))); new iMenu = menu_create(szBuffer, "USPMenu_Handler"); new szItemInfo[3], iLen; for (new i = 0; i < sizeof USPSkins; i++) { iLen = 0; if (!(g_bitOwnedUSPs[id] & BIT(i)) && USPSkins[i][SKIN_COST] && get_dr_points( id ) < USPSkins[i][SKIN_COST]) iLen = copy(szBuffer, charsmax(szBuffer), "\d"); else if (g_iEquippedUSP[id] == i) iLen = copy(szBuffer, charsmax(szBuffer), "\r"); iLen += copy(szBuffer[iLen], charsmax(szBuffer)-iLen, USPSkins[i][SKIN_NAME]); if (g_bitOwnedUSPs[id] & BIT(i)) //iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, "\y [ OWNED ]" ); iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, fmt( "%L", id, "OWNED")); else if (USPSkins[i][SKIN_COST]) //iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, " [ %d Points ]", USPSkins[i][SKIN_COST] ); iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, fmt( " %L", id, "POINTS", USPSkins[i][SKIN_COST] )); num_to_str(i, szItemInfo, charsmax(szItemInfo)); menu_additem(iMenu, szBuffer, szItemInfo); } menu_display(id, iMenu) } public USPMenu_Handler(id, iMenu, iItem) { if (iItem == MENU_EXIT) { menu_destroy(iMenu); back_skin_menu( id ) return PLUGIN_HANDLED; } new szItemInfo[3], iUSPId, dummy; menu_item_getinfo(iMenu, iItem, dummy, szItemInfo, charsmax(szItemInfo), _, _, dummy); menu_destroy(iMenu); iUSPId = str_to_num(szItemInfo); if (g_iEquippedUSP[id] == iUSPId) { //ColorChat(id, RED, "^4[DR]^1 You already have this skin." ); client_print_color(id, print_chat, "^4[DR] %L", LANG_PLAYER, "ALR_SKIN" ) USPMenu(id); return PLUGIN_HANDLED; } if (!(g_bitOwnedUSPs[id] & BIT(iUSPId))) { if (USPSkins[iUSPId][SKIN_COST] && get_dr_points( id ) < USPSkins[iUSPId][SKIN_COST]) { //ColorChat(id, RED, "^4[DR]^1 You don't have enough points." ); client_print_color(id, print_chat, "^4[DR] %L", LANG_PLAYER, "NO_POINT" ) USPMenu(id); return PLUGIN_HANDLED; } set_dr_points( id, -USPSkins[iUSPId][SKIN_COST] ) g_bitOwnedUSPs[id] |= BIT(iUSPId); //client_print_color(0, print_chat, "^4[DR]^3 %n^1 bought^3 %s^1.", id, USPSkins[iUSPId][SKIN_NAME]); client_print_color(0, print_chat, "^4[DR] %L", LANG_PLAYER, "BOUGHT_SKIN", id, USPSkins[iUSPId][SKIN_NAME]); } g_iEquippedUSP[id] = iUSPId; if (is_user_alive(id)) { new pActiveItem = get_pdata_cbase(id, 373, 5); if (is_valid_ent(pActiveItem) && cs_get_weapon_id(pActiveItem) == CSW_USP) { ExecuteHamB(Ham_Item_Holster, pActiveItem, 0); ExecuteHamB(Ham_Item_Deploy, pActiveItem); } } USPMenu(id); return PLUGIN_HANDLED; } public KnifeMenu(id) { new szBuffer[96]; //formatex(szBuffer, charsmax(szBuffer), "Knife Skins^n\dYour Points:\y %d", get_dr_points( id )); formatex(szBuffer, charsmax(szBuffer), fmt( "%L", id, "KNIFE_SKIN_TITLE", get_dr_points( id ))); new iMenu = menu_create(szBuffer, "KnifeMenu_Handler"); new szItemInfo[3], iLen; for (new i = 0; i < sizeof KnifeSkins; i++) { iLen = 0; if (!(g_bitOwnedKnifes[id] & BIT(i)) && KnifeSkins[i][SKIN_COST] && get_dr_points( id ) < KnifeSkins[i][SKIN_COST]) iLen = copy(szBuffer, charsmax(szBuffer), "\d"); else if (g_iEquippedKnife[id] == i) iLen = copy(szBuffer, charsmax(szBuffer), "\r"); iLen += copy(szBuffer[iLen], charsmax(szBuffer)-iLen, KnifeSkins[i][SKIN_NAME]); if (g_bitOwnedKnifes[id] & BIT(i)) //iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, " [ OWNED ]" ); iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, fmt( "%L", id, "OWNED")); else if (KnifeSkins[i][SKIN_COST]) //iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, " [ %d Points ]", KnifeSkins[i][SKIN_COST] ); iLen += formatex(szBuffer[iLen], charsmax(szBuffer)-iLen, fmt( " %L", id, "POINTS", KnifeSkins[i][SKIN_COST] )); num_to_str(i, szItemInfo, charsmax(szItemInfo)); menu_additem(iMenu, szBuffer, szItemInfo); } menu_display(id, iMenu) } public KnifeMenu_Handler(id, iMenu, iItem) { if (iItem == MENU_EXIT) { menu_destroy(iMenu); back_skin_menu( id ) return PLUGIN_HANDLED; } new szItemInfo[3], iKnifeId, dummy; menu_item_getinfo(iMenu, iItem, dummy, szItemInfo, charsmax(szItemInfo), _, _, dummy); menu_destroy(iMenu); iKnifeId = str_to_num(szItemInfo); if (g_iEquippedKnife[id] == iKnifeId) { //ColorChat(id, RED, "^4[DR]^1 You already have this skin." ); client_print_color(id, print_chat, "^4[DR] %L", LANG_PLAYER, "ALR_SKIN" ) KnifeMenu(id); return PLUGIN_HANDLED; } if (!(g_bitOwnedKnifes[id] & BIT(iKnifeId))) { if (KnifeSkins[iKnifeId][SKIN_COST] && get_dr_points( id ) < KnifeSkins[iKnifeId][SKIN_COST]) { //ColorChat(id, RED, "^4[DR]^1 You don't have enough points." ); client_print_color(id, print_chat, "^4[DR] %L", LANG_PLAYER, "NO_POINT" ) KnifeMenu(id); return PLUGIN_HANDLED; } set_dr_points( id, -KnifeSkins[iKnifeId][SKIN_COST] ) g_bitOwnedKnifes[id] |= BIT(iKnifeId); //client_print_color(0, print_chat, "^4[DR]^3 %n^1 bought^3 %s^1.", id, KnifeSkins[iKnifeId][SKIN_NAME]); client_print_color(id, print_chat, "^4[DR] %L", LANG_PLAYER, "BOUGHT_SKIN", id, KnifeSkins[iKnifeId][SKIN_NAME]) } g_iEquippedKnife[id] = iKnifeId; if (is_user_alive(id)) { new pActiveItem = get_pdata_cbase(id, 373, 5); if (is_valid_ent(pActiveItem) && cs_get_weapon_id(pActiveItem) == CSW_KNIFE) { ExecuteHamB(Ham_Item_Holster, pActiveItem, 0); ExecuteHamB(Ham_Item_Deploy, pActiveItem); } } KnifeMenu(id); return PLUGIN_HANDLED; } public CUSP_Deploy_Post(iEntity) { new id = get_pdata_cbase(iEntity, 41, 4); new iUSPId = g_iEquippedUSP[id]; if (USPSkins[iUSPId][SKIN_V_MODEL][0]) entity_set_string(id, EV_SZ_viewmodel, USPSkins[iUSPId][SKIN_V_MODEL]); if (USPSkins[iUSPId][SKIN_P_MODEL][0]) entity_set_string(id, EV_SZ_weaponmodel, USPSkins[iUSPId][SKIN_P_MODEL]); } public CKnife_Deploy_Post(iEntity) { new id = get_pdata_cbase(iEntity, 41, 4); new iKnifeId = g_iEquippedKnife[id]; if (KnifeSkins[iKnifeId][SKIN_V_MODEL][0]) entity_set_string(id, EV_SZ_viewmodel, KnifeSkins[iKnifeId][SKIN_V_MODEL]); if (KnifeSkins[iKnifeId][SKIN_P_MODEL][0]) entity_set_string(id, EV_SZ_weaponmodel, KnifeSkins[iKnifeId][SKIN_P_MODEL]); } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi