Перейти к контенту

[SoC] Ковыряемся в файлах


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

@АRХИТЕКТОР, подобными предложениями меня идейщик одно время закидывал. Это реально конечно сделать (с исходниками все реально сделать если быть честным), но по факту к оригиналу это не применимо, там сталкеров мало самих по себе, так у них еще и оружие строго то которое прописано, если это делать на каких-то модах, минимум как амк, еще может и есть какой-то смысл. 

 

Разумеется я пока сделал условия которые зависят только от ГГ. Если есть продуманные идеи по созданию экономических кризисов, или еще каких мыслей по поводу событий не относящихся к ГГ на основании которых можно будет менять цены, то я только "за". Сам не люблю такой момент, когда все вокруг ГГ крутится :).

 

Реальную экономику можно добавить только полным переделыванием геймплея. В рамках глобального мода это вполне возможно, почему нет.


upd: 

По поводу гудвилов не прав был. В движке получается общий гудвил, зависимость идет от благосклонности персонажа, репутации, ранга, благосклонности его группировки к актору, и его группировки к группировке актора. Все это суммируется, и если сумма меньше -100, то совсем все плохо, если больше 100 то все отлично :). Извините если кого запутал, сам вот разбираюсь сижу. Этот фактор равен числу от 0 до 1, и как-бы противоположная зависимость от того хорошие у вас с нпс отношение или нет.

Изменено пользователем Карлан
  • Спасибо 1
Ссылка на комментарий

Господа!  Кто-нибудь разбирался с вопросом по классу оружия "WPN_BINOC"? Я имею в виду оружие с автозахватом цели._Весь сайт перерыл_(и не только этот)!_Вопрос следующий и очень интересный: почему оружие стреляет только одиночными? Пушки по убойности и дальности как у gauss, с минимальным разбросом, должны иметь что-то подобное хотя бы в качестве апгрейда._Я понимаю, что дело все в классе данного оружия, а именно BINOC,_но тема интересная,_согласитесь?_Создать новый класс,_предположим BINOC_AP и прописать его в свойства оружия можно,_но не силен я в этом._Но кому-то делов на час.

Изменено пользователем Kirgudu
Добавлено Dennis_Chikin,

По тому что класс такой. В движке прописан. Стреляет только одиночными. Берете исходники, и "за час" переделываете как надо.

Ссылка на комментарий

По поводу торговли, пока меня это интересует. Ковыряю ОП2) И пока интересовался только покупкой, как самой актуальной для меня, т.е. buy_condition.

 

Зависимость стоимости от износа нелинейная и в целом немного странная, но близка к линейной.. С ошибкой в несколько процентов можно аппроксимировать линейной функцией, если не нужна 100%ая точность. Стоимость ствола при кондишине=33% равна половине.. Соответственно, даже полностью убитый ствол что-то стоит.

 

А вот гудвил влияет только на распределение коэффициента у торговца, который умножается последним на уже полученную цену в зависимости от износа. Я обнаружил, что общий гудвил  actor:general_goodwill(торговец) полностью влияет на коэффициент - т.е. похоже других зависимостей нет. Зависимость абсолютно линейная в интервале от -1000 до 1000. Значения выше по модулю, если и достижимы, учитываются, как +-1000.

Правда, некая опять странность. По конфигам, да и по логике, +1000 - наилучшее значение, как -1000 наихудшее. Но в ОП2 все наоборот - чем больше гудвил, тем меньше цена покупки.

Искать корни сего явления дальше неохота. Может типо имеется ввиду, что чем "круче" Меченый, тем меньше он нуждается в деньгах? Я не так часто играл в последнее время в сталкеров, может чего подзабыл, но мне всегда казалось, что по ходу сюжета и набора репы доход от торговли рос(!)

 

 

Кто бы вот что подсказал. Как вытащить гудвил торговцев в офлайне - находящихся на других локах, например?

Изменено пользователем PGU_tk
Ссылка на комментарий

@PGU_tk, не путай людей, твой пост дефакто не несет смысловой нагрузки. Про гудвилы у тебя выводы вообще не верные (ты даже не все охватил), я подобное писал в свое время, и мне по шапке дали ;). И правильно дали. Хотя вот опять-же мой опыт разнится с комментами разрабов, ну и ладно.

По кондиции вот:

// computing condition factor
// for "dead" weapon we use 10% from base cost, for "good" weapon we use full base cost
float condition_factor = powf(pItem->GetCondition()*0.9f + .1f, 0.75f);
Даже комментариями подписали все. Хотя и из функции все видно :).

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

 

