Плохо! Плохо!:  0
Показано с 1 по 7 из 7

Тема: Как сделать онулированье экипировки, после смерти? Mz

  1. #1
    Бывалый Аватар для ВесёлыйРоджер
    Информация о пользователе
    Регистрация
    25.03.2017
    Адрес
    Украина
    Сообщений
    759
    Записей в дневнике
    9
    Репутация: 23 Добавить или отнять репутацию

    По умолчанию Как сделать онулированье экипировки, после смерти? Mz

    Нужно сделать так, что б после смерти экипировка удалялась у конкретного персонажа, а желательно что б персонаж полностью анулировался и скилы удалились и уровень до нуля падал (хотя это вроде и ивентами можно сделать, главное удалить экипировку)

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

    По умолчанию

    Такие вопросы уже несколько раз поднимались.
    Поэтому я склепал плагин.
    Сохрани код под спойлеров в файл "DKR.IQOL" с расширением .js (полное название+расширение файла должно быть: "DKR.IQOL.js" без кавычек).

    Спойлер Код:

    Код:
    var Imported = Imported || {};
    Imported.DKR_IQOL = true;
    var DKR = DKR || {};          
    DKR.IQOL = DKR.IQOL || {}; 
    DKR.IQOL.version = 1.0;
    (() => {
    //----DATA:
    	const FOR_ITEMS_SAVE_VAR_ID = 7;
    	const FOR_WEAPONS_SAVE_VAR_ID = 8;
    	const FOR_ARMORS_SAVE_VAR_ID = 9;
    //----LOGIC:
    	const processClearItems = () => {
    		$gameParty._items = {};
    	}
    	const processClearWeapons = () => {
    		$gameParty._armors = {};
    	}
    	const processClearArmors = () => {
    		$gameParty._weapons = {};
    	}
    	const processSaveItems = () => {
    		let items = $gameParty._items;
    		let itemsList = Object.keys(items).map((key) => [Number(key), items[key]]);
    		$gameVariables.setValue(FOR_ITEMS_SAVE_VAR_ID, itemsList);
    	}
    	const processSaveWeapons = () => {
    		let weapons = $gameParty._weapons;
    		let weaponsList = Object.keys(weapons).map((key) => [Number(key), weapons[key]]);
    		$gameVariables.setValue(FOR_WEAPONS_SAVE_VAR_ID, weaponsList);
    	}
    	const processSaveArmors = () => {
    		let armors = $gameParty._armors;
    		let armorsList = Object.keys(armors).map((key) => [Number(key), armors[key]]);
    		$gameVariables.setValue(FOR_ARMORS_SAVE_VAR_ID, armorsList);
    	}
    	const processRecoverItems = () => {
    		let itemsList = $gameVariables.value(FOR_ITEMS_SAVE_VAR_ID);
    		if(0 !== itemsList && itemsList.length > 0){
    			itemsList.forEach(data => $gameParty.gainItem($dataItems[data[0]], data[1]));
    		}else{
    			console.log('DKR.IQOL_ERROR: no items to recover!');
    		}
    		
    	}
    	const processRecoverWeapons = () => {
    		let weaponsList = $gameVariables.value(FOR_WEAPONS_SAVE_VAR_ID);
    		if(0 !== weaponsList && weaponsList.length > 0){
    			weaponsList.forEach(data => $gameParty.gainItem($dataWeapons[data[0]], data[1]));
    		}else{
    			console.log('DKR.IQOL_ERROR: no weapons to recover!');
    		}
    	}
    	const processRecoverArmors = () => {
    		let armorsList = $gameVariables.value(FOR_ARMORS_SAVE_VAR_ID);
    		if(0 !== armorsList && armorsList.length > 0){
    			armorsList.forEach(data => $gameParty.gainItem($dataArmors[data[0]], data[1]));
    		}else{
    			console.log('DKR.IQOL_ERROR: no armors to recover!');
    		}
    	}
    //----COMMANDS:	
    	DKR.IQOL.clearItems = function(){
    		processClearItems();
    	}
    	DKR.IQOL.clearWeapons = function(){
    		processClearWeapons();
    	}
    	DKR.IQOL.clearArmors = function(){
    		processClearArmors();
    	}
    	DKR.IQOL.clearAllInventory = function(){
    		processClearItems();
    		processClearWeapons();
    		processClearArmors();
    	}
    	DKR.IQOL.saveItems = function(){
    		processSaveItems();
    	}
    	DKR.IQOL.saveWeapons = function(){
    		processSaveWeapons();
    	}
    	DKR.IQOL.saveArmors = function(){
    		processSaveArmors();
    	}
    	DKR.IQOL.saveAllInventory = function(){
    		processSaveItems();
    		processSaveWeapons();
    		processSaveArmors();
    	}
    	DKR.IQOL.recoverItems = function(){
    		processRecoverItems();
    	}
    	DKR.IQOL.recoverWeapons = function(){
    		processRecoverWeapons();
    	}
    	DKR.IQOL.recoverArmors = function(){
    		processRecoverArmors();
    	}
    	DKR.IQOL.recoverAllInventory = function(){
    		processRecoverItems();
    		processRecoverWeapons();
    		processRecoverArmors();
    	}
    })();


    Там где " VAR_ID = " меняешь в коде ручками числа на номера переменных. Одна для хранения Предметов, вторая для Оружия, третья для Брони.

    Команды плагина для вызова в "Скрипт":
    DKR.IQOL.clearItems(); // - забрать все Предметы.
    DKR.IQOL.clearWeapons(); // - забрать все Оружие.
    DKR.IQOL.clearArmors(); // - забрать всю Броню.
    DKR.IQOL.clearAllInventory(); // - забрать вообще ВСЕ.
    DKR.IQOL.saveItems(); // - сохранить в переменной все Предметы.
    DKR.IQOL.saveWeapons(); // - сохранить в переменной все Оружие.
    DKR.IQOL.saveArmors(); // - сохранить в переменной всю Броню.
    DKR.IQOL.saveAllInventory(); // - сохранить в переменных вообще ВСЕ.
    DKR.IQOL.recoverItems (); // - восстановить и дать из переменной все Предметы.
    DKR.IQOL.recoverWeapons(); // - восстановить и дать из переменной все Оружие.
    DKR.IQOL.recoverArmors(); // - восстановить и дать из переменной всю Броню.
    DKR.IQOL.recoverAllInventory(); // - восстановить и дать из переменных вообще Все.

    ...писать без "// - ...", оно для пояснения.
    Написанные переменные в процессе игры не изменяй.
    Если что, сохранять в переменной нужно ДО ТОГО, как забрать.

    P.S:
    Для MZ.

  3. #3
    Бывалый Аватар для ВесёлыйРоджер
    Информация о пользователе
    Регистрация
    25.03.2017
    Адрес
    Украина
    Сообщений
    759
    Записей в дневнике
    9
    Репутация: 23 Добавить или отнять репутацию

    По умолчанию

    Пасибо

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

    По умолчанию

    Сорян, я закрутился и как-то по диагонали прочитал, что тебе нужно.

    Если нужно, чтоб персонаж "обнулялся" - уровень, отбиралась надетая экипировка и стирались скилы - то нужно удалять его из партии и добавлять с пометкой "Сброс".

    Сам плагин, что я писал выше - он забирает только все, что в инвентаре, то есть не экипировано(!).

  5. #5
    Бывалый Аватар для ВесёлыйРоджер
    Информация о пользователе
    Регистрация
    25.03.2017
    Адрес
    Украина
    Сообщений
    759
    Записей в дневнике
    9
    Репутация: 23 Добавить или отнять репутацию

    По умолчанию

    А, так это даже проще чем я думал, спасибо

  6. #6
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Надо было в теме общие вопросы писать.

  7. #7
    Администратор Аватар для Пётр
    Информация о пользователе
    Регистрация
    24.04.2014
    Адрес
    Краснодар
    Сообщений
    3,940
    Записей в дневнике
    6
    Репутация: 132 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Рольф Посмотреть сообщение
    Надо было в теме общие вопросы писать.
    В Общих вопросах никто и никогда другой кроме спрашивающего не найдёт ответ на свой вопрос.
    Я вообще не очень понимаю эту нашу традицию сваливать все вопросы в одну кучу. Не зависимо от сложности.

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Как сделать онулированье экипировки, после смерти? Mz