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

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

Закрытая тема
 
CKrab

offline
Опыт: 410
Активность:
GetLocalPlayer и заголовок мультиборда
Собственно, есть один МБ(не 12), где в начале пишется титл всем игрокам:
Код:
init
...
call MultiboardSetTitleText(udg_MultiBoard, "блаблабла")
...

но потом в игре надо изменить заголовок МБ одному игроку на "олололо", при этом чтобы у других остался "блаблабла"

пробовал:
Код:
local integer id = GetPlayerId(GetLocalPlayer())
if Player(id) == GetLocalPlayer() then
call MultiboardSetTitleText(udg_MultiBoard, "олололо")
endif

-не работает.
вопрос: как такое осуществить?
(переходить на 12 бордов как-то не хочется(но думаю придется,если другого выхода не будет =))))
Старый 16.09.2011, 20:30
16GB
GhostOne User
offline
Опыт: 59,317
Активность:
local string s = "блаблабла"
if Player(номер игрока) == GetLocalPlayer() then
set s = "олололо"
endif
call MultiboardSetTitleText(udg_MultiBoard,s)
по идеи как-то так
не проверял
Старый 16.09.2011, 20:52
Elf_Stratigo

offline
Опыт: 4,599
Активность:
условие заведомо истинно для всех игроков, т.к. в переменной id лежит номер - свой номер для каждого игрока
Старый 16.09.2011, 20:53
Doc

offline
Опыт: 63,163
Активность:
Универсальней:
string title[]
int localId = GetPlayerId(GetLocalPlayer())

callback onInit(){
	for(int i = 0; i < 11; i++){
		title[i] = "default"
	}
}

void setMessage(int id, string s){
	title[id] = s
	MultiboardSetTitleText(udg_MultiBoard, title[localId])
}
Старый 16.09.2011, 21:02
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
function Change_MB_Title takes integer i, multiboard mb returns nothing
    local string s
    local player p = Player(i)
    if p == 0 then
        set s = "Название для красного игрока"
    elseif p == 1 then
        set s = "Название для синего игрока"
    endif
    if p == GetLocalPlayer() then
        call MultiboardSetTitleText(mb,s)
    endif
    set p = null
endfunction

call Change_MB_Title(Player(0), udg_MultiBoard)
Старый 16.09.2011, 21:16
Doc

offline
Опыт: 63,163
Активность:
JaBeN_Симфер, у меня всяко лучше.
Старый 16.09.2011, 21:33
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
Doc, в большинстве случаев c/vJass для меня имеет не читаемый вид, поэтому я написал пример на чистом для тех, кто тоже не знает c/vJass
Старый 16.09.2011, 23:08
Doc

offline
Опыт: 63,163
Активность:
Я к тому, что у меня правильней алгоритм.
Старый 16.09.2011, 23:19
JaBeN_Симфер

offline
Опыт: 20,050
Активность:
Doc, выложи откомпилированный код
Старый 16.09.2011, 23:24
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Doc, напиши либу различных допустимых локальных экшенов, покончишь со всеми вопросами на тему локальных действий раз и навсегда.
Старый 16.09.2011, 23:32
CKrab

offline
Опыт: 410
Активность:
Соглашусь с JaBeN_Симфер, я тоже не силен в c/vJass, поэтому выберу его вариант.
Спасибо за помощь =).
Старый 17.09.2011, 09:19
Закрытая тема

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

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

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

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



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