Доступ к системным данным

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад #86207 от Mur
Понимаю, что RMMV только появился, и знаний у всех крупицы, но давайте разбираться вместе.

При переносе проекта из Ace, встала проблема доступа из скриптов, а именно:
Code:
$game_party.gain_item $game_party.lose_item
Как дать итем или забрать.

Code:
$data_items
Собственно доступ к базе итемов.

Code:
$game_variables $game_switches
Ну и доступ к переменным и ключам.


Кто-нибудь уже разобрался как теперь осуществляется доступ к этим данным? :unsure:

Заранее большое спасибо :blush:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
10 года 6 мес. назад #86209 от EvilCat
Я заметила, что большая часть глобальных переменных осталась и называются тоже на $ (что нехарактерно для Яваскрипта, но допустимо - это сделали специально для привычности), только стиль названий поменялся со "змеиного" на "верблюжий": например, $game_map превратился в $gameMap. У меня сейчас нет под рукой кода, но не исключено, что те же переменные называются $gameParty, $dataItems, $gameVariables и $gameSwitches.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад #86215 от Mur
К сожалению ничего :unsure: да, ошибки не вылетают, но и значения не доступны и ничего не проиходит вообще. :(

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
10 года 6 мес. назад - 10 года 6 мес. назад #86217 от EvilCat
Ошибки Яваскрипта, кстати, можно подробно посмотреть по нажатию F8.[hr]как насчёт переменной $dataSystem? Она загружается напрямую из System.json, его можно открыть в текстовом редакторе и посмотреть содержимое.

$gameParty определённо существует и содержит объект Game_Party, определённый в rpg_objects.js. В том числе у него есть методы gainItem и loseItem (как я и предполагала, они перешли со змеиного_названия на верблюжийГорб).
Последнее редактирование: 10 года 6 мес. назад пользователем strelokhalfer.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад - 10 года 6 мес. назад #86220 от Mur

EvilCat пишет: $gameParty определённо существует и содержит объект Game_Party, определённый в rpg_objects.js.


Уффф, ну хорошо. Ты можешь создать тестовый проект и попробовать дать предмет через скрипт? У меня ничего не получается. Может тут как-то теперь по другому вызываются скрипты?



Вот например открываем сундук. И ничего не получаем.

Впрочем если написать $gameParty.gainGold(1000) то 1000 монет появляется! :S
Последнее редактирование: 10 года 6 мес. назад пользователем Mur.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
10 года 6 мес. назад #86221 от Демий

Mur пишет:

цитата



Надо писать:
Code:
$gameParty.gainItem($dataItems[1],1)
Спасибо сказали: strelokhalfer, EvilCat, Mur

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад - 10 года 6 мес. назад #86222 от Mur
Да да! точно! всё получилось! Просто трудно ещё перестроится с одного синтаксиса на другой! :blush:


Но теперь другая проблема, как достучатся до переменных? $gameVariables не работает :cry:
Последнее редактирование: 10 года 6 мес. назад пользователем Mur.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
10 года 6 мес. назад #86232 от Демий

Mur пишет: Но теперь другая проблема, как достучатся до переменных? $gameVariables не работает :cry:

Собственно, если хотим использовать значение пременной:
Code:
$gameVariables.value(номер переменной);

Если мы хотим задать значение переменной:
Code:
$gameVariables.setValue(номер переменной, значение)
Спасибо сказали: Mur

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад - 10 года 6 мес. назад #86237 от Mur

Демий пишет: Собственно, если хотим использовать значение пременной:


Ты знаешь не получается, вылетает сообщение об ошибке:
Code:
TypeError: Cannot read property 'value' of undefined

Что я вообще хочу сделать. Кладём в переменную 1 номер предмета, в переменную 2 количество, вызываем общее событие, предмет в интвентаре. В Ace у меня всё это прекрасно работало, а тут вот затык. Возможно я опять что-то не так делаю:

Последнее редактирование: 10 года 6 мес. назад пользователем strelokhalfer.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Организатор конкурсов Даритель Стимкея 2 место Сбитая кодировка Переводчик 2 место
Больше
10 года 6 мес. назад #86238 от strelokhalfer
Потому что
Code:
$gameVariables.value(1), а не как у тебя $gameVariables[1].value

"Стрелок, что-то ты неочень похож на свой аватар..."(с)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад #86239 от Mur

strelokhalfer пишет: Потому что

Code:
$gameVariables.value(1), а не как у тебя $gameVariables[1].value


Мдаа, как-то тяжело всё это идёт,… :wall:
Code:
TypeError: object is not a function

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 6 мес. назад - 10 года 6 мес. назад #86240 от Mur
На будущее, надо всё-таки не так и не сяк, вот как обращаться к переменной:

Code:
$gameVariables._data[1]

А для того что бы установить из скрипта, нужно вызывать:
Code:
$gameVariables.setValue(1,100)

Кстати, красный цвет зарезервирован для администрации и всяких там предупрежденек, например :P
Последнее редактирование: 10 года 6 мес. назад пользователем AnnTenna.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

1 место в Готв 3 место Учитель Разработчик 3 место Готв Ветеран Писатель 2 место Тестер
Больше
10 года 6 мес. назад - 10 года 6 мес. назад #86241 от Демий
Однако такой вот способ вызова тоже работает:
Code:
$gameParty.gainItem($dataItems[$gameVariables.value(номер)],$gameVariables.value(номер))
Последнее редактирование: 10 года 6 мес. назад пользователем Демий.
Спасибо сказали: Mur

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Даритель Стимкея Учитель Организатор конкурсов 2 место Программист JavaScript Оратор
Больше
10 года 5 мес. назад #87230 от Mur
Добавлю ещё интересную строчку в копилку знаний. Если вдруг кому понадобится узнать состояние SelfSwitch у какого-нибудь event на карте:
Code:
$gameSelfSwitches._data[$gameMap._mapId+',6,A']

Данная конструкция вернёт «true», на текущей карте ($gameMap._mapId) если у event №6 активирован ключ «A». Если нужно проверить на другой карте, то вместо «$gameMap._mapId» нужно указать номер требуемой карты, например '7,12,B' проверит ключ «B» у события 12 на карте 7.
Спасибо сказали: Демий

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

3 место Готв Учитель 2 место
Больше
10 года 5 мес. назад #87235 от EvilCat
Любопытно... А я гадала, как в коде работает такая конструкция, учитывая, что Яваскрипт не должен принимать ключи-объекты:
Code:
var key = [this.event._mapId, this.event._eventId, sw]; if ($gameSelfSwitches.value(key)===true) text+='Switch '+sw+' is on\n';

Оказывается, она просто преобразовывает массив в строку и использует её как ключ!
Спасибо сказали: Волчонок

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
10 года 4 мес. назад #88677 от Lekste
Вроде тема подходит.
Может кто знает, по какому параметру можно сделать удобный для пользователя выбор ивента?

А именно, нужно сделать возможность включать/выключать некоторые функции ивентов в процессе игры через команду плагину.
Есть очень надежный способ выбора ивента из кучи - по eventId.
Однако из редактора значение этого поля никак не увидеть, а имя ивента наоборот отображается только в редакторе.

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

Заранее спасибо! :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 3 место Проект месяца 1 место Проект месяца 2 место 3 место Готв Победитель Сбитой кодировки Программист JavaScript 2 место Сбитая кодировка Писатель 3 место 2 место 3 место Организатор конкурсов
Больше
10 года 4 мес. назад #88678 от Cerberus

Event Class

The JSON data structure of a map event.
Properties

id
name
note
pages
x
y

Properties

name Number

The name.


Или это не то имя, которое можно вписать в редакторе? Сам, увы, не могу проверить - MV на XP не взлетел.

Жуть болотная, на лапках, в тапках и с пулемётом...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Программист Ruby Ветеран Даритель Стимкея Оратор Программист JavaScript
Больше
10 года 4 мес. назад - 10 года 4 мес. назад #88680 от Lekste
Да. Спасибо!

Оказывается эти данные там тоже хранятся, но в отдельном списке в $mapData.events .
Вытаскиваются из Game_Event.event() которые лежат в $gameMap.events .
Последнее редактирование: 10 года 4 мес. назад пользователем Lekste.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.129 секунд
Работает на Kunena форум