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

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

Ответ
 
AlisherYch

offline
Опыт: 307
Активность:
Занесение GetLocalPlayer в переменную
Читал статейку о GetLocalPlayer:
Вообще, довольно полезно было бы занести значение GetLocalPlayer() в переменную, дабы избежать
лишние вызовы. Например, так:
globals
constant player LocalPlayer = GetLocalPlayer()
endglobals
Далее, с помощью cJass'а, мы можем оптимизировать уже имеющуюся карту, без ручной замены
переменных,
так:
#define <GetLocalPlayer()> = LocalPlayer
О чем тут речь идет? Как это сделать, не пойму...
Старый 28.11.2012, 14:15
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,429
Активность:
AlisherYch, обьясните зачем вам нужен GetLocalPlayer() и насколько активно его вы собираетесь использовать в скрипте карты?
Старый 28.11.2012, 15:01
SLI
"Ня" © Happy
offline
Опыт: 8,415
Активность:
AlisherYch, чтоб каждый раз не писать долгое гетлокалплеер()
док предлагает писать просто
локалплеер
по сути ненужная фича, точнее она не влияет на результат кода
Старый 28.11.2012, 15:21
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,429
Активность:
SLI, GetLocalPlayer() а что же даёт нам эта функция, а даёт она нам возможность делать следующие конструкции:
((код jass
function SimError takes player ForPlayer, string msg returns nothing
local string s = "\n\n\n\n |cffffcc00" + msg + "|r\n\n\n\n\n\n\n\n\n\n\n\n"
if (GetLocalPlayer() == ForPlayer) then
call ClearTextMessages()
call DisplayTimedTextToPlayer( ForPlayer, 0.00, 0.00, 3.00, s )
call StartSound( error )
endif
set s = null
endfunction
***
function DisplayTextToForce takes force toForce, string message returns nothing
if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
Use only local code (no net traffic) within this block to avoid desyncs.
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, message)
endif
endfunction
))
Которые по сути позволяют нам что то показать конкретному игроку или группе игроков, только много ли у вас в карте подобных действий? А как часто они используются, 20 раз за игру?
Старый 28.11.2012, 15:30
ScorpioT1000
Работаем
offline
Опыт: отключен
ClearTextMessages() очищает в том числе журнал, в том числе все диалоги и дебаг-сообщения, никогда не используйте ClearTextMessages()
Старый 28.11.2012, 15:33
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,429
Активность:
ScorpioT1000, да оно и понятно, но порой на это совсем пофиг....
Старый 28.11.2012, 15:37
SLI
"Ня" © Happy
offline
Опыт: 8,415
Активность:
ScorpioT1000, эээ, а что исопльзовать?
quq_CCCP, это как бы не я писал, это как бы Доктор наш писал....
Старый 28.11.2012, 15:51
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,429
Активность:
SLI, ну ты слышал звон да не знаешь где он, что оптимальнее вызывать GetLocalPLayer() каждый раз или записать его в переменную конечно оптимальнее записать в переменную но велик ли выигрыш в производительность, а не не велик, толку почти 0, так же есть обратная медаль данной оптимизации, как вам наверное всем известно что переменная занимает место в оперативки пока в ней есть значение, да вот записать то записали мы GetLocalPlayer() но использовали пару раз за игру, а память то сожрана и неважно что не юзается GetLocalPlayer()... кароче пишите как вам удобно разници особой не будет, но только при условии что у вас не происходит десятки действий с GetLocalPlayer() каждую секунду...
Старый 28.11.2012, 15:56
SLI
"Ня" © Happy
offline
Опыт: 8,415
Активность:
подожди подожди. я не предлагаю это делать.
чел спросил зачем это я ответил
я вообще так не делаю....
Старый 28.11.2012, 16:25
Doc

offline
Опыт: 63,163
Активность:
SLI, ложь
ScorpioT1000, ложь!
речь идёт о тупом высере и байтосчитании, не задерживайтесь проходите мимо.
Диод прав, но мне спокойнее, когда оно не вызывается каждый раз, например.
Старый 28.11.2012, 16:26
ScorpioT1000
Работаем
offline
Опыт: отключен
Doc, пруф или голову с плеч!
Старый 28.11.2012, 16:36
DioD

offline
Опыт: 45,134
Активность:
globals

    player ARZ = Player(0)
    
    integer lol = 0
    integer lol2 = 0

endglobals

function TESTA takes nothing returns nothing
    
    loop
    if ARZ == Player(0) then
        set lol = lol + 1
    endif
    endloop
    
endfunction

function TESTB takes nothing returns nothing

    loop
    if GetLocalPlayer() == Player(0) then
        set lol2 = lol2 + 1
    endif
    endloop
    
endfunction


function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing
    if udg_b then
        call DisplayTextToPlayer(GetLocalPlayer(),0,0,I2S(lol))
        call DisplayTextToPlayer(GetLocalPlayer(),0,0,I2S(lol2))
    else
        call ExecuteFunc("TESTA")
        call ExecuteFunc("TESTB")
    endif
    set udg_b = true
endfunction

//===========================================================================
function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
    set gg_trg_Untitled_Trigger_001 = CreateTrigger(  )
    call TriggerRegisterPlayerEventEndCinematic( gg_trg_Untitled_Trigger_001, Player(0) )
    call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions )
endfunction
Угадайте результат простого вотчдога, при проверке стопвоч нативка имеет некоторый плюс производительности но доказать не могу так как лень ставить 124.
Старый 28.11.2012, 17:01
ScorpioT1000
Работаем
offline
Опыт: отключен
кстати почти все нативки имеют "равный вес", как тоад говорил
Старый 28.11.2012, 17:03
Doc

offline
Опыт: 63,163
Активность:
ScorpioT1000, никогда cleartextmessages журнал не чистила.
Старый 28.11.2012, 17:05
ScorpioT1000
Работаем
offline
Опыт: отключен
Doc, почему у меня всегда чистила?
Старый 28.11.2012, 17:05
Doc

offline
Опыт: 63,163
Активность:
ScorpioT1000, проверь еще раз. Это всегда было большой проблемой, что журнал нельзя никак очистить.
Старый 28.11.2012, 17:08
DioD

offline
Опыт: 45,134
Активность:
не чистит она журнал, чистит только вывод с экрана, а в журнале весь мусор остаётся.
Старый 28.11.2012, 17:12
ScorpioT1000
Работаем
offline
Опыт: отключен
Это всегда было большой проблемой, что журнал нельзя никак очистить.
вы с какой планеты идк мне всегда было проблема что журнал чистится =(
Старый 28.11.2012, 17:13
Doc

offline
Опыт: 63,163
Активность:
ScorpioT1000, меньше надо под водкой кодить.
Старый 28.11.2012, 17:17
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,429
Активность:
ScorpioT1000:
вы с какой планеты идк мне всегда было проблема что журнал чистится =(
Всегда было пофиг в мультиплеере на журнал, удаляется да и покакать на это сверху, большая проблема это текстовые сообщения типа "Герой А замочил героя Б и получил награду в 10 ед. голда, так как меньше надо стилить!" потому что ClearTextMessages() порой удаляет то что не нужно, правда это не особая проблема кроме визуального эффекта больше никаких минусов нет.
Старый 28.11.2012, 17:19
Ответ

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

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

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

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



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