Перейти к содержанию

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

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

Novik не хватает партиклов, откуда локация?

Из тч в зп

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


Ссылка на сообщение
Поделиться на другие сайты
 

Novik значит надо почистить в СДК локацию от партиклов, которых нету в ЗП, либо перенести партиклы из ТЧ в ЗП. Но, думаю, первое будет попроще...

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


Ссылка на сообщение
Поделиться на другие сайты
 

Novik Либо заменить партиклы из ТЧ на аналоги из ЗП (при наличии таковых). К стати партикл мух насколько я помню еще из билдов пришел и в ЗП должен быть аналог.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
8 минут назад, AziatkaVictor сказал:

Novik значит надо почистить в СДК локацию от партиклов, которых нету в ЗП, либо перенести партиклы из ТЧ в ЗП. Но, думаю, первое будет попроще...

Спасибо!! теперь новый вылет 

Expression    : fatal error
Function      : CInifile::r_string
File          : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp
Line          : 513
Description   : <no expression>
Arguments     : Can't find variable bound_rect in [level_map]

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


Ссылка на сообщение
Поделиться на другие сайты
 

Проверь наличие level.ltx в папке с уровнем, в нём должна быть указанная секция и параметр.

  • Аплодисменты 1

c01570bf2e07524.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
4 минуты назад, Overfirst сказал:

Проверь наличие level.ltx в папке с уровнем, в нём должна быть указанная секция и параметр.

; level script file

[level_map]
        texture                          = ui\ui_map_escape
        x1                               = -490.7
        x2                               = 504.8
        z1                               = -1081
        z2                               = 1114.2

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


Ссылка на сообщение
Поделиться на другие сайты
 

Это ТЧ файл, там это работает чутка по-другому. Ты же компилировал спавн, делал Make Game. В SDK папке с уровнем должен быть подходящий level.ltx под ЗП. В крайнем случае воткни содержимое этого же файла от ЧН локи:

[map_usage]
ver=1.0

[level_map]
bound_rect = -335.000000,-630.000000,415.000000,870.000000
texture = map\map_escape

 


c01570bf2e07524.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

Спасибо! А почему дома черные? что то не так с лайтмапами?

ss_Максим_08-27-20_01-22-14_(l01_escape).jpg

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


Ссылка на сообщение
Поделиться на другие сайты
 

Сразу блок вопросов:

1. Как при начале новой игры автоматически вводить определённые консольные команды? (fov и тд)

2. Можно ли создавать аномалии по получении инфопоршня и как?

3. Как настроить простреливаемость кустов? (под кустами АИ сетка)

4. Как сделать, чтобы вороны летали не только над персонажем?

5. Как заставить НПС разжигать/тушить костры при входе/выходе из смарт-террейна?

6. Как "унять" иногда возникающую агрессию НПС на всех противников на локации?

7. Как реализовать плавные приседания? 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
10 часов назад, Novik сказал:

А почему дома черные? что то не так с лайтмапами?

Именно. По хорошему нужна перекомпиляция локаций из ТЧ по простому можно подправить вручную лайтмапы:

Спойлер

Наша задача - чтобы в r1 и r2 не было некрасивых жутко черных теней.
Работаем через программу paint.net (требует установленного .Net Framework v2.0), может и через фотошоп можно - не знаю. В папке с уровнем будем редактировать лайтмапы:
lmap*_1.dds - снижаем контраст на 15 единиц и сохраняем в формате dxt5 без мипмапов
lmap*_2.dds переделывать сложнее - задача сделать менее прозрачным. Пересохраняем как dds в формате R5G6B5, прозрачность исчезнет совсем. Открываем снова и меняем прозрачность с 255 до 30, затем снижаем контраст на 15 единиц, сохраняем в формате dxt5 без мипмапов

А если еще проще можно взять готовые перекомпилы уровней ТЧ на ЗП.


9 часов назад, Gerbys сказал:

Как при начале новой игры автоматически вводить определённые консольные команды?

Спойлер

Выполняете при старте игры код в любом удобном месте скриптов.


local console = get_console()
console:execute("комманда консоли")

 

 
9 часов назад, Gerbys сказал:

Можно ли создавать аномалии по получении инфопоршня и как?

Спойлер

function create_anomaly( zone_name, zone_radius, position, lv, gv )

----------------------------Создаём объект - аномалию----------------------------
    
    local sobj = alife():create( zone_name, position, lv, gv )
    
    local packet = net_packet()
    packet:w_begin( 0 )
    
-------------------------------------Читаем нет-пакет  -------------------------- 
    sobj:STATE_Write( packet )
    packet:r_seek( 2 )
    
    local game_vertex_id    =    packet:r_u16()
    local distance            =    packet:r_float()
    local direct_control    =    packet:r_s32()
    local level_vertex_id    =    packet:r_s32()
    local object_flags        =    packet:r_s32()
    local custom_data        =    packet:r_stringZ()
    local story_id            =    packet:r_s32()
    local spawn_story_id    =    packet:r_s32()
    local shape_count        =    packet:r_u8()
    for i = 1,shape_count do
       local shape_type = packet:r_u8()
       if shape_type == 0 then
        local center = packet:r_vec3()
        local radius = packet:r_float()
       else
        local box = packet:r_matrix()
       end
    end
    local restrictor_type                =    packet:r_u8()
    local max_power                        =    packet:r_float()
    local owner_id                        =    packet:r_s32()
    local enabled_time                    =    packet:r_u32()
    local disabled_time                    =    packet:r_u32()
    local start_time_shift                =    packet:r_u32()
    local offline_interactive_radius    =    packet:r_float()
    local artefact_spawn_count            =    packet:r_u16()
    local artefact_position_offset        =    packet:r_s32()
    local last_spawn_time                =    packet:r_u8()
    
------------------------------------------Меняем данные пакета
    
    local new_center = vector():set( 0, 0, 0 )
    owner_id        =    bit_not( 0 )
    restrictor_type    = 3
    max_power = 0
    offline_interactive_radius    = 30
    artefact_spawn_count    = 32
    last_spawn_time = 0
    
------------------------------------------------Пишем в пакет    
    
    packet:w_begin( 0 )
    packet:w_u16( game_vertex_id )
    packet:w_float( distance )
    packet:w_s32( direct_control )
    packet:w_s32( level_vertex_id )
    packet:w_s32( object_flags )
    packet:w_stringZ( custom_data )
    packet:w_s32( story_id )
    packet:w_s32( spawn_story_id )
    packet:w_u8( 1 )
    packet:w_u8( 0 )
    packet:w_vec3( new_center )
    packet:w_float( zone_radius )
    packet:w_u8( restrictor_type )
    packet:w_float( max_power )
    packet:w_s32( owner_id )
    packet:w_u32( enabled_time )   
    packet:w_u32( disabled_time )
    packet:w_u32( start_time_shift )
    packet:w_float( offline_interactive_radius )
    packet:w_u16( artefact_spawn_count )
    packet:w_s32( artefact_position_offset )
    packet:w_u8( last_spawn_time )

    packet:r_seek( 2 )
    sobj:STATE_Read( packet, packet:w_tell() )
     return sobj
end

 

9 часов назад, Gerbys сказал:

Как заставить НПС разжигать/тушить костры при входе/выходе из смарт-террейна?

Спойлер

Расскоментировать сооветствующий код в скрипте bind_campfire.script в функции campfire_binder:update(delta). При необходимости откорректировать.

 

9 часов назад, Gerbys сказал:

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

Спойлер

Это свойства материала Factors->Shooting, чем меньше тем легче пробивается.

 

9 часов назад, Gerbys сказал:

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

Спойлер

Это вроде как только правками движка можно переделать.

 

9 часов назад, Gerbys сказал:

Как "унять" иногда возникающую агрессию НПС на всех противников на локации?

Спойлер

Можно прописать развернутые условия в параметры combat_ignore_cond, combat_ignore_keep_when_attacked логики НПС.

 

Изменено пользователем denis2000
  • Мастер! 1
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, denis2000 сказал:

 

А если еще проще можно взять готовые перекомпилы уровней ТЧ на ЗП.


 

 

 

 

 

 

Где бы вот их взять))

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


Ссылка на сообщение
Поделиться на другие сайты
 
18 минут назад, Novik сказал:

Где бы вот их взять

Начните хотя бы отсюда: Каталог локаций для Тень Чернобыля / Чистое Небо / Зов Припяти

  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
5 часов назад, denis2000 сказал:

Расскоментировать сооветствующий код в скрипте bind_campfire.script в функции campfire_binder:update(delta). При необходимости откорректировать.

При расскоментировании ловлю вылет. Функция вот такая, ничего не менял:

Спойлер

function campfire_binder:update(delta)
    object_binder.update(self, delta)
  --[[    printf("campfire_update!!!")
    local kamp = xr_kamp.kamps[string.gsub(self.object:name(), "_campfire", "")]
    if kamp ~= nil and kamp.population > 0 then
        if self.campfire:is_on() then
            if (level.get_time_hours() >= 4 and level.get_time_hours() < 21) and level.get_time_minutes() >= campfire_timeout[self.object:name()]  then
                printf("turning off campfire %s %s %s",tostring(level.get_time_hours() >= 6 and level.get_time_hours() < 21),tostring(self.population),tostring(campfire:is_on()))
                self.campfire:turn_off()
                printf("turning off campfire %s %s %s",tostring(level.get_time_hours() >= 6 and level.get_time_hours() < 21),tostring(self.population),tostring(campfire:is_on()))

            end
        else
            if (level.get_time_hours() < 4 or level.get_time_hours() >= 21) and level.get_time_minutes() >= campfire_timeout[self.object:name()] then
                printf("turning on campfire %s %s %s",tostring(level.get_time_hours() >= 6 and level.get_time_hours() < 21),tostring(self.population),tostring(campfire:is_on()))
                self.campfire:turn_on()
            end
        end
    else
        self.campfire:turn_off()
    end ]]-- 
end

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

Посоветуйте движок для ЗП "Чтоб был", то есть никаких движковых изменений я делать не буду, но движок должен залечить старые раны X-Ray... (Кроме OpenXRay)

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

spacer.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

Gerbys Приводите лог вылета! И содержимое файла после редактирования.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 

Как сделать квест на убийство рандомного NPC, который шляется по всей зоне?

Как заблокировать квест если у ГГ маленькая защита от чего либо?

Как сделать квест по установке сканера?

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


Ссылка на сообщение
Поделиться на другие сайты
 
5 минут назад, Igor_Misery сказал:

Как сделать квест на убийство рандомного NPC, который шляется по всей зоне?

Как заблокировать квест если у ГГ маленькая защита от чего либо?

Как сделать квест по установке сканера?

Вы можете сами загуглить эти вопросы в интернете? Вы можете посмотреть некоторые скрипты? Вы можете поискать аналоги квестов перед тем как написать сообщение?
1. Как сделать квест на убийство рандомного NPC, который шляется по всей зоне?
Видео
2. Как заблокировать квест если у ГГ маленькая защита от чего либо?
Защита от разрыва? Защита от огня? Защита от радиации?
Наверное это можно проверить скриптом, но не знаю как.
3.
Посмотрите этот плейлист.

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


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, Winzor сказал:

Вы можете сами загуглить эти вопросы в интернете? Вы можете посмотреть некоторые скрипты? Вы можете поискать аналоги квестов перед тем как написать сообщение?
1. Как сделать квест на убийство рандомного NPC, который шляется по всей зоне?
Видео
2. Как заблокировать квест если у ГГ маленькая защита от чего либо?
Защита от разрыва? Защита от огня? Защита от радиации?
Наверное это можно проверить скриптом, но не знаю как.
3.
Посмотрите этот плейлист.

Я все уроки Бориса по квестам пересмотрел. Он эксклюзив делал, а мне НПС, который спавнится по своей воле, не на вей поинтах, не на каверах,.

Хотите - принимайте меня за идиота, но я ищу прежде, чем спрашивать.

Ещё вопрос.

Как у торговца сделать скидку, после выполнения квеста?

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


Ссылка на сообщение
Поделиться на другие сайты
 
38 минут назад, Igor_Misery сказал:

Как у торговца сделать скидку, после выполнения квеста?

[trader]
buy_condition = trade_generic_buy 
sell_condition = trade_generic_sell
buy_supplies = supplies_start
discounts = {+space_restrictor} discount (В фигурных скобках ваш рестриктор)

[discount] (К сожалению не знаю что тут указано...)
buy =  1
sell = 0.9

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

spacer.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
Только что, RoboCat сказал:

buy =  1
sell = 0.9

Зато, я знаю, спасибо.

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 16.08.2020 в 14:41, denis2000 сказал:

Крим 1. Правой кнопкой мыши на я ярлыке, выбрать свойства, закладка "ярлык", кнопка "Сменить значек...", кнопка "Обзор".

