Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

@abramcumner я правильно этот пример перевел на lua?

function is_actor_looking_to_pos( pos, radius )
  local k = vector():sub( pos, device().cam_pos ):normalize()
  local b = k:dotproduct( device().cam_dir )
  local c = k:dotproduct( k ) - radius * radius
  local d = b * b - c
  if d >= 0 then
    local sqrtfd = math.sqrt( d )
    local t1     = -b + sqrtfd
    local t2     = -b - sqrtfd
    local min_t  = math.min( t1, t2 )
    local t      = min_t > 0 and min_t or math.max( t1, t2 )
    return t > 0
  end
  return false
end

 

Поделиться этим сообщением


Ссылка на сообщение

@nasar75 я бы посоветовал не заниматься борьбой с последствиями, а один раз исправить причину этого. Вот тут можно посмотреть, в чем причина и один из вариантов исправления:

https://github.com/dsh2dsh/op2ogse/commit/f726609396ce7115ee4cd86fcc7cc7a314cf1349

 

  • Полезно 4

Поделиться этим сообщением


Ссылка на сообщение

@Jekyll не исправит. Нужно, как минимум, разрегистрировать его в смарт террейне, если он там зарегистрирован. Ещё хорошо бы отрегистрировать его в респаунере, который его создал, если если мод был респаунером создан. Ну и в остальных местах отрегистрировать, если он ещё где-то зарегистрирован.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

@Pir@t@s вообще, можно отбиндить соотв. кнопки. Но если

1 hour ago, Pir@t@s said:

знание скриптов 0

то я бы посоветовал "ох, не ходил бы ты туда, Стрелок".

 

Вот скрипт, который делает "поломку" ПДА с помощью отбиндивания кнопок: https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_broken_pda.script

Правда я сомневаюсь, что это тебе поможет.

 

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

@_Sk8_AsTeR_ вероятно потому, что на каждом апдейте ты делаешь новый level.add_call(). Вообще не понятно, зачем тебе все так сложно. Вызывай из апдейта сразу action_timer. Ведь там же есть проверка, наступило нужное время или нет.

Поделиться этим сообщением


Ссылка на сообщение
1 hour ago, _Sk8_AsTeR_ said:

Оказывается почему-то что всегда переменная time_news перманентно больше игрового времени в данный момент. Как так?

Ну почему, почему. Потому, что в начале функции ты делаешь её больше. time_news устанавливай снаружи функции. А потом внутри функции, внутри if-а, что бы в следующий раз выполнялась.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
21 minutes ago, Nazgool said:

local actor = db.actor

Это экономия на спичках. Имеет смысл только в очень частых и нагруженных циклах и то, сначала бы померить нужно. Возможно в условиях выполнения около 50 раз в секунду, если мы возьмем апдейт актора, это ни при каких условиях не будет иметь смысла.

 

  • Согласен 3

Поделиться этим сообщением


Ссылка на сообщение

@Dennis_Chikin все, что угодно, может стать всем, чем угодно, в результате очепятки. И actor на следующей строке с лёгкостью может стать aktor-ом.

 

Поделиться этим сообщением


Ссылка на сообщение

@Graff46 в x-ray extensions есть коллбек, вызываемый перед обработкой хита. В него передается структура, в которой есть, в том числе, и тип хита. Вот только я не помню, есть расшифровка этой структуры в XE или это уже из ogse.dll.

 

Поделиться этим сообщением


Ссылка на сообщение

@Kirgudu @CRAZY_STALKER666 насколько я помню, значение параметра combat_ignore никак не используется. Наличие этого параметра с любым значением лишь включает обработку combat_ignore_cond.

Поделиться этим сообщением


Ссылка на сообщение

@Graff46 это вопрос, пожалуй, для другой темы. Вот пример, сейчас уже не используется, но раньше я его использовал:

https://github.com/dsh2dsh/op2ogse/blob/8f94729861b177b039eb58db4ca93e48b69bdb1c/gamedata/scripts/dsh/dsh.script#L2426

 

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

@Metro_Rus исчезновение или удаление? Это несколько разные вещи. Вот логика непися, который стоит на месте, куда поставили, после инфопоршня "dragunov_aks_done" дожидается, когда актор отойдет на 50 метров и самоудаляется:

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/config/dsh/logic/l11_pripyat/dragunof_npc.ltx

Вот та самая функция, которая вызывается из этой логики для удаления:

https://github.com/dsh2dsh/op2ogse/blob/8f94729861b177b039eb58db4ca93e48b69bdb1c/gamedata/scripts/dsh/dsh.script#L2331

 

Все это, естественно, для осмысления, а не для тупого копирования.

 

Изменено пользователем dsh
  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...