Modele broni : m4a1,deagle,knife
Blondyneczka ;* 28.05.2012
Witam ! chcę zmienić modele broni klasie lecz nie wiem jak to uzupełnić. to kod sma :
To ścieżka nowego modelu :
Użytkownik WiWa edytował ten post 28.05.2012 13:42
public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED if(!equali(model, "models/w_m3.mdl")) return FMRES_IGNORED; new entityowner = pev(entity, pev_owner); if(!ma_klase[entityowner]) return FMRES_IGNORED; engfunc(EngFunc_SetModel, entity, "models/cod/w_m3.mdl") return FMRES_SUPERCEDE }
To ścieżka nowego modelu :
precache_model("models/CoD/soldat/p_m4a1.mdl"); precache_model("models/CoD/soldat/p_deagle.mdl"); precache_model("models/CoD/soldat/p_knife.mdl");
Użytkownik WiWa edytował ten post 28.05.2012 13:42
GwynBleidD
28.05.2012
Najpierw musisz się dowiedzieć jaka jest domyślna ścieżka do modelu danej broni. Gdy to znajdziesz, wpisujesz tą ścieżkę w tej linii:
Możesz tu podać tyle modeli, ile chcesz.
Następnie podajesz ścieżkę do nowej broni tutaj:
zamiast tej wpisanej. Jeśli chcesz zrobić to dla wielu broni, musisz skonstruować odpowiednie warunki:
UWAGA !! O ile na Windowsie wielkość znaków nie ma znaczenia, o tyle na Linuksie (na którym działa większość, jak nie wszystkie serwery CS) ma znaczenie, więc folder CoD to całkiem inny folder, niż cod. Dlatego zaleca się wszystkie foldery i pliki nazywać małymi literami, gdyż później są konflikty (np na serwerze masz 2 modele o tej samej nazwie "w_m3.mdl", ale w 2ch różnych folderach o nazwach cod i CoD. Chcesz dla jednej klasy przypisać jeden model, a dla drugiej inny i to NIE ZADZIAŁA. Obie klasy będą miały jeden z tych modeli, w zależności od tego, który graczowi model pobierze się jako pierwszy).
Użytkownik GwynBleidD edytował ten post 28.05.2012 15:12
if(!equali(model, "models/w_m3.mdl"))zamiast podanej tam ścieżki. Jeśli chcesz zrobić to dla kilku broni, zrób tak:
if(!equali(model, "models/w_m3.mdl")&&!equali(model, "models/w_m4a1.mdl"))
Możesz tu podać tyle modeli, ile chcesz.
Następnie podajesz ścieżkę do nowej broni tutaj:
engfunc(EngFunc_SetModel, entity, "models/cod/w_m3.mdl")
zamiast tej wpisanej. Jeśli chcesz zrobić to dla wielu broni, musisz skonstruować odpowiednie warunki:
if(equali(model, "models/w_m3.mdl"))itp.
engfunc(EngFunc_SetModel, entity, "models/cod/w_m3.mdl")
else if(equali(model, "models/w_m4a1.mdl"))
engfunc(EngFunc_SetModel, entity, "models/cod/w_m4a1.mdl")
UWAGA !! O ile na Windowsie wielkość znaków nie ma znaczenia, o tyle na Linuksie (na którym działa większość, jak nie wszystkie serwery CS) ma znaczenie, więc folder CoD to całkiem inny folder, niż cod. Dlatego zaleca się wszystkie foldery i pliki nazywać małymi literami, gdyż później są konflikty (np na serwerze masz 2 modele o tej samej nazwie "w_m3.mdl", ale w 2ch różnych folderach o nazwach cod i CoD. Chcesz dla jednej klasy przypisać jeden model, a dla drugiej inny i to NIE ZADZIAŁA. Obie klasy będą miały jeden z tych modeli, w zależności od tego, który graczowi model pobierze się jako pierwszy).
Użytkownik GwynBleidD edytował ten post 28.05.2012 15:12
Blondyneczka ;* 28.05.2012
Dzięki !. To co tu zrobiłem źle?? i jak ja nie mam pliku v_model to co mam zrobić ???
Użytkownik WiWa edytował ten post 28.05.2012 14:56
#include <amxmodx> #include <codmod> #include <engine> #include <fakemeta> new bool:ma_klase[33]; new const nazwa[] = "Soldat (P)"; new const opis[] = "Dostajesz Golden M4a1, Golden deagle + 2x wieksze obrazenia oraz Golden Noz, po wybraniu go jestes bardzo szybki!"; new const bronie = (1<<CSW_HEGRENADE)|(1<<CSW_FIVESEVEN)|(1<<CSW_MP5NAVY); new const zdrowie = 0; new const kondycja = 0; new const inteligencja = 0; new const wytrzymalosc = 0; public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_event("CurWeapon", "CurWeapon", "be", "1=1") register_forward(FM_SetModel, "fw_SetModel"); } public cod_class_enabled(id) { ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; } public plugin_precache() { precache_model("models/CoD/soldat/p_m4a1.mdl"); precache_model("models/CoD/soldat/v_m4a1.mdl"); precache_model("models/CoD/soldat/p_deagle.mdl"); precache_model("models/CoD/soldat/v_deagle.mdl"); precache_model("models/CoD/soldat/p_knife.mdl"); precache_model("models/CoD/soldat/v_knife.mdl"); } public CurWeapon(id) { new weapon = read_data(2); if(ma_klase[id]) { if(weapon == CSW_M4A1) { set_pev(id, pev_viewmodel2, "models/CoD/soldat/v_m4a1.mdl") set_pev(id, pev_weaponmodel2, "models/CoD/soldat/p_m4a1.mdl") if(weapon == CSW_DEAGLE ) { set_pev(id, pev_viewmodel2, "models/CoD/soldat/v_deagle.mdl") set_pev(id, pev_weaponmodel2, "models/CoD/soldat/p_deagle.mdl") if(weapon == CSW_KNIFE) { set_pev(id, pev_viewmodel2, "models/CoD/soldat/v_knife.mdl") set_pev(id, pev_weaponmodel2, "models/CoD/soldat/p_knife.mdl") } } } public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED if(!equali(model, "models/w_m4a1.mdl")&&!!equali(model, "models/w_deagle.mdl")&&!!equali(model, "models/w_knife.mdl")) return FMRES_IGNORED; new entityowner = pev(entity, pev_owner); if(!ma_klase[entityowner]) return FMRES_IGNORED; if(equali(model, "models/cod/w_m4a1.mdl")) engfunc(EngFunc_SetModel, entity, "models/cod/w_deagle.mdl") else if(equali(model, "models/w_m4a1.mdl")) engfunc(EngFunc_SetModel, entity, "models/cod/w_knife.mdl") return FMRES_SUPERCEDE }
Użytkownik WiWa edytował ten post 28.05.2012 14:56
radim
28.05.2012
To nie podmieniasz modelu v_*i jak ja nie mam pliku v_model to co mam zrobić
GwynBleidD
28.05.2012
Sorki, machnąłem się i wstawiłem w jednym miejscu 2 wykrzykniki zamiast jednego, poprawiłem to w swoim poście, popraw u siebie w kodzie
Modele w_ też musisz precache'ować, jeśli je podmieniasz. Dodatkowo błędnie zrobiłeś warunki do podmiany przy modelach w_
Modele w_ też musisz precache'ować, jeśli je podmieniasz. Dodatkowo błędnie zrobiłeś warunki do podmiany przy modelach w_
Blondyneczka ;* 28.05.2012
Zrobiłem literówkę. nie mam modelu w_
To jak ten kod ma wyglądać?
Proszę o szybką pomoc
To jak ten kod ma wyglądać?
public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED if(!equali(model, "models/w_m4a1.mdl")&&!!equali(model, "models/w_deagle.mdl")&&!!equali(model, "models/w_knife.mdl")) return FMRES_IGNORED; new entityowner = pev(entity, pev_owner); if(!ma_klase[entityowner]) return FMRES_IGNORED; if(equali(model, "models/cod/w_m4a1.mdl")) engfunc(EngFunc_SetModel, entity, "models/cod/w_deagle.mdl") else if(equali(model, "models/w_m4a1.mdl")) engfunc(EngFunc_SetModel, entity, "models/cod/w_knife.mdl") return FMRES_SUPERCEDE }
Proszę o szybką pomoc
Gość_21977_* 30.05.2012
To jak nie masz modeli w_ to jakim cudem chcesz modele w_ podmienić?
BTW.
Zauważ też, że dla fm_setModel, właścicielem bytu niekoniecznie musi być gracz, a np. NPC, warto sprawdzić więc, czy jest to gracz, choćby funkcją IsPlayer(id):
BTW.
Zamień podwójne wykrzykniki na pojedyncze (lub zmień ich liczbę na n∈ℕ; n≡1 (mod 2))if(!equali(model, "models/w_m4a1.mdl")&&!!equali(model, "models/w_deagle.mdl")&&!!equali(model, "models/w_knife.mdl"))
Zauważ też, że dla fm_setModel, właścicielem bytu niekoniecznie musi być gracz, a np. NPC, warto sprawdzić więc, czy jest to gracz, choćby funkcją IsPlayer(id):
#define IsPlayer(%1) (1 <= %1 <= gMaxClients)gdzie w plugin_init należy dodać gMaxClients=get_maxplayers(), a gMaxClients zadeklarować jako zmienną globalną.