找回密码
 点一下
查看: 1177|回复: 4

如何让此JASS能在1.24e版本运行?

[复制链接]
发表于 2010-8-15 09:32:21 | 显示全部楼层 |阅读模式
JASS修行还不够啊……
不知道怎么办?怎么哈希表?怎么把RETURN BUG什么改掉?
希望能帮帮忙!!谢谢了
要帮的忙:1、让此JASS能在1.24e运行
2、教我如何改(似乎挺……)
JASS如下
http://bbs.islga.org/read-htm-ti ... 7C%D6%C7%C4%DC.html

function I2TG takes integer i returns trigger

    return i

    return null

endfunction

function I2TC takes integer i returns triggercondition

    return i

    return null

endfunction

function AIOrderRun takes nothing returns boolean           

    local unit u = GetTriggerUnit()

    local integer count = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Count")

    local integer order

    local integer pro

    local integer index

    local integer i = 0

    local integer a = 0

    loop

        set pro = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Probability"+I2S(i))

        if  GetRandomInt(0,99)*pro/(a+pro) < pro then  //算法呀算法~~这样才是正确的概率

            set order = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder"+I2S(i))

            set index = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Index"+I2S(i))

            set a = a+pro

        endif

        

        set i = i+1

        if i >=count then // 1:敌目标 2:点目标 3:无目标 4:自己

            if index == 1 then

                call IssueTargetOrderById(u,order,GetEventTargetUnit())

            elseif index == 2 then

                call IssuePointOrderById(u,order,GetUnitX(GetEventTargetUnit()),GetUnitY(GetEventTargetUnit()))

            elseif index == 3 then

                call IssueImmediateOrderById(u, order)

            elseif index == 4 then

                call IssueTargetOrderById(u,order,u)

            endif

            exitwhen true

        endif

    endloop

    set u = null   

    return false

endfunction

function AddAIOrder takes unit u,string order,integer index,integer probability returns nothing

    local integer i = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Count")

    local trigger trg

    if i==0 then

        set trg = CreateTrigger()

        call TriggerRegisterUnitEvent(trg, u, EVENT_UNIT_TARGET_IN_RANGE) //改用发动攻击为事件

        call StoreInteger(udg_GC, I2S(H2I(u)), "MercenaryTrigger",H2I(trg))

        call StoreInteger(udg_GC, I2S(H2I(trg)), "TriggerCondition",H2I(TriggerAddCondition(trg, Condition(function AIOrderRun)))) //好吧,这个提升效率是非常明显的

    endif

    call StoreInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder"+I2S(i), OrderId(order)) //使用OrderId要比OrderString好得多

    call StoreInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Probability"+I2S(i), probability)

    call StoreInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Index"+I2S(i), index)

    call StoreInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Count", i+1)

    set trg = null            

endfunction

//这个是清空函数

function FlushAIOrder takes unit u returns nothing

    local integer i = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Count")

    local integer trg = GetStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryTrigger")

    call TriggerRemoveCondition(I2TG(trg),I2TC(GetStoredInteger(udg_GC, I2S(trg), "TriggerCondition")))

    call DestroyTrigger(I2TG(trg))

    call FlushStoredMission(udg_GC, I2S(trg))

    call FlushStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryTrigger")

    call FlushStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Count")

    loop

        set i = i-1

        exitwhen i < 0

        call FlushStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder"+I2S(i))

        call FlushStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Probability"+I2S(i))

        call FlushStoredInteger(udg_GC, I2S(H2I(u)), "MercenaryAIOrder_Index"+I2S(i))

    endloop

endfunction
发表于 2010-8-15 10:32:22 | 显示全部楼层
http://bbs.islga.org/read-htm-tid-33972-keyword-hashtable.html

一两句也说不清,掌握原理重写一遍~~

其实我是直接学的hashtable
回复

使用道具 举报

 楼主| 发表于 2010-8-15 11:01:37 | 显示全部楼层
能直接帮我改好么?
回复

使用道具 举报

发表于 2010-8-15 11:08:57 | 显示全部楼层
禁止伸手!
回复

使用道具 举报

发表于 2010-8-15 11:11:17 | 显示全部楼层
请研究hashtable后自己改下吧,使用方法上差别并不算太大
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 21:43 , Processed in 0.041122 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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