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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

Скриптование


Svoboда

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

 

 

Вариант с * delta -- это действия, производимые каждый апдейт.

И это единственно верный вариант для моделирования более мене реального поведения системы.

 

 

Чем оно плохо - можно увидеть на примере работы acr*.script

Что это? Для тех, кто не знает названий скриптов популярных модов, например для меня, это ничего не говорит. Частенько замечал за тобой такое, приводи мод или стразу код. Может я зенки не протер, но в ориге я не нашел такого.

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
случайны интервалы от 20 до 70 ms

Это не просто случайная величина, это как раз число, которое вносит, порядок в игру, благодаря которой сталкеры не бегают со скоростью света, а пули не падают в обморок, пролетев 10 метров, т.к. их движение описывается формулами, которые зависят от времени, т.е. дельты. Любое программное движение (изменение чего либо), надо рассчитывать через дельту. Это не спор, тут просто не о чем спорить. Мы живем в таком мире, где законы кинематики статичны и время течет с постоянной скоростью. Вот если бы время ускорялось и замедлялось, тогда можно подумать о дельте как бы второго порядка :)

PS: я докумекал, почему @Dennis_Chikin говорит про константу, у него же таймер на 1 секунду... Эх невнимательность.

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

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

Та самая статья, про которую я где то уже упоминал. Там вроде все тобой спрошенное описано. Там вообще вся скриптовая логика описана :)

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

Все ссылки в шапке (спойлер Логика) на сталкерин битые. Проще просто руками убрать после index.php слеш и написать вместо него ?title=

Например:

http://www.stalkerin.gameru.net/wiki/index.php/Настройка_логики._Часть_0
http://www.stalkerin.gameru.net/wiki/index.php?title=Настройка_логики._Часть_0
Изменено пользователем Desertir
  • Спасибо 1

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

@Zander_driver, тов. @Malandrinus показывал в Курилке, что так и сохраняет свой менеджер (ну или что там). Там вроде все аргументированно.

На счет создания одного экземпляра, а зачем класс делать для него? Просто функциями в скрипте не сделать?

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

 

self.reactions[self.data[a].type](self.data[a], SCAS, SCAM)

 

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

local data_a = self.data[a] --data_a тоже назвать поинформативнее
self.reactions[data_a.type](data_a, SCAS, SCAM)
Кстати, "приватные" поля, как и методы, вполне реализуются замыканием. Это не класс, тут нет никакого конструктора, а "объект" только один, но для демонстрации примера сойдет.

 

local obj = (function()
    local o = {}
    local v = 0;
    o.get_value = function()
        return v
    end
    return o
end)()
print(obj.o)
print(obj.get_value())

И делать их надо во время загрузок-сохранений актора. поидее.

Ну не знаю. Получается то, что загружается. должно зависеть от актора -> погода зависит от актора :) Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

@xStream, это про чей пост, мой?

Это счетчик цикла, если что.

Для рядового скриптера буковка А будет означать все что угодно. А например "index" или хотя бы "id" уже что-то.

будет ругаться DC

Я так посмотрю тебе важно мнение только одного человека.

Для таблиц можно и in pairs использовать. И это не было критикой, я написал, как сделал бы я, код становится более легкочитаемым + вдруг я захочу использовать эту переменную снова в цикле, опять придется писать self.data[a] + если я чтото изменю надо будет это исправлять во всех местах, да и вообще дублирование кода моветон.

Скорость выполнения обсуждать не собираюсь.

Добавилось конкретики? :)

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

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

@mumie, может что-то вроде

function execute_by_name(function_name)
    local my_function = my_library[function_name]
    if type(my_function) == "function" then
        my_function()
    end
end
Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

@mumie, точка это любой символ, шаблон .+ вернет всю строку. Если ты делишь строку на слова, разделенные пробелом, которые содержат числа, тебе нужен паттерн %w+. В твоем вопросе не было никакой конкретики по поводу того, какие строки ты пытаешься делить, кроме "разделяю строку на слова" (можно предположить по пробелам или запятым или чем-то не буквенным) и "смешанная строка". Что значит "смешанная", что с чем смешали?

А вопрос "как ведёт себя функция с цифрами" весьма странный. Нормально ведёт, не хулиганит, только шаблон нужный надо задавать.

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

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

