Cześć! Mam dwa problemy.
Pierwszy:
Mam funkcje która po rzuceniu smoke'iem zamienia go w śnieżkę i wszystko śmiga, ale dodanie traila laguje ją co sprawia, że
1. przeleci ona trochę drogi,
2. przeteleportuje się w punkt początkowy, ciągnąc za sobą trail,
3. znów kontynuuje drogę,
4. droga przebyta w punkcie pierwszym jest potem jakby "odjęta" od drogi przebytej z punktu początkowego do miejsca kolizji śnieżki ze ścianą.
Efekt widoczny na zdjęciu z załącznika. Wykomentowanie kodu od trail'a naprawia problem (tj. widzę po modelu śnieżki, że nie cofa się do punktu początkowego).
Drugi:
Chcę zwiększyć kolizję śnieżki poprzez linię oznaczoną strzałką w kodzie. Śnieżka zachowuje się wtedy dziwnie. Przykładowo:
Wpisanie wartości wartości float 4.0 wcale nie zmienia kolizji śnieżki (śnieżka ma kolizje taką jak bez tej linijki). Jeśli wprowadzę wartość np 4.1 (a nawet 4.0001), to model kolizji jest nagle drastycznie większy. Dalsze zwiększanie wartości nie powoduje stopniowego zwiększenia się modelu kolizji, czyli jest on tak samo duży dla 5.0, 6.0 etc. Przy wartości 16.0 śnieżka niszczy się w chwili rzutu. Innymi słowy - zmienianie wartości nie reguluje boxa kolizji, a przynajmniej nie w sposób zamierzony/oczekiwany.
public grenade_throw(id, iGrenade, iGrenadeType) { new Float:oldVelocity[3]; new Float:newVelocity[3]; if(is_user_connected(id) && pev_valid(iGrenade) && iGrenadeType == CSW_SMOKEGRENADE) { fm_entity_set_model(iGrenade, WORLD_MODEL) fm_entity_set_size(iGrenade, Float:{-4.0,-4.0,-4.0},Float:{4.0,4.0,4.0}) <---------------- set_pev(iGrenade, pev_gravity, 0.4) pev(iGrenade, pev_velocity, oldVelocity); client_print(0, print_chat, "Stare: %f %f %f ",oldVelocity[0], oldVelocity[1], oldVelocity[2]) newVelocity[0] = oldVelocity[0] * multiplier; newVelocity[1] = oldVelocity[1] * multiplier; newVelocity[2] = oldVelocity[2]; set_pev(iGrenade, pev_velocity, newVelocity); client_print(0, print_chat, "Nowe: %f %f %f ",newVelocity[0], newVelocity[1], newVelocity[2]) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) write_short(iGrenade) write_short(TRAIL_SPRITE) write_byte(155) write_byte(2) write_byte(random_num(0,255)) write_byte(random_num(0,255)) write_byte(random_num(0,255)) write_byte(255) message_end() message_begin(MSG_ALL, SVC_TEMPENTITY) write_byte(TE_KILLPLAYERATTACHMENTS) write_byte(id) message_end() } }
Czy ktoś jest w stanie pomóc?
Jeśli potrzebujecie innych kawałków kodu to wstawię.
Użytkownik Martez edytował ten post 09.12.2022 06:50