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

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

 
 

Хочу обратиться к знающим людям, опытным в модостроении за советом. Я сейчас тестирую свою сборку на Тень Чернобыля. Сборка довольно большая по объему. Так вот, проблема в следующем - первая часть сборки идет на "ура", с Кордона до лаборатории Х-16 нет ни одного вылета, все летает. Как только начинаются события после лаборатории на Янтаре начинается форменный адъ и израиль. Начинаются системные вылеты, причем постоянно с разными логами,  битые сейвы. Самое интересное, что эти вылеты "запирают" игрока на конкретной локации - то на Армейских складах, то на Янтаре, то на Агропроме. Приходится откатываться назад и играть с какого-нибудь старого сохранения, переигрывая тот или иной эпизод. Самое  странное, что сборку я прошел до конца до самой лаборатории О-сознания, т.е. она проходима, была бы непроходима, давно бы к черту бросил это занятие. Я конечно понимаю, что СТАЛКЕР давно претендует на звание самой нестабильной и багованной игры в истории компьютерных игр, но хочется довести работу до конца. Так что прошу помочь мне понять, почему а) проблемы начинаются именно после Янтаря  б) почему все время вылеты по разным причинам, как правило, не связанные с работой скриптов.

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


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

yurv3 через редактирование нет-пакета. Легче всего через модуль от Артоса m_netpk (с ним идет инструкция) или через amk-шные скрипты (примеры в самом amk или в солянке ). Но нужно с ними осторожнее, чуть что не так - сломается сохранка


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

DarkStalker сотни причин могут быть, гадать долго можно. Восстанавливали работоспособность printf? Может что покажет. Обложить всё, что только можно, в скриптах выводом в лог. Как вариант еще отрубить вообще все новые скрипты, вернуть старые, если оригинальные заменены, чтобы точно быть уверенным в том, что проблема не в измененных скриптах

3 часа назад, DarkStalker сказал:

Я конечно понимаю, что СТАЛКЕР давно претендует на звание самой нестабильной и багованной игры в истории компьютерных игр

это относится к рандомным багам и вылетам. Если что-то происходит постоянно - это явно не в самом сталкере проблема, а что-то не так сделано в файлах


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

ian98 скорее всего, где-то что-то ломается в скриптах в биндере нпс, может в них ошибка. Или просто не успевает всё отрабатывать из-за кучи всего

Изменено пользователем vader_33
  • Лайк 1
  • Жму руку 1
  • Печаль 1

В беге за рассветом приближаешь свой закат

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


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

Как присвоить кондишн оружию и броне при попадании в инвентарь гг? Пытаюсь на on_item_take в bind_stalker повесить функцию с death_manager для нпс, но вылеты ловлю) Видно не туда совсем пытаюсь

Спойлер

function set_weapon__condition(actor, item)
	local active_item = actor:active_item()
	local id = item:id()
		if isWeapon(item) then
		item:set_condition(math.min((math.random(99)+1)/100,item:condition()))
    end

function set_condition(item)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
end

 

 

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

76561198152189716.png

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


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

Ребята дайте пожалуйста папку "bin" версии 1.0003

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


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

ian98 какой из двух функций меняете? local active_item = actor:active_item() - это оружие, которое в данный момент в руках, а не любое с рюкзака.

проверяйте синтаксические ошибки в этой программе, удобная https://disk.yandex.ru/d/PITCpyZ42pxHEA

Только учтите, что при загрузке сохранки поломается всё, что уже есть в инвентаре

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

В беге за рассветом приближаешь свой закат

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


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

Спасибо всем большое за отзывы. Вот, обратился к умным людям за советом и сразу нашел причину - да, все дело в кривых скриптах, позаимствованных из другой сборки. Убрал их, почистил bind_stalker, вылеты прекратились. Еще раз спасибо за помощь!

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


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

Задумался о проверке предметов для воспроизведения диалога. Но не обычной проверкой есть/нету предмет, а вот так -есть/нету предмет, если есть, то проверка состояния, если выше 50, то можно начинать диалог. Щас гуглю, пока ничего не нашел. В инете только самые простые проверки. Вроде как в моде ОП2 такая должна быть, кто знает? Просто нашел одно упоминание 

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

76561198152189716.png

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


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

Еще интересно, существуют ли проверки выполнена функция или нет. Любая функция.


76561198152189716.png

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


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

проверки выполнена функция

Ну можно попробовать что то в этом роде

if (function mod())

{ Что то выполнять}

 

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


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

Alex Kireev мне бы как precondition для диалогов. 

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

76561198152189716.png

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


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

ian98 не проще в функцию добавить выдачу инфопоршня, и его наличие потом проверять?

  • Спасибо 1

В беге за рассветом приближаешь свой закат

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


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

ian98 я думаю что так

global_var = false

 

function mod()

 

Основной код

global_var = true

