Переменные, простые скрипты, функции rpg maker MV
Вот пример. При создании объекта типа B получается ошибка.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет: Вот пример. При создании объекта типа B получается ошибка.
Ну теперь более менее понятно в чём дело. И правда не ясно зачем в обязательно порядке вызывать super(), если пока она не вызвана нельзя задавать свои переменные
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Как вариант, в такой ситуации можно делать инициализаторы и вызывать их.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Насчет того, что так можно делать в чистом JS:
В чистом JS, конструктор уже сам по себе объект (т.к. функция <- Object и т д , оттого там и доступен this, указывающий на контекст).
В случае с классом, возможно намеренно запретили использование this (обнулили контекст или просто там какие-то подобия assert'ов) до того, как создастся объект, чтобы больше походить на "реальный" класс.
А дальше все, как говорил выше - лишь Object может определять объект.
Но я еще не читал как там у них в действительности у них устроено. Описал, по аналогии с другими ЯП, имеющими глобальный суперкласс.
Почитал:
По-видимому так и есть. Классы, в отличие от функций и переменных, нельзя использовать до объявления + классы объявляются с включенным 'strict mode' + 'constructor' выделен как особая функция, что предполагает добавление дополнительных требований при вычислении.
Так что не удивительно.
Вобще обычно не кидают в конструктор явной инициализации переменных, а оставляют лишь набор вызовов методов, что повышает понимание логики инициализации.
Потому тут 2 выхода:
1. Использовать метод начальной инициализации и переписать его так, чтобы инициализировал все переменные.
2. В дочернем классе, если необходимо, в переопределенном методе вызывать вспомогательный, нужный только для сабкласса, метод, который при необходимости, проинициализирует и подготовит нужные для переопределяемого метода, переменные.
Все чисто и надежно.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
+ в классах всегда включен "strict mode", который обычно используется для повышения быстродействия и отмены игнорирования мелких ошибок.
Насчет "late static binding": Возможно, посчитали функцию достаточно полезной.
+ Т.к. объявление класса не может стоять ниже, чем его использование, есть вероятность, что и super, не может стоять ниже чем обращение к его содержимому (переменным и т д) по этой же причине.
Раз, объект создается лишь при вызове super(), то и this еще не существует, а следовательно, нельзя к нему обращаться.
А про взаимозаменяемость классов, будто звучит как что-то плохое.
Когда классы взаимозаменяемы, меньше сюрпризов и всегда знаешь, чего ожидать от объекта - особенно ценное качество, когда объект(ы) объявлял не ты, а кто-то посторонний.
Если б в жизни подобные предметы вели себя по-разному, было бы страшно жить. Взял ты вроде баскетбольный мяч, покатил, а он вместо того чтобы катиться как обычный мяч, тебя укусил.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В файлике со списком скриптов, ссылку на который я выкладывал в первом посте, есть функция для возвращения ID события на определенной клетке. К сожалению она возвращает только первый найденный ID.Другими словами - ID события с наименьшим ID
Написал функцию, возвращающий массив с ID всех событий, находящихся на данной клетке. Вызов функции, где 13 -координата клетки по X, 5 - по Y:
Сама функция:
Если в мукере есть стандартная функция для этого, или же у кого-то есть вариант проще и красивее - буду рад его увидеть.
P.S.: Амфи говорил, что в его фабрике событий есть подобная функция, но лень было разбираться.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
EvilCat пишет: Она действительно есть: $gameMap.eventsXy(x, y) - возвращает массив объектов Game_Event (а не их айдишников), находящихся по координатам x, y. Кроме того, есть $gameMap.eventsXyNt(x, y) - то же самое, но только события, у которых не стоит галочка trough (не знаю, как она в русской версии - в общем, через которые нельзя ходить).
Эмм,Коша,ну как бы эвентХУ используется в той мини функции которую я приложил. И задача была именно в возвращении ИД объектов а не самих объектов.
А вот за ЭвентХуНт спасибо,таким образом смогу различать пули от врагов более простым способом в своей абс-ке
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Соответственно, для того, чтобы узнать реальные координаты события необходимо прибавить к ним данные координаты экрана:
Показ в консольке текста из события - "сообщений"("message"), "выбора".
Сообщения выводятся текстом, выбор - массивом.
Вызов функции:
Сама функция:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Возвращает массив эффектов ("особенностей") оружия:
У каждого эффекта есть три параметра:
- код параметра (например, "состояние атаки")
- тип параметра ("01 Нокаут")
- показатель параметра (обычно в процентах)
https://s.mail.ru/LJX7/T2PSJWDmd
1) Код параметра, где idWeapon - ид оружия, id - номер особенности в массиве особенностей оружия (начинается с нуля, как во всяком массиве)
2) Тип параметра
3) Показатель параметра
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В примере 4-ое событие будет двигаться к 10-ому.
Возврат кол-ва действий в "маршруте" события. Из этого списка следует вычесть единичку, ибо при добавлении действия в маршрут события, следом ВСЕГДА автоматически создается пустое действие.
Добавление действия в маршрут события:
, где "code: 45" - код действия из списка ниже. "parameters: " - нужен только в случае, когда код 45 (вставка в маршрут скрипта).
Функция для движения события к герою до тех пор, пока событие его "не догонит"
Без поиска пути, в случае препятствия событие тупо стоит. После того, как событие "догонит" игрока, включается лок.переключатель "D".
Вызов функции (вставлять в маршрут события):
Сама функция
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1. Земля расположена на слое 0
2. Объекты повыше типа гор или травки из вкладки А - слой 1
3. Интересно, что например тайл с вкладки Б расположен либо на 2, либо на 3 слое.
- если на клетке один тайл с вкладки Б, то его слой - 3
- если два тайла с вкладки Б, то тот, который выше имеет слой 3, а который ниже - слой 2.
Возвращает заметку тайлсета БД
Возвращает значение тега в заметке тайлсета БД, где tag - нужный тег
При этом сам тег(tag) с его значением (value) должны выглядеть в заметке тайлсета так: <tag:value>
Возвращает массив значения тега в заметке тайлсета БД, где tag - нужный тег
Нужен в случаях, когда в одном теге необходимо передать несколько значений типа:
и ВОПРОС!
Сегодня потребовалось написать такой код. То есть функция вызывает другую функцию с аргументом, который затем используется как свойство объекта (в данном случае это значение тега в заметках тайлсета).
ПРОБЛЕМА: аргумент передается как строка. а затем этот аргумент используется не как строка, а как свойство объекта.
РЕШЕНИЕ: тупо сначала конкатенировать название функции как строку с аргументом, а потом уже превратить строку в команду? Или есть более красивый способ?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет:
Code:return this.metaMap()[tag].split(' ');
Хм,точно, это же ассоциативный массив по сути? Как буду дома проверю,спасибо
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
