Добавлен
В чём ошибка? Скобку закрываю и ошибку выдаёт с закрытой скобкой
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)
	}
}
скрин ошибки

Принятый ответ

Skolz, старый баг который давно обещали пофиксить
в файле cj_types.j сотри эту строку (которая начинается с while)
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
6 лет назад
0
Похожие вопросы:

ответ
Wyett, ты можешь добавлять подобные этим:
function ... takes ... returns ...
Код
endfunction
Резака купить можно, но это будет абсолютно не похоже на покупку дирижабля.
ответ
Чтобы было норм читать, надо хотя бы выделять содержимое каждого блока (типа function/endfunction, if/endif, loop/endloop) табуляцией. Если блок внутри блока, то двойная табуляция, и т. д.
В vJASS и cJASS не стоит использовать одновременно C-подобный и Turing-подобный (стандартный JASS) синтаксис.
А если ты неправильно поставишь пробелы, запятые или кавычки, тебе об этом скажет парсер =)
ответ
local real x = GetRandomReal(GetRectMinX(GetPlayableMapRect()), GetRectMaxX(GetPlayableMapRect()))
local real y = GetRandomReal(GetRectMinY(GetPlayableMapRect()), GetRectMaxY(GetPlayableMapRect()))
...
(действия с координатами)
...
Любые действия с локейшном можно переделать под координаты, если не используется z-координата, как сказано выше. Но z-координату используют не только лишь все, мало кто может это делать.
И обнулять ничего не придётся, так как действительное число не утекает.
ответ
Во-первых, что есть "локальный таймер" ? Это таймер записанный в локальную переменную?
Во-вторых, зачем тебе точка, если ты используешь XY ? Работай с ними
В-третьих, да. Использование в течении всей игры одной заранее созданной точки вызывает меньше нагрузки чем постоянно создание и удаление новых (кто-то там доказывал на примере и цифрами что от ремувнутых точке всё равно остаётся шлак в памяти...)
ответ
1)Нужно ли при создании на джассе в конце обнулять/удалять что-то как при создании на ГУИ типо set u = null и т.д.?
Да нужно, но далеко не все. Чекни статьи, там про это расписано подробно.
2)Как видно на скрине юниту даются способности на 10 сек, можно ли в одной строчке это как то написать, а не писать каждый скилл в новой строке? Попытался сделать через , выдало ошибку.
Нет, только по одному. И TriggerSleepAction я бы использовать не стал, вместо них я бы заюзал таймеры.
3)Слышал про при конвертации в текст остаются пару лишних строк в триггере, абсолютно ненужные я удалил(Которые были при создании на ГУИ, скрин 2), нужно ли еще что-то удалять?
Не совсем понял вопрос, уточни о чем ты?

0
28
6 лет назад
0
Отступы сделай, чтобы было ясно, к чему какая скобка относится.
0
28
6 лет назад
Отредактирован nvc123
0
используй форматирование код
и отступы расставь
очевидно что он ругается на открывающую скобку после OneTimerStruct(SPELL)
полагаю это какой то дефайн
0
28
6 лет назад
0
Расставил отступы, вдруг поможет.
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)
    }
}
0
10
6 лет назад
0
Спасибо за труд, но мне это не помогло (уже сам пробовал)
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)
    }
}
0
17
6 лет назад
0
OneTimerStruct(SPELL){ код этого покажите
0
10
6 лет назад
0
ledoed:
OneTimerStruct(SPELL){ код этого покажите
Загруженные файлы
0
17
6 лет назад
0
ковычки убери OneTimerStructSPELL
0
28
6 лет назад
0
ledoed, ковычки?
ты про скобки?
Skolz, ты уверен что подключил библиотеку?
и ещё укажи её в зависимостях у этого scope
т.к. у тебя не сработал дефайн
что означает что библиотека не подключена либо расположена после твоего кода
0
10
6 лет назад
Отредактирован Skolz
0
nvc123,
Её ещё подключать как-то надо? Я думал просто импортировать и стереть стандартный путь
Skolz, ты уверен что подключил библиотеку?
и ещё укажи её в зависимостях у этого scope
т.к. у тебя не сработал дефайн
что означает что библиотека не подключена либо расположена после твоего кода
0
28
6 лет назад
Отредактирован nvc123
0
Skolz, её не надо импортировать в карту
просто закинь в папку \AdicHelper\lib\ в папке с джнгп
а потом в коде в шапке напиши
include "OneTimerBool.j"
0
10
6 лет назад
Отредактирован Skolz
0
nvc123, ок
nvc123, о, получилось! Только теперь ошибку выдаёт
Загруженные файлы
1
28
6 лет назад
1
Skolz, в конце этой строки добавь )
в конце следующей тоже
так же не забывай что Cos и Sin работают с углами в радианах а не градусах
0
10
6 лет назад
0
nvc123, теперь ещё 2 ошибки
Загруженные файлы
0
28
6 лет назад
Отредактирован nvc123
0
Skolz, ты не подключил библиотеку cj_types.j
она уже лежит в папке
тебе нужно лишь подключить её в шапке
прочти статью про cjass
0
10
6 лет назад
0
nvc123, так же? include "cj_types.j"
0
28
6 лет назад
0
Skolz, да
ты статьи читал?
там всё написано
0
10
6 лет назад
0
nvc123, всё прочитал. Теперь новая ошибка
Загруженные файлы
1
28
6 лет назад
1
Skolz, старый баг который давно обещали пофиксить
в файле cj_types.j сотри эту строку (которая начинается с while)
Принятый ответ
0
10
6 лет назад
0
nvc123, о, ну наконец-то получилось сохранить, алилуя! Спасибо!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.