Това е пример за смяна на оръжейните модели в Counter-Strike. С този пример ще можете да смените всички 3 модели, който биват :
- view models - Най-често пред имената си имат "v_" (Това е модела, който виждате когато играете)
- player model Най-често пред имената си имат "p_" (Това е модела, който виждате в ръцете на някой друг играч)
- world models Най-често пред имената си имат "w_" (Това е модела, който се вижда на земята).
И така нека започваме :
Engine and Fakemeta
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <engine>
#include <fakemeta>
new VIEW_MODEL[] = "models/v_<model name>.mdl"
new PLAYER_MODEL[] = "models/p_<model name>.mdl"
new WORLD_MODEL[] = "models/w_<model name>.mdl"
new OLDWORLD_MODEL[] = "models/w_<model name>.mdl" //Това е world модела който искате замените (стария модел)
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)
{
// Може да не работи с други модове като (war3ft и др.)
new weaponID = read_data(2)
// Проверка ако оръжието не е AK позволяваме на плъгина да продължи
if(weaponID != CSW_AK47)
return PLUGIN_CONTINUE
// С този ред слагаме VIEW модела (Този който виждаме в ръката си)
entity_set_string(id, EV_SZ_viewmodel, VIEW_MODEL)
// С този ред слагаме PLAYER модела(Този който виждаме в ръцете на другите играчи)
entity_set_string(id, EV_SZ_weaponmodel, PLAYER_MODEL)
return PLUGIN_CONTINUE
}
public fw_SetModel(entity, model[])
{
// Проверяваме дали entity-то е валидно за да избегнем грешки
if(!is_valid_ent(entity))
return FMRES_IGNORED
// Проверяваме дали е модела който искаме да сменим
if(!equali(model, OLDWORLD_MODEL))
return FMRES_IGNORED
new className[33]
entity_get_string(entity, EV_SZ_classname, className, 32)
// Изхвърлените оръжия Map оръжията c4 + гранати
if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
// Слага WORLD модела ( тези които са по земята )
entity_set_model(entity, WORLD_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
Код за потвърждение: Избери целия код
public Event_CurWeapon(id)
{
// Може да не работи с други модове като (war3ft и др.)
new weaponID = read_data(2)
// Проверка ако оръжието не е AK позволяваме на плъгина да продължи
if(weaponID != CSW_AK47)
return PLUGIN_CONTINUE
// С този ред слагаме VIEW модела (Този който виждаме в ръката си)
set_pev(id, pev_viewmodel, engfunc(EngFunc_AllocString, VIEW_MODEL))
// С този ред слагаме PLAYER модела(Този който виждаме в ръцете на другите играчи)
set_pev(id, pev_weaponmodel, engfunc(EngFunc_AllocString, PLAYER_MODEL))
return PLUGIN_CONTINUE
}
public fw_SetModel(entity, model[])
{
// Проверяваме дали entity-то е валидно за да избегнем грешки
if(!is_valid_ent(entity))
return FMRES_IGNORED
// Проверяваме дали е модела който искаме да сменим
if(!equali(model, OLDWORLD_MODEL))
return FMRES_IGNORED
new className[33]
pev(entity, pev_classname, className, 32)
// Изхвърлените оръжия Map оръжията c4 + гранати
if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
// Слага WORLD модела ( тези които са по земята )
engfunc(EngFunc_SetModel, entity, WORLD_MODEL)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
Код за потвърждение: Избери целия код
#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
Пример за смяна модела на ножа
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <engine>
#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(!is_valid_ent(entity))
return FMRES_IGNORED
if(!equali(model, OLDWORLD_MODEL))
return FMRES_IGNORED
new className[33]
entity_get_string(entity, EV_SZ_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
}
Урокът е взет от ТУК
Преведен е от мен : JustInCase
И ЗАБРАНЯВАМ КОПИРАНЕТО НА ПРЕВОДА ПО ДРУГИ САЙТОВЕ И ФОРУМИ !!!