[AMXX 1.10] Weapon Models Manager

Плагин предоставляет возможность заменять скины оружия, а также взаимодействовать с системой при помощи API.
2025-09-05-134630_1920x1080_scrot-fs8.webp2025-09-05-134640_1920x1080_scrot-fs8.webp
API:
C-подобный:
#if defined _WMM_included
    #endinput
#endif
#define _WMM_included

enum _: structExtraItems {
     weaponName[16], itemName[64],
     vModel[64], subVModel, animVModel,
     pModel[64], subPModel, animPModel,
     wModel[64], subWModel, animWModel
};

enum _: structForwardId {
     itemDeploy = 1,
     itemDrop,
     itemTake,
     ItemSetModel
};

/*
 * Register Extra Item in Weapon Models Manager
 *
 * return extraItemIndex
 */
native wmm_register_extra_item(Data[structExtraItems]);

/*
 * Give Extra Item for Player
 */
native wmm_give_extra_item(playerIndex, extraItemIndex);

/*
 * Get Extra item Name
 *
 * return ItemName[]
 */
native wmm_get_extra_item_name(extraItemIndex, itemName[], itemLen);

/*
 * Logical Check is Extra Item?
 *
 * return True/False
 */
native wmm_is_extra_item(extraItemIndex);

/*
 * iArg1, iArg2, iArg3, iArg4 returns integer values
 *
 * If value = -1 (argument not used in this forward)
 *
 * Execute Weapon Models Manager forwards...
 */
forward wmm_forwards(ForwardId, iArg1, iArg2, iArg3, iArg4);

Пример использования
C-подобный:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <WMM>

const NumItem = 3;
new g_iWeaponIds[NumItem];
new g_itemList[NumItem][structExtraItems] = {
    {"weapon_ak47", "AK47 Nightwish", "models/PE999/v_nw_ak47.mdl", 0, 0, "models/PE999/p_nw_ak47.mdl", 0, 0, "models/PE999/w_nw_ak47.mdl", 0, 0},
    {"weapon_m4a1", "M4A1 Nuclear", "models/PE999/v_nl_m4a1.mdl", 0, 0, "models/PE999/p_nl_m4a1.mdl", 0, 0, "models/PE999/w_nl_m4a1.mdl", 0, 0},
    {"weapon_awp", "AWP Desert Eagle", "models/PE999/v_dh_awp.mdl", 0, 0, "models/PE999/p_dh_awp.mdl", 0, 0, "models/PE999/w_dh_awp.mdl", 0, 0}
}
new g_ammoList[][] = {
    {CSW_AK47, 120},
    {CSW_M4A1, 120},
    {CSW_AWP, 60}
}

public plugin_natives() {
    register_native("wmm_open_menu_1", "_wmm_open_menu_1", false);
}

public _wmm_open_menu_1(iPlugin, iParams) {
    ShowMenu(get_param(1));
}

public plugin_precache() {
    for(new i = 0; i < NumItem; i++) {
        g_iWeaponIds[i] = wmm_register_extra_item(g_itemList[i])
    }
}

public ShowMenu(id) {
    if(!is_user_alive(id)) {
        return 1;
    }

    new Str[32], Num[3];
    new iMenu = menu_create("\rБери пушку!\w!\y!", "MenuHandler");
 
    for(new i = 0; i < NumItem; i++) {
        formatex(Str, charsmax(Str), "\r%s", g_itemList[i][itemName]);
        formatex(Num, charsmax(Num), "%d", (i + 1));
        menu_additem(iMenu, Str, Num);
    }
 
    menu_setprop(iMenu, MPROP_EXITNAME, "\yЗакрыть");

    return menu_display(id, iMenu, 0);
}

public MenuHandler(id, iMenu, iItem) {
    if(iItem == MENU_EXIT) {
        menu_destroy(iMenu);
        return 1;
    }
 
    new Num[3], itemId;
    menu_item_getinfo(iMenu, iItem, _, Num, charsmax(Num));

    itemId = str_to_num(Num) - 1;
    wmm_give_extra_item(id, g_iWeaponIds[itemId]);
    fm_set_user_bpammo(id, g_ammoList[itemId][0], g_ammoList[itemId][1]);

    return 0;
}

stock fm_set_user_bpammo(userId, iWeaponId, iAmount) {
    new iOffset;
    switch(iWeaponId) {
        case CSW_AWP: iOffset = 377;
        case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378;
        case CSW_M249: iOffset = 379;
        case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: iOffset = 380;
        case CSW_M3, CSW_XM1014: iOffset = 381;
        case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382;
        case CSW_FIVESEVEN, CSW_P90: iOffset = 383;
        case CSW_DEAGLE: iOffset = 384;
        case CSW_P228: iOffset = 385;
        case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386;
        case CSW_FLASHBANG: iOffset = 387;
        case CSW_HEGRENADE: iOffset = 388;
        case CSW_SMOKEGRENADE: iOffset = 389;
        case CSW_C4: iOffset = 390;
        default: return;
    }
    set_pdata_int(userId, iOffset, iAmount, 5);
}

Download File WMM.zip
 
Назад
Сверху