Сейчас 14:38:22 Четверг, 28 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Проблема с кодом
[Вопрос] Проблема с кодом
mazahanДата: Четверг, 16 Мая 2013, 00:22:19 | Сообщение # 1
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
Недавно начал осваивать jass , не могу понять в чём код неверен?

function Trig_____________________________________029_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00N' ) ) then
return false
endif
return true
endfunction

function Trig_____________________________________029_Actions takes nothing returns nothing
set udg_varvar_d_caster = GetSpellAbilityUnit()
local integer i = 200
loop
exitwhen i > 1200
call CreateUnitAtLoc (1, 'h00F', GetOwningPlayer(udg_varvar_d_caster) , PolarProjectionBJ (GetUnitLoc(udg_varvar_d_caster),i,GetUnitFacing(udg_varvar_d_caster) ), bj_UNIT_FACING)
set udg_varvar_d_dummy[1]= GetLastCreatedUnit()
set i = i+200
endloop
endfunction

//===========================================================================
function InitTrig_____________________________________029 takes nothing returns nothing
set gg_trg_____________________________________029 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_____________________________________029, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_____________________________________029, Condition( function Trig_____________________________________029_Conditions ) )
call TriggerAddAction( gg_trg_____________________________________029, function Trig_____________________________________029_Actions )
endfunction


Сообщение отредактировал mazahan - Четверг, 16 Мая 2013, 00:25:11
 

VampirismNewGenДата: Четверг, 16 Мая 2013, 00:39:37 | Сообщение # 2
6 уровень
Группа: Проверенные
Сообщений: 197
Награды: 0
Репутация: 103
Блокировки:
В чем неверен? А что работает не так?

Добавлено (16 Мая 2013, 00:39:37)
---------------------------------------------
И перед тем как конвертировать триггеры в текст, убирай у них русские имена.
А то режет глаза такое:

Цитата
InitTrig_____________________________________029
 

lawsonДата: Четверг, 16 Мая 2013, 00:55:26 | Сообщение # 3
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
все нормально код работает!

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

mazahanДата: Четверг, 16 Мая 2013, 09:07:36 | Сообщение # 4
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
Но карта не грузится :(

Добавлено (16 Мая 2013, 09:03:19)
---------------------------------------------
Именно после его написания

Добавлено (16 Мая 2013, 09:07:36)
---------------------------------------------
И я проверил , удалив его , без него всё норм

 

SirNikolasДата: Четверг, 16 Мая 2013, 10:49:48 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата (mazahan)
local integer i = 200
Локальные переменные в JASS2 должны находиться в верху функции.


 

mazahanДата: Четверг, 16 Мая 2013, 15:43:28 | Сообщение # 6
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
function Trig_Tr_029_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00N' ) ) then
return false
endif
return true
endfunction

function Trig_Tr_029_Actions takes nothing returns nothing
local integer i = 200
set udg_varvar_d_caster = GetSpellAbilityUnit()
loop
exitwhen i > 1200
call CreateUnitAtLoc (1, 'h00F', GetOwningPlayer(udg_varvar_d_caster) , PolarProjectionBJ (GetUnitLoc(udg_varvar_d_caster),i,GetUnitFacing(udg_varvar_d_caster) ), bj_UNIT_FACING)
set udg_varvar_d_dummy[1]= GetLastCreatedUnit()
set i = i+200
endloop
endfunction

//===========================================================================
function InitTrig_029 takes nothing returns nothing
set gg_trg_029 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Tr_029, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Tr_029, Condition( function Trig_Tr_029_Conditions ) )
call TriggerAddAction( gg_trg_Tr_029, function Trig_Tr_029_Actions )
endfunction

Вот , всё ровно не катит.
 

DiabfallДата: Четверг, 16 Мая 2013, 17:01:02 | Сообщение # 7
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Цитата (mazahan)
set gg_trg_029 = CreateTrigger( )

Цитата (mazahan)
gg_trg_Tr_029
 

SirNikolasДата: Четверг, 16 Мая 2013, 17:43:08 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата (mazahan)
set udg_varvar_d_dummy[1]= GetLastCreatedUnit()
Здесь точно должна быть единица?


 

BruДата: Четверг, 16 Мая 2013, 18:20:40 | Сообщение # 9
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1950
Блокировки:
Цитата
if ( not ( GetSpellAbilityId() == 'A00N' ) ) then
return false
endif
return true

получше
Цитата
return GetSpellAbilityId() == 'A00N'
 

Ty3uKДата: Четверг, 16 Мая 2013, 19:04:33 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Цитата (mazahan)
Недавно начал осваивать jass


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

BruДата: Четверг, 16 Мая 2013, 19:36:16 | Сообщение # 11
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1950
Блокировки:
call CreateUnitAtLoc (1
native CreateUnitAtLoc takes player id
ты уверен, что хочешь создать синему игроку?
и вообще тебе надо муи?

Добавлено (16 Мая 2013, 19:35:05)
---------------------------------------------
Код
function Trig_looptrg_Actions takes nothing returns nothing
   local integer i = 200
   local real x
   local real y
   if (GetSpellAbilityId() == 'A00N') then
    set udg_varvar_d_caster = GetSpellAbilityUnit()
    loop
     exitwhen i > 1200
     x = GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i * Cos(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD)
     y = GetLocationY(GetUnitLoc(udg_varvar_d_caster)) + i * Sin(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD)   
     call CreateUnitAtLoc (GetOwningPlayer(udg_varvar_d_caster), 'h00F', Location(x, y), bj_UNIT_FACING)
     set udg_varvar_d_dummy[1] = bj_lastCreatedUnit
     set i = i+200
    endloop
   endif
endfunction

//===========================================================================
function InitTrig_looptrg takes nothing returns nothing
      set gg_trg_looptrg = CreateTrigger(  )
   call TriggerRegisterAnyUnitEventBJ( gg_trg_looptrg, EVENT_PLAYER_UNIT_SPELL_EFFECT )
      call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions )
endfunction


Подулучшил.
И всё-таки.
Цитата (SirNikolas)
Здесь точно должна быть единица

Добавлено (16 Мая 2013, 19:36:16)
---------------------------------------------
Ну и замечание,

Цитата (Bru)
udg_varvar_d_caster

длинновато название переменной


Сообщение отредактировал Bru - Четверг, 16 Мая 2013, 19:35:23
 

DiabfallДата: Четверг, 16 Мая 2013, 19:51:49 | Сообщение # 12
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Цитата (Bru)
local integer i = 200
local real x

Цитата (Bru)
GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i

Чё в последних JNGP можно сразу real и integer складывать?


Сообщение отредактировал Diabfall - Четверг, 16 Мая 2013, 20:20:06
 

Ty3uKДата: Четверг, 16 Мая 2013, 20:10:51 | Сообщение # 13
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Diabfall, их всегда можно было складывать, и не только в JNGP. Но неявное приведение типов - плохо.

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DiabfallДата: Четверг, 16 Мая 2013, 20:19:54 | Сообщение # 14
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
Цитата (Ty3uK)
Diabfall, их всегда можно было складывать, и не только в JNGP. Но неявное приведение типов - плохо.

У меня на сборке от скорпа вроде как ошибку выдавало. hmm А чем это плохо?
 

Ty3uKДата: Четверг, 16 Мая 2013, 20:23:41 | Сообщение # 15
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Начиная от ошибок округления и заканчивая странными результатами. Плюс, на это идут затраты вычислительной мощности.

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

BruДата: Четверг, 16 Мая 2013, 21:47:42 | Сообщение # 16
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1950
Блокировки:
Diabfall, ну как бы есть целое число
и число с точкой
когда их нельзя было сложить?
 

mazahanДата: Четверг, 16 Мая 2013, 23:54:04 | Сообщение # 17
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
Цитата (SirNikolas)
Здесь точно должна быть единица?


Какая разница , это массив , без него пробовал , тоже самое.
Реальную уже убрал

Цитата (Bru)
call CreateUnitAtLoc (1
native CreateUnitAtLoc takes player id
ты уверен, что хочешь создать синему игроку?
и вообще тебе надо муи?

Добавлено (16 Мая 2013, 19:35:05)
---------------------------------------------
Код
function Trig_looptrg_Actions takes nothing returns nothing
local integer i = 200
local real x
local real y
if (GetSpellAbilityId() == 'A00N') then
set udg_varvar_d_caster = GetSpellAbilityUnit()
loop
exitwhen i > 1200
x = GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i * Cos(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD)
y = GetLocationY(GetUnitLoc(udg_varvar_d_caster)) + i * Sin(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD)
call CreateUnitAtLoc (GetOwningPlayer(udg_varvar_d_caster), 'h00F', Location(x, y), bj_UNIT_FACING)
set udg_varvar_d_dummy[1] = bj_lastCreatedUnit
set i = i+200
endloop
endif
endfunction

//===========================================================================
function InitTrig_looptrg takes nothing returns nothing
set gg_trg_looptrg = CreateTrigger(  )
call TriggerRegisterAnyUnitEventBJ( gg_trg_looptrg, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions )
endfunction

Подулучшил.
И всё-таки.
Цитата (SirNikolas)
Здесь точно должна быть единица
Добавлено (16 Мая 2013, 19:36:16)
---------------------------------------------
Ну и замечание,
Цитата (Bru)
udg_varvar_d_caster

длинновато название переменной


Мне не нужен готовый код.
Мне нужно понять , почему не работает мой код.
Насчёт переменной , какая разница?Кроме той , что дольше писать.

Добавлено (16 Мая 2013, 23:49:16)
---------------------------------------------
И да , причём тут синий игрок? Юнит создаётся для игрока владеющим varvar_d_caster.

Добавлено (16 Мая 2013, 23:50:25)
---------------------------------------------
Цитата (Bru)
Diabfall, ну как бы есть целое число
и число с точкой
когда их нельзя было сложить?


Сложить то можно наверняка , но если в результате должно получиться целое , а получиться реальное , то хз что будет:)

Добавлено (16 Мая 2013, 23:51:40)
---------------------------------------------
И да чем лучше

x = GetLocationX(GetUnitLoc(udg_varvar_d_caster)) + i * Cos(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD)
y = GetLocationY(GetUnitLoc(udg_varvar_d_caster)) + i * Sin(GetUnitFacing(udg_varvar_d_caster) * bj_DEGTORAD)
call CreateUnitAtLoc (GetOwningPlayer(udg_varvar_d_caster), 'h00F', Location(x, y), bj_UNIT_FACING)

От более короткого

call CreateUnitAtLoc (1, 'h00F', GetOwningPlayer(udg_varvar_d_caster) , PolarProjectionBJ (GetUnitLoc(udg_varvar_d_caster),i,GetUnitFacing(udg_varvar_d_caster) ), bj_UNIT_FACING)

Добавлено (16 Мая 2013, 23:52:17)
---------------------------------------------
Цитата (Diabfall)
set gg_trg_029 = CreateTrigger( )

Цитата (mazahan)
gg_trg_Tr_029


Исправил , не то)

Добавлено (16 Мая 2013, 23:54:04)
---------------------------------------------
Цитата (Ty3uK)
Недавно начал осваивать jass



Именно , и для этого я создал тему здесь , чтобы мне помогли.Не понял суть твоего сообщения.


Сообщение отредактировал mazahan - Четверг, 16 Мая 2013, 23:57:50
 

Ty3uKДата: Пятница, 17 Мая 2013, 08:48:52 | Сообщение # 18
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я не тебе писал, а Бруталусу.

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

sumertДата: Пятница, 17 Мая 2013, 09:22:45 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
GetUnitLoc разве не вызывает утечки?
Вообще можно же объеденить строчки присваивания переменной с созданием юнита:
set udg_varvar_d_dummy[1] = CreateUnitAtLoc( GetOwningPlayer(udg_varvar_d_caster), 'h00F'l, Location(x, y), bj_UNIT_FACING))


Сообщение отредактировал sumert - Пятница, 17 Мая 2013, 09:24:17
 

ВолчачкаДата: Пятница, 17 Мая 2013, 10:01:07 | Сообщение # 20
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
Цитата (sumert)
set udg_varvar_d_dummy[1] = CreateUnitAtLoc( GetOwningPlayer(udg_varvar_d_caster), 'h00F'l, Location(x, y), bj_UNIT_FACING))

лол
Цитата (sumert)
GetUnitLoc

Вызывает, как и
Цитата (sumert)
Location

Ведь он тоже точку создаёт)
set udg_varvar_d_dummy[1] = CreateUnit(GetOwningPlayer(udg_varvar_d_caster), 'h00F', x, y, 270.)
^ Проще так будет.

Добавлено (17 Мая 2013, 10:01:07)
---------------------------------------------
Код

function Trig_looptrg_Actions takes nothing returns nothing
local integer i = 200
local unit c = GetSpellAbilityUnit()
local real x
local real y
local player p = GetOwningPlayer(c)
loop
exitwhen i > 1200
x = GetUnitX(c) + I2R(i) * Cos(GetUnitFacing(c) * bj_DEGTORAD)
y = GetUnitY(c) + I2R(i) * Sin(GetUnitFacing(c) * bj_DEGTORAD)
call  CreateUnit(p 'h00F', x, y, 270.)
set i = i+200
endloop
set c = null
set p =null
endfunction

function Trig_looptrg_Condition takes nothing returns boolean
return GetSpellAbilityId() == 'A00N'
endfunction

//===========================================================================
function InitTrig_looptrg takes nothing returns nothing
local integer i = 0
set gg_trg_looptrg = CreateTrigger(  )
call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions )
call TriggerAddCondition( gg_trg_looptrg, Condition(function Trig_looptrg_Condition) )
loop
       call TriggerRegisterPlayerUnitEvent( gg_trg_Regen, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null )
       set i = i + 1
exitwhen i > 11
endloop
endfunction    


Сообщение отредактировал Волчачка - Пятница, 17 Мая 2013, 10:18:02
 

lawsonДата: Пятница, 17 Мая 2013, 10:15:38 | Сообщение # 21
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
хавнокодеры!

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Пятница, 17 Мая 2013, 10:20:21
 

ВолчачкаДата: Пятница, 17 Мая 2013, 10:25:01 | Сообщение # 22
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
А можно ещё так:
Код

function Trig_looptrg_Actions takes nothing returns nothing
local integer i = 200
local unit c = GetSpellAbilityUnit()
local real x
local real y
local real F = GetUnitFacing(c)
local real cF = Cos(F * bj_DEGTORAD)
local real sF = Sin(F * bj_DEGTORAD)
local player p = GetOwningPlayer(c)
loop
exitwhen i > 1200
set F = I2R(i)
x = GetUnitX(c) + F * cF
y = GetUnitY(c) + F * sF
call  CreateUnit(p 'h00F', x, y, 270.)
set i = i+200
endloop
set c = null
set p =null
endfunction

function Trig_looptrg_Condition takes nothing returns boolean
return GetSpellAbilityId() == 'A00N'
endfunction

//===========================================================================
function InitTrig_looptrg takes nothing returns nothing
local integer i = 0
set gg_trg_looptrg = CreateTrigger(  )
call TriggerAddAction( gg_trg_looptrg, function Trig_looptrg_Actions )
call TriggerAddCondition( gg_trg_looptrg, Condition(function Trig_looptrg_Condition) )
loop
        call TriggerRegisterPlayerUnitEvent( gg_trg_Regen, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null )
        set i = i + 1
exitwhen i > 11
endloop
endfunction     

Цитата (lawson)
гавнокодеры!

Молодец.

Добавлено (17 Мая 2013, 10:25:01)
---------------------------------------------

Цитата (lawson)
хавнокодеры!

Цитата (lawson)
Сообщение отредактировал lawson - Пятница, 17 Май 2013, 10:20:21

Double Molodec
 

BruДата: Пятница, 17 Мая 2013, 15:05:38 | Сообщение # 23
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1950
Блокировки:
Цитата (mazahan)
Мне не нужен готовый код.
Мне нужно понять , почему не работает мой код.

Потому что он толст и нарушена логика.
Тебе предлагают решения
А ты говоришь
Херня
 

mazahanДата: Пятница, 17 Мая 2013, 16:32:37 | Сообщение # 24
5 уровень
Группа: Проверенные
Сообщений: 105
Награды: 0
Репутация: 5
Блокировки:
Цитата (Bru)
Потому что он толст и нарушена логика.
Тебе предлагают решения
А ты говоришь
Херня

Я не говорю херня)
Где нарушена логика?Я этого от вас и добиваюсь)
 

ВолчачкаДата: Пятница, 17 Мая 2013, 17:42:22 | Сообщение # 25
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
mazahan, тебе просто создать несколько даммиков в заданном направлении, или ты будешь их использовать ещё?
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Проблема с кодом
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz