Problem ze zmianą ubrania dla klasy - CoD MoD
Scorpion Flail
28.07.2013
Witam. Mam problem ze zmianą ubrania dla klasy [TT i CT]
Udało mi się już dodać oddzielny model dla TT i CT w tej klasie, jednak po zdobyciu itemów zmieniających ubranie na przeciwnika [np podręcznik szpiega] wygląd robi się standardowy, przykład:
Gracz posiada klasę w wyglądem i jest w TT. Otrzymuje przedmiot, który zmienia wygląd modelu na przeciwnej drużyny. W tym momencie powinien się zmienić ten model na wygląd CT. Zamiast tego zmienia się na wygląd przeciwnika, ale standardowego modelu, np gign
Model zmieniałem tak:
w precache dałem ścieżki dla modelu TT i CT [1 model dla każdej drużyny]
Następnie w odrodzeniu klasy dodałem coś takiego:
switch(get_user_team(id)) { case 1: { cs_set_user_model(id, "ścieżkatt"); } case 2: { cs_set_user_model(id, ""ścieżkact"); } }
Itemki zmieniające ubiór na przeciwny team mają to:
ZmienUbranie
public wygląda tak:
public ZmienUbranie(id,reset) { if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE; if (reset) cs_reset_user_model(id); else { new num = random_num(0,3); switch(get_user_team(id)) { case 1: cs_set_user_model(id, Ubrania_CT[num]); case 2:cs_set_user_model(id, Ubrania_Terro[num]); } } return PLUGIN_CONTINUE; }
zmienna z modelami:
new Ubrania_CT[4][]={"sas","gsg9","urban","gign"}; new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"};
Wydaje mi się, że wystarczy tylko zmienić w publicu zmienubranie i te ubiory, ale nie wiem w jaki sposób to napisać.
Liczę na pomoc
d0naciak
01.08.2013
public ZmienUbranie(id,reset) { if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE; if (reset) cs_reset_user_model(id); else { new num = random_num(0,3); switch(get_user_team(id)) { case 1: cs_set_user_model(id, "sciezkact"); case 2:cs_set_user_model(id, "sciezkatt"); } } return PLUGIN_CONTINUE; }
a zmienne z modelami wywal
Scorpion Flail
01.08.2013
public ZmienUbranie(id,reset) { if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE; if (reset) cs_reset_user_model(id); else { new num = random_num(0,3); switch(get_user_team(id)) { case 1: cs_set_user_model(id, "sciezkact"); case 2:cs_set_user_model(id, "sciezkatt"); } } return PLUGIN_CONTINUE; }a zmienne z modelami wywal
To na pewno zadziała? Bo wydaje mi się, że teraz innym klasom na zwykłych modelach nie będą się zmieniać ubiory.
Posiadam tylko 1 klasę, dla której chcę przypisać osobny model
Niide
07.08.2013
Jeżeli masz tylko jedną klasę z innym modelem, a resztę z standardowymi. To zmień zmienne tak:
new Ubrania_CT[5][]={"sas","gsg9","urban","gign","sciezkact"}; new Ubrania_Terro[5][]={"arctic","leet","guerilla","terror","sciezkatt"};
Pytanko. Czy chciałeś zrobić tak, że gracz z nowym modelem, gdy on otrzyma ten przedmiot, to mu się zmienia na nowy model drużyny przeciwnej, a jak nie ma klasy z nowym modelem to mu się zmienia na standardowy przeciwnika?
Użytkownik Niide edytował ten post 07.08.2013 21:01
Scorpion Flail
07.08.2013
Pytanko. Czy chciałeś zrobić tak, że gracz z nowym modelem, gdy on otrzyma ten przedmiot, to mu się zmienia na nowy model drużyny przeciwnej, a jak nie ma klasy z nowym modelem to mu się zmienia na standardowy przeciwnika?
Tak. Gdy mam klasę ze specjalnym ubiorem [osobny dla tt i ct] i gdy jest on np TT to posiadając ten przedmiot, zmieni ubiór na specjalny, ale CT
A gdy gracz ze zwykłą klasą [i ubiorem] ma ten przedmiot to zmienia mu na standardowy ubiór, ale przeciwnika.
Tutaj właśnie nie jestem pewien czy zawsze zamienia np sas na arctic, gsg9 na leet, czy sobie losuje, np z sas, na terror.
Niide
07.08.2013
Spróbuj tak:
public ZmienUbranie(id, reset) { if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE; new model[33]; cs_get_user_model(id, model, 32); if (reset) cs_reset_user_model(id); else { new num = random_num(0,3); if(model[id] == Ubrania_CT[num] && cs_get_user_team(id) == CS_TEAM_CT) { cs_set_user_model(id, Ubrania_Terro[num]); } else if(model[id] == Ubrania_Terro[num] && cs_get_user_team(id) == CS_TEAM_T) { cs_set_user_model(id, Ubrania_CT[num]); } else if(cs_get_user_team(id) == CS_TEAM_T && model[id] != Ubrania_Terro[num]) { cs_set_user_model(id, "sciezkact"); } else if(cs_get_user_team(id) == CS_TEAM_CT && model[id] != Ubrania_CT[num]) { cs_set_user_model(id, "sciezkatt"); } } return PLUGIN_CONTINUE; }
Jak ma się włączyć standardowy model przeciwnika to się on losuje spośród 4 modeli przeciwnej drużyny.
Użytkownik Niide edytował ten post 07.08.2013 21:36
Scorpion Flail
07.08.2013
W sumie to ja na początku deklarowałem sobie nazwę skina:
new CTSkin
Więc jak zrobię w ten sposób to będzie też poprawnie, tak?:
else if(cs_get_user_team(id) == CS_TEAM_T && model[id] = TTSkin[num]) { cs_set_user_model(id, CTSkin[num]); }
I nie wiem czy jak mam po 1 modelu w tt i 1 w ct to ma być to [num]
Niide
07.08.2013
[num] dodajesz jak masz 4 modele. Jak masz 1 to daj "CTSkin" samo.
Idę spać bo rano do pracy. na razie.
Użytkownik Niide edytował ten post 07.08.2013 21:53
Scorpion Flail
19.08.2013
Jest błąd przy kompilacji:
Error: Array must be indexed (variable "Ubrania_CT") on line 3256 Error: Array must be indexed (variable "Ubrania_Terro") on line 3260 Error: Array must be indexed (variable "Ubrania_Terro") on line 3264 Error: Array must be indexed (variable "Ubrania_CT") on line 3268
Te linijki to:
if(model[id] == Ubrania_CT[num] && cs_get_user_team(id) == CS_TEAM_CT) { cs_set_user_model(id, Ubrania_Terro[num]); } else if(model[id] == Ubrania_Terro[num] && cs_get_user_team(id) == CS_TEAM_T) { cs_set_user_model(id, Ubrania_CT[num]); } else if(cs_get_user_team(id) == CS_TEAM_T && model[id] != Ubrania_Terro[num]) { cs_set_user_model(id, "CTSkin"); } else if(cs_get_user_team(id) == CS_TEAM_CT && model[id] != Ubrania_CT[num]) { cs_set_user_model(id, "TTSkin"); }
Jeszcze raz podaję co mam w tych modelach:
new Ubrania_CT[4][]={"sas","gsg9","urban","gign"}; new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"};
Myślałem nad equali, ale nie wiem jak to zapisać.
Użytkownik Scorpion Flail edytował ten post 19.08.2013 20:55
K!113r
19.08.2013
Polecam przeczytać w dokumentacji o equal()
Scorpion Flail
21.08.2013
Model jest przypisany do klasy, która jest na flagę.
Tam wszystko dobrze działa, tylko problem z tym itemem/perkiem zmieniającym ubiór na przeciwnika
Scorpion Flail
21.08.2013
Klasy premium mam na 1 flagę.
Najlepiej zrobić to właśnie w kodzie perku zmieniającego ubranie.
Sposób Niide jest dobry, tylko trzeba poprawić zapis aby się to skompilowało.
Dlatego prosiłbym o poprawienie tego kodu.
Niide
21.08.2013
public ZmienUbranie(id, reset) { if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE; new model[33]; cs_get_user_model(id, model, 32); if (reset) cs_reset_user_model(id); else { static i; new num = random_num(0, 3); for(i = 0; i < sizeof(Ubrania_CT); i++) { if(equal(model[id], Ubrania_CT[i]) && cs_get_user_team(id) == CS_TEAM_CT) { cs_set_user_model(id, Ubrania_Terro[num]); } else if(cs_get_user_team(id) == CS_TEAM_CT && !equal(model[id], Ubrania_CT[i])) { cs_set_user_model(id, "sciezkatt"); } } for(i = 0; i < sizeof(Ubrania_Terro); i++) { if(equal(model[id], Ubrania_Terro[i]) && cs_get_user_team(id) == CS_TEAM_T) { cs_set_user_model(id, Ubrania_CT[num]); } else if(cs_get_user_team(id) == CS_TEAM_T && !equal(model[id], Ubrania_Terro[i])) { cs_set_user_model(id, "sciezkact"); } } } return PLUGIN_CONTINUE; }
Scorpion Flail
21.08.2013
Teraz jest tak:
zwykłe modele: zmienia na inny rodzaj modelu swojej drużyny [czyli nie zmienia na model przeciwnika]
model dodatkowy: nie działa, zmienia na standardowy model swojej drużyny
Amaroq
21.08.2013
if(cod_get_user_class(id) == cod_get_classid("nazwa twojej klasy")) return COD_STOPdo forwardu cod_perk_enabled w perku zmieniającego ubiór?
Scorpion Flail
21.08.2013
Tak jeszcze napisze, że ubiór zmienia się tak:
ZmienUbranie(id, 0);