←  Gotowe funkcje

AMXX.pl: Support AMX Mod X i SourceMod

»

Tworzenie/Animacja Enta (Engine)

  • +
  • -
MarWit - zdjęcie MarWit 29.06.2011

Napisałem sobie 2 funkcje do tworzenia i animacji entów. Myślę ze się może komuś przydać.

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 Dołączona grafika

Załączone pliki


Użytkownik MarWit edytował ten post 29.06.2011 16:10
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 04.07.2011

Istnieje funkcja do pobrania ustawień naturalnych dla konkretnej sekwencji modelu
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
Odpowiedz

  • +
  • -
MarWit - zdjęcie 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
Odpowiedz

  • +
  • -
R3X - zdjęcie 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
set_controller(barney, 0, 60.0);
set_controller(barney, 1, 22.0);
Odpowiedz

  • +
  • -
MarWit - zdjęcie 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
Odpowiedz

  • +
  • -
Cypis' - zdjęcie 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 ++
entity_set_byte(ent, EV_BYTE_controller1, 0);//od 0 do 255

Użytkownik Cypis' edytował ten post 04.07.2011 13:59
Odpowiedz