←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Kopiowanie entity na który patrze


Best Answer Zuzza 13.01.2021 10:32

Klonowanie klocka o podanym id, funkcja tworzy identyczną kopie i zwraca id nowo utworzonego klocka.

public createClone(entView){
	new ent=create_entity("func_wall")
	if( !pev_valid(ent) ){
		return -1;
	}
	new szClassName[16]
	pev(entView, pev_classname, szClassName, sizeof(szClassName))
	set_pev(ent,pev_classname, szClassName)
	
	pev(entView, pev_model, szClassName, sizeof(szClassName))
	set_pev(ent,pev_model, szClassName)
	
	
	set_pev(ent,pev_solid, pev(entView, pev_solid))
	set_pev(ent,pev_movetype, pev(entView, pev_movetype))
	set_pev(ent,pev_modelindex, pev(entView, pev_modelindex))
	set_pev(ent,pev_body, pev(entView, pev_body))
	set_pev(ent,pev_skin, pev(entView, pev_skin))
	set_pev(ent,pev_flags, pev(entView, pev_flags))
	set_pev(ent,pev_spawnflags, pev(entView, pev_spawnflags))
	set_pev(ent,pev_team, pev(entView, pev_team))
	
	new Float:fFloat[3]
	pev(entView, pev_mins, fFloat)
	set_pev(ent, pev_mins, fFloat)
	
	pev(entView, pev_maxs, fFloat)
	set_pev(ent, pev_maxs, fFloat)	
	
	pev(entView, pev_vuser3, fFloat)
	set_pev(ent, pev_vuser3, fFloat)
	
	pev(entView, pev_vuser1, fFloat)
	set_pev(ent, pev_vuser1, fFloat)	
	
	pev(entView, pev_origin, fFloat)
	entity_set_origin(ent, fFloat)
	set_pev(ent, pev_iuser4, 3)
	
	return ent;
		
}
Go to the full post

  • +
  • -
TafiT's Photo TafiT 11.01.2021

Witam, próbuje skopiować entity na który patrzę, funkcja jest wywoływana komendą /copy. Niestety nic się nie dzieje po jej wywołaniu.
 

public Skopiuj(id){
	//new ent = get_tr2(trace, TR_pHit)
	new ent, bodypart
	get_user_aiming (id,ent,bodypart)
	
	if(entity_get_int( ent, EV_INT_iuser4 ) == id){
		new NazwaEnta[32], NazwaModelu[32], Float:bmins[3],Float:bmaxs[3];
		
		entity_get_string(ent, EV_SZ_classname, NazwaEnta, sizeof(NazwaEnta))
		new byt=create_entity(NazwaEnta)
		
		pev(ent, pev_model, NazwaModelu)
		entity_set_model(byt,NazwaModelu)
		
		entity_get_vector(ent, EV_VEC_mins, bmins )
		entity_get_vector(ent, EV_VEC_maxs, bmaxs )
		entity_set_size(byt,bmins,bmaxs)
		
		new Float:origin[3]
		entity_get_vector(ent,EV_VEC_origin,origin)
		origin[0]+=50.0
		entity_set_origin(byt,origin)
		
		entity_set_int(byt,EV_INT_solid,SOLID_BBOX)//ustawiamy dotykalność bytu (bez ustawionego movetype ( MOVETYPE_NONE ) nie przynosi efektu)
		entity_set_int(byt,EV_INT_movetype,MOVETYPE_TOSS)//ustawiamy sposób poruszania się bytu, wybrany tutaj to po prostu kolidowanie z entitami, grawitacja
	}
}

jakieś pomysły? ;d

Quote

  • +
  • -
Vakos's Photo Vakos 11.01.2021

Z tego co pamiętam taka opcja była dostępna w modzie BaseBuilder przy kopiowaniu klocków. Nie wiem czy było to w silniku czy jako osobny plugin ale może Cię trochę naprowadzę na trop.

Quote

  • +
  • -
TafiT's Photo TafiT 11.01.2021

Właśnie to piszę do BB i funkcja powinna działac aczkolwiek nie działa, jest to drobny błąd z którym i tak sobie poradze ale zejdzie mi z tym troche czasu więc napisałem o poradę tutaj

Quote

  • +
  • -
Best Answer Zuzza's Photo Zuzza 13.01.2021

Klonowanie klocka o podanym id, funkcja tworzy identyczną kopie i zwraca id nowo utworzonego klocka.

public createClone(entView){
	new ent=create_entity("func_wall")
	if( !pev_valid(ent) ){
		return -1;
	}
	new szClassName[16]
	pev(entView, pev_classname, szClassName, sizeof(szClassName))
	set_pev(ent,pev_classname, szClassName)
	
	pev(entView, pev_model, szClassName, sizeof(szClassName))
	set_pev(ent,pev_model, szClassName)
	
	
	set_pev(ent,pev_solid, pev(entView, pev_solid))
	set_pev(ent,pev_movetype, pev(entView, pev_movetype))
	set_pev(ent,pev_modelindex, pev(entView, pev_modelindex))
	set_pev(ent,pev_body, pev(entView, pev_body))
	set_pev(ent,pev_skin, pev(entView, pev_skin))
	set_pev(ent,pev_flags, pev(entView, pev_flags))
	set_pev(ent,pev_spawnflags, pev(entView, pev_spawnflags))
	set_pev(ent,pev_team, pev(entView, pev_team))
	
	new Float:fFloat[3]
	pev(entView, pev_mins, fFloat)
	set_pev(ent, pev_mins, fFloat)
	
	pev(entView, pev_maxs, fFloat)
	set_pev(ent, pev_maxs, fFloat)	
	
	pev(entView, pev_vuser3, fFloat)
	set_pev(ent, pev_vuser3, fFloat)
	
	pev(entView, pev_vuser1, fFloat)
	set_pev(ent, pev_vuser1, fFloat)	
	
	pev(entView, pev_origin, fFloat)
	entity_set_origin(ent, fFloat)
	set_pev(ent, pev_iuser4, 3)
	
	return ent;
		
}
Quote