Показано с 1 по 10 из 189

Тема: Мастера мэйкера

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #34
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    Не очень хорошо получилось, тот код что я до этого писал про копирование эвентов не работает корректно (хотя само копирование возможно).
    Вот скорректированный вариант (проверял на MZ)
    Спойлер Скорректированный вариант кода для копирования эвентов, MZ:

    Код не "сжат", может не влезть в Скрипт в таком виде - строки сжимайте как вам удобно.
    Код не совершенен, может бажить если у вас много (200+) эвентов на карте - использование на ваш страх и риск. =)
    Ну и в целом тут много нюансов, но в своей игре я использую данный вариант и "оно почти работает"(с)
    Код:
    let eventToCloneId = A;
    let cloneInCoordX = B;
    let cloneInCoordY = C; 
    let cloneInDirection = D;
    let eventToCloneData = $dataMap.events[eventToCloneId];
    let clonedEventData = {...eventToCloneData};
    let newId = eventToCloneId + Math.floor(Math.random() * E + F);
    if($dataMap.events.length < newId){
      $dataMap.events.length = newId;
    }
    $dataMap.events[newId] = clonedEventData;
    let clonedMapEvent = new Game_Event(this._mapId, clonedEventData.id);
    clonedMapEvent._direction = cloneInDirection;
    clonedMapEvent.locate(cloneInCoordX, cloneInCoordY);
    $gameMap._events.push(clonedMapEvent);
    $dataMap.events[$dataMap.events.length - 1].id = newId; 
    $gameMap._events[$gameMap._events.length - 1]._eventId = newId;
    SceneManager._scene._spriteset.createCharacters();
    где:
    A - номер (id) эвента, который нужно клонировать;
    B - координата X, в которую нужно поместить склонированный эвент;
    C - координата Y, в которую нужно поместить склонированный эвент;
    D - направление взгляда склонированного эвента(2 - низ, 4 - лево, 6 - право, 8 - верх);
    E - максимальный номер нового Id склонированного эвента;
    F - минимальный номер нового Id склонированного эвента.


    Кроме этого, на "соседнем" форуме Alx_Yago напомнил интересную возможность - использовать "Выбор предмета" как выбор в диалоге.
    Немного поэкспериментировав, я понял как можно использовать такую функцию еще чуть удобнее (хотя удобство и спорно, но тем не менее).

    Можно в Примечании "диалогового" предмета писать текст, потом его скриптом считывать и записывать в переменную мейкера, после чего текст этой переменной выводить в сообщении (\V[N]). Или использовать как-то иначе.
    Но такой способ не поддерживает "специальные символы" мейкера - иконки, цвета текста, размер текста итд.
    Спойлер Скрипт для считывания Примечания предмета с записью в переменную, для MV и MZ:

    Код:
    let itemIndex = $gameVariables.value(M);
    let item = $dataItems[itemIndex];
    let itemText = item.note;
     
    $gameVariables.setValue(N, itemText);
    или одной строчкой
    Код:
    $gameVariables.setValue(N, $dataItems[$gameVariables.value(M)].note);
    где:
    M - номер переменной, в которую сохраняется результат Выбора предмета;
    N - номер переменной, в которой будет храниться текст Примечания выбранного предмета
    В результате в сообщении пишем \V[N], и мукер автоматически в текст вставляет значение переменной.

    Может кому-то пригодится.
    Последний раз редактировалось Darchan Kaen; 26.03.2022 в 17:52. Причина: Таки много нюансов в копировании...

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Мастера  мэйкера