Witam. Posiadam CSGO Mod'a i chciałbym, aby modele lecących już granatów (w_x.mdl, gdzie x = nazwa granatu) były zmienione na te z CS:GO.
Więc znalazłem odpowiednie modele, teraz czas jakoś je podmienić. Na amxx nic nie znalazłem, natomiast na allied'ach już tak: https://forums.allie...ad.php?t=104582
Podano tam niżej taki kod:
#include <amxmodx> #include <engine> #include <fakemeta> new WORLD_MODEL[] = "models/Hello-Kitty/w_kittys_c4.mdl" new OLDWORLD_MODEL[] = "models/w_c4.mdl" public plugin_init() { register_plugin("22323", "2323", "2323") register_forward(FM_SetModel, "fw_SetModel") } public plugin_precache() { precache_model(WORLD_MODEL) } 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")) { entity_set_model(entity, WORLD_MODEL) return FMRES_SUPERCEDE } return FMRES_IGNORED }
Postanowiłem potestować dla jednego granata (HE). Zrobiłem co trzeba, wchodzę, rzucam i okazuje się, że działa. Więc postanowiłem zrobić tak dla pozostałych 2 granatów.
Zgrzebałem taki kodzik:
#include <amxmodx> #include <engine> #include <fakemeta> new WORLD_MODEL1[] = "models/xxx/xxx/w_xxx.mdl" new WORLD_MODEL2[] = "models/xxx/xxx/w_xxx.mdl" new WORLD_MODEL3[] = "models/xxx/xxx/w_xxx.mdl" new OLDWORLD_MODEL1[] = "models/w_xxx.mdl" new OLDWORLD_MODEL2[] = "models/w_xxx.mdl" new OLDWORLD_MODEL3[] = "models/w_xxx.mdl" public plugin_init() { register_plugin("22323", "2323", "2323") register_forward(FM_SetModel, "fw_SetModel") } public plugin_precache() { precache_model(WORLD_MODEL1) precache_model(WORLD_MODEL2) precache_model(WORLD_MODEL3) } public fw_SetModel(entity, model[]) { if(!is_valid_ent(entity)) return FMRES_IGNORED if(!equali(model, OLDWORLD_MODEL1)) if(!equali(model, OLDWORLD_MODEL2)) if(!equali(model, OLDWORLD_MODEL3)) 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")) { entity_set_model(entity, WORLD_MODEL1) entity_set_model(entity, WORLD_MODEL2) entity_set_model(entity, WORLD_MODEL3) return FMRES_SUPERCEDE } return FMRES_IGNORED }
No i podmienia, ale na jeden - ostatni (w tym przypadku smoke). Czyli nawet jak rzucam he, fb to pokazuje się model smoke'a.
Pokminiłem trochę i pomyślałem, że przecież w ostatnim if'ie musi być warunek, dla jakiej broni co ma podmieniać.
Zrobiłem coś takiego:
if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade")) { if(get_user_weapon(entity) == CSW_HEGRENADE) { entity_set_model(entity, WORLD_MODEL1) } if(get_user_weapon(entity) == CSW_FLASHBANG) { entity_set_model(entity, WORLD_MODEL2) } if(get_user_weapon(entity) == CSW_SMOKEGRENADE) { entity_set_model(entity, WORLD_MODEL3) } return FMRES_SUPERCEDE }
Ale w ogóle nie podmienia modeli w_.
W jaki sposób mogę uzyskać pożądany efekt?
Użytkownik K@MILOVVSKY edytował ten post 07.08.2018 18:13