KingMaximax #1 - 3 часа назад 0

» WarCraft 3 / Лучший способ отправить юнитов в атаку

Chosen2, это просто пример, правда был другой вариант, но случайно удалил карту с ним, когда перестанавливал вар.
» Base
globals
    
    //
    constant integer MAX_BOTTLES = 12
    //
    unit Duos = null
    unit newUnit = null
    player NPC = Player(3)
    player DPC = Player(0)
    boolean waveoff = true
    boolean array check
    boolean array check2[100][100]
    boolean array offps
    real array SPAWN_X
    real array SPAWN_Y
    integer RAND = 0
    hashtable H = InitHashtable()
    group G = CreateGroup()
    timer T = null
    
    integer DELICACY_EASY = 1
    integer DELICACY_NORMAL = 2
    integer DELICACY_HARD = 3
    integer DELICACY_PEDANAR = 4
    integer DELICACY_VOLKOEB = 5
    
    integer DELICACY_SELECTED = 1
    
    string EF_DUOS_Q = "Abilities\\Weapons\\BrewmasterMissile\\BrewmasterMissile.mdl"
    
    real MXX = 5301.6
    real MIX = -5527.5
    real MXY = 5066.
    real MIY = -5516.9
   
endglobals

library Functional
    
    function IsAlive takes unit u returns boolean
    
        return IsUnitType( u, UNIT_TYPE_DEAD ) == false and GetWidgetLife(u) > 0. and u != null
            
    endfunction
    
    function PS takes string soundName returns nothing
        local sound snh = CreateSound(soundName, false, false, true, 12700, 12700, "")
        call StartSound(snh)
        call KillSoundWhenDone(snh)
        set snh = null
    endfunction

    function IsNT takes unit good, unit bad returns boolean
        return IsUnitType(bad,UNIT_TYPE_STRUCTURE)==false and IsUnitEnemy(bad, GetOwningPlayer(good)) == true and IsAlive(bad) and GetUnitAbilityLevel(bad,1097625443) == 0 and GetUnitAbilityLevel(bad,1097691750) == 0
    endfunction 
    
    function FAU takes unit u, string effname returns nothing
        call DestroyEffect(AddSpecialEffectTarget( effname, u, "origin" ))
    endfunction 
    
    function FAR takes real x, real y, string effname returns nothing
        call DestroyEffect(AddSpecialEffect( effname, x, y ))
    endfunction 
    
    function X takes real x returns real
    
        if x > MXX then
            return MXX
        endif
        
        if x < MIX then
            return MIX
        endif
        
            return x
            
    endfunction

    function Y takes real y returns real
        
        if y > MXY then
            return MXY
        endif
        
        if y < MIY then
            return MIY
        endif

        return y

    endfunction
    
    function PZ takes real h, real d, real x returns real
        return ( 4 * h / d ) * ( d - x ) * ( x / d )
    endfunction

    function dc takes real x, real y, real xx, real yy returns real
        return SquareRoot( (x - xx) * (x - xx) + (y - yy) * (y - yy) )
    endfunction

    function Ang takes real x, real y, real cx, real cy returns real
        return Atan2( y - cy, x - cx )
    endfunction

    function SetTriggerCustomValue takes integer ttype, trigger t returns nothing
        call SaveInteger( H, GetHandleId(t), StringHash("TRIGG"), ttype )
    endfunction

    function GetTriggerCustomValue takes trigger t returns integer
        return LoadInteger( H, GetHandleId(t), StringHash("TRIGG") )
    endfunction

    function ClearTriggerCutomValues takes trigger t returns nothing
        call FlushChildHashtable( H, GetHandleId(t) )
    endfunction

    function SetTimerCustomValue takes integer ttype, timer t returns nothing
        call SaveInteger( H, GetHandleId(t), StringHash("TIMER"), ttype )
    endfunction

    function GetTimerCustomValue takes timer t returns integer
        return LoadInteger( H, GetHandleId(t), StringHash("TIMER") )
    endfunction

    function ClearTimerCutomValues takes timer t returns nothing
        call FlushChildHashtable( H, GetHandleId(t) )
    endfunction

    function NewTimer takes real tm, code callback returns timer
        set T = CreateTimer()
        call TimerStart( T, tm, true, callback )
        return T
        
    endfunction


    function InitResources takes nothing returns nothing

        set SPAWN_X[0] = -4035.4
        set SPAWN_Y[0] = 3906.5
        set SPAWN_X[1] = -4802.8
        set SPAWN_Y[1] = 1891.3
        set SPAWN_X[2] = -1478.
        set SPAWN_Y[2] = 2050.4
        set SPAWN_X[3] = -524.5
        set SPAWN_Y[3] = -3289.3
        set SPAWN_X[4] = 4734.6
        set SPAWN_Y[4] = -5115.2
        set SPAWN_X[5] = 4295.7 
        set SPAWN_Y[5] = 1532.1
        set SPAWN_X[6] = -382.3
        set SPAWN_Y[6] = 4611.5
        set SPAWN_X[7] = -159.5
        set SPAWN_Y[7] = -5215.
        set SPAWN_X[8] = -397.4
        set SPAWN_Y[8] = -2952.6
        set SPAWN_X[9] = -4575.9
        set SPAWN_Y[9] = -4164.5
        
    endfunction

    function NewUnit takes player wp, integer ui, real cx, real cy, real uf returns unit

        set newUnit = CreateUnit(wp,ui,cx,cy,uf)

        return newUnit
        
    endfunction

    function GetNewUnit takes nothing returns unit

        return newUnit
        
    endfunction

    function RandSpawnXY takes nothing returns nothing
    set RAND = GetRandomInt(0,9)
    endfunction

    function GetRandSpawnX takes nothing returns real

        return SPAWN_X[RAND]
        
    endfunction

    function GetRandSpawnY takes nothing returns real

        return SPAWN_Y[RAND]
        
    endfunction

    function GetRandSpawnFace takes nothing returns real

        return GetRandomReal(0.,359.)
        
    endfunction

