Случайная подборка модов
AVS "Закон Меченого" 2 части
3.4
Путь Бандита
2.0
Lost World Troops of Doom
4.1
Nature Winter v2.0 «Квантовый скачок»
4.0
АльтернативА 1.3.2
3.2
Опасный Вирус
2.4
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: 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
    Поиск: