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

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

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

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

    Для начинающих программистов-мукеристов rpg maker MV. То, чего нет в списке "простых скриптов" или что не очень понятно.
    Плюс несколько функций. Вдруг кому пригодится.

    Проверка равенства переменной определенным числам:
    Код:
    [1, 2, 3, 4].contains($gameVariables.value(ИД))
    Проверка наличия тега в заметке в предмете в БД:
    Код:
    $dataItems[ИД].note.contains('тег')
    проверка наличия тега в заметке во вкладке "противники" в БД:
    Код:
    $dataEnemies[ИД].note.contains('тег')
    проверка наличия тега в заметке в оружии в БД:
    Код:
    $dataWeapons[ИД].note.contains('тег')
    проверка наличия тега в заметке в во вкладке "броня" БД:
    Код:
    $dataArmors[ИД].note.contains('тег')
    возвращения свойства тега в заметке в во вкладке "оружие" в БД:
    Код:
    $dataWeapons[ИД].meta.тег
    При этом в заметке тег должен быть в треугольных скобках, а его свойство должно идти после двоеточия:
    Код:
    <тег: свойство>
    возвращает ИД слота Экипировки, где IDslot - ID слота экипировки (0-оружие, 1- щит, 2- голова и т.д.)
    Код:
    $gameParty.leader().equips()[IDslot].id
    индекса чарсета лидера партии:
    Код:
    $gameParty.leader()._characterIndex;
    имя чарсета лидера партии:
    Код:
    $gameParty.leader()._characterName;
    Смена графики лидера партии. Не забудьте обновить ее, добавив второй строчкой "рефреш".
    Код:
    $gameParty.leader().setCharacterImage('Actor1', 7);
    $gamePlayer.refresh();
    Для того, чтобы проверить экипировку, имя чарсета и т.д. не лидера а 2-4 члена партии, следует заменить в вышеизложенных кодах $gameParty.leader() на:
    Код:
    $gameParty.members()[ИД]
    Перед этим лучше вставить проверку на существования этого члена партии:
    Код:
    $gameParty.members()[ИД]!=undefined
    имя события:
    Код:
    $gameMap.event(ИД).event().name.contains('имя')
    заметка события:
    Код:
    $gameMap.event(ИД).event().note.contains('имя')
    проверка существования события:
    Код:
    $dataMap.events[id]==null
    телепорт события:
    Код:
    $gameMap.event(ИД).setPosition(x, y)
    смена локального переключателя на "D" события на текущей карте :
    Код:
    $gameSelfSwitches.value([$gameMap.mapId(), ИД, 'D'], true)
    телепорт события в координату игрока:
    Код:
    $gameMap.event(ИД).setPosition($gamePlayer.x, $gamePlayer.y)
    Пауза которую можно вызвать в функции. Вторая функция будет вызвана с задержкой в 300 милисекунд.
    Код:
    setTimeout(function() {функция2()}, 300);
    Возвращение наличия определенного комментария на текущей странице события с нужным ID. Возвращает true или false.
    Код проверки:
    Код:
    $gameMap.processCommentTag(ID, 'комментарий')
    Сама функция.
    Код:
    Game_Map.prototype.processCommentTag = function (id, tag) { 
    	var eventID = $gameMap.event(id);
    	var note; 
    	var list = eventID.page().list; 
    	for (var i = 0; i < list.length; i++) { 
    		if (list[i].code === 108 || list[i].code === 408) { 
    			note = list[i].parameters[0]; 
    			if (eventID.page().list[i].parameters[0]==tag){
    				console.log('wcdc');
    				return true;
    			} 
    		} 
    	} 
    	return false;
    }
    Битмапы.
    создание прямоугольника определенного цвета ('#0000ff')с правым верхним углом в определенной точке, определенной ширины и высоты:
    Код:
    this.bitmap.fillRect(x, y, ширина, высота, '#0000ff');
    написание текста:
    Код:
    this.bitmap.drawText('текст', x, y, ширина, высота)
    цвет текста:
    Код:
    this.bitmap.textColor = '#000000';
    название шрифта
    Код:
    this.bitmap.fontFace = 'Trebuchet MS';
    размер шрифта:
    Код:
    this.bitmap.fontSize = 12;
    толщина обводки букв:
    Код:
    this.bitmap.outlineWidth = 2;
    цвет обводки:
    Код:
    this.bitmap.outlineColor = '#000000';
    курсив ли:
    Код:
    this.bitmap.fontItalic = true;
    Отрисовка иконки из определенного файла, где "index" - порядковый номер иконки, "количество" -количество иконок в одном ряду иконсета.
    Вызов функции:
    Код:
    this.drawIcon(index, x, y, ширина, высота, 16, 'название файла');
    Сама функция:
    Код:
    ICON_Hud.prototype.drawIcon = function(index, x, y, w, h, string, IconSet) {
    	if (!this.bitmap) return false;
    	var bitmap = ImageManager.loadSystem(IconSet);
    	var pw = Window_Base._iconWidth;
    	var ph = Window_Base._iconHeight;
    	var sx = index%string*pw;
    	var sy = Math.floor(index/string)*pw;
    	this.bitmap.blt(bitmap,sx,sy,pw,ph,x,y, w,h);
    	return true;
    }
    Координаты расположение "экрана" относительно карты (левый верхний угол экрана):

    Код:
    $gameMap.displayX(); 
    $gameMap.displayY()
    Соответственно, для того, чтобы узнать реальные координаты события необходимо прибавить к ним данные координаты экрана:

    Код:
    $gameMap.event(id).x + $gameMap.displayX();
    $gameMap.event(id).y + $gameMap.displayY()
    Показ в консольке текста из события - "сообщений"("message"), "выбора".
    Сообщения выводятся текстом, выбор - массивом.

    Вызов функции:

    Код:
    $gameMap.processEventList(id);
    Сама функция:

    Код:
    Game_Map.prototype.processEventList = function (id) { 
      var eventID = $gameMap.event(id);
      var list = eventID.page().list; 
      for (var i = 0; i < list.length; i++) {
        if (list[i].code === 401 || list[i].code === 102) {
          console.log(list[i].parameters[0]);
        } 
      } 
    }
    Возвращает массив эффектов ("особенностей") оружия:

    Код:
    $dataWeapons[idWeapon].traits


    1) Код параметра, где idWeapon - ид оружия, id - номер особенности в массиве особенностей оружия (начинается с нуля, как во всяком массиве)
    Код:
    $dataWeapons[idWeapon].traits[id].code
    Возвращает число, где первая цифра - порядковый номер вкладки с "особенностями", а вторая - порядковый номер особенности в этой вкладке. Например, у "состоянии атаки" вкладка "атака" - третья, а сама особенность вторая в этой вкладке, потому и номер возвратится "32"

    2) Тип параметра
    Код:
    $dataWeapons[idWeapon].traits[id].dataId
    Возвращает порядковый номер типа параметра (начиная с единицы). В примере выше возвратит "1"

    3) Показатель параметра
    Код:
    $dataWeapons[idWeapon].traits[id].value
    Возвращает показатель типа параметра, обычно он в процентах. В примере выше возвратит "100". Не очень удобно, было бы удобнее в виде "1.0" вместо 100% и, например "0.9" вместо 90%.

    Движение одного события к другому событию.
    В примере 4-ое событие будет двигаться к 10-ому.

    Код:
    $gameMap.event(4).moveTowardCharacter($gameMap.event(10));
    Возврат кол-ва действий в "маршруте" события. Из этого списка следует вычесть единичку, ибо при добавлении действия в маршрут события, следом ВСЕГДА автоматически создается пустое действие.

    Код:
    $gameMap.event($gameVariables.value(id))._moveRoute.list;
    Добавление действия в маршрут события:

    Код:
    $gameMap.event($gameVariables.value(id))._moveRoute.list.push({code: 45, parameters: ['script']});
    , где "code: 45" - код действия из списка ниже. "parameters: ['script']" - нужен только в случае, когда код 45 (вставка в маршрут скрипта).

    Код:
    Game_Character.ROUTE_END               = 0;
    Game_Character.ROUTE_MOVE_DOWN         = 1;
    Game_Character.ROUTE_MOVE_LEFT         = 2;
    Game_Character.ROUTE_MOVE_RIGHT        = 3;
    Game_Character.ROUTE_MOVE_UP           = 4;
    Game_Character.ROUTE_MOVE_LOWER_L      = 5;
    Game_Character.ROUTE_MOVE_LOWER_R      = 6;
    Game_Character.ROUTE_MOVE_UPPER_L      = 7;
    Game_Character.ROUTE_MOVE_UPPER_R      = 8;
    Game_Character.ROUTE_MOVE_RANDOM       = 9;
    Game_Character.ROUTE_MOVE_TOWARD       = 10;
    Game_Character.ROUTE_MOVE_AWAY         = 11;
    Game_Character.ROUTE_MOVE_FORWARD      = 12;
    Game_Character.ROUTE_MOVE_BACKWARD     = 13;
    Game_Character.ROUTE_JUMP              = 14;
    Game_Character.ROUTE_WAIT              = 15;
    Game_Character.ROUTE_TURN_DOWN         = 16;
    Game_Character.ROUTE_TURN_LEFT         = 17;
    Game_Character.ROUTE_TURN_RIGHT        = 18;
    Game_Character.ROUTE_TURN_UP           = 19;
    Game_Character.ROUTE_TURN_90D_R        = 20;
    Game_Character.ROUTE_TURN_90D_L        = 21;
    Game_Character.ROUTE_TURN_180D         = 22;
    Game_Character.ROUTE_TURN_90D_R_L      = 23;
    Game_Character.ROUTE_TURN_RANDOM       = 24;
    Game_Character.ROUTE_TURN_TOWARD       = 25;
    Game_Character.ROUTE_TURN_AWAY         = 26;
    Game_Character.ROUTE_SWITCH_ON         = 27;
    Game_Character.ROUTE_SWITCH_OFF        = 28;
    Game_Character.ROUTE_CHANGE_SPEED      = 29;
    Game_Character.ROUTE_CHANGE_FREQ       = 30;
    Game_Character.ROUTE_WALK_ANIME_ON     = 31;
    Game_Character.ROUTE_WALK_ANIME_OFF    = 32;
    Game_Character.ROUTE_STEP_ANIME_ON     = 33;
    Game_Character.ROUTE_STEP_ANIME_OFF    = 34;
    Game_Character.ROUTE_DIR_FIX_ON        = 35;
    Game_Character.ROUTE_DIR_FIX_OFF       = 36;
    Game_Character.ROUTE_THROUGH_ON        = 37;
    Game_Character.ROUTE_THROUGH_OFF       = 38;
    Game_Character.ROUTE_TRANSPARENT_ON    = 39;
    Game_Character.ROUTE_TRANSPARENT_OFF   = 40;
    Game_Character.ROUTE_CHANGE_IMAGE      = 41;
    Game_Character.ROUTE_CHANGE_OPACITY    = 42;
    Game_Character.ROUTE_CHANGE_BLEND_MODE = 43;
    Game_Character.ROUTE_PLAY_SE           = 44;
    Game_Character.ROUTE_SCRIPT            = 45;
    Функция для движения события к герою до тех пор, пока событие его "не догонит"
    Без поиска пути, в случае препятствия событие тупо стоит. После того, как событие "догонит" игрока, включается лок.переключатель "D".
    Вызов функции (вставлять в маршрут события):

    Код:
    this.ABSYuryolMovePlayer()
    Сама функция

    Код:
    Game_Character.prototype.ABSYuryolMovePlayer = function() {
    	if (this._x == $gamePlayer.x && this._y == $gamePlayer.y) {
    		$gameSelfSwitches.setValue([$gameMap.mapId(), this._eventId, 'D'], true);
    	} else {
    		this.moveTowardCharacter($gamePlayer);
    		this._moveRoute.list.push({code: 45, parameters: ['this.ABSYuryolMovePlayer()']});
    	}
    }
    Возвращает ИД тайла на клетке с координатами x и y на слое z.
    1. Земля расположена на слое 0
    2. Объекты повыше типа гор или травки из вкладки А - слой 1
    3. Интересно, что например тайл с вкладки Б расположен либо на 2, либо на 3 слое.
    - если на клетке один тайл с вкладки Б, то его слой - 3
    - если два тайла с вкладки Б, то тот, который выше имеет слой 3, а который ниже - слой 2.

    Код:
    $gameMap.tileId(x, y, z)
    Возвращает заметку тайлсета БД

    Код:
    $dataTilesets[$dataMap.tilesetId].note
    Возвращает значение тега в заметке тайлсета БД, где tag - нужный тег

    Код:
    $dataTilesets[$dataMap.tilesetId].meta.tag
    При этом сам тег(tag) с его значением (value) должны выглядеть в заметке тайлсета так: <tag:value>

    Возвращает массив значения тега в заметке тайлсета БД, где tag - нужный тег

    Код:
    $dataTilesets[$dataMap.tilesetId].meta.tag.split(' ')
    Нужен в случаях, когда в одном теге необходимо передать несколько значений типа:
    Код:
    <tag:value1 value1 value1>
    Блокировка управления.
    При переводе переключателя в положении false персонаж будет только поворачиваться в нужную сторону но не двигаться

    Код:
    var blockMove = Game_Player.prototype.moveStraight;
    Game_Player.prototype.moveStraight= function(d) {
    	if (this.canPass(this.x, this.y, d)) {
    		this._followers.updateMove();
    	}
    	(blockMove) ? this.setDirection(d) : Game_Character.prototype.moveStraight.call(this, d);
    }
    Очистка переменных
    , где mainArr - массив который надо очистить.
    Бывает необходимость очистить значения переменных или массивов после перехода на другую карту. Для этого мы можем очищать их в данной функции вместо того, чтобы на каждую новую карту вставлять автоматическое событие с очисткой переменных или массивов

    Код:
    var absYuryolTerminate = Scene_Map.prototype.terminate;
    Scene_Map.prototype.terminate = function() {
    	absYuryolTerminate.call(this);
            mainArr= [];
    }
    Удобный "консоль лог"
    До меня только пару месяцев назад дошло, что в мв есть поддержка ES2015 (а с недавнего времени по словам ДК и ES2016, ES2017). А значит можно использовать удобные шаблонные строки с обратными кавычками. Теперь например вместо конкатенации с кучей плюсов и открытий/закрытий кавычек
    Код:
    console.log('Переменная 1 = ' + variables[1] + '. Переменная 2 = ' + variables[2])
    удобнее писать и читабельнее читать:
    Код:
    console.log(`Переменная 1 = ${variables[1]}. Переменная 2 = ${variables[2]}`)

    Изменение параметра события на определенное время (изменение прозрачности, параметра наложения)

    PHP код:
    var paramTime= function(idparamvalue1value2time) {
        
    $gameMap.event(id)[param] = value1;
        
    setTimeout(function() {$gameMap.event(id)[param] = value2;}, time);
    }; 
    Вызов функции например для мигания события с ИД=10 на 70 миллисекунд:

    PHP код:
    paramTime(10'_blendMode'1070); 
    Или например для повышения прозрачности события на столько же миллисекунд:

    PHP код:
    paramTime(10'_opacity'1070); 
    Можно сделать анимацию с задержкой:

    PHP код:
    paramTime(10'_animationId'01700); 
    Можно творить забавные вещи, например при вводе кода ниже событие "пойдет" сначала на клетку с координатами (10,1), а затем (10,3) Главное указать скорость побольше, чтобы событие успело до туда сбегать

    PHP код:
    paramTime(10'_x'1010700);
    paramTime(10'_y'13700); 
    Взяв это на заметку, получаем своего рода простенький плагин "поиска пути" (кривой и без анимации ходьбы)

    PHP код:
    paramTime(10'_x'$gameMap.event(10).x10700);
    paramTime(10'_y'$gameMap.event(10).y3700); 
    Сначала указав событию идти на клетку выше, и буквально через мгновение (70 миллисекунд) приказав ему идти обратно, мы можем эмулировать прыжок на месте:

    PHP код:
    paramTime(10'_x'$gameMap.event(10).x,$gameMap.event(10).x70);
    paramTime(10'_y'$gameMap.event(10).y-1$gameMap.event(10).y70); 
    Вызов плагина для задания маршрута событию,герою:

    PHP код:
    $gameMap.moveEvent(iddirectionamount); 
    , где id - номер события (или 0, если нужен герой), direction - направление, amount - количество повторений (например шагов)

    Сама функция:
    PHP код:
    Game_Map.prototype.moveEvent = function(iddirectionamount) {
        if (
    id) {
            var 
    event this.event(id);
        }else {
            var 
    event $gamePlayer;
        };
        if (!
    event) return;

        var 
    gc Game_Character;
        var 
    route = { list: [] };
        var 
    code;

        switch(
    direction){
            case 
    0:{
                
    code gc.ROUTE_END;
                break;
            }
            case 
    2:{
                
    code gc.ROUTE_MOVE_DOWN;
                break;
            }
            case 
    4:{
                
    code gc.ROUTE_MOVE_LEFT;
                break;
            }
            case 
    6:{
                
    code gc.ROUTE_MOVE_RIGHT;
                break;
            }
            case 
    8:{
                
    code gc.ROUTE_MOVE_UP;
                break;
            }
            case 
    12:{
                
    code gc.ROUTE_MOVE_FORWARD;
                break;
            }
        }
        
        for(var 
    0code && amounti++){
            
    route.list[i] = { codecode };    
        }

        
    route.list[amount] = {codegc.ROUTE_END}; //Yuryol
        
    route.skippable true//Yuryol

        
    event.forceMoveRoute(route);

    }; 
    Возможность события с приоритетом "под персонажем" или "над персонажем" проходить сквозь другое событие.

    Когда еще был на эйсе не очень понимал, почему сделано так, что например событие птица не может пролететь над лошадью.
    Случай с приоритетом "Под персонажем" более понятный: те же двери в таком случае будут пропускать события "под персонажем". Но особой надобности ставить этот приоритет событию не особо вижу, кроме как дать другим событиям проходить над ним.

    Код:
    Game_CharacterBase.prototype.isCollidedWithCharacters = function(x, y) {
        if (this._priorityType==0 || this._priorityType==2) return false;
        return this.isCollidedWithEvents(x, y) || this.isCollidedWithVehicles(x, y);
    };

    Движение события "вперед" по диагонали.

    Как известно, при указания в маршруте события движения "вперед", событие будет двигаться только туда, куда оно направлено. При этом команд "повернуться по-диагонали" нет, хотя движение по-диагонали задать можно.

    Функция ниже исправляет этот недочет. Теперь можно задать событию "поворот по-диагонали" в маршруте движения через скриптовую команду:
    PHP код:
     this.diagonalDirect 1// 1 - поворот вниз-влево,3 - вниз-вправо, 7 - влево-вверх, 9 - вправо-вверх 
    или в другом событии через скриптовую команду:
    PHP код:
    $gameMap.event(id).diagonalDirect 9
    После этого при указании в маршруте "вперед" событие будет двигаться по диагонали

    Сама функция:
    PHP код:
    var YuryolmoveForward Game_Character.prototype.moveForward;
    Game_Character.prototype.moveForward = function() {
        switch (
    this.diagonalDirect) {
            case 
    1:
                
    this.moveDiagonally(42);
                break;
            case 
    3:
                
    this.moveDiagonally(62);
                break;
            case 
    7:
                
    this.moveDiagonally(48);
                break;
            case 
    9:
                
    this.moveDiagonally(68);
                break;
            default:
                
    this.moveStraight(this.direction());
                break;
        }
    }; 
    Добавление чего-либо сразу после загрузки карты

    Бывает, что после загрузки новой карты требуется сделать постоянно одно и тоже. Например, обнулять одни и те же переменные или проверять день или ночь в игре. Вместо того, чтоб на каждую новую карту вставлять автособытие, можно просто всё это добавить в скрипт:

    PHP код:
    var YuryolStart Scene_Map.prototype.start;
    Scene_Map.prototype.start = function() {
        
    YuryolStart.call(this);
        
    //вставляем что хотим:
        
    $gameVariables.setValue(10); //например, обнуляем 1-ую переменную
    }; 
    Последний раз редактировалось Yuryol; 07.10.2018 в 21:47.

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

    По умолчанию

    исправил проверку существования события,
    Код:
    $dataMap.events[id]==null
    Последний раз редактировалось Yuryol; 28.11.2017 в 00:40.

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

    По умолчанию

    В файлике со списком скриптов, ссылку на который я выкладывал в первом посте, есть функция для возвращения ID события на определенной клетке. К сожалению она возвращает только первый найденный ID.Другими словами - ID события с наименьшим ID

    Код:
    $gameMap.eventIdXy(x, y)
    Написал функцию, возвращающий массив с ID всех событий, находящихся на данной клетке. Вызов функции, где 13 -координата клетки по X, 5 - по Y:

    Код:
    SceneManager._scene.eventsTileXY(13,5);
    Сама функция:

    Код:
    Scene_Map.prototype.eventsTileXY = function(x, y) {
      	var eventsXY = $gameMap.eventsXy(x, y);
    	var eventsID = [];
    	for (var i = 0; i < eventsXY.length; i++) {
    		eventsID.push(eventsXY[i]._eventId);
    	}
    	return eventsID;
    }
    Если в мукере есть стандартная функция для этого, или же у кого-то есть вариант проще и красивее - буду рад его увидеть.
    Последний раз редактировалось Yuryol; 29.11.2017 в 23:48.

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

    По умолчанию

    Координаты расположение "экрана" относительно карты (левый верхний угол экрана):

    Код:
    $gameMap.displayX(); 
    $gameMap.displayY()
    Соответственно, для того, чтобы узнать реальные координаты события необходимо прибавить к ним данные координаты экрана:

    Код:
    $gameMap.event(id).x + $gameMap.displayX();
    $gameMap.event(id).y + $gameMap.displayY()
    Показ в консольке текста из события - "сообщений"("message"), "выбора".
    Сообщения выводятся текстом, выбор - массивом.

    Вызов функции:

    Код:
    $gameMap.processEventList(id);
    Сама функция:

    Код:
    Game_Map.prototype.processEventList = function (id) { 
      var eventID = $gameMap.event(id);
      var list = eventID.page().list; 
      for (var i = 0; i < list.length; i++) {
        if (list[i].code === 401 || list[i].code === 102) {
          console.log(list[i].parameters[0]);
        } 
      } 
    }

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

    По умолчанию

    Как оказалось, дополнительные характеристики оружия (в МВ они называются "особенности", а по-английски "features") прописываются не очень интуитивно, а потом небольшая справка, чтоб не забыть.

    Возвращает массив эффектов ("особенностей") оружия:

    Код:
    $dataWeapons[idWeapon].traits
    У каждого эффекта есть три параметра:
    - код параметра (например, "состояние атаки")
    - тип параметра ("01 Нокаут")
    - показатель параметра (обычно в процентах)



    1) Код параметра, где idWeapon - ид оружия, id - номер особенности в массиве особенностей оружия (начинается с нуля, как во всяком массиве)
    Код:
    $dataWeapons[idWeapon].traits[id].code
    Возвращает число, где первая цифра - порядковый номер вкладки с "особенностями", а вторая - порядковый номер особенности в этой вкладке. Например, у "состоянии атаки" вкладка "атака" - третья, а сама особенность вторая в этой вкладке, потому и номер возвратится "32"

    2) Тип параметра
    Код:
    $dataWeapons[idWeapon].traits[id].dataId
    Возвращает порядковый номер типа параметра (начиная с единицы). В примере выше возвратит "1"

    3) Показатель параметра
    Код:
    $dataWeapons[idWeapon].traits[id].value
    Возвращает показатель типа параметра, обычно он в процентах. В примере выше возвратит "100". Не очень удобно, было бы удобнее в виде "1.0" вместо 100% и, например "0.9" вместо 90%.

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

    По умолчанию

    Движение одного события к другому событию.
    В примере 4-ое событие будет двигаться к 10-ому.

    Код:
    $gameMap.event(4).moveTowardCharacter($gameMap.event(10));
    Возврат кол-ва действий в "маршруте" события. Из этого списка следует вычесть единичку, ибо при добавлении действия в маршрут события, следом ВСЕГДА автоматически создается пустое действие.

    Код:
    $gameMap.event($gameVariables.value(id))._moveRoute.list;
    Добавление действия в маршрут события:

    Код:
    $gameMap.event($gameVariables.value(id))._moveRoute.list.push({code: 45, parameters: ['script']});
    , где "code: 45" - код действия из списка ниже. "parameters: ['script']" - нужен только в случае, когда код 45 (вставка в маршрут скрипта).

    Код:
    Game_Character.ROUTE_END               = 0;
    Game_Character.ROUTE_MOVE_DOWN         = 1;
    Game_Character.ROUTE_MOVE_LEFT         = 2;
    Game_Character.ROUTE_MOVE_RIGHT        = 3;
    Game_Character.ROUTE_MOVE_UP           = 4;
    Game_Character.ROUTE_MOVE_LOWER_L      = 5;
    Game_Character.ROUTE_MOVE_LOWER_R      = 6;
    Game_Character.ROUTE_MOVE_UPPER_L      = 7;
    Game_Character.ROUTE_MOVE_UPPER_R      = 8;
    Game_Character.ROUTE_MOVE_RANDOM       = 9;
    Game_Character.ROUTE_MOVE_TOWARD       = 10;
    Game_Character.ROUTE_MOVE_AWAY         = 11;
    Game_Character.ROUTE_MOVE_FORWARD      = 12;
    Game_Character.ROUTE_MOVE_BACKWARD     = 13;
    Game_Character.ROUTE_JUMP              = 14;
    Game_Character.ROUTE_WAIT              = 15;
    Game_Character.ROUTE_TURN_DOWN         = 16;
    Game_Character.ROUTE_TURN_LEFT         = 17;
    Game_Character.ROUTE_TURN_RIGHT        = 18;
    Game_Character.ROUTE_TURN_UP           = 19;
    Game_Character.ROUTE_TURN_90D_R        = 20;
    Game_Character.ROUTE_TURN_90D_L        = 21;
    Game_Character.ROUTE_TURN_180D         = 22;
    Game_Character.ROUTE_TURN_90D_R_L      = 23;
    Game_Character.ROUTE_TURN_RANDOM       = 24;
    Game_Character.ROUTE_TURN_TOWARD       = 25;
    Game_Character.ROUTE_TURN_AWAY         = 26;
    Game_Character.ROUTE_SWITCH_ON         = 27;
    Game_Character.ROUTE_SWITCH_OFF        = 28;
    Game_Character.ROUTE_CHANGE_SPEED      = 29;
    Game_Character.ROUTE_CHANGE_FREQ       = 30;
    Game_Character.ROUTE_WALK_ANIME_ON     = 31;
    Game_Character.ROUTE_WALK_ANIME_OFF    = 32;
    Game_Character.ROUTE_STEP_ANIME_ON     = 33;
    Game_Character.ROUTE_STEP_ANIME_OFF    = 34;
    Game_Character.ROUTE_DIR_FIX_ON        = 35;
    Game_Character.ROUTE_DIR_FIX_OFF       = 36;
    Game_Character.ROUTE_THROUGH_ON        = 37;
    Game_Character.ROUTE_THROUGH_OFF       = 38;
    Game_Character.ROUTE_TRANSPARENT_ON    = 39;
    Game_Character.ROUTE_TRANSPARENT_OFF   = 40;
    Game_Character.ROUTE_CHANGE_IMAGE      = 41;
    Game_Character.ROUTE_CHANGE_OPACITY    = 42;
    Game_Character.ROUTE_CHANGE_BLEND_MODE = 43;
    Game_Character.ROUTE_PLAY_SE           = 44;
    Game_Character.ROUTE_SCRIPT            = 45;
    Функция для движения события к герою до тех пор, пока событие его "не догонит"
    Без поиска пути, в случае препятствия событие тупо стоит. После того, как событие "догонит" игрока, включается лок.переключатель "D".
    Вызов функции (вставлять в маршрут события):

    Код:
    this.ABSYuryolMovePlayer()
    Сама функция

    Код:
    Game_Character.prototype.ABSYuryolMovePlayer = function() {
    	if (this._x == $gamePlayer.x && this._y == $gamePlayer.y) {
    		$gameSelfSwitches.setValue([$gameMap.mapId(), this._eventId, 'D'], true);
    	} else {
    		this.moveTowardCharacter($gamePlayer);
    		this._moveRoute.list.push({code: 45, parameters: ['this.ABSYuryolMovePlayer()']});
    	}
    }
    Последний раз редактировалось Yuryol; 26.08.2018 в 00:06.

  7. #7

    По умолчанию

    Цитата Сообщение от Yuryol Посмотреть сообщение
    [b]возвращает ИД слота Экипировки, где IDslot - ID слота экипировки (0-оружие, 1- щит, 2- голова и т.д.)
    Код:
    $gameParty.leader().equips()[IDslot]
    [/code]
    Вот с этим моментом я не разобрался: функция возвращает мне в качестве переменной [object object], хотя по идее должна бы давать численное ИД взятого в слот предмета.

    P.S. Всё, разобрался, чтобы возвращать ИД, строчка должна быть такой: $gameParty.leader().equips()[IDslot].id
    Последний раз редактировалось Alx_Yago; 14.02.2018 в 00:34.

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

    По умолчанию

    Возвращает ИД тайла на клетке с координатами x и y на слое z.
    1. Земля расположена на слое 0
    2. Объекты повыше типа гор или травки из вкладки А - слой 1
    3. Интересно, что например тайл с вкладки Б расположен либо на 2, либо на 3 слое.
    - если на клетке один тайл с вкладки Б, то его слой - 3
    - если два тайла с вкладки Б, то тот, который выше имеет слой 3, а который ниже - слой 2.

    Код:
    $gameMap.tileId(x, y, z)
    Возвращает заметку тайлсета БД

    Код:
    $dataTilesets[$dataMap.tilesetId].note
    Возвращает значение тега в заметке тайлсета БД, где tag - нужный тег

    Код:
    $dataTilesets[$dataMap.tilesetId].meta.tag
    При этом сам тег(tag) с его значением (value) должны выглядеть в заметке тайлсета так: <tag:value>

    Возвращает массив значения тега в заметке тайлсета БД, где tag - нужный тег

    Код:
    $dataTilesets[$dataMap.tilesetId].meta.tag.split(' ')
    Нужен в случаях, когда в одном теге необходимо передать несколько значений типа:
    Код:
    <tag:value1 value1 value1>

    Цитата Сообщение от Alx_Yago Посмотреть сообщение
    Вот с этим моментом я не разобрался: функция возвращает мне в качестве переменной [object object], хотя по идее должна бы давать численное ИД взятого в слот предмета.
    P.S. Всё, разобрался, чтобы возвращать ИД, строчка должна быть такой: $gameParty.leader().equips()[IDslot].id
    спасибо! проглядел. и сам пост тоже проглядел

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

    По умолчанию

    Блокировка управления.
    При переводе переключателя в положении false персонаж будет только поворачиваться в нужную сторону но не двигаться

    Код:
    var blockMove = Game_Player.prototype.moveStraight;
    Game_Player.prototype.moveStraight= function(d) {
    	if (this.canPass(this.x, this.y, d)) {
    		this._followers.updateMove();
    	}
    	(blockMove) ? this.setDirection(d) : Game_Character.prototype.moveStraight.call(this, d);
    }
    Очистка переменных
    , где mainArr - массив который надо очистить.
    Бывает необходимость очистить значения переменных или массивов после перехода на другую карту. Для этого мы можем очищать их в данной функции вместо того, чтобы на каждую новую карту вставлять автоматическое событие с очисткой переменных или массивов

    Код:
    var absYuryolTerminate = Scene_Map.prototype.terminate;
    Scene_Map.prototype.terminate = function() {
    	absYuryolTerminate.call(this);
            mainArr= [];
    }
    Удобный "консоль лог"
    До меня только пару месяцев назад дошло, что в мв есть поддержка ES2015 (а с недавнего времени по словам ДК и ES2016, ES2017). А значит можно использовать удобные шаблонные строки с обратными кавычками. Теперь например вместо конкатенации с кучей плюсов и открытий/закрытий кавычек
    Код:
    console.log('Переменная 1 = ' + variables[1] + '. Переменная 2 = ' + variables[2])
    удобнее писать и читабельнее читать:
    Код:
    console.log(`Переменная 1 = ${variables[1]}. Переменная 2 = ${variables[2]}`)

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

    По умолчанию

    Изменение параметра события на определенное время (изменение прозрачности, параметра наложения)

    PHP код:
    var paramTime= function(idparamvalue1value2time) {
        
    $gameMap.event(id)[param] = value1;
        
    setTimeout(function() {$gameMap.event(id)[param] = value2;}, time);
    }; 
    Вызов функции например для мигания события с ИД=10 на 70 миллисекунд:

    PHP код:
    paramTime(10'_blendMode'1070); 
    Или например для повышения прозрачности события на столько же миллисекунд:

    PHP код:
    paramTime(10'_opacity'1070); 
    Можно сделать анимацию с задержкой:

    PHP код:
    paramTime(10'_animationId'01700); 
    Можно творить забавные вещи, например при вводе кода ниже событие "пойдет" сначала на клетку с координатами (10,1), а затем (10,3) Главное указать скорость побольше, чтобы событие успело до туда сбегать

    PHP код:
    paramTime(10'_x'1010700);
    paramTime(10'_y'13700); 
    Взяв это на заметку, получаем своего рода простенький плагин "поиска пути" (кривой и без анимации ходьбы)

    PHP код:
    paramTime(10'_x'$gameMap.event(10).x10700);
    paramTime(10'_y'$gameMap.event(10).y3700); 
    Сначала указав событию идти на клетку выше, и буквально через мгновение (70 миллисекунд) приказав ему идти обратно, мы можем эмулировать прыжок на месте:

    PHP код:
    paramTime(10'_x'$gameMap.event(10).x,$gameMap.event(10).x70);
    paramTime(10'_y'$gameMap.event(10).y-1$gameMap.event(10).y70); 

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

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

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

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

Ваши права

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