Tworzenie/Animacja Enta (Engine)
MarWit
29.06.2011
Napisałem sobie 2 funkcje do tworzenia i animacji entów. Myślę ze się może komuś przydać.
Przykładowe użycie obydwu funkcji oraz gotowy plugin(w załączniku):
Opinie negatywne jak i pozytywne mile widziane
Użytkownik MarWit edytował ten post 29.06.2011 16:10
stock StworzEnta(szClassname[] = "info_target", Float:origin[3], Float:takedamage, Float:health, ent_classname[]="", model[]="", solid = SOLID_NOT, Float:mins[3], Float:maxs[3])
{
new ent = create_entity(szClassname)
entity_set_origin(ent, origin)
entity_set_float(ent, EV_FL_takedamage, takedamage)
entity_set_float(ent, EV_FL_health, health)
entity_set_string(ent, EV_SZ_classname, ent_classname)
entity_set_model(ent, model)
entity_set_int(ent, EV_INT_solid, solid)
entity_set_size(ent, mins, maxs)
return ent
}
stock AnimujEnta(index, sequence, Float: framerate = 1.0)
{
entity_set_float(index, EV_FL_animtime, get_gametime());
entity_set_float(index, EV_FL_framerate, framerate);
entity_set_float(index, EV_FL_frame, 0.0);
entity_set_int(index, EV_INT_sequence, sequence);
}
Przykładowe użycie obydwu funkcji oraz gotowy plugin(w załączniku):
new Float:origin[3]
entity_get_vector(id, EV_VEC_origin, origin)
new Float:maxs[3] = {16.0,16.0,36.0}
new Float:mins[3] = {-16.0,-16.0,-36.0}
new albert = StworzEnta("info_target", origin, 1.0, 100.0, "albert_npc", "models/player/terror/terror.mdl", SOLID_BBOX, mins, maxs)
AnimujEnta(albert, 1)
Opinie negatywne jak i pozytywne mile widziane
Załączone pliki
Użytkownik MarWit edytował ten post 29.06.2011 16:10
R3X
04.07.2011
Istnieje funkcja do pobrania ustawień naturalnych dla konkretnej sekwencji modelu
W animowaniu bytów pomagają także kontrolery kości (jakby mięśnie). Dzięki kontrolerom możemy np. kręcić głową modeli ludzkich (barney, naukowcy, czyli też hosty)
Obie funkcje są częścią fakemety
native lookup_sequence(entity, const name[], &Float:framerate = 0.0, &bool:loops = false, &Float:groundspeed = 0.0);
W animowaniu bytów pomagają także kontrolery kości (jakby mięśnie). Dzięki kontrolerom możemy np. kręcić głową modeli ludzkich (barney, naukowcy, czyli też hosty)
native Float:set_controller(entity, controller, Float:value);kontrolery są 4, ale modele nie zawsze udostępniają wszystkie, co prostsze nie mają ich wcale
Obie funkcje są częścią fakemety
MarWit
04.07.2011
R3X, jakbyś mógł to proszę żebyś napisał jak zastosować te kontrolery, bo już duzo razy widziałem je w rożnych skryptach ale nie wiedziałem jak działają.
Użytkownik MarWit edytował ten post 04.07.2011 13:18
Użytkownik MarWit edytował ten post 04.07.2011 13:18
R3X
04.07.2011
Polecam ten program: Jed`s Half Life Model Viewer
Screen pomocniczy
Otwieramy model i przechodzimy w zakładkę bodyparts (1)
Mamy tam wybór kontrolera(2) i suwak z wartością(3). Zakres wartości możemy odczytać z Dumpingu(4, 5)
Wiemy teraz, że kontroler 0 odpowiada za obrót głowy o kąt <-60.0, 60.0> a kontroler 1 otwiera barneyowi usta w zakresie <0.0, 45.0>
Barney patrzy w swoje lewo i ma na wpół otwarte usta
Screen pomocniczy
Otwieramy model i przechodzimy w zakładkę bodyparts (1)
Mamy tam wybór kontrolera(2) i suwak z wartością(3). Zakres wartości możemy odczytać z Dumpingu(4, 5)
Wiemy teraz, że kontroler 0 odpowiada za obrót głowy o kąt <-60.0, 60.0> a kontroler 1 otwiera barneyowi usta w zakresie <0.0, 45.0>
Barney patrzy w swoje lewo i ma na wpół otwarte usta
set_controller(barney, 0, 60.0); set_controller(barney, 1, 22.0);
MarWit
04.07.2011
Programik mam juz dłuższy czas (fajnie sie dekompiluje modele), wiedzialem jak wykozystas sequence ale nie kontolery. dzięki za wytłumaczenie, zresztą nie tylko mi się przyda .
Użytkownik MarWit edytował ten post 14.07.2011 19:51
Użytkownik MarWit edytował ten post 14.07.2011 19:51
Cypis'
04.07.2011
można też takiego użyć ja takiego używam a nie widziałem o tym co R3X napisał, oczywiście ++
Użytkownik Cypis' edytował ten post 04.07.2011 13:59
entity_set_byte(ent, EV_BYTE_controller1, 0);//od 0 do 255
Użytkownik Cypis' edytował ten post 04.07.2011 13:59