Случайная подборка модов
Ф.О.Т.О.Г.Р.А.Ф
4.2
Долина Шорохов
4.5
Clear Sky Complete
4.1
Под прикрытием смерти. Клондайк 2.0
4.0
Новый Арсенал 4.5
3.7
Lost World Troops of Doom
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  Wolfstalker
Среда, 24.02.2016, 00:25 | Сообщение # 1
Статус:
Легенда:
Сообщений: 2258
Награды: 15
Регистрация: 05.04.2010

В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга


• Не флудить
• Предварительно просматривайте раздел, ведь ответ на ваш вопрос может быть там
• В своем вопросе указывайте платформу моддинга — Тень Чернобыля, Чистое небо или Зов Припяти




F.A.Q

  Злобная реклама
Среда, 24.02.2016, 00:25
Статус:
Сообщений: 666
Регистрация: 05.04.2010
Российская Федерация  denis2000
Четверг, 05.10.2017, 22:35 | Сообщение # 8131
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Где вызов remove_taken_af?
  Злобная реклама
Четверг, 05.10.2017, 22:35
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Украина  _S_k_i_F_
Четверг, 05.10.2017, 22:51 | Сообщение # 8132
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

denis2000, в actor_binder в методе on_item_take
Код
function actor_binder:on_item_take (obj)
    printf("on_item_take [%s]", obj:name())
    if isArtefact(obj) then
  xrs_random_anomaly.remove_taken_af(obj.id)
  Злобная реклама
Четверг, 05.10.2017, 22:51
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  makdm
Четверг, 05.10.2017, 22:56 | Сообщение # 8133
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата _S_k_i_F_ ()
 xrs_random_anomaly.remove_taken_af(obj.id)

Передаешь NIL
OBJ - это клиентский класс объекта.

xrs_random_anomaly.remove_taken_af( obj:id())

Так передавай айдишник.
  Злобная реклама
Четверг, 05.10.2017, 22:56
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Украина  _S_k_i_F_
Четверг, 05.10.2017, 23:21 | Сообщение # 8134
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

makdm, спасибо! Теперь работает. А что значит клиентский класс?
  Злобная реклама
Четверг, 05.10.2017, 23:21
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  denis2000
Пятница, 06.10.2017, 10:40 | Сообщение # 8135
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

_S_k_i_F_, Игра Сталкер (точнее ее движек) построен на концепции сервер-клиентского взаимодействия, поэтому некоторые объекты имеют два экземпляра - один на серверной стороне другой на клиентской. Соответственно методы взаимодействия с этими объектами различны. Объекты доступные в клиентской части иначе называют объектами находящимися в онлайне, а объекты не доступные соотвественно в оффлайне.
Сообщение отредактировал denis2000 - Пятница, 06.10.2017, 10:42
  Злобная реклама
Пятница, 06.10.2017, 10:40
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Российская Федерация  sinaps
Пятница, 06.10.2017, 11:37 | Сообщение # 8136
Статус:
Ветеран:
Сообщений: 4757
Награды: 4
Регистрация: 02.04.2016

Подскажите пожалуйста как правильно экспортировать из 3Ds Max анимации idle для Call of Pripyat\Call of Chernobyl? Для каких костей, сколько в ней должно быть кадров? Делаю явно что-то не то, экспортируемые мной анимации имеют гораздо больший размер чем оригинальные, в SDK ActorEditor анимации воспроизводятся, а в игре движутся только руки, оружие стоит на месте.


Большое спасибо, разобрался, wpn_body был приделан к lead_gun как-то неправильно, но сколько кадров и почему такие больше файлы анимайи всё ещё не ясно...
Сообщение отредактировал sinaps - Пятница, 06.10.2017, 12:29
  Злобная реклама
Пятница, 06.10.2017, 11:37
Статус:
Сообщений: 666
Регистрация: 02.04.2016
Российская Федерация  atanda
Пятница, 06.10.2017, 12:20 | Сообщение # 8137
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

denis2000,
Окей, я продолжу. Раз костёр по описанию его в конфиге очень похож на аномалию, то это такой, как я понимаю, костыль -"псевдо-аномалия". Но всё же аномалия, тогда почему бы не применить к нему функцию disable_anomaly(), которая находится в классе game_object файла lua_help. Конечно я ещё не видал использования этой функции в других модификациях. Но я попробую и чуть позже отпишусь.
  Злобная реклама
Пятница, 06.10.2017, 12:20
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Российская Федерация  denis2000
Пятница, 06.10.2017, 13:28 | Сообщение # 8138
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

buffy, Да это работает. Вполне можете использовать этот метод.
  Злобная реклама
