Сейчас 02:39:07 Четверг, 5 марта, 2026 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
GetLocalPlayer() и десонхранизация
ДесантникДата: Суббота, 06 Августа 2011, 18:56:25 | Сообщение # 1
U.N.R.E.A.L.
Группа: Проверенные
Сообщений: 1348
Награды: 2
Репутация: 635
Блокировки:
Кароче, я через кс использовал эту функцию, но когда я направлял способность на цель, то игрока выкидывало (понятно, что из-за десинхронизации). Объясните, в чём здесь проблема?



[ Страница проектов F.S.B.(Обновление) ]
Долгих 6 лет на Инфо... Oh Shiiiiii...
 

SirNikolasДата: Суббота, 06 Августа 2011, 19:10:03 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Десантник, перепиши триггер текстом, либо конвертируй в код. У меня изображение не грузится.

 

ДесантникДата: Суббота, 06 Августа 2011, 19:18:31 | Сообщение # 3
U.N.R.E.A.L.
Группа: Проверенные
Сообщений: 1348
Награды: 2
Репутация: 635
Блокировки:
Code
function Trig_Blind_Photon_Conditions takes nothing returns boolean
     if ( not ( GetSpellAbilityId() == 'A01T' ) ) then
         return false
     endif
     return true
endfunction

function Trig_Blind_Photon_Actions takes nothing returns nothing
     local player zzz = GetOwningPlayer(GetSpellTargetUnit())
     if GetLocalPlayer() == zzz then
     call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.50, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 100.00, 100.00, 0 )
     call TriggerSleepAction( 6.00 )
     call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 5.00, "ReplaceableTextures\\CameraMasks\\White_mask.blp", 100.00, 100.00, 100.00, 0 )
     endif
     set zzz = null
endfunction

//===========================================================================
function InitTrig_Blind_Photon takes nothing returns nothing
     set gg_trg_Blind_Photon = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_Blind_Photon, EVENT_PLAYER_UNIT_SPELL_EFFECT )
     call TriggerAddCondition( gg_trg_Blind_Photon, Condition( function Trig_Blind_Photon_Conditions ) )
     call TriggerAddAction( gg_trg_Blind_Photon, function Trig_Blind_Photon_Actions )
endfunction



[ Страница проектов F.S.B.(Обновление) ]
Долгих 6 лет на Инфо... Oh Shiiiiii...
 

SirNikolasДата: Суббота, 06 Августа 2011, 20:08:08 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Прикольное заклинание. Мне кажется, проблема в TriggerSleepAction(...). Сейчас попробую переписать.

Добавлено (06-08-2011, 20:06)
---------------------------------------------

Code
function Trig_Blind_Photon_Conditions takes nothing returns boolean
     //raw-код способности
     return GetSpellAbilityId() == 'A01T'
endfunction

function Trig_Blind_Photon_Timer takes nothing returns nothing
     local handle h = GetExpiredTimer()
     local integer i = 0
     loop
         exitwhen h == udg_BlindPhoton_Timer[i]
         set i = i + 1
     endloop
     set udg_BlindPhoton_Boolean[i] = not udg_BlindPhoton_Boolean[i]
     if udg_BlindPhoton_Boolean[i] then
         if GetLocalPlayer() == Player(i) then
             call EnableUserUI(false)
             //Текстура
             call SetCineFilterTexture("ReplaceableTextures\\CameraMasks\\White_mask.blp")
             call SetCineFilterBlendMode(BLEND_MODE_BLEND)
             call SetCineFilterTexMapFlags(TEXMAP_FLAG_NONE)
             call SetCineFilterStartUV(0, 0, 1, 1)
             call SetCineFilterEndUV(0, 0, 1, 1)
             //Цвет и прозрачность
             call SetCineFilterStartColor(255, 255, 255, 255)
             call SetCineFilterEndColor(255, 255, 255, 0)
             //Время ввода изображения
             call SetCineFilterDuration(5.)
             call DisplayCineFilter(true)
         endif
         //Время ввода изображения
         call TimerStart(udg_BlindPhoton_Timer[i], 5., false, function Trig_Blind_Photon_Timer)
     elseif GetLocalPlayer() == Player(i) then
         call DisplayCineFilter(false)
         call EnableUserUI(true)
     endif
     set h = null
endfunction

function Trig_Blind_Photon_Actions takes nothing returns nothing
     local player p = GetOwningPlayer(GetSpellTargetUnit())
     local integer i = GetPlayerId(p)
     if TimerGetRemaining(udg_BlindPhoton_Timer[i]) <= .0 then
         //На всякий случай лучше сделать вложенные условия
         if GetLocalPlayer() == p then
             call EnableUserUI(false)
             //Текстура
             call SetCineFilterTexture("ReplaceableTextures\\CameraMasks\\White_mask.blp")
             call SetCineFilterBlendMode(BLEND_MODE_BLEND)
             call SetCineFilterTexMapFlags(TEXMAP_FLAG_NONE)
             call SetCineFilterStartUV(0, 0, 1, 1)
             call SetCineFilterEndUV(0, 0, 1, 1)
             //Цвет и прозрачность
             call SetCineFilterStartColor(255, 255, 255, 0)
             call SetCineFilterEndColor(255, 255, 255, 255)
             //Время затемнения
             call SetCineFilterDuration(.5)
             call DisplayCineFilter(true)
         endif
     endif
     //Время действия
     call TimerStart(udg_BlindPhoton_Timer[i], 6., false, function Trig_Blind_Photon_Timer)
     set udg_BlindPhoton_Boolean[i] = false//На всякий случай
     set p = null
endfunction

//===========================================================================
function InitTrig_Blind_Photon takes nothing returns nothing
     local trigger trig = CreateTrigger()
     local integer i = 0
     loop
         call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
         exitwhen i == 15
         set i = i + 1
     endloop
     call TriggerAddCondition(trig, Filter(function Trig_Blind_Photon_Conditions))
     call TriggerAddAction(trig, function Trig_Blind_Photon_Actions)
     set trig = null
endfunction
Теперь, по идее, все должно быть нормально. Синтаксических ошибок нет, но в игре не проверял. Нужно создать массив таймеров BlindPhoton_Timer и массив логических BlindPhoton_Boolean, причем у таймеров размер массива обязательно должен быть равен 11. Дальше, думаю, разберешься, комментарии в коде есть.

Добавлено (06-08-2011, 20:08)
---------------------------------------------
И еще, могут быть проблемы при использовании кинематографических масок во время действия заклинания. Само себе оно не мешает.


 

FkoFFДата: Суббота, 06 Августа 2011, 20:12:24 | Сообщение # 5
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
синематик фильтры используют таймеры, которые создают. Думай дальше сам что из этого исходит.

 

ДесантникДата: Суббота, 06 Августа 2011, 20:12:46 | Сообщение # 6
U.N.R.E.A.L.
Группа: Проверенные
Сообщений: 1348
Награды: 2
Репутация: 635
Блокировки:
SirNikolas, ну, спасибо :) . Надеюсь, будет работать. Тогда темпа пусть ещё повисит, мб кто-то ещё что-нибудь предложит.

[ Страница проектов F.S.B.(Обновление) ]
Долгих 6 лет на Инфо... Oh Shiiiiii...
 

SirNikolasДата: Суббота, 06 Августа 2011, 20:14:08 | Сообщение # 7
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
FkoFF, я это заметил, когда раскрывал их. У меня используются собственные таймеры, которые висят всю игру.

 

ДесантникДата: Суббота, 06 Августа 2011, 20:16:09 | Сообщение # 8
U.N.R.E.A.L.
Группа: Проверенные
Сообщений: 1348
Награды: 2
Репутация: 635
Блокировки:
Quote (FkoFF)
синематик фильтры используют таймеры, которые создают. Думай дальше сам что из этого исходит.

ну да, 100% будет расхождение. Не знал, 2 раз всего юзал функцию GetLocalPlayer(). Тем более что эту наработку мне Картоха сделал hmm


[ Страница проектов F.S.B.(Обновление) ]
Долгих 6 лет на Инфо... Oh Shiiiiii...
 

  • Страница 1 из 1
  • 1
Поиск:

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