|
发表于 2011-2-12 16:55:55
|
显示全部楼层
使用Bank系统。它可以把指定的数据存到指定玩家的电脑上。
以下是一个例子。
[trigger]
Bank Init&Read
    Events
        Game - Map initialization
    Local Variables
    Conditions
    Actions
        Bank - Open bank "TestBank" for player 1
        Variable - Set Bank = (Last opened bank)
        Variable - Set i = (Load "data" of section "section1" from bank Bank as integer value)
        Debug - Display (Text(i)) as debug output using Type 1, and Do display it in the game window
[/trigger]
这几句是尝试从玩家1的电脑上打开名为TestBank的这样一个bank(也就是本地保存的文件)。并读取这个bank的section1\\data下保存的整数值。
最后一句是把它显示在屏幕上。当什么都没保存的时候当然显示的是0
[trigger]
Set Int
    Events
        Game - Player Any Player types a chat message containing "", matching Partially
    Local Variables
    Conditions
    Actions
        Variable - Set i = (Integer((Entered chat string)))
[/trigger]
这里是个测试用的触发,用聊天信息输入数字,输入多少就把i这个全局变量设为多少。
[trigger]
Save
    Events
        Timer - Every 2.0 seconds of Game Time
    Local Variables
    Conditions
    Actions
        Bank - Store integer i as "data" of section "section1" in bank Bank
        Bank - Save bank Bank
        Debug - Display (Combine ("已保存 ", (Text(i)))) as debug output using Type 1, and Do display it in the game window
[/trigger]
这几句就是关键的保存用的触发了,每经过2秒钟就保存一次i的值,第一句是将其保存到Bank的section1\\data。注意这时候还没正式保存在硬盘上,而是只是写入了内存而已。
第二句是正式将它保存到硬盘上。这里要明确的一点是,当有很多人联机的时候,究竟是保存到谁的硬盘上呢?这是由第一个触发器所决定的。第一个触发打开的是玩家1硬盘上的bank,所以当它保存的时候也是保存在玩家1的电脑上的。实际保存位置是在我的文档的sc2目录下。
第三句就是在保存完以后显示下提示信息,已保存XXX。
这就是一个最普通的Bank系统演示了,和war3的game cache基本一样,区别在于sc2的Bank系统可以支持多人联机而已。
要注意的是,其实由于Bank是明文保存的,所以要修改存档很简单。所以实际应用的时候最好做一些加密措施,不过这就是比较高级的应用了,楼主还是先从最基础的演示入手吧。 |
|