Участник
Пользователь
- Сообщения
- 702
- Реакции
- 54
Как можно получить идентификатор владельца лука, стрел, неважно, здесь:
плагин от fantom
и здесь:
Или это невозможно?
Мне просто нужно менять ARROW_SPEED и ARROW_DAMAGE и для этого надо получить в обоих случаях идентификатор (id) владельца лука, а не идентификатор самой стрелы.
плагин от fantom
Код:
public ArrowTouch(const arrow, const ent) {
if (is_nullent(arrow)) {
return;
}
SetTouch(arrow, "");
set_entvar(arrow, var_flags, FL_KILLME);
set_entvar(arrow, var_nextthink, get_gametime());
if (is_nullent(ent) || get_entvar(ent, var_takedamage) == DAMAGE_NO) {
return;
}
rg_multidmg_clear();
rg_multidmg_add(arrow, ent, ARROW_DAMAGE, DMG_BULLET);
rg_multidmg_apply(arrow, get_entvar(arrow, var_owner));
}
Код:
fireArrow(id) {
new arrow = rg_create_entity("info_target", false);
if (is_nullent(arrow)) {
return 0;
}
set_entvar(arrow, var_classname, ARROW_CLASSNAME);
set_entvar(arrow, var_owner, id);
static Float:vecOrigin[3], Float:vecAngles[3], Float:vecScr[3], Float:ViewOfs[3];
static Float:vecForward[3], Float:vecRight[3], Float:vecUp[3];
get_entvar(id, var_origin, vecOrigin);
get_entvar(id, var_angles, vecAngles);
get_entvar(id, var_view_ofs, ViewOfs);
xs_vec_add(vecOrigin, ViewOfs, vecOrigin);
global_get(glb_v_forward, vecForward);
global_get(glb_v_right, vecRight);
global_get(glb_v_up, vecUp);
xs_vec_mul_scalar(vecForward, 1.0, vecForward);
xs_vec_mul_scalar(vecRight, 4.0, vecRight);
xs_vec_mul_scalar(vecUp, -4.0, vecUp);
vecOrigin[0] += vecForward[0] + vecRight[0] + vecUp[0];
vecOrigin[1] += vecForward[1] + vecRight[1] + vecUp[1];
vecOrigin[2] += vecForward[2] + vecRight[2] + vecUp[2];
set_entvar(arrow, var_angles, vecAngles);
set_entvar(arrow, var_v_angle, vecAngles);
set_entvar(arrow, var_origin, vecOrigin);
set_entvar(arrow, var_solid, SOLID_SLIDEBOX);
set_entvar(arrow, var_movetype, MOVETYPE_TOSS);
velocity_by_aim(id, ARROW_SPEED, vecScr);
set_entvar(arrow, var_velocity, vecScr);
engfunc(EngFunc_VecToAngles, vecScr, vecAngles);
set_entvar(arrow, var_angles, vecAngles);
set_entvar(arrow, var_v_angle, vecAngles) ;
engfunc(EngFunc_SetModel, arrow, ARROW_MODEL);
engfunc(EngFunc_SetSize, arrow, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0});
SetTouch(arrow, "ArrowTouch");
return arrow;
}
Мне просто нужно менять ARROW_SPEED и ARROW_DAMAGE и для этого надо получить в обоих случаях идентификатор (id) владельца лука, а не идентификатор самой стрелы.