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

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

В движке порядок чтения конфигов и так есть, почитайте xr_ini.cpp

08.01.2012 в 03:30, xStream сказал(а):

Те, у кого свои руки есть, копипастить это не будут, проще свое написать, которое тоже велосипедное, но более понятное автору.

Мод, где не бывает одинаковых путей - Судьба Зоны.

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

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


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

@Norman Eisenherz, в LUA-функции table.sort есть необязательный второй аргумент - функция сортировки:

function functor_sort(a,b)
    return (< b)
end

В ней можно реализовать любые условия сортировки. В самом "тупом" случае - сделать таблицу с ключами:

Скрытый текст

key_table = {
	["st_tech_pistols_ussr"] = 1,
	["st_wpn_hpsa"] = 2,
	["st_tech_shotguns"] = 3,
	["st_tech_assault_all"] = 4,
	["st_wpn_fn2000"] = 5,
	["st_wpn_groz"] = 6,
	["st_wpn_rp tech_outfit_jackets"] = 7,
	["stalker_outfit_name"] = 8,
	["tech_outfit_csky"] = 9
}

function functor_sort(a,b)
    return (key_table[a] < key_table[b])
end

table.sort(main, functor_sort)

 

 

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

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


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

@WinCap

Это не совсем то, что нужно вопрошавшему, точнее не до конца то..

@Norman Eisenherz

Если уж так приперло, то вводить дополнительный ключ идентификации, типа "st_1", "_outfit_1", "st_2", "_outfit_2", ну и затем строить список в соответствии с номерами строк.

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

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


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

Это не совсем то, что нужно вопрошавшему,

Если я таки верно понял вопрошавшего, ему хотелось "в правильном порядке" вывести определенные текстовые элементы.

И во первых да, сложно придумать ситуацию где это было бы действительно важно, но допустим они бывают.

А во вторых, для организации такого, существует 1001 способ на любой вкус, и метод предложенный @WinCap, ничем не хуже любого другого.

Добиваться же выяснения номера строки в конфиге, для этой цели так же "нужно" как собаке пятая нога.

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

08.01.2012 в 03:30, xStream сказал(а):

Те, у кого свои руки есть, копипастить это не будут, проще свое написать, которое тоже велосипедное, но более понятное автору.

Мод, где не бывает одинаковых путей - Судьба Зоны.

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

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


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

Господа, а есть в двигле огср способ рандомизировать в диалоге НПС с ГГ скриптовые фразы? Именно скриптовые. В ванильке фразы меняются только после сейв/лоада

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


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

@Zander_driver, Большое спасибо!!!
После такого количества времени, всё же - получилось.

 

Скрытый текст

 

Я вначале не особо понял, про какую табличку шла речь. Однако поиском local outfit_classes = {} в данном же файле как нашёл данную место, где должна была быть данная табличка, так и допёр, о чём шла речь.

 

 

monster_classes = {
        [clsid.bloodsucker_s]             = true,
        [clsid.boar_s]                     = true,
        [clsid.dog_s]                     = true,
        [clsid.flesh_s]                 = true,
        [clsid.pseudodog_s]             = true,
        [clsid.burer_s]                 = true,
--        [clsid.cat_s]                     = true,
        [clsid.chimera_s]                 = true,
        [clsid.controller_s]             = true,
--        [clsid.fracture_s]                 = true,
        [clsid.poltergeist_s]             = true,
        [clsid.gigant_s]                 = true,
--        [clsid.zombie_s]                 = true,
        [clsid.snork_s]                 = true,
        [clsid.tushkano_s]                 = true,
        [clsid.psy_dog_s]                 = true,
        [clsid.psy_dog_phantom_s]         = true}

    stalker_classes = {
        [clsid.script_actor]             = true,
        [clsid.script_stalker]             = true}

    weapon_classes = {
        [clsid.wpn_vintorez_s]             = true,
        [clsid.wpn_ak74_s]                 = true,
        [clsid.wpn_lr300_s]             = true,
        [clsid.wpn_hpsa_s]                 = true,
        [clsid.wpn_pm_s]                 = true,
        [clsid.wpn_shotgun_s]             = true,
        [clsid.wpn_auto_shotgun_s]        = true,
        [clsid.wpn_bm16_s]                 = true,
        [clsid.wpn_svd_s]                 = true,
        [clsid.wpn_svu_s]                 = true,
        [clsid.wpn_rg6_s]                 = true,
        [clsid.wpn_rpg7_s]                 = true,
        [clsid.wpn_val_s]                 = true,
        [clsid.wpn_walther_s]             = true,
        [clsid.wpn_usp45_s]             = true,
        [clsid.wpn_groza_s]             = true,
        [clsid.wpn_knife_s]             = true,
        [clsid.wpn_grenade_f1_s]         = true,
        [clsid.wpn_grenade_rgd5_s]         = true,
        [clsid.wpn_grenade_launcher]     = true,
        [clsid.wpn_grenade_fake]         = true}

    artefact_classes = {
        [clsid.art_bast_artefact]         = true,
        [clsid.art_black_drops]         = true,
        [clsid.art_dummy]                 = true,
        [clsid.art_electric_ball]         = true,
        [clsid.art_faded_ball]             = true,
        [clsid.art_galantine]             = true,
        [clsid.art_gravi]                 = true,
        [clsid.art_gravi_black]         = true,
        [clsid.art_mercury_ball]         = true,
        [clsid.art_needles]             = true,
        [clsid.art_rusty_hair]             = true,
        [clsid.art_thorn]                 = true,
        [clsid.art_zuda]                 = true,
        [clsid.artefact]                 = true,
        [clsid.artefact_s]                 = true}
    
    outfit_classes = {
        [clsid.equ_stalker_s]         = true}


Я с дуру просто добавил название брони, и получил вылет - я не глянул, что нужен именно класс. В файле outfit.ltx у всех броников единый класс - E_STLK, однако, и это добавление вызывало вылет. Поискав это слово Тотал Коммандером (Слава Тотал Коммандеру), откликнулся единственный файл - class_registrator.script, который как бы даёт расшифровку классам. Что интересно, броня почему-то названа... equ_stalker_s, "сталкер". Главное, строчкой ниже шлемы и названы шлемами.:biggrin: ну чёрт знает, "я разработчик, я так вижу".

Вот его добавление и проба игрой наконец-то позволила реализовать разброс прочности брони... Оооооох.

Ещё раз спасибо. 

Я так подробно расписываю, дабы себе сохранить + мб кому это пригодится (хотя, если мне уже посоветовали...значит, и так знают).

 

Добавлено  Опричник,

Для "Спасибо" в каждом сообщении справа-внизу есть кнопки. (п.2.1.1. правил форума)

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


Ссылка на сообщение
Поделиться на других сайтах
6 hours ago, Zander_driver said:

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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
25.08.2020 в 23:39, Norman Eisenherz сказал:

я получаю больше всего информации.

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

Но Вы попробуйте мне, как потенциальному игроку в Ваш мод, объяснить, в чем разница для меня, если я буду видеть список доступных улучшений у техника в "правильном порядке"? А вдруг у меня иное понимание важности\правильности этих улучшений?

  • Нравится 3
  • Согласен 3
  • Смешно 2

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


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

Доброго времени!

Вопрос - в ТЧ за ограничения по количеству одновременного спавна "живности" на локации отвечает файл se_respawn.script, а что отвечает за то же самое в ЗП? В некоторых модах на ЗП есть файл mod_params.ltx, в котором можно прописать много чего полезного. Но какие ещё файлы отвечают за количество и ограничения спавна?

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

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


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

@Jurok, Благодарю, очень полезная информация! Правда, меня интересовало немного другое. Ведь судя по содержимому файла mod_params.ltx, информацию он берёт не из смартов локаций, а откуда-то ещё. Может быть, это движковые функции, которыми управляет данный файл?

Ведь по сути я могу (в разумных пределах) задать в каждом смарте какое-то конкретное количество сквадов, также я могу в каждом скваде задать, кажется, до 20 неписей без проблем. А мне требуется, к примеру, задать вполне определённое максимальное количество всех видов "живности" на локации, не больше не меньше. Как это делается в ТЧ, я написал выше, а вот в ЗП есть что-то аналогичное или нет? Только через смарты? Но тогда повторю вопрос - откуда берёт данные mod_params.ltx? Сомнительно, что сканирует все смарты в игре... Или я что-то упускаю из виду...

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

И сюда же - есть ли принципиальные различия между [simulation_stalker]:online_offline_group и [stalker_sim_squad_novice]:online_offline_group (к примеру) - структура этих секций практически одинакова?

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

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


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

@mdm64

Цитата

в ЗП есть что-то аналогичное или нет?

В оригинальном ЗП подобное не предусмотрено.

 

Цитата

mod_params.ltx

Речь о SGM? Могу ошибаться, но вроде бы в их sim_squad_scripted.script добавлен подсчёт сквадов, если больше того количества, что указано в mod_params.ltx - запускается принудительное удаление лишних.

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


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

@Jurok, Благодарю, именно это меня  и интересовало! Жаль, конечно, что не предусмотрено. И да, этот файл в основном из модов на SGM и из самого этого мода. Но я видел его и в других модах на ЗП, потому и спросил.

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


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

@AndreySol Объяснить как моддер моддеру, почему у каждого свой набор доработок и изменений относительно оригинальной версии игры? :pardon:

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

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


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

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

Изменено пользователем Опричник
правописание
Добавлено  Опричник,

Перемещено.

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


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

@aromatizer Судя по количеству вопросов, оставшихся без ответа, сделано далеко не все. Например, во время адаптации мода "Медикаменты на худе" под ТЧ 1.0006 я спрашивал, как правильно скрывать счетчик при отображении диалоговых окон, при запуске катсцен и снов – хоть бы кто сказал, что можно сделать один пустой статик на худе и всю начинку добавить к нему, а не мудрить с инфо-поршнями для каждого типа окна отдельно.

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

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


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

Здрасьте.

 

Беру количество денег у ГГ (с виду целое – ни одной цены с копейками нет), делю на 10: исходное число 18'639, после деления 1'863.9000244141.

Читаю радиацию из конфига через system_ini():r_float(sect, "radiation_restore_speed"): в конфиге 0.002, в результате 0.002000000949949.

Округляю координату до одного знака через math.floor(x*10 + 0.5) / 10: исходное число 269.583…, после округления 269.6000610352.

 

Такие странности с вычислениями наблюдаются, как минимум, в ТЧ и ЧН. Откуда берутся эти дробные части и как с этим бороться?

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

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


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

@Norman Eisenherz, цитата из "Программирование на языке Lua", п.2.3 Числа (стр. 28):

"Тип number представляет значения с плавающей точкой, заданные с двойной точностью. В Lua нет встроенного целочисленного типа".

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

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


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

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

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