Пятница, 06.10.2017, 13:28
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Российская Федерация  atanda
Пятница, 06.10.2017, 15:00 | Сообщение # 8139
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

denis2000, вобщем тут возникла проблемка, чтобы точно знать какой костёр мне потушить, я задал ему story_id в файле alife_l01_escape, путём видоизменения следующей секции добавлением туда story_id:
Код

[2191]

; cse_abstract properties
section_name = lights_hanging_lamp
name = lights_camp_fire_omni_r1_r2_0000
position = 107.139472961426, -1.79265999794006, -0.583568632602692
direction = -2.27373675443232e-013, 0, 0
id = 65535
version = 118
script_version = 6
spawn_id = 585
story_id = 50

; cse_alife_object properties
game_vertex_id = 0
level_vertex_id = 594270
object_flags = 0xffffffba

; cse_visual properties

; cse_ph_skeleton properties

; cse_alife_object_hanging_lamp properties
main_color = 0xfffab807
main_brightness = 0.40000001
main_color_animator = koster
main_range = 6
light_flags = 0x2a
health = 100
main_virtual_size = 0.1
ambient_radius = 2
ambient_power = 0.40000001
main_cone_angle = 2.0943952
glow_radius = 0.69999999

После запаковал, к слову запаковка прошла успешно.

Далее инициализировал стори_ид в game_story_ids

Далее прописал в main_menu:OnKeyboard(dik, keyboard_action) файла ui_main_menu.script следующий код:
Код

if dik == DIK_keys.DIK_S then
    local o = level_object_by_sid("test_campfire_turn_off")
    o:disable_anomaly()
    local vec = vector()
    vec.x = 107.1
    vec.y = -1.8
    vec.z = -0.6
    db.actor:set_actor_position(vec)
end


И вообщем ловлю вылет на том, что переменная "o" - nil. Не понимаю почему, ведь я всё сделал как надо и инициализировал story_id.
  Злобная реклама
Пятница, 06.10.2017, 15:00
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Российская Федерация  Overfirst
Пятница, 06.10.2017, 15:12 | Сообщение # 8140
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Цитата buffy ()
local o = level_object_by_sid("test_campfire_turn_off")

Функция level_object_by_sid должна получать число, а не строку.
  Злобная реклама
Пятница, 06.10.2017, 15:12
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  atanda
Пятница, 06.10.2017, 15:15 | Сообщение # 8141
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

BoBaH_671,
то есть мне просто прописать story_id?
  Злобная реклама
Пятница, 06.10.2017, 15:15
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Российская Федерация  Overfirst
Пятница, 06.10.2017, 15:16 | Сообщение # 8142
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Цитата buffy ()
local vec = vector()
vec.x = 107.1
vec.y = -1.8
vec.z = -0.6

А это ещё что?

Юзай сразу:
Код
db.actor:set_actor_position(vector():set(107.1, -1.8, -0.6))

По-хорошему бы так:
Код
if dik == DIK_keys.DIK_S then
    local o = level_object_by_sid(50)
    if o ~= nil then
         o:disable_anomaly()
         db.actor:set_actor_position(vector():set(107.1, -1.8, -0.6)) -- можно вынести за пределы блока if ... end
    end
end
  Злобная реклама
Пятница, 06.10.2017, 15:16
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  atanda
Пятница, 06.10.2017, 15:21 | Сообщение # 8143
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

BoBaH_671,
Хм, теперь просто вылетает без лога, наверное всё-таки нельзя потушить костёр скриптовыми методами.
  Злобная реклама
Пятница, 06.10.2017, 15:21
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Российская Федерация  Overfirst
Пятница, 06.10.2017, 15:30 | Сообщение # 8144
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Не знаю, не ковырялся с ТЧ по этой теме. Показал лишь передачу стори айди в функцию, насчет метода disable_anomaly для костров ничего не знаю. Может, объект надо было иначе получить или ещё что. Жди знающих по ТЧ платформе.

В ЗП костёр получают методом get_campfire(), которого в ТЧ нет, а включаются/выключаются он при помощи turn_on() и turn_off().
  Злобная реклама
Пятница, 06.10.2017, 15:30
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  denis2000
Пятница, 06.10.2017, 15:39 | Сообщение # 8145
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

Цитата buffy ()
section_name = lights_hanging_lamp

Это не аномалия!
Цитата buffy ()
наверное всё-таки нельзя потушить костёр скриптовыми методами.

Можно! Получите правильно клиентский объект и все будет работать. Приведенный BoBaH_671 код полностью рабочий.
Сообщение отредактировал denis2000 - Пятница, 06.10.2017, 15:40
  Злобная реклама
Пятница, 06.10.2017, 15:39
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Поиск: