Все посты %s в %S - AMK Team
Перейти к контенту

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


Halford

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

Wolix

Смогу ответить только вечером если будет уточнен вопрос.

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

 

Хотя вроде как "максимально оригинальный скрипт" - понятно, но(!) максимально по символам (с минимумом правок) или с максимально оригинальныи алгоритмом (т.е. правки не имеют значения).

 

"внести только эти изменения" - процитировав полностью последние посты по теме (заодно и не относящееся к делу), думаешь понятн стало что подразумевается под 'только эти'?

 

"при смене локаций пусть остаётся такой какой в игре" - т.е. из всех локация для тех с которой и кудв при переходе сбрасывать замомненные времена? И это при желании "максимально оригинальный скрипт"?

И ... хотел бы уточнить, т.к. в некотором замешательстве, и получить ответ:

Weeko == Wolix: (т.е. одно лицо?)

 

 

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

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


Ссылка на сообщение
Читак, почитай стати на вики-сайтах по логике и в частности по схеме 'walker' (для монстров).

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

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


Ссылка на сообщение
Читак, твои вопросы сильно напоминают поиски черной кошки в темной комнате ... А вообще она там есть?
Читак: По теории можно сделать выводы что собака просто не попадает в этот смарт либо ...
А может быть стОит не задаваться вопросом о нерабочей логике (хотя и тут у тебя описки/ошибки), а определиться с базовой информацией?! А заспанилась ли собака, а создан ли гулаг, а попала ли собака в гулаг, а получила ли она именно эту работу, ...? И т.д. и т.п. Без ответов на эти вопросы не имеет смысла заниматься погадалкаи о "а почему логика собаки не работает".

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

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


Ссылка на сообщение
Miller, смотри в \gamedata\config\ui\pda.xml вывод кнопок с тектами "pda_btn_contacts" и "pda_btn_ranking" ...

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

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


Ссылка на сообщение

van4e3, нужно править логику для техники ... т.е. убирать из условий: цель - актор.

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

 

Tiratore.d, тебе прямой путь в топик по правке движка ...

 

 

Добавлено через 4 мин.:

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

Если уж "решил создать" - то без минимальных знаний этого не создать, а только попросить 'создать' кого-то ...

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

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

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


Ссылка на сообщение

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

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

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

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

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


Ссылка на сообщение

van4e3, вообще-то путь к логике бармена указанный в алл.спавне: cfg = scripts\bar_barman.ltx

В этом файле (из оригинала игры) уже стОит: inv_max_weight = 10000 <- 10 тонн!

В НС вроде как эти строки/числа не менялись.

Или ты что-то уже наковырял в этом файле или алл.спавне или работает скрипт из НС, ограничивающий вес/объем для бармена как для рядовых сталкеров. Вспоминай что трогал и откатывайся в зад ...

 

Добавлено через 8 мин.:

yang34, смотри строки типа: Velocity_xxx (обычно помечены комментом "speed factors")

Скорости прыжка нет, а есть сила прыжка. Смотри секцию помеченную как "Jump parameters" (jump_xxx)/

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

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


Ссылка на сообщение

Andrey07071977, уточни версию игры/мода.

В оригинальной игре Сидорович не выдает никаких детекторов.

В АМК-моде 'detector_simple' спавнится актору в all.spawn'е, но ... что-то не замечал, чтобы по ногами болтался.

Привел бы скрин, чтобы взглянуть на то, что имешь. И приведи коды, которые спавнят детектор, если это не на AMK-спавне.

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

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

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


Ссылка на сообщение

Ирбис, ни одна строка в лог-файле НЕ способна привести к ошибке/вылету.

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

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

 

Строка типа: ***FATAL*** too many lmap-textures (limit:8 or 32M). годика 3-5 назад могла и насторожить кого-то, у кого очень слабенькие видеокарты, не способные загружать большие текстуры, но на 'сегодня' - это уже неактуально (в подавляющем большинстве случаев) и является просто напоминанием об использовании в игре/моде больших текстур.

А уж заранее озабочиваться без каких-либо на то причин при чтении лог-файлов - вредно! ;-)

Игрок должен играть, а не б(з)деть, рассматривая строки лога/консоли. (ИМХО)

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

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

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


Ссылка на сообщение

Driv3r, ну а если знаешь - что мешает отнять ВСЕ деньги, которые имеет это 'npc'?

 

local money = npc:money() --/ все что имеет

npc:give_money(-money) --/ со знаком 'минус' - не даем, а отбираем ...

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

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

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


Ссылка на сообщение

ColR_iT, почитал детальный разбор и ... готов поспорить и доказать, что ты заблуждаешься, по крайней мере относительно цифры в строке condlist.

 

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

Т.е. если захотел выдать тайник со 100% вероятностью и без каких либо условий - то такой тайник и будет выдан без доп.условий на совпадение с community.

 

