Сейчас 19:44:01 Понедельник, 29 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Texttag, LocalPlayer и дисинхронизация
[Вопрос] Texttag, LocalPlayer и дисинхронизация
RedRomkaДата: Понедельник, 14 Мая 2012, 23:06:01 | Сообщение # 1
2 уровень
Группа: Пользователи
Сообщений: 22
Награды: 0
Репутация: 13
Блокировки:
Всем доброго времени суток.
Нужна помощь с кодом: для LocalPlayer создаёт тексттег над юнитом.
Перечитал кучу всего про ЛокалПлаер, сделал триггер, но тот выдавал десинхрон.
А когда переделал на Hide всем и Show для Локального, то отображает всем. Посмотрите чё можно сделать:

Code

function Trig_KillsTexttag_Conditions takes nothing returns boolean
     if ( not ( IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO) == true ) ) then
         return false
     endif
     return true
endfunction

function Trig_KillsTexttag_F2A takes nothing returns boolean
if ( not ( GetEnumPlayer() != GetOwningPlayer(GetKillingUnit()) ) ) then
         return false
     endif
     if ( not ( GetEnumPlayer() != Player(10) ) ) then
         return false
     endif
     if ( not ( GetEnumPlayer() != Player(11) ) ) then
         return false
     endif
     if ( not ( IsPlayerInForce(GetEnumPlayer(), udg_AssistsGroup[GetPlayerId(GetOwningPlayer(GetDyingUnit()))]) == true ) ) then
         return false
     endif
     return true
endfunction

function Trig_KillsTexttag_F1A takes nothing returns nothing
local integer i = GetPlayerId(GetEnumPlayer())
local texttag txtt
  if ( Trig_KillsTexttag_F2A() ) then
     if GetUnitState(udg_HeroPlayer[i], UNIT_STATE_LIFE) >= 0 then
                           call CreateTextTagUnitBJ( "+100", udg_HeroPlayer[i], 0, 10, 80.39, 68.63, 0.00, 0 )
               set txtt = GetLastCreatedTextTag()
               call SetTextTagVelocityBJ( txtt, 55.00, 90 )
               call SetTextTagPermanent( txtt, false )
               call SetTextTagLifespan( txtt, 3.00 )
               call SetTextTagFadepoint( txtt, 2.50 )
               call TriggerSleepAction( 3 )
               call DestroyTextTag(txtt)
               set txtt = null
               call ShowTextTagForceBJ( false, txtt, bj_FORCE_ALL_PLAYERS )
                if GetLocalPlayer() == Player(i) then
                 call SetTextTagVisibility(txtt, true)
                endif
   endif
   endif
    call DestroyTextTag(txtt)
set txtt = null
endfunction
   
function Trig_KillsTexttag_Actions takes nothing returns nothing
local integer i = GetPlayerId(GetOwningPlayer(GetKillingUnit()))
local texttag txt1

call CreateTextTagUnitBJ( "+200", GetKillingUnit(), 0, 10, 80.39, 68.63, 0.00, 0 )
set txt1 = GetLastCreatedTextTag()
call SetTextTagVelocityBJ( txt1, 55.00, 90 )
call SetTextTagPermanent( txt1, false )
  call SetTextTagLifespan( txt1, 3.00 )
  call SetTextTagFadepoint( txt1, 2.50 )
   set txt1 = null  
  call ShowTextTagForceBJ( false, txt1, bj_FORCE_ALL_PLAYERS )
  if GetLocalPlayer() == Player(i) then
  call SetTextTagVisibility(txt1, true)
  endif
call ForForce( bj_FORCE_ALL_PLAYERS, function Trig_KillsTexttag_F1A )
call TriggerSleepAction( 3.00)
call DestroyTextTag(txt1)
set txt1 = null

endfunction

//===========================================================================
function InitTrig_KillsTexttag takes nothing returns nothing
     local trigger trig = CreateTrigger(  )
      local integer index

     set index = 0
     loop
         call TriggerRegisterPlayerUnitEvent(trig, Player(index), EVENT_PLAYER_UNIT_DEATH, null)

         set index = index + 1
         exitwhen index == bj_MAX_PLAYER_SLOTS
     endloop
     call TriggerAddCondition( trig, Condition( function Trig_KillsTexttag_Conditions ) )
     call TriggerAddAction( trig, function Trig_KillsTexttag_Actions )
     set trig = null
endfunction


Смысл такой: Убившему героя +200 над головой, а если некий в асистах, то +100.
И как раскрыть те BJ, которые в коде есть?
 

DragoNДата: Понедельник, 14 Мая 2012, 23:49:31 | Сообщение # 2
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
создавай тексттаг для всех, для нужного игрока в блоке localplayer изменяй текст тексттага

El Psy Congroo
 

FaionДата: Вторник, 15 Мая 2012, 10:25:50 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
Нельзя создавать локально объекты. текстаг - объект, по этому десинхронизаци происходит. Зато строка не является объектом в jass. По этому строку можно создать локально, а потом создать для всех игроков текстаг. В итоге текстаг будет создан у всех, но только у локального плеера в конструктор объекта будет передана не пустая строка, и по этому только этот игрок увидит текст.

О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас.
My Project: Nindogatari
MAL
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Вопрос] Texttag, LocalPlayer и дисинхронизация
  • Страница 1 из 1
  • 1
Поиск:

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