На любителя.

Ага.

[a-zA-Z0-9]+
Да чего уж там, можно все и перечислить :) abcde...

Но S это отрицание s, так что S не эквивалентно w. Поэтому я оговорился, не обязательно пробелами делить слова (коммы например). Твой случай захватит и некоторые другие символы кроме букв и цифр, а речь пока шла только о них. Я к чему, что это 2 разных случая, так что "до жиру" и даже вполне. Нет, если у него нету запятушек и прочего то без разницы, но мало ли.

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

У меня процентов на 60 оно уже сделано.

А что там?

такие мелочи могут кардинально изменять код

Так именно, только вот для тебя мелочью является "пробелы", а для меня "слова", и сразу видна разница :) Как я рассуждаю "мне из строки нужны слова", а ты рассуждаешь "мне надо разделить строку по пробелам", я правильно понял? Но чего нужно автору, только ему и известно.

говорилось о пробелах и соответствии им шаблона %w+

Ну да, если посмотреть с этой стороны, то шаблон не тот :) Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

Как вам моя идея? Есть ли у неё перспективы?

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

Но на еще один велосипед посмотреть можно, сарказма тут нет, ибо так оно и есть.

 

1. Убило название функции для срабатывания события - setAction. Установить действие? Иногда называют такие методы fire или fireEvent, но не setAction.

2. Нет передачи аргументов в хендлеры.

3. Нет прерывания срабатывания событий (в цикле).

4. Симпатичное комментирование кода, конкретно описание аргументов + тип.

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
@Struck, в данном случае ты слишком придираешься к словам, да, аргумент, а что он обозначает? Делёные точкой модуль и имя функции, которая будет вызвана в конце анимации, или что там у вас. Что это по твоему, если не коллбек на окончание? Что по твоему коллбек? Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

я блин больше времени убил, пока писал аналог на С++

Ну ты сравнил динамический и статический языки... Зато на плюсах надежно. Почти, гы.

Такой вопрос, стоит вводить систему "эвентов" ?

Этаж какую? Которую уже реализовали раза 2-3 профи и еще каждый любитель свою запилил? Или что то с движком связанное? Уточняй.

Прости мою придирчивость, но я поправлю, event произносится через И - "ивэнт"/"ивент".

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

@Romz, почему у тебя проверка на пустоту таблицы это сравнением с nil? Пустая таблица это вполне себе живая переменная, nil'ом не является. Далее не вполне внятная для меня конструкция levels_list = levels_list{new_level_name}. Это как вообще? Может levels_list = {new_level_name}?

Я не совет даю, полноценной задачи не знаю, но я бы сделал так. Хеш таблица с именами локаций в качестве ключа, а значениями является флаг true|false. Без всяких заморочек с поиском, проверками на пустоту и прочими мною нелюбимыми действиями.

Изменено пользователем Desertir
  • Спасибо 1

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

Потому что в начале игры "levelname" не существует. (см. конструкцию)

Из кода видно только то, что значению levels_list присваивается результат функции GetVar. Что и как она должна возвращать я не знаю.

Если переменная может быть nil, тогда несколько вариантов и один из адекватных - передавать в функцию GetVar вторым аргументом дефолтовое значение. К чему я веду, у тебя эта проверка сработает один раз за всю игру, т.к. далее ты не присваиваешь этой переменной значение nil. Значение по умолчанию + проверка именно на количество.

  • Полезно 1

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

@Serge!, а как ты думаешь, что вернет твоя функция isBool если в качестве var будет объект с типом userdata? По названию эта функция должна проверять, что var есть булево значение, тем не менее в ней есть проверка var ~= false и нет проверки на ту же userdata. Какая то загадочная функция. Почему тебе следующий вариант не нравится?

function isBool(value)
    type(value) == 'boolean'
end

И действительно, в доки надо бы заглянуть и убедиться, что эта функция (type) возвращает конечное число строковых значений.

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение

Расшифруй.

Я о том, что type возвращает одну из строк

nil, boolean, number, string, userdata, function, thread, table

Они все известны, их конечное число и они описаны в доках, и мне непонятна фраза про непредсказуемые моменты. Всё вполне предсказуемо. Ну типы то надо знать... Изменено пользователем Desertir

ТЧ 1.0004. SAP и Trans mod

github

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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