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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » Jass наработка "Взрыв"
Jass наработка "Взрыв"
jul9lsnikДата: Четверг, 19 Августа 2010, 22:18:42 | Сообщение # 1
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
В данной теме я прошу оставить свои коментарии о моей маленькой наработке. Сама наработка прикреплена к статье(если не прикрепилась то вот ссыль)) http://ssdepositfiles.com/files/lb79mgtmu).
P.S. Просьба не флудить и не пинать мну за наличие бомжей)) я исправлю потом)
P.P.S. Если отзывы будут "выше среднего" я создам пакетик таких наработок.)
(Добавлено)
Инфа про юзание спела лежит в коменте с названием ЧИТАТЬ
Код выкладываю:



RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©


Сообщение отредактировал jul9lsnik - Четверг, 19 Августа 2010, 23:05:39
 

DreiiДата: Четверг, 19 Августа 2010, 22:50:20 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
jul9lsnik, и че я так и не понял что твой спелл делает хДД тупо молот грома?

 

H_A_PKДата: Четверг, 19 Августа 2010, 22:51:42 | Сообщение # 3
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
jul9lsnik, код в шапку выложи пожалуйста :).

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

jul9lsnikДата: Четверг, 19 Августа 2010, 23:00:49 | Сообщение # 4
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
Dreii, читай комент с эпическим названием: "ЧИТАТЬ".
H_A_PK, Выложил)


RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©
 

H_A_PKДата: Четверг, 19 Августа 2010, 23:16:39 | Сообщение # 5
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (jul9lsnik)
function Damage takes nothing returns nothing
if GetOwningPlayer(udg_back) != GetOwningPlayer(GetEnumUnit()) then
call UnitDamageTargetBJ( udg_back, GetEnumUnit(), I2R(udg_damage), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
endif
endfunction

function explode takes unit u, location loc, string efect, integer damage,integer r returns nothing
local unit b
local integer damage1
call AddSpecialEffectLocBJ( loc, efect )
set b = udg_back
set damage1 = udg_damage
set udg_back = u
set udg_damage = damage
call ForGroupBJ( GetUnitsInRangeOfLocAll(I2R®, loc), function Damage )
set udg_back = b
set udg_damage = damage1
set u = null
set loc = null
set efect = ""
set damage = 0
set r = 0
set b = null
set damage1 = 0
endfunction

Аааа бж бж бж, омг


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

jul9lsnikДата: Четверг, 19 Августа 2010, 23:19:26 | Сообщение # 6
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
Quote (H_A_PK)
Аааа бж бж бж, омг

Просил же не пинать) почти все исправил)) дамаг исправлю потом))
Code
function Damage takes nothing returns nothing
     if GetOwningPlayer(udg_back) != GetOwningPlayer(GetEnumUnit()) then
         call UnitDamageTargetBJ( udg_back, GetEnumUnit(), I2R(udg_damage), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
     endif
endfunction

function explode takes unit u, location loc, string efect, integer damage,integer r returns nothing
     local unit b
     local integer damage1
     call AddSpecialEffectLoc( efect,loc )
     set b = udg_back
     set damage1 = udg_damage
     set udg_back = u
     set udg_damage = damage
     call ForGroup( GetUnitsInRangeOfLocAll(I2R(r), loc), function Damage )
     set udg_back = b
     set udg_damage = damage1
     set u = null
     set loc = null
     set efect = ""
     set damage = 0
     set r = 0
     set b = null
     set damage1 = 0
endfunction


RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©
 

H_A_PKДата: Четверг, 19 Августа 2010, 23:34:17 | Сообщение # 7
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (jul9lsnik)
call ForGroup( GetUnitsInRangeOfLocAll(I2R®, loc), function Damage )

тут надо местами поменять вроде


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

jul9lsnikДата: Четверг, 19 Августа 2010, 23:35:24 | Сообщение # 8
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
Quote (H_A_PK)
тут надо местами поменять вроде

Не ненадо)
Code
function ForGroupBJ takes group whichGroup, code callback returns nothing

Code
native ForGroup takes group whichGroup, code callback returns nothing


RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©
 

H_A_PKДата: Четверг, 19 Августа 2010, 23:41:14 | Сообщение # 9
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (jul9lsnik)
call AddSpecialEffectLoc( efect,loc )

советую заменить
Code
call DestroyEffect(AddSpecialEffectLoc( efect,loc ))

Добавлено (19-08-2010, 23:41)
---------------------------------------------

Quote (jul9lsnik)
UnitDamageTargetBJ

тоже надо от бж избавится


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Четверг, 19 Августа 2010, 23:40:12
 

jul9lsnikДата: Четверг, 19 Августа 2010, 23:45:20 | Сообщение # 10
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
пардон)) забыл почистить)
Quote (H_A_PK)
советую заменить Codecall DestroyEffect(AddSpecialEffectLoc( efect,loc ))
но эт не страшно)) Вот смотри)

Добавлено (19-08-2010, 23:45)
---------------------------------------------

Quote (H_A_PK)
UnitDamageTargetBJ тоже надо от бж избавится

Птом избавлюсь, ща влом тягать типы дамага)
Стоп... кста а зачем от него избавляться?
Code
function UnitDamageTargetBJ takes unit whichUnit, unit target, real amount, attacktype whichAttack, damagetype whichDamage returns boolean
       return UnitDamageTarget(whichUnit, target, amount, true, false, whichAttack, whichDamage, WEAPON_TYPE_WHOKNOWS)
endfunction


RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©


Сообщение отредактировал jul9lsnik - Четверг, 19 Августа 2010, 23:49:59
 

H_A_PKДата: Четверг, 19 Августа 2010, 23:54:15 | Сообщение # 11
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (jul9lsnik)
call AddSpecialEffectLoc( efect,loc )
call delef(GetLastCreatedEffectBJ())

да нафиг полед ваит =)
Quote (H_A_PK)
call DestroyEffect(AddSpecialEffectLoc( efect,loc ))

эффект не ищезнит пока не проиграет анимацию.
Это для того чтоб он память не грузил )


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

jul9lsnikДата: Пятница, 20 Августа 2010, 01:16:25 | Сообщение # 12
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
Quote (H_A_PK)
эффект не ищезнит пока не проиграет анимацию. Это для того чтоб он память не грузил )

т.к. с ефом можно после создания много чиго делать(а также потому, что я не знал про эту фишку :D ) я использовал PoledWait :p , а сверху приписан измененный таймер))
Code
function PoledWait takes real duration returns nothing   
        local timer t   
        local real  timeRemaining   

        if (duration > 0) then   
            set t = CreateTimer()   
            call TimerStart(t, duration, false, null)   
            loop   
                set timeRemaining = TimerGetRemaining(t)   
                exitwhen timeRemaining <= 0   

                // If we have a bit of time left, skip past 10% of the remaining   
                // duration instead of checking every interval, to minimize the   
                // polling on long waits.   
                if (timeRemaining > bj_POLLED_WAIT_SKIP_THRESHOLD) then   
                    call TriggerSleepAction(0.1 * timeRemaining)   
                else   
                    call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)   
                endif   
            endloop   
            call DestroyTimer(t)   
        endif   
        set t=null   
        set timeRemaining = 0.00   
endfunction

Добавлено (20-08-2010, 01:16)
---------------------------------------------
H_A_PK, все бомжи были убиты =) Вот final edition:



RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©


Сообщение отредактировал jul9lsnik - Пятница, 20 Августа 2010, 00:04:22
 

H_A_PKДата: Пятница, 20 Августа 2010, 01:21:04 | Сообщение # 13
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (jul9lsnik)
set damage = 0
set r = 0

числа можно не онулять,
но тут как хочешь =)


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

jul9lsnikДата: Пятница, 20 Августа 2010, 01:25:09 | Сообщение # 14
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
Quote (H_A_PK)
но тут как хочешь =)

Хочу))) они тоже утечные((

Добавлено (20-08-2010, 01:25)
---------------------------------------------
Дак как сама наработка? Делать из таких пак?


RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©
 

H_A_PKДата: Пятница, 20 Августа 2010, 12:45:05 | Сообщение # 15
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Я понимаю, ты учишся жассу. Но нароботка уж слишком проста =)

проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

DragoNДата: Пятница, 20 Августа 2010, 13:26:44 | Сообщение # 16
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (jul9lsnik)
set efect = ""
set damage = 0
set r = 0
set damage1 = 0

зачем?
и где удаление точки?
лучше на координатах было бы в разы


El Psy Congroo
 

jul9lsnikДата: Пятница, 20 Августа 2010, 13:50:25 | Сообщение # 17
6 уровень
Группа: Заблокированные
Сообщений: 183
Награды: 0
Репутация: 19
Блокировки:
Quote (H_A_PK)
Я понимаю, ты учишся жассу. Но нароботка уж слишком проста =)

Нуу... несвсем) Просто задолбался делать громадные махины на похожие спелы... проще создать 10 спелов с помощью 1 строки, а не городить для каждого велик))
Вот пример:
Спелл 1 - создается дорожка из ледяных взрывов + антибаф на скорость.
Спелл 2 - 3 круга из огня каждый наносит на Н урона меньше предыдущего.
Спелл 4 - Из под земли бьет зеленый луч поражая попавшихся в него врагов.
Как ты видиш все спелы содержат огромный кусок кода. Я просто запихал его в свою наработку. В итоге размер трига для всех этих спелов уменьшился в 3 раза, а скорость написания увеличилась)

Добавлено (20-08-2010, 13:49)
---------------------------------------------

Quote (Dragon93)
зачем? и где удаление точки? лучше на координатах было бы в разы

Ща подожди и будут те точки... мне влом было развращаться на них)))

Добавлено (20-08-2010, 13:50)
---------------------------------------------

Quote (Dragon93)
зачем?

Мне так больше нравится))))


RFTD
Знай наших
Ну плин очепятолся пару разъ! Ну ы чьто7.©
Не понимать шутки, это пошло ^_^ ©
Если ты умрёш - то я тебя зарежу!©
Простите меня. Кажется я умер.©
 

DreiiДата: Пятница, 20 Августа 2010, 13:50:35 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Все такие умные в джассе)) ни слова не понял)

 

H_A_PKДата: Пятница, 20 Августа 2010, 14:02:55 | Сообщение # 19
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Code
function explode takes unit u, location loc, string efect, integer damage,integer r returns nothing
      local unit b =null
      local integer damage1=null
      local group g = GetUnitsInRangeOfLocAll(I2R(r), loc)
      call DestroyEffect(AddSpecialEffectLoc( efect,loc ))
      set b = udg_back
      set damage1 = udg_damage
      set udg_back = u
      set udg_damage = damage
      call ForGroup( g, function Damage )
      call GroupClear(g)
      call DestoyGroup(g)
      set udg_back = b
      set udg_damage = damage1
      set g = null
      set b = null
endfunction

я бы так сделал =)

Quote (Dragon93)
и где удаление точки?

зачем ?

Quote (jul9lsnik)
function explode takes unit u, location loc, string efect, integer damage,integer r returns nothing

она ведь может ещё пригодится


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец
 

DragoNДата: Пятница, 20 Августа 2010, 14:19:49 | Сообщение # 20
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (H_A_PK)
AddSpecialEffectLoc( efect,loc

точка то создаётся и висит в памяти

Добавлено (20-08-2010, 14:19)
---------------------------------------------
и всё же я стою на координах)


El Psy Congroo
 

H_A_PKДата: Пятница, 20 Августа 2010, 14:23:43 | Сообщение # 21
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Code
function explode takes unit u, location loc, string efect, integer damage,integer r returns nothing
        local unit b =null
        local integer damage1=0
        local real x = GetLocationX(loc)
        local real y = GetLocationY(loc)
        local group g = GetUnitsInRangeOfLocAll(I2R(r), loc)
        call DestroyEffect(AddSpecialEffect( efect,x,y ))
        set b = udg_back
        set damage1 = udg_damage
        set udg_back = u
        set udg_damage = damage
        call ForGroup( g, function Damage )
        call GroupClear(g)
        call DestoyGroup(g)
        set udg_back = b
        set udg_damage = damage1
        set g = null
        set b = null
endfunction

так blink ?


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Пятница, 20 Августа 2010, 14:26:45
 

DragoNДата: Пятница, 20 Августа 2010, 15:19:31 | Сообщение # 22
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
H_A_PK, нет
прямо в функции
писал это я топикстартеру


El Psy Congroo
 

Banzay89Дата: Пятница, 20 Августа 2010, 15:29:47 | Сообщение # 23
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
call ForGroup( GetUnitsInRangeOfLocAll(I2R®, loc), function Damage )

заменяеться на:
Code

local group gr=CreateGroup()
local unit    c=твой юнит
local unit    g   
call GroupEnumUnitsInRange(gr,GetUnitX(c),GetUnitY(c),300.00,null) // call GroupEnumUnitsInRange(gr,GetLocationX(l),GetLocationY(l),300.00,null)
loop
set  g=FirstOfGroup(gr)
exitwhen g==null
if IsUnitType(g, UNIT_TYPE_STRUCTURE) == false and GetWidgetLife(g) > 0.405 and IsUnitEnemy(g, GetOwningPlayer(c)) == true then
//
//
endif
call GroupRemoveUnit(gr,g)
endloop

Quote
они тоже утечные((

Числа не утечны!!!

Добавлено (20-08-2010, 15:26)
---------------------------------------------
ЗЫ: если "это" считать наработкой, то моя арена полна наработок! lol

Добавлено (20-08-2010, 15:29)
---------------------------------------------

Quote
local unit b =null
local integer damage1=null

бесполезное действие обьявлять и сразу обнулять локалку. При каждом вызове функции создаеться новый набор локальных переменных, так что это глупое действие


Сообщение отредактировал Banzay89 - Пятница, 20 Августа 2010, 15:27:35
 

H_A_PKДата: Пятница, 20 Августа 2010, 16:34:56 | Сообщение # 24
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
Quote (Banzay89)
сполезное действие обьявлять и сразу обнулять локалку. При каждом вызове функции создаеться новый набор локальных переменных, так что это глупое действие

не не не, это нормально. Доказываю:
Code
local unit u= null
set u = LoadUnitHandle(Hash,GetHandleId(blabla),1)
   if u == null then
    \\ нифига и не произошло , тоесть либо хеш не иницилизирован , либо в ечейке пусто.
   endif

таким образом всё путем

Добавлено (20-08-2010, 16:34)
---------------------------------------------

Code
function explode takes unit u, real x, real y, string efect, integer damage,real r returns nothing

         local unit b =null
         local integer damage1=0
         local group gr=CreateGroup()
         local unit    g =null  

         call GroupEnumUnitsInRange(gr,x,y,r,null)
         call DestroyEffect(AddSpecialEffect( efect,x,y ))
         set b = udg_back
         set damage1 = udg_damage
         set udg_back = u
         set udg_damage = damage

          loop
               set  g=FirstOfGroup(gr)
              exitwhen g==null
            if IsUnitType(g, UNIT_TYPE_STRUCTURE) == false and GetWidgetLife(g) > 0.405 and IsUnitEnemy(g, GetOwningPlayer(udg_back)) == true then
          call UnitDamageTarget( udg_back, g, I2R(udg_damage), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS )
            endif
             call GroupRemoveUnit(gr,g)
          endloop
   
         call GroupClear(gr)
         call DestoyGroup(gr)
         set udg_back = b
         set udg_damage = damage1
         set g = null
         set b = null

endfunction


проклятье ляжет на любого
кто дочитает до конца
нет не дочитывай не надо
остановись ну всё капец


Сообщение отредактировал H_A_PK - Пятница, 20 Августа 2010, 16:21:50
 

Banzay89Дата: Пятница, 20 Августа 2010, 16:35:38 | Сообщение # 25
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
local unit u= null
set u = LoadUnitHandle(Hash,GetHandleId(blabla),1)
if u == null then
\\ нифига и не произошло , тоесть либо хеш не иницилизирован , либо в ечейке пусто.
endif

а если сделать так

Code
local unit u
set u = LoadUnitHandle(Hash,GetHandleId(blabla),1)  
    if u == null then  
     \\ нифига и не произошло , тоесть либо хеш не иницилизирован , либо в ечейке пусто.  
    endif

то абсолютно ничего не измениться)
 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » Jass наработка "Взрыв"
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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