В общем я изучаю cJass и есть проблемы с фигурными скобочками, в упор не вижу ошибки, а выбивается missing endblock.
При включении любого кода привидённого ниже выдает ошибку:
(Использовал JassReplacer)
(1)
 library FuncDeathWaterguards uses Polar 
    nothing DeathWaterguards ( unit u1, real x1, real y1 ) { 
        unit u2   = g_waterguardBase[GetUnitUserData(u1)]
        real x2   = GetUnitX(u2)
        real y2   = GetUnitY(u2)
        if ( DistanceBetweenCoords(x1, y1, x2, y2) >= 1000.00 ) {
            DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveDamage.mdl&​quot;, x1, y1))
            UnitDamageTargetBJ( u1, u1, ( 0.25 * GetUnitState(u1, UNIT_STATE_MAX_LIFE) ), ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL )
        }
        u1 = null
        u2 = null
    }
endlibrary
(2)
 library FuncMurlocScales
  nothing MurlocScales ( unit u, real x, real y, integer id ){ 
    integer i       = 0
    integer tw   = g_timeWater[GetUnitUserData(u)]
    boolean iw     = g_inWater[GetUnitUserData(u)]
     if iw == true {
      tw = 0
      SetUnitState(u, UNIT_STATE_LIFE, GetUnitState(u, UNIT_STATE_LIFE) + resHPmur)
      elseif (iw == false) then
      tw = (tw + 1 )
     }
     if ( id == 'n001' ) or ( id == 'h002' ) {
      i = 180
     }else{
      i = 120
     }
     if ( tw == 0 ) and ( GetUnitAbilityLevel(u, 'A00V') >= 1 ) {
      SetUnitAbilityLevel( u, 'A00S', 1 )
      SetUnitAbilityLevel( u, 'A00U', 1 )
      SetUnitAbilityLevel( u, 'A00V', 1 )
      UnitRemoveAbility( u, 'A00V')
      UnitRemoveAbility( u, 'A00S')
      UnitRemoveAbility( u, 'A00U')
      UnitRemoveAbility( u, 'B004')
      elseif ( tw >= i ) and ( GetUnitAbilityLevel(u, 'A00V') == 0 ) then
      UnitAddAbility( u, 'A00V')
      UnitAddAbility( u, 'A00S')
      UnitAddAbility( u, 'A00U')
      elseif ( tw >= ( 2 * i )) and ( GetUnitAbilityLevel(u, 'A00V') == 1 ) then
      SetUnitAbilityLevel( u, 'A00S', 2 )
      SetUnitAbilityLevel( u, 'A00U', 2 )
      SetUnitAbilityLevel( u, 'A00V', 2 )
      elseif ( tw >= ( 4 * i )) and ( GetUnitAbilityLevel(u, 'A00V') == 2 ) then
      SetUnitAbilityLevel( u, 'A00S', 3 )
      SetUnitAbilityLevel( u, 'A00U', 3 )
      SetUnitAbilityLevel( u, 'A00V', 3 )
     }
   }
endlibrary

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

Проблема в Coordinate functions
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
25
5 лет назад
Отредактирован Jack-of-shadow
0
Во втором все норм
0
32
5 лет назад
0
да {} = then endif
0
19
5 лет назад
Отредактирован KaneThaumaturge
0
Вот такое происходит при включении второго триггера, при первом аналогично. Если выключить два, то сейвит без ошибок.
Загруженные файлы
0
18
5 лет назад
0
До:
     if ( tw == 0 ) and ( GetUnitAbilityLevel(u, 'A00V') >= 1 ) {
      SetUnitAbilityLevel( u, 'A00S', 1 )
      SetUnitAbilityLevel( u, 'A00U', 1 )
      SetUnitAbilityLevel( u, 'A00V', 1 )
      UnitRemoveAbility( u, 'A00V')
      UnitRemoveAbility( u, 'A00S')
      UnitRemoveAbility( u, 'A00U')
      UnitRemoveAbility( u, 'B004')
      elseif ( tw >= i ) and ( GetUnitAbilityLevel(u, 'A00V') == 0 ) then
После:
     if ( tw == 0 ) and ( GetUnitAbilityLevel(u, 'A00V') >= 1 ) {
      SetUnitAbilityLevel( u, 'A00S', 1 )
      SetUnitAbilityLevel( u, 'A00U', 1 )
      SetUnitAbilityLevel( u, 'A00V', 1 )
      UnitRemoveAbility( u, 'A00V')
      UnitRemoveAbility( u, 'A00S')
      UnitRemoveAbility( u, 'A00U')
      UnitRemoveAbility( u, 'B004')
      }elseif ( tw >= i ) and ( GetUnitAbilityLevel(u, 'A00V') == 0 )
	  {
0
19
5 лет назад
0
Ссылка на карту, на всякий случай, может у меня что-то с JNGP
Загруженные файлы
0
25
5 лет назад
0
В общем я убрал заменил все твои глобалки (типо таких g_timeWater[]) из других либ на простые значения и все хорошо компилится.
0
18
5 лет назад
0
короче говоря - в конструкциях нельзя мешать си-синтаксис и jass синтаксис
Вот образец условного ветвления, ни в коем случае нельзя ставить всякие then/endif и т.д
if( i == 1 )
{
	////
} elseif( i == 2 )
{
	////
} else
{
	////
}
0
19
5 лет назад
0
  nothing MurlocScales ( unit u, real x, real y, integer id ){ 
    integer i       = 0
    integer tw   = g_timeWater[GetUnitUserData(u)]
    boolean iw     = g_inWater[GetUnitUserData(u)]
     if iw == true {
      tw = 0
      SetUnitState(u, UNIT_STATE_LIFE, GetUnitState(u, UNIT_STATE_LIFE) + resHPmur)
      }elseif (iw == false) {
      tw++
     }
     if ( id == 'n001' ) or ( id == 'h002' ) {
      i = 180
     }else{
      i = 120
     }
     if ( tw == 0 ) and ( GetUnitAbilityLevel(u, 'A00V') >= 1 ) {
      SetUnitAbilityLevel( u, 'A00S', 1 )
      SetUnitAbilityLevel( u, 'A00U', 1 )
      SetUnitAbilityLevel( u, 'A00V', 1 )
      UnitRemoveAbility( u, 'A00V')
      UnitRemoveAbility( u, 'A00S')
      UnitRemoveAbility( u, 'A00U')
      UnitRemoveAbility( u, 'B004')
      }elseif ( tw >= i ) and ( GetUnitAbilityLevel(u, 'A00V') == 0 ) {
      UnitAddAbility( u, 'A00V')
      UnitAddAbility( u, 'A00S')
      UnitAddAbility( u, 'A00U')
      }elseif ( tw >= ( 2 * i )) and ( GetUnitAbilityLevel(u, 'A00V') == 1 ) {
      SetUnitAbilityLevel( u, 'A00S', 2 )
      SetUnitAbilityLevel( u, 'A00U', 2 )
      SetUnitAbilityLevel( u, 'A00V', 2 )
      }elseif ( tw >= ( 4 * i )) and ( GetUnitAbilityLevel(u, 'A00V') == 2 ) {
      SetUnitAbilityLevel( u, 'A00S', 3 )
      SetUnitAbilityLevel( u, 'A00U', 3 )
      SetUnitAbilityLevel( u, 'A00V', 3 )
     }
   }
endlibrary
Изменил так, но все равно не компилится
Jack-of-shadow, из-за глобалок? Эмм, это странно, и почему так?
0
25
5 лет назад
0
KaneThaumaturge:
Я из вопроса код пробовал, а в карте да странно
0
19
5 лет назад
0
Jack-of-shadow, эти переменные описаны в кастом коде, может занести их в либу, которая будет инициализироваться первой?
Ничего не изменилось
0
18
5 лет назад
0
не в тему вопроса:
закинь вот это куда нибудь в карту и юзай (так быстрее пишется код)
define
{
	int = integer
	float = real
	void = nothing
	bool = boolean
}
в jngp так же работает подсветка синтаксиса на эти сокращения
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.