2. Разобрать xrengine.exe редактором ресурсов (например PE Explorer) и сменить иконку зашитую в нем.


Дополнено 3 минуты спустя

Да, правки движка (для своего мода такую правку переносил Winsor) или пересборка нетпакета актора (этот метод рекомендовал Hozar_2002).

Чистый файл с правкой у меня остался: на основе оригинального файла из ЗП перенёс функцию из CoC. Больше никаких изменений.
Скачать: https://yadi.sk/d/GHB0HKCA1nUm-g

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 часов назад, denis2000 сказал:

Gerbys Приводите лог вылета! И содержимое файла после редактирования.

Спойлер

Error Reason:
----------------------------------------
xrEngine.exe caused BREAKPOINT in module "D:\Games\S.T.A.L.K.E.R. Call of Pripyat\bin\xrCore.dll" at 0023:00B571C8, xrDebug::backend()+168 byte(s)

User Message:
----------------------------------------
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : ..\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...all of pripyat\gamedata\scripts\bind_campfire.script:47: attempt to call a nil value

Спойлер

function campfire_binder:update(delta)
    object_binder.update(self, delta)
  [[    printf("campfire_update!!!")
    local kamp = xr_kamp.kamps[string.gsub(self.object:name(), "_campfire", "")]
    if kamp ~= nil and kamp.population > 0 then
        if self.campfire:is_on() then
            if (level.get_time_hours() >= 4 and level.get_time_hours() < 21) and level.get_time_minutes() >= campfire_timeout[self.object:name()]  then
                printf("turning off campfire %s %s %s",tostring(level.get_time_hours() >= 6 and level.get_time_hours() < 21),tostring(self.population),tostring(campfire:is_on()))
                self.campfire:turn_off()
                printf("turning off campfire %s %s %s",tostring(level.get_time_hours() >= 6 and level.get_time_hours() < 21),tostring(self.population),tostring(campfire:is_on()))

            end
        else
            if (level.get_time_hours() < 4 or level.get_time_hours() >= 21) and level.get_time_minutes() >= campfire_timeout[self.object:name()] then
                printf("turning on campfire %s %s %s",tostring(level.get_time_hours() >= 6 and level.get_time_hours() < 21),tostring(self.population),tostring(campfire:is_on()))
                self.campfire:turn_on()
            end
        end
    else
        self.campfire:turn_off()
    end ]]
end

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

Gerbys Вы неправильно расскоментировали код! 

1. Нужно удалить открывающую скобку коментария: --[[
2. И закрывающую: ]]--

  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 27.08.2020 в 10:23, denis2000 сказал:

Можно прописать развернутые условия в параметры combat_ignore_cond, combat_ignore_keep_when_attacked логики НПС.

Я имею ввиду не конкретных НПС, а вообще любых. Периодически происходят ситуации, когда неожиданно сталкеры подрываются (обычно после любого столкновения с врагом) и смотрят в сторону врагов через всю карту, и, как правило, так начинают себя вести все НПС одновременно, на всей карте начинается огромный замес.


Дополнено 50 минуты спустя

Как реализовать квест на закладку определённых вещей в один из тайников (ящиков), чтобы они потом исчезли и был включён инфопоршень. (Пример: берешь квест, тебе выдают вещи, которые ты должен заложить в тайник и вернуться за наградой.)

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


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Gerbys сказал:

Я имею ввиду не конкретных НПС, а вообще любых. Периодически происходят ситуации, когда неожиданно сталкеры подрываются (обычно после любого столкновения с врагом) и смотрят в сторону врагов через всю карту, и, как правило, так начинают себя вести все НПС одновременно, на всей карте начинается огромный замес.

А каким образом неписи заспавнены? Если сквадами, то таких проблем не должно быть.

1 час назад, Gerbys сказал:

Как реализовать квест на закладку определённых вещей в один из тайников (ящиков), чтобы они потом исчезли и был включён инфопоршень.

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

function is_item_in_inventory_box(actor, npc, p)
    local inv_box = get_story_object(p[1])
    local item_in_box = false
    local function compare_item(inv_box, item)
  if item:section() == p[2] then
   item_in_box = true
  end
    end
    inv_box:iterate_inventory_box(compare_item, inv_box)
    return item_in_box
end

=is_item_in_inventory_box(предмет:ящик)

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   2 пользователя онлайн