Я обнаружил, что общий гудвил  actor:general_goodwill(торговец) полностью влияет на коэффициент - т.е. похоже других зависимостей нет.

Для тех кто не понял добавлю, вот как раз он только и влияет, из чего он складывается - я написал выше, и при каких значениях отношения становятся благоприятные я тоже написал. А коридор у него ограничен конфигом, можете его менять как вам угодно. У него коридор 2^16 степени, так что твое утверждение, что -1000/1000 - пределы, абсолютно неверно, все это можно перенастроить. Соответственно эти значения падают в relation_registry.

 

Собственно, а зачем тебе гудвил торговца в офлайне? Торговать на расстоянии же с ними не будешь :). Опиши конечную цель. В любом случае вменяемым способом его получить нельзя, он всегда вычисляется заново. Если только в движке писать что-то такое.

Изменено пользователем Карлан
  • Полезно 1
Ссылка на комментарий

@Карлан

 

Про гудвилы у тебя выводы вообще не верные

 

Для тех кто не понял добавлю, вот как раз он только и влияет

На находишь противоречие ?) Т.е. автор не прав, но он прав?)

 

что -1000/1000 - пределы, абсолютно неверно, все это можно перенастроить

Что значит "абсолютно неверно", если в оп2 именно так и обстоит дело? Я и не утверждал, что это везде.

Далее, про то, из чего складывается общий гудвил, написано и в конфиге, это я был в курсе.

Но есть разница между тем, что было сказано тобой выше и тем, что описал я - из моего описания уже лично мне _действительно_ понятно, как формируется цена и как её получить в игре. Я же изначально спрашивал про формулу? Ну вот формула состоит в получении общего гудвила, как написал, и в использовании аппроксимирующей функции по кондишену, потому что реальной, понятной зависимости там нет или её трудно "увидеть". В принципе, написал для таких же, как я , мало ли пригодиться)

 

 

Соответственно эти значения падают в relation_registry.
 

Вот это пасиб, буду иметь ввиду.

 

 

не путай людей, твой пост дефакто не несет смысловой нагрузки

Я думаю, если ты тут поищешь, найдешь куда менее информативные :P

 

Опиши конечную цель. В любом случае вменяемым способом его получить нельзя, он всегда вычисляется заново. Если только в движке писать что-то такое.          

Мм, плохо, если так, но ок) :russian_ru:

Цель - как всегда у меня - сделать нужный для себя скриптик, облегчающий игру\экономящий время :D  :good2:  Ну и немного любопытства))

 

 

я подобное писал в свое время, и мне по шапке дали ;). И правильно дали

Это уже оффтоп, а почему дали? Можно в личку. ТЕма же - ковыряние файлов. Ну, вот я\мы этим и занимаемся. (Только кто-то в этом на уровне мастера, а кто-то новичка, как я :) ). В шапке написано только про пользование поиском, ну так я на свой вопрос ответ и не нашил

Ссылка на комментарий

@PGU_tk,

"На находишь противоречие ?) Т.е. автор не прав, но он прав?)" - я тут не нахожу противоречия. Ты не прав, влияет не только он, выше я уже это описал.

"Что значит "абсолютно неверно", если в оп2 именно так и обстоит дело? Я и не утверждал, что это везде." - значит что не пори фигни по поводу коридора. Какая мне разница что там в каком-то оп2?

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

"Ну вот формула состоит в получении общего гудвила, как написал, и в использовании аппроксимирующей функции по кондишену, потому что реальной, понятной зависимости там нет или её трудно "увидеть"." - вот нихрена это не так, описывал же, читаешь что-ли через строку?

"Это уже оффтоп, а почему дали?" - потому что я подумал что сделал какое-то открытие, а на самом деле бессмысленный пост написал.

 

Давай еще мне расскажи про коридор группировки от -3000 до 1000. Занятно. Только я уже сказал что коридор - 2^16.

 

В общем если ты считаешь что ты все понял, а я тут дураком сижу, то не пиши тут о торговле больше ничего, не путай людей. Если думаешь что ты все понял - думай дальше, я этому мешать не собираюсь ;).

Ссылка на комментарий

Гм, с учетом того, что в ОП движок ни кто не правил, мне удивительно слышать, что там что-то не так, как в другом месте.

Но, кстати, да - что-то этакое, странное, замечалось. Не в ОП отнюдь.

 

