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

Project1

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

[有事请教] 请问可以用脚本调用插件指令吗?

[复制链接]

Lv2.观梦者

梦石
0
星屑
597
在线时间
283 小时
注册时间
2011-8-31
帖子
101
跳转到指定楼层
1
发表于 2023-2-6 00:24:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
比如插件定义了一个命令:

插件指令:>多线程 : 串行执行 : 公共事件[1]

我不想用系统的“插件指令栏”来输入这个指令,想要在脚本里输入这个指令,可行不?

最佳答案

查看完整内容

看了下,它这个重要的参数是1,3,5 其中0,2,4是没用的。。 $gameMap._interpreter.pluginCommand('>地图永久漂浮文字',[':','漂浮文字[120]',':','修改内容文本',':','文本[12122121]'])[/pre] 如果是文本的话 还可以加空格,试了下 $gameMap._interpreter.pluginCommand('>地图永久漂浮文字',[':','漂浮文字[120]',':','修改内容文本',':','文本[12122121',']'])[/pre] 这个的结果是 12122121空格 多一个空格,再多一个空格,就 ...

Lv2.观梦者

梦石
0
星屑
742
在线时间
55 小时
注册时间
2017-8-8
帖子
34
2
发表于 2023-2-6 00:24:52 | 只看该作者
本帖最后由 天一教主 于 2023-2-6 22:17 编辑
pandeng421 发表于 2023-2-6 19:49
这个貌似不行啊,我试了个可以看到结果的命令:

>地图永久漂浮文字 : 漂浮文字[1] : 修改内容文本 : 文 ...


看了下,它这个重要的参数是1,3,5 其中0,2,4是没用的。。
JAVASCRIPT 代码复制
  1. $gameMap._interpreter.pluginCommand('>地图永久漂浮文字',[':','漂浮文字[120]',':','修改内容文本',':','文本[12122121]'])

如果是文本的话 还可以加空格,试了下
JAVASCRIPT 代码复制
  1. $gameMap._interpreter.pluginCommand('>地图永久漂浮文字',[':','漂浮文字[120]',':','修改内容文本',':','文本[12122121',']'])

这个的结果是 12122121空格 多一个空格,再多一个空格,就在'[文本12',']'中加' '就行了

直接执行的脚本应该是这个
JAVASCRIPT 代码复制
  1. $gameSystem._drill_GFPT_dataTank[120]['context'] = '12122121';
  2.                         $gameTemp._drill_GFPT_windowTank[120].drill_refreshMessageFromData();

回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
742
在线时间
55 小时
注册时间
2017-8-8
帖子
34
3
发表于 2023-2-6 08:20:35 | 只看该作者
本帖最后由 天一教主 于 2023-2-6 08:23 编辑

$gameMap._interpreter.pluginCommand('命令',['参数组(要一个数组)'])

$gameMap._interpreter.pluginCommand('>多线程',['串行执行','公共事件[1]'])
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19280
在线时间
2307 小时
注册时间
2015-7-4
帖子
937
4
发表于 2023-2-6 08:59:36 | 只看该作者
插件指令本来就是调用脚本的,只要进插件文件去找插件指令字符串,你就能找到所对应的调用的脚本。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
597
在线时间
283 小时
注册时间
2011-8-31
帖子
101
5
 楼主| 发表于 2023-2-6 19:49:30 | 只看该作者
天一教主 发表于 2023-2-6 08:20
$gameMap._interpreter.pluginCommand('命令',['参数组(要一个数组)'])

$gameMap._interpreter.pluginCo ...

这个貌似不行啊,我试了个可以看到结果的命令:

>地图永久漂浮文字 : 漂浮文字[1] : 修改内容文本 : 文本[这是一段文字]
改成:
$gameMap._interpreter.pluginCommand('>地图永久漂浮文字',['漂浮文字[120]','修改内容文本','文本[12122121]']) 是不行的。

