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


Dodatki SourceMod




Temat jest zamknięty



jail_zbijak.amxx









