DarKRs, конкретизируй задачу, может что придёт в голову для 1.26 без мемхака...
Хорошо, если полностью описать что я хочу сделать то:
Существует условный тип войск Конница (к ним относятся многие юниты >5), юинты этого типа войск могут атаковать как вблизи (Всадники), так и с помощью дальнего боя (Конный лучник).
Я бы хотел им внести противодействие из юнитов начального развития, к этим юнитам относятся копейщики и их ответвления.
По сути, копейщики должны просто наносить больше урона Коннице(в процентном соотношении(125% или подобное)), но атаковать их стандартным уроном остальные типы войск(100%).
Классификацию не хочу трогать по двум причинам:
Самоубийцы у меня уже корабли
Я не уверен, но возможно переставив классификацию у Конницы мне придётся переделывать у всех атаку чтоб они могли её атаковать вообще. (Т.е. я не знаю какую классификацию им можно добавить чтобы разделить два типа атаки и чтобы при этом не "сломались" остальные юниты и могли все ещё атаковать Конницу)
8gabriel8:
В-третьих, хотя не уверен, что проблема в этом, но может быть обработку остальных действий вызывает очистка диалога, попробуй переместить If/Then/Else первой кнопки в самый низ, чтобы очистка диалога срабатывала последней.
Благодарю, не понимаю как но именно из-за переноса в самый низ, оно починилось.
От 1 до 11 это прогон как бы для каждого игрока? Кнопка - как и любой объект (юнит, для наглядности) по команде создать объект создается у каждого игрока (если, конечно, нет проверки на конкретного игрока, но в случае с юнитом это 100% десинк с одним исключением). Не нужно создавать по кнопке на игрока. По-моему так. Хотя я уже и не припомню наверняка.
Это же не создание кнопки, а проверка нажатия на нее.
потому что не правильно ты получаеш рандом...
судя у тя прибавляет +1 если данный игрок найден. Значит рандом должен
GetRandomInt(1,udg_Buf_A) - 1 возврашает 0 если только 1 красный играет, а если красный и синый то 0,1
Были ли проверки в многопользовательском режиме? Может компьютер просто находит лишь одного играющего человека в однопользовательском режиме.
Да по сети тесты проводились
И что такое udg_AccEmpPlayer?
Игрок являющийся принимающей стороной. И должен быть выбран другой рандомный игрок который ею не является. Только 1(один) игрок может быть принимающей стороной.
Очевидно что занести всех играющих игроков в массив, а потом выбрать случаного игрока из массива с помощью GetRandomInt( 0, до макс игроков)
Если брать до макс игроков разве не может выйти за пределы массива? Да и вообще ваш ответ плохо понимаю. Я же получу от 0 до (допустим) 6 (игроков играет) а если игрок на 8й позиции или подобноее
Напомните, какая инфа у нас есть в варе? Номер нажатой кнопки в диалоге? Только сама нажатая кнопка? Диалог?
Прежде всего, создаем по диалогу на игрока, вместо одного общего диалога на всех и показываем каждому игроку свой диалог. Это позволит показывать каждому игроку свою версию диалога и не зависеть от того, кто и когда открывает диалог.
Дальше заводим массив, в который по номеру игрока и номеру кнопки пишем привязаного к этой кнопке игрока (номер кнопки плюс оффсет умноженый на номер игрока для которого открыт диалог) при открытии диалога.
При нажатии кнопки в диалоге получаем связаного с кнопкой игрока по тому-же индексу - номер кнопки плюс оффсет умноженый на номер игрока для которого открыт диалог.
Оффсет равен максимальному кол-ву кнопок в диалоге и в данном случае это максимальное кол-во игроков минус один.
Если вар вдруг сам не дает номер нажатой кнопки (я не помню дает ли), то перебор по массиву кнопок.
При желании, эту-же систему можно использовать с любыми диалогами, не только со списками игроков, с минимальными изменениями.
Этот диалог в единственном числе нужен, а не для каждого
Вторую часть не 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] остаётся пустым.
Получается будут пустые кнопки? Как этого избежать?
» WarCraft 3 / Увеличенный урон по определенному типу юнитов через способоность
Существует условный тип войск Конница (к ним относятся многие юниты >5), юинты этого типа войск могут атаковать как вблизи (Всадники), так и с помощью дальнего боя (Конный лучник).
Я бы хотел им внести противодействие из юнитов начального развития, к этим юнитам относятся копейщики и их ответвления.
По сути, копейщики должны просто наносить больше урона Коннице(в процентном соотношении(125% или подобное)), но атаковать их стандартным уроном остальные типы войск(100%).
Классификацию не хочу трогать по двум причинам:
» WarCraft 3 / Увеличенный урон по определенному типу юнитов через способоность
Классификацию тоже не хотелось бы трогать. Есть ещё варианты?
» WarCraft 3 / Нужна модель? - Вам сюда!
» WarCraft 3 / Иконки на заказ
» Дневник Сильваны / Ландшафт
» WarCraft 3 / Скорость исследования в зависимости от.....
Почему он костыльный? И будет ли это нормально работать при большом кол-ве игроков?
» WarCraft 3 / Скорость постройки в зависимости от.....
» WarCraft 3 / Скорость постройки в зависимости от.....
» WarCraft 3 / Возможность достраивать определенные здания
» WarCraft 3 / Возможность достраивать определенные здания
» WarCraft 3 / Диалоги. Непонятная ситуация
pro100master: Когда каждый день её видишь и не понимаешь в чем проблема она становится сложнее
» WarCraft 3 / Помощь с диалогом
В-третьих, хотя не уверен, что проблема в этом, но может быть обработку остальных действий вызывает очистка диалога, попробуй переместить If/Then/Else первой кнопки в самый низ, чтобы очистка диалога срабатывала последней.
» WarCraft 3 / Обработка нажатия кнопки в цикле
» WarCraft 3 / Обработка нажатия кнопки в цикле
» WarCraft 3 / Обработка нажатия кнопки в цикле
» WarCraft 3 / Ошибка при выборе рандомного игрока (Jass)
Спасибо PyCCKuu_4eJl: и pro100master,
Ред. DarKRs
» WarCraft 3 / Ошибка при выборе рандомного игрока (Jass)
Ред. DarKRs
» WarCraft 3 / Ошибка при выборе рандомного игрока (Jass)
Zahanc: Да по сети тесты проводились Игрок являющийся принимающей стороной. И должен быть выбран другой рандомный игрок который ею не является. Только 1(один) игрок может быть принимающей стороной.
» WarCraft 3 / Рандомный игрок
» WarCraft 3 / Рандомный игрок
» WarCraft 3 / Рандомный игрок
» WarCraft 3 / Рандомный игрок
» WarCraft 3 / Рандомный игрок
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.
Ред. DarKRs
» WarCraft 3 / Диалог возвращающий номер или имя выбранного игрока.