endlibrary
» WaveSet
struct Wave
    
    integer wavecount = 0
    integer waveclose = 0
    integer wunittype = 0
    group unitstack = null
    integer stack = 0
    real time = 0.
    boolean isRun = false
    timer waveTimer = null
    
    method destroy takes nothing returns nothing
                    call ClearTimerCutomValues(.waveTimer)
                    call DestroyTimer(.waveTimer)
                    call DestroyGroup(.unitstack)
                    set .unitstack = null
                    call .deallocate()
                    set waveoff = true
                    call BJDebugMsg("|cffFF9900SYSTEM MESSAGE|r: Wave End")
    endmethod
    
    method ReleaseUnit takes unit u returns nothing
    
        call GroupRemoveUnit(.unitstack,u)
    
    endmethod
    
    static method wavemove takes nothing returns nothing
    
    local unit e = GetEnumUnit()
    
    if GetUnitCurrentOrder(e) != 851983 then
        call IssuePointOrderById( e, 851983, GetWidgetX(Duos), GetWidgetY(Duos) )
        call RemoveGuardPosition(e)
    endif
    
    set e = null
    
    endmethod
    
    static method callback takes nothing returns nothing
    
    local thistype this = GetTimerCustomValue(GetExpiredTimer())
    local integer st = 0
    local real tt = 0.
    
    if .wavecount == .waveclose and FirstOfGroup(.unitstack) == null then
        call .destroy()
    else
        if FirstOfGroup(.unitstack) == null then
        
            if .wavecount < .waveclose then
            
                set .wavecount = .wavecount  + 1
                
            endif
            
            loop 
            exitwhen tt == .time 
                loop
                exitwhen st == .stack 
                    call RandSpawnXY()
                    call GroupAddUnit( .unitstack, NewUnit( NPC, .wunittype, GetRandSpawnX(), GetRandSpawnY(), GetRandSpawnFace()) )
                    call SetUnitUserData( GetNewUnit(), 30 ) // код моба волны
                    set st = st + 1
                endloop
                set tt = tt + .5
            endloop
                
            set st = 0
            set tt = 0.
            
        else
        
            call ForGroup( .unitstack, function thistype.wavemove )
            
        endif
        
    endif
   
    endmethod
    
    method wavelaunch takes nothing returns nothing

        if .isRun == false then
            
            set .isRun = true
            set .waveTimer = NewTimer( 1., function thistype.callback )
            call SetTimerCustomValue( this ,.waveTimer )
        endif
                
    
    endmethod
    
    static method create takes integer maxwave, integer typewave, integer delicacy returns thistype 
        
        local thistype this = thistype.allocate()
        
        set .wavecount = 0
        set .waveclose = maxwave
        set .wunittype = typewave
        set .unitstack = CreateGroup()
        set .stack = 25 + (5 * delicacy )
        if delicacy < 4 then
            set .time = .5 // (0.5 times = 1 wave 1 times = double wave ) 
        else
            set .time = 1.
        endif
        set .isRun = false
        set waveoff = false
        call .wavelaunch()
        
        return this

        
    endmethod
    
endstruct 

globals
    Wave Twave
endglobals

function Trig_WaveI_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_WaveSet takes nothing returns nothing
    set gg_trg_WaveSet = CreateTrigger(  )
    call TriggerAddAction( gg_trg_WaveSet, function Trig_WaveI_Actions )
endfunction
» WavesDeathUnreg
function Trig_WavesDeathUnreg_Actions takes nothing returns nothing

    local unit d = GetDyingUnit()
    
    if GetUnitUserData(d) == 30 then
        call SetUnitUserData(d,0)
        call Twave.ReleaseUnit(d)
    set d = null
    
endfunction

//===========================================================================
function InitTrig_WavesDeathUnreg takes nothing returns nothing
    set gg_trg_WavesDeathUnreg = CreateTrigger(  )
    call TriggerAddAction( gg_trg_WavesDeathUnreg, function Trig_WavesDeathUnreg_Actions )
    call TriggerRegisterPlayerUnitEvent( gg_trg_WavesDeathUnreg, NPC, EVENT_PLAYER_UNIT_DEATH, null )
endfunction
KingMaximax #2 - 4 часа назад 0

» WarCraft 3 / Лучший способ отправить юнитов в атаку

avuremybe:
IssuePointOrder( unit whichUnit, string order, real x, real y )
А как же:
RemoveGuardPosition(unit whichUnit) 
Чтобы единицы назад не убегали.
Chosen2, а вообще лучше систему, могу пример на vJass:e скинуть.. Есть одна заготовка.
KingMaximax #3 - 4 часа назад -1

» WarCraft 3 / Конкурс ландшафтеров Средиземья завершен!

"Одинокой горе" лавы не хватило до победы, Амон Сул так себе. Озерный город не дотянул до озёрного города, печаль. Минас Моргул неплохо кстати особенно на тему повелителя душ, ведьм и крепости тёмных сил, но маловато готичности. Остальные с пивком потянут, хотя город гавань ничего так.
KingMaximax #4 - 2 дня назад 0

» KingMaximax Off Blog / Потрошение XGM: Хроники Белых Цепей

BrEd Pitt, немного поправил текст. Не с той версии заготовок скопировал. Сон всегда бывает абы"черти-что". Не всегда он бывает ясен, однако нетуманность его протекает редко..
KingMaximax #5 - 2 дня назад 0

» 2D-Арт / Alleria

очертание дынек, я подумаю.
Да, с пропорциями я тоже подумаю)
Надеюсь, вы сделаете её как можно более женственной, при этом останется женская отвага во взгляде, который будет показывать её решимость и готовность ко битве.
KingMaximax #6 - 2 дня назад 0

» WarCraft 3 / Jass как первый ЯП?

KingMaximax, не могу говорить за всех, конечно, но лично я крайне рад, что меня не пытались научить АСМ в качестве первого языка.
Я лишь предлагал как вариант его. Ну для начало же можно и простенькие для понимания принципов, а потом уже на сложные. Хотя велосипедствовать тоже вредно, но порой некоторым нужен свой велосипед, покуда есть платные. Подходящий под своё мышление, и для воплощения своих идей яп, не так уж просто найти. Не потому, что их много, а потому, что может измениться идея, или появится новая задумка, и бывает так, в одном она легко осуществима, а в этом тяжело.
KingMaximax #7 - 2 дня назад 0

» WarCraft 3 / Jass как первый ЯП?

KingMaximax, про то насколько чист и оптимален код написанный нубом на ассемблере я даже спорить не хочу
Причём здесь новичок? Я не говорю же "Ага прочитали написали и обделалися", а обо правильном использовании, как опора понимания взаимодействия программа-устройство. Хотя скорее тут самое важное будет "Дизассемблирование и отладка", "Максимальная гибкость при работе с аппаратными ресурсами.", "Оптимизация программ по скорости выполнения.". Хотя ему врядли пока пригодится в ближайшее время.
Да, мне нужно как можно четче понимать принцип программирования, хочу получить максимально широкий и мощный старт.
Тогда лучше C++, C# или то, что Doc предложил.
KingMaximax #8 - 2 дня назад 1

» Heaven's Gallery / Эффекты на заказ

KingMaximax, такое имхо только Эльрату платно, и то не факт.
Явно не меньше тыщи рублей.
Если самому рисовать текстурку для кота, но цена явно бы сократилась. Но 1 штука, ты загнул немного))000 Я и простыми перекрашиваниями и рескинами довольствуюсь иногда, но могу кое-кого попросить чтобы сделали модель, но это надолго... Другой же друг, сам моделер, но его уже не интересует делать модели для вара ;)
Empyreal:
KingMaximax, )))))))
Понятно, спасибо за ответ.
KingMaximax #9 - 2 дня назад 0

» Heaven's Gallery / Эффекты на заказ

А можете сделать такую модель?
Призрачный(прозрачный) малюсенький кот, который переливается цветами радуги плавным сменой цветов, и ещё он махает лапами, так что остаются образы, будто поцарапан сам воздух, и в разные стороны от передних лап идут брызги крови, формой крупы.
KingMaximax #10 - 2 дня назад 2

» WarCraft 3 / Система диалогов

Можно просто использовать заготовку на основе особого фильра, и управлять при помощи дамми юнита. В Ткоке есть подобие диалога, когда нажимаешь на npc.
Для дамика сделать иконки типа 1 2 3 4, A B C D, или I, II III IV. Использовать в инвентаре как предметы-кнопки или на общей панели приказ,. где у даммика не отображаются стандартные приказы.
В общем там Blp файл или Tga с альфа каналом, где обрамление диалога прозрачно, DisplayText с различными манипуляциями, дами и способности\Предметы для выбора варианта ответа. Как-то так.
KingMaximax #11 - 2 дня назад 0

» Icons from Roy / Главная страница

