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

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

Ответ
 
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Баг карты - выкидывает после найма героев
Создал я свою мапу, в которой есть триггер, отлавливающий любой урон нанесённый юнитом (SDMSystem, из наработок) и в зависимости от урона нанёсшему его дают опыт (урон / 2) и голд (урон / 4).
Но вот беда - после выбора героя (по сети), игрок почему-то вылетает, кроме хоста (т.е. меня)

Сама карта вот http://rapidshare.com/files/105507555/mj4ka.w3x.html если кто может объяснить в чём проблема и как исправить - прошу

Ещё раз оговорюсь - вылетает игрок в момент выбора героя, при этом хост не дисконектится, наверное получается нестыковка информации...
Старый 07.04.2008, 11:17
Омега

offline
Опыт: 12,033
Активность:
Кэш не юзал?
Старый 07.04.2008, 11:25
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Юзал разумеется - но баг я кажется нашёл, он почему-то в триггере

Код:
function Trig_Chooser_Actions takes nothing returns nothing
    call SetUnitPositionLoc( GetSoldUnit(), GetRandomLocInRect(gg_rct________________001) )
    call SmartCameraPanBJ( GetOwningPlayer(GetSoldUnit()), GetUnitLoc(GetSoldUnit()), 1.50 )
endfunction

//===========================================================================
function InitTrig_Chooser takes nothing returns nothing
    set gg_trg_Chooser = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Chooser, EVENT_PLAYER_UNIT_SELL )
    call TriggerAddAction( gg_trg_Chooser, function Trig_Chooser_Actions )
endfunction


событие: боевая единица продает юнита (юнит в таверне, нанятый другим юнитом (сданием игрока))
действие: мгновенно переместить купленную боевую единицу в случайную точку зоны и пеевести на купленного юнита камеру

Когда мапу запускал по сети тока с этим триггером, то челы вылетали, я ппц почему...
Старый 07.04.2008, 11:47
Лось

offline
Опыт: 7,223
Активность:
Не используй БЖ. Используй ф-ию PanCameraToTimed.
Старый 07.04.2008, 12:00
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Цитата:
Сообщение от Лось
Не используй БЖ. Используй ф-ию PanCameraToTimed.


проблема бага не в камере, это точно, хотя попробую, но наврятли, ещё идеи? именно этот триггер заставляет после покупки героя вылететь игрока (за исключением хоста)
Старый 07.04.2008, 12:07
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
что мешает дать человеческое название ректу? не говоря уж о том чтобы пользоваться SetUnitX/Y....
Кстати багнутость продаж и loose item-ов уже нашла отражение в багах) предлагаю до сетПозишн вставить вэйт 0.00 хотябы
Старый 07.04.2008, 12:11
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Выкидывает почему-то любой триггер, который моментально передвигает юнита в случайную точку региона, при чём если юнит хоста - то вылетают все, кроме хоста...ппц
Старый 07.04.2008, 12:45
adic3x

offline
Опыт: 108,439
Активность:
Код:
function SmartCameraPanBJ takes player whichPlayer, location loc, real duration returns nothing
    local real dist
    if (GetLocalPlayer() == whichPlayer) then
        // Use only local code (no net traffic) within this block to avoid desyncs.

        set dist = DistanceBetweenPoints(loc, GetCameraTargetPositionLoc())
        if (dist >= bj_SMARTPAN_TRESHOLD_SNAP) then
            // If the user is too far away, snap the camera.
            call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), 0)
        elseif (dist >= bj_SMARTPAN_TRESHOLD_PAN) then
            // If the user is moderately close, pan the camera.
            call PanCameraToTimed(GetLocationX(loc), GetLocationY(loc), duration)
        else
            // User is close enough, so don't touch the camera.
        endif
    endif
endfunction
хз, разве не повод для десинка?)
Старый 07.04.2008, 14:02
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
в каком месте?
Старый 07.04.2008, 14:25
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Из игры выкидывает вот этот триггер

Код:
function Trig_Teleport_Actions takes nothing returns nothing
    local integer i = 1
    set i = GetRandomInt(1, 8)
    call SetUnitPositionLoc( GetEnteringUnit(), GetRandomLocInRect(udg_obl[i]) )
    call SmartCameraPanBJ( GetOwningPlayer(GetEnteringUnit()), GetUnitLoc(GetEnteringUnit()), 1.50 )
endfunction

//===========================================================================
function InitTrig_Teleport takes nothing returns nothing
    set gg_trg_Teleport = CreateTrigger(  )
    call TriggerRegisterEnterRectSimple( gg_trg_Teleport, gg_rct_Portal )
    call TriggerAddAction( gg_trg_Teleport, function Trig_Teleport_Actions )
endfunction


Когда юнит входит в небольшую зону возле декорации мерцающих ворот - его переносит в одну из областей на карте (udg_obl проверял, 8 ячеек массива заполнены областями на карте) то игрок владевщий юнитом вылетает из игры, почему и как с этим бороться??
Старый 08.04.2008, 01:48
Toadcop

offline
Опыт: 54,313
Активность:
happy_horror ну попробуй методом тыка определить в чём проблема т.е. сначало отключи камеру (//) если будет дальше кикать отключи установку позиции =) ну короче вот так.
РанДом может десинкать... если его какнить локально юзать хотя в твоём случие вроде норм. кстати у меня был случай когда просто вызов GetLocalPlayer() десинхронизировал т.е. сравнение без действий =) я такое первый раз видел... (ну тогда это камера в твоём случие) но ты потестируй.
Старый 08.04.2008, 03:16
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
Попробуй тот же триггер и те же действия на гуи. В нём, как правило, меньше багов =). Ещё попробуй этот триггер удалить и создать с нуля. Мне это пар раз помогало =)
Старый 08.04.2008, 07:07
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
спс за советы, попробую - а не где случаем не написан, ну список чтоли, функций которые вызывают дисконект в мультиплеерных мапах?
Старый 08.04.2008, 07:22
FREEZE_ball
Cataclysm => жара
offline
Опыт: 15,247
Активность:
о_О а такие есть?
Старый 08.04.2008, 07:39
ZLOBICH
Kicked by XimikS
offline
Опыт: 4,727
Активность:
call SmartCameraPanBJ вызывает десинк, сам с этим сталкивался
Старый 08.04.2008, 13:55
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Цитата:
Сообщение от FREEZE_ball
о_О а такие есть?


скачай мапу из моего первого поста и ты убедишся в этом на 100%
Первый выкид происходит при найме героя, если таверна сверху в углу, а Второй при входе в зону портала - там 100% вылетает игрок, при чём если туда войдёт хост, то вылетят все остальные
Старый 08.04.2008, 19:46
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Цитата:
Сообщение от ZLOBICH
call SmartCameraPanBJ вызывает десинк, сам с этим сталкивался


так и есть, проверил, оно самое и оказалось ) а близзарды уроды просто, криворукие причём, не могли понормальному функцию сделать...это ещё хорошё, если тока эта функция диск, а смарт камеру можно заменить чем-нибудь не дисконектящим?
Старый 09.04.2008, 06:56
Ответ

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

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

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

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



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