2.

Дальше, проверка на равенство (120) переменной tr_sum и ноля (такое произойдёт, если за блоком condilst будет стоять значение 100), а также проверяется вернула ли функция math.random значение меньше 65 или нет... вчитайтесь внимательно - функция math.random.

Если что-то одно вернёт true, то тайник выдан не будет

И что тут странного и непонятного? Если нет никакой вероятности выдать какой-либо тайник - тайники НЕ выдаются.

Если заданы вероятности для одного/нескольких тайников - то что-либо будет выдано с вероятностью не более 35%.

Это можно очень даже объяснить: Если для трупов со статусом "новичек" доступны к выдаче 10...20...50 и каждый с вероятностью, например, в 5 %, то суммарная вероятность будет 50...100...250% ! Т.е. хоть какой либо тайник будет выдаваться с почти каждого трупа!?

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

 

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

Следует все же внести ясность, что "цифирька" в параметре condlist = 5 не является именно вероятностью в процентах(!), а это некий весовой коэффициент вероятности. Вспомним про респавнеры(!), где тоже НЕ вероятность спавна задается, а весовой коэффициент вероятности.

Т.е. это цифра, которая определяет скоько частей из общей вероятности для всех тайников приходится на данный тайник.

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

 

В итоге, цифирька в конфиге тайников condlist = N действительно НЕ вероятность, которая выражается в процентах, а ее весовой эквивалент, который будучи суммированным с остальными аналогичными - и определяет вероятность выдачи именно этого тайника. Упрощенно - это все же "вероятность выдачи тайника" с общей поправкой - вероятнсть не более 45%.

 

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

 

Резюме (относительно оригинального скрипта игры):

1. Если condlist = 100 - тайник будет выдан при первом удобном случае;

2. Если condlist = 0 (или отсутствует) - тайник НЕ будет выдан скриптом рандомных тайников ни при каких условиях;

3. Все тайники (у которых не 100) выдаются с вероятностью НЕ более 35% (грубо: каждые два из трех трупов - пусты);

4. Чем больше condlist = N - тем выше вероятность выдачи этого тайника из общего числа доступных к выдаче тайников.

Если condlist = 101 или более - тайник будет выдан из "общей кучи" с вероятностью менее 35%, но (!) с очень высокой вероятностью (близкой к 100% от общего числа доступных к выдаче тайников).

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

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

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


Ссылка на сообщение

ColR_iT, сорри, но пока какая-то чехарда из утверждений и неясен смысл именно для топика/для других читающих ... а вернее смысл как раз искажен:

Цифра в конце стоки condlist, в файле treasure_manager.ltx, задающая условие на выдачу тайника, не какая не вероятность и не колличество выполненых условий, как думал я, а это просто цифра, да-да именно цифра и ничего иначе.
Выводы...

Цифра в строке condlist не какая на хрен не вероятность, а просто цифра, и каково её значение особой роли не играет. Вообще GSC вероятно немного не правильно распределили эти цифры, в алгоритме просматривается процентные соотношения, но высчитать их, зная что работает функция random физически не реально.

Как уже выше показал, что имеется три ветви алгритма выдачи тайников:

1. 100% вероятность выдачи;

2. Запрет выдачи "безвероятностных" тайников и общее ограничение в 35% (только каждый третий труп может выдать тайник);

3. Выдача (из общего числа прошедших проверку на условие) тайника в зависимости от параметра его условной вероятности.

 

С первыми двумя все прозрачно и ясно. Третья ветвь, алгоритм которой встречается в том или ином виде не только для тайников, тоже достаточно ясен. Сумма (tr_sum) всех treasure_prob - это 100%. Каждая treasure_prob - это весовой коэффициент вероятности для каждого тайника прошедшего проверку и доступного для выдачи.

Если взяь твой пример с табличкой avail для тайников, то имеем: 2+5+3+2+3+3+1+2 = 21

т.е. общее число весовых коэффициентов 21 и это 100%.

Тогда имеем, что, например, тайник esc_secret_bandit_cross с его condlist = 5 будет иметь вероятность выдачи: 100*5/21 = 23,8%

 

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

И, само собою, данный алгоритм НЕ предусматривает возможность задания одинаковой вероятности для чего бы то ни было (если конечно не для всех одинаковую), т.к. как только хотя бы один тайник выдан - то в дальнейшем он уже не учитывается и все вычисления вероятностей будут иметь совершенно иные значения. Это именно алгоритм РАНДОМНЫХ тайников, а не выдача по заведомо фиксированным значениям.

 

  • Полезно 2

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

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


Ссылка на сообщение
_Призрак_, а поделиться информацией (что/где править)? "Финалок" ведь немало (по числу патчей игры), да и во многих модах движек со своими правками-примочками и ... единым переносом тут не обойтись.

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

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


