←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak sprawić, by spadł?

Zablokowany

GoldeN - zdjęcie GoldeN 10.02.2011

Witam. Jak zrobić, aby ten model spadał z wysokości 300.0 na ziemie?


 public glaz(id)
{
new Float:origin[3], Float:angle[3];

entity_get_vector(id,EV_VEC_origin,origin)

new ent = create_entity("info_target")

entity_set_origin(ent,origin);

entity_set_float(ent,EV_FL_takedamage,DAMAGE_NO)
entity_set_float(ent,EV_FL_health,100.0)

entity_get_vector(id, EV_VEC_angles, angle);
angle[0] = 0.0;
entity_set_vector(ent, EV_VEC_angles, angle);

entity_set_string(ent,EV_SZ_classname,"glaz");
entity_set_model(ent,"models/big_rock.mdl");
entity_set_int(ent,EV_INT_solid, SOLID_NOT)

entity_set_byte(ent,EV_BYTE_controller1,125);
entity_set_byte(ent,EV_BYTE_controller2,125);
entity_set_byte(ent,EV_BYTE_controller3,125);
entity_set_byte(ent,EV_BYTE_controller4,125);

new Float:maxs[3] = {16.0,16.0,36.0}
new Float:mins[3] = {-16.0,-16.0,-36.0}
entity_set_size(ent,mins,maxs)

entity_set_float(ent,EV_FL_animtime,2.0)
entity_set_float(ent,EV_FL_framerate,1.0)
entity_set_int(ent,EV_INT_sequence,0);

drop_to_floor(ent)
}

Użytkownik GoldeN edytował ten post 10.02.2011 19:52
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie mgr inż. Pavulon 10.02.2011

Na ten przykład:
entity_set_int(ent, EV_INT_movetype, MOVETYPE_BOUNCE)
ale może inny movetype będzie cie zadowalał.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 10.02.2011


#include <xs>

public glaz(id)
{
new Float:fStartOrigin[3],Float:fEndOrigin[3] Float:fAngle[3];

entity_get_vector(id,EV_VEC_origin,fStartOrigin)

xs_vec_copy(fStartOrigin,fEndOrigin)

fEndOrigin[2] += 300.0;

new Float:fRet[3];
new trace = fm_trace_line(id,fStartOrigin,fEndOrigin,fRet)

if(trace){
return PLUGIN_CONTINUE;
}

new ent = create_entity("info_target")

entity_set_origin(ent,origin);

entity_set_float(ent,EV_FL_takedamage,DAMAGE_NO)
entity_set_float(ent,EV_FL_health,100.0)

entity_get_vector(id, EV_VEC_angles, fAngle);
fAngle[0] = 0.0;
entity_set_vector(ent, EV_VEC_angles, fAngle);

entity_set_string(ent,EV_SZ_classname,"glaz");
entity_set_model(ent,"models/big_rock.mdl");
entity_set_int(ent,EV_INT_solid, SOLID_NOT)
entity_set_int(ent,EV_INT_movetype,MOVETYPE_TOSS)
entity_set_int(ent,EV_FL_gravity,1.0)

entity_set_byte(ent,EV_BYTE_controller1,125);
entity_set_byte(ent,EV_BYTE_controller2,125);
entity_set_byte(ent,EV_BYTE_controller3,125);
entity_set_byte(ent,EV_BYTE_controller4,125);

new Float:maxs[3] = {16.0,16.0,36.0}
new Float:mins[3] = {-16.0,-16.0,-36.0}
entity_set_size(ent,mins,maxs)

entity_set_float(ent,EV_FL_animtime,2.0)
entity_set_float(ent,EV_FL_framerate,1.0)
entity_set_int(ent,EV_INT_sequence,0);
return PLUGIN_CONTINUE;
}

stock fm_trace_line(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3]){
engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0);

new ent = get_tr2(0, TR_pHit);
get_tr2(0, TR_vecEndPos, ret);

return pev_valid(ent) ? ent : 0;
}
Odpowiedz

GoldeN - zdjęcie GoldeN 10.02.2011


#include <xs>

public glaz(id)
{
new Float:fStartOrigin[3],Float:fEndOrigin[3] Float:fAngle[3];

entity_get_vector(id,EV_VEC_origin,fStartOrigin)

xs_vec_copy(fStartOrigin,fEndOrigin)

fEndOrigin[2] += 300.0;

new Float:fRet[3];
new trace = fm_trace_line(id,fStartOrigin,fEndOrigin,fRet)

if(trace){
return PLUGIN_CONTINUE;
}

new ent = create_entity("info_target")

entity_set_origin(ent,origin);

entity_set_float(ent,EV_FL_takedamage,DAMAGE_NO)
entity_set_float(ent,EV_FL_health,100.0)

entity_get_vector(id, EV_VEC_angles, fAngle);
fAngle[0] = 0.0;
entity_set_vector(ent, EV_VEC_angles, fAngle);

entity_set_string(ent,EV_SZ_classname,"glaz");
entity_set_model(ent,"models/big_rock.mdl");
entity_set_int(ent,EV_INT_solid, SOLID_NOT)
entity_set_int(ent,EV_INT_movetype,MOVETYPE_TOSS)
entity_set_int(ent,EV_FL_gravity,1.0)

entity_set_byte(ent,EV_BYTE_controller1,125);
entity_set_byte(ent,EV_BYTE_controller2,125);
entity_set_byte(ent,EV_BYTE_controller3,125);
entity_set_byte(ent,EV_BYTE_controller4,125);

new Float:maxs[3] = {16.0,16.0,36.0}
new Float:mins[3] = {-16.0,-16.0,-36.0}
entity_set_size(ent,mins,maxs)

entity_set_float(ent,EV_FL_animtime,2.0)
entity_set_float(ent,EV_FL_framerate,1.0)
entity_set_int(ent,EV_INT_sequence,0);
return PLUGIN_CONTINUE;
}

stock fm_trace_line(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3]){
engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0);

new ent = get_tr2(0, TR_pHit);
get_tr2(0, TR_vecEndPos, ret);

return pev_valid(ent) ? ent : 0;
}


Zmieniłem z:

entity_set_int(ent,EV_FL_gravity,1.0)


Na:

entity_set_int(ent,EV_FL_gravity,1)


Ale wogóle. nie wyświetla się efekt.

@Edit:

Pojawia się, ale na ziemi i w dużej odległości od gracza.
Użytkownik GoldeN edytował ten post 10.02.2011 20:40
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 10.02.2011

entity_set_origin(ent,origin);

na
entity_set_origin(ent,fEndOrigin);
Odpowiedz

GoldeN - zdjęcie GoldeN 10.02.2011

Okej, ale ten model nie ląduje centralnie na ziemi, tylko na wysokości głowy.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 11.02.2011

powinno byc
entity_set_float(ent, EV_FL_gravity, 1.0)
dziwne :D
Odpowiedz

GoldeN - zdjęcie GoldeN 11.02.2011

powinno byc
entity_set_float(ent, EV_FL_gravity, 1.0)
dziwne :D


Ale wyskakuj tag mistmatch, a jak zrobić, aby ten model był na ziemi?
I drugie pytanie, jak mogę zrobić, aby model podążał za kimś?
Odpowiedz
Zablokowany