Jest to znaleziony przeze mnie stock, który działa na 100%.
Piszę ten temat, gdyż entity_set_aim od "poprawionego" kodu DarkGL nie działa mi, lecz 100% pewien jestem, że używam go dobrze.
o to kod:
stock entity_set_aim(ent1,ent2,Float:offset2[3],region)
{
if(!is_valid_ent(ent1) || !is_valid_ent(ent2) || ent1==ent2)
{
return 0;
}
static Float:offset[3]
offset[0]=offset2[0], offset[1]=offset2[1], offset[2]=offset2[2]
static Float:ent1origin[3]
static Float:ent2origin[3]
static Float:view_angles[3]
entity_get_vector(ent2,EV_VEC_origin,ent2origin)
if(ent1>32)
entity_get_vector(ent1,EV_VEC_origin,ent1origin)
else
{
static origin[3]
get_user_origin(ent1,origin,1)
IVecFVec(origin,ent1origin)
}
static bool:player
static buttons
if(ent2=0.0)
x=1
if(ent2origin[1]>=0.0)
y=1
if(ent2origin[2]>=0.0)
z=1
if(ent2origin[0]==0.0)
ent2origin[0] = 0.000001
if(ent2origin[1]==0.0)
ent2origin[1] = 0.000001
if(ent2origin[2]==0.0)
ent2origin[2] = 0.000001
ent2origin[0]=floatabs(ent2origin[0])
ent2origin[1]=floatabs(ent2origin[1])
ent2origin[2]=floatabs(ent2origin[2])
view_angles[1] = floatatan2(ent2origin[1],ent2origin[0],degrees)
//1=positive 0=negative
if(x && !y)
view_angles[1] = -1 * ( 180 - view_angles[1] )
if(!x && !y)
view_angles[1] = ( 180 - view_angles[1] )
if(!x && y)
view_angles[1] = view_angles[1] = 180 + floatabs(180 - view_angles[1])
if(x && !y)
view_angles[1] = view_angles[1] = 0 - floatabs(-180 - view_angles[1])
if(!x && !y)
view_angles[1] *= -1
while(view_angles[1]>180.0)
view_angles[1] -= 180
while(view_angles[1]<-180.0)
view_angles[1] += 180
if(view_angles[1]==180.0 || view_angles[1]==-180.0)
view_angles[1]=-179.999999
view_angles[0] = floatasin(ent2origin[2] / hyp,degrees)
if(z)
view_angles[0] *= -1
entity_set_int(ent1,EV_INT_fixangle,1)
entity_set_vector(ent1,EV_VEC_v_angle,view_angles)
entity_set_vector(ent1,EV_VEC_angles,view_angles)
entity_set_int(ent1,EV_INT_fixangle,1)
return 1;
}
ent1 - ID enta, gracza
ent2 - ID enta, gracza
Float:offset[3], możemy podać koordynaty odejścia od głownych koordynatów.
Kość:
Kość: Jeżeli ent2 jest graczem lub NPC, region może zostać użyty
Notka: Nie będzie to 100% odwzorowanie kości, lecz starałem się użyć
dokładnych danych
0 = Domyślnie ( Na podanego ent'a )
1 = głowa
2 = brzuch
3 = prawie ramie
4 = lewe ramie
5 = prawa noga
6 = lewa noga
Link od źródła:
http://pbox.ca/1s2u