end

 

if(global_var) then

Выполняем команды, если функция выполнилась

end

Изменено пользователем Alex Kireev
  • Спасибо 1

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


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

Задумался о проверке предметов для воспроизведения диалога. Но не обычной проверкой есть/нету предмет, а вот так -есть/нету предмет, если есть, то проверка состояния, если выше 50, то можно начинать диалог. Щас гуглю, пока ничего не нашел. В инете только самые простые проверки. Вроде как в моде ОП2 такая должна быть, кто знает? Просто нашел одно упоминание 

если в функции конструкция if .. then, то в нее добавить еще if .. and  предмет:condition() > 0.5 then. А так, смотря какая функция проверки


В беге за рассветом приближаешь свой закат

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


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

vader_33 

Спойлер

function Название функции(first_speaker, second_speaker)
    return first_speaker:object("название предмета") ~= nil or
             first_speaker:object("название предмета") ~= nil or
             first_speaker:object("название предмета") ~= nil
end

 

 


76561198152189716.png

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


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

ian98 3 разных предмета проверяет?


В беге за рассветом приближаешь свой закат

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


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

 

vader_33 да


76561198152189716.png

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


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

ian98 
 

Спойлер



function Название функции(first_speaker, second_speaker)
local item1 = first_speaker:object("предмет1")
local item2 = first_speaker:object("предмет2")
local item3 = first_speaker:object("предмет3")

    return (item1 ~= nil and item1:condition() > 0.5 ) or
	(item2 ~= nil and item2:condition() > 0.5 ) or
             (item3 ~= nil and item3:condition() > 0.5 )
end


 

 

  • Хабар 1

В беге за рассветом приближаешь свой закат

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


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

если есть, то проверка состояния, если выше 50

Для чего?

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


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

ian98 но если больше 3 предметов, и условие кондишена у всех разное, лучше табличкой сделать, чем городить такие условия


В беге за рассветом приближаешь свой закат

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


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

vader_33 только подумал про это, только через массив и перебор

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

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


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

что-то и с поршнями не выходит, хотя делаю все правильно(?)

Вот у меня поршень. Создал его в файле info_escape

Спойлер

<info_portion id="function_completed"></info_portion>

 

Подключил к диалогу

Спойлер

                     <phrase id="2"> -- фраза гг
                                <text>text_2</text>
			<action>script.function</action>
				<next>221</next>
				<next>222</next>
                     </phrase>
                     <phrase id="221"> -- фраза нпс
				<has_info>function_completed</has_info>
                                <text>text_221</text>
                     </phrase>
                     <phrase id="222"> -- фраза нпс
				<dont_has_info>function_completed</dont_has_info>
                                <text>text_222</text>
                     </phrase>

 

и про скрипт не забыл. Добавил его в скрипт. В конец скрипта.

Спойлер

		actor:give_info_portion("function_completed")
	end
end

 

В итоге при попытке поговорить просто, даже не этот диалог, ловлю вылет.

Спойлер

stack trace:

0023:00C3105B xrLUA.dll
0023:0815F652 xrGame.dll
0023:0812C57C xrGame.dll

 

Да и потом, этот поршень еще забирать нужно будет? 

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

76561198152189716.png

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


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

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


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

И возможно нужно добавить перед последним end тут скрипт нужно смотреть

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


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

Alex Kireev не помогло(


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

Alex Kireev 

11 минут назад, Alex Kireev сказал:
9 часов назад, ian98 сказал:

если есть, то проверка состояния, если выше 50

Для чего?

для контрактов. Нужно только для оружия и брони, чтобы гг не мог плавить предметы с маленьким кондишн(типо они торговцам не нужны)


76561198152189716.png

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


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

Вот у меня поршень. Создал его в файле info_escape

а этот файл зарегистрирован в system.ltx в [info_portions]? Для кордоновских инфопоршней там info_l01escape


Дополнено 3 минуты спустя
13 минут назад, Alex Kireev сказал:

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

в кавычках должно быть, всё правильно


Дополнено 7 минуты спустя
19 минут назад, ian98 сказал:

<phrase id="2"> -- фраза гг

вот так "-- фраза гг" написано в xml файле?Так только в скриптах делать можно, в xml комментарии выглядят вот так <!-- фраза гг -->

Лучше установить notepad++, там можно через пкм комментировать

  • Мастер! 1

В беге за рассветом приближаешь свой закат

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


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

vader_33 не я так написал для форума. Просто уже подумал, что может, вдруг, нпс не может выдать сразу 2 ответа. Систем проверю

Перенес инфопоршень в info_l08rostok_bar( в системе он есть), но все равно вылет ловлю. Скобки вернул в скрипте.

 

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

76561198152189716.png

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


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

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

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

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

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

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

Войти

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

Войти

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

    Ни одного зарегистрированного пользователя не просматривает данную страницу