设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2592|回复: 2
打印 上一主题 下一主题

[已经解决] 【脚本新手求助】写了一段代码不懂怎么用。。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
68 小时
注册时间
2014-7-8
帖子
50
跳转到指定楼层
1
发表于 2016-3-14 21:44:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 Stolf 于 2016-3-14 23:03 编辑
  1. var arr = new Array();
  2. for(var i = 0; i < 100; i++) {
  3.         arr[i] = new Array();
  4. }
  5. var Width = $gameVariables.value(1);
  6. var Height = $gameVariables.value(2);
  7. var dir[8][2] = [[0, 1], [1, 0], [-1, 0], [0, -1], [1, 1], [1, -1], [-1, 1], [-1, -1]];
  8. for (var i = 0; i < Width; i++) {
  9.         for (var j = 0; j < Height; j++) {
  10.                 var sumA = 0; var sumB = 0;
  11.                 for (var k = 0; k < 8; k++) {
  12.                         var tX = i + dir[i][0]; var tY = j + dir[i][1];
  13.                         if (tX >= 0 && tX < Width && tY >= 0 && tY < Height) {
  14.                                 var e = $gameMap.eventIdXy(i, j); var m = $gameMap.mapId();
  15.                                 if ($gameSelfSwitches.value([m, e, 'A'])) {sumA++;}
  16.                                 else if ($gameSelfSwitches.value([m, e, 'B'])) {sumB++;}
  17.                         }
  18.                 }
  19.                 var sum = sumA + sumB;
  20.                 if (sum == 3) {
  21.                         if (sumA >= 2) {
  22.                                 arr[i][j] = 1; // Black+
  23.                         } else {
  24.                                 arr[i][j] = 2; // Red+
  25.                         }
  26.                 } else {
  27.                         if (sum == 2) {
  28.                                 arr[i][j] = 3; // +-
  29.                         } else {
  30.                                 arr[i][j] = 0; // -
  31.                         }
  32.                 }
  33.         }
  34. }
  35. for (var i = 0; i < Width; i++) {
  36.         for (var j = 0; j < Height; j++) {
  37.                 var e = $gameMap.eventIdXy(i, j);
  38.                 var m = $gameMap.mapId();
  39.                 if (arr[x][y] == 0) {
  40.                         $gameSelfSwitches.setValue([m, e, 'A'], false);
  41.                         $gameSelfSwitches.setValue([m, e, 'B'], false);
  42.                 } else if (arr[x][y] == 1) {
  43.                         if ($gameSelfSwitches.Value([m, e, 'B']) == false) {
  44.                                 $gameSelfSwitches.setValue([m, e, 'A'], true);
  45.                         }
  46.                 } else if (arr[x][y] == 2) {
  47.                                 if ($gameSelfSwitches.Value([m, e, 'A']) == false) {
  48.                                         $gameSelfSwitches.setValue([m, e, 'B'], true);
  49.                                 }
  50.         }
  51.         }
  52. }
复制代码
我是想像公用事件一样使用这段代码。。。然而直接用事件选项里的插入脚本会报错。。还不知道错哪。。而且长度也有限制。。
所以如果要改写成插件的模式要怎么办?
谢谢!( ̄︶ ̄)!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
68 小时
注册时间
2014-7-8
帖子
50
3
 楼主| 发表于 2016-3-15 06:34:34 | 只看该作者
andrewx 发表于 2016-3-15 02:05
保存为js插件并打开。在事件里执行插件指令,输入你的插件指令名。