Roy Mustang, почему бы вам не замутить свои обрамления? Можно по примеру некоторых, которые вложены в папках генератора иконок.
KingMaximax #12 - 3 дня назад 0

» WarCraft 3 / Система атрибутов

Облегчу задачу для нашего вопросителя: Выживаемость, навык, ум. Разве нет специальных сайтов по подобному вопросу, где описаны всевозможное виды характеристик?
KingMaximax #13 - 3 дня назад 0

» WarCraft 3 / Не отображается декорация

biridius:
Chudo Derewo, модель стандартная варовская, камень с вариациями
просто я поставил ее разрушаемой декорации - и ее видно только в редакторе
с всякими цветами и грибами все работает, а камни - нет
А но основе пологового дерева пробовали? Мне помогало...
KingMaximax #14 - 4 дня назад (отредактировано ) 0

» WarCraft 3 / Как сделать день в редакторе?

Если у вас не анло-язычный jpng, а xgm'ский(5d), то это бесполезно. Всегда будет ночь, лучше попробуйте новую сборку jpng: Jass New Gen Pack - Rebuild 1.3 , надеюсь поможет.
KingMaximax #15 - 5 дней назад (отредактировано ) 0

» WarCraft 3 / Вовремя сменить владельца, чтобы союзник надамажил союзника

Мне кажется он просто опыт набивает, нормальный человек уже давно сам всё проверил.
Сударь ClotPh, не соблаговолите задавать вопросы на те задачи, которые вы не можете разрешить сам за правду, оные требуют более дельного и детального обсуждения. Хватит уже абузить опыт.
KingMaximax #16 - 5 дней назад 0

» WarCraft 3 / Jass как первый ЯП?

nvc123:
KingMaximax, а причём тут сложнее?
и чем же полезен ассемблер?
Чистой оптимизацией, и код чище кстати. Вдобавок, он помогает выявлять куда более глубокие проблемы. А так же важных да более сложных операций, которые могут потребоваться для определённых задач, которые должны быть быстрыми, чем даст нам интерпретатор или комипилятор т.го. или иноно яп. Хотя я ничего не имею против того же lisp'a или питона. А вообще неплохо было автору определиться какой ему именно нужен яп и под какие задачи, я решил что ему просто нужно понимать принцип программирования или что-то во этом духе. Однако можно и в кросс.
KingMaximax #17 - 5 дней назад 0

» WarCraft 3 / Jass как первый ЯП?

nvc123:
а смысл учить то что проще если потом всеравно придётся переучиваться?
только время теряешь
но если так хочешь яп для изучения программирования то советую lisp
по нему есть хорошая книга SICP
Тогда уж ассемблер, это куда сложнее и полезнее. Тогда любой яп будет подвластен новоиспечённому само злому гению.
KingMaximax #18 - 5 дней назад 0

» WarCraft 3 / Jass как первый ЯП?

Лучше начинать с простых, типа Basic, QBasic или Visual Basic. А потом переходить на более сложные, кстати jass схож со синтаксисом basic, почти...Но jass это не то, что нужно для изучения.
KingMaximax #19 - 5 дней назад 0

» WarCraft 3 / type key

Не проще ли использовать перечисление enum при помощи cJassa?
KingMaximax #20 - 5 дней назад 0

» WarCraft 3 / Вовремя сменить владельца, чтобы союзник надамажил союзника

Тут лучше jass заклинание "Молнии" сделать, т.е. исккуственного молнию, которая будет поражать, как ты хочешь. Это можно провернуть с хеш-таблицей, или структуры. А применение такого рода без jass-подменок труден, ловкое смена владельца не катит. Разве, что через даммик, но и он может подвести. По этому лучше jass, или триггеры, как нравитсо.
Вот при помощи жассовой молнии, можно как сделать? Особую переменную, которая определяет стиль применения способности, от себя или под контролем вражеских чар. Да мы меняем тогда во этом случае владельца, потом забиваем в данные, что целью не может быть кастер и враги, но могут быть друзья. Молния поражает союзников, а для врага ещё и опыт, если союзник цели был убит. Правда, это довольно много пилить столько jass заклинаний, похожих даже на стандарт. Но это будет стоить того, может пригодится и для других операций.
Если я правильно понял, чтобы он кастовал и чтобы у него абилка перезаряжалась, что-то вроде некой подлости, да? Ну тут только jass пот и кровь.
KingMaximax #21 - 5 дней назад 0

» Edemium / Edemium – Trailer

Игра года! Осталось побольше примочек во движок варика, с добавлением более крутых видов абилок. Ещё больше характеристик в UI, больше видов энергии!
Осталось ещё заставлять героя реалистичн, ходить по воздуху, особенно ввысь, чтобы мочить драконов и пр. летающую нечисть. Неплохо бы ещё клифы крошить, не только декор.
KingMaximax #22 - 5 дней назад 0

» 2D-Арт / Alleria

Если честно нарисовано интересно, даже хорошо, но немного не хватает женственности Аллерии, она через-чур мужественно. А так тянет на 10 из 10. Просто ощущение, что это эльф-мужик похожий на неё.
Кстати, очертание дынек будет?
KingMaximax #23 - 5 дней назад 0

» KingMaximax Off Blog / Вкусняшка [1.2]

Кет:
кокое
Иностранное, зарубежное. Некоторые слова подсказывают название страны автора, и его произведения. Детектив Кет, думайте, многосмысл можно разгадать.
KingMaximax #24 - 5 дней назад 0

» KingMaximax Off Blog / Вкусняшка [1.2]

BrEd Pitt, да, это отсылка, но на другое произведение.
KingMaximax #25 - 6 дней назад 0

» KingMaximax Off Blog / Вкусняшка [1.2]

BrEd Pitt:
Тень петуха не красная случайно?
Красно-оранжевая (Но пусти, да, красная), а что?
KingMaximax #26 - 6 дней назад 0

» God's word: The True Way / Объявляется набор участников в Divine Style Team! #2

Сама концепция не рассчитана на мультиплеер. Тут основной упор на диалоги и сюжет, а не на бесконечное убийство мобов.
Для подобного лучше multiplayer, но это сугубо моё личное яснение, однако, просто для одиночного лучше подходит стрельбы или брод, вот это только будет скучно для одного игрока, потому, что со друзьями или другими игроками веселее. Я не говорю, что надо именно тебе делать под несколько игроков, а том, что твоя игра должна быть более веселой, тем более у тебя классов несколько, почему не добавить какую нить бабу, или ещё какого-нить персонажа, что-то вроде облика, а классы со умениями для всех.
Массовые диалоговые окна, множественное-нелинейное исполнение заданий. Можно ещё сделать нестандартные гильдии, отличающиеся во многом от других. Сюжет могут исполнить от 1 до нескольких персонажей, не затрагивая его смысловую сущность. Для такого сюжетного гения как ты, это ещё как под силу.
Не бесконечное убийство мобов, это что надо для мультипа. Зачем много мобов?? Нужно опр. кол-во на огромную миссию. А остальные могут выполнять разные поручения города\деревни, например копаться в огороде и убивать вредителей, немалых к примеру "червей землероев", которые жрут к примеру корни бахчевых...
У тебя же в роде есть или планируется система репутации и пр..
Ты так и будешь пилить GW как хобби?
KingMaximax #27 - 6 дней назад 0

» KingMaximax Off Blog / Вкусняшка [1.2]

Кристофер, я Кинг вообще-то, и да, у тебя и так много травки, даже больше чем у меня.
KingMaximax #28 - 1 неделю назад 0

» Игровые обзоры / Бывший сценарист Valve о Half-Life 3

Ох уж эти слухи, вроде Гейб показывал пример, показывающий почему он не мог и не может выпустить hl3, и то, что игра не будет выпущена в ближайшие 8-10 лет. Как же любят некоторые слухи пускать, а другие(некоторые) как мухи на пирог, слетаются на эти слухи. И давай начинать представлять, что же там будет, не слушая тех, кто серьёзно об этом говорит. А потом оказываться для обнадёженных, что всё было раздуто либо фанатами, либо просто ложные сведения. И вконец их ожидает полное разочарование..
KingMaximax #29 - 1 неделю назад 2

» Гномья графомания / Agency: жилой район Нижнего Города

Окружение, кстати, весьма хорошее. А живность типа кибер-собак, или живых котов с кибер протезами, т.е. простых животных, искусственных и пр. будет во этом роде?
Хотя, не через чур мрачновато ли сделано, али так задумано?
KingMaximax #30 - 2 недели назад 0

» God's word: The True Way / Объявляется набор участников в Divine Style Team! #2

Общая информация:Требуются талантливые кодеры. Желательно знание cJass. Вам предстоит делать различные полноэкранные менюшки и спеллы.
Вступительное задание: Свяжитесь со мной, а я дам вам координаты моего кодера. Он и проверит ваши знания Jass.
Могли бы поучиться у своего координатора по Йассу, это было бы вам даже на пользу сударь Юрий.
Grotto's Wrath: The Ten Witches имел бы больше успехов. ;)
А я уже думал, что ты уже сделал GW, но вот что... Пока ты делаешь GW, дуос уже стал директором одной кампании, и разрабатывает одну UMMORPG.
Кстати, Юра, что не пилишь свой GW под "Multiplayer".? Пришло время Unity or Unreal Time!
KingMaximax #31 - 3 месяца назад 0

» WarCraft 3 / Опустошитель

Nosferoh, кстати он напоминает немного стража у муравьиных львов. Только этот страж имеет немного другое строение головы и туловища.
Кстати неплохо было посмотреть на варовскую версию стража муравьиных львов.
прикреплены файлы
KingMaximax #32 - 3 месяца назад 4

» WarCraft 3 / 15...

Melissa:
С юбилеем, старик! Ты - лучший!
А я думал, что юбилей это 10, 20, 30 и т.д
Самая первая игра детства. И тогда хорошо было на нём пилить карты, но тогда жаль было мало возможностей. С юбилеем любимую игру в жанре стратегии, и причём первую!
А так поздравляю лучшего друга детства!
KingMaximax #33 - 3 месяца назад (отредактировано ) 0

» WarCraft 3 / Опустошитель

Неплохая модель, хорошо бы использовать для монстров, которые резко нападают с разбега. Fast walk как раз кстати. А анимации хороши, можно делать неплохие манипуляции для их особого агрессивного поведения. Для RPG или много-уровненных карт, в которых нужно доходить до победного конца — в самый раз.
Ещё бы конечно хорошо бы анимаций, типа удара эффекта ударной волны.
KingMaximax #34 - 4 месяца назад (отредактировано ) 0

» WarCraft 3 / JASS: группа или массив?

Хеш-таблица для чего была придумана? В ней же можно хранить индекс боевой единицы, используя её хендл-идентификатор. А ещё есть Set\GetUnitUserData..., если конечно он не забронирован другой системой.
KingMaximax #35 - 4 месяца назад (отредактировано ) 0

» WarCraft 3 / Лаг при первом открытии меню Задания

JaBeN_Симфер:
Простая бж функция вызывает такой же лаг, значит дело не в этом?
Попробуйте сделать Preloader для иконок, которые использует квест.
Preloader() и засунуть файл MyPreload.pld c внутренним
MyPreload.pld
function PreloadFiles takes nothing returns nothing
    //...call Preload( "war3map.wts" )
   call Preload( "ReplaceableTextures\\CommandButtons\\BTNSelectHeroOn.blp" )
	call PreloadStart() //или call PreloadEnd( 15.0 )
endfunction
Внутри WE
Preloader ("MyPreload.pld ")
// код создания квеста
//call PreloadEnd( 15.0 ) хз
KingMaximax #36 - 4 месяца назад (отредактировано ) 0

» WarCraft 3 / Лаг при первом открытии меню Задания

Лучше использовать файл строковой таблицы, war3map.wts де STRING 1 {текст} QuestSetDescription(q, "TRIGSTR_1"). Ну и это лишь пример. Лагов с таким способом, по идее не должно быть..
KingMaximax #37 - 4 месяца назад 6

» WarCraft 3 / Путешествие во времени

Создать при изучении способности таймер для героя, если вы для него делали. И каждую секунду отмерять позицию в смещая таблицу с данными местоположения единицы. Когда применяется способность то используется позиция, которая вот-вот исчезнет из списка. 10 по счёту, или самая первая в зависимости от порядка возрастания.
KingMaximax #38 - 4 месяца назад 0

» WarCraft 3 / Патч 1.28.2

Большинство игроков не знают, где у них варкрафт и что такое "папка", не говоря уже о патологической лени и нежелании лишний раз шевелиться. Не то что бы я их виню, но распространять любую модификацию файлов = ограничивать популярность карты на порядки. Недаром даже дота никогда себе такого не позволяла.
Если люди захотят то установят, главное грамотно инструкцию грамотно написать к моду, и всё ок.
Я просто не могу заорать всем тугодумам которые верят в вар3 ХД от близзов, и донести это до каждого, один тред чего тут стоит. Хотя имея немного мозгов можно понять, что да и как.
Некоторые просто сам не пробовали создавать 3D модели с нуля, им не это не ведомо, на сколько это тяжкий труд. Те думают, что это проще паренной репы для моделлеров, когда это на самом деле не так.
Может и не нужен HD ремастер, может все просто ждали исправного патча с доп. фишками, которые отбросили нужду в гримуаре и пр. фишках.
Близзарды могли бы просто по тихонь ку просто чуток дорабатывать патч 1.26 с a до d или i например...
Всё просто упирается в бабки, никакого уважения ко своему чаду. А раньше не только о прибыли думали с вк3, но и вкладывали в него душу, чтобы он особенным и делал то, для чего был предназначен. До ремастера, они не просто сделали какую-то стратегию, а особую игру, в которой каждый мог создавать свой уникальный мир или свою ветку для мира Азерота вк3, это не просто игра. А игра, в которой, каждый себя мог почувствовать не только игроком, но и разработчиком и даже творцом, да хоть богом сотворённого собой мира в карте...
KingMaximax #39 - 4 месяца назад 0

» WarCraft 3 / Патч 1.28.2

DracoL1ch:
Вы щас всерьез рассуждаете, что эти маркетолухи будут перевыпускать варкрафт ремастер? Игру, жанр которой они сами наызвают неактуальным? Да скорее исходники отдадут, чем это.
Хотя я особо и не против, хуже всё равно некуда. 1.26 форева.
Лучше тогда уж исходники от патча 1.26a..
Но ещё лучше свергнуть Близзард написав движок XGM-Strategy, который будет в Xtream раз лучше близзардского наркодвижка варика или того-же ск2. Будет он так же прост как и WE, но более изыскан да изящен. В Xtream раз больше фунционала, больше нативок. Собственный быстро читаемый скрипт XASS ил XS;
Есть ли у Blizzard совесть или все же ими правит жадность?
KingMaximax #40 - 4 месяца назад 0

» Hanabishi's Blog / Jass New Gen Pack - Rebuild

У меня скромный вопрос касательно japi. Раз вы решили немного переделать JPNG и изучить принцип работы grimoire. Вы подумывали настроить japi для импорта собственных нативок на патч 1.26a? Или же всё же, вы не планируете такого апгрейда в сборке rebuild...?
KingMaximax #41 - 4 месяца назад 1

» WarCraft 3 / Патч 1.28.2

Они уже это почти сделали дав возможность делать карты для сетки в 100+ мб.
Тут есть один не достаток, если надо менять код, то это же полная пещера.
Проще карту отдельно от архива, а архив мог подключаться как addon для карты. Чтобы приходилось обновлять не всю мапищу целиком, а лишь кусок с кодом.
Xin, ну это как про мистический warcaft IV который выйдет в 2018 году бла-бла... Который возможно будет выходить бесконечность через каждые 2 года.., но его не будет.. Хотя как знать..
KingMaximax #42 - 4 месяца назад 0

» WarCraft 3 / Патч 1.28.2

Близзарды такие близзарды, хоть бы новые функции добавили, или ключ типа customnative %Name% takes % returns % dllimport "dll" + шаблон для функций для dll'ки. Ну или неплохо бы просто подключение пользовательских mpq Архивов. И где поддержка utf-8 внутри игры для карт и кампаний, для WE? Сплошное ASCII.. разочарвание.. Лишь фикс для путей с utf...
Мультиимпорта нет... ужс..
Лишь надевание аристократических перчаток на варик для красоты.
НЗМ: Даёшь japi.dll для патча 1.26a
Ньюген с фичами вжасса припаяли к редатору? нет
Им даже собственный было лень написать, да ещё облегчить синтаксис. Они даже не додумали сделать собственные структуры. Хотя один человек-солстик сказал, что они бы сделали их криво.
KingMaximax #43 - 4 месяца назад 0

» WarCraft 3 / vJass

nvc123:
KingMaximax, с каких пор cjass это альтернатива vjass?
Я немного не правильно выразился, я имел ввиду что у него несколько иной подход. Но по сути тоже самое. Но в более облегчённой версии и инструкция на русском языке есть.
KingMaximax #44 - 4 месяца назад 0

» WarCraft 3 / vJass

Там есть примеры, по ним можно понять, что делает каждая функция или спец. ключ.
Ну можно ещё прочитать про сJass cjass.xgm.guru/manual-ru, альтернатива vJass'у
KingMaximax #45 - 4 месяца назад (отредактировано ) 0

» WarCraft 3 / Заклинания на заказ

GADees15:

Заказ

Название: Ещё нету
Метод: Всё равно
MUI: Не обязательно
Цель: Нету цели
Количество уровней: 3
Описание: Подчинение крипа(монстра) на определённое время который убил вашего героя.
Технические характеристики: 1 уровень:10 секунд
2 уровень:15 секунд
3 уровень:20 секунд
globals
    hashtable yourhash      = InitHashtable()
    trigger   YourTrigger   = null 
endglobals



scope COD initializer TriggerHeroCharmOfDeath

function IF_ofcbsh takes nothing returns boolean
    return GetUnitAbilityLevel( GetTriggerUnit(), 'your' ) > 0 
endfunction

function cofcbsh takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer id = GetHandleId(t)
    local integer timeleft = LoadInteger( yourhash, id, StringHash("CharmTime") )
    if timeleft > 0 then
        if IsUnitType(LoadUnitHandle(yourhash, id, StringHash("CharmedCreep")), UNIT_TYPE_DEAD ) then
            call DestroyTimer(t)
            if LoadUnitHandle(yourhash, id, StringHash("CharmedCreep")) != null then
                call SetUnitOwner( LoadUnitHandle(yourhash, id, StringHash("CharmedCreep")), LoadPlayerHandle(yourhash, id, StringHash("CreepPlayer")), true )
            endif
            call FlushChildHashtable( yourhash, id)
        else
            call SaveInteger( yourhash, id, StringHash("CharmTime"), timeleft - 1 )
        endif
    else
        call DestroyTimer(t)
        if LoadUnitHandle(yourhash, id, StringHash("CharmedCreep")) != null then
            call SetUnitOwner( LoadUnitHandle(yourhash, id, StringHash("CharmedCreep")), LoadPlayerHandle(yourhash, id, StringHash("CreepPlayer")), true )
        endif
        call FlushChildHashtable( yourhash, id)
    endif
    set t = null
endfunction

function CharmOfCritterBySlainHero takes nothing returns nothing
    local unit k = GetKillingUnit()
    local unit u = GetTriggerUnit()
    local integer id
    local timer t
    if GetWidgetLife(k)>.405 and  not IsUnitType( k, UNIT_TYPE_DEAD ) and k != null then
        set t = CreateTimer()
        set id = GetHandleId(t)
        call SavePlayerHandle(yourhash, id, StringHash("CreepPlayer"), GetOwningPlayer(k))
        call SaveInteger( yourhash, id, StringHash("CharmTime"), (GetUnitAbilityLevel(u, 'your') * 50) + 49 )
        call SaveUnitHandle(yourhash, id, StringHash("CharmedCreep"), k )
        call SetUnitOwner( k, GetOwningPlayer(u), true )
        call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Charm\\CharmTarget.mdl", k, "origin"))
        call TimerStart(t, .1, true, function cofcbsh )
    endif
    set t = null
endfunction

function TriggerHeroCharmOfDeath takes nothing returns nothing
    set YourTrigger = CreateTrigger()
    call TriggerAddAction( YourTrigger, function CharmOfCritterBySlainHero )
    call TriggerAddCondition( YourTrigger, Condition(function IF_ofcbsh) )
    //call TriggerRegisterDeathEvent( YourTrigger, YourUnit )
endfunction 

endscope
Вместо 'your' - rave код вашей способности
Вместо YourTrigger код вашего триггера
Вместо yourhash - ваша хеш-таблица, хоть udg_;
Героя сами добавите в триггер //call TriggerRegisterDeathEvent( YourTrigger, YourUnit ) или своим методом, где YourTrigger - ваш триггер, YourUnit - ваш герой...
KingMaximax #46 - 4 месяца назад 0

» WarCraft 3 / Триггерные скиллы в Melee

Есть способ, но он дикий. Извлечь родной .slk сданными (Переделать под свои нужды) запихнуть в микс архив,( а сам микс. импортировать в карту по пути "\redist\miles", хотя вряд ли сработает) ну или кинуть просто в под-под-папку варика "\redist\miles" или самой основной папке варика. Шаманить танцуя с бубном так, чтобы скрипт не превращал в шестерни карту, препарируя war3mapscript.j; чтобы были мечи. Но вероятность успеха равна 0.00000000000000001%
Хотя это глупо, ведь такое не исправишь, не перелопатив весь wc3, превратив его в мод wc3.
KingMaximax #47 - 4 месяца назад 0

» WarCraft 3 / local и global timer нагружаются в локальной сети?

Немного как-то бредово.
Автор, вы применяли правильное удаление и обнуление объектов типа handle, agent?
Чрезмерное создание эффектов вредит производительности... (Кадый эффект по своему снижает фпс)
Если вы ещё не удаляли дамми юниты или не делали им срок жизни (1..2 сек) и устанавливали им тип смерти не воскрешаемый без разложения, чтобы те быстро исчезали.
И вообще автору было бы полезно узнать, что может вызывать дикие лаги Ведь могут вызывать не только криво настроенные триггеры(криво написанный код), но некоторые криво настроенные способности в Р.О.
Минимально допустимый безлаговый период таймера: 0.03(0.02) сек
А вообще, лучше задавшему вопрос показать код... (Чую там орудует "TriggerSleepAction", ломающий потоки локальным таймерам; Или ещё что-то похуже )
ПН: Ледяной лягушь криворук...
KingMaximax #48 - 4 месяца назад 0

» WarCraft 3 / Оформление заданий от BLIZZARD

ScopteRectuS, что мешает распаковать из war3.mpq / war3x.mpq / war3xlocal.mpq карты кампаний из архивной папки Campaings, и открыть через WE карты этих кампаний, чтобы посмотреть как оформляет Метелица.
KingMaximax #49 - 4 месяца назад 0

» WarCraft 3 / не срабатывают триггеры инициализации (или вообще триггеры)

при замене инициализации карты на 1сек. elapsed time, все работает, но как мне вернуть, чтоб все работало с инициализации?
При инициализации не запускаются функции, которые не могут работать корректно или вообще не работать при инициализации "Map Initialization". В этих функциях описано внизу, что они не работают при "Map Initialization". Эти функции работают в потоках триггеров, которые были запущены от событий ну (или в jass, в функциях, вызванных потоком таймера).
И вообще лучше покажите код или скриншот того триггера, который инициализирует всё.
KingMaximax #50 - 4 месяца назад 1

» WarCraft 3 / Как конвентировать эти функции, чтобы заработали?

Steal nerves, по сути хендл как бы указатель(дескриптор), UINT32 или UINT64 в зависимости от арх. проц. ВМ. Он хранить адрес памяти вроде на переменную типа, в данном случае на декорацию. Просто молнию удаляли по указателю, потом это метелица исправила. В общем через этот баг удаляло декорацию по адресу, что возможно опасный вызов..
Так что тебе придётся рыться в этом мусоре и перепиливать на лад патча 1.26+, в данном случае можно будет использовать UserData и hashtable; Вот кеш(gamecache) не рекомендую.
Save\Load$type$Handle() Для хендл типов destructable. unit и т.д. (скорее всего ты знаешь)