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

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


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

WARWER, все-таки коряво я выражаюсь)) что ты говоришь, что я - одно и тоже) вот только в ЧН, я рассматриваю относительно чистого неба, в боевках принимаю участие, кажется, такие сквады:

 

 

[mar_csky_general]

auto_id = true

faction = csky

npc = sim_default_csky_0, sim_default_csky_0, sim_default_csky_0, sim_default_csky_0, sim_default_csky_1

...

 

вот ты говоришь про респавн, а можно попросить тебя показать пример логики смарта, в котором спавнятся нпс? у меня прописано так:

 

targets = имя_моего_смарта

sim_type = default

squad_capacity = 1

squad_id = 1

respawn_sector = {=smart_squad_population(csky:имя_моего_смарта:2)} csky

no_mutant = true

 

вот еще пример с респавном в логике смарта:

 

targets = имя_моего_смарта

sim_type = territory

squad_capacity = 2

squad_id = 5

att_restr = имя_моего_смарта_2_sr_attack

def_restr = имя_моего_смарта_2_sr_defence

respawn_sector = {=spawn_smart_captured_by_faction(csky)} csky,renegade

 

Вот с логикой смартов, я не до конца разобрался, может пояснишь это:

respawn_sector = {=spawn_smart_captured_by_faction(csky)} csky,renegade - ???

и это:

respawn_sector = {=smart_squad_population(csky:имя_моего_смарта:2)} csky - ??? (как я понимаю, при кол-ве отрядов в смарте "имя_моего_смарта" будут подспавниваться допл. отряды? или я не прав?)

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

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

Ну да это все же оффтопик, хотя и немаловажный.

1. Если тебя интересует конкретный случай, то никак тут не обойтись без общих понятий и условий. Тут все же не кашпировские, чтобы по неведомым твоим остальным правкам/добавкам в очищенную игру предсказывать иль прогнозировать то или иное.

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

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

3. Если ты не изучишь основы скриптов, то или тебе требуется персональный "репетитор", который будет переводить твои "человечные" мысли на язык движка и обратно, или будешь долго и часто наступая на грабли нащупывать в темноте верный путь.

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

Если ты ожидаешь, что все тебе непонятное (а этого в игре ой как немало) будут тут персонально в очередной раз объяснять, гадая на кофейной гуще, то сильно заблуждаешься.

 

И, плз. портянки кодов прячь за тэгом спойлера.

 

P.S. Как правило, не даю готовых ответов, а если даю, то на конкретно сформулированный вопрос. В большинстве своем даю подсказки, чтобы моддмейкер сам делал (своею головою - говорят это более полезно ;) ).

(это чтобы не было напрасных ожиданий с твоей стороны)

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Сори, буду прятать под спойлер.

Artos,

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

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

