Спасибо,а как сделать когда все игроки выбрали свою расу,то игра начинается?
Нужно определить, а сколько всего игроков. Пусть их Х. Делаем переменную Y, она равна 0. Как только игрок (любой) жмёт диалог, то увеличиваем Y на 1. Далее сравниваем с X. Если Y равно X, то запускаем триггер старта игры. Иначе ничего не делаем.
Когда игрок выходит, X нужно понижать.
Нужно создать диалог, в него добавить две кнопки. Кнопки записываешь в две переменные. После этого регистрируешь событие клика для этого диалога для триггер % и показываешь диалог каждому игроку.
Действия в триггере % следующие.
Во избежание неприятностей нужно скрыть Нажатый диалог для Игрока триггера (обычно он скрывается сам при нажатии, но не всегда). Игрок триггера тут является нажавшим игроком.
После этого сравниваешь Нажатую кнопку. Если эта кнопка равна кнопке Нежить, то для Игрока триггера ставим расу нежить. Если кнопка равна кнопке Люди, то для Игрока триггера ставим расу люди.
Вторую часть не cовсем понял. Т.е. вы имеете ввиду что новая кнопка может перезаписать старую?
Нет.
Пусть играют игроки 1, 2, 6.
Buf_B = 0.
Игрок 1 играет? Да, создаём кнопку, записываем в массив[0] и увеличиваем Buf_B.
Buf_B = 1.
Игрок 2 играет? Да, создаём кнопку, записываем в массив[1] и увеличиваем Buf_B.
Buf_B = 2.
Игрок 3 играет? Нет, пропускаем. Аналогично с 4 и 5.
Игрок 6 играет? Да, создаём кнопку, записываем в массив[2] и увеличиваем Buf_B.
Buf_B = 3.
Игрок 7 играет? Нет, пропускаем. Аналогично с 8-11.
Создаём ещё одну кнопку и записываем её в ячейку (Buf_B + 1), то есть в массив[4]. массив[3] остаётся пустым.
Потому что бумеранги записываются в одни и те же глобальные переменные, и при касте нового эти переменные перезаписываются, и старый уже никак не управляется. Нужно использовать хеш таблицы.
мы тут не вылизывали свои проекты, чтобы до них не докопаться, хотя скорее всего в Крестиках Ноликах, идеальный код и геймплей
Я вот потому и делал карту 2 (!) недели, хотя, казалось бы, ведь идея очень проста. И действительно, играть можно было на 2-й день после начала разработки (даже вдвоём можно было), хоть и 1 раз, на 3-й день я добавил алгоритм определения ничьи и возможность рестарта. Что было дальше? Я возился с диалогами и мультибоардом, чтобы всё выглядело perfect, орал с багов диалогов и мультиборадов (вот про диалоги, про мультибоарды лучше промолчу). Либу для диалогов переписывал раза 4, чтобы она была проще и лучше. Ещё чутка возился со звуками (выбирал подходящие), но на это не так много времени ушло как на диалоги и мультибоард.
Пусть переменная А считает игроков, а переменная B считает кнопки.
Перед циклом B ставим на 0, если игрок есть, увеличиваем В и записываем в массив[В] твою кнопку.
globals
real TrasmittedX
real TrasmittedY
real TrasmittedRange
endglobals
function GetDistancePoints takes real x1, real y1, real x2, real y2 returns real
return SquareRoot((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))
endfunction
function FilterFunc takes nothing returns boolean
return TrasmittedRange >= GetDistancePoints(TrasmittedX, TrasmittedY,/*
*/ GetDestructableX(GetFilterDestructable()), GetDestructableY(GetFilterDestructable()))
endfunction
function EnumDestructablesInRange takes real x, real y, real range, code callback returns nothing
set TrasmittedX = x
set TrasmittedY = y
set TrasmittedRange = range
call EnumDestructablesInRect(GetWorldBounds(), Filter(function FilterFunc), callback)
endfunction
function KillDestructiblesInRangeCallback takes nothing returns boolean
call KillDestructable(GetEnumDestructable())
endfunction
function KillDestructiblesInRange takes real x, real y, real range returns boolean
call EnumDestructablesInRange(x, y, range, function KillDestructiblesInRangeCallback)
endfunction
Так я убираю эту инициализацию, это лишь разгружает общую инициализацию.
Что убираешь и куда? Ещё раз, инициализатор библиотеки выполняется в отдельном потоке, и если там что-то ломается, то ломается только поток инициализатора.
Было бы хорошо приложить скриншоты, когда работает, что и куда перемещается, что после этого не работает.
Есть подозрение, что код из либы даёт значения каким-то переменным, которые используются в каких-нибудь scope или функциях, что инициализируют триггеры.
Drulia_san, ты скажи, решил или не решил проблему, а то уже который вопрос у тебя баг, в котором ты сначала отвечаешь, а потом пропадаешь, так и не дав понять, разрешилась ли проблема. Жду новостей, короче.
какие функции в начале в каком порядке вызвать чтобы навёлся вид на камеру вау это так сложно
Открываем карты кампании, некоторых карт от близзард и смотрим, как сделано. В этом комментарии тебе кинули описание почти всех функций для камеры. Не говоря уже о том, что описание к функциям можно глянуть в ГУИ.
» WarCraft 3 / Диалог,заканчивание при игроков
Когда игрок выходит, X нужно понижать.
» WarCraft 3 / Как лучше запустить след. волну крипов
ScopteRectuS:
» WarCraft 3 / Диалог,заканчивание при игроков
Действия в триггере % следующие.
Во избежание неприятностей нужно скрыть Нажатый диалог для Игрока триггера (обычно он скрывается сам при нажатии, но не всегда).
Игрок триггера тут является нажавшим игроком.
После этого сравниваешь Нажатую кнопку. Если эта кнопка равна кнопке Нежить, то для Игрока триггера ставим расу нежить. Если кнопка равна кнопке Люди, то для Игрока триггера ставим расу люди.
Ред. PT153
» WarCraft 3 / Хотел создать способность на подобии бумеранга
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.
» WarCraft 3 / Разница между Ждать и Ждать (игровое время)
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.
Ред. PT153
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.
Пусть играют игроки 1, 2, 6.
Buf_B = 0.
Игрок 1 играет? Да, создаём кнопку, записываем в массив[0] и увеличиваем Buf_B.
Buf_B = 1.
Игрок 2 играет? Да, создаём кнопку, записываем в массив[1] и увеличиваем Buf_B.
Buf_B = 2.
Игрок 3 играет? Нет, пропускаем. Аналогично с 4 и 5.
Игрок 6 играет? Да, создаём кнопку, записываем в массив[2] и увеличиваем Buf_B.
Buf_B = 3.
Игрок 7 играет? Нет, пропускаем. Аналогично с 8-11.
Создаём ещё одну кнопку и записываем её в ячейку (Buf_B + 1), то есть в массив[4]. массив[3] остаётся пустым.
Ред. PT153
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.
Ред. PT153
» WarCraft 3 / Хотел создать способность на подобии бумеранга
Ред. PT153
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.
» Администрация XGM / Возможно ли получить ачивку "Мясной фарш" не получая замечаний?
8gabriel8: Если получать каждый день, то ачивка будет дана за 3.5 месяца.
» XGM Конкурсы / Warcraft III Mini-Game Contest-2018
» WarCraft 3 / Проблема с открытием карты
» Администрация XGM / Неверное отображение рейтинга
» WarCraft 3 / Диалог со списком игроков
Перед циклом B ставим на 0, если игрок есть, увеличиваем В и записываем в массив[В] твою кнопку.
Ред. PT153
» Администрация XGM / Неверное отображение рейтинга
Там ниже есть скриншоты того, что вижу я. Вот.
Тогда ошибка в том, что у меня неверное отображение.
Ред. PT153
» WarCraft 3 / Разрушение диструктиблов в АОЕ
» WarCraft 3 / Разрушение диструктиблов в АОЕ
» WarCraft 3 / На 90 градусов...
» WarCraft 3 / Дыхание...
» Администрация XGM / Перемещение ресурса в ленте при склейке комментариев.
Ред. PT153
» WarCraft 3 / Перестала работать инициализация
» WarCraft 3 / Как управлять этими камерами??
» WarCraft 3 / Замена текстуры human-inventory-slotfiller