Все посты %s в %S - AMK Team
Перейти к контенту

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


Halford

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

 

 

Наверное, плохо смотрел...

Загрузить уровень в LE СДК, найти объект и глянуть как он обзывается в all.spawn...


 

 

проверял программкой script syntax checker на ошибки, ошибок нет

Причем тут синтаксические ошибки, если четко указано что 'wpn_tip_name' равен nil ? Смотри каким образом строка 123 в скрипте news.script связана со смертью НПСов...

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


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

 

 

Как узнать тип патронов в конкретном стволе

можно так (ф-ция принимает аргументом ID оружия):

function Get_ammo_type(wpn_id)
 local sobj = alife():object(wpn_id)
 if not sobj then  return nil end

 local np = net_packet()
 sobj:STATE_Write(np)
 local size = np:w_tell()
 np:r_seek(size - 1)
 local ammo_type = np:r_u8() -- 0 - 1-й тип боеприпасов, 1 - 2-й тип боеприпасов и т.д.
 return ammo_type
end
  • Спасибо 1

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


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

 

 

Или не так

Точно так.

Думаю, сваять скрипт разбора строки ammo_class на составные и получение соответствия индекса конкретному значению сможете сами ?


 

 

сразу его чинишь (это просто)

Я не уверен....

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


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

 

 

и получаю в инвентарь полностью кондиционный объект

и после сэйв\лоад - то-же полностью кондиционный ?

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


Ссылка на сообщение
Некоторые авторы пополняют в своих модах пакеты, дописывая новые данные...

Поэтому вопрос остается. Нет ли чего более универсального для определения текущего типа патронов в стволе?

Есть, конечно - вместо частной ф-ции, используемой на "чистых" стволах, использовать к примеру модуль нет-пакетов от Artos.

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

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


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

 

 

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

Наличие костей в модели не зависит от того квестовый он или нет. Если используешь для фейкового и нормального предметов одну и ту-же модель - просто добавь fixed_bone нормальному и будет тебе счастье...

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


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

Насколько я понимаю, понятие "опция "зафиксировать кость"" это из SDK. Если ты предмет спавнишь скриптом - как с ним можно в SDK работать ?

 

 

 

Вот и спросил - как его зафиксировать чтобы он не падал

Как всегда - через кость:

 local pshell = obj:get_physics_shell()
 if pshell then
  local element = pshell:get_element_by_bone_name("link")
  if element then
   element:fix()
  end
 end

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


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

@Jeka81,

Насчет указания фиксации кости в секции объекта - ничего сказать не могу, не проверял. Но проверю, интересная вещь...

 

В скрипте можно сделать двумя способами:

1). Фиксация на клиентской стороне - создать объект, и после выхода его в он-лайн зафиксировать вышеприведенным кодом.

 

2). Фиксация на серверной стороне, с внесением изменений в нет-пакет объекта (пример с использованием модуля нет-пакетов от Artos):

  local ser_obj = alife():create(.....наш объект.....)
  if ser_obj then
   ----- фиксируем объект после создания -----
   local pk = m_netpk.get(ser_obj) -- запрос нет-пакета
   if pk and pk:isOk() then
    local data = pk:get() -- читаем данные из нет-пакета
    if data then
     data.fixed_bones = "link"
     pk:set(data) -- сохраняем данные в нет-пакет
    end
   end
  end

Второй способ проще, на мой взгляд...

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


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

 

 

и обнаружилось, что квестовый спавнится не наследуя поворот фейкового

Ну так и должно быть - заспавненный скриптом объект не имеет никакого отношения к расстановке объектов в SDK...

 

Насчет ориентации предмета - тот-же нет-пакет:

data.direction = vector():set(0,90,0)

 

к сожалению, я новичек в скриптовании и эти два способа только больше меня запутали

опять-же, к сожалению, но модострой только посредством ковыряния в SDK и конфигах - однозначно не полноценный. Осваивайте скриптование...

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


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

Можно попробовать в actor_binder:update сделать:

if device().precache_frame <= 1 then

...

end

Эта проверка сработает после пропуска некоего кол-ва апдейтов от начала загрузки, и соответственно всю загрузку лута в инвентарь. Соответственно можно использовать флаг, который установить по факту precache_frame <= 1 и проверять его в on_item_take.

  • Спасибо 1

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


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

Проясните плиз, что означает такая запись для кондлиста в smart_terrain ?

cond = {+garbage_meetstalker_done},{+garbage_meetstalker_die}

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


Ссылка на сообщение
цитирую из статьи...

то, что Вы процитировали - это для одного "блока" условий, заключенного в фигурные скобки. А мой вопрос - как понимать несколько блоков условий через запятую ? Думаю это как подобие оператора 'или' - гулаг работает если есть какое-либо из перечисленных условий. Я правильно понял ?

 

И еще про смарты: можно-ли задать смарту условие наподобии как для логики рестриктора переход в nil. Рестриктор выключается, перестает апдейтится, кушать какие-то ресурсы. Смарту можно что-то подобное сделать ?

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

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


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

 

 

я заспавнил НПС через all.spawn, в игре убил его, и в труп не могу положить вещи

секцию из all.spawn в студию...

С остальными трупами\инв.ящиками все нормально ?

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


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

Вроде все нормально выглядит... Как варианты - что-то в character_profile или в файле логики.

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


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

 

 

Проблема решается легко, если спавнить скриптом. Мораль истории: не использовать all.spawn для создания боевых персонажей

А как по мне, более правильная мораль - разобраться все-же...

 

1. Обычно none = true используется в кастом-дате так:

[smart_terrains]
none = true

а у Вас этот параметр прописан в [logic]

 

2. Логика неписю указана как не существующий (с Ваших слов) конфиг !

 

Попробуйте убрать вообще весь блок кастом даты.

 

Ну и еще - с CoP не работаю, но object_flags = 0xfffffffb в SoC везде для сталкеров = 0xffffffbf.

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


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

 

 

Если спавнишь скриптом, то как задать направление взгляда НПС?

Direction можно задать правкой нет-пакета.

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


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

 

 

Каким скриптом можно осуществить передачу предметов из ящика

transfer_item вестимо.

 

 

с учетом того, что список предметов неизвестен

если для чистого движка(не правленного) - то можно попробовать перебором всех игровых объектов, и сравнением их парент_ид с ид ящика.

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


Ссылка на сообщение
Только что, diversant сказал:

Вопрос 1: тут что нет поиска по теме?! Если есть, подскажите где, а то смотрю и ничего не вижу;

Во вкладках разделов форума, сразу после красной "FAQ", вкладка "Поиск". В правом углу, сразу после вкладок, поле с закругленными краями, в нем надпись "Поиск..." и значок лупы. Тяжело не заметить...

Только что, diversant сказал:

какие параметры отвечают за усталость ГГ в ТЧ

Файл actor.ltx(лежит в "папка_куда_установлена_игра\gamedata\config\creatures"), там крутить:
 

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

 

max_walk_weight  = 60  ;макс. носимый вес

jump_power  = 0.01 ;0.005 ;умешьшение силы с прыжком без учета веса ноши
jump_weight_power = 0.05 ;0.045 ;умешьшение силы с прыжком с учетом веса ноши, для максимального допустимого веса
overweight_jump_k = 5 ;10 ;коэффициент влияние перегрузки прыжок с весом (умножается на jump_weight_power)
stand_power  = -0.005
walk_power  = 0.00001 ;умешьшение силы за секунду во время ходьбы без учета веса ноши
walk_weight_power = 0.00005 ;умешьшение силы за секунду во время ходьбы с учетом веса ноши, для макс. веса
overweight_walk_k = 5 ;10  ;коэффициент влияние перегрузки ноши (умножается на walk_weight_power)
accel_k   = 3 ;5  ;коэффициент на бег (умножается walk_power, walk_weight_power)
sprint_k  = 75 ;150;200 ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)

 

cant_walk_power_begin = 0.05 ;порог силы меньше которого актер не может двигаться
cant_walk_power_end = 0.10 ;порог силы больше которого актер сможет двигаться

cant_sprint_power_begin = 0.25 ;порог силы меньше которого актер не может бежать в спринте
cant_sprint_power_end = 0.60 ;порог силы больше которого актер сможет бежать в спринте

 

 

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


Ссылка на сообщение
3 часа назад, monk сказал:

тоже не нужен, я так понимаю.

Правильно понимаешь. Не ленись почаще смотреть в исходные конфиги\скрипты и обязательно изучи материал по ссылке из поста WinCap.

14 часов назад, Rietmon сказал:

 А так же, когда есть еще один инфо-поршень, рестриктор уже НЕ работал

Если я правильно понял тебя, то необходимо полное отключение рестриктора при наличии определенной инфо-порции ?

Тогда так:

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_info = %+ип_отключения_рестриктора% nil
on_actor_inside = sr_idle@wait1 %+spawn_friends_zamok%

[sr_idle@wait1]
on_info = %+ип_отключения_рестриктора% nil
....
....

В этом примере рестриктор будет в "стартовой" секции sr_idle@wait будут проверяться два условия. Первое - инфо-порция "ип_отключения_рестриктора", при активации которой рестриктор будет отключен(переход в секцию "nil"), второе - условие "on_actor_inside", которое сработает когда актер войдет в зону действия рестриктора.

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


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

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