Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Доступ к системным данным

Доступ к системным данным 9 года 1 мес. назад #86207

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
Понимаю, что RMMV только появился, и знаний у всех крупицы, но давайте разбираться вместе.

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

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

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


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

Заранее большое спасибо :blush:
Администратор запретил публиковать записи гостям.

Доступ к системным данным 9 года 1 мес. назад #86209

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 3 место Готв2 место Учитель
Я заметила, что большая часть глобальных переменных осталась и называются тоже на $ (что нехарактерно для Яваскрипта, но допустимо - это сделали специально для привычности), только стиль названий поменялся со "змеиного" на "верблюжий": например, $game_map превратился в $gameMap. У меня сейчас нет под рукой кода, но не исключено, что те же переменные называются $gameParty, $dataItems, $gameVariables и $gameSwitches.
Администратор запретил публиковать записи гостям.

Доступ к системным данным 9 года 1 мес. назад #86215

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
К сожалению ничего :unsure: да, ошибки не вылетают, но и значения не доступны и ничего не проиходит вообще. :(
Администратор запретил публиковать записи гостям.

Доступ к системным данным 9 года 1 мес. назад #86217

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 3 место Готв2 место Учитель
Ошибки Яваскрипта, кстати, можно подробно посмотреть по нажатию F8.
как насчёт переменной $dataSystem? Она загружается напрямую из System.json, его можно открыть в текстовом редакторе и посмотреть содержимое.

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

Доступ к системным данным 9 года 1 мес. назад #86220

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
EvilCat пишет:
$gameParty определённо существует и содержит объект Game_Party, определённый в rpg_objects.js.

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

h3d35b68.png


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

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

Доступ к системным данным 9 года 1 мес. назад #86221

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • Учитель3 место ГотвПисатель 2 местоТестерВетеран1 место в ГотвРазработчик3 место
Mur пишет:
цитата [ Нажмите, чтобы развернуть ]


Надо писать:
$gameParty.gainItem($dataItems[1],1)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: strelokhalfer, EvilCat, Mur

Доступ к системным данным 9 года 1 мес. назад #86222

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
Да да! точно! всё получилось! Просто трудно ещё перестроится с одного синтаксиса на другой! :blush:


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

Доступ к системным данным 9 года 1 мес. назад #86232

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • Учитель3 место ГотвПисатель 2 местоТестерВетеран1 место в ГотвРазработчик3 место
Mur пишет:
Но теперь другая проблема, как достучатся до переменных? $gameVariables не работает :cry:
Собственно, если хотим использовать значение пременной:
$gameVariables.value(номер переменной);

Если мы хотим задать значение переменной:
$gameVariables.setValue(номер переменной, значение)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Mur

Доступ к системным данным 9 года 1 мес. назад #86237

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
Демий пишет:
Собственно, если хотим использовать значение пременной:

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

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

_.png
Последнее редактирование: 9 года 1 мес. назад от strelokhalfer.
Администратор запретил публиковать записи гостям.

Доступ к системным данным 9 года 1 мес. назад #86238

  • strelokhalfer
  • strelokhalfer аватар
  • Вне сайта
  • Архитектор Миров
  • Знатный грамотей
  • Сообщений: 1640
  • Спасибо получено: 1078
  • Даритель Стимкея2 место Сбитая кодировка2 место ПереводчикПрограммист RubyОрганизатор конкурсов
Потому что
$gameVariables.value(1), а не как у тебя $gameVariables[1].value
"Стрелок, что-то ты неочень похож на свой аватар..."(с)
Администратор запретил публиковать записи гостям.

Доступ к системным данным 9 года 1 мес. назад #86239

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
strelokhalfer пишет:
Потому что
$gameVariables.value(1), а не как у тебя $gameVariables[1].value

Мдаа, как-то тяжело всё это идёт,… :wall:
TypeError: object is not a function
Администратор запретил публиковать записи гостям.

Доступ к системным данным 9 года 1 мес. назад #86240

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
На будущее, надо всё-таки не так и не сяк, вот как обращаться к переменной:

$gameVariables._data[1]

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

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

Доступ к системным данным 9 года 1 мес. назад #86241

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • Учитель3 место ГотвПисатель 2 местоТестерВетеран1 место в ГотвРазработчик3 место
Однако такой вот способ вызова тоже работает:
$gameParty.gainItem($dataItems[$gameVariables.value(номер)],$gameVariables.value(номер))
Последнее редактирование: 9 года 1 мес. назад от Демий.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Mur

Доступ к системным данным 9 года 2 нед. назад #87230

  • Mur
  • Mur аватар
  • Вне сайта
  • Светлый дракон
  • Мур? Мур! Мур.
  • Сообщений: 574
  • Спасибо получено: 1449
  • УчительДаритель Стимкея2 место Организатор конкурсовПрограммист JavaScript Оратор
Добавлю ещё интересную строчку в копилку знаний. Если вдруг кому понадобится узнать состояние SelfSwitch у какого-нибудь event на карте:
$gameSelfSwitches._data[$gameMap._mapId+',6,A']

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

Доступ к системным данным 9 года 2 нед. назад #87235

  • EvilCat
  • EvilCat аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 469
  • Спасибо получено: 850
  • 3 место Готв2 место Учитель
Любопытно... А я гадала, как в коде работает такая конструкция, учитывая, что Яваскрипт не должен принимать ключи-объекты:
var key = [this.event._mapId, this.event._eventId, sw];
if ($gameSelfSwitches.value(key)===true) text+='Switch '+sw+' is on\n';

Оказывается, она просто преобразовывает массив в строку и использует её как ключ!
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Волчонок

Доступ к системным данным 8 года 11 мес. назад #88677

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 913
  • Спасибо получено: 566
  • Даритель СтимкеяОраторПрограммист RubyВетеранПрограммист JavaScript
Вроде тема подходит.
Может кто знает, по какому параметру можно сделать удобный для пользователя выбор ивента?

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

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

Заранее спасибо! :)
Администратор запретил публиковать записи гостям.

Доступ к системным данным 8 года 11 мес. назад #88678

  • Cerberus
  • Cerberus аватар
  • Вне сайта
  • Модератор
  • Собака злая
  • Сообщений: 2269
  • Спасибо получено: 1182
  • Победитель Сбитой кодировки3 местоПроект месяца 2 местоПрограммист JavaScript 2 место 2 место Сбитая кодировкаПисатель 3 местоОрганизатор конкурсов3 место ГотвПроект месяца 1 место
Event Class

The JSON data structure of a map event.
Properties

id
name
note
pages
x
y

Properties

name Number

The name.

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

Доступ к системным данным 8 года 11 мес. назад #88680

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 913
  • Спасибо получено: 566
  • Даритель СтимкеяОраторПрограммист RubyВетеранПрограммист JavaScript
Да. Спасибо!

Оказывается эти данные там тоже хранятся, но в отдельном списке в $mapData.events .
Вытаскиваются из Game_Event.event() которые лежат в $gameMap.events .
Последнее редактирование: 8 года 11 мес. назад от Lekste.
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.255 секунд