долго кумекал, но ничего не накумекал(( вот только нашел один интересный space_restrictor: со следующим содержанием:

 

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {+mar_give_infa} sr_idle@end_section %=start_sim%

[sr_idle@end_section]
 

 

изучив, создал еще один space_restrictor (для выдачи info_portion "mar_give_infa"). с такой логикой:

 

[logic]
active = sr_idle

[sr_idle]
on_info = {=actor_in_zone(mar_space_restrictor_give_infa)} %+mar_give_infa%

[sr_idle@end_section]
 

 

и в игре, когда актор попадает в этот рестиктор, получаю вылет:

 

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp
[error]Line : 180
[error]Description : <no expression>
[error]Arguments : LUA error: ...е.р. - чистое небо\gamedata\scripts\sim_board.script:226: attempt to call global 'abort' (a nil value)

stack trace:
 

 

заглянул в sim_board.script на нужную строку:

 

-- Берем соседние смарты.
local nearest_points = board:get_nearest_smarts(next_point)
for k,v in pairs(nearest_points) do
if calc_point(v, next_point, squad, src_smart_id, tgt_smart_id, arhive, front) == true then - строка 226.
arhive[next_point.id] = front[1]
return true
end
end
 

вообщем не понял в чем проблема. Растолкуйте, пожалуйста, если реально это).

 

 

Правописание никто не отменял.

Устное предупреждение.

ColR_iT

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

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

Зачем заменять нормальный параметр on_actor_inside на корявую (с ошибками) запись on_info = {=actor_in_zone(mar_space_restrictor_give_infa)} %+mar_give_infa% - ну никак не понятно. И само имя неясно откуда взялось, и как аргументы для подобного вызова функции задавать - стОит все же посмотреть в оригинале.

Гадать о причине сумашествия движка/скриптов от такого употребления буковок в логике вероятно не стОит. Для меня самого такой вылет загадка. Как может ссылаться лог на переменную ('abort') которой в указанной логом строке и в помине нет, а в корневом скрипте (_g.script) эта функция должна точно быть - загадка. Тут уже не программист нужен, а толкователь абсурдов.

 

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

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
Artos, поясню. Я снес все с УРОВНЯ. Скрипты же - не трогал вообще, их структура оригинальная абсолютно. Я уже говорил, что подразумевал, что в оригинальной игре симуляция жизни, в том числе и война группировок, связанны с получением определенного info_portion. И да, я не силен в понимании, и иногда методом тыка (логически продумав связку действий) что-либо делаю, и если ошибаюсь, то в след раз. учитываю свои ошибки... Ну так вот, на уровне оригинальном есть space_restrictor, при попадании в который начинается симуляция жизни. Но она начинается, только после получения из диалога (в оригинальной игре) определенного info_portion. Я же создал на новом уровне space_restrictor для получения этого info_portion (чтобы не играться с диалогами). В конечном итоге я получаю в игре этот самый info_portion, и иду в space_restrictor, который дает команду для начала симуляции жизни. И как только ГГ оказывается в этой зоне получаю ту самую ошибку. Ошибка указывает на проблемы со связыванием смартов. Вероятно с путями, но я не могу понять, к чему привязывать, поскольку все пути, которые я делал, основаны на схеме, которая использовалась и в оригинальной игре.. пути так же соответствуют схемам, которые описываются в уроках на stalkerin-не... Изменено пользователем Makc_Evdokimov
Ссылка на комментарий

При совмещение некоторых файлов(конфигов, скриптов и текстур) столкнулся с таким вылетом:

* NULLRT supported

* ...and used

* HWDST/PCF supported and used

- r__tf_aniso 10

- r2_tf_mipbias 0.

Starting engine...

! Player name in registry is empty! (InstallUserName)

Loading DLL: xrGameSpy.dll

! Invalid ogg-comment version, file: d:\stalker clear sky\gamedata\sounds\characters_voice\scenario\video\ati.ogg

stack trace:

 

0023:043CD98B xrGame.dll, CxImage::`copy constructor closure'()

0023:0044D1AC xrEngine.exe, CCF_Shape::ComputeBounds()

 

Странный движковый вылет, в чем причина, не подскажете?

 

P.S.

Разобрался, причина: scripts\ui_main_menu.script

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

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

Судя по невнятному вопросу о некоем "худе" - вероятно всего-то требуется повесить на хот-кеи level.hide_indicators() и level.show_indicators().

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Добрый вечер. Задаю вопрос, который неоднократно звучал в этой теме, но так и остался без ответа. Поиском пользовался и в гугле пытался найти, не помогло.... Как изменить скорость течения игрового времени в Чистом небе? Играю в OGSM-1.8. Вариант с "alife/time_factor", почему-то не работает (хотя в Тени Чернобыля и Зов Припяти, всё получается), Хочу поставить скорость в 3 раза, а не в 10 (как в игре), превышающую реальное время (люблю побродить по Зоне). Начал новую игру, должно всё включится сразу, ан нет. Есть одна подсказка, что меняется в level.set_time_factor, но где он находится, не знаю... Помогите советом, очень надо...

Искусство по-настоящему ругаться матом приходит только с умением водить машину.

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

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

 

K.O.N.S.T.A.N.T.I.N.,

Тут раздел не для поигральщиков, кому захотелось почитерить/поизменять игру, а все же "Школа", поэтому потрудись немного напрячь свои мозги и найти тебе же нужное решение. Сам же пишешь, что "Играю в OGSM-1.8" - ну так и смотри именно в кодах мода, что же выставляет фиксированные значения для тайм-фактора. Простейший поиск по "time_factor" в скриптах даст тебе подсказку - level.set_time_factor(10).

Вот и меняй как тебе захотелось... а не только на конфиги надейся.

 

 

golovastik, вероятно модератор "подскажет" более детально, и може дажет "поможет", а пока - обратись к Кашпировскому (но не на этом форуме).

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Сам отвечаю на свой вопрос, никто не дал подсказку, искал в скриптах, пересмотрел всё: С.Т.А.Л.К.Е.Р. - Чистое Небо\gamedata\scripts\ogsm_sleep. Меняем :

-- Kirgudu

function stopper_time_shift()

-- в случае, если у нас не сон, а обморок после выброса или ограбления

-- сны не смотрим, погоду меняем

level.set_time_factor(10) - меняем 10 на 3 и время идёт в 3 раза быстрее, а не в 10. Другие level.set_time_factor(10) не трогаем, т.к. происходит несоответствие картинки и субтитров. Так-же, поменял в alife/time_factor на 3. Начал новую игру, время меняется, как хотел. Может кому пригодится, буду рад...

Изменено пользователем K.O.N.S.T.A.N.T.I.N.

Искусство по-настоящему ругаться матом приходит только с умением водить машину.

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

Попробуем на примере вопроса от K.O.N.S.T.A.N.T.I.N. "Как изменить скорость течения игрового времени в Чистом небе?" - разобрать ошибки и грабли:

1.

Задаю вопрос, который неоднократно звучал в этой теме, но так и остался без ответа.
В любом ФАКе к игре Сталкера можно найти ответ на поставленный вопрос, т.е. то, что тайм-фактор, от которого зависит скорость течения игрового времени задается в конфиге alife.ltx параметром time_factor. Поэтому глупо сетовать на то, что никто и нигде не дал ответа на факовый вопрос.

2.

Играю в OGSM-1.8. Вариант с "alife/time_factor", почему-то не работает
Скорость течения времени в игре не постоянна. В модах есть ситуации, когда время ускоряется. Это и сон ГГ, когда за секунды проходят часы, и различные другие тестовые или иные нововведения.

Там же в факах или в статьях/справочниках по функциям немало упоминаний про то, что скорость течения игрового времени может изменяться функцией level.set_time_factor(number). Т.о. если у вас скорость течения игры отлична от дефолтно установленной конфигом - то и следует искать те места в скриптах моди и функции, в которых это время меняется.

К сожалению, нередко моддмейкеры экономят время и строки кода, и вместо универсального варианта пишут частные случаи. Так и в OGSM-1.8, немало строк, где жестко задается level.set_time_factor(10), что при желании изменить в конфиге скорость течения времени приводит к "не работает...".

Если перед изменением времени считывать требуемое для игра значение из конфига, то подобных граблей можно избегать, т.е. писать так:

factor = system_ini():r_float("alife","time_factor")
level.set_time_factor(factor)

- и тогда код скрипта будет пригоден для любого мода и/или изменения его.

3.

Другие level.set_time_factor(10) не трогаем, т.к. происходит несоответствие картинки и субтитров.
Вот еще одни грабли, на которые наступают новички... Скорость течения времени должно быть одинаково, исключая конечно сами события с ускоренным временем (сон, ...).

Если в одном случае задавать тайм-фактор 3, а в другом 10 - то каково же будет время в игре? Ответ очевиден - будет таким, каким установлено в последнем случае вызова функции, т.е. получается непредсказуемым. Да и какова причина оставлять другие значения от заданного в конфиге? Есть только она причина, в игре/моде могут быть заданы таймеры, которые расчитаны из расчета игрового времени. При изменении тайм-фактора подобные времена может потребоваться скорректировать. Например в модах с выбросом от АМК-мода, потребуется скорректировать времена выброса (сам выброс состоит из 5-ти отрезков времени), т.к. они как раз и завязаны на игровом времени и при изменении тайм-фактора с 10 на 3 выбросы станут и короче и "скомканными".

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos

 

Спасибо за пояснения! Добавил строчку: factor = system_ini():r_float("alife","time_factor"), перед: level.set_time_factor(factor), как вы рекомендовали ( 3 поменял, назад, на 10, в alife - оставил 3 ). Эту строчку можно добавить, кажется, только в одном месте. Попробовал начать игру с начала. Сразу возникло несовпадение картинки и субтитров, о чём я говорил в своём посте, ранее. Но возможно не будет, в дальнейшем, других, упоминаемых вами, багов. Время меняется, как хотел. Остаюсь на вашем варианте. Ещё раз спасибо за помощь. С уважением, Константин.

Искусство по-настоящему ругаться матом приходит только с умением водить машину.

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

K.O.N.S.T.A.N.T.I.N., что ты называешь "несовпадением картинки и субтитров"? И каким боком к этому относится скорость течения (фактор) игрового времени? Выложи скрин - тогда можно о чем то говорить...

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Каким боком относится, я не знаю, скрин - ни разу не делал - не умею. "Несовпадение картинки и субтитров", в начале игры - это... уже пошёл первый диалог (субтитры), а картинка (видео), ещё показывает стену дома и постепенно переходит на нужное место (где происходит диалог). Т.е. видео отстаёт. Но это ладно... ГГ спит по 2-3 мин., хотя ставишь 5 часов, или "до утра" ( при последней правке). В общем, всё вернул в вариант, предложенный мною. Спит нормально, время идёт, как я хотел. Всё хорошо... надеюсь. :ny_ph34r_1:

Искусство по-настоящему ругаться матом приходит только с умением водить машину.

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

Проявился этот эффект: "Если в одном случае задавать тайм-фактор 3, а в другом 10 - то каково же будет время в игре? Ответ очевиден - будет таким, каким установлено в последнем случае вызова функции, т.е. получается непредсказуемым." Поменял все 10 на 3 (всего в 3 местах), поспал, время стало опять идти нормально. Получается, что самым оптимальным остаётся вариант замены всех 10 на 3 (например), без добавления каких-либо строчек.

Изменено пользователем K.O.N.S.T.A.N.T.I.N.

Искусство по-настоящему ругаться матом приходит только с умением водить машину.

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

Как уменьшить частоту спавна отрядов "Долга"? После квеста на затопление подземелья они начинают спауниться в диких количествах, хочу это изменить как нибудь.

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

Morder07,

 

Либо в se_respawn.script уменьши число НПС долга, но лучше в faction_duty.ltx проверь respawn_idle_time, respawn_hours и base_squad_number, т.к. это напрямую влияет на респавн.

==================

 

Как заспавнить предмет в ящик(не в тайник а в ящик!)?

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

Старлей, "ящик" иль "тайник" - суть едина: спавн предмета возможен в объекты класса 'inventory_box' (о сталкерах иль монстрах не поминаем).

Спавн "в ящик" ничем не отличается от спавна "сталкеру", т.е. последним (5-ым) аргументом в функции 'create' указывается игровой идентификатор (ID) владельца (объекта для спавна).

Однако, в отличии от спавна "сталкеру", имеется нюанс: чтобы заспавненные "в ящик" предметы не исчезали из ящика после save-load - требуется перевести ящик в оффлайн и обратно.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

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

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

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

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

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

Войти

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

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...