12

» Резьня / Резьня

Скоро выпущу новую версию с фиксами багов и новым контентом!
12

» WarCraft 3 / Снижается скорость атаки

quq_CCCP, попробую сделать и отпишусь о результатах
quq_CCCP, статы и так вручаются до удара)
12

» WarCraft 3 / Краш

DracoL1ch, я играл со своими тестерами. И они писали что соединение прервано.И такое происходит довольно часто когда на 1-м боссе начинают через таймер спауниться мобы. В функции спауна не используется GetLocalPlayer
12

» WarCraft 3 / Краш

DracoL1ch, я понимаю но у меня игроки вылетают когда я не использую функцию GetLocalPlayer =(
12

» WarCraft 3 / Краш

nvc123, а насчет десинка с багнутым ландшафтом. Когда происходит этот десинк? Типо когда угодно по ходу игры? Когда объект попадает в "забагованые" координаты? И есть ли спопсоб проверить ландшафт на наличие таких ошибок?
Кстати заметил там такую тему
я объявляю локалку в одной из функций и потом в цикле при помощи нее создаю юнитов. Но потом не обнуляю локалку в конце и изначально не задаю ей значение. Как думаете может ли это служить причиной десинхрона?
local unit u

12

» WarCraft 3 / Изменение высоты юнита

Я так меняю
call UnitAddAbility ( u, 'Amrf' )
call UnitRemoveAbility( u, 'Amrf' )

call SetUnitFlyHeight ( u, z, 0.00 )
12

» WarCraft 3 / Краш

ClotPh, да предмет создается. Сейчас кину код на который у меня подозрение. Есть два босса с которых падает артефакт. Сегодня когда убили одного из этих боссов критануло у некоторых игроков. При смерти босса вызывается метод spawn ( integer it_id, real x, real y ).
з.ы: название методов конечно голимые но я не думал что мой код кто-то будет читать:D
struct mscArtefact
    static trigger roll_trig 
    static item array queue_item 
    static integer queue_cnt = 0
    static item roll_cur_item = null
    static integer roll_time = 0
    static integer roll_table_delay = 0
    static timer roll_timer = null
    static integer array roll_result
    static integer roll_cnt = 0
    static leaderboard lb = null
    
    static method add_to_queue takes item it returns nothing
        set queue_item[queue_cnt] = it
        set queue_cnt = queue_cnt + 1
    endmethod
    
    static method ger_first_from_queue takes nothing returns item
        local item it = queue_item [0]
        local integer i = 0
        loop
            set queue_item [i] = queue_item [i+1]
            set i = i + 1
            exitwhen ( i >= queue_cnt - 1 )
        endloop
        set queue_cnt = queue_cnt - 1
        return it
    endmethod
    
    static method get_winner_rnd takes nothing returns integer 
        local msc_Players plr = msc_Players.get_random ()
        local integer i = 0
        local boolean flag = true
        loop
            if ( roll_result[i] != -1 ) then
                set flag = false
            endif
            set i = i + 1
            exitwhen ( i == 8 )
        endloop
        if ( flag ) then
            set roll_result[GetPlayerId (plr.plr)] = 100
        endif
        return ger_winner ()
    endmethod
    
    static method update takes nothing returns nothing
        if ( roll_time == 0 ) then
            if ( roll_table_delay == 0 ) then
                call play_prize ( get_winner_rnd() )
            else
                set roll_table_delay = roll_table_delay - 1
            endif
        else
            set roll_time = roll_time - 1
        endif
        call LeaderboardSetLabel ( lb, "Артефакт " + GetObjectName ( GetItemTypeId ( roll_cur_item ) ) + " |cFF567C7E(" + I2S ( roll_time ) + ")|r" )
    endmethod
    
    static method play_prize takes integer id returns nothing
        local integer i = 0
        
        call DisplayTimedTextToForce ( GetPlayersAll(), 10.0, MSC_CLR_TAG_PLAYER[id] + GetPlayerName ( Player ( id ) ) + "|cFF90FF00(" + I2S ( roll_result[id] ) + ")|r" + "|cFFFFCD00 выиграл предмет|r " + GetObjectName ( GetItemTypeId ( roll_cur_item ) ) )
        call SetItemPlayer ( roll_cur_item, Player ( id ), true )
        call RemoveSavedBoolean ( HASH, 'ATFC', GetHandleId ( roll_cur_item ) )
        call msc_effectXY ( "Abilities\\Spells\\Human\\Polymorph\\PolyMorphDoneGround.mdl", GetItemX ( roll_cur_item ), GetItemY ( roll_cur_item ) )
        
        set roll_cur_item = null
        set roll_cnt = 0
        loop
            call LeaderboardRemovePlayerItem ( lb, Player (i) )
            set roll_result[i] = -1
            set i = i + 1
            exitwhen ( i == 8 )
        endloop
        call get_next ()
    endmethod
    
    static method ger_winner takes nothing returns integer
        local integer i = 0
        local integer id = 0
        loop
            if ( roll_result[i] > roll_result[id] ) then
                set id = i
            endif
            set i = i + 1
            exitwhen ( i == 8 )
        endloop
        return id
    endmethod
    
    static method roll takes nothing returns nothing
        local player p = GetTriggerPlayer ()
        local integer p_id = GetPlayerId ( p )
        local integer rnd  
        if ( roll_cur_item == null ) then
            set rnd = GetRandomInt ( 0, 100 )
        else
            if ( roll_result[p_id] == -1 ) and ( roll_table_delay == 3 ) then
                set rnd = GetRandomInt ( 0, 100 )
                call LeaderboardAddItem ( lb, GetPlayerName ( p ), rnd, p )
                call LeaderboardSortItemsBJ( lb, bj_SORTTYPE_SORTBYVALUE, false )
                call LeaderboardResizeBJ ( lb )
                set roll_result[p_id] = rnd
                set roll_cnt = roll_cnt + 1
            endif
        endif
        call DisplayTimedTextToForce ( GetPlayersAll(), 10.0, MSC_CLR_TAG_PLAYER[GetPlayerId(p)] + GetPlayerName ( p ) + "|cFFFFCD00 выбросил:|r " + I2S ( rnd ) )
        if ( roll_cnt == msc_Players.player_count ) then
            set roll_time = 0//call play_prize ( ger_winner() )
            call LeaderboardSetLabel ( lb, "Артефакт " + GetObjectName ( GetItemTypeId ( roll_cur_item ) ) + " |cFF567C7E(" + I2S ( roll_time ) + ")|r" )
        endif
    endmethod
    
    static method get_next takes nothing returns nothing
        if ( queue_cnt > 0 ) then
            set roll_cur_item = ger_first_from_queue ()
            
            call DisplayTimedTextToForce ( GetPlayersAll(), 30.0, "|cFF20F100Внимание: |r|cFFFFCD00разыгрывается артефакт |r" + GetObjectName ( GetItemTypeId ( roll_cur_item ) ) + "\n|cFFFFCD00Напишите|r -roll |cFFFFCD00чтобы принять участие в розыгрыше|r" )
            call PlaySoundBJ ( gg_snd_SecretFound )
                
            call LeaderboardSetLabel ( lb, "Артефакт " + GetObjectName ( GetItemTypeId ( roll_cur_item ) ) + " |cFF567C7E(" + I2S ( roll_time ) + ")|r" )
            call LeaderboardDisplay ( lb, true )
            
            //call LeaderboardResizeBJ ( lb )
            
            set roll_table_delay = 3
            set roll_time = 30
        else
            call LeaderboardResizeBJ ( lb )
            call LeaderboardDisplay ( lb, false )
            call PauseTimer ( roll_timer )
            call DestroyTimer ( roll_timer )
            set roll_timer = null
        endif
    endmethod
    
    static method start_quiz takes nothing returns nothing
        if ( roll_timer == null ) then
            call get_next ()
            
            set roll_timer = CreateTimer ()
            call TimerStart ( roll_timer, 1.0, true, function mscArtefact.update )
        endif
    endmethod
    
    static method spawn takes integer it_id, real x, real y returns item
        local item it = CreateItem ( it_id, x, y )
        call msc_effectXY ( "Abilities\\Spells\\Demon\\ReviveDemon\\ReviveDemon.mdl", x, y )
        call SaveBoolean ( HASH, 'ATFC', GetHandleId ( it ), true ) 
        
        call add_to_queue ( it )
        call start_quiz ()
        
        return it
    endmethod
    
    static method check takes unit u, item it returns boolean
        local boolean flag =  LoadBoolean ( HASH, 'ATFC', GetHandleId ( it ) )
        local item it_new = null
        local integer it_id
        local real x
        local real y
        if ( flag ) then
            call DisplayTimedTextToPlayer ( GetOwningPlayer ( u ), 0, 0, 10.0, "|cFFFF0505Ошибка:|r предмет сейчас разыгрывается" ) 
            
            set it_id = GetItemTypeId ( it )
            set x = GetItemX ( it )
            set y = GetItemY ( it )
            call RemoveSavedBoolean ( HASH, 'ATFC', GetHandleId ( it ) )
            call RemoveItem ( it )
            set it_new = CreateItem ( it_id, x, y )
            call SaveBoolean ( HASH, 'ATFC', GetHandleId ( it_new ), true ) 
            set roll_cur_item = it_new
        endif
        set it = null
        set it_new = null
        return flag
    endmethod
    
    static method init takes nothing returns nothing
        set lb = CreateLeaderboard ()
        call ForceSetLeaderboardBJ( lb, GetPlayersAll() )
        
        set roll_result[0] = -1
        set roll_result[1] = -1
        set roll_result[2] = -1
        set roll_result[3] = -1
        set roll_result[4] = -1
        set roll_result[5] = -1
        set roll_result[6] = -1
        set roll_result[7] = -1
    
        set roll_trig = CreateTrigger ()
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(0), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(1), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(2), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(3), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(4), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(5), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(6), "-roll", true )
        call TriggerRegisterPlayerChatEvent( roll_trig, Player(7), "-roll", true )
        call TriggerAddAction ( roll_trig, function mscArtefact.roll )
    endmethod
endstruct
12

» WarCraft 3 / Краш

nvc123, да это десинк 100%. Уже не раз случался мне игроки писали что их отключило. Однако я не понимаю что его может вызывать. При появлении босса нигде не используется GetLocalPlayer().
12

» WarCraft 3 / Вернуть кликабельность юниту после москитов

quq_CCCP, морф помог. Даже дал некоторые преимущества и позволил нереально повысить скорость атаки прыгуна) Спс за совет, сам я что-то не догадался )
12

» WarCraft 3 / Краш

DracoL1ch, да но у меня это правило. Все происходит на 1-м боссе. Или в начале когда он появляется часть игроков дисконектит. Или после его смерти босса происходит краш. Причем киает игроков с небольшой задержкой. Хотя это происходит не всегда но довольно часто
12

» WarCraft 3 / Вернуть кликабельность юниту после москитов

Я сделал спел типа омнислэша у джаггернаута. Герой прыгает по мобам в указаной области и автоатачит их. И чтобы героя нельзя было выбрать и как-то контролить им я даю ему москитов + в москитах его не атакуют мобы.
12

» WarCraft 3 / Краш

DracoL1ch, просто у меня в мапе при появлении той ошибки все валятся по очереди=\ Иногда кто-то не отваливается вовсе. Странный баг-_-
12

» WarCraft 3 / Краш

DracoL1ch, ещё такая тема что во время этого краша игроки вылетают не сразу а как бы по очереди. Это может быть изза повышения уровня ауры у мертвого юнита? Я думал что если крашит то всех сразу)
12

» WarCraft 3 / Вернуть кликабельность юниту после москитов

ClotPh, да нужно удалить москитов а затем хайд/анхайд, но после этого на юнита нельзя кликать сплеами(
12

» XGM Team / Spotlight

Заголовок: РезЬня
Краткое описание: Не ешь чудо грибы!
Ссылка на ресурс: xgm.guru/p/1580
Ссылка на изображение или гифку: xgm.guru/files/402/97665/comments/391249/LogoForPRMT.png
12

» Резьня / Резьня

Обновил инфу о карте где расписал некоторые фишки по подробней и с картинками:D
12

» Резьня / Вышла новая версия Резьни 1.74beta

ClotPh, ну хоть кто-то понимает) Хотя должен признаться что у меня в карте попадаются ошибки которые я сделал не нарочно) По мере возможности я их исправляю.