| 1楼的要求也太含糊了。这兼容能写死人啊。 给楼主个参考吧,如果楼主对脚本不陌生,就自己优化吧。
 
 
 //                MV_RANDOM_SHOP.js //        商店展示的最大商品项目数,有机会少于该数目,暂定为 6个Game_Interpreter.prototype._maxCommodityItems = 6;         // 开关编号,拟定该编号的开关状态为:是否启用随机商店。暂定为 1号开关SwitchNumber = 1;         /*======================================================================        ◆        商店处理======================================================================*/ // Shop ProcessingGame_Interpreter.prototype.command302 = function() {    if (!$gameParty.inBattle()) {        var goods = [this._params];        while (this.nextEventCode() === 605) {            this._index++;            goods.push(this.currentCommand().parameters);        }                if($gameSwitches.value(SwitchNumber)){                // <<< 插入代码                        goods = this.classificationProcessing(this._params[4]);                // <<< 插入代码                }        // <<< 插入代码        SceneManager.push(Scene_Shop);        SceneManager.prepareNextScene(goods, this._params[4]);    }    return true;}; /*======================================================================        ◆        分类处理======================================================================*/Game_Interpreter.prototype.classificationProcessing = function(param){        var s = [0, 0, 0, 0];        var R = Math.randomInt;        s[0] = this._maxCommodityItems;        s[4] =         $dataItems.length + $dataWeapons.length        + $dataArmors.length - 3;        s[0] = s[0] > s[4]? s[4] : s[0];        s[1] = R(s[0]);        s[4] = $dataItems.length - 1;        s[1] = s[1] > s[4]? s[4] : s[1];        s[2] = s[1] > 0? R(s[0] - s[1]) : R(s[0]);        s[4] = $dataWeapons.length -1;        s[2] = s[2] > s[4]? s[4] : s[2];        s[4] = s[1] + s[2];        s[3] = s[4] > 0? s[0] - s[4] : s[0];        s[4] = $dataArmors.length -1;        s[3] = s[3] > s[4]? s[4] : s[3];         /*------------------------------------------------------------------------*/        var y = [null, [], [], []];        var goods = [];        var temp = [null, $dataItems, $dataWeapons, $dataArmors];        for(var i = 1; i < 4; i++){                temp[i].forEach(function(t, index){y[i].push(index)});                var x = 0;                while(x < s[i]){                        x++;                        var n = y[i].length - 1;                        var v = Math.randomInt(n) + 1;                        var tempGoods = [ i - 1, 0, 0, 0];                        tempGoods[1] = y[i][v];                        goods.push(tempGoods);                        y[i].splice(v, 1);                }        }        if(!goods.length) goods = [0, 0, 0, 0, param];        goods[0][4] = param;         /*------------------------------------------------------------------------*/        return goods;};
//                MV_RANDOM_SHOP.js 
  
//        商店展示的最大商品项目数,有机会少于该数目,暂定为 6个 
Game_Interpreter.prototype._maxCommodityItems = 6;         
  
// 开关编号,拟定该编号的开关状态为:是否启用随机商店。暂定为 1号开关 
SwitchNumber = 1;         
  
/* 
====================================================================== 
        ◆        商店处理 
====================================================================== 
*/ 
  
// Shop Processing 
Game_Interpreter.prototype.command302 = function() { 
    if (!$gameParty.inBattle()) { 
        var goods = [this._params]; 
        while (this.nextEventCode() === 605) { 
            this._index++; 
            goods.push(this.currentCommand().parameters); 
        } 
                if($gameSwitches.value(SwitchNumber)){                // <<< 插入代码 
                        goods = this.classificationProcessing(this._params[4]);                // <<< 插入代码 
                }        // <<< 插入代码 
        SceneManager.push(Scene_Shop); 
        SceneManager.prepareNextScene(goods, this._params[4]); 
    } 
    return true; 
}; 
  
/* 
====================================================================== 
        ◆        分类处理 
====================================================================== 
*/ 
Game_Interpreter.prototype.classificationProcessing = function(param){ 
        var s = [0, 0, 0, 0]; 
        var R = Math.randomInt; 
        s[0] = this._maxCommodityItems; 
        s[4] =         $dataItems.length + $dataWeapons.length        + $dataArmors.length - 3; 
        s[0] = s[0] > s[4]? s[4] : s[0]; 
        s[1] = R(s[0]); 
        s[4] = $dataItems.length - 1; 
        s[1] = s[1] > s[4]? s[4] : s[1]; 
        s[2] = s[1] > 0? R(s[0] - s[1]) : R(s[0]); 
        s[4] = $dataWeapons.length -1; 
        s[2] = s[2] > s[4]? s[4] : s[2]; 
        s[4] = s[1] + s[2]; 
        s[3] = s[4] > 0? s[0] - s[4] : s[0]; 
        s[4] = $dataArmors.length -1; 
        s[3] = s[3] > s[4]? s[4] : s[3]; 
  
        /*------------------------------------------------------------------------*/ 
        var y = [null, [], [], []]; 
        var goods = []; 
        var temp = [null, $dataItems, $dataWeapons, $dataArmors]; 
        for(var i = 1; i < 4; i++){ 
                temp[i].forEach(function(t, index){y[i].push(index)}); 
                var x = 0; 
                while(x < s[i]){ 
                        x++; 
                        var n = y[i].length - 1; 
                        var v = Math.randomInt(n) + 1; 
                        var tempGoods = [ i - 1, 0, 0, 0]; 
                        tempGoods[1] = y[i][v]; 
                        goods.push(tempGoods); 
                        y[i].splice(v, 1); 
                } 
        } 
        if(!goods.length) goods = [0, 0, 0, 0, param]; 
        goods[0][4] = param; 
  
        /*------------------------------------------------------------------------*/ 
        return goods; 
}; 
 
   
   |