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

Внимание!

В ближайшее время на форум будет загружена новая редакция Правил форума и Пользовательского соглашения. 

Ознакомление обязательно.

_Val_ _Val_

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


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

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

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
Garry_Galler, спасибо, чувак!

Thank you for your honesty.

Now fuck off and die.

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.

SCRIPT

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

anim = wait

в другой ремарке - нужная тебе анимация.

Для переключения из одной секции в другую пишешь в первую условие

on_info ={+твой инфопоршень} remark@new

после получения указанного поршня непись переключится на remark@new а в ней отыграют анимацию которая будет сюда вписана.

 

смотри тему уроки по модостроению - там в посте Gruber'а есть мой урок по стоячим-сидячим анимациям NPC, который я выкладывал на Инсайд вики (под ником erlik)

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

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

Нет смысла. В лучшем случае, если таблица оптимизирована как массив, то займёт столько же места. И вообще, строка - это и есть последовательность ASCII кодов. Зачем её ещё куда-то переводить?

 

Кстати, если надо перевести строку в массив, то это можно сделать более элегантно и без цикла:

local t = {string.byte(s,1,#s)}

 

 

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

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

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

 

malandrinus, Ой,не по теме,но ты не знаешь на паскале аналогичный способ без цикла?Ато как раз понадобилось :)

Возвращаясь к управлению грави-пушкой или другим N-фазным скриптовым оружием (стр. 173 - 174):

 

кстати таким макаром можно отследить любую последовательность выстрелов (или нажатий на ЛКМ) - пишем условия:

если патронов 30 или 0 то ничего не делаем, также если патронов 29 то одно действие, также если патронов 28 - другое и т.д.

 

При таком подходе возникают не бросающиеся сразу в глаза моменты.

 

Допустим, с 30 патронов дошли до 20, десяток действий сделали. А потом игроку приперло нажать "разрядить оружие", как обычный автомат. И что получим в результате? Обрыв последовательности действий. При повторной зарядке тех же, только что разряженных 20 патронов последнее действие должно по идее выполниться повторно. Причем нельзя предсказать, какое именно окажется последним - десятое, двадцатое, двадцать восьмое... В результате - простор для глюков. Это если неоткуда взять таких же патронов. А если есть? Уже взяли, дошли до 20 патронов и игрок нажал "перезарядить"? Ой!

С ПЗРК у меня на этом глюке можно было вначале делать ракеты из воздуха, просто разряжая оружие. Потом это безобразие прикрыл, но не до конца.

 

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

 

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

 

Например, с сохранением надо что-то специально думать. Как вариант - вообще наплевать на него, в ПЗРК в 90% случаев это ничего не изменит, исключение - сейв с активированной ракетой, при загрузке состояние должно по идее сброситься. В грави-пушке не сохраняемость проявится только при сейве с захваченным объектом - при загрузке он должен будет по идее упасть на землю,что мало когда что-то сможет изменить.

 

Еще один неочевидный момент - а что если у игрока несколько экземпляров такого скриптового оружия? Для которого из них мы отслеживаем состояние? Пока оружие в слоте - все ясно, а если убрали в инвентарь? Какой экземпляр мы оттуда потом достали? Тот, с которым работали раньше или другой? Если нет износа (что справедливо и для ПЗРК, и для грави-пушки), то экземпляры в инвентаре неотличимы, а значит можно принять за аксиому, что Меченый смотрит, что достает из рюкзака, и выбирает тот экземпляр, с которым уже что-то делал. Если износ есть - надо думать. Может, стоит делать табличку ИД - фаза работы вместо одной цифры.

 

Мои работы:

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

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

Soul Cube

 

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

Ой,не по теме,но ты не знаешь на паскале аналогичный способ без цикла?Ато как раз понадобилось :)

Увы, не знаю. В Lua эта возможность завязана на списки значений. В C++ я бы покрутил с STL и её алгоритмами. А в Паскале не знаю =(

 

Перекидываю следующий код в тест.луа

db.actor:transfer_money(num, db.actor)

Деньги не уходят.

Ты ж сам себе передаёшь. Конечно не уходят.

 

А потом игроку приперло нажать "разрядить оружие", как обычный автомат. И что получим в результате? Обрыв последовательности действий.

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

Чтобы мельтешение патронов не бросалось в глаза, либо удалить статик с индикатором (если можно), либо прикрыть его своим

 

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

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

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

 

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

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

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

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

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

Войти

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

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

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