Ссылка на сообщение
proper70: Хочу сделать автосейв перед переходом с локи на локу. Скажите, можно ли как-то отследить срабатывание level_changer?

Ну, во-первых, автосэйв при переходе сам создается ... Так что ты не автосэйв хочешь, вероятно, а просто некий свой сэйв, который непосредственно перед переходом ...

Во-вторых, отследить то можно в скриптах, но(!) это по сути уже и есть почти переход ... если жмешь <O'k>, т.к. тут же и запускается процесс создания автосэйва. Отказ же от перехода - ты и не переходишь никуда, а продолжаешь на прежней локации. Не уверен (нужно проверять на практике) что запуск создания сэйва при открытом окне от левел-ченджера будет корректным ... и не приведет к коллизиям.

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

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


Ссылка на сообщение

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

Оружие с зум-прицелом в ТЧ можно сделать аналогично как в ЗП, но требуется модицицированная xrGame.dll, которую можно найти в тех модах, в которых уже для ТЧ встроена возможность зум-прицела.

 

MIDERY, скоро только кошки родятся © народная мудрость.

1. Чтобы диалог не появлялся нужно чтобы стояла общая проверка (прекондишен) для диалога, а не в самм диалоге. Это или в скриптах или в логике НПС делается.

2. При спавне скриптом НПС получает все то, что прописано ему в его секции спавна. Если озаботился, то там можно и кастомдату с логикой прописать. Если же используешь "пустые" секции спавна - то только нет-пакетами можно добавить после спавна требуемое ...

Кроме спавна в all.spawn и скриптами (alife():creatr(...)) других способов спавна не существует.

3. Чтобы с врагом можно было бы вступить в диалог требуется а) вности правки в xr_wounded.script, где собственно и запрещаются такие диалоги и б) написать сами диалоги о помощи и о "поболтать" для враждебных группировок. Все это можно посмотреть и сделать по аналогии в большом количестве уже имеющихся модов.

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

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

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


Ссылка на сообщение

MIDERY, на примере: смотри в spawn_sections.ltx как задается параметр custom_data. В нем прописан путь к файлу с конфигом для смартов, логики и пр. для данной секции. Ну а в самом файле можешь как хочешь над смартами и логикой издеваться.

 

gruber, перечитай мой ответ. Как раз и говорю о прекондишенах НЕ в самом диалоге. Не нужно зашориваться и считать, что прекондишен - это только тэг в дереве диалога ... Это именно "пред-проверка" и может быть выполнена в скриптах или в скриптовых диалогах. Собственно dialog_manager.script, который руководит общими для неписей диалогами, и является примеров одного из примеров "как (не)появляются диалоги". Но у MIDERY похоже иной случай, и гадать без соотв.информации совершенно не настроен.

По описаниям от разрабов вроде как тег <action>dialogs.break_dialog</action> должен удалять данный диалог из списка доступных

Не путай себя и других. Это всего лишь рядовое действие из самого диалога и только прерывает его, а не удаляет из списка.

 

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

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

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

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


Ссылка на сообщение

ColR_iT, в исходном вопросе от MIDERY'a и подтверждено далее было "вроде бы все до этого работало".

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

Ну и конечно же даже не имел ввиду обязательность запрета на диалог именно вне диалога. Вероятно не очень корректно/внятно выразился.

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

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

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


Ссылка на сообщение

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

 

ColR_iT, не заморачивайся, ответ будет типа: "Где-то прочитал ...". Нет никаких разумных ограничений на кол-во инфопоршней. Если что-то и существует, то на размер выделенной памяти/ресурсов разработчиками игры для хранения такого массива и собственно на длину имени инфопоршня (чтобы строка xml-ки читалась).

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

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

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


Ссылка на сообщение
Keng: Можно ли коментить строчки в _g.script?

Можно но НЕ нужно, если ты хочешь понять отчего происходят ошибки/вылеты.

Сам _g.script никак не виноват в ошибках, а именно в нем сделана функция принудительного завершения игры (abort).

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

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

 

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

Запросто, если умеешь работать с нет-пакетами ..., в противном случае никак (не считая "разбить").

 

saruman_ten, убедительная просьба, поменьше "воды" в постах ...

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

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

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


Ссылка на сообщение

ColR_iT, ой, ступил ... совсем выскочило из головы про выключалки. Смутили слова в вопросе "воздействовать на лампочки".

Однако тут придется постараться, т.к. лампочки не биндятся и искать в db.storage бессмысленно, имена у лампочек по локациям зачастую дублируются ... так что придется постараться отыскать клиентский объект нужной лампочки, чтобы "турнуть" ее. ;-)

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

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

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


Ссылка на сообщение
  • Недавно просматривали   1 пользователь

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