←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Problem z ustawieniem bytu re...

Zablokowany

  • +
  • -
Rivit - zdjęcie 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?

Odpowiedz

  • +
  • -
grankee - zdjęcie 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ź

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 18.11.2014

m_eel widzi byt

 

Zarejestrowałem sobie tucha dla tego bytu ale nic się nie dzieje

Odpowiedz

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

Odpowiedz

  • +
  • -
Rivit - zdjęcie 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ć?

Odpowiedz

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

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

  • +
  • -
grankee - zdjęcie grankee 21.11.2014

Uparty jesteś jak osioł:D Dałem Ci działający kod, wyciąłeś ostatnią linijkę i piszesz, że nie działa. 

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 21.11.2014

aaaa,
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?
Odpowiedz

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

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

Odpowiedz

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

Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 26.11.2014

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany