Malandrinus 615 Опубликовано 29 Января 2010 Цикл так и должен прыгать по строкам? Тогда если можно пояcните по какому принципу это происходит.Так и должно быть. При перечислении пар в хеш-таблице порядок не определён, и это документированное поведение. Для того, чтобы иметь определённый порядок, заведи массиво-подобную таблицу: t = {a,b,c,d} и перебирай циклом со счётчиком for i= 1,#t do ... end мда это не Рио-де-Жанейро. В смысле это не С++ блин, где все так просто и знакомо. кошмар! Вообще-то там ещё STL есть. На мой взгляд Lua с его одной-единственной стандартной структурой данных - это просто верх простоты по сравнению с С++ с его шаблонами и generic programming. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 30 Января 2010 Первый: можно ли вывести над показателем здоровья часы в реальном времени (не в игровом, а в реальном времени)? Второй: можно ли сделать часы и в игровом и в реальном времени стрелочными (например как командирские часы)?В ЧН можно и то и другое. Создай на худе окно и делай с ним что хочешь. Можно цифрами время вывести, можно текстуру со стрелкой вращать. В ЗП вращение текстур убрали, так что только цифрами. в скриптах круглый ноль.Жалко, без скриптов там никак не выйдет. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 30 Января 2010 А имеет смысл конвертация строк в числовые коды ASCII? может ли тут быть выигрыш по уменьшению размера данных? Нет смысла. В лучшем случае, если таблица оптимизирована как массив, то займёт столько же места. И вообще, строка - это и есть последовательность ASCII кодов. Зачем её ещё куда-то переводить? Кстати, если надо перевести строку в массив, то это можно сделать более элегантно и без цикла: local t = {string.byte(s,1,#s)} Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 30 Января 2010 Ой,не по теме,но ты не знаешь на паскале аналогичный способ без цикла?Ато как раз понадобилось Увы, не знаю. В Lua эта возможность завязана на списки значений. В C++ я бы покрутил с STL и её алгоритмами. А в Паскале не знаю =( Перекидываю следующий код в тест.луа db.actor:transfer_money(num, db.actor) Деньги не уходят. Ты ж сам себе передаёшь. Конечно не уходят. А потом игроку приперло нажать "разрядить оружие", как обычный автомат. И что получим в результате? Обрыв последовательности действий. Патроны из инвентаря тут же удалить, ствол скриптом перезарядить. Чтобы мельтешение патронов не бросалось в глаза, либо удалить статик с индикатором (если можно), либо прикрыть его своим Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 30 Января 2010 (изменено) Ray, Посмотри внимательней. Тоже сам себе передаёшь. function relocate_money(victim, num, type) ... db.actor:transfer_money(num, victim) ... end dialogs.relocate_money(actor, item_repair_cost, "out") ЗЫ: вредно ночами сидеть =) Изменено 30 Января 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 30 Января 2010 а какой прок тогда вообще от этой функции - string.byte() ?Здесь - мало проку. Я полагаю, что нужна она при чтении/записи строк в бинарный файл Ray, поставь отладочный вывод в консоль и проверь, кто такой actor. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 1 Февраля 2010 тут то вся загвоздка.как поймать левел вертекс на 10 метров от ГГ по данному вектору? Вот это как раз не проблема. Есть функция level.vertex_in_direction(int <от какого вертекса>, vector <направление>, float <расстояние>) Только не перепутайте. В game_object есть такая же, но она не работает. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 2 Февраля 2010 Не сохранился ли у кого старый вариант АМК? Ещё тот, что был с апдейтом из интернета и лежал на другом сайте. Если есть, выложите плиз. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 2 Февраля 2010 Monnoroch, Если бы я знал точно... Скорее всего та, что предшествовала переезду на этот сайт. Там ещё был апдейтер из интернета. Но если есть и более ранние, то тоже было бы неплохо. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 3 Февраля 2010 Monnoroch, давно было, помню очень смутно. Но у меня такое воспоминание, что я там как-то включал некий режим отладки. Это был совершенно мой первый опыт. Я пошарился по скриптам, увидел там нечто вроде debug = false (не обязательно так, но нечто в этом роде). Переключил на что-то другое и после этого в игре была видна всякая фигня: в том числе смарты на карте (как я сейчас понимаю) и пр. в этом роде. В последней версии ничего такого найти не могу. Добавлено через 34 мин.: Нашёл 1.3.1, но она без интернет апдейтера. Значит, это не та версия, что я помню. Какие там были? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 3 Февраля 2010 Monnoroch, Вот ещё вспомнил. В той версии часть файлов была "зашифрована", т.е. скрипты были без комментариев и переносов строк. Помню, получил незабываемое "удовольствие", пытаясь их понять. Неужели никто не помнит, что это за версия была? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 3 Февраля 2010 (изменено) ну неет,я то хочу свою схему написать,мне надо скриптом. Что-то мне сдаётся, что это и есть скриптовая схема mob_jump. В кастомдата просто лежат данные для её инициализации. Так что можно в mob_jump.script заглянуть и посмотреть, как там сделан прыжок. А может можно просто схему использовать. И как сделать так что-бы после получшения инфопоршня с трупа запускалась функция? 2. Проверку на инфопоршень К конкретному инфопоршену можно прицепить колбек. Тег action Изменено 3 Февраля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 4 Февраля 2010 Garry_Galler, а как делаешь? Я бы обшаривал область с помощью vertex_in_direction и искал бы дырки в сетке. Но это требует некоторых затрат Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 4 Февраля 2010 Garry_Galler, ну так и проверяй дополнительно на попадание в конус взгляда. Или я не понимаю проблемы? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 5 Февраля 2010 (изменено) Garry_Galler, для всего описанного ещё со времён ТЧ в модуле _G есть готовые функции (примерно тоже самое, что ты написал): yaw_degree3d(v1, v2) - выдаёт угод в градусах между двумя векторами (чистый конус) yaw_degree(v1, v2) - выдаёт угод в градусах между проекциями двух векторов на горизонтальную плоскость (полагаю в данном случае даже более полезно) yaw(v1, v2) - аналогично предыдущей, но в радианах Кстати, эти функции наглядно показывают, что авторы оригинальных скриптов на момент их написания не знали, как пользоваться классом vector. С использованием методов класса vector эти функции можно переписать короче и работать будут раза в три быстрее. device().cam_dir:magnitude()длина этого вектора и так единица. magnitude можно не использовать Направление камеры по любому точнее, чем направление актора. Изменено 5 Февраля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 5 Февраля 2010 Garry_Galler, здесь вопрос не неточности, а скорее что хотим получить. Если измерять угол от точки взгляда, то это истинный конус взгляда выходит. Но при этом в него могут не попасть объекты рядом с ГГ и в упор не будет виден кто-либо, стоящий прямо перед ГГ (поскольку его координаты - это положение на земле). Поэтому более осмысленной будет функция yaw_degree, которая игнорирует координату y. Между прочим, всё равно будет проблема с объектами слева и справа от "полупространства взгляда", поскольку ближе к ГГ оно сужается. Поэтому имеет смысл ближе определённого расстояния проверять на больший угол видимости. Или вообще-то стоит просто использовать угол обзора, полученный из разрешения монитора и fov камеры. Значит при моем способе - использующем методы класса вектор все быстрее работает? :ny_wink: А ты проверь. Возьми класс profile_timer и замеряй время. Там упоминался метод основанный на октодереве - интересно а в сталкере какой алгоритм реализован... Для физики не знаю, а при движении по AI сетке - никакой. Ну может только проверяется, что узел сетки кем-то занят и то не всегда. Известно же, что неписи ГГ зачастую игнорируют и сквозь стенки ходят и по воздуху гуляют. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 7 Февраля 2010 Garry_Galler, все расстояния в метрах и ни в чём другом. В приведённом фрагменте есть ошибка, связанная с побочным эффектом в этой строке local v3 =v1:sub(v2) результат также пишется в v1, что влияет на дальнейшие вычисления. Надо было так: local v3 =vector():sub(v1, v2) =) А ещё лучше не умничать и написать: local len = v1:distance_to(v2) Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 7 Февраля 2010 SCRIPT, никак Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 7 Февраля 2010 только как ее скачать - непонятно. я заходил на тот аглицкий сайт - долго ковырялся, но ссылку на скачку так и не получил. ... на SP один чел тоже такую пишет Скачивается без проблем. Но если совсем никак, то вот он же на iFilder Кроме того, вот ссылка на офф.форум http://www.gsc-game.ru/index.php?t=community&s=forums&s_game_type=xr&thm_page=1&thm_id=13441&sec_id=14 (скопируйте руками и вставьте) Об этой альтернативе идёт речь? Суть обеих программ одинакова - опрос в цикле состояния клавиш и запись в ltx и т.д. врядле, там два варианта либо глобальный хук на клаву, либо перехват директиксных функций по обработке клавы Хук работать не будет, поскольку очереди сообщений нет. Если ткнёшь пальцем, где описано, как перехватывать ввод через DirеctX, буду признателен. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение
Malandrinus 615 Опубликовано 8 Февраля 2010 (изменено) + главная сложность не в том, чтобы отловить клавишу (это можно делать глобально: функция GetAssyhcKeyState() - читаем MSDN) Главный недостаток этого способа - надо опрашивать клавиатуру в цикле. Именно нажатие не отловить. , а в том, чтобы клавишу нажать в DXInput, видел наработки для других игр, но сорцов нигде нет единственный путь, что я знаю - писать драйвер, иначе с клавиатурным буфером работать не получается Я видел на codeproject пример с перехватом интерфейса directinput. Но что-то на моей x64 он не работает. Вот ссылка на всякий случай. Изменено 8 Февраля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Поделиться этим сообщением Ссылка на сообщение