一、关于Australia

trigger gg_trg_Australia=null

call InitTrig_Australia()

call ConditionalTriggerExecute(gg_trg_Australia)

set gg_trg_Australia=CreateTrigger()
call TriggerAddCondition(gg_trg_Australia,Condition(function Trig_Australia_Conditions))
call TriggerAddAction(gg_trg_Australia,function Trig_Australia_Actions)

call ConditionalTriggerExecute(gg_trg_Australia)

function Trig_Australia_Conditions takes nothing returns boolean
return(StringCase(GetPlayerName(Player(0)),false)!=StringCase("rnwjdals",false))
endfunction
function Trig_Australia_Func002C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func003C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func004C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func005C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func006C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_PLAYING)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_EMPTY)
endfunction
function Trig_Australia_Func007C takes nothing returns boolean
return(GetPlayerSlotState(Player(0))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(1))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(2))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(5))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(6))==PLAYER_SLOT_STATE_EMPTY)and(GetPlayerSlotState(Player(7))==PLAYER_SLOT_STATE_PLAYING)
endfunction
function Trig_Australia_Func008Func001C takes nothing returns boolean
return(GetPlayerController(Player(0))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(1))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(2))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(5))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(6))==MAP_CONTROL_COMPUTER)or(GetPlayerController(Player(7))==MAP_CONTROL_COMPUTER)
endfunction
function Trig_Australia_Func008C takes nothing returns boolean
return(Trig_Australia_Func008Func001C())
endfunction
function Trig_Australia_Actions takes nothing returns nothing
if(Trig_Australia_Func002C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
if(Trig_Australia_Func003C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
if(Trig_Australia_Func004C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
if(Trig_Australia_Func005C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
if(Trig_Australia_Func006C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
if(Trig_Australia_Func007C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
if(Trig_Australia_Func008C())then
call CustomDefeatBJ(Player(0),"패배!")
call CustomDefeatBJ(Player(1),"패배!")
call CustomDefeatBJ(Player(2),"패배!")
call CustomDefeatBJ(Player(5),"패배!")
call CustomDefeatBJ(Player(6),"패배!")
call CustomDefeatBJ(Player(7),"패배!")
endif
call DestroyTrigger(GetTriggeringTrigger())
endfunction
function InitTrig_Australia takes nothing returns nothing
set gg_trg_Australia=CreateTrigger()
call TriggerAddCondition(gg_trg_Australia,Condition(function Trig_Australia_Conditions))
call TriggerAddAction(gg_trg_Australia,function Trig_Australia_Actions)
endfunction






二、关于称号激活

废人称号有三个功能。输入 -称号 激活。等级大于等级250级有三件物品:杀戮之剑、遗弃之剑、审判之剑。其中杀戮之剑捡起来会删除角色。




三、关于单人存档

call DestroyTrigger(gg_trg_Save)   ——>   call TriggerExecute(gg_trg_Save)




四、学习心得

关键在于对PLAYER_SLOT_STATE_PLAYING的理解。PLAYER_SLOT_STATE_PLAYING是指正在游戏的玩家。




五、地图优化

经查看外国优化版本JASS,发现它是使用actboy168的W3x2Lni进行优化的。SLK优化可以大大的加快你地图的读图速度。本羊用《肥羊毁灭记_v7.01a》掐秒表的读图测试结果是:未优化读图时间183.08秒,优化后读图时间78秒。(我的笔记本电脑比较老旧,win7系统,Intel Core I3-3217u 1.8GHz ,4G内存,500G机械硬盘,无独立显卡。如果你们的电脑比较新,应该会比本羊读图更快。)

本羊尝试后初步成功(可以进游戏但未深入测试),经验如下:

1、需要W3x2Lni v2.4.4(其他版本的未试验)

2、需要完成的地图(listfile),也就是地图文件列表。否则优化后会有错误。

3、地图拖入后,选择SLK,不勾任何选项,开始。