AMX MOD X
Воскресенье, 25.01.2026, 16:18:02



Приветствую Вас Гость | RSS
[ Главная ] [ Рандом дроп позиция - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Рандом дроп позиция
BruteДата: Четверг, 11.09.2008, 19:55:15 | Сообщение # 1
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Помогите написать часть скрипта: дроп из игрока при смерти. А точнее мне нужно, чтобы вещь выпадала из игрока, и падала, не перед игроком, а рандомно вокруг него

Code
stock create_item(id, classname[], model[], speed)
{
   new eid = create_entity("info_target")
   entity_set_string(eid, EV_SZ_classname, classname)
   entity_set_model(eid, model)

   new Float:origin[3]
   entity_get_vector(id, EV_VEC_origin, origin)
   entity_set_vector(eid, EV_VEC_origin, origin)

   entity_set_int(eid, EV_INT_solid, SOLID_TRIGGER)
   entity_set_int(eid, EV_INT_movetype, MOVETYPE_TOSS)

   if(speed != 0)
   {
    new Float:velocity[3]
    get_global_vector(GL_v_forward, velocity)
    entity_get_vector(id, EV_VEC_velocity, velocity)
    velocity[0] = velocity[0]*speed
    velocity[1] = velocity[1]*speed
    velocity[2] = velocity[2]*speed
    entity_set_vector(eid, EV_VEC_velocity, velocity)
   }
}

Принимаю любые варианты: fakemeta или engine мне нет разницы.

Сообщение отредактировал Brute - Четверг, 11.09.2008, 19:56:27
 
DaTaДата: Четверг, 11.09.2008, 22:14:25 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
примитивный способ(случайная точка квадрата xy(куба xyz)) :
рандом флот -1.0 - 1.0 в трех проекциях - вот тебе и случайный вектор

можно только первые две проекции - тогда только в горизонтальной плоскости, fSpeed - прогнозируемая скорость:

vOrigin[0] = random_float(-1.0, 1.0)
vOrigin[1] = random_float(-1.0, 1.0)
vOrigin[2] = 0.0

xs_vec_normalize(vOrigin, vOrigin)
xs_vec_mul_scalar(vOrigin, fSpeed, vOrigin)

более случайный угол, см. fm_get_aim_origin(или както так)

 
BruteДата: Четверг, 11.09.2008, 22:21:33 | Сообщение # 3
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
может лучше построить вектор скорости, только хз как, даже не знаю от куда что брать. Как этот вектор вообще построить
 
DaTaДата: Четверг, 11.09.2008, 22:30:20 | Сообщение # 4
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
упс vOrigin == vVelocity
 
BruteДата: Суббота, 13.09.2008, 08:00:42 | Сообщение # 5
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
почти всегда, до всего дохожу сам!
Вот целая рабочая процедура:
Code
public CreateItem(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(random_float(-179.9, 179.9), degrees)
  velocity[1] = float(speed) * floatsin(random_float(-179.9, 179.9), degrees)
  entity_set_vector(eid, EV_VEC_velocity, velocity)
  angles[0] = 0.0
  entity_set_vector(eid, EV_VEC_angles, angles)
}

где "speed" - радиус(в точках) на который будет дропнута создаваемая итема.

Прикрепления: __.txt (0.8 Kb)


Сообщение отредактировал Brute - Суббота, 13.09.2008, 08:07:53
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026