Ни заглянуть в собственно движок, ни поиграться с порядком k в system руки не дошли пока. 8(

 

P.S. А давайте мы все-таки будем писать больше по делу, и меньше - про отвлеченные материи ? Это так - пожелание, обращенное к неопределенному кругу лиц. Только вот в четверг тему чистил...

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

@Карлан

 

В общем если ты считаешь что ты все понял, а я тут дураком сижу, то не пиши тут о торговле больше ничего, не путай людей

:D Ну ты ваще. А где я такое сказал?)

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

 

влияет не только он, выше я уже это описал.

Что если параметр есть сумма нескольких, то по факту и они тоже влияют? Ну так это понятно, но для подсчета цены это ненужно знать - нужна только сумма.

Про корридор - да, ты писал про -100+100. В ОП2 он -1000+1000 и это же написано в конфиге. О чем разговор? Если его можно менять из мода в мод, то и нет смысла акцентировать на этом внимание.

 

Все остальные твои "выпады" оставлю без комментария. Я протестировал уже порядка 15 торговцев в оп2 и везде 100%ая точность. Для получения формулы так вообще пришлось вспоминть "былое", матлаб, аппроксимации. В моем скриптике цена аппроксимируется полиномом 6ой степени. Имхо, наиболее приемлемая точность (до 4го знака). 

 

После того, как допишу скриптики и уже поиграю, будет возможность постоянно убеждаться прав я или нет) Кроме того, еще ОГСЕ, что тоже на SOC и он тоже в планах.

 

потому что я подумал что сделал какое-то открытие, а на самом деле бессмысленный пост написал.
 

Ну и ладно, главное же, что ты сам понял))

Изменено пользователем PGU_tk
Ссылка на комментарий

Во время игры в Clear Sky я заметил не много другие рандомные звуки, типа завывания и еще чего-то не понятного. Такие звуки есть и в OGSE 0.6.9.3. Хотел бы и в оригинале ТЧ такое сделать. Вот только не знаю где копать. Они видимо прописываются в каком-то скрипте? Если не сложно может кто-нибудь выложить сам скрипт и в добавок папку со звуками из ЧН "ambient"?

NL-Vincenz.gif

Ссылка на комментарий

 

 

Переполнение стека. где-то в скриптах накосячил, ищи где.

Ошибка поперла после ковыряния в alife_ и way_ файлах all.spawn. Скрипты вообще не трогал.

 

Фрагмент из state_mgr.script

--' Закончил ли менеджер свою работу


class "eva_state_mgr_end" (property_evaluator)
function eva_state_mgr_end:__init(name, st) super (nil, name)
self.st = st
self.mgr = nil
end

function eva_state_mgr_end:evaluate()
if self.mgr == nil then <-------- ругается сюда ----------------<
self.mgr = self.object:motivation_action_manager()
end

if not self.mgr:initialized() then
return false
end

local current_action_id = self.mgr:current_action_id()
if current_action_id ~= stalker_ids.action_combat_planner and
current_action_id ~= stalker_ids.action_danger_planner and
current_action_id ~= stalker_ids.action_anomaly_planner
then
self.st.combat = false
end

return false
end

 

self.object - это и есть объект непися?

Ссылка на комментарий

@UnLoaded, ты какой-нибудь гулаг через одно место добавил вот все и валится. Убирай последние правки до того пока вылет не пропадет, потом все перепроверяй. У тебя где-то либо логика кривая совсем, либо какие-то противоречивые действия выполняются (скорее вот именно это), например вейпоинт поставил в ин рестрикторе, или наоборот за аут рестриктором. Просто так ничего не бывает;)

Ссылка на комментарий

Ну кстати да, если там нпс какие то специфические, а не рядовой респавн, то выяснив какой непись - можно узнать в какой работе/каком гулаге проблема. Имею в виду то, что если он специфический то автору изменений должно быть известно, куда он его ставил.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

Здравствуйте уважаемые форумчане.

У меня возникла небольшая проблема с логиками space_restrictor

; cse_abstract properties


