|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Построение вектора дропа
|
|
| Brute | Дата: Четверг, 28.08.2008, 13:34:25 | Сообщение # 1 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Нужно запрограммировать вектор дропа оружия. Ентити должно родится в той точке, где стоит игрок(это работает), и полететь туда, куда направлен игрок(летит! Но совсем не туда!). Code public CreateDropItem(id) { new eid = create_entity("info_target") //получаем entity index от движка
entity_set_string(eid, EV_SZ_classname, "weaponbox") //создаём класс ентити entity_set_model(eid, "models/w_ak74.mdl") //используем модель ак47
// setup entity start origin new origin[3] get_user_origin(id, origin, 0) //получаем позицию игрока new Float:ent_origin[3] ent_origin[0]=float(origin[0]) ent_origin[1]=float(origin[1]) ent_origin[2]=float(origin[2]) entity_set_origin(eid, ent_origin) //устанавливаем стартовую позицию ентити entity_set_int(eid, EV_INT_solid, SOLID_TRIGGER) //устанавливаем твердость ентити entity_set_int(eid, EV_INT_movetype, MOVETYPE_TOSS) //устанавливаем тип перемещения в пространстве entity_set_edict(eid, EV_ENT_owner, id) //устанавливаем ентити хозяина
//-------------------------------------------------------------- // setup entity angles new Float:ent_angles[3] entity_get_vector(id, EV_VEC_angles, ent_angles) //получаем угол игрока entity_set_vector(eid, EV_VEC_angles, ent_angles) //устанавливаем угол ентити такой-же, как и у игрока //-------------------------------------------------------------- //А ТУТ Я ВООБЩЕ НЕХРЕНА НЕ ПОНИМАЮ, ЧТО И КАК, И ДЛЯ ЧЕГО ЭТО НУЖНО
// setup entity velocity new Float:ent_anglevec[3] entity_get_vector(id, EV_VEC_v_angle, ent_anglevec) entity_set_vector(eid, EV_VEC_v_angle, ent_anglevec)
get_global_vector(GL_v_forward, ent_anglevec) new Float:ent_velocity[3] ent_velocity[0] = ent_anglevec[0] * 350 ent_velocity[1] = ent_anglevec[1] * 350 ent_velocity[2] = ent_anglevec[2] * 350 entity_set_vector(eid, EV_VEC_velocity, ent_velocity) }
|
| |
|
|
| draft | Дата: Четверг, 28.08.2008, 14:09:15 | Сообщение # 2 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| 1) Что это за entity? 2) Я не вижу в коде функции, которая говорит entity куда-то лететь. Просто установлена скорость и направление.
|
| |
|
|
| DaTa | Дата: Четверг, 28.08.2008, 14:20:46 | Сообщение # 3 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| vector.inc Code /* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */ native velocity_by_aim(iIndex, iVelocity, Float:vRetValue[3]);
|
| |
|
|
| Brute | Дата: Четверг, 28.08.2008, 14:47:49 | Сообщение # 4 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (draft) 2) Я не вижу в коде функции, которая говорит entity куда-то лететь. Просто установлена скорость и направление. Ну напиши тогда код, как это должно выглядеть.Quote (DaTa) /* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */ native velocity_by_aim(iIndex, iVelocity, Float:vRetValue[3]); /* Дает Вам скорость в направлении, игрок смотрит, Скорость - множитель. */ Это скорость, а мне бы направление, и объяснение как вектор построить  Добавлено (2008-08-28, 2:47 Pm) --------------------------------------------- Однако работает! Code public CreateDropItem(id) { new eid = create_entity("info_target")
entity_set_string(eid, EV_SZ_classname, "weaponbox") entity_set_model(eid, "models/ak47.mdl")
new origin[3] get_user_origin(id, origin, 0) new Float:ent_origin[3] ent_origin[0]=float(origin[0]) ent_origin[1]=float(origin[1]) ent_origin[2]=float(origin[2]) entity_set_origin(eid, ent_origin)
entity_set_int(eid, EV_INT_solid, SOLID_TRIGGER) entity_set_int(eid, EV_INT_movetype, MOVETYPE_TOSS) entity_set_edict(eid, EV_ENT_owner, id)
new Float:ent_angles[3] entity_get_vector(id, EV_VEC_angles, ent_angles) entity_set_vector(eid, EV_VEC_angles, ent_angles)
new Float:ent_velocity[3] velocity_by_aim(id, 350, ent_velocity) entity_set_vector(eid, EV_VEC_velocity, ent_velocity) } СПАСИБО!
|
| |
|
|
| DaTa | Дата: Четверг, 28.08.2008, 14:49:28 | Сообщение # 5 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Float:vRetValue[3] - вектор скорости Code static Float:vVelocity[3] velocity_by_aim(id, 300, vVelocity) set_pev(id2, pev_velocity, vVelocity) id2 будет двигаться в направлении, куда смотрит id, со скалярной скоростью 300
|
| |
|
|
| Brute | Дата: Четверг, 28.08.2008, 15:02:33 | Сообщение # 6 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (DaTa) id2 будет двигаться в направлении, куда смотрит id, со скалярной скоростью 300 Пока не достигнет земли, это я уже проверил. Code entity_set_vector(eid, EV_VEC_v_angle, ent_anglevec) get_global_vector(GL_v_forward, ent_anglevec) А это что за вектора с префиксом V
|
| |
|
|
| DaTa | Дата: Четверг, 28.08.2008, 15:19:00 | Сообщение # 7 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (Brute) Пока не достигнет земли, это я уже проверил. можешь попробывать устанавливать MOVETYPE разный или реализовать свою обработку физики, если это тебя не устраивает Quote (Brute) А это что за вектора с префиксом V EV_VEC_v_angle(pev_v_angel, vec3_t v_angle) - углы взгляда игрока, входе x, y, roll(поворот экрана вокруг центра) HLSDK pm_move Code // up / down #define PITCH 0 // left / right #define YAW 1 // fall over #define ROLL 2 GL_v_forward(glb_v_forward, gpGlobals->v_forward) - нормаль прямого вектора, результат подсчета некоторых функций движка
Сообщение отредактировал DaTa - Четверг, 28.08.2008, 15:24:18 |
| |
|
|
| Brute | Дата: Суббота, 13.09.2008, 08:04:18 | Сообщение # 8 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| почти всегда, до всего дохожу сам! Вот целая рабочая процедура: Code public CreateDrop(id, classname[], model[], speed) { new eid = create_entity("info_target")
entity_set_string(eid, EV_SZ_classname, classname) entity_set_model(eid, model)
entity_set_int(eid, EV_INT_solid, SOLID_TRIGGER) entity_set_int(eid, EV_INT_movetype, MOVETYPE_TOSS) entity_set_edict(eid, EV_ENT_owner, id)
new Float:origin[3], Float:angles[3], Float:velocity[3] entity_get_vector(id, EV_VEC_origin, origin) entity_get_vector(id, EV_VEC_angles, angles)
entity_set_vector(eid, EV_VEC_origin, origin) velocity[0] = float(speed) * floatcos(angles[1], degrees) velocity[1] = float(speed) * floatsin(angles[1], degrees) entity_set_vector(eid, EV_VEC_velocity, velocity) angles[0] = 0.0 entity_set_vector(eid, EV_VEC_angles, angles) } где "speed" - длина вектора дропа в точках(растоянее на которое итем будет выкинут).
Сообщение отредактировал Brute - Суббота, 13.09.2008, 08:04:37 |
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |