Русское сообщество по скриптингу

Weapon Skin System

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

Weapon Skin System

Сообщение Mistrick » 14 дек 2016, 19:56

Weapon Skin System

Автор: Mistrick
Версия: 0.5.0 от 20.12.2016 г.

Описание: Позволяет каждому игроку выбрать скин для оружия.
Скин сохраняется в оружии, что позволяет после его дропа и подбора сохранить измененную модель.
После выбора скина в меню, он заменит текущий, если у вас есть данное оружие.

Команды:
/skins - вывод меню со скинами.
/skinreset - сброс модели для оружия.

Пример конфига:
Код: Выделить всё
; Syntax: "weapon name" "skin name" "model_v" "model_p" "model_w"
; "weapon_ak47" "AK-47 Skin 1" "models/weapon_skins/v_ak47_1.mdl" "models/weapon_skins/p_ak47_1.mdl" "models/weapon_skins/w_ak47_1.mdl" 

API для разработчиков:
weapon_models_api.inc
Код: Выделить всё
enum
{
    ADD_BY_WEAPONBOX,
    ADD_BY_ARMORY_ENTITY,
    ADD_BY_BUYZONE
}

/**
 * Called when weapon deployed.
 * 
 * @param id                    Player index.
 * @param weapon                Weapon entity index.
 * @param weaponid                CSW_ const.
 */
forward cs_weapon_deploy(id, weapon, weaponid);

/**
 * Called when weapon holstered.
 * 
 * @param id                    Player index.
 * @param weapon                Weapon entity index.
 * @param weaponid                CSW_ const.
 */
forward cs_weapon_holster(id, weapon, weaponid);

/**
 * Called when weapon droped.
 * Forward should return 1 if weaponbox model changed
 * 
 * @param id                    Player index.
 * @param weaponbox                Weaponbox entity index.
 * @param weapon                Weapon entity index.
 * @param weaponid                CSW_ const.
 */
forward cs_weapon_drop(id, weaponbox, weapon, weaponid);

/**
 * Called when weapon added to player.
 * 
 * @param id                    Player index.
 * @param weapon                Weapon entity index.
 * @param weaponid                CSW_ const.
 * @param type                    Add type.
 */
forward cs_weapon_add_to_player(id, weapon, weaponid, type); 

weapon_skin_system.inc
Код: Выделить всё
/**
 * Called when load skins from file.
 * 
 * @param index                        Skin index
 * @param weaponid                    Skin CSW_ const
 * @param name                        Skin name
 */
forward wss_loaded_skin(index, weaponid, name[]);

/**
 * Get weapon skin.
 * 
 * @param weapon                    Weapon enity index
 */
native wss_get_weapon_skin_index(weapon);

/**
 * Get skin name by index.
 * 
 * @param skin                        Skin index
 * @param name                        String for name
 * @param len                        Max string len
 */
native wss_get_skin_name(skin, name[], len);

/**
 * Change player weapon skin.
 * If weaponid is NULL then reset all player skins.
 * 
 * @param id                        Player index
 * @param weaponid                    Weapon CSW_ const
 * @param skin_index                Skin index from wss_loaded_skin()
 */
native wss_set_user_skin(id, weaponid, skin_index = 0); 

Пример использования API:
Код: Выделить всё
#include <amxmodx>
#include <weapon_skin_system>

#define PLUGIN "Weapon Skins: Addon"
#define VERSION "0.1"
#define AUTHOR "Mistrick"

#pragma semicolon 1

enum SkinInfo
{
    SkinIndex,
    SkinWeaponid
};

enum Skins
{
    SKIN_FRONTSIDE
};

new g_iWeaponSkins[Skins][SkinInfo];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
}

public wss_loaded_skin(index, weaponid, name[])
{
    if(equal(name, "AK-47 Frontside"))
    {
        g_iWeaponSkins[SKIN_FRONTSIDE][SkinIndex] = index;
        g_iWeaponSkins[SKIN_FRONTSIDE][SkinWeaponid] = weaponid;
    }
}

public client_putinserver(id)
{
    if(is_user_steam(id))
    {
        wss_set_user_skin(id, g_iWeaponSkins[SKIN_FRONTSIDE][SkinWeaponid], g_iWeaponSkins[SKIN_FRONTSIDE][SkinIndex]);
    }
}

stock is_user_steam(id)
{
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id); server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}
 

Последние изменения: Вы должны зарегистрироваться, чтобы видеть ссылки.
v0.5
- Добавлен форвард cs_weapon_holster()
- Добавлен натив wss_get_skin_name()

v0.4
- Добавлен API для Weapon Skin System
- Добавлена поддержка выставления модели для брошенных гранат

v0.3
- Изменен API(новый параметр у forward cs_weapon_add_to_player(id, weapon, weaponid, type)).
- Теперь не плодит модели при подборе.
- Добавлен сброс модели.

v0.2
- Начальный релиз.
weapon_skin_system_v0.4.zip

weapon_skin_system_v0.5.zip

weapon_skin_system_v0.5-45_v0.6-18.zip


Утверждено // liFe iS GoOD
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Mistrick 19 дек 2016, 21:34, всего редактировалось 1 раз.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Weapon Skin System

Сообщение Mistrick » 18 дек 2016, 14:54

Обновил.
- Добавлен форвард cs_weapon_holster()
- Добавлен натив wss_get_skin_name()
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Weapon Skin System

Сообщение L4D2 » 19 дек 2016, 12:55

А утверждать то кто будет творение от Мистрика ? зачет :thumbs_up

==============================================
|| Пишу не большие плагины под заказ: Заказ онлайн (Кликабельно)
|| Ссылка на официальный топик: заказ плагинов.
|| Желаешь оставить отзыв: тебе сюда(кликни).
==============================================
Аватара пользователя
L4D2
 
Сообщения: 792
Зарегистрирован: 25 июн 2011, 19:26
Благодарил (а): 240 раз.
Поблагодарили: 100 раз.
Языки программирования: Counter-Strike 1.6

Re: Weapon Skin System

Сообщение liFe iS GoOD » 19 дек 2016, 18:37

Утверждено
Аватара пользователя
liFe iS GoOD
Модератор
 
Сообщения: 1416
Зарегистрирован: 24 май 2012, 19:48
Благодарил (а): 116 раз.
Поблагодарили: 472 раз.

Re: Weapon Skin System

Сообщение Mistrick » 19 дек 2016, 21:35

Обновил.
- Добавлен форвард cs_weapon_can_pickup()
- Добавлены константы для более понятного написания кода.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Weapon Skin System

Сообщение ZUBR » 04 янв 2017, 23:51

В новых версия стоит ожидать добавление по флагам?
Аватара пользователя
ZUBR
 
Сообщения: 73
Зарегистрирован: 28 ноя 2013, 17:33
Благодарил (а): 128 раз.
Поблагодарили: 15 раз.
Языки программирования: Counter-Strike 1.6

Re: Weapon Skin System

Сообщение Mistrick » 05 янв 2017, 08:11

ZUBR, Это реализуемо и на текущем API.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Weapon Skin System

Сообщение alfaTB » 15 фев 2017, 16:45

Возможно ли сделать так чтобы это меня было привязано к системе рангов (например есть в меню ак вулкан и он доступен только со звания адмирай и т д)
Аватара пользователя
alfaTB
 
Сообщения: 5
Зарегистрирован: 15 фев 2017, 13:56
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Weapon Skin System

Сообщение flymic24 » 15 фев 2017, 18:16

alfaTB, Возможно
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Weapon Skin System

Сообщение rain182 » 24 фев 2017, 22:40

Хороший плагин :thumbs_up
Аватара пользователя
rain182
 
Сообщения: 2
Зарегистрирован: 24 авг 2011, 19:53
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

След.

Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: xhewal и гости: 13