Случайная подборка модов
Krovosos mod v. 3.8
4.0
Начало. Пролог Проекта Отступник
3.2
OGSE 0.6.9.2
4.1
Путь во мгле
4.5
Absolute Nature 3
4.1
The Project Medeiros
3.7
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: 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
    Российская Федерация  Smilоdоn
    Пятница, 18.05.2018, 19:40 | Сообщение # 991
    Статус:
    Отмычка:
    Сообщений: 138
    Награды: 0
    Регистрация: 06.08.2015

    Помогите, пж, кто знает. Поставил way-поинт, поставил ему такой параметр: wp00|a=sprint
    А НПС в него всё равно в эту точку идёт, а не бажит. И какую анимацию не ставлю - ничего не меняется. Почему?
    Сообщение отредактировал Smilоdоn - Пятница, 18.05.2018, 19:44
      Злобная реклама
    Пятница, 18.05.2018, 19:40
    Статус:
    Сообщений: 666
    Регистрация: 06.08.2015
    Российская Федерация  makdm
    Пятница, 18.05.2018, 21:12 | Сообщение # 992
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    Цитата _S_k_i_F_ ()
    Как правильно прибавить к ней, допустим 1 час?

    Один час - это 3 600 000 миллисекунд.
    Вот это и прибавляй.
      Злобная реклама
    Пятница, 18.05.2018, 21:12
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Украина  _S_k_i_F_
    Пятница, 18.05.2018, 21:55 | Сообщение # 993
    Золотой Обоз
    Статус:
    Опытный:
    Сообщений: 1311
    Награды: 9
    Регистрация: 09.08.2015

    makdm, это то понятно, я делал вот так
    Код
    local timer = game.get_game_time()
    timer = timer + <число>

    Но игра вылетала
    Код
    stack trace:

    0023:039D45C0 luabind.beta7-devel.rc4.dll, luabind::detail::object_rep::crep
    0023:05C98E47 xrGame.dll, CDialogHolder::CDialogHolder()
    0023:039A2EA3 lua.JIT.1.1.4.dll, luaopen_io()

    Или здесь все правильно и ошибка в другом?
      Злобная реклама
    Пятница, 18.05.2018, 21:55
    Статус:
    Сообщений: 666
    Регистрация: 09.08.2015
    Российская Федерация  makdm
    Пятница, 18.05.2018, 22:36 | Сообщение # 994
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    Цитата _S_k_i_F_ ()
    я делал вот так
    тогда понятно в чем ошибка.
    Смотри функции r_CTime и w_CTime в файле utils.script
    Там все понятно, что и как делать.

    local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
    Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms )

    и

    local t = game.CTime()
    t:set( Y + 2000, M, D, h, m, s, ms)

    Правда, что из этого получится и зачем тебе это нужно я не знаю.
    Сообщение отредактировал makdm - Пятница, 18.05.2018, 22:40
      Злобная реклама
    Пятница, 18.05.2018, 22:36
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Российская Федерация  Neptun
    Суббота, 19.05.2018, 11:18 | Сообщение # 995
    Связной
    Статус:
    Бывалый:
    Сообщений: 672
    Награды: 9
    Регистрация: 25.03.2012

    Smilоdоn, это значит, что НПС побежит после того, как достигнет этой точки.
    Чтобы НПС сразу побежал, пропиши в его активной логике:
    def_state_moving = sprint
    В этом случае в way можешь вообще ничего не прописывать.
    Цитата Smilоdоn ()
    вообще все флаги не работают

    Флаг это вот: p0:flags = 0x1
    Он нужен, если нужно, чтобы НПС смотрел куда-то.
      Злобная реклама
    Суббота, 19.05.2018, 11:18
    Статус:
    Сообщений: 666
    Регистрация: 25.03.2012
    Украина  _S_k_i_F_
    Суббота, 19.05.2018, 11:42 | Сообщение # 996
    Золотой Обоз
    Статус:
    Опытный:
    Сообщений: 1311
    Награды: 9
    Регистрация: 09.08.2015

    makdm, что-то все равно не получается. Попробую объяснить что нужно: ГГ выдает НПС 4 ПДА одновременно, а НПС должен через каждые 3 часа отправлять ГГ смску. А во время сна, даже если спал больше 12 часов (т.е. должны все 4 смс прийти) приходит только одна. Вот и нужно во время сна все таймеры искусственно увеличить.
    В ui_sleep_dialog в dream_callback()
    Код
    local timer = hours*3600
        if has_alife_info("tp_actor_give_zvonar_grif_pda") and not has_alife_info("tp_zvonar_unlock_grif_pda_compl") then
      otstypnik_dialogs.force_grif_pda_timer(timer)
        end
        
        if has_alife_info("tp_actor_give_zvonar_provodnik_vasil_pda") and not has_alife_info("tp_zvonar_unlock_provodnik_vasil_pda_compl") then
      otstypnik_dialogs.force_vasil_pda_timer(timer)
        end
        
        if has_alife_info("tp_actor_give_zvonar_killer_ydav_pda") and not has_alife_info("tp_zvonar_unlock_killer_ydav_pda_compl") then
      otstypnik_dialogs.force_ydav_pda_timer(timer)
        end
        
        if has_alife_info("tp_actor_give_zvonar_monolitovec_pda") and not has_alife_info("tp_zvonar_unlock_monolitovec_pda_compl") then
      otstypnik_dialogs.force_monolitovec_pda_timer(timer)
        end

    Потом функция для апдейта
    Код
    function zvonar_unlocking_pda()
        if has_alife_info("tp_actor_give_zvonar_grif_pda") and not has_alife_info("tp_zvonar_unlock_grif_pda_compl") and not has_alife_info("tp_zvonar_unlock_one_pda") then
      give_info("tp_zvonar_unlock_one_pda")
      if grif_pda_timer == nil then
       grif_pda_timer = game.get_game_time()
      end
        end
        if grif_pda_timer ~= nil then    
      if game.get_game_time():diffSec(grif_pda_timer) > 10800 then
       grif_pda_timer = nil
       give_info("tp_zvonar_unlock_grif_pda")
       give_info("tp_zvonar_unlock_grif_pda_compl")
       disable_info("tp_zvonar_unlock_one_pda")
       xr_effects.send_message(nil,nil,{"ПДА Грифа взломан. Можешь забирать.","tp_zvonar","tp_zvonar",7000})
      end
        end
        if has_alife_info("tp_actor_give_zvonar_provodnik_vasil_pda") and not has_alife_info("tp_zvonar_unlock_provodnik_vasil_pda_compl") and not has_alife_info("tp_zvonar_unlock_one_pda") then
      give_info("tp_zvonar_unlock_one_pda")
      if vasil_pda_timer == nil then
       vasil_pda_timer = game.get_game_time()
      end
        end
        if vasil_pda_timer ~= nil then
      if game.get_game_time():diffSec(vasil_pda_timer) > 10800 then
       vasil_pda_timer = nil
       give_info("tp_zvonar_unlock_provodnik_vasil_pda")
       give_info("tp_zvonar_unlock_provodnik_vasil_pda_compl")
       disable_info("tp_zvonar_unlock_one_pda")
       xr_effects.send_message(nil,nil,{"ПДА Василя взломан. Можешь забирать.","tp_zvonar","tp_zvonar",7000})
      end
        end
        if has_alife_info("tp_actor_give_zvonar_killer_ydav_pda") and not has_alife_info("tp_zvonar_unlock_killer_ydav_pda_compl") and not has_alife_info("tp_zvonar_unlock_one_pda") then
      give_info("tp_zvonar_unlock_one_pda")
      if ydav_pda_timer == nil then
       ydav_pda_timer = game.get_game_time()
      end
        end
        if ydav_pda_timer ~= nil then
      if game.get_game_time():diffSec(ydav_pda_timer) > 10800 then
       ydav_pda_timer = nil
       give_info("tp_zvonar_unlock_killer_ydav_pda")
       give_info("tp_zvonar_unlock_killer_ydav_pda_compl")
       disable_info("tp_zvonar_unlock_one_pda")
       xr_effects.send_message(nil,nil,{"ПДА Удава взломан. Можешь забирать.","tp_zvonar","tp_zvonar",7000})
      end
        end
        if has_alife_info("tp_actor_give_zvonar_monolitovec_pda") and not has_alife_info("tp_zvonar_unlock_monolitovec_pda_compl") and not has_alife_info("tp_zvonar_unlock_one_pda") then
      give_info("tp_zvonar_unlock_one_pda")
      if monolitovec_pda_timer == nil then
       monolitovec_pda_timer = game.get_game_time()
      end
        end
        if monolitovec_pda_timer ~= nil then
      if game.get_game_time():diffSec(monolitovec_pda_timer) > 10800 then
       monolitovec_pda_timer = nil
       give_info("tp_zvonar_unlock_monolitovec_pda")
       give_info("tp_zvonar_unlock_monolitovec_pda_compl")
       disable_info("tp_zvonar_unlock_one_pda")
       xr_effects.send_message(nil,nil,{"ПДА монолитовца взломан. Можешь забирать.","tp_zvonar","tp_zvonar",7000})
      end
        end
    end

    И вот сама функция в которой надо увеличить таймер
    Код
    function force_grif_pda_timer(timer)
        if grif_pda_timer ~= nil then
      local t = game.CTime()
      local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
      t:set( Y + 2000, M, D, h, m, grif_pda_timer + timer, ms)
      grif_pda_timer = game.get_game_time():diffSec(t)
        end    
    end
      Злобная реклама
    Суббота, 19.05.2018, 11:42
    Статус:
    Сообщений: 666
    Регистрация: 09.08.2015
    Российская Федерация  atanda
    Суббота, 19.05.2018, 17:18 | Сообщение # 997
    Статус:
    Бывалый:
    Сообщений: 672
    Награды: 7
    Регистрация: 12.07.2017

    Цитата _S_k_i_F_ ()
    Но игра вылетала

    Ты пытаешься к объекту, не имеющему перегруженное сложение, прибавить число!
      Злобная реклама
    Суббота, 19.05.2018, 17:18
    Статус:
    Сообщений: 666
    Регистрация: 12.07.2017
    Российская Федерация  DarkSatellite
    Воскресенье, 20.05.2018, 08:49 | Сообщение # 998
    Статус:
    Новичок:
    Сообщений: 269
    Награды: 2
    Регистрация: 25.08.2014

    Подскажите, пожалуйста... Имеются два THM
    В первом строки:
                   Ђ?  ?   НМL= act\act_face_01_bump    
    Во втором:
                  Ђ?    " НМL= act\act_face_01_bump    
    В первом, как видно, знаки:   и знак ? Во втором их нет.
    Что означают эти знаки?
    Сообщение отредактировал DarkSatellite - Воскресенье, 20.05.2018, 09:00
      Злобная реклама
    Воскресенье, 20.05.2018, 08:49
    Статус:
    Сообщений: 666
    Регистрация: 25.08.2014
    Украина  скат
    Воскресенье, 20.05.2018, 09:02 | Сообщение # 999
    Статус:
    Бывалый:
    Сообщений: 942
    Награды: 9
    Регистрация: 16.01.2014

    DarkSatellite, biggrin Отличая в сдк надо смотреть а не в блокноте. Ты бы еще китайские иероглифы тут выложил, наверняка тебя бы кто то понял.
      Злобная реклама
    Воскресенье, 20.05.2018, 09:02
    Статус:
    Сообщений: 666
    Регистрация: 16.01.2014
    Российская Федерация  DarkSatellite
    Воскресенье, 20.05.2018, 09:07 | Сообщение # 1000
    Статус:
    Новичок:
    Сообщений: 269
    Награды: 2
    Регистрация: 25.08.2014

    biggrin скат, а подробнее... Как там посмотреть?
      Злобная реклама
    Воскресенье, 20.05.2018, 09:07
    Статус:
    Сообщений: 666
    Регистрация: 25.08.2014
    Российская Федерация  makdm
    Воскресенье, 20.05.2018, 10:15 | Сообщение # 1001
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    _S_k_i_F_, если я правильно понял то, что ты хочешь сделать, то схема написания скрипта должна быть такой:

      Злобная реклама
    Воскресенье, 20.05.2018, 10:15
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Украина  скат
    Воскресенье, 20.05.2018, 11:12 | Сообщение # 1002
    Статус:
    Бывалый:
    Сообщений: 942
    Награды: 9
    Регистрация: 16.01.2014

    DarkSatellite, Закинь thm первую в сдк на свое место (по префиксу узнаешь папку куда закидывать). Текстуру к которой она принадлежит переведи в тга, закинь в папку импорт. Запусти АЕ. Нажми чек нев текстуры, увидишь окно и все настройки thm-ки. Сфоткай окно или запомни. Повтори все с второй thm, сравни скрины в итоге. Увидишь в чем отличая.
      Злобная реклама
    Воскресенье, 20.05.2018, 11:12
    Статус:
    Сообщений: 666
    Регистрация: 16.01.2014
    Украина  _S_k_i_F_
    Воскресенье, 20.05.2018, 11:42 | Сообщение # 1003
    Золотой Обоз
    Статус:
    Опытный:
    Сообщений: 1311
    Награды: 9
    Регистрация: 09.08.2015

    makdm, я опять не совсем точно выразился - надо было уточнить - можно 4 сразу, а можно и по одному, по два, по три. Вот в чем ерунда. Я думал что единственный вариант это увеличить значение самого таймера.
      Злобная реклама
    Воскресенье, 20.05.2018, 11:42
    Статус:
    Сообщений: 666
    Регистрация: 09.08.2015
    Российская Федерация  makdm
    Воскресенье, 20.05.2018, 13:09 | Сообщение # 1004
    Время Альянса
    Статус:
    Опытный:
    Сообщений: 1787
    Награды: 19
    Регистрация: 22.11.2012

    Цитата _S_k_i_F_ ()
    я опять не совсем точно выразился

    Куда уж точнее:
    Цитата _S_k_i_F_ ()
    ГГ выдает НПС 4 ПДА одновременно


    Смотри файл bind_stalker.script
    Два таймера, которые включаются в разное время и каждый ведет свой отсчет:
    check_detective_achievement() и check_mutant_hunter_achievement()

    Делаешь по аналогии хоть со стопицот ПДА.
      Злобная реклама
    Воскресенье, 20.05.2018, 13:09
    Статус:
    Сообщений: 666
    Регистрация: 22.11.2012
    Российская Федерация  PROforum
    Воскресенье, 20.05.2018, 13:50 | Сообщение # 1005
    Статус:
    Отмычка:
    Сообщений: 140
    Награды: 4
    Регистрация: 27.09.2015

    Подскажите, за что отвечает эта функция в xr_statistic.script:
    Код
    str = package:r_stringZ()
        if(str~="nil") then
      actor_statistic.favorite_weapon_sect = str
        end
        weapons_table = {}
        local n = package:r_u8()
        for i = 1,n do
      local k = package:r_stringZ()
      local v = package:r_float()
      weapons_table[k] = v
        end

    И может ли из за неё работать не правильно эта функция (или наоборот), тоже из xr_statistic.script:
    Код
    weapons_table = {
             "wpn_abakan"   = 0,
             "wpn_ak74"   = 0,
             "wpn_ak74u"   = 0,
             "wpn_beretta"   = 0,
             "wpn_bm16"   = 0,
             "wpn_colt1911"  = 0,
             "wpn_desert_eagle"   = 0,
             "grenade_f1"    = 0,
             "wpn_fn2000"   = 0,
             "wpn_fort"   = 0,
             "wpn_g36"    = 0,
             "wpn_gauss"   = 0,
             "wpn_groza"   = 0,
             "wpn_hpsa"   = 0,
             "wpn_knife"   = 0,
             "wpn_l85"    = 0,
             "wpn_lr300"   = 0,
             "wpn_mp5"    = 0,
             "wpn_pb"    = 0,
             "wpn_pkm"    = 0,
             "wpn_pm"    = 0,
             "wpn_protecta"  = 0,
             "wpn_rg-6"    = 0,
             "grenade_rgd5"   = 0,
             "wpn_rpg7"   = 0,
             "wpn_sig220"   = 0,
             "wpn_sig550"   = 0,
             "wpn_spas12"   = 0,
             "wpn_svd"    = 0,
             "wpn_svu"    = 0,
             "wpn_toz34"   = 0,
             "wpn_usp45"   = 0,
             "wpn_val"    = 0,
             "wpn_vintorez"  = 0,
             "wpn_walther"   = 0,
             "wpn_wincheaster1300"    = 0,
             "wpn_pm_actor"   = 0,
             "wpn_fort_snag"   = 0,
             "wpn_sig220_nimble"   = 0,
             "wpn_usp_nimble"   = 0,
             "wpn_desert_eagle_nimble"   = 0,
             "wpn_wincheaster1300_trapper"   = 0,
             "wpn_spas12_nimble"   = 0,
             "wpn_protecta_nimble"   = 0,
             "wpn_ak74u_snag"   = 0,
             "wpn_mp5_nimble"   = 0,
             "wpn_sig550_luckygun"   = 0,
             "wpn_groza_nimble"   = 0,
             "wpn_vintorez_nimble"   = 0,
             "wpn_svu_nimble"   = 0,
             "wpn_svd_nimble"   = 0,
             "wpn_g36_nimble"   = 0,
             "wpn_fn2000_nimble"   = 0,
             "wpn_pkm_zulus"   = 0,
        }

    function set_best_weapon( hit_amount )
        local active_item = db.actor:active_item()
        if active_item then
      local section = active_item:section()
      if weapons_table[ section ] then
       weapons_table[ section ] = weapons_table[ section ] + hit_amount
      local amount = 0
      for k,v in pairs( weapons_table ) do
       if( v > amount ) then
        amount = v
        actor_statistic.favorite_weapon_sect = k
        end
       end
      end
        end
    end
      Злобная реклама
    Воскресенье, 20.05.2018, 13:50
    Статус:
    Сообщений: 666
    Регистрация: 27.09.2015
    Поиск: