| @)(otnik | Дата: Суббота, 31.10.2009, 16:18 | Сообщение # 1 |
Сообщений: 2183
Статус: 
|
Автор: Cheap_Suit Перевод: DJ_WEST Данная статья рассказывает простой метод смены модели оружия игрока в Counter-Strike 1.6. Данный метод поможет вам изменить все 3 типа модели: v_, p_ и w_. Метод с использованием модулей Engine и Fakemeta Quote #include <amxmodx> #include <engine> #include <fakemeta> new VIEW_MODEL[] = "models/v_<имя модели>.mdl" new PLAYER_MODEL[] = "models/p_<имя модели>.mdl" new WORLD_MODEL[] = "models/w_<имя модели>.mdl" new OLDWORLD_MODEL[] = "models/w_<имя модели>.mdl" // имя модели, которую мы хотим заменить new PLUGIN_NAME[] = "Custom Weapon Model" new PLUGIN_AUTHOR[] = "Cheap_Suit" new PLUGIN_VERSION[] = "1.0" public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) register_event("CurWeapon", "Event_CurWeapon", "be","1=1") register_forward(FM_SetModel, "fw_SetModel") } public plugin_precache() { precache_model(VIEW_MODEL) precache_model(PLAYER_MODEL) precache_model(WORLD_MODEL) } public Event_CurWeapon(id) { // Получаем ID оружия, может не работать для других модов new weaponID = read_data(2) // Если оружие не AK47, то возвращаем PLUGIN_CONTINUE if (weaponID != CSW_AK47) return PLUGIN_CONTINUE // Установка v_ модели, которая отображается в руках игрока entity_set_string(id, EV_SZ_viewmodel, VIEW_MODEL) // Установка p_ модели, которая отображается, когда мы смотрим на игрока entity_set_string(id, EV_SZ_weaponmodel, PLAYER_MODEL) return PLUGIN_CONTINUE } public fw_SetModel(entity, model[]) { // Проверяем существует ли объект if (!is_valid_ent(entity)) return FMRES_IGNORED // Проверяем та ли это w_ модель, которую му хотим изменить if (!equali(model, OLDWORLD_MODEL)) return FMRES_IGNORED new className[33] // Получаем класс объекта entity_get_string(entity, EV_SZ_classname, className, 32) // Сравниваем равняется ли полученный класс объекта weaponbox (выкинутое оружие) или armoury_entity (оружие, которое лежит на карте), или grenade (C4 и гранаты) if (equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade")) { // Установка w_ модели, которая отображается на земле entity_set_model(entity, WORLD_MODEL) return FMRES_SUPERCEDE } return FMRES_IGNORED } Метод с использованием только модуля Fakemeta Quote public Event_CurWeapon(id) { // Получаем ID оружия, может не работать для других модов new weaponID = read_data(2) // Если оружие не AK47, то возвращаем PLUGIN_CONTINUE if (weaponID != CSW_AK47) return PLUGIN_CONTINUE // Установка v_ модели, которая отображается в руках игрока set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, VIEW_MODEL)) // Установка p_ модели, которая отображается, когда мы смотрим на игрока set_pev(id, pev_weaponmodel, engfunc(EngFunc_AllocString, PLAYER_MODEL)) return PLUGIN_CONTINUE } public fw_SetModel(entity, model[]) { // Проверяем существует ли объект if (!pev_valid(entity)) return FMRES_IGNORED // Проверяем та ли это w_ модель, которую му хотим изменить if (!equali(model, OLDWORLD_MODEL)) return FMRES_IGNORED new className[33] // Получаем класс объекта pev(entity, pev_classname, className, 32) // Сравниваем равняется ли полученный класс объекта weaponbox (выкинутое оружие) или armoury_entity (оружие, которое лежит на карте), или grenade (C4 и гранаты) if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade")) { // Установка w_ модели, которая отображается на земле engfunc(EngFunc_SetModel, entity, WORLD_MODEL) return FMRES_SUPERCEDE } return FMRES_IGNORED } Примечание: Для второго метода, там где используется: Quote // Установка v_ модели, которая отображается в руках игрока set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, VIEW_MODEL)) // Установка p_ модели, которая отображается, когда мы смотрим на игрока set_pev(id, pev_weaponmodel, engfunc(EngFunc_AllocString, PLAYER_MODEL)) Можно использовать: Quote // Установка v_ модели, которая отображается в руках игрока set_pev(id, pev_viewmodel2, VIEW_MODEL) // Установка p_ модели, которая отображается, когда мы смотрим на игрока set_pev(id, pev_weaponmodel2, PLAYER_MODEL) Тем самым не использовав EngFunc_AllocString. ID оружия: Quote #define CSW_P228 1 #define CSW_SCOUT 3 #define CSW_HEGRENADE 4 #define CSW_XM1014 5 #define CSW_C4 6 #define CSW_MAC10 7 #define CSW_AUG 8 #define CSW_SMOKEGRENADE 9 #define CSW_ELITE 10 #define CSW_FIVESEVEN 11 #define CSW_UMP45 12 #define CSW_SG550 13 #define CSW_GALI 14 #define CSW_GALIL 14 #define CSW_FAMAS 15 #define CSW_USP 16 #define CSW_GLOCK18 17 #define CSW_AWP 18 #define CSW_MP5NAVY 19 #define CSW_M249 20 #define CSW_M3 21 #define CSW_M4A1 22 #define CSW_TMP 23 #define CSW_G3SG1 24 #define CSW_FLASHBANG 25 #define CSW_DEAGLE 26 #define CSW_SG552 27 #define CSW_AK47 28 #define CSW_KNIFE 29 #define CSW_P90 30 Пример для смены модели ножа: Quote #include <amxmodx> #include <fakemeta> new VIEW_MODEL[] = "models/v_newKnife.mdl" new PLAYER_MODEL[] = "models/p_newKnife.mdl" new WORLD_MODEL[] = "models/w_knife.mdl" new OLDWORLD_MODEL[] = "models/w_knife.mdl" new PLUGIN_NAME[] = "Custom Knife Model" new PLUGIN_AUTHOR[] = "Cheap_Suit" new PLUGIN_VERSION[] = "1.0" public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) register_event("CurWeapon", "Event_CurWeapon", "be","1=1") register_forward(FM_SetModel, "fw_SetModel") } public plugin_precache() { precache_model(VIEW_MODEL) precache_model(PLAYER_MODEL) precache_model(WORLD_MODEL) } public Event_CurWeapon(id) { new weaponID = read_data(2) if(weaponID != CSW_KNIFE) return PLUGIN_CONTINUE set_pev(id, pev_viewmodel2, VIEW_MODEL) set_pev(id, pev_weaponmodel2, PLAYER_MODEL) return PLUGIN_CONTINUE } public fw_SetModel(entity, model[]) { if (!pev_valid(entity)) return FMRES_IGNORED if (!equali(model, OLDWORLD_MODEL)) return FMRES_IGNORED new className[33] pev(entity, pev_classname, className, 32) if (equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade")) { engfunc(EngFunc_SetModel, entity, WORLD_MODEL) return FMRES_SUPERCEDE } return FMRES_IGNORED }
Купуємо стім (Ліцензійну Counter Strike 1.6) тут http://www.cs-lutsk.org.ua/index/0-135
|
| |
| |