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

请教一下关于Galaxy脚本编写的问题

[复制链接]
发表于 2016-8-21 01:48:21 | 显示全部楼层 |阅读模式
至于为什么选择脚本而非trigger,很简单因为我是程序员,直接编写代码更符合我的习惯——私以为任何一个程序员都不会容忍明明可以通过键盘搞定的事情,需要去长长的列表里面不停地点击鼠标然而SC2自带的银河编辑器对于脚本编写并不友好!
它不但没有函数、变量名检查功能,不能自动补全,而且对脚本语言规范苛刻的出奇——乃至于到了不合理的程度。
在群友的帮助下找到了一款Galaxy++ editor v3.0.8,十分符合需求,轻松地解决了上述的不友好问题。
然而新的问题随之而来——Galaxy++ editor保存至地图始终报错!
考虑到此工具最后一次更新是在2011年,距今五年有余,有可能是因为版本太老导致的,而此工具已经不再维护更新。

所以我的问题是:有没有能够使用的类似Galaxy++ editor的脚本编写工具?



 楼主| 发表于 2016-8-21 01:51:23 | 显示全部楼层
抱歉之前的搜索没有发现工具有更新。
我先试一试v3.1.0
回复

使用道具 举报

 楼主| 发表于 2016-8-21 02:52:24 | 显示全部楼层
额,似乎依然没能解决问题。
13年的与11年的问题是一致的,在@疯子前辈的帖子中找到问题:
3.0版本更新后不再适用mpq压缩格式存放东西。
然而使用2015年最新的工具时,依然有那个提示
Don't make any changes to hte gui triggers, or the script will be overwritten.
Do you wish to open the map now?
我不确定出现这行提示意味着成功还是失败,不过当点击确认的时候出现的错误是:
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 Galaxy_Editor_2.CompileModWindow.BTNCompile_Click(Object sender, EventArgs e)
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam,
与原英文版不同,原英文版虽然保存报错,但是进行run测试的时候还是成功的,最新的这个版本即使测试运行也会弹出内存溢出的错误。

测试用的地图是新建的纯全新地图,script脚本为:
Trigger MeleeInitialization
{
    events
    {
        TriggerAddEventMapInit(MeleeInitialization);
    }
    actions
    {
                UIDisplayMessage(PlayerGroupAll(), c_messageAreaChat, StringToText("hellowWorld"));
    }
}
以上就是全部信息了,还在寻找解决方案。
回复

使用道具 举报

发表于 2016-8-21 10:01:15 | 显示全部楼层
迷之 发表于 2016-8-21 02:52
额,似乎依然没能解决问题。
13年的与11年的问题是一致的,在@疯子前辈的帖子中找到问题:
3.0版本更新后不 ...

GE++这个工具的原作者是个德国boy,当年还在上学,后来弃坑了,原因是一堆bug自己都没法修复了
最后的版本就是3.0.8,之后有个老外对一些bug进行修复,并采用了自动从SC2获取native API,之后大家就都放弃了

后来这个坑是我自己捡起来的——大部分工作都是做了汉化和一些细节功能的修正,包括对于SC2的3.0版本的支持(由于SC2转为CASC压缩方法,没法获取native API 了),以及屏蔽掉一些没法使用的功能,比如上传代码库(对应的服务器已经挂掉了)

GE++这东西是支持第三方语法的,为了符合C++语法习惯,在编译的时候进行语法转换
所以它会对源代码进行转码成为GE++,至于支持直接编写触发,那是最后几个版本添加的,也许功能并不完善

GE++由于诸多原因,导致现在的很多语法和变量并不支持或异常支持,

目前GE++最大的优点在于它的语法检查比SE默认的要强力,其他有各种问题

另外一个功能比较齐全的galaxy工具是https://github.com/Talv/subl-sc2-galaxy这个
不过这个只能编写单个文件脚本了,没法采用多文件的项目结构

其他我自己倒是有个填不上的坑,
回复

使用道具 举报

发表于 2016-8-21 10:03:54 | 显示全部楼层
阁下是程序猿,如果懂C#,我可以提供源码,你自己来修复bug,如果真能这样就太感谢了。
额外说一句,GUI编写代码(Trigger)的宏功能还是很不错的。
最后感谢一下,国内终于有人用GE++了
回复

使用道具 举报

发表于 2016-8-21 10:05:50 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 07:32 , Processed in 0.133519 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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