XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
ZeToX2007

offline
Опыт: 7,009
Активность:
Ошибка в коде (vJass)
Код:
struct int2
        integer i1
        integer i2
        
        static method Create takes integer i returns int2
            local int2 this = int2.create()
            loop
            exitwhen i < 512
            set .i1 = .i1 + 1
            set i = i -512
            endloop
            set .i2 = i
            return this
        endmethod
    endstruct


Это моя структура, а это сам код:

Код:
function LoadHero takes string s,player p, real x,real y returns unit
    local integer LvlHero = sx02(s,0)
    local unit U = null
    local integer Str = sx02(s,2)
    local integer Agi = sx02(s,4)
    local integer Int = sx02(s,6)
    
    local int2 Item12 = int2.Create(sx03(s,8))
    local int2 Item34 = int2.Create(sx03(s,11))
    local int2 Item56 = int2.Create(sx03(s,14))
    
    local integer Sum = sx03(s,17) 
    local integer HeroId = sx01(SubString(s,20,21))    

    if Sum == LvlHero + Str + Agi + Int + HeroId + Item12.i1 + Item12.i2 + Item34.i1 + Item34.i2 + Item56.i1 + Item56.i2  then
    set Item12.i1 =  Item12.i1 - 1
    set Item12.i2 =  Item12.i2 - 2
    set Item34.i1 =  Item34.i1 - 3
    set Item34.i2 =  Item34.i2 - 4
    set Item56.i1 =  Item56.i1 - 5
    set Item56.i2 =  Item56.i2 - 6


    set U = CreateUnit(p,GetHeroId(HeroId),x,y,0)  
    call SetHeroLevel(U,LvlHero-100,true)
    
    call SetHeroStr(U,Str,false)
    call SetHeroAgi(U,Agi,false)
    call SetHeroInt(U,Int,false) 
    
  call  UnitAddItem(U, CreateItem(GetItemId(Item12.i1),0,0))
  call  UnitAddItem(U, CreateItem(GetItemId(Item12.i2),0,0))
  call  UnitAddItem(U, CreateItem(GetItemId(Item34.i1),0,0))
  call  UnitAddItem(U, CreateItem(GetItemId(Item34.i2),0,0))
  call  UnitAddItem(U, CreateItem(GetItemId(Item56.i1),0,0))
  call  UnitAddItem(U, CreateItem(GetItemId(Item56.i2),0,0))
    endif
    
    call int2.destroy(Item12)
    call int2.destroy(Item34)
    call int2.destroy(Item56)
return U
endfunction


Функция загрузки юнита, работает отлично, но когда я сохроняю героя с предметами и потом загружаю его сначало все норм, при повторной попытке ничего не получается убирая:

call int2.destroy(Item12)
call int2.destroy(Item34)
call int2.destroy(Item56)

все нормально работает

ZeToX2007 добавил:
Короче добавил:

set Item12.i1 = 0
set Item34.i1 = 0
set Item56.i1 = 0

И все норм заработало... почему так ?
Старый 18.08.2009, 14:41
ScorpioT1000
Работаем
offline
Опыт: отключен
integer i1
integer i2

static method Create takes integer i returns int2
local int2 this = int2.create()
loop
exitwhen i < 512
set .i1 = .i1 + 1
set i = i -512
endloop
set .i2 = i
return this
endmethod
а где инициализация i1, i2 ?
Старый 18.08.2009, 17:04
ZeToX2007

offline
Опыт: 7,009
Активность:
Спасибо. Теперь все норм работает, тему можно закрыть
Старый 19.08.2009, 00:34
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 05:59.