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

[SoC] Ковыряемся в файлах


Halford

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

Не знаю как вы мужики, а я от чекбоксов отказался, нихрена оно не работает... :negative:

сделал изменение цвета текста простого батона в зависимости от булевы (красный - фэлс, зелёный - тру)

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Если ни того ни другого не осилили - скажу прямо - делать здесь нечего.

Неистово плюсую, задолбали :rtfm:

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Так одно и то-же одно и тоже... Хоть на заходи, поэтому давно тут и не отписываюсь.... Вообще редко стал отписываться ...

Аналогично :unsure:

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

можно отлавливать переход псин в онлайн щюпать нетпакет и переписывать налету

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

я рассматривал случай с динамическим содержанием кастомдаты

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

тады вариант маландринуса в самый раз

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

в том что к именам объекта созданным скриптово (не через аллспавн) добавляется его айдишник.

Т.е. имя будет не esc_unik_guard а чонить типа esc_unik_guard12345,

тебе нужно в цикле перебрать все объекте, и грохнуть тот в имени которого есть esc_unik_guard, но

учти если ты создашь двух и более неписей с этого профиля - грохнуты будут все они.

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Игра будет быстрее обрабатывать данные? Должна ли увеличится производительность?

Теоритически - да.

Практически нет. При распакованной геймдате отпадает необходимость в поиске и распаковке файлов из архива. => Времени на прогрузку уровня уходит меньше.

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

есть ли возможность определить момент попадания болта в спейсрестриктор?

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
есть ли возможность определить момент попадания болта в спейсрестриктор?

Если кому интересно, проблему решил навешиванием на болт своего биндера

в файле config\weapons\w_bolt.ltx добавляем строку

script_binding = xr_bolt.bind

создаем скрипт xr_bolt.script примерно такого содержания

function bind(obj)
  local new_binder = bolt_binder(obj)
  obj:bind_object(new_binder)
end

class "bolt_binder" ( object_binder )
function bolt_binder:__init(obj) super(obj)
  self.obj = obj
  self.timer_update = game.time()
  self.worked = false
  self.trigger = false
end

function bolt_binder:update(delta)
  if self.timer_update<=game.time() then self.timer_update=game.time()+1500 else return end
  --здесь делаем необходимые нам дела ))))
  --в моем случае необходимо было из подготовленной заранее таблицы спейсрестрикторов
  --выбрать ту в которую текущий болт попал
  if not self.trigger then
    for i, tp in pairs(g_teleports.array_space_rest) do
      local obj = alife():object(tp.id)
      if obj then 
        if self.obj:position():distance_to(obj.position)<=2.5 then
          if not self.worked then
        self.worked = true
        self.trigger = true
        break
          end
        end
      end
    end
  end
  if self.worked then 
    --выполняем нужные нам действия )))
    self.worked = false
  end  
end

 

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

Давно не заглядал, всем ку!

Как сделать юзабельным физ. объект (костер)?

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


Ссылка на сообщение
Т.о. респавненный объект не получит имя 'escape_lager', а получит именем типа 'escape_lager23456' и, если работа завязана на конкретном имени объекта (а таких немало) - она (работа) уже до конца игры не будет задействована в случае гибели и исчезновения/удаления неписи. В этом случае только спавн по заведомо известной секции из all.spawn'а можно 'воссоздать' объект с нужным именем. Штатный респавн подобным не занимается.

Конечно попахивает быдлокодерством, но что мешает нам наплодить потомков в конфиге типа

[escape_lager_1]:escape_lager

[escape_lager_2]:escape_lager

[escape_lager_3]:escape_lager

[escape_lager_4]:escape_lager

[escape_lager_5]:escape_lager

...

[escape_lager_n]:escape_lager

 

 

Добавлено через 19 мин.:

Как с помощью net_packet() поставить "restrictor_type = 2" для всех аномалий?

В цикле выбрать все аномалии из объектов, и с помощью нижеследующих функций перепаковать аномалии.

