Плохо! Плохо!:  0
Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 28 из 28

Тема: Переменные, простые скрипты, функции rpg maker MV

  1. #21
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Axel_Key Посмотреть сообщение
    Я не совсем хорошо шарю в коде, поэтому хочу уточнить некоторые моменты.
    1) $gameMap.event(ИД).event().note.contains('имя ') Это нужно сделать перед скриптом, который ниже?
    в жс порядок неважен (есть тонкости но пока это упустим) ,поэтому можешь как перед,так и после.

    И проверяет оно только наличие события на карте, так? Можно ли проверить наличие события с тегом в игре вообще?
    Я использую Yep. event spawner и event copier плагины, события которые я обычно копирую или спавню, находятся на отдельных картах.
    данные плагины могут искать события только по ИД а ты хочешь по "нот"?
    то есть ты хочешь найти события с определенной "нот" на определенной карте-палитре?
    не знаю насколько сложно это сделать,времени смотреть это и пробовать нет. я сам использую плагин местного форумчанина, он берет события по имени события а не по ИД, может тоже попробуешь его? http://rpgmaker.ru/forum/konkursy-i-...tart=20#100489

    2) Меня так же интересует не только setPosition, но и сравнение координат двух событий, через notetag.
    Например, если событие 'такое-то' равно координатам другого события, то.
    вот дописал функцию:

    var id = function(note) {
    for (let i=0; i<$gameMap.event().length; i++) {
    if ($gameMap.event(i).event().note.contains(note) ) return i;
    }
    }

    если нужно найти событие с определенной заметкой, то вставляешь этот код, а потом пишешь нужные условия, где вместо ИД просто пиши id('note'), где 'note' - заметка события в кавычках
    например если хочешь првоерить столкновения двух события,у первого из которых заметка "cat", а у второго "dog", то пишешь следующий код:

    PHP код:
    var id = function(note) {
    for (
    let i=0i<$gameMap.event().lengthi++) {
    if (
    $gameMap.event(i).event().note.contains(note) ) return i;
    }
    }
    $gameMap.event(id('cat')).== $gameMap.event(id('dog')).&& $gameMap.event(id('cat')).== $gameMap.event(id('dog')) 
    опять же пишу с работы,поэтому возможно косяки в коде

    Мне нужно еще понять, в каком порядке писать скриптовые команды. О команде $gameMap.event(ИД).event().note.contains('имя ') я знаю, но я не знаю как она работает и когда применяется. Обычно, когда я самостоятельно пытаюсь что-то написать, на основе тех команд, которые уже знаю, - ничего не получается. Потому что я не знаком с синтаксисом когда и не знаю, что и в каком порядке надо проверять и делать, и какие циклы, функции вообще есть. Конечно, очень рад бы был научиться в этом хоть немного разбираться.
    Больше количество разных штук я могу реализовать и на ивентах, но все упирается в координаты и ИД событий, как правило. Проблемы зачастую с ид, и координатами. :<
    посоветовал бы скачать приложение на телефон sololearn, и там изучить в разделе JS темы "основные поняти", "условия и циклы", "функции", "объекты", "предопределенные объекты". данных тем вполне хватит чтоб делать подобные вещи. остальное чисто практика

  2. #22
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Yuryol Посмотреть сообщение

    если нужно найти событие с определенной заметкой, то вставляешь этот код, а потом пишешь нужные условия, где вместо ИД просто пиши id('note'), где 'note' - заметка события в кавычках
    например если хочешь првоерить столкновения двух события,у первого из которых заметка "cat", а у второго "dog", то пишешь следующий код:

    PHP код:
    var id = function(note) {
    for (
    let i=0i<$gameMap.event().lengthi++) {
    if (
    $gameMap.event(i).event().note.contains(note) ) return i;
    }
    }
    $gameMap.event(id('cat')).== $gameMap.event(id('dog')).&& $gameMap.event(id('cat')).== $gameMap.event(id('dog')) 
    Ну, смотри. Нажимаю я "ветвление условий" -> "скрипт". И этот скрипт не влезает в окошко скрипта.
    Я делаю параллельное событие, в нем по условии "если событие 1 и событие 2 имеют равные координаты, то происходит следующее. Сделать это нужно через ветвление условий...
    Не до конца понимаю, что делает твой код.. Вот ввожу я этот скрипт, ничего не происходит. Что дальше то? Как сделать ветвление условий, мол "если координаты события 'notetag' равно координатам события 'notetag2', то...? :0
    Древнее зло вновь пробудилось, чтобы оккупировать раздел помощи...

  3. #23
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Axel_Key Посмотреть сообщение
    Ну, смотри. Нажимаю я "ветвление условий" -> "скрипт". И этот скрипт не влезает в окошко скрипта.
    Я делаю параллельное событие, в нем по условии "если событие 1 и событие 2 имеют равные координаты, то происходит следующее. Сделать это нужно через ветвление условий...
    Не до конца понимаю, что делает твой код.. Вот ввожу я этот скрипт, ничего не происходит. Что дальше то? Как сделать ветвление условий, мол "если координаты события 'notetag' равно координатам события 'notetag2', то...? :0
    про ветвление сразу надо говорить
    можно просто убрать все отступы и записать код в строчку. в данном случае отступы в жс нужны только для читаемости

    PHP код:
    var id = function(note) {for (let i=1i<$gameMap.event().lengthi++) {if ($gameMap.event(i).event().note.contains(note)) return i;}}; $gameMap.event(id('q')).== $gameMap.event(id('w')).&& $gameMap.event(id('q')).== $gameMap.event(id('w')) 
    PS:
    - я кстати в прошлом коде в конце .y не скопировал)
    - ща просмотрел еще раз код, наверное лучше вместо var id = function(note) писать function id(note).
    в случае если объявляешь функцию через переменную,то порядок вроде как важен,точно не помню
    - ну и вместо $gameMap.event() вроде надо $gameMap.events(). не помню как в мукере,но чисто логически массив со всеми событиями на карте скорее будет называть во множественном числе "события"(events), нежели в единственном

    итого попробуй этот код

    PHP код:
    function id(note) {for (let i=1i<$gameMap.events().lengthi++) {if ($gameMap.event(i).event().note.contains(note)) return i;}}; $gameMap.event(id('q')).== $gameMap.event(id('w')).&& $gameMap.event(id('q')).== $gameMap.event(id('w')).y
    Последний раз редактировалось Yuryol; 18.04.2019 в 17:54.

  4. #24
    Местный Аватар для Axel_Key
    Информация о пользователе
    Регистрация
    26.03.2017
    Адрес
    Горно-Алтайск
    Сообщений
    155
    Записей в дневнике
    3
    Репутация: 2 Добавить или отнять репутацию

    По умолчанию

    Я все делаю правильно? Что-то оно не работает.



    Код вставил такой:
    PHP код:
    var id = function(note) {for (let i=1i<$gameMap.event().lengthi++) {if ($gameMap.event(i).event().note.contains(note)) return i;}}; $gameMap.event(id('mask')).== $gameMap.event(id('enemy')).&& $gameMap.event(id('mask')).== $gameMap.event(id('enemy')).y
    Мне нужно сделать так, чтобы эти шарики (маска) , которые перемещаются вместе с игроком, при столкновении с врагом запускали триггер "коллизия".


    Когда триггер "коллизия" включен, - у врага активна страница с триггером нажатия на кнопку. Т.е. когда игрок близко с врагом и жмет на кнопку 'ok', - враг умирает.
    Пока "коллизия" не включена, - у врага активна страница с параллельным триггером, его поведением.

    Обидно то, что я сделал идеальную схему поведения врага. Т.е. он ходит по карте, если игрок в радиусе его видимости, - начинает преследовать и выпускать снаряды, целится в игрока. Снаряды спавнятся скриптом и задевают игрока, наносят урон. Но беда в том, что единственное что тут не работает, - я не могу убить врага, потому что для этого нужен триггер касания, а интеллект врага может работать только на параллельном триггере ВНУТРИ врага. D: Если поведение врага выпихнуть наружу, то придется указывать ид события врага, и так с каждым врагом. А когда поведение врага внутри него, можно просто делать условие "это событие" и не париться, спокойно копируя врагов на карте. Все работает отлично, кроме атаки игрока по врагу(

    Цитата Сообщение от Yuryol Посмотреть сообщение
    итого попробуй этот код

    PHP код:
    function id(note) {for (let i=1i<$gameMap.events().lengthi++) {if ($gameMap.event(i).event().note.contains(note)) return i;}}; $gameMap.event(id('q')).== $gameMap.event(id('w')).&& $gameMap.event(id('q')).== $gameMap.event(id('w')).y
    Тоже не работает(
    Наверное я что-то не так делаю...
    Последний раз редактировалось Axel_Key; 18.04.2019 в 18:51.
    Древнее зло вновь пробудилось, чтобы оккупировать раздел помощи...

  5. #25
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Axel_Key Посмотреть сообщение
    ..
    был занят,только освободился.
    1. note - это не поле "имя", это поле "примечание" (справа от имени события). поле "имя" - это "name"
    2. даже если бы ты писал в "примечании" код все-равно бы не работал. ты в коде пишешь что название должно быть "mask", а в событии пишешь "Mask controller". Ты должен писать точное название,вплоть до регистра, напрмиер "mask" и "Mask" - это разные названия. Также про пробелы не забывай, "mask " и "mask " тоже разные. Поэтому раз событие назвал "Mask controller" то и в коде пиши $gameMap.event(id('Mask controller')).y

    ну и надо было вставлять код которым я последним дал. у меня всё работает,ща проверил вставив этот код ничего не исправляя,всё норм. вот демо https://yadi.sk/d/b8O1pfdPN2c3jA

    ну и на будущее если ты вставляешь какой-то код и что-то не выходит первым делом нажимай f12,откроется консоль. в ней посмотри какие ошибки пишут.
    а еще улчше плюс к этому кинуть демо, по скринам трудно смотреть

  6. #26
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Как поменять иконку курсора в RPG Maker MV

    1) Берем картинку в формате PNG с иконкой курсора (например можно скачать здесь)

    2) Вставляем в корневую папку игры (там где находится файл index.html)

    3) заходим в файл index.html через редактор кода или например блокнот, внутри тега "<head>" вставляем строчку:

    PHP код:
    <style type="text/css">    CANVAS{cursor:  crosshaircursorurl(name.png53 53crosshair;}</style
    где name - имя файла нашей иконки, без кавычек.

    получится что-то типа

    PHP код:
        <head>
            <
    meta charset="UTF-8">
            <
    meta name="apple-mobile-web-app-capable" content="yes">
            <
    meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
            <
    meta name="viewport" content="user-scalable=no">
            <
    link rel="icon" href="icon/icon.png" type="image/png">
            <
    link rel="apple-touch-icon" href="icon/icon.png">
            <
    link rel="stylesheet" type="text/css" href="fonts/gamefont.css">
            <
    style type="text/css">    CANVAS{cursor:  crosshaircursorurl(1.png53 53crosshair;}</style>
            <
    title>Отвязанный проект</title>
        </
    head
    4) Радуемся! Теперь при наводке курсора в окно игры он меняется на закачанную нами картинку

  7. #27
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Запись текста в файл

    Вместо 'Hello, mukerist!' пишем текст который нам нужен (в кавычках)
    Вместо '1.txt' пишем любое название файла,а затем через точку тип файла. В данном случае файл называет "1", и это текстовый файл. Файл будет находиться в корне игры

    PHP код:
    const name '1.txt';
    let text 'Hello, mukerist!';
    const 
    fs = require('fs');
    fs.appendFile(nametext, function(err) {
        if (
    err) throw err;
    }); 
    Зачем оно надо?

    Например, для тестирования можно записать в файл значения всех переменных

    PHP код:
    const name '1.txt';
    let text;
    const 
    fs = require('fs');
    $gameVariables._data.forEach(function(numinums) {
        
    text = `переменная ${i} = ${num}\n`;
        
    fs.appendFile(nametext, function(err) {
            if (
    err) throw err;
        }); 
    }); 
    Чтение из текстового файла

    PHP код:
    const name '1.txt';
    const 
    xhr = new XMLHttpRequest();
    let content;

    xhr.open("GET"namefalse);
    xhr.send(null); 
    content xhr.responseText
    Затем можно например записать текст в переменную путем добавления в конце строчки

    PHP код:
    $gameVariables.setValue(1content); 
    Зачем оно надо?

    Можно, например, легко вставлять длинные тексты в игру, например отрывки из книг, записав в текст в переменную а потом написав "\V[1]" в сообщении мейкер

    Интересно, что мейкер сам разобьет длинный текст на несколько сообщений а не будет обрезать и оставлять только первые строки, как это делает редактор

  8. #28
    Маститый Аватар для Yuryol
    Информация о пользователе
    Регистрация
    06.03.2014
    Адрес
    Красноярск
    Сообщений
    1,420
    Записей в дневнике
    44
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Логирование

    Для теста своей АБС набросал простенькое логирование.

    В try вставляем код своего плагина и при ошибке будет создан файл 'error.log', в котором будет ее описание с датой и временем. Время ставится отдельно для каждой ошибки, а дата - один раз в день.

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

    Вот так выглядит записи в логе (скрин из IDE Visual studio code):




    Сам код:

    PHP код:
    try{
        
    //ваш код
    }
    catch (
    err) {
        const 
    name 'error.log';
        const 
    fs = require('fs');
        const 
    data = new Date().toLocaleDateString();
        const 
    time = new Date().toLocaleTimeString();
        
    let text;
        
    let content;

        const 
    xhr = new XMLHttpRequest();
        
    xhr.open("GET"namefalse);
        try {
            
    xhr.send(null);
        } catch (
    err) {
            
    console.log(err);
        };

        
    content xhr.responseText;
        
    text = (!content || content && !content.includes(data)) ? `\n${data}\n ` : '';
        
    text =  `${text} \n ${time} \n ${err.stack} \n`;

        
    fs.appendFile(nametext, function(err) {
            if (
    err) throw err;
        });


Страница 3 из 3 ПерваяПервая 123

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Переменные, простые скрипты, функции rpg maker MV