谢谢!我还想请教一下,怎么样才能像编译器一样定位到发生错误的具体代码行数?
比如游戏报错出Type Error : Cannot read property '0' of undefined
完全不懂错哪了。。
  1. var foobar20160315 = Game_Interpreter.prototype.pluginCommand;
  2. Game_Interpreter.prototype.pluginCommand = function (command, args)
  3. {
  4.     foobar20160315.call(this, command, args);
  5.     if (command.toUpperCase() === 'CALLMYFUNC')
  6.     {
  7.         var arr = new Array();
  8.         for (var i = 0; i < 100; i++)
  9.         {
  10.             arr[i] = new Array();
  11.                         for (var j = 0; j < 100; j++)
  12.                         {
  13.                                 arr[i][j] = "";
  14.                         }
  15.         }
  16.                 var dir = new Array();
  17.         for (var i = 0; i < 8; i++)
  18.         {
  19.             dir[i] = new Array();
  20.                         for (var j = 0; j < 2; j++)
  21.                         {
  22.                                 dir[i][j] = "";
  23.                         }
  24.         }
  25.         var Width = $gameVariables.value(1);
  26.         var Height = $gameVariables.value(2);
  27.         dir = [[0, 1], [1, 0], [-1, 0], [0, -1], [1, 1], [1, -1], [-1, 1], [-1, -1]];
  28.         for (var i = 0; i < Width; i++)
  29.         {
  30.             for (var j = 0; j < Height; j++)
  31.             {
  32.                 var sumA = 0;
  33.                 var sumB = 0;
  34.                 for (var k = 0; k < 8; k++)
  35.                 {
  36.                     var tX = i + dir[i][0];
  37.                     var tY = j + dir[i][1];
  38.                     if (tX >= 0 && tX < Width && tY >= 0 && tY < Height)
  39.                     {
  40.                         var e = $gameMap.eventIdXy(i, j);
  41.                         var m = $gameMap.mapId();
  42.                         if ($gameSelfSwitches.value([m, e, 'A']))
  43.                         {
  44.                             sumA++;
  45.                         }
  46.                         else if ($gameSelfSwitches.value([m, e, 'B']))
  47.                         {
  48.                             sumB++;
  49.                         }
  50.                     }
  51.                 }
  52.                 var sum = sumA + sumB;
  53.                 if (sum == 3)
  54.                 {
  55.                     if (sumA >= 2)
  56.                     {
  57.                         arr[i][j] = 1; // Black+
  58.                     }
  59.                     else
  60.                     {
  61.                         arr[i][j] = 2; // Red+
  62.                     }
  63.                 }
  64.                 else
  65.                 {
  66.                     if (sum == 2)
  67.                     {
  68.                         arr[i][j] = 3; // +-
  69.                     }
  70.                     else
  71.                     {
  72.                         arr[i][j] = 0; // -
  73.                     }
  74.                 }
  75.             }
  76.         }
  77.         for (var i = 0; i < Width; i++)
  78.         {
  79.             for (var j = 0; j < Height; j++)
  80.             {
  81.                 var e = $gameMap.eventIdXy(i, j);
  82.                 var m = $gameMap.mapId();
  83.                 if (arr[x][y] == 0)
  84.                 {
  85.                     $gameSelfSwitches.setValue([m, e, 'A'], false);
  86.                     $gameSelfSwitches.setValue([m, e, 'B'], false);
  87.                 }
  88.                 else if (arr[x][y] == 1)
  89.                 {
  90.                     if ($gameSelfSwitches.Value([m, e, 'B']) == false)
  91.                     {
  92.                         $gameSelfSwitches.setValue([m, e, 'A'], true);
  93.                     }
  94.                 }
  95.                 else if (arr[x][y] == 2)
  96.                 {
  97.                     if ($gameSelfSwitches.Value([m, e, 'A']) == false)
  98.                     {
  99.                         $gameSelfSwitches.setValue([m, e, 'B'], true);
  100.                     }
  101.                 }
  102.             }
  103.         }
  104.     }
  105. };
复制代码

点评

非常感谢!!!  发表于 2016-3-15 12:13
说起来 , new Array() 直接用 [] 就好  发表于 2016-3-15 10:31
f8正解  发表于 2016-3-15 09:27
f8?  发表于 2016-3-15 08:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
388 小时
注册时间
2009-8-4
帖子
219
2
发表于 2016-3-15 02:05:38 | 只看该作者
  1. var foobar20160315 = Game_Interpreter.prototype.pluginCommand;
  2. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  3.     foobar20160315.call(this, command, args);
  4.     if (command.toUpperCase() === 'SOMECODE') {     //引号内改成你的插件指令名,全大写
  5.         //你的代码写在这
  6.     }
  7. };
复制代码
保存为js插件并打开。在事件里执行插件指令,输入你的插件指令名。

评分

参与人数 1星屑 +166 收起 理由
余烬之中 + 166 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-23 23:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表