for i=....
   local obj = alife():object(i)
   if obj and --тут поставить условие, шобы отбирались только аномалии
     local data = read_anomaly_params(obj)
     data.restrictor_type=2
     --учти что перепаковывать можно объекты находящиеся в оффлайне, иначе эффекта ты не увидишь.
     write_anomaly_params(data,obj)
   end
end

function read_anomaly_params(sobj)
  local stpk=net_packet()
  local uppk=net_packet()
  sobj:STATE_Write(stpk)
  sobj:UPDATE_Write(uppk)
  local size=stpk:w_tell()
  local size1=uppk:w_tell()
  stpk:r_seek(0)
  uppk:r_seek(0)
  local t={}
  t.gvid=stpk:r_u16()
  t.obf32u1=stpk:r_float()
  t.obs32u2=stpk:r_s32()
  t.lvid=stpk:r_s32()
  t.oflags=stpk:r_s32()
  t.custom=stpk:r_stringZ()
  t.sid=stpk:r_s32()
  t.obs32u3=stpk:r_s32()

    local shape_count = stpk:r_u8()
    t.shapes={}
    for i=1,shape_count do
        local shape_type = stpk:r_u8()
        t.shapes[i]={}
        t.shapes[i].shtype=shape_type
        if shape_type == 0 then
            -- sphere
            t.shapes[i].center = stpk:r_vec3()
            t.shapes[i].radius = stpk:r_float()
        else
            -- box
            t.shapes[i].v1 = stpk:r_vec3()
            t.shapes[i].v2 = stpk:r_vec3()
            t.shapes[i].v3 = stpk:r_vec3()
            t.shapes[i].offset = stpk:r_vec3()
        end
    end
  t.restrictor_type = stpk:r_u8()
  t.max_power = stpk:r_float()
  t.owner_id = stpk:r_s32()
  t.enabled_time = stpk:r_s32()
  t.disabled_time = stpk:r_s32()
  t.start_time_shift = stpk:r_s32()
  t.offline_interactive_radius = stpk:r_float()
  t.artefact_spawn_count = stpk:r_u16()
  t.artefact_position_offset = stpk:r_s32()
  t.last_spawn_time_present = stpk:r_u8()
  return t
end

function write_anomaly_params(t,sobj)
  local stpk=net_packet()
  local uppk=net_packet()
  stpk:w_u16(t.gvid)
  stpk:w_float(t.obf32u1)
  stpk:w_s32(t.obs32u2)
  stpk:w_s32(t.lvid)
  stpk:w_s32(t.oflags)
  stpk:w_stringZ(t.custom)
  stpk:w_s32(t.sid)
  stpk:w_s32(t.obs32u3)


    stpk:w_u8(table.getn(t.shapes))
    for i=1,table.getn(t.shapes) do
        stpk:w_u8(t.shapes[i].shtype)
        if t.shapes[i].shtype == 0 then
            stpk:w_vec3(t.shapes[i].center)
            stpk:w_float(t.shapes[i].radius)
        else
            stpk:w_vec3(t.shapes[i].v1)
            stpk:w_vec3(t.shapes[i].v2)
            stpk:w_vec3(t.shapes[i].v3)
            stpk:w_vec3(t.shapes[i].offset)
        end
    end

  stpk:w_u8(t.restrictor_type)
  stpk:w_float(t.max_power)
  stpk:w_s32(t.owner_id)
  stpk:w_s32(t.enabled_time)
  stpk:w_s32(t.disabled_time)
  stpk:w_s32(t.start_time_shift)
  stpk:w_float(t.offline_interactive_radius)
  stpk:w_u16(t.artefact_spawn_count)
  stpk:w_s32(t.artefact_position_offset)
  stpk:w_u8(t.last_spawn_time_present)
  local size=stpk:w_tell()
  local size1=uppk:w_tell()
  stpk:r_seek(0)
  uppk:r_seek(0)
  sobj:STATE_Read(stpk,size)
  sobj:UPDATE_Read(uppk)
end

 

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105

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


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

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