找回密码
 点一下
查看: 727|回复: 3

j求助

[复制链接]
发表于 2011-8-16 11:41:36 | 显示全部楼层 |阅读模式
用了老狼的清单式物品合成,提示j错误
代码:
function NewRecipe takes integer i0,integer i1,integer i2,integer i3,integer i4,integer i5,integer i6 returns nothing
    local integer array a
    local integer b
    local integer n=0
    set udg_RecipeCount=udg_RecipeCount + 1
    set udg_RecipeItemId[udg_RecipeCount * 10 + 9]=i0
    set a[0]=i1
    set a[1]=i2
    set a[2]=i3
    set a[3]=i4
    set a[4]=i5
    set a[5]=i6
    loop
        exitwhen a[n] == 0
        set b=GetStoredInteger(udg_GC, I2S(a[n]), "ItemRecipeCount")
        call StoreInteger(udg_GC, I2S(a[n]), "ItemRecipeCount", b + 1)
        call StoreInteger(udg_GC, I2S(a[n]), "ItemRecipe" + I2S(b), udg_RecipeCount)
        set udg_RecipeItemId[udg_RecipeCount * 10 + n]=a[n]
        set n=n + 1
    endloop
endfunction

function RecipeCheck takes unit u,integer rec returns boolean
    local integer n
    local integer i= 0
    local integer array A
    local integer array B
    local integer c
    local integer d= 5
    loop
        set B=udg_RecipeItemId[rec * 10 + i]
        exitwhen B == 0
        set A=GetItemTypeId(UnitItemInSlot(u, i))
        set i=i + 1
    endloop
    set n=i - 1
    set c=n
    loop
        exitwhen i >= 6
        set A=GetItemTypeId(UnitItemInSlot(u, i))
        set i=i + 1
    endloop
    loop
        set i=0
        loop
            exitwhen A == B[0]
            if i == d then
                return false
            endif
            set i=i + 1
        endloop
        exitwhen c == 0
        set A=A[d]
        set B[0]=B[c]
        set B[c]=i
        set c=c - 1
        set d=d - 1
    endloop
    set B[0]=i
    set i=0
    loop
        set udg_CombineItem=UnitItemInSlot(u, i)
        exitwhen i >= 5
        set i=i + 1
    endloop
    set d=5 - n
    if n > 0 then
        call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIsm\\AIsmTarget.mdl", u, "origin"))
    endif
    loop
        call RemoveItem(udg_CombineItem[B[n]])
        exitwhen n == 0
        set udg_CombineItem[B[n]]=udg_CombineItem[n + d]
        set n=n - 1
    endloop
    call UnitAddItemById(u, udg_RecipeItemId[rec * 10 + 9])
    return true
endfunction

function ItemCombine takes unit u,item it returns nothing
    local integer r
    local integer i=0
    loop
        set r=GetStoredInteger(udg_GC, I2S(GetItemTypeId(it)), "ItemRecipe" + I2S(i))
        exitwhen r == 0
        if RecipeCheck(u , r) then
            return
        endif
        set i=i + 1
    endloop
endfunction

function Trig_Combination_Conditions takes nothing returns boolean
    call ItemCombine(GetTriggerUnit() , GetManipulatedItem())
    return false
endfunction

function InitTrig_Combination takes nothing returns nothing
    set gg_trg_Combination=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Combination, EVENT_PLAYER_UNIT_PICKUP_ITEM)
    call TriggerAddCondition(gg_trg_Combination, Condition(function Trig_Combination_Conditions))
endfunction
说是
    set udg_RecipeCount=udg_RecipeCount + 1
    set udg_RecipeItemId[udg_RecipeCount * 10 + 9]=i0
        set B=udg_RecipeItemId[rec * 10 + i]
        set udg_CombineItem=UnitItemInSlot(u, i)
错误,求解
发表于 2011-8-16 11:52:15 | 显示全部楼层
你有没有修改变量名称啊~? 大小写都要出问题的。
回复

使用道具 举报

发表于 2011-8-16 12:15:23 | 显示全部楼层
那个。。请把具体的错误截图贴上来。。出错的原因可以有好几种

我是直接复制黏贴上面的触发的,得到的自然是没有申明udg_RecipeCount和udg_RecipeItemId这样的错误,申明后就没问题了
不知道LZ得到是不是也是“Undeclared Variable”……

另外,触发中存在多处变量数组漏写,比如上数下第二个函数中:
[jass]function RecipeCheck takes unit u,integer rec returns boolean
    local integer n
    local integer i= 0
    local integer array A
    local integer array B
    local integer c
    local integer d= 5
    loop
        set B=udg_RecipeItemId[rec * 10 + i]
        exitwhen B == 0
        set A=GetItemTypeId(UnitItemInSlot(u, i))
        set i=i + 1
    endloop
     ……[/jass]
前面局部变量的申明是local integer array B
但是之后使用的时候B没有写数组set B=udg_RecipeItemId[rec * 10 + i]
这样的问题有很多,当然上面我截取的部分中A的数组也没写
回复

使用道具 举报

 楼主| 发表于 2011-8-16 15:43:14 | 显示全部楼层
解决了,谢了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 18:19 , Processed in 0.036102 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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