找回密码
 点一下
查看: 2545|回复: 5

请教一个galaxy头文件的问题

[复制链接]
发表于 2011-4-7 23:05:47 | 显示全部楼层 |阅读模式
新手刚刚学习编辑器,发现在用触发器生成函数的时候搞来搞去搞不清楚,而且限制条件比较多。
比如勾选了自定义脚本之后,无法用 int a = 1;之类的创建局部变量。。。
我看了一下他的编译方式,
  1. bool gt_Test_Func (bool testConds, bool runActions) {
  2.     // Actions
  3.     if (!runActions) {
  4.         return true;
  5.     }
  6.     TriggerDebugOutput(1, StringExternal("Param/Value/4F56987B"), true);
  7.     int a = 1;
  8.     UIDisplayMessage(PlayerGroupAll(), c_messageAreaChat, StringToText(IntToString(111)));
  9.     //gf_TestFunction2();
  10.     libNtve_gf_TextureDump;
  11.     StructTest();
  12.     return true;
  13. }
复制代码

他给我的自定义脚本会放在
    // Actions
    if (!runActions) {
        return true;
    }
这一段之后,变量申明不在最前面  所以一定编不过。。。
我用MPQEditor打开MapScript.galaxy脚本之后自己改写函数是没有问题的。。。
这样就有新的问题来了。。我希望能自己写头文件,脚本中引用自己写的函数。
将一个testlib.galaxy导入地图的sc2map文件之后,可以正常include,手动改MapScript之后也能正常调用。
但是一打开编辑器,将触发器数据编译之后就全部都被覆盖了。
于是想到改系统的库文件,希望能在触发器中写自定义脚本时可以调用自己写的函数而不会编不过。。
发现触发器被编译后脚本一定会 include "TriggerLibs/NativeLib"
于是在客户端找,发现 Mods\Core.SC2Mod\Base.SC2Data.MPQ 这个文件中包含了此头文件
于是我改了NativeLib.galaxy。。。
加了一行 include "TriggerLibs/testLib"
同时将 testlib.galaxy导入到Mods\Core.SC2Mod\Base.SC2Data.MPQ中。。
结果还是泪流满面的发现不能用。。。。
我要如何才能自己写头文件,并且能在触发器中写脚本时调用头文件中的自定义函数呢。。。。。
发表于 2011-4-8 00:08:24 | 显示全部楼层
直接在触发编辑器里,新建->自定义脚本,就可以include了。

不是动作里的自定义脚本。注意。

另外局部变量的声明必须在顶部。
回复

使用道具 举报

发表于 2011-4-8 00:13:37 | 显示全部楼层
为了方便你理解,补张图。
未命名.jpg
回复

使用道具 举报

 楼主| 发表于 2011-4-8 02:16:20 | 显示全部楼层

回 2楼(麦德三世) 的帖子

问题解决,调用成功,QQQ

回复

使用道具 举报

 楼主| 发表于 2011-4-8 02:25:23 | 显示全部楼层

回 3楼(pigliketeammate) 的帖子

看了下编辑器编译后的脚本,自定义脚本申明和定义放在Trigger定义之前,看来在Trigger里面引用是不会有什么问题了~~
回复

使用道具 举报

发表于 2011-4-8 02:40:15 | 显示全部楼层
而且galaxy是支持预先声明的。所以你想要在自定义脚本里调用触发器函数也没问题。

只要先对他们作下声明即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-24 01:52 , Processed in 0.033093 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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