section_name = space_restrictor
name = sound_space_restrictor
position = -139.012359619141, 0.119494915008545, -188.815979003906
direction = 0, -1.57079637050629, -1.57079637050629
id = 65535
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 416
level_vertex_id = 427123
object_flags = 0xffffff3e
custom_data = <[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {+ak_u_nas} nil %+soldier_vragi =play_snd(characters_voice\scenario\backup\antikvar)%

[spawner]
cond = {+ak_u_nas}
END

; cse_shape properties
shapes = 1
shape_0:type = box
shape_0:axis_x = 3.67659902572632,0,0
shape_0:axis_y = 0,3.67659902572632,0
shape_0:axis_z = 0,0,3.67659902572632
shape_0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 0


 

; cse_abstract properties
section_name = space_restrictor
name = space_posilnogo
position = -8.22247982025146, 7.5, 15.6480283737183
direction = 0, -1.57079637050629, -1.57079637050629
id = 65535
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 416
level_vertex_id = 427123
object_flags = 0xffffff3e
custom_data = <[logic]
active = sr_idle

[sr_idle]
on_timer = 1000 | nil %+osilnii_poiavilsa%

[spawner]
cond = {+peregovor_s_posilnim_start}
END

; cse_shape properties
shapes = 1
shape_0:type = box
shape_0:axis_x = 14.6765995025635,0,0
shape_0:axis_y = 0,14.6765995025635,0
shape_0:axis_z = 0,0,14.6765995025635
shape_0:offset = 0,0,0

; cse_alife_space_restrictor properties
restrictor_type = 0


 

Теперь сама суть проблемы. Что в первом что во втором логики работают правильно. Только вот в первом функция 

[spawner]
cond = {+ak_u_nas}
работает правильно, то есть space_restrictor появляется после получения поршня ak_u_nas.
 
Ну второй space_restrictor не подчиняется функции 
[spawner]
cond = {+peregovor_s_posilnim_start}
И появляется без получения поршня peregovor_s_posilnim_start.
В чем может быть проблема? По сути они идентичны, ну у второго не хочет работать функция, я бы еще понял если бы условия не выполнялись, то есть эти on_timer = 1000 | nil %+osilnii_poiavilsa% , ну они выполняются. А сам [spawner] не работает.
Ссылка на комментарий

@Wolkodav, секция spawner в кастомдате поддерживается лишь для НПС, монстров и машин.

Логика для второго рестриктора должна быть примерно такая

 

 

[logic]
active = sr_idle@1

[sr_idle@1]
on_actor_inside = {+peregovor_s_posilnim_start}sr_idle@2

[sr_idle@2]
on_timer = 1000 | nil %+osilnii_poiavilsa% 

 

 

Изменено пользователем Charsi
  • Согласен 1
Ссылка на комментарий

 

 

Wolkodav, секция spawner в кастомдате поддерживается лишь для НПС, монстров и машин. Логика для второго рестриктора должна быть примерно такая

 

Дополню. Первый рестриктор тоже спавнится сразу, просто его логика как раз и срабатывает при выдаче поршня "ak_u_nas".

  • Согласен 1

Сталкер - наше всё!

Ссылка на комментарий

Как избавиться от надоедливого бага когда не спавняться пистолеты у мертвых нпс, особенно у солдат новичков. Заранее спасибо!

 

С учетом того, что такого бага ни кто ни разу не видел - вопрос, конечно, интересный... dc

 

Ну не знаю что это тогда. Патч 1.0004, у убитых нпс иногда не спавнятся пистолеты, хотя патроны в трупах есть. У солдат новичков на кордоне, ни у одного пистолет не спавнится, хотя патроны есть к нему. У бандитов с обрезом такая же история, и у некоторых нейтралов. Если это не баг то что тогда, и как это исправить? Потому что в некоторых модах где арсенал или другой оружейный мод такого нет. Только в оригинале.

 

А у них эти пистолеты должны быть ? dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Может быть глупый вопрос, но все равно. Где в конфигах регулируется скорость бега, ходьбы НПС?

 

gamedata\config\creatures\*.ltx - не ? dc

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

NL-Vincenz.gif

Ссылка на комментарий

Всем доброго времени суток, как сделать чтобы у нпс с новой локации при вопросе "Что интересного расскажешь?" выводились мои диалоги? Инклуд файла character_dialogs в профиль вставил, новые диалоги прописал в stable_dialog_manager, нпсы все равно говорят "Ничего не знаю" В чем загвоздка?

 

gamedata\config\misc\dialog_manager.ltx ? dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

@Smith_86, вот я только что самолично 4 дня сидел и переписывал весь дез_менеджер от и до. С уверенностью могу сказать, что такого быть не может. Там простая система, если в конфиге у нпса есть эти патроны, то проверяется есть ли у нпса зависимое от патронов оружие, если оно есть и оно не помечено как выброшенное, то его можно спавнить. 

 

У меня лично все прекрасно спавнится. Могу показать скрипт.

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

×
×
  • Создать...