10

» WarCraft 3 / Вопрос по Jass

UrsaBoss, "объяви локалку и присвой ей значение глобалки которую передаешь"
Не понял? Как это сделать?
10

» WarCraft 3 / Вопрос по Jass

KingMaximax, спасиб.
Но а делать z1 локальной не вариант, т.к. мне нужно в этом таймере создать даммика и перенести его в другой спелл
10

» WarCraft 3 / Вопрос по Jass

дайте мне уж чёткий ответ. То что я устанавливаю z1 = 0 каждые 0.03 сек это плохо или норм?
внизу идёт цикл z1 от 1 до z (по гуишному)
10

» WarCraft 3 / Вопрос по Jass

Пушистый, мне бы кто ответил на вопрос... Ничего страшного от того, что я переменную z1 каждые 0.03 сек устанавливаю z1 = 0? Будет ли это нагружать варик или нет? Если да, то как правильнее будет?
10

» WarCraft 3 / Вопрос по Jass

Raised, у меня есть система одиночного таймера, но мне пока ею пользоваться рано. ибо у меня проблема с изучение .this
10

» WarCraft 3 / Вопрос по Jass

KingMaximax, z устанавливается во время каста (z = z + 1) для муи
Пушистый, мне нужно её сделать глобальной, т.к. у меня идёт связка из 2-х спеллов. В данном случае в этом спелле создаётся даммик[z1] мне его надо перенести в другой триггер с другим спеллом для того, чтобы его (даммик[z1]) использовать
10

» WarCraft 3 / Вопрос по Jass

UrsaBoss, мб есть какие-нибудь статьи чтоб с этим можно было подробнее ознакомиться? А то удобно писать код без обозначения [массива] (муишно)
10

» WarCraft 3 / Вопрос по Jass

UrsaBoss, нет лучше дай ему ссылки на более менее легкое. Пусть сначала начнёт с простого и перейдёт к сложному. Лучше подберите ему поэтапные статьи.
Во-во. Хочу структуры изучить, но хз с чего начать. Нужно что-то очень простое, чтоб постепенно усложнялось, дабы это всё можно было вкурить. Вот эти вот "this." после которой в таймере можно писать без массива и прочее
10

» WarCraft 3 / Вопрос по Jass

UrsaBoss, спасибо!
Можешь скинуть какие-нибудь статьи полезные по изучению джасса муи без хэшек
10

» WarCraft 3 / Как узнать на джассе есть ли у героя предмет или нет?

function UnitHasItemOfType takes unit whichUnit, integer itemId returns boolean
local integer index = 0
loop
if GetItemTypeId(UnitItemInSlot(whichUnit, index)) == itemId then
return true
endif
set index = index + 1
exitwhen index == bj_MAX_INVENTORY
endloop
return false
endfunction
PT153, вот это нужно просто в шапку кинуть, указать кастера и всё?
10

» WarCraft 3 / Вопрос по Jass

nvc123, ок
nvc123, о, получилось! Только теперь ошибку выдаёт
Загруженные файлы
10

» WarCraft 3 / Вопрос по Jass

nvc123,
Её ещё подключать как-то надо? Я думал просто импортировать и стереть стандартный путь
Skolz, ты уверен что подключил библиотеку?
и ещё укажи её в зависимостях у этого scope
т.к. у тебя не сработал дефайн
что означает что библиотека не подключена либо расположена после твоего кода
10

» WarCraft 3 / Вопрос по Jass

Спасибо за труд, но мне это не помогло (уже сам пробовал)
PT153:
Расставил отступы, вдруг поможет.
scope SPELLSHAR initializer init{
    globals
        private group temp_group = CreateGroup()	
    endglobals
    
    OneTimerStruct(SPELL){
        unit a,b	
        real dist,ang	
        group g
        
        boolean Update(){
            real x = GetUnitX(b)	
            real y = GetUnitY(b)
            unit c	
            if (dist > 0){
                GroupEnumUnitsInRange(temp_group,x,y,200,null)	
                loop{
                    c = FirstOfGroup(temp_group)	
                    exitwhen (c == null)	
                    if GetWidgetLife(c) > 0.405 && IsUnitEnemy(c,GetOwningPlayer(a)) && !IsUnitInGroup(c,g){
                        UnitDamageTarget(a,c,50*GetUnitAbilityLevel(a,'A000'),false,false,null,null,null)	
                        if (GetWidgetLife(c) > 0.405){
                            GroupAddUnit(g,c)	
                        }
                    }
                    GroupRemoveUnit(temp_group,c)	
                }
                SetUnitX(b,x+50*Cos(ang)	
                SetUnitY(b,y+50*Sin(ang)
                dist -= 50	
                GroupClear(g)	
                RemoveUnit(b)	
                return false 
            }
            return true	
        }

        static void Add(){
            real x,y
            thistype this = thistype.create()	
            this.a = GetSpellAbilityUnit()	
            this.dist = 1000	
            if (this.g == null){ 
                this.g = CreateGroup() 
            }
            x = GetUnitX(this.a)	
            y = GetUnitY(this.a)
            this.ang = 57.296*Atan2(GetSpellTargetY()-y,GetSpellTargetX()-x)	
            this.b = CreateUnit(GetOwningPlayer(this.a),'h000',x,y,this.ang)	
            this.ang *= 0.0174	
            OneTimerAdd(this)	
        }
    }
    
    private nothing act(){
        if (GetSpellAbilityId() == 'A000'){
            SPELL.Add()	
        }
    }

    private nothing init(){
        trigger t = CreateTrigger()
        integer i = 0
        while(i < 12){
            TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
            i++
        }
        TriggerAddAction(t,function act)
    }
}