Случайная подборка модов
Aliens Time: Глава 1
3.7
Время перемен v2.0
4.1
Тайный путь
3.6
World of War - Mod 0.2
3.5
Вектор Отчуждения
4.2
Путь Человека: Возвращение
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[CoP] Модострой: вопросница
Российская Федерация  Overfirst
Воскресенье, 31.12.2017, 13:17 | Сообщение # 1
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

[CoP] Модострой: вопросница

Тема посвящена моддингу на платформе Зов Припяти.

Соседние темы: Тень Чернобыля / Чистое небо.


  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.

  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.

  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).

  • Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
  •   Злобная реклама
    Воскресенье, 31.12.2017, 13:17
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Украина  AziatkaVictor
    Вторник, 14.01.2020, 12:36 | Сообщение # 5716
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    sergej5500, как я понял, это прописывают в файле bind_stalker.script (вроде так).
      Злобная реклама
    Вторник, 14.01.2020, 12:36
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Российская Федерация  Overfirst
    Вторник, 14.01.2020, 12:52 | Сообщение # 5717
    Статус:
    Бывалый:
    Сообщений: 1081
    Награды: 19
    Регистрация: 11.06.2015

    Ограничений на количество инфопорций нет. Они хранятся в динамической памяти, сейчас узнавал. Но лучше всё же не злоупотреблять количеством. Сейчас выдал более 100К инфопорций, так у меня сейв в пять раз больше среднего стал весить. Грузиться такой будет на порядок дольше. smile
      Злобная реклама
    Вторник, 14.01.2020, 12:52
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Российская Федерация  denis2000
    Вторник, 14.01.2020, 13:07 | Сообщение # 5718
    Время Альянса
    Статус:
    Ветеран:
    Сообщений: 4070
    Награды: 16
    Регистрация: 19.07.2013

    Цитата Overfirst ()
    Ограничений на количество инфопорций нет.

    Все имеет свои ограничения в ПК (даже наша вселенная считается не бесконечной). Динамическая память, дисковое пространство, размер файлов, разрядность переменных. Весь вопрос где и при каких обстоятельствах упремся в этот предел biggrin
    Сообщение отредактировал denis2000 - Вторник, 14.01.2020, 13:10
      Злобная реклама
    Вторник, 14.01.2020, 13:07
    Статус:
    Сообщений: 666
    Регистрация: 19.07.2013
    Российская Федерация  Overfirst
    Вторник, 14.01.2020, 13:18 | Сообщение # 5719
    Статус:
    Бывалый:
    Сообщений: 1081
    Награды: 19
    Регистрация: 11.06.2015

    denis2000, это ясное дело. Но забить хотя бы мегабайт памяти инфопорциями - это надо уметь, так что можно сказать, что ограничения несущественны. biggrin
      Злобная реклама
    Вторник, 14.01.2020, 13:18
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Украина  AziatkaVictor
    Вторник, 14.01.2020, 13:40 | Сообщение # 5720
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    Overfirst, ну, посути, инфопоршни как переменные, инфопоршень либо есть, либо его нет, тоесть 1 или 0. А такие значения практически ничего не весят... Тем более, раз уж даже ОП 2.1 может исправно работать при таком количестве инфопоршней, то у нас и подавно)
    Цитата denis2000 ()
    Весь вопрос где и при каких обстоятельствах упремся в этот предел
    думаю, не скоро, чтобы достичь предела, полагаю, нужно будет окола 1000 квестов или больше. Вообщем, просто невообразимое количество.)
      Злобная реклама
    Вторник, 14.01.2020, 13:40
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Украина  Warpony_Garro
    Вторник, 14.01.2020, 13:46 | Сообщение # 5721
    Статус:
    Зевака:
    Сообщений: 6
    Награды: 1
    Регистрация: 08.01.2020

    Цитата sergej5500 ()
    Откуда движок игры узнает о том, что существует файл drink.script?


    Ну дык. Скрипт к движку постучится попросит значения. В наличии они есть. wacko Я ж говорю, я не уверен ибо играю на сборке и только пару недель назад допустил неосторожность окунуться в доработку напильником. Вполне возможно что там уже сборщики вписали в корень. Или запилили какой-нить автоподхват нового хлама.
    Сообщение отредактировал Warpony_Garro - Вторник, 14.01.2020, 13:48
      Злобная реклама
    Вторник, 14.01.2020, 13:46
    Статус:
    Сообщений: 666
    Регистрация: 08.01.2020
    Российская Федерация  Overfirst
    Вторник, 14.01.2020, 14:37 | Сообщение # 5722
    Статус:
    Бывалый:
    Сообщений: 1081
    Награды: 19
    Регистрация: 11.06.2015

    Цитата AziatkaVictor ()
    ну, посути, инфопоршни как переменные, инфопоршень либо есть, либо его нет

    Есть или нет - это одно, а сама последовательность символов, из которых состоит инфопорция - другое. Размер одного символа в нашем случае будет один равен восьми битам. Вот и считайте, что вы там хотите, однако смысла в этом нет никакого.
      Злобная реклама
    Вторник, 14.01.2020, 14:37
    Статус:
    Сообщений: 666
    Регистрация: 11.06.2015
    Российская Федерация  Stalker_Одиночка
    Вторник, 14.01.2020, 18:01 | Сообщение # 5723
    Статус:
    Отмычка:
    Сообщений: 125
    Награды: 6
    Регистрация: 16.12.2017

    Цитата Warpony_Garro ()
    Цитата Stalker_Одиночка ()
    Файл drink.script должен как-то совмещаться с другими файлами.

    Так он совмещен сам в себе. Из основы он только id итемов и значения самочувствия берет. А все остальные эффекты он в себе же и рассчитывает и на выходе дает конкретное влияние на конкретные существующие параметры. Типа хп, усталости и т.д.

    Мб конечно я не прав, но вроде нигде сам скрипт регестрировать не нужно. Он сам тянет нужные ему калбеки и проч.


    Окей! Будем проверять...
    Сообщение отредактировал Stalker_Одиночка - Вторник, 14.01.2020, 18:03
      Злобная реклама
    Вторник, 14.01.2020, 18:01
    Статус:
    Сообщений: 666
    Регистрация: 16.12.2017
    Российская Федерация  sergej5500
    Вторник, 14.01.2020, 20:31 | Сообщение # 5724
    Статус:
    Новичок:
    Сообщений: 290
    Награды: 4
    Регистрация: 09.01.2017

    Добрый вечер.

    Тестирую функции очистки инвентарного ящика от хабара. Функции вызываются из логики этого бокса.

    1. Первая функция:

    function test_rukzak_1_clean_1(actor, box)
    local function calc(box,item)
    if item~=nil then
    if alife():object(item:id()) then
    alife():release(alife():object(item:id()),true)
    end
    end
    end
    box:iterate_inventory_box(calc,box)
    end

    2. Вторая функция:

    function test_rukzak_1_clean_2(actor, box, p)
    local function calc(box,item)
    if item~=nil and item:section_name() = p then
    if alife():object(item:id()) then
    alife():release(alife():object(item:id()),true)
    end
    end
    end
    box:iterate_inventory_box(calc,box)
    end

    Первая функция чистит все и работает отлично. Вторая должна удалить только определенные предметы. Вместо этого дает жука:

    FATAL ERROR

    [error]Expression : !m_error_code
    [error]Function : raii_guard::~raii_guard
    [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
    [error]Line : 748
    [error]Description : ...lishing\Зов Припяти\gamedata\scripts\xr_logic.script:648: attempt to index global 'xr_effects' (a nil value)


    stack trace:

    Вызывал её строкой =test_rukzak_1_clean_2(wpn_ak74). В бокс специально положил автомат.

    Логика бокса простейшая.

    [logic]
    active = ph_idle

    [ph_idle]
    nonscript_usable = true
    tips = st_default_rukzak
    on_info = {+test_rukzak_1_clean -test_rukzak_1_clean_1} %+test_rukzak_1_clean_1 =test_rukzak_1_clean_2(wpn_ak74) =scenario_autosave(st_test_rukzak_1_clean)%

    Выдача инфопорции горячей клавишей. После чего очистка рюкзака и автосейв для контроля. Вместо этого жук.

    Как исправить функцию?
      Злобная реклама
    Вторник, 14.01.2020, 20:31
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2017
    Украина  molodoy_chelovek
    Вторник, 14.01.2020, 21:12 | Сообщение # 5725
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Цитата sergej5500 ()
    item:section_name() = p

    я не силён в луа синтаксисе, но разве тут не должно быть двойное равно? "=="
    Цитата AziatkaVictor ()
    molodoy_chelovek, нет, тут идет присваивание, когда 2 ровно это сравнение.

    Цитата sergej5500 ()
    if item~=nil and item:section_name() = p then


    Внимательнее. Это и есть сравнение.
    Сообщение отредактировал molodoy_chelovek - Вторник, 14.01.2020, 21:46
      Злобная реклама
    Вторник, 14.01.2020, 21:12
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Украина  Warpony_Garro
    Вторник, 14.01.2020, 21:21 | Сообщение # 5726
    Статус:
    Зевака:
    Сообщений: 6
    Награды: 1
    Регистрация: 08.01.2020

    Цитата Stalker_Одиночка ()
    Окей! Будем проверять...


    Это лучший выбор для разъяснения истины.
      Злобная реклама
    Вторник, 14.01.2020, 21:21
    Статус:
    Сообщений: 666
    Регистрация: 08.01.2020
    Украина  AziatkaVictor
    Вторник, 14.01.2020, 21:31 | Сообщение # 5727
    Статус:
    Опытный:
    Сообщений: 1313
    Награды: 4
    Регистрация: 30.08.2018

    molodoy_chelovek, нет, тут идет присваивание, когда 2 ровно это сравнение.
      Злобная реклама
    Вторник, 14.01.2020, 21:31
    Статус:
    Сообщений: 666
    Регистрация: 30.08.2018
    Российская Федерация  sergej5500
    Вторник, 14.01.2020, 23:48 | Сообщение # 5728
    Статус:
    Новичок:
    Сообщений: 290
    Награды: 4
    Регистрация: 09.01.2017

    Цитата molodoy_chelovek ()
    разве тут не должно быть двойное равно? "=="


    Для пробы переделал функцию.

    Сначала так:

    function test_rukzak_1_clean_2(actor, box, p)
    local function calc(box,item)
    if item~=nil and item:section() == p then
    if alife():object(item:id()) then
    alife():release(alife():object(item:id()),true)
    end
    end
    end
    box:iterate_inventory_box(calc,box)
    end

    Она не сработала. Но вылет пропал.

    Затем написал так:
    прямо указал автомат

    function test_rukzak_1_clean_2(actor, box, p)
    local function calc(box,item)
    if item~=nil and item:section() == "wpn_ak74" then
    if alife():object(item:id()) then
    alife():release(alife():object(item:id()),true)
    end
    end
    end
    box:iterate_inventory_box(calc,box)
    end

    В таком виде она работает. Автомат удалился.

    Что надо дописать, что функция видела параметр р?
      Злобная реклама
    Вторник, 14.01.2020, 23:48
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2017
    Украина  molodoy_chelovek
    Среда, 15.01.2020, 00:08 | Сообщение # 5729
    Статус:
    Новичок:
    Сообщений: 316
    Награды: 2
    Регистрация: 14.07.2019

    Цитата sergej5500 ()
    Что надо дописать, что функция видела параметр р?

    Попробуйте так:
    Цитата
    if item~=nil and item:section() == p[1] then


    P.S и вставляйте, пожалуйста, код в спойлер, или как я выше - в цитату... Так удобнее
    Сообщение отредактировал molodoy_chelovek - Среда, 15.01.2020, 00:13
      Злобная реклама
    Среда, 15.01.2020, 00:08
    Статус:
    Сообщений: 666
    Регистрация: 14.07.2019
    Российская Федерация  sergej5500
    Среда, 15.01.2020, 00:19 | Сообщение # 5730
    Статус:
    Новичок:
    Сообщений: 290
    Награды: 4
    Регистрация: 09.01.2017

    molodoy_chelovek,

    Спасибо. Последний вариант сработал.

    Цитата molodoy_chelovek ()
    if item~=nil and item:section() == p[1] then
      Злобная реклама
    Среда, 15.01.2020, 00:19
    Статус:
    Сообщений: 666
    Регистрация: 09.01.2017
    Поиск: