XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Желтая пресса: обучающие статьи
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
DioD

offline
Опыт: 45,134
Активность:
пустой набор символов звучит крайне глупо, строка это число которое логически представлено как набор символов
на сколько мне помниться одни символ это 8бит, тоесть строка это набор бит, но никак не букв
Старый 10.10.2006, 12:40
dk

offline
Опыт: 60,293
Активность:
буква != символ
Цитата:
тоесть строка это набор бит

Любая переменная тогда набор бит.
Старый 10.10.2006, 12:53
J
expert
offline
Опыт: 48,447
Активность:
DioD ты цепляешся к таким молочам и так их описываеш... скажи нормальную ошибку.. я исправлю.
Старый 10.10.2006, 12:59
DioD

offline
Опыт: 45,134
Активность:
это нормальная ошибка
Старый 10.10.2006, 13:09
J
expert
offline
Опыт: 48,447
Активность:
лано... где еще ошибка? (я не против того что они есть! ты просто скажи "где?")
Старый 10.10.2006, 13:14
DioD

offline
Опыт: 45,134
Активность:
code (функция)
В этой переменой может содержаться функция, вроде бы все должно быть понятно, но Только минус этого типа в том что он не может, явятся массивом
БЫТЬ СОЗДАНЫМ УДАЛЁННЫМ ИЛИ ИЗМЕНЁНЫМ ВО ВРЕМЯ ИГРЫ.
это кто писать будет?
Старый 10.10.2006, 13:23
J
expert
offline
Опыт: 48,447
Активность:
поправил... эти 2 ошибки являются:
Цитата:
содержащей в себе грубые ошибки что искать придёться долго и счастливо.
даже очень счастливо.

?
Старый 10.10.2006, 13:56
zibada

offline
Опыт: отключен
забыто главное правило оптимизации:
не оптимизировать то, что оптимизировать не надо.

другими словами, нет смысла городить огород, чтобы в пару (да пусть даже в 10) раз ускорить кусок кода, который по факту занимает, допустим, ~1% от времени работы всего скрипта, и вклада в возможность наличия тормозов не вносит.

про это часто забывают, в итоге получаются громоздкие навороты, усложняющие понимание, а толку от которых - почти нуль.
Старый 10.10.2006, 15:18
p01nTT

offline
Опыт: 11,160
Активность:
Кстати - один вопрос: а можно изменить хендл юниту? Вроде это переменная.
Старый 11.10.2006, 13:39
DioD

offline
Опыт: 45,134
Активность:
хэндл это номер и он не меняется у юнитов кроме редких случаев которые особого значения не имеют так как это баг
Старый 11.10.2006, 14:28
p01nTT

offline
Опыт: 11,160
Активность:
А если сейвиш юнит в кэш - то в другой карте у него будет такой-же хендл?
Старый 11.10.2006, 19:53
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от !
забыто главное правило оптимизации:
не оптимизировать то, что оптимизировать не надо.

вот и я об этом же... имхо, это должно быть написано в самом начале огромными буквами
Старый 13.10.2006, 03:54
DioD

offline
Опыт: 45,134
Активность:
Это должен знать каждый,и писать нигде этого не надо.
Старый 13.10.2006, 07:40
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
DioD а нигде нет документации по утечкам (какие функции их создают)?
Старый 13.10.2006, 14:15
J
expert
offline
Опыт: 48,447
Активность:
Dead Jay утечки создаются из-за кривых рук, принцепи совсем уж утечек избежать нельзя... но вот сократить на много - это пожалуста... функции сами по себе (большенство) не создают утечки, а создают обьекты, удаление которых джазер игнорирует тем самым вызывая утечку.
те функции которые сами по себе создают утечки, это функции только из BJ, и создают они утечку или нет - видно на глаз, по телу функции
Старый 13.10.2006, 14:25
DioD

offline
Опыт: 45,134
Активность:
вот так бред ты написал, утечек избежать можно полностью, для этого надо знать две вещи
1 задротство != оптимизация
2 строки есть зло
3 чем функция проще тем она лучше
Старый 13.10.2006, 15:02
J
expert
offline
Опыт: 48,447
Активность:
DioD, ты перепишеш движок вара? експлодер прав.. тебе лижбы задратся, покажы хоть один _очень_ хороший спел, сделаный _полностью_ без утечек, покрайне мере я никогда не видел...

Отредактировано Jon, 13.10.2006 в 15:13.
Старый 13.10.2006, 15:06
DioD

offline
Опыт: 45,134
Активность:
а я щас покажу код

Код:
function Trig_Glow_Condition takes nothing returns boolean
    return IsSpell('A002')
endfunction

function Glow_Main takes nothing returns nothing
    local integer Slot_I_1 = ForGetSDA(4)

    if GetTriggerExecCount(udg_LH_Events[Slot_I_1]) == 100 then
         call ForCleanSDA(Slot_I_1)
         call SetUnitUserData(udg_LH_Units[Slot_I_1+256],GetUnitUserData(udg_LH_Units[Slot_I_1+256])-1)
         if GetUnitUserData(udg_LH_Units[Slot_I_1+256]) == 0 then
             call UnitRemoveAbility(udg_LH_Units[Slot_I_1+256],'Ahea')
         endif
     endif         
    if GetTriggerEventId() == EVENT_UNIT_DEATH then
         call ForCleanSDA(Slot_I_1)
    else
    if udg_LH_Logic[Slot_I_1] then
         call SetWidgetLife(udg_LH_Units[Slot_I_1+256],GetWidgetLife(udg_LH_Units[Slot_I_1+256])+3)
    else
         call UnitDamageTarget(udg_LH_Units[Slot_I_1],udg_LH_Units[Slot_I_1+256],10,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_MAGIC,WEAPON_TYPE_WHOKNOWS)
    endif    
    endif
endfunction

function Trig_Glow_Action takes nothing returns nothing
    local integer Slot_I_1 = ForSetSDA(4)
    set udg_LH_Units[Slot_I_1]     = GetTriggerUnit()
    set udg_LH_Units[Slot_I_1+256] = GetSpellTargetUnit()
    if GetUnitUserData(udg_LH_Units[Slot_I_1+256]) == 0 then
        call UnitAddAbility(udg_LH_Units[Slot_I_1+256],'Ahea')
    endif
    call SetUnitUserData(udg_LH_Units[Slot_I_1+256],GetUnitUserData(udg_LH_Units[Slot_I_1+256])+1)
    call Register(Slot_I_1,0.1,function Glow_Main)
    call TriggerRegisterUnitEvent(udg_LH_Events[Slot_I_1],udg_LH_Units[Slot_I_1+256],EVENT_UNIT_DEATH)
    if IsUnitAlly(udg_LH_Units[Slot_I_1+256],GetOwningPlayer(udg_LH_Units[Slot_I_1]))then
        set udg_LH_Effects [Slot_I_1]= AddSpecialEffectTarget("Abilities\\Spells\\Items\\StaffOfSanctuary\\Staff_Sanctuary_Target.mdl",udg_LH_Units[Slot_I_1+256],"chest")
        set udg_LH_Logic[Slot_I_1] = TRUE
    else
        set udg_LH_Effects [Slot_I_1]= AddSpecialEffectTarget("Abilities\\Spells\\Orc\\Voodoo\\VoodooAuraTarget.mdl",udg_LH_Units[Slot_I_1+256],"overhead")
    endif    
endfunction

function InitTrig_Glow takes nothing returns nothing
    set gg_trg_Glow =CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Glow,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(gg_trg_Glow,Condition(function Trig_Glow_Condition))
    call TriggerAddAction( gg_trg_Glow, function Trig_Glow_Action )
    call PreloadSpell('A002')
endfunction
Старый 13.10.2006, 15:35
free0n
Бумбарявка
offline
Опыт: 4,736
Активность:
Jon скажу просто - Пасиба за нужную и полезную статью! А самое главное понятную!
Старый 13.10.2006, 23:22
DioD

offline
Опыт: 45,134
Активность:
ну и что про код без утечек все сразу забыли и как результат я написал несуществующую конструкцию?
Старый 15.10.2006, 07:34

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:46.