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

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


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

Ray, не надо.

считаешь сколько буква занимает пикселей (вручную :) ) и из этого исходишь.

Разрешение/это число - вот тебе и кол-во букаф.

 

Будет у тебя 1 константа.

А посчитать ее - ну вводишь на заранее известном разрешении длинную строку и счиьтаешь сколько в 1 строчку влезает.

Делишь разрешение на колличество - вот тебе и ширина буквы.

 

1 раз посчитал и константу сделал.

Изменено пользователем Monnoroch
Ссылка на комментарий
тут все просто - делаешь новый вид, прописываешь его своему сталкеру, настраиваешь отношения.

Значит я был не прав и можно записаться в тушканчики =) Но всё таки есть один минус, похоже, что в отличие от группировки никак не сменить вид в процессе игры. Впрочем, это наверное и не надо.

 

... при большем разрешении справа будет пустое место.

 

Что можно сделать?

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

сначала убираем из строки служебные последовательности для цвета. Можно использовать регулярные выражения Lua. Они хоть и упрощённые по сравнению с общепринятыми, но это скорее всего получится. Только надо выдранные куски сохранить, чтобы потом вставить обратно. Или, в качестве альтернативы, вручную пропускать их на следуюшем этапе.

Рассчитываем среднюю ширину символа. Шрифты на взгляд не моноширинные, так что придётся по средней считать.

Берём запас на ширину окошка, чтобы компенсировать погрешность.

Ищем пробелы, предшествующие окончанию текущей строки, и заменяем на "\\n". В процессе поиска придётся запоминать предыдущий найденный пробел. Также по хорошему надо учесть разные хитрые ситуации, когда есть слова, длиннее ширины строки, и ещё если эти слова стоят в начале строки и т.д.

 

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

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

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

 

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

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

 

[logic]
active = remark@sleeper
combat_ignor = combat_ignore


[combat_ignore]
combat_ignor = combat_ignore
danger ignor = always

[remark@sleeper]
anim = sleep
snd = help_heavy
meet=no_meet

 

но когда рядом враг, то он все равно вскакивает и бежит! как мне сделать так, чтоб он вообще НИ НА ЧТО не реагировал?

 

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

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

Thank you for your honesty.

Now fuck off and die.

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

[logic]

active = remark@sleeper

combat_ignor = combat_ignore

 

 

[combat_ignore]

combat_ignor = combat_ignore

danger ignor = always

ignore_distance = 10

 

[remark@sleeper]

anim = sleep

snd = help_heavy

meet=no_meet

так попробуй. А по второму вопросу - создаёшь в алл.спауне вэйпоинт, затем прописываешь его в логику.

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

По моему кому то надо статьи по логике перечесть

 

оверрайда combat_ignor не существует

есть combat_ignore

оверрайда danger ignor = always так же не существует

 

есть combat_ignore_cond = {условие}

пишется в той секции логики в которой нужно чтобы NPC игнорировал бой

можно так

combat_ignore_cond = always ; игнорировать бой всегда

 

далее существует целый комплекс оверрайдов для секции danger=danger_condition

которые можно перенастроить и перебить дефолт.

 

[danger_condition]

ignore_distance = дистанция игнора опасности

ignore_distance_hit = дистанция игнора хита

danger_inertion_time = время через которое NPC забудет про опасность

и т.д.

настройка логики часть 3.

 

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

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

Thank you for your honesty.

Now fuck off and die.

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

Ray, kk - ключи внешней таблицы.vv - значения внешней таблицы = внутренние таблицы.

k - ключи внут. таблицы. - цифры.

v - значения внут таблицы - строки.

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

Ray

kk строковой ключ = тип патронов - например ammo_9x18

vv - значение = возвращает таблицы второго уровня с именами стволов

заходим в таблицы vv

получаем

k - ключ - индекс от 1 и далее (по умолчанию таблицы в lua индексируются в мат. порядке от единицы)

v - значение - имя ствола

 

name это аргумент который принимает функция - то бишь имя ствола

соответственно через функцию string.find(name,v) сравнивается имя принятого параметра (ствол x) и значение v которое возвращает имена стволов в порядке итерации таблицы. если true то переменной ammo_type присваивается значение ключа kk - тип патронов который соответствует этому стволу

 

не успел Monnoroch опередил ;)

 

а мне кстати наоборот после легкого lua тяжеловато Си шарп осваивать...точки с запятой ставить после каждой инструкции - это ж скока терпения и внимательности надо иметь :wacko2:

 

SCRIPT

 

файл script_sound в папке misc

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

имя звука надо брать без суффикса seq или rnd

например есть секция

[esc_wolf_radio_1_seq] -имя звука esc_wolf_radio_1

stalker= 0,scenario\escape\wolf_to_rangers_1 --путь до звука в папке саундс

 

брать звуки можно не только отсюда.

также можно самому создавать свои секции - но их надо вписывать в файл sound_theme.script - в основную таблицу.

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

Ray, ну это же хэш-массив...тут какбы по номеру,соответствующему строке.

ну каждой строке соответствует число - ты ж сам знаешь,что индексы можно только перечислимые делать :)

 

это все равно,что написать

 

a[3]:=3;

a[1]:=10;

a[2]:=5;

 

Все равно же 1-2-3 а не 3-1-2 прогонится массив.

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

Ray, между прочим,это только моя догадка :)

Точно не знаю,но логика подсказывает...

 

Сделай хэш массив на C++ и тоже будет не так как ты поставил по строкам его прогонять.

Изменено пользователем Monnoroch
Ссылка на комментарий
Цикл так и должен прыгать по строкам? Тогда если можно пояcните по какому принципу это происходит.
Так и должно быть. При перечислении пар в хеш-таблице порядок не определён, и это документированное поведение. Для того, чтобы иметь определённый порядок, заведи массиво-подобную таблицу:

t = {a,b,c,d}

и перебирай циклом со счётчиком

for i= 1,#t do
    ...
end

мда это не Рио-де-Жанейро. В смысле это не С++ блин, где все так просто и знакомо. кошмар!

Вообще-то там ещё STL есть. На мой взгляд Lua с его одной-единственной стандартной структурой данных - это просто верх простоты по сравнению с С++ с его шаблонами и generic programming.

 

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

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

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

 

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

Здорова всем, пару вопросов. Первый: можно ли вывести над показателем здоровья часы в реальном времени (не в игровом, а в реальном времени)? Второй: можно ли сделать часы и в игровом и в реальном времени стрелочными (например как командирские часы)? Заранее спасибо за ответы! З.Ы.: в скриптах круглый ноль.

ЯДиск папка с крутым схроном!

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

Starter, сначала сделай время в игре реальным, а потом выведи на худ

или тебе нужно чтоб на худе было реальное, а в пда игровое?

Thank you for your honesty.

Now fuck off and die.

Ссылка на комментарий
Первый: можно ли вывести над показателем здоровья часы в реальном времени (не в игровом, а в реальном времени)? Второй: можно ли сделать часы и в игровом и в реальном времени стрелочными (например как командирские часы)?
В ЧН можно и то и другое. Создай на худе окно и делай с ним что хочешь. Можно цифрами время вывести, можно текстуру со стрелкой вращать. В ЗП вращение текстур убрали, так что только цифрами.

 

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

 

 

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

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

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

 

Ссылка на комментарий
Starter, сначала сделай время в игре реальным, а потом выведи на худ

или тебе нужно чтоб на худе было реальное, а в пда игровое?

 

Под картой (которая вверху слева) игровое время, над здоровьем реальное.

ЯДиск папка с крутым схроном!

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

malandrinus

А имеет смысл конвертация строк в числовые коды ASCII?

может ли тут быть выигрыш по уменьшению размера данных?

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

 

function convert_text()

local text = "мой дядя самых честных правил, когда не в шутку занемог"

local n = string.len(text)

local t ={}

for i =1, n do

t = string.byte(text,i)

end

print(unpack(t))

print(string.char(unpack(t)))

end

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

всем привет! народ, как сделать так, чтоб после окончания диалога, нпс начал отыгрывать анимацию. что-то там с поршнями, как я понимаю?

 

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

Starter, оо, ну тогда не знаю как :huh:

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

Thank you for your honesty.

Now fuck off and die.

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

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

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

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

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

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

Войти

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

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

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