if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter]) == CommandsList[CommandsListMaxCounter] then //-cam, -Cam
// высчитывать Значение Цикла CommandsListMaxCounter внутри переменной CommandsListSubstringEnd
endif
он подберет Индекс CommandsListMaxCounter и будет проверять CommandsListSubstringEnd на наличие Меньшего Значения начиная с 1 до
CommandsListMax
его сразу надо высчитывать чтобы значения цикла не высчитывались
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMax]) == CommandsList[CommandsListMaxCounter] then
так должно выглядеть
отработает 1 раз для CommandsList с привязкой к СommandsListSubstringEnd
if CommandsListMax != 0 then
set CommandsListMaxCounter = 1
loop
exitwhen CommandsListMaxCounter > CommandsListMax // от 1 до 20 команд
//проверить в массиве список Групп Комманд
//set CommandsListGroupCounter = CommandsListGroupStart[1]
//loop
//exitwhen CommandsListGroupCounter > CommandsListGroupEnd[CommandsListMax] //от 1 до 20 Групп
//проверить в Группе команд Список Команд
set CommandsListCounter = 1
loop
exitwhen CommandsListCounter > CommandsListGroupCounter
//проверить список внутри группы комманд
//if CommandsList[CommandsListCounter] == CommandsList[CommandsListMax] then
//set CommandsListSubstringEnd[CommandsListGroupCounter] = CommandsListGroupCounter
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListCounter]) == CommandsList[CommandsListCounter] then //-cam, -Cam
endif
//endif
set CommandsListCounter = CommandsListCounter + 1
endloop
//set CommandsListGroupCounter = CommandsListGroupCounter + 1
//endloop
set CommandsListMaxCounter = CommandsListMaxCounter + 1
endloop
endif
CommandsListSubstringEnd[3] = 5
CommandsListSubstringEnd[1] = 4 // длина строки Первой команды
local real CamA = S2R(SubString(ChatString, 5, StringLength(ChatString)))
if SubString(ChatString, 0, CommandsListSubstringEnd[3]) == CommandsList[1] then
думает что это одно и тоже
четко занес в переменную Длину строки...Подстрока когда дойдет до CommandsListSubstringEnd остановится
дальше
local real CamA = S2R(SubString(ChatString, 5, StringLength(ChatString)))
CommandsList[1] = "-cam"
так и
CommandsList[3] = "-camm"
//===========================================================================
// The parameters for the API Substring function are unintuitive, so this
// merely performs a translation for the starting index.
//
function SubStringBJ takes string source, integer start, integer end returns string
return SubString(source, start-1, end)
endfunction
function SubStringBJ takes string source, integer start, integer end returns string
return SubString(source, start-1, end)
endfunction
start-1 = 0
//===========================================================================
// The parameters for the API Substring function are unintuitive, so this
// merely performs a translation for the starting index.
//
function SubStringBJ takes string source, integer start, integer end returns string
return SubString(source, start-1, end)
endfunction
это упрощенный вариант
этот полный
if CommandsListMax != 0 then
set CommandsListMaxCounter = 1
loop
exitwhen CommandsListMaxCounter > CommandsListMax // от 1 до 20 команд
//проверить в массиве список Групп Комманд
//set CommandsListGroupCounter = CommandsListGroupStart[1]
//loop
//exitwhen CommandsListGroupCounter > CommandsListGroupEnd[CommandsListMax] //от 1 до 20 Групп
//проверить в Группе команд Список Команд
set CommandsListCounter = 1
loop
exitwhen CommandsListCounter > CommandsListGroupCounter
//проверить список внутри группы комманд
//if CommandsList[CommandsListCounter] == CommandsList[CommandsListMax] then
//set CommandsListSubstringEnd[CommandsListGroupCounter] = CommandsListGroupCounter
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListCounter]) == CommandsList[CommandsListCounter] then //-cam, -Cam
endif
//endif
set CommandsListCounter = CommandsListCounter + 1
endloop
//set CommandsListGroupCounter = CommandsListGroupCounter + 1
//endloop
set CommandsListMaxCounter = CommandsListMaxCounter + 1
endloop
endif
и тоже самое выводит
выводит как
CommandsList[1] = "-cam"
так и
CommandsList[3] = "-camm"
простым языком что пытаюсь сделать
Занести в некий...Глобальный Массив Список команд
и одной проверкой SubString указать то что должно происходить в определенных блоках
проверяя Группу Команд Внутри этого массива и проверки Списка команд Определенной Группы Команд
Плодить Одинаковые Блоки кода которые будут делать Одно и тоже Нет Никакого Желания
заметил что Обращение по индексу Массива работает нормально
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter]) == CommandsList[CommandsListMaxCounter] then //-cam, -Cam
//повторяется 2 раза
if SubString(ChatString, 0, CommandsListSubstringEnd[CommandsListMaxCounter]) == CommandsList[3] then //-cam, -Cam
срабатывает только 1 раз и нормально
set CommandsListMax = 20
if CommandsListMax != 0 then
set CommandsListMaxCounter = 1
loop
exitwhen CommandsListMaxCounter > CommandsListMax // от 1 до 20 команд
цикл запущен
выяснил
if SubString(ChatString, 0, CommandsListSubstringEnd[3]) == CommandsList[1] then
он выводит 2 раза
но это невозможно
CommandsListSubstringEnd[3] = 5
CommandsListSubstringEnd[1] = 4 // длина строки Первой команды
local real CamA = S2R(SubString(ChatString, 5, StringLength(ChatString)))
нужно как-то...добавить == но переменная и так
= 4
что может быть ровнее этого числа?
Изменения в версии 7.3
Полностью убрана -kick команда чтобы добавить проект на платформе ICCup, изменилось название Вудора с Хранителя леса на Адепт Природы, исправлены некоторые ошибки связанные с убийством Архимонда и установки ограничения для Добывателей, добавлены новые условия для нанесения урона по области для способностей, теперь проверяется дополнительно если юнит Невосприимчив к магии, изменились все способности Вудора, добавлена новая функция которая может уничтожать деревья а также восполнять их здоровье, переделаны некоторые локации, добавлены новые условия для спавнов, теперь вместо Костяного Завода Склеп а также он может воспроизводить Анимацию как с Казармами, убраны Темные Солдаты, переделаны Казармы, теперь вместо них Алтарь, переделаны условия создания героев в 4 субволне, теперь если Алтарь соответствующий волне уничтожен Герой волны не будет создаваться, изменились Приоритеты игроков так как они влияют на ИИ, исправлена ошибка с загрузкой 2 артефактов, изменилось описание карты, теперь в ней присутствует приглашение в Дискорде, исправлены большинство ошибок связанные с приказами боссов а также некоторые функции переписаны для сокращения строк кода, добавлены новые условия для Спавнов, теперь созданные Юниты волны будут проверятся на наличие проходимости ландшафта так как Летающие Юниты игнорировали этот приказ, также исправлены большинство ошибок связанные с созданием боевой единицы, добавлена новая функция очищения хэндлов при уничтожении боевой единицы а также сократилось количество блоков кода которые выполнялись дважды в разных функциях, и добавлены новые возможности для создания мини боссов для Сил Артаса, исправлена ошибка с получением Тириона Фордринга, теперь предметы даются ему, добавлены новые условия для Сил Артаса, теперь здания волн будут меняться дополнительно проверяя Жизнь и Ману, исправлена ошибка с командой [-repick] и переделаны все скилы Гересина.
Незнание структуры Карты и Архивов внутри игры приведет к печальным последствиям
удалить ничего не надо, единственное что можно сделать это Оптимизировать то что написал своими ручками, или оптимизировать определенные блоки кода, удалить надо только то что импортировал в карту а не все подряд
Заставить варкрафт работать без родных mpq
это как заставить Мозг думать что он может работать без Ничего
МрачныйВорон
Это будет такая дрочильня с приказами. Нужно все тонкости соблюсти.
я уже подумал сколько триггеров на GUI придеться создавать чтобы вот...просто...заставить раб добывать ресурсы
Замечано, что позже после срубки раб ищет ближайшее дерево. А с шахтами неизвестно. Мб он захочет с ближайшей шахты собирать
Дерево это отдельный Ресурс игры, если Дерево Погибло значит рубить другое
если Рудник Истошен он Уничтожается останавливая Работников
это делается 1 строкой
call IssueImmediateOrder( udg_Работник[1], "autoharvestgold" ) для золота
call IssueImmediateOrder( udg_Работник[1], "autoharvestlumber" ) для древесины
call IssueImmediateOrder( udg_Работник[1], "returnresources" ) чтобы принести добытые ресурсы
если ордер уже отдан отследить его согласно условию и менять значение
Можешь подробнее рассказать про то, как ты с редактором 1.31 сделал, а то я не совсем понял.
это было когда рефордж появился..он был багнутым и я ради спортивного интереса приспособил проект для рефорджа
известно что в рефордже есть такие нативки которые могут установить Броню юнита налету Жизнь атака и так далее
назывались они что-то типа
SetUnitArmor
эти нативки отсутствуют в 1.26 патче поэтому посчитать броню не получится одной нативкой, нужно создавать костыль чтобы посчитать кол-во брони у юнита
просто убрать эти нативки из Редактора Триггеров
nazarpunk
дал ответ какие файлы нужно редактировать чтобы иметь возможность открывать карту в других патчах
что подразумевается под словом перенести?
есть вариант Выделить Несколько персонажей расположенные друг с другом и перенести их куда вам надо
есть вариант Выделить Несколько персонажей расположенные в разных местах карты
есть вариант привязать переменную к созданию персонажа и указать чтобы эта переменная Двигалась к выбранной точке
есть вариант выделить персонажей в область и приказать им двигаться в указанную точку
есть вообще вариант моментально выделить персонажей и перенести их в другой конец
что именно вам нужно?
непонятно что именно вы ищете
есть вообще вариант выделить персонажей в область и заставить их Прыгнуть в указанную точку
есть еще возможность Нырнуть
есть возможность взять Лопату и копать землю чтобы выходить в другой конец как Крот или Бурундук
есть еще вариант Взять Огромную металическую перчатку и Швырнуть всех персонажей в указанную точку
Убрана команда -kick игрока и -Off, так как модераторы Айкапа не хотят добавить проект, исправлена ошибка с установкой уровня при репике героя, добавлены новые условия для ИИ, теперь они в определенный момент могут говорить, переделана формула подсчета игроков, теперь в качестве индекса используется именованные ключи хэш таблицы, изменилась иконка Икфура rкак и его способности, исправлена ошибка с названием гибели Иллидана и созданием 2 Иллиданов на последней волне, исправлена ошибка с ивентами на последней волне, изменились способности Бадика, изменился способ получения Тириона Фордринга, теперь достаточно написать команду -король, доработана система спавнов, теперь 2 волна разделена на 4 субволны, 2 субволна и 4 будет создавать Бугая и Всадника, и изменилось расположение Командира Чембера.
я сделал следующим образом
скачал редактор 1.31 и на основе существующей карте заточенная под 1.26 добавил новые условия для рефорджа.
про обратную совместимость не в курсе но рефордж отличается от патча 1.26, если так сильно хочется можно поочередно вытащить из рефорджа все необходимое используя Mpq Master и смотреть если в версии 1.26 она откроется, если нет то убрать дополнительные поля в РО которые мешают открытия карты и еще раз попытаться.
ябы так сделал.
точно также и с триггерами.
в каком смысле АОЕ? если убить несколько юнитов?
тогда есть специальная функция Добавления Юнита в Группу, с помощью нее посчитаем сколько юнитов погибло но надо добавлять этих юнитов в группу
далее посчитать сколько юнитов погибло
но оно сработает в любом случае...если цикл запущен то посчитает сколько юнитов погибло
anton1623:
я приведу пример как сделать подобное
сначал создаем триггер где вставляем в Событие Юнит Умирает
каждый раз когда ктото (неважно кто) Умирает срабатывает это Событие
далее мы должны узнать Кто умер
в Условие вставляем что умер такой юнит
Тип юнита Погибающий Юнит Равняется Наш Юнит
и в действие вставляет получить 1 золото Каждый Раз когда наш Юнит погибает
далее нажимаем комбинацию клавишь CTRL + B и открываются Переменные
нажимаем на Зеленый крестик и выскачит окно
здесь пишем название переменной (Любое)
и Тип Переменной Ищем Целочисленная
нажимаем на Ок и готово наша переменная заведена
дальше возвращаемся в наш Триггер
и добавляем новое Действие
каждый раз когда этот юнит погибнет переменная увеличит кол-во на 1 (мы же убиваем по 1 юниту?)
и в конце добавляем это
готово
конечный результат должен быть таким но только вместо пехотинца выбираем нашу боевую единицу
Полностью перестроена Система создания юнитов как Союзников так и Противников, теперь в ней присутствует Субволна, Субволна это Волна которая разделяется на определенное кол-во юнитов, добавлены новые юниты в них и разделены, а также для каждой Волны добавлены культовые герои из Кампании такие как Джайна, Утер Рексар Рохан Кэрн Фарион и даже Иллидан, Герои могут повышать свои характеристики с каждой волной пока не убьют Артаса, на данный момент 1 Волна разделена на 4, 2 Волна на 2, 3 Волна на 2, и 4 тоже на 2 а также добавлены Казармы которые соответствуют Героям, например для Утера Казармы Людей, Для Рексара Казармы Орков и для Иллидана Древо Войны.
» WarCraft 3 / Ограничение для предметов
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
(Необходимый предмет чтобы собрать Силу Бесконечности)
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
» WarCraft 3 / Проверка команды Камеры из Массива
дальше
» WarCraft 3 / Проверка команды Камеры из Массива
нет заметил это...думал экземпляр структуры в другом месте
SubString неправильно высчитывает значения Индексов Массива
» WarCraft 3 / Проверка команды Камеры из Массива
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
а у меня Список
Стандартным методом проверки Подстроки?
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
Призван задать ограничение чисто для Команды
дальше
будет работать
где
Отредактирован Centyrion
» WarCraft 3 / Проверка команды Камеры из Массива
выводит как
Занести в некий...Глобальный Массив Список команд
и одной проверкой SubString указать то что должно происходить в определенных блоках
проверяя Группу Команд Внутри этого массива и проверки Списка команд Определенной Группы Команд
но это невозможно
= 4
что может быть ровнее этого числа?
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
Полностью убрана -kick команда чтобы добавить проект на платформе ICCup, изменилось название Вудора с Хранителя леса на Адепт Природы, исправлены некоторые ошибки связанные с убийством Архимонда и установки ограничения для Добывателей, добавлены новые условия для нанесения урона по области для способностей, теперь проверяется дополнительно если юнит Невосприимчив к магии, изменились все способности Вудора, добавлена новая функция которая может уничтожать деревья а также восполнять их здоровье, переделаны некоторые локации, добавлены новые условия для спавнов, теперь вместо Костяного Завода Склеп а также он может воспроизводить Анимацию как с Казармами, убраны Темные Солдаты, переделаны Казармы, теперь вместо них Алтарь, переделаны условия создания героев в 4 субволне, теперь если Алтарь соответствующий волне уничтожен Герой волны не будет создаваться, изменились Приоритеты игроков так как они влияют на ИИ, исправлена ошибка с загрузкой 2 артефактов, изменилось описание карты, теперь в ней присутствует приглашение в Дискорде, исправлены большинство ошибок связанные с приказами боссов а также некоторые функции переписаны для сокращения строк кода, добавлены новые условия для Спавнов, теперь созданные Юниты волны будут проверятся на наличие проходимости ландшафта так как Летающие Юниты игнорировали этот приказ, также исправлены большинство ошибок связанные с созданием боевой единицы, добавлена новая функция очищения хэндлов при уничтожении боевой единицы а также сократилось количество блоков кода которые выполнялись дважды в разных функциях, и добавлены новые возможности для создания мини боссов для Сил Артаса, исправлена ошибка с получением Тириона Фордринга, теперь предметы даются ему, добавлены новые условия для Сил Артаса, теперь здания волн будут меняться дополнительно проверяя Жизнь и Ману, исправлена ошибка с командой [-repick] и переделаны все скилы Гересина.
» WarCraft 3 / АОЕ Стан абилка для даммиков
» WarCraft 3 / Каким образом можно заставить варкрафт работать без родных mpq?
удалить ничего не надо, единственное что можно сделать это Оптимизировать то что написал своими ручками, или оптимизировать определенные блоки кода, удалить надо только то что импортировал в карту а не все подряд
это как заставить Мозг думать что он может работать без Ничего
Отредактирован Centyrion
» WarCraft 3 / Количество Рабов на шахте
Это будет такая дрочильня с приказами. Нужно все тонкости соблюсти.
я уже подумал сколько триггеров на GUI придеться создавать чтобы вот...просто...заставить раб добывать ресурсы
Дерево это отдельный Ресурс игры, если Дерево Погибло значит рубить другое
если Рудник Истошен он Уничтожается останавливая Работников
Отредактирован Centyrion
» WarCraft 3 / Перенос карты с Reforged на 1.26a
известно что в рефордже есть такие нативки которые могут установить Броню юнита налету Жизнь атака и так далее
назывались они что-то типа
просто убрать эти нативки из Редактора Триггеров
дал ответ какие файлы нужно редактировать чтобы иметь возможность открывать карту в других патчах
Отредактирован Centyrion
» WarCraft 3 / Подскажите триггер с переносом юнитов
есть вариант Выделить Несколько персонажей расположенные друг с другом и перенести их куда вам надо
есть вариант Выделить Несколько персонажей расположенные в разных местах карты
есть вариант привязать переменную к созданию персонажа и указать чтобы эта переменная Двигалась к выбранной точке
есть вариант выделить персонажей в область и приказать им двигаться в указанную точку
есть вообще вариант моментально выделить персонажей и перенести их в другой конец
что именно вам нужно?
есть вообще вариант выделить персонажей в область и заставить их Прыгнуть в указанную точку
как Крот или БурундукОтредактирован Centyrion
» WarCraft 3 / prio
Отредактирован Centyrion
» WarCraft 3 / Arthas Revenge Siege
» WarCraft 3 / Количество Рабов на шахте
Отредактирован Centyrion
» WarCraft 3 / Количество Рабов на шахте
и менять значение текста на + 1 или - 1 если пеон не добывает
» WarCraft 3 / Перенос карты с Reforged на 1.26a
скачал редактор 1.31 и на основе существующей карте заточенная под 1.26 добавил новые условия для рефорджа.
про обратную совместимость не в курсе но рефордж отличается от патча 1.26, если так сильно хочется можно поочередно вытащить из рефорджа все необходимое используя Mpq Master и смотреть если в версии 1.26 она откроется, если нет то убрать дополнительные поля в РО которые мешают открытия карты и еще раз попытаться.
ябы так сделал.
точно также и с триггерами.
Отредактирован Centyrion
» WarCraft 3 / квест с убийством юнитов
тогда есть специальная функция Добавления Юнита в Группу, с помощью нее посчитаем сколько юнитов погибло но надо добавлять этих юнитов в группу
далее посчитать сколько юнитов погибло
но оно сработает в любом случае...если цикл запущен то посчитает сколько юнитов погибло
Отредактирован Centyrion
» WarCraft 3 / квест с убийством юнитов
я приведу пример как сделать подобное
сначал создаем триггер где вставляем в Событие Юнит Умирает
каждый раз когда ктото (неважно кто) Умирает срабатывает это Событие
далее мы должны узнать Кто умер
в Условие вставляем что умер такой юнит
Тип юнита Погибающий Юнит Равняется Наш Юнит
и в действие вставляет получить 1 золото Каждый Раз когда наш Юнит погибает
далее нажимаем комбинацию клавишь CTRL + B и открываются Переменные
и Тип Переменной Ищем Целочисленная
дальше возвращаемся в наш Триггер
и добавляем новое Действие
и в конце добавляем это
конечный результат должен быть таким но только вместо пехотинца выбираем нашу боевую единицу
» WarCraft 3 / Arthas Revenge Siege
» WarCraft 3 / Arthas Revenge Siege