我看了下插件源码,改了下:
$gameMap._interpreter.pluginCommand(">地图永久漂浮文字",["漂浮文字[",120,"]","修改内容文本","文本[","asdasd","]"])
貌似">地图永久漂浮文字"和["漂浮文字[",120,"]"都能识别出来了,但后面的指令没有识别,没有效果。

大神再帮我看看问题出在哪里?
相关源码如下:

var _drill_GFPT_pluginCommand = Game_Interpreter.prototype.pluginCommand
Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _drill_GFPT_pluginCommand.call(this, command, args);
        if(command === ">地图永久漂浮文字"){
               
                /*-----------------对象获取------------------*/
                var text_id = null;
                if(args.length >= 2){       
                        text_id = String(args[1]);
                        text_id = text_id.replace("漂浮文字[","");
                        text_id = text_id.replace("]","");
                        text_id = Number(text_id);

if( text_id != null && args.length >= 6 ){       
                        var type = String(args[3]);
                        var temp1 = String(args[5]);
                        if( type == "修改内容文本" ){
                                var data = $gameSystem._drill_GFPT_dataTank[ text_id ];
                                if( this.drill_GFPT_isDataExist( text_id ) == false ){ return; }
                               
                                if( temp1.indexOf("字符串[") != -1 ){
                                        if( Imported.Drill_CoreOfString ){
                                                temp1 = temp1.replace("字符串[","");
                                                temp1 = temp1.replace("]","");
                                                temp1 = $gameStrings.value( Number(temp1) );
                                               
                                                data['context'] = temp1;
                                                if( $gameTemp._drill_GFPT_windowTank[ text_id ] != null ){
                                                        $gameTemp._drill_GFPT_windowTank[ text_id ].drill_refreshMessageFromData();
                                                }
                                        }else{
                                                alert( "【Drill_GaugeFloatingPermanentText.js 地图UI - 永久漂浮文字】\n" +
                                                                "缺少 字符串核心 插件,插件指令执行失败。");
                                        }
                                       
                                }else{       
                                       
                                        var data_str = "";                //(支持空格的多行结构)
                                        for(var m = 5; m < args.length ; m++ ){
                                                data_str += String(args[ m ]);
                                                if( m < args.length-1 ){  data_str += " "; }
                                        }
                                        data_str = data_str.replace("文本[","");
                                        data_str = data_str.replace(/\]$/,"");        //(去掉末尾的])
                                        data['context'] = data_str;
                                        if( $gameTemp._drill_GFPT_windowTank[ text_id ] != null ){
                                                $gameTemp._drill_GFPT_windowTank[ text_id ].drill_refreshMessageFromData();
                                        }
                                }
                        }
                }
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
597
在线时间
283 小时
注册时间
2011-8-31
帖子
101
6
 楼主| 发表于 2023-2-6 20:59:27 | 只看该作者
Fan723 发表于 2023-2-6 08:59
插件指令本来就是调用脚本的,只要进插件文件去找插件指令字符串,你就能找到所对应的调用的脚本。 ...

大神可以看看我下面回帖里贴的插件源码,这个怎么用脚本调用?谢谢
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36402
在线时间
10791 小时
注册时间
2009-3-15
帖子
4813
7
发表于 2023-2-6 21:48:49 | 只看该作者
JAVASCRIPT 代码复制
  1. $gameMap._interpreter.pluginCommand(">地图永久漂浮文字,[漂浮文字[120],修改内容文本,文本[12122121]]")
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
597
在线时间
283 小时
注册时间
2011-8-31
帖子
101
8
 楼主| 发表于 2023-2-6 22:31:04 | 只看该作者
天一教主 发表于 2023-2-6 21:56
看了下,它这个重要的参数是1,3,5 其中0,2,4是没用的。。
$gameMap._interpreter.pluginCommand('>地图永 ...

我用你之前的命令也搞定了,数组数对了放上对应参数:
$gameMap._interpreter.pluginCommand(">地图永久漂浮文字",[,120,,"修改内容文本",,"jkjklj"])
这样就OK了。
你后面的更好,直接可以变更内容,十分感谢!!
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
597
在线时间
283 小时
注册时间
2011-8-31
帖子
101
9
 楼主| 发表于 2023-2-6 23:09:36 | 只看该作者
天一教主 发表于 2023-2-6 00:24
看了下,它这个重要的参数是1,3,5 其中0,2,4是没用的。。
$gameMap._interpreter.pluginCommand('>地图永 ...

大神好!!再额外问个问题:
/*-----------------移动方式------------------*/
                if( text_id != null && args.length >= 6 ){       
                        var type = String(args[3]);
                        var temp1 = String(args[5]);
                        var temp2 = String(args[7] || "1");
                        if( type == "瞬间移动" || type == "匀速移动" || type == "增减速移动" || type == "弹性移动" || type == "抛物线移动" ){
                                temp2 = temp2.replace("时间[","");
                                temp2 = temp2.replace("]","");
                                temp2 = Number(temp2);

else if( temp1.indexOf("位置[") != -1 ){
                                        temp1 = temp1.replace("位置[","");
                                        temp1 = temp1.replace("]","");
                                        temp1 = temp1.split(/[,,]/);
                                        pos = [ Number(temp1[0]),
                                                        Number(temp1[1]) ];
                                        var m_data = {
                                                "x":Number(pos[0]),
                                                "y":Number(pos[1]),
                                                "time":temp2,
                                                "type":type,
                                        }
                                        $gameSystem.drill_GFPT_moveTo( text_id, m_data );

这个是“>地图永久漂浮文字 : 漂浮文字[1] : 瞬间移动 : 位置[100,200]” 里的位置坐标,这个X,Y在数组里怎么写呢?应该都在数组5里,咋写两个数字……
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
597
在线时间
283 小时
注册时间
2011-8-31
帖子
101
10
 楼主| 发表于 2023-2-6 23:18:08 | 只看该作者
pandeng421 发表于 2023-2-6 23:09
大神好!!再额外问个问题:
/*-----------------移动方式------------------*/
                if( text_id != null & ...

$gameSystem._drill_GFPT_dataTank[120]['x'] = 255;
$gameSystem._drill_GFPT_dataTank[120]['y'] = 600;

我已经知道可以这样写,但是我还是想了解下,如果用写进数组的方法,该咋写? 谢谢大神……

点评

这是哈希表不是数组..  发表于 2023-2-7 07:29
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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