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

AI additions


Bak

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

Ребята, кто шарит - помогите. Битый час пытаюсь приладить этот пак к чистому АМК 1.4.1, и на выхлопе безлоговый вылет. Может кто уже делал, или увидит где я там что поломал Pastebin.

 

  • Не нравится 1

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


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

upd.

Худо-бедно прикрутил, полёт нормальный. Один неприятный косяк вылез - в баре осведомитель и бармен говорят фразы посетителей. Вроде как-бы к модулю rx_sound не относится, какие-то затыки в xr_kamp скорее, но шашки с эвалюаторами ничего не дали.

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


Ссылка на сообщение
(изменено)

Плюс к тому, неписей плющит во время выброса, когда они находятся в укрытии - тоже не вышло ничего переделать под новый state_mgr.

Код там такой:

Скрытый текст

function action_inhide:initialize()
  action_base.initialize(self)
  local npc=self.object
  npc:set_detail_path_type(move.line)
  npc:set_path_type(game_object.level_path)
  if self.st.hide==nil then self.st.hide={} end
  if self.st.hide.place==nil then self.st.hide.place={} end
  -- get_console():execute("load ~~~inhide init "..npc:character_name())
  -- get_console():execute("flush")
  -- Выбираем точку внутри укрытия
  local ang0=math.random(0,360)
  local r0=math.random(1,15)
  local v0=vector():set(1,0,0)
  self.lvid=npc:level_vertex_id()
  local stop=false
  for r=r0,0,-1 do
    for ang=ang0,ang0+360,30 do
      local v=utils.vector_rotate_y(v0,ang)
      local lvid=level.vertex_in_direction(self.st.hide.center,v,r)
      if npc:accessible(lvid) and (not self.st.hide.place[lvid]) and
         amk_mod.check_npc_in_hideout(level.vertex_position(lvid),self.st.hide) and
         level.vertex_position(lvid):distance_to(level.vertex_position(self.st.hide.center))>r/1.5 then
        self.lvid=lvid
        stop=true
        break
      end
      if stop then break end
    end
  end
  state_mgr.set_state(npc,"raid")
  self.begin=time_global()
  self.kicktime=time_global()+5000
  utils.send_to_nearest_accessible_vertex(npc,self.lvid)
  self.tgtvec=control_entrance_vec(self.lvid,self.st.hide)
  self.st.hide.place[self.lvid]=true
 end

function action_inhide:execute()
  action_base.execute(self)
  local npc=self.object
  -- get_console():execute("load ~~~inhide exec "..npc:character_name())
  -- get_console():execute("flush")
  if npc:level_vertex_id()==self.lvid and self.begin and self.begin<time_global() then
    self.begin=nil
    state_mgr.set_state(npc,"hide_na",nil,nil,{look_position=self.tgtvec})
  elseif npc:level_vertex_id()~=self.lvid then
    if self.kicktime<time_global() then
      if not self.begin then
        state_mgr.set_state(npc,"raid")
      end
      self.kicktime=time_global()+5000
      utils.send_to_nearest_accessible_vertex(npc,self.lvid)
      self.begin=0
    end
  end
end

function action_inhide:finalize()
  action_base.finalize(self)
  local npc=self.object
  if self.st.hide and self.st.hide.place then
    self.st.hide.place[self.lvid]=nil
  end
  -- get_console():execute("load ~~~inhide fin "..npc:character_name())
  -- get_console():execute("flush")
end

function control_entrance_vec(vtx,hide)
  local delt=level.vertex_position(vtx):sub(level.vertex_position(hide.center))
  local tgtvtx=vector():set(0,0,0)
  local maxdist=-10000
  for i,v in ipairs(hide.entrances) do
    local delt1=level.vertex_position(v):sub(level.vertex_position(hide.center))
    local dist=delt1:dotproduct(delt)
    if dist>maxdist then
      maxdist=dist
      tgtvtx=level.vertex_position(v)
    end
  end
  return tgtvtx
end

 

 

Изменено пользователем Metal293

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


Ссылка на сообщение
(изменено)

Сейчас ещё один неприятный момент обнаружился - зомбированные в массе своей не могут достать оружие, какие-то конфликты в state_mgr, после замены на оригинальный проблема исчезает.

@I am Dead 

Тот же косяк в твоей адаптации. А ещё ты там конфликтующую схему watcher_act оставил подключенной в modules.

 

Изменено пользователем Metal293

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


Ссылка на сообщение
(изменено)

@I am Dead 

На свалке в ангаре такое наблюдал, когда рядом с неписями в укрытии был противник, они начинали приседать и вскакивать, пряча за спину и доставая оружие при этом, с периодичностью в полсекунды, и так до самого конца выброса. Очевидно там надо переписывать переход на анимацию под новый state_mgr с новой функцией lock. Код я выше давал, у самого у меня не получилось ничего там выдумать.

@Han Sola 

А толку там что-то отдельно вмонтировать, если конфликт в state_mgr, который адаптации не поддаётся в принципе.

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

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


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

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

AMK-Team.ru

×
×
  • Создать...