Плагин предоставляет возможность заменять скины оружия, а также взаимодействовать с системой при помощи API.
API:
Пример использования
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);
}