找回密码
 点一下
查看: 1204|回复: 7

这是一个“盟友退出不留钱”的脚本语段,但是有两句不知道怎么来的

[复制链接]
发表于 2012-2-18 16:38:42 | 显示全部楼层 |阅读模式
整个语段是这样的:

//--------------------------------------------------------------------------------------------------
// Trigger: PlayerDumps
//--------------------------------------------------------------------------------------------------
bool gt_PlayerDumps_Func (bool testConds, bool runActions) {
    int auto2979DB24_ae;
    int auto2979DB24_ai;
    // Variable Declarations
    int lv_playerIndex;
    int lv_playersRemaining;
    int lv_removeFromTeam;
    // Variable Initialization
    lv_playerIndex = 0;
    lv_playersRemaining = 0;
    lv_removeFromTeam = 0;
    // Actions
    if (!runActions) {
        return true;
    }
    lv_playersRemaining = PlayerGroupCount(PlayerGroupAlliance(c_playerGroupAlly, EventPlayer()));
    if ((lv_playersRemaining > 0) && (PlayerType(lv_playerIndex) != c_playerTypeReferee) && (PlayerType(lv_playerIndex) != c_playerTypeSpectator)) {
        lv_removeFromTeam = (gv_mINERAL_COUNT[EventPlayer()] / lv_playersRemaining);
        auto2979DB24_ae = 6;
        auto2979DB24_ai = 1;
        lv_playerIndex = 1;
        while ((auto2979DB24_ai >= 0 && lv_playerIndex <= auto2979DB24_ae) || (auto2979DB24_ai <= 0 && lv_playerIndex >= auto2979DB24_ae)) {
            if (((lv_playerIndex >= 1) && (lv_playerIndex <= 3))) {
                PlayerModifyPropertyInt(lv_playerIndex, c_playerPropMinerals, c_playerPropOperSubtract, lv_removeFromTeam);
            }
            else if (((lv_playerIndex >= 4) && (lv_playerIndex <= 6))) {
                PlayerModifyPropertyInt(lv_playerIndex, c_playerPropMinerals, c_playerPropOperSubtract, lv_removeFromTeam);
            }
            if (lv_playerIndex == auto2979DB24_ae) {
                break;
            }
            lv_playerIndex = lv_playerIndex + auto2979DB24_ai;
        }
    }
    else {
    }
    return true;
}
//--------------------------------------------------------------------------------------------------
void gt_PlayerDumps_Init () {
    gt_PlayerDumps = TriggerCreate("gt_PlayerDumps_Func");
    TriggerAddEventPlayerLeft(gt_PlayerDumps, c_playerAny, c_gameResultUndecided);
}

还原尝试为:
[trigger]PlayerDumps
    事件
        玩家 -玩家任意玩家选择任意离开了游戏
    局部变量
        playerIndex = 0 <整数>
        playersRemaining = 0 <整数>
        removeFromTeam = 0 <整数>
    条件
    动作
        变量 -设置playersRemaining = (在(玩家(进行触发的玩家) 的 盟友)中的玩家数)
        综合 -If (条件) then do (动作) else do (动作)
            If
                And
                    条件
                        playersRemaining>0
                        (玩家playerIndex的控制者)!=裁判
                        (玩家playerIndex的控制者)!=观战者
            Then
                变量 -设置removeFromTeam = mINERAL_COUNT[((进行触发的玩家)/playersRemaining)]
                变量 -设置playerIndex = 1
                综合 -While (条件) are true, do (动作)
                    条件
                        Or
                            条件
                                And
                                    条件
                                        playerIndex<=1
                                And
                                    条件
                                        playerIndex>=1
                    动作
                        综合 -If (条件) then do multiple (动作)
                            If Then Else
                                综合 -Else if (条件) then do (动作)
                                    Else If
                                        And
                                            条件
                                                playerIndex>=1
                                                playerIndex<=3
                                    Then
                                        玩家 -修改玩家playerIndex 晶体矿: 减去 removeFromTeam
                                综合 -Else if (条件) then do (动作)
                                    Else If
                                        And
                                            条件
                                                playerIndex>=4
                                                playerIndex<=6
                                    Then
                                        玩家 -修改玩家playerIndex 晶体矿: 减去 removeFromTeam
                        综合 -If (条件) then do (动作) else do (动作)
                            If
                                playerIndex==
                            Then
                                综合 -中断
                            Else
            Else
[/trigger]
但是不懂里面的auto2979DB24_ae和auto2979DB24_ai怎么来的。
求指点。
发表于 2012-2-18 20:36:22 | 显示全部楼层
这两个是用来实现循环体的
回复

使用道具 举报

 楼主| 发表于 2012-2-19 00:35:06 | 显示全部楼层

回 麦德三世 的帖子

麦德三世:这两个是用来实现循环体的 (2012-02-18 20:36)
头目威武
不知可否指点迷津,小做修改,将“循环”相关语句指点写上半句
剩下的我参悟并做以补完?
回复

使用道具 举报

发表于 2012-2-24 14:22:27 | 显示全部楼层
auto2979DB24_ae = 6; //这个是总共6个玩家
auto2979DB24_ai = 1; //这个是每次循环增加1

这个循环逻辑是第一次判断玩家1,第二次判断玩家2 ... 第6次判断玩家6
如果把auto2979DB24_ai =2,就是第一次判断玩家1,第二次判断玩家3,第三次判断玩家5

理论上来讲这两个值是不需要地图编辑者在参数里指定的(因为你从其他途径告诉编辑器有6个玩家了,并且每次+1也是肯定的),所以我猜测这两个值是SE把图形化编辑转为代码过程中自动生成的
回复

使用道具 举报

发表于 2012-2-24 14:39:00 | 显示全部楼层
本来就是如此。

这只是自动生成的。
回复

使用道具 举报

发表于 2012-2-24 14:50:13 | 显示全部楼层
现在早就不用这样了。退出事件在分钱值钱引发,因此直接在退出事件里把退出的玩家的资源设为0,就不会分出任何钱。

根本用不着这样子操作。


而且1.5.0已经可以直接关闭这个了。
回复

使用道具 举报

 楼主| 发表于 2012-2-27 21:28:51 | 显示全部楼层

回 麦德三世 的帖子

麦德三世:现在早就不用这样了。退出事件在分钱值钱引发,因此直接在退出事件里把退出的玩家的资源设为0,就不会分出任何钱。

根本用不着这样子操作。


....... (2012-02-24 14:50)
竟有此事!
回复

使用道具 举报

 楼主| 发表于 2012-2-27 21:54:38 | 显示全部楼层
但是难点确实是“如何能让玩家资源清零先于退出事件发生”
一般都是事件触发动作,如何让动作激活事件。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 22:25 , Processed in 0.035883 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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