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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Утечки в скилле
Утечки в скилле
ОгинДата: Воскресенье, 08 Июня 2014, 03:51:20 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
Пилю обалденный скилл супербога черной боли и смерти, он притягивает цель к кастеру и между кастером и целью еще обалденная цепь. Все бы хорошо, но каждый каст, судя по этой системе:



Создает сотню новых хендлов, а это плохо и будет рвать башню в карте если что?????

Добавлено (08 Июня 2014, 03:51:20)
---------------------------------------------
Видно, это слишком сложно. Давайте лучше "как сдлеать чтобы моб создавался и шол?" и тему можно закрывать :D


Демон с небес у руля, вот головка от
 

sumertДата: Воскресенье, 08 Июня 2014, 09:15:49 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
может я не шарю, но зачем в этой системе нужен массив локаций, если каждая точка массива присваевается координате (0,0), а потом удаляется?

Сообщение отредактировал sumert - Воскресенье, 08 Июня 2014, 09:36:55
 

ОгинДата: Понедельник, 09 Июня 2014, 06:37:28 | Сообщение # 3
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
sumert, То-есть, система галимо показывает, а не в моем скилле дело?

Демон с небес у руля, вот головка от
 

SirNikolasДата: Понедельник, 09 Июня 2014, 13:06:29 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Система хорошая, должна показывать правильно. Код спелла в студию.

 

ОгинДата: Вторник, 29 Июля 2014, 17:38:37 | Сообщение # 5
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
SirNikolas, Ну... Воть:

Код
function Trig_askjdhakjh2_Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit att = LoadUnitHandle(udg_Hash,GetHandleId(t),1)
local unit ett = LoadUnitHandle(udg_Hash,GetHandleId(t),2)
local lightning LI = LoadLightningHandle(udg_Hash,GetHandleId(t),3)
local real r = AngleBetweenPoints(Location(GetUnitX(att), GetUnitY(att)), Location(GetUnitX(ett), GetUnitY(ett)))
local real x = GetUnitX(ett) - 35 * Cos(r * 0.0174532)
local real y = GetUnitY(ett) - 35 * Sin(r * 0.0174532)
local real jji = LoadReal(udg_Hash,GetHandleId(t),4)
  if DistanceBetweenPoints(Location(GetUnitX(att),GetUnitX(att)), Location(GetUnitX(ett),GetUnitX(ett))) > 60 and IsUnitAliveBJ(att) == true  
   call SetUnitX(ett,x)
   call SetUnitY(ett,y)
   call MoveLightningEx( LI, true, GetUnitX(att), GetUnitY(att), jji, GetUnitX(ett), GetUnitY(ett), 0 )
   else
   call DestroyLightning( LI )
   call SetUnitPathing( ett, true )
    if GetTerrainTypeBJ(Location(GetUnitX(ett), GetUnitY(ett))) == 'Yrtl'
    call ExplodeUnitBJ( ett )
    endif
   call FlushChildHashtable(udg_Hash,GetHandleId(t))
   call DestroyTimer(t)  
endif  
set att = null
set ett = null
set t = null
endfunction

function askjdhakjh2 takes unit att, unit ett, real jji returns nothing  
     local timer t = CreateTimer()
     local lightning LI = AddLightningEx( "CHIM", true, GetUnitX(att), GetUnitY(att), 0, GetUnitX(ett), GetUnitY(ett), 0 )
     call SetUnitPathing( ett, false )
     call SaveUnitHandle(udg_Hash,GetHandleId(t),1,att)
     call SaveUnitHandle(udg_Hash,GetHandleId(t),2,ett)
     call SaveLightningHandle(udg_Hash,GetHandleId(t),3,LI)
     call SaveReal(udg_Hash,GetHandleId(t),4,jji)
     call TimerStart(t,0.05,true,function Trig_askjdhakjh2_Timer)
     set att = null
     set ett = null
     set t = null
endfunction


Демон с небес у руля, вот головка от
 

FEARKILLERДата: Вторник, 29 Июля 2014, 19:06:21 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
Ужасный код, зачем брать координаты, чтобы потом создать точки, а затем юзать их в БЖ функциях, которые переводят обратно эти точки в координаты и при всём этом, ещё и не удаляя точки за собой? И ещё, ты создаёшь переменные для координат, которые юзаешь в коде один единственный раз, но не создаёшь переменные для функций, которые используешь в коде по 300 раз и каждый раз вызываешь их по новой. Ну и последнее, можно переменные немного покороче писать, чтобы код был немного читабельнее?

Код
function LoopTimer takes nothing returns nothing
     local timer t=GetExpiredTimer()
     local integer h=GetHandleId(t)
     local lightning l=LoadLightningHandle(udg_Hash,h,3)
     local unit u=LoadUnitHandle(udg_Hash,h,1)
     local unit e=LoadUnitHandle(udg_Hash,h,2)
     local real x1=GetWidgetX(u)
     local real y1=GetWidgetY(u)
     local real x2=GetWidgetX(e)
     local real y2=GetWidgetY(e)
     local real a=bj_RADTODEG*Atan2(y2-y1,x2-x1)
     if SquareRoot((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))>60. and GetWidgetLife(u)>.405 then
         call SetUnitX(e,x2-35.*Cos(a*bj_DEGTORAD))
         call SetUnitY(e,y2-35.*Sin(a*bj_DEGTORAD))
         call MoveLightningEx(l,true,x1,y1,LoadReal(udg_Hash,h,4),x2,y2,.0)
     else
         call DestroyLightning(l)
         call SetUnitPathing(e,true)
         if GetTerrainType(x2,y2)=='Yrtl'then
             call SetUnitExploded(e,true)
             call KillUnit(e)
         endif
         call FlushChildHashtable(udg_Hash,h)
         call PauseTimer(t)
         call DestroyTimer(t)
     endif    
     set u=null
     set e=null
     set l=null
     set t=null
endfunction
function askjdhakjh2 takes unit u,unit e,real z returns nothing    
     local timer t=CreateTimer()
     local integer h=GetHandleId(t)
     call SetUnitPathing(e,false)
     call SaveReal(udg_Hash,h,4,z)
     call SaveUnitHandle(udg_Hash,h,1,u)
     call SaveUnitHandle(udg_Hash,h,2,e)
     call SaveLightningHandle(udg_Hash,h,3,AddLightningEx("CHIM",true,GetWidgetX(u),GetWidgetY(u),.0,GetWidgetX(e),GetWidgetY(e),.0))
     call TimerStart(t,.05,true,function LoopTimer)
     set u=null
     set e=null
     set t=null
endfunction


Делаю из воды вино, хожу по воде...


Сообщение отредактировал FEARKILLER - Пятница, 01 Августа 2014, 10:07:54
 

ОгинДата: Пятница, 08 Августа 2014, 02:27:36 | Сообщение # 7
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
Вместо ста хэндлов создает сорок. Я бы продолжил обсуждение, но твои
Цитата FEARKILLER ()
Ужасный код
Цитата FEARKILLER ()
можно переменные немного покороче писать, чтобы код был немного читабельнее?
выдают в тебе сраную школоту. Не пиши больше по теме, мне нужно мнение экспертов.


Демон с небес у руля, вот головка от
 

SlonickДата: Пятница, 08 Августа 2014, 10:53:08 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1688
Награды: 0
Репутация: 247
Блокировки:
Можно даммиком лайфдрейнить

 

totti20Дата: Пятница, 08 Августа 2014, 21:44:55 | Сообщение # 9
5 уровень
Группа: Проверенные
Сообщений: 138
Награды: 0
Репутация: 0
Блокировки:
Огин, да хоть и криво написано, просто не забывай про утечки и устраняй это.
 

ОгинДата: Пятница, 08 Августа 2014, 22:11:49 | Сообщение # 10
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
totti20, Да утечек вроде нет никаких, по координатам все сделано. В целом, я нашел какую-то сверхоптимизированную карту с отталкиванием и вставил туда эту систему, за пять минут натекло двести тысяч хэндлов и карту не крашнуло и не залагало, так что есть мнение, что то, что у меня - не критично.

Цитата Slonick ()
Можно даммиком лайфдрейнить

Што.


Демон с небес у руля, вот головка от
 

BorodachДата: Пятница, 08 Августа 2014, 22:24:05 | Сообщение # 11
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Возможно из-за способности Волна силы? Основа с какой способности взята?

Karamba
 

ОгинДата: Суббота, 09 Августа 2014, 01:24:26 | Сообщение # 12
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
Borodach, Молот бурь.

Демон с небес у руля, вот головка от
 

BorodachДата: Суббота, 09 Августа 2014, 09:05:00 | Сообщение # 13
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Огин, У тебя не обнуляется локальная переменная молнии.

Karamba
 

ОгинДата: Суббота, 09 Августа 2014, 20:55:28 | Сообщение # 14
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
Borodach, А молнию-то на кой обнулять. Это же все равно что обнулять целочисленные и юнитов.

Демон с небес у руля, вот головка от
 

BorodachДата: Суббота, 09 Августа 2014, 21:14:42 | Сообщение # 15
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Ты где такое прочитал, что молнии не надо обнулять?

Добавлено (09 Августа 2014, 21:14:42)
---------------------------------------------
И у fearkiller'a код тот же что и у тебя (по конечном результате), ток правильнее написан.


Karamba
 

ОгинДата: Воскресенье, 10 Августа 2014, 07:41:14 | Сообщение # 16
1 уровень
Группа: Пользователи
Сообщений: 13
Награды: 0
Репутация: 0
Блокировки:
Цитата Borodach ()
правильнее


Пиздец странная характеристика. Ну да ладно, я понял, что у меня как всегда все правильно.


Демон с небес у руля, вот головка от
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Утечки в скилле
  • Страница 1 из 1
  • 1
Поиск:

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