江湖梦网游戏服务平台

 找回密码
 免费注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: Fanzi

[原创发布] 常用的一些全局变量操作与判断脚本

[复制链接]

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-1-21 10:23 | 显示全部楼层
记录一个调出输入窗口并判断输入内容执行事件内容的设置:
1.脚本指令:
var input = prompt("请输入指令:", "");
$gameVariables.setValue(id,input); // id 是系统变量号
2.条件分歧的脚本:
$gameVariables.value(id)=='什么';
条件分歧内容可用事件指令自由编写,范例如下图:
捕获.JPG
运行效果如下:
捕获1.JPG
捕获2.JPG


9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-1-25 09:26 | 显示全部楼层
重新记录,清空背包所有东西的脚本:

$gameParty.initAllItems();

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-1-28 15:59 | 显示全部楼层
转载一下判断碰撞的脚本,以备后用:
//判断角色和角色是否碰撞
Game_CharacterBase.prototype.isCollidedWithCharacters = function(x, y) {
     return this.isCollidedWithEvents(x, y) || this.isCollidedWithVehicles(x, y);
};

//判断角色和事件是否碰撞
Game_CharacterBase.prototype.isCollidedWithEvents = function(x, y) {
      var events = $gameMap.eventsXyNt(x, y);
      return events.some(function(event) {
....
  };

//判断事件和事件是否碰撞
Game_Event.prototype.isCollidedWithEvents = function(x, y) {

//判断某一图块是否可通行
Game_CharacterBase.prototype.isMapPassable = function(x, y, d) {
    var x2 = $gameMap.roundXWithDirection(x, d);
    var y2 = $gameMap.roundYWithDirection(y, d);
    var d2 = this.reverseDir(d);
    return $gameMap.isPassable(x, y, d) && $gameMap.isPassable(x2, y2, d2);
};

跟角色有关的,用$gamePlayer直接调用。
如 $gamePlayer.isCollidedWithEvents(x,y)
跟事件有关的要先得到事件,用事件调用。
如:$gameMap.event(eventID).isCollidedWithEvents(x,y)
或:$gameMap.eventIdXy(x, y).isCollidedWithEvents(x,y)

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-1-28 16:01 | 显示全部楼层
再转载一下事件执行脚本内容:
1. 在NPC自主移动时,想要让他「显示气球图示」,但在设定移动路线中并没有气球图示这个选项时该怎么办?
这时候可以在脚本输入下列指令,就可以在非剧本的事件中,让事件自动显示图片了
var e =$gameMap.event(this._eventId);e.requestBalloon(1);

2.当只想执行某个事件中特定页面的功能该怎么办?
这时候只要在脚本中输入下面的code , 就会执行特定事件的某一页事件内容(事件条件要符合才会执行)
$gameMap.event(EventID, EventPage).start();

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-2-25 22:01 | 显示全部楼层
前面发了清除背包全部物品的脚本,见太多人想要分别清除单个类型的物品,
特发出来记录一下:
要分别清除单种类型得自定义方法:
Game_Party.prototype.initOnlyItems = function() {
    this._items = {};
};
Game_Party.prototype.initOnlyWeapons = function() {
    this._weapons = {};
};
Game_Party.prototype.initOnlyArmors = function() {
    this._armors = {};
};
然后分别执行:
$gameParty.initOnlyItems();
$gameParty.initOnlyWeapons();
$gameParty.initOnlyArmors();

4

帖子

0

精华

0

贡献

新手上路

Rank: 1

积分
33
发表于 2019-3-1 12:25 | 显示全部楼层
求问有没有能改插件参数的脚本……好像在视频里看到过但是当时没记下来,是$gameSystem.set什么什么的……

点评

ok。我再多研究一下。谢谢了!  发表于 2019-3-1 14:21
你看到的应该是插件作者自定义的写在系统对象里的方法,一般都是作者用来开关插件功能用的,MV默认不会有这样的功能。  发表于 2019-3-1 13:42
MV默认脚本中$gameSystem对象下设有 4 个 set 开头的方法:setDefeatMe(value);setVictoryMe(value);setBattleBgm(value);setWindowTone(value);应该是音量相关。  发表于 2019-3-1 13:41

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-3-14 09:34 | 显示全部楼层
地图上随机显示动画:
操作一个变量等于随机数(动画ID范围内),指定事件显示:
$gameMap.event(事件ID).requestAnimation($gameVariables.value(变量id));
指定角色显示:
$gamePlayer.requestAnimation($gameVariables.value(id));
随机事件显示得操作另一个变量等于随机数(事件ID范围内):
$gameMap.event($gameVariables.value(另一个变量id)).requestAnimation($gameVariables.value(变量id));

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-3-18 14:03 | 显示全部楼层
获取鼠标点击的地方相对于地图的图块坐标的方法,
可用于获取鼠标坐标来设置事件位置。

先用事件指令执行脚本,这是方法定义:

Game_Map.prototype.mouseToMapX = function(x) {
    var tileWidth = this.tileWidth();
    var originX = this._displayX * tileWidth;
    var mapX = Math.floor((originX + x) / tileWidth);
    return mapX;
};
Game_Map.prototype.mouseToMapY = function(y) {
    var tileHeight = this.tileHeight();
    var originY = this._displayY * tileHeight;
    var mapY = Math.floor((originY + y) / tileHeight);
    return mapY;
};
再用操作变量代入脚本,这是方法调用:
$gameMap.mouseToMapX(TouchInput.x);
$gameMap.mouseToMapY(TouchInput.y);
事件写法示例:
QQ图片20190318135345.png

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-3-26 23:18 | 显示全部楼层
脚本打开某个队员技能界面的方法:
$gameParty.setMenuActor($gameParty.members()[index]);
//index为队伍序列,从 0 开始排起
SceneManager.push(Scene_Skill);
//括号里面可填:Scene_Skill、Scene_Equip、Scene_Status 等

9575

帖子

13

精华

124

贡献

管理员

狮子王

Rank: 13Rank: 13Rank: 13

积分
102822

突出贡献荣誉管理论坛元老

QQ
发表于 2019-4-2 22:50 | 显示全部楼层
行走时动画开关:
$gamePlayer.setWalkAnime(true);
踏步时动画开关:
$gamePlayer.setStepAnime(false);
括符里填 true 是开,填 false 是关。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|手机版|Archiver|小黑屋|江湖梦网 ( 粤ICP备18126133号-1 )

GMT+8, 2024-4-20 23:54 , Processed in 0.281291 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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