[ROZWIĄZANE] Problem z ustawieniem bytu re...
Rivit
17.11.2014
Witam, mam taki kod:
public StworzEnta() { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) if(!pev_valid(ent)) return 0; set_pev(ent, pev_classname, "granica_rushu") dllfunc(DLLFunc_Spawn, ent) new Float:mins[3], Float:max[3] mins[0] = float(origin_granica[0]) mins[1] = float(origin_granica[2]) mins[2] = float(origin_granica[4]) max[0] = float(origin_granica[1]) max[1] = float(origin_granica[3]) max[2] = float(origin_granica[5]) set_pev(ent, pev_mins, mins) set_pev(ent, pev_maxs, max) set_pev(ent, pev_solid, SOLID_TRIGGER) fm_set_user_rendering(ent, kRenderFxGlowShell, 0, 255, 0, kRenderGlow, 30) return PLUGIN_CONTINUE }
Jednak on nie działa, czyli ent nie ma zielonej.
Byt się tworzy (sprawdzalem komenda entity_dump), mins i max ma wlasciwe prowadzilem sobie linie do tych punktow).
Co może być przyczyną braku powłoki?
grankee
18.11.2014
Rozumiem, że widziałeś naocznie to entity w porządanym miejscu? Upewniam się, bo nie widzę żebyś ustawiał origin. m_eel widzi ten byt tam gdzie byś go chciał? sprawdź
Rivit
18.11.2014
m_eel widzi byt
Zarejestrowałem sobie tucha dla tego bytu ale nic się nie dzieje
grankee
19.11.2014
Nie wiem jak jest teraz, ale 3 lata temu jak próbowałem zrobić dotykalne entity to w FM nie szło nijak.
Spróbuj użyć engine. i koniecznie entity_set_origin oraz entity_set_size a takze ustaw minsy i maxy. Nie jestem pewny, ale zeby dalo sie dotknac, a co za tym idzie wykryc touch forwardem trzeba ustawic solid_box ew solid_bsp
Rivit
20.11.2014
Gdzie mam ustawić origin enta (na jaką wartość)?
I czym się różni rozmiar enta od jego origin ? Nie czaję tego kompletnie. Rozmiar to rozmiar,a ent znajduje się w całym obszarze ustalonym w size. Może ktoś wytłumaczyć?
grankee
20.11.2014
origin to położenie, a size to rozmiar
masz tu przykladowy kod tworzacy byt obok Ciebie, baw się i testuj
new ent=create_entity("func_wall") entity_set_string(ent,EV_SZ_classname,"testowy_ent") entity_set_model(ent,model) new Float:origin[3] entity_get_vector(id,EV_VEC_origin,origin) origin[0]+=130 new Float:mins[3]={-100.0,-100.0,-100.0} new Float:maxs[3]={100.0,100.0,100.0} entity_set_size(ent,mins,maxs) entity_set_origin(ent,origin) entity_set_int(ent,EV_INT_solid,SOLID_BBOX) entity_set_int(ent,EV_INT_movetype,MOVETYPE_FLY)
Rivit
20.11.2014
Dobra, a różnica między tym:
new ent=create_entity("func_wall") entity_set_string(ent,EV_SZ_classname,"testowy_ent")
Czym się różni classname od tego pierwszego?
Uzywam tego kodu i nie chce zaskoczyć:
public StworzEnta() { new ent = create_entity("info_target") if(!is_valid_ent(ent)) return 0; entity_set_string(ent, EV_SZ_classname, "granica_rushu") new Float:mins[3], Float:max[3]; mins[0] = float(origin_granica[0]) mins[1] = float(origin_granica[2]) mins[2] = float(origin_granica[4]) max[0] = float(origin_granica[1]) max[1] = float(origin_granica[3]) max[2] = float(origin_granica[5]) entity_set_size(ent, mins, max) entity_set_origin(ent, mins) entity_set_int(ent, EV_INT_solid, SOLID_BBOX) return PLUGIN_CONTINUE }
grankee
21.11.2014
Uparty jesteś jak osioł Dałem Ci działający kod, wyciąłeś ostatnią linijkę i piszesz, że nie działa.
Rivit
21.11.2014
Nie zauwazylem movetype...
A czemu przy tworzeniu enta (w Twoim kodzie) podajesz func_wall a potem zmieniasz classname? Nie mozna od razu dac takiego jakie sie chce?
grankee
21.11.2014
Spróbuj. Będzie działało-można. Ja ten kod znalazłem gdzieś w swoich starociach. Nie pamiętam niestety dlaczego było to tak a nie inaczej, a nie chciało mi się teraz tego testować.
Coś mi się kojarzy jakoby jedynie pewne narzucone klasy (przy tworzeniu) jdynie mogły być dotykalne, ale to może być głupota.
Użytkownik grankee edytował ten post 21.11.2014 11:33
Rivit
24.11.2014
Czy żeby wykrywało dotknięcie bytu musi być ustawiony model ?
KOD
public StworzEnta2(id) { new ent=create_entity("func_wall") entity_set_string(ent,EV_SZ_classname,"testowy_ent") //entity_set_model(ent,model) new Float:origin[3] entity_get_vector(id,EV_VEC_origin,origin) origin[0]+=130 new Float:mins[3]={-100.0,-100.0,-100.0} new Float:maxs[3]={100.0,100.0,100.0} entity_set_size(ent,mins,maxs) entity_set_origin(ent,origin) entity_set_int(ent,EV_INT_solid,SOLID_BBOX) entity_set_int(ent,EV_INT_movetype,MOVETYPE_FLY) return PLUGIN_CONTINUE }
public plugin_init() { register_touch("player", "testowy_ent", "fwToucxh") register_touch("testowy_ent", "player", "fwToucxh") register_clcmd("say /crt", "StworzEnta2") }
Ten kod zawiesza serwer po chwili jak wpisze /crt
Rivit
25.11.2014
Okazało się że jest jakiś problem z dotykaniem entu jeśli nie ma on modelu (crashowało serwer), poradziłem sobie dając model łuski
Close
dasiek
26.11.2014
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,

Z pozdrowieniami,
Zespół AMXX.PL