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

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


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

Подскажите помчему у меня код

local number_storyline_eliminate_gunslinger

local n = tostring("number_"..item_alias)

get_console():execute("prizrakO8___RRR"..n.."RRR___")

local from_test = number_storyline_eliminate_gunslinger

if n == number_storyline_eliminate_gunslinger then
n =3
end
невыдает н равное 3

хотя в логе показывает что n равно number_storyline_eliminate_gunslinger

Freedom

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

_Призрак_,

 

Потому что в первой строке ты объявляешь переменную, не присваивая ей какого-либо значения:

local number_storyline_eliminate_gunslinger

Пока переменной number_storyline_eliminate_gunslinger не присвоено хоть какое-то значение, эта переменная равна nil

 

Ты потом сравниваешь этот nil с переменной n, инициализированной чем-то (явно не nil-ом, а какой-то строкой, хоть и непонятно, что за item_alias).

А условие вида

nil == <существующая_строка>

заведомо не выполняется, соответственно и переменной n не присваивается значение 3

 

В первой строчке надо написать что-то вроде

local k = "number_storyline_eliminate_gunslinger"

и проверять условие k == n

 

P.S. Хотя если эталонная строка единственная, проще убрать первую строку в коде вообще, и проверять сразу

n == "number_storyline_eliminate_gunslinger"

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

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

Люди, не сочтите за труд, напомните нубу как изначально открыть переход Кордон - Тёмная долина?

Сообщение от модератора n6260
Выходим из х-18 и получаем переход через сообщение от Сидора.

Взял идею - укажи автора, в противном случае ты вор. (с) я :)

Stalker returning 3% (Этап корректирования HUD а)

 

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

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

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

Что-то сковырнул и в итоге документы, которые обычно дают на НЛЦшные пути (например доки на НИИ "Агропром - Кордон") не работают. Бумажки берёшь, а инфа не даётся. Может кто обьяснить, что делать?

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

Всё,что есть в ЗОНЕ, должно быть УЧТЕНО, ПРИПОРЯДКОВАНО и СХОВАНО! (с)

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

Подскажите как показать картинку?

А подскажите такой момент - пытаюсь при нажатии кнопки создать картинку таким путем:

self.picture:InitTexture("ui_iconsTotal_"..item_alias)

Параметры этой картинки находятся в ui_iconstotal.xml который я пропарсил:

xml:ParseFile("ui_iconstotal.xml")

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

 

И как сделать прокрутку изображения? То есть если у меня текст больше чем форма то у меня включается прокрутка текста при помощи self.description_list:EnableScrollBar(true). Но как сделать так чтобы если у меня изображение больше формы то включает прокрутка

Изменено пользователем _Призрак_

Freedom

Ссылка на комментарий
Эта тема как-никак называется "Ковыряемся в файлах", а не "Исправление ошибок кривого вареза". Поэтому прошу воздержаться от обсуждения кряков.
Ссылка на комментарий

Garry_Galler,

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

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

Не обманывайтесь наличием в Lua потоков. Это средство кооперативной многозадачности и требует явного переключения со стороны выполняющегося кода.

 

На самом деле непонятно, что такого надо сделать, что требует запуска независимого потока. В этом объективно нет никакой необходимости.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
gruber, Спасибо. И еще вопросец :) Можно ли как то увеличить скорость с которой сталкеры следят стволом за объектом? Допустим по крысам когда они стреляют или по ГГ который прыгает они ствол переводят кое как :( Это в движке зашито да ? Или за это тоже hit_probability_ отвечает ? Изменено пользователем KitkaT.Net

Ничто не вечно под луной.

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

malandrinus

Насчет потоков в lua - точнее псевдопотоков - я уже понял, так как с coroutine повозился - без толку.

Но задачу свою решил - у меня просто был скрипт который делал 500 тыс итераций и он блокировал основной поток не давая синхронно с итерациями выполняться дополнительным действиям(после каждой итерации) в данном скрипте. То есть действие выполнялось только единожды - по завершении всех итераций. Подсказали простой выход - апдейт вместо for do end :rolleyes:

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

Unnamed Black Wolf

Что значит нормально работали? То что методы пространства имен coroutine в сталкере работают - это одно. Другое - что они не дают того эффекта, который мы имеем используя в С++\C# и т.д. создание реальной многопоточности или асинхронные методы.

Собственно пост malandrinus'a только подтвердил инфу которую я нарыл по потокам в lua - то что они никакие не потоки, а лишь ветки исполнения, причем синхронные.

Да и требовать от lua наличия таких возможностей видимо нерезонно - все таки вспомогательный язык.

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

Как сделать прокрутку изображения? Что-бы не было так:

e8e154c0539at.jpg

Изменено пользователем _Призрак_

Freedom

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

Сталкеры, похелпте, пожалуйста.

 

В нете нашёл инфу, как сделать квестового npc бессмертным.

Следующего содержания

создаёте скрипт, например pervi.script ( название не имеет значение )

 

пишите туда

 

 

Код:

function check()

local npc = level_object_by_sid(006)

npc.health = 1

end

 

 

открываете bind_stalker.script и находите function actor_binder:update(delta), и перед последним end'ом пишите pervi.check()

 

Но вот пример этот для Волка сделан, а как этот же способ применить, ну например к Фанату или к Круглову??

 

// Никогда не пользуйся таким способом. Он не только не делает НПС бессмертным, но и еще забивает апдейт. Министр.

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

_Призрак_, попробуй

<string id="desc_storyline_eliminate_gunslinger_1">
<text>Найти Стрелка\nУбить стрелка</text>
</string>

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

И карту можно прокручивать если сделать её как UI элемент, тобишь с описанием в папке ui, как части ПДА.

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

shooting unicorn

Но вот пример этот для Волка сделан, а как этот же способ применить, ну например к Фанату или к Круглову??

Так трудно догадаться?

Сид заменить на сид нужного персонажа.

 

ЗЫ:Плохой метод. Бессмертие фиктивное - убить все равно можно, путь и не сразу.

Правильное бессмертие делается в конфигах - возьми любой глобальной мод и посмотри как это сделано для квестовых персов.

 

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

По вопросу бессмертия неписей:

http://www.amk-team.ru/forum/index.php?sho...st&p=386631

 

P.S. Министр, модераторы Может, стОит вынести эту ссылку в шапку? Этот вопрос всплывает достаточно часто...

 

// Поправил шапку. Сделал под такие вопросы специальный спойлер. :) Министр.

Изменено пользователем Министр

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий
либо сделать копию модели, аккуратно поправить в ней #include и сделать/прописать секцию иммунитета для бессмертных

 

Это как сделать?? Объясните поподробнее

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

shooting unicorn

 

В идеале - перевести модельку в формат .object конвертером Бардака, загрузить в СДК и поправить ссылку на файл инклуда в Object -> User Data. Потом экспорт обратно в .ogf, и в новом файле инклуда прописать нужные параметры защиты.

 

Если нет СДК или неохота с ним возиться, можно просто скопировать модель под другим именем, открыть ее в hex-editor-е или в текстовом редакторе (notepad++ справляется, с обычным блокнотом возможны проблемы, 50/50). Поиском найти #include, обычно в конце файла, за ним будет идти ссылка на файл, типа вот такого: #include "models\capture\exo_helmet_damage_med.ltx"

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

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

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

Не ну жизнь ему и попроще изменить можно-к примеру группировку сменить :D

 

Размер смарта (шейп) ни на что не влияет (главное чтоб значение было больше 0 хоть 1.23455676 хоть 0.0000000001 разницы нет

Любая работа любого гулага может находится на любой локации (ни что не мешает задать работу новичку из лагеря где нибуть на свалке .

 

 

Да и зона обитания новичков ограниченна рестрикторами типа ин рест оут рест в файле загрузки работ гулага

 

По поводу бесмертия неписей делал так

 

 

Вобщем попытался разобратся с бесмертием вот что получилось

 

может я чтото не так делал но секции торговца и сахорова не катят подопытный wolf дох

 

сделал так файл \Program Files\S.T.A.L.K.E.R. - Shadow of Chernobyl\gamedata\config\creatures\m_person

 

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

 

Секции [trader_immunities] и [trader_condition] конец файла должны выглядеть так различие

 

с оригиналом сами найдете

 

[trader_immunities]

 

burn_immunity = 0.0 ;коэффициенты иммунитета

 

strike_immunity = 0.0

 

shock_immunity = 0.0

 

wound_immunity = 0.0

 

radiation_immunity = 0.0

 

telepatic_immunity = 0.0

 

chemical_burn_immunity = 0.0

 

explosion_immunity = 0.0

 

fire_wound_immunity = 0.0

 

[trader_condition]

 

satiety_v = 0.0 ;скорость уменьшения сытости со временем

 

radiation_v = 2.0 ;скорость уменьшения радиации

 

satiety_power_v = 1.0 ;увеличение силы при уменьшении сытости

 

satiety_health_v = 1.0 ;увеличение здоровья при уменьшении сытости

 

satiety_critical = 0.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться

 

radiation_health_v = 0.0 ;уменьшение здоровья при воздействии радиации

 

morale_v = 0.0 ;скорость восстановления морали

 

health_hit_part = 0.001 ;процент хита, уходящий на отнимание здоровья

 

power_hit_part = 0.001 ;процент хита, уходящий на отнимание силы

 

psy_health_v = 0.1 ;скорость восстановления psy-здоровья

 

;открытые раны

 

bleeding_v = 0.0 ;потеря крови при номинальной ране в секунду

 

wound_incarnation_v = 3.0 ;крутизна кривой заживления (какой процент раны заживет в игровую секунду)

 

min_wound_size = 2.0 ;минимальный размер раны, после которого она считается зажившей

 

sleep_health = 1.0 ;1.5 ;коэффициенты скоростей изменения параметров во время сна

 

sleep_power = 1.0 ;1.5

 

sleep_satiety = 1.0 ;0.8

 

sleep_radiation = 1.0 ;1.1

 

sleep_psy_health = 1.0

 

далее в алл спавне у меня волк должно быть выделенное

 

 

 

[144]

 

; cse_abstract properties

 

section_name = m_barman

 

name = esc_wolf

 

position = -210.632614135742,-20.050708770752,-142.461120605469

 

direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942

 

; cse_alife_trader_abstract properties

 

money = 5000

 

character_profile = esc_wolf

 

; cse_alife_object properties

 

game_vertex_id = 61

 

distance = 3.5

 

level_vertex_id = 42599

 

object_flags = 0xffffffbf

 

custom_data = <<END

 

[smart_terrains]

 

esc_lager = {-agroprom_military_case_have -esc_fanat_spawn}

 

mil_lager = {+agroprom_military_case_have}, {+esc_fanat_spawn}

 

END

 

story_id = 6

 

; cse_visual properties

 

visual_name = actors\neytral\stalker_neytral_balon_1

 

; cse_alife_creature_abstract properties

 

g_team = 0

 

g_squad = 1

 

g_group = 5

 

health = 100 это может и не нужно

 

dynamic_out_restrictions =

 

dynamic_in_restrictions =

 

upd:health = 100 это может и не нужно

 

upd:timestamp = 0

 

upd:creature_flags = 0

 

upd:position = -210.632614135742,-20.050708770752,-142.461120605469

 

upd:o_model = 0

 

upd:o_torso = -0.000645029998850077,0.0445535257458687,0

 

upd:g_team = 0

 

upd:g_squad = 1

 

upd:g_group = 5

 

; cse_alife_monster_abstract properties

 

upd:next_game_vertex_id = 65535

 

upd:prev_game_vertex_id = 65535

 

upd:distance_from_point = 0

 

upd:distance_to_point = 0

 

; cse_alife_human_abstract properties

 

predicate5 = 1,0,0,2,0

 

predicate4 = 2,2,1,2

 

; cse_ph_skeleton properties

 

upd:start_dialog =

 

; se_stalker properties

 

 

вот и все

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

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

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

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

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

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

Войти

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

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

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