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

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

Ответ
 
1max_iron
Death Metal
offline
Опыт: 4,038
Активность:
Имя героя и не только...
Как сделать что-бы в диалоге вписывался ник того кто разговаривает?
Как сделать что-бы квест давался всей группе?
И как сделать что-бы квест давался только определённому игроку?
Если можно киньте пример!
Старый 11.03.2007, 12:32
NECros88

offline
Опыт: 16,351
Активность:
  1. Юнит вошёл в регион
диалог, имя - Unit Owned (Entering Unit) (мб ошибки в англицком, но смысл тот)
  1. Ты хоть видел этот триггер??
  2. Нельзя.
Старый 11.03.2007, 12:36
Iron
Листовой
offline
Опыт: 24,427
Активность:
NECros 88, 3-е можно через GetLocalPlayer. Т.к. походу задания не вызывают десинка.
Старый 11.03.2007, 13:12
NECros88

offline
Опыт: 16,351
Активность:
Iron а вот тут поподробнее пожалуйста...
Старый 11.03.2007, 13:55
Iron
Листовой
offline
Опыт: 24,427
Активность:
Ну создаешь триггер:
События:
Unit enter region (ну или еще че-то, при чем должно добавлятся задание)
Условия:
Тут то что тебе нужно, можно вообще ничего не писать
Действия:
Custom script "set udg_localplayer = GetLocalPlayer()"
If "localplayer" = "номер игрока которому должно доваться задание" (только помни что игроки в jass-e именуются с 0 до 15, т.е. красный не 1 а 0)
- - - then: Тут действие добавления задания

Итого, данный триггер при срабатывании у каждого из играющих независимо от остальных занесет его номер в переменную localplayer. И при проверке условия, оно окажется верным лиш на компе того, чей номер указан в условии.

Это прекрасно работает в различными визуальными эввектами (ну типа как невидос у асасинки в доте). Но вот если это юзать с физическими обьектами, или характеристиками (т.е. с тем что значимо для нескольких игроков) типа у одного игрока тут стоит дерево, а у другого нет, то как только какой-нибудь юнит будет проходить на том месте где должно быть дерево, произойдет десинхронизация.
А задания походу нормально должны пахать.

Iron добавил:
В общем если ты не уверен в своих силах и способностях точно знать как работает твой скрипт, то лучше GetLocalPlayer не юзать.
Старый 11.03.2007, 17:50
NECros88

offline
Опыт: 16,351
Активность:
Iron хм... спасибо, попробую, позже отпишусь что из этого получилось.
Старый 11.03.2007, 17:56
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
Цитата:
Сообщение от Iron
типа у одного игрока тут стоит дерево, а у другого нет, то как только какой-нибудь юнит будет проходить на том месте где должно быть дерево, произойдет десинхронизация.

а если сделать просто декорацию, которая не мешает проходить, т. .е просто для вида, оно пахать будет?
Старый 11.03.2007, 18:04
Iron
Листовой
offline
Опыт: 24,427
Активность:
Garret, походу да. Вся фишка ведь в том, что все действия обрабатываются у каждого игрока отдельно, и просто сверяются, т.е. просто у 1-го игрока юнит повернет мимо дерева и из-за этого будет десинк. А если не повернет то нет.
Старый 11.03.2007, 18:11
DeT

offline
Опыт: 5,715
Активность:
Некто ABBAPOH мне код дал
Код:
//Quest API
function CreateQuestForPlayer takes player p, string title, string description, string iconPath, boolean discovered, boolean required returns quest
    local quest q = null
    if p == GetLocalPlayer() then
       set q = CreateQuest()
       call QuestSetTitle(q, title)
       call QuestSetDescription(q, description)
       call QuestSetIconPath(q, iconPath)
       call QuestSetRequired(q, required)
       call QuestSetDiscovered(q, discovered)
       call QuestSetCompleted(q, false)
       call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUEST, " ")
       call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_TEXT_DELAY_QUEST, "You received Item Quest - " + title)
       call StartSound(bj_questDiscoveredSound)
       call FlashQuestDialogButton()
    else
    set q = CreateQuest()
    call DestroyQuest(q)
    endif
    return q
endfunction

function QuestSetCompletedForPlayer takes player p, quest whichQuest, boolean completed returns nothing
    if p == GetLocalPlayer() then
       call QuestSetCompleted(whichQuest, completed)
    endif
endfunction

а с декором будет десинк
Старый 11.03.2007, 18:18
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
а если сделать просто декорацию, которая не мешает проходить, т. .е просто для вида, оно пахать будет?

нет, как только создаетя декорация, начинается синхронизация, комп видит что у одного есть декорация, у другово нет, как быть? а ну выйду я.. и никаких проблем... так расуждали те кто сделали выход из-за десинка
Старый 11.03.2007, 18:20
Iron
Листовой
offline
Опыт: 24,427
Активность:
Jon, ты проверял?
Ща сам проверю.
Старый 11.03.2007, 22:25
Ответ

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

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

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

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



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