Сейчас 15:37:52 Пятница, 29 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Страшная функция
[Вопрос] Страшная функция
xomachДата: Вторник, 25 Июня 2013, 21:35:03 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
Мне жутко не нравится эта функция, прям глаза мозолит, но как ее улучшить, я не знаю. Интересно узнать ваше мнение и советы
Изменено:

Думаю, доп. комментов к коду не надо. На все вопросы отвечу.




Сообщение отредактировал xomach - Среда, 26 Июня 2013, 19:34:45
 

Ty3uKДата: Вторник, 25 Июня 2013, 21:49:24 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
xomach, юзай одну глобальную группу для лупов. Так вроде норм.

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

GoodieДата: Среда, 26 Июня 2013, 17:52:48 | Сообщение # 3
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:
Код просто не читабельный, а так все нормально же

Но все же окей, подотру сопельки. Ужасно бесит сочетание jass с cjass
А также, где расстановка? Ты как будто код из заднего прохода вытащил
Код
    define
     {
          private D1 = Dummy[i]  
          private D2 = Dummy[j]  
     }  
      
     private group Group = CreateGroup()

private void Loop(){  
     player owner  
     real min
     bool ok
     unit u  
     for( int i = 0 ; i < DummyMax ; i++ )
     {
          ok=true  
          SetUnitPosition( D1.u, GetX(D1.u) + D1.spdX, GetY(D1.u) + D1.spdY )  
          if (i != DummyMax-1)
         {  
               for( int j = i+1 ; j <= DummyMax ; j++ )
               {  
                    if ( Dist( GetX(D1.u), GetY(D1.u), GetX(D2.u), GetY(D2.u) ) < D1.r + D2.r + D2.speed() )  
                    {  
                         min = Min(D1.hp, D2.hp)  
                         D1.hp-=min  
                         D2.hp-=min  
                         if ( D2.hp < MIN_HP ) { DelDummy(D2) }  
                         if ( D1.hp < MIN_HP )  
                         {  
                    DelDummy(D1)  
                    i--  
                    ok=false  
                    break  
                         }  
                     }  
             }  
         }  
         if ( ok )
         {  
             owner=GetOwningPlayer(D1.u)  
             GroupEnumUnitsInRange(g,GetX(D1.u),GetY(D1.u),D1.r,null)  
             do
             {
                u=FirstOfGroup(Group)  
                if IsUnitEnemy( u, owner )
                {  
                     UnitDamageTarget( D1.u, u, D1.hp, false, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_MAGIC, WEAPON_TYPE_WHOKNOWS )  
                 }
                 GroupRemoveUnit( Group, u )
             }whilenot( u==null )  
         }  
     }  
     owner=null  
  }

Добавлено (26 Июня 2013, 17:52:48)
---------------------------------------------
как в 1 классе....
Переменные задаются с начала кода, а не в конце или в середине.... -_-


cJass рулит!
Power of Mighty[Work In Progress]
 

Ty3uKДата: Среда, 26 Июня 2013, 18:40:52 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Goodie, с чего вдруг? cJASS дает такую возможность. :)

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

xomachДата: Среда, 26 Июня 2013, 19:19:16 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
Goodie, расстановка==отступы? Это в местном [ code ] табуляция фиговая, так все норм. А объявление удобней перед использованием делать, понятней потом. Но да, не читабельно :( в том-то и проблема
а забытое
Код

    GroupRemoveUnit( Group, u )    

я долго искал :)




Сообщение отредактировал xomach - Среда, 26 Июня 2013, 19:19:57
 

GoodieДата: Среда, 26 Июня 2013, 19:23:09 | Сообщение # 6
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:
Ty3uK,

Дает то дает:

Код
    void  blabla()
     {
         bool isUnitTroll = true
         if (isUnitTroll)
         {
             real wow = 0.3827
             int z = 0x00
         }
     }


Но когда хочется посмотреть в скомплимированный код, то получаешь это:

Код
function blabla takes nothing returns nothing
local boolean isUnitTroll=true
local real cjlocgn_00000000
local integer cjlocgn_00000001
if ( isUnitTroll ) then
set cjlocgn_00000000=0.3827
set cjlocgn_00000001=0x00
endif
endfunction


cJass рулит!
Power of Mighty[Work In Progress]
 

xomachДата: Среда, 26 Июня 2013, 19:33:03 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
Goodie, и что плохого?

 

Ty3uKДата: Среда, 26 Июня 2013, 19:36:21 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Goodie, я знаю.
xomach, объявишь юнита в блоке - не сможешь обнулить в конце. Ну и не только юнита, офк.


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

xomachДата: Среда, 26 Июня 2013, 19:47:16 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
Ty3uK, ну как бы считается, что если ты внутри блока объявляешь переменную, то только там и используешь => и обнуляешь в конце блока.
П.С. обновил код




Сообщение отредактировал xomach - Среда, 26 Июня 2013, 19:48:54
 

Ty3uKДата: Среда, 26 Июня 2013, 19:54:08 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
xomach, глобальную группу юзай, сказал же.

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

xomachДата: Среда, 26 Июня 2013, 20:20:25 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
Ty3uK, ну я и юзаю, просто в локалку ее сую для скорости. Или не стоит так делать? Я просто в какой-то статье это давно еще видел

 

Ty3uKДата: Среда, 26 Июня 2013, 20:37:33 | Сообщение # 12
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Какая скорость? Глупости. Заводишь одну глобальную группу и энумишь юнитов в нее. В любом участке кода.


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

GoodieДата: Четверг, 27 Июня 2013, 00:43:26 | Сообщение # 13
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:

Умора... Больше нагрузки, чем скорости. Я же тебе дал код готовый с глобальной группой


cJass рулит!
Power of Mighty[Work In Progress]
 

xomachДата: Четверг, 27 Июня 2013, 00:47:25 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 484
Награды: 0
Репутация: 128
Блокировки:
Goodie, говорю же, просто в статье какой-то увидел :) уже исправился.

 

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

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