Незнание структуры Карты и Архивов внутри игры приведет к печальным последствиям
удалить ничего не надо, единственное что можно сделать это Оптимизировать то что написал своими ручками, или оптимизировать определенные блоки кода, удалить надо только то что импортировал в карту а не все подряд
Заставить варкрафт работать без родных mpq
это как заставить Мозг думать что он может работать без Ничего
МрачныйВорон
Это будет такая дрочильня с приказами. Нужно все тонкости соблюсти.
я уже подумал сколько триггеров на GUI придеться создавать чтобы вот...просто...заставить раб добывать ресурсы
Замечано, что позже после срубки раб ищет ближайшее дерево. А с шахтами неизвестно. Мб он захочет с ближайшей шахты собирать
Дерево это отдельный Ресурс игры, если Дерево Погибло значит рубить другое
если Рудник Истошен он Уничтожается останавливая Работников
это делается 1 строкой
call IssueImmediateOrder( udg_Работник[1], "autoharvestgold" ) для золота
call IssueImmediateOrder( udg_Работник[1], "autoharvestlumber" ) для древесины
call IssueImmediateOrder( udg_Работник[1], "returnresources" ) чтобы принести добытые ресурсы
если ордер уже отдан отследить его согласно условию и менять значение
Можешь подробнее рассказать про то, как ты с редактором 1.31 сделал, а то я не совсем понял.
это было когда рефордж появился..он был багнутым и я ради спортивного интереса приспособил проект для рефорджа
известно что в рефордже есть такие нативки которые могут установить Броню юнита налету Жизнь атака и так далее
назывались они что-то типа
SetUnitArmor
эти нативки отсутствуют в 1.26 патче поэтому посчитать броню не получится одной нативкой, нужно создавать костыль чтобы посчитать кол-во брони у юнита
просто убрать эти нативки из Редактора Триггеров
nazarpunk
дал ответ какие файлы нужно редактировать чтобы иметь возможность открывать карту в других патчах
что подразумевается под словом перенести?
есть вариант Выделить Несколько персонажей расположенные друг с другом и перенести их куда вам надо
есть вариант Выделить Несколько персонажей расположенные в разных местах карты
есть вариант привязать переменную к созданию персонажа и указать чтобы эта переменная Двигалась к выбранной точке
есть вариант выделить персонажей в область и приказать им двигаться в указанную точку
есть вообще вариант моментально выделить персонажей и перенести их в другой конец
что именно вам нужно?
непонятно что именно вы ищете
есть вообще вариант выделить персонажей в область и заставить их Прыгнуть в указанную точку
есть еще возможность Нырнуть
есть возможность взять Лопату и копать землю чтобы выходить в другой конец как Крот или Бурундук
есть еще вариант Взять Огромную металическую перчатку и Швырнуть всех персонажей в указанную точку
я сделал следующим образом
скачал редактор 1.31 и на основе существующей карте заточенная под 1.26 добавил новые условия для рефорджа.
про обратную совместимость не в курсе но рефордж отличается от патча 1.26, если так сильно хочется можно поочередно вытащить из рефорджа все необходимое используя Mpq Master и смотреть если в версии 1.26 она откроется, если нет то убрать дополнительные поля в РО которые мешают открытия карты и еще раз попытаться.
ябы так сделал.
точно также и с триггерами.
в каком смысле АОЕ? если убить несколько юнитов?
тогда есть специальная функция Добавления Юнита в Группу, с помощью нее посчитаем сколько юнитов погибло но надо добавлять этих юнитов в группу
далее посчитать сколько юнитов погибло
но оно сработает в любом случае...если цикл запущен то посчитает сколько юнитов погибло
anton1623:
я приведу пример как сделать подобное
сначал создаем триггер где вставляем в Событие Юнит Умирает
каждый раз когда ктото (неважно кто) Умирает срабатывает это Событие
далее мы должны узнать Кто умер
в Условие вставляем что умер такой юнит
Тип юнита Погибающий Юнит Равняется Наш Юнит
и в действие вставляет получить 1 золото Каждый Раз когда наш Юнит погибает
далее нажимаем комбинацию клавишь CTRL + B и открываются Переменные
нажимаем на Зеленый крестик и выскачит окно
здесь пишем название переменной (Любое)
и Тип Переменной Ищем Целочисленная
нажимаем на Ок и готово наша переменная заведена
дальше возвращаемся в наш Триггер
и добавляем новое Действие
каждый раз когда этот юнит погибнет переменная увеличит кол-во на 1 (мы же убиваем по 1 юниту?)
и в конце добавляем это
готово
конечный результат должен быть таким но только вместо пехотинца выбираем нашу боевую единицу
это скорее всего по невнимательности, это решается убиранием всех строк кода из war3map.j на которые указывают редактор, новые функции которые поддерживаются в JNJP не будут работать в обычном редакторе
либо использовать тот же редактор в котором прописаны эти функции
Идем в Редакторе Объектов -> Разрушаемые объекты или Декорации -> Ищем например Ворота (СВ- ЮЗ) или (СЗ - ЮВ) -> ищем Параметр J) Графика - Фиксированное вращение (bfxr) и указываем от 0 до 360.00 где значение указывается в градусах
Далее выбираем Файл Модель (bfil) Ворот на (З-В)
Выбираем на панель инструментов и смотрим в какую сторону Ворота смотрят
если в карте в которой играете предусмотрен механизм создания Компьютерного игрока то да можно написать эту команду
если же в условиях нету такого механизма зря вставляете в слоты игроков компьютера он не сработает а проигнорирует их
а так зависит от разработчиков проекта и самого бота. если можно ввести эту команду и в слоте игрока появится компьютер то карта запустится с компьютером.
но они не действуют, когда ввожу их в игре
это потому что в Лобби надо их вводить а не в самой игре
Centyrion, если исправно работает, то и смущаться лишний раз незачем.
ну все-же предупрежден значит вооружен.
оказывается я все это время сохранял Имя Игрока вместо идентификатора, т.е 0 1 2 3 4 в зависимости от айди игрока, так даже лучше...но не каждый зайдет в Function List и глянет что там происходит, все-же это дело оптимизации. как напишешь так и сработает.
if HaveSavedValue(15, bj_HASHTABLE_HANDLE, 1, udg_H) == true then
do action
здесь и наткнулся на HaveSavedValue
call SetUnitPositionLoc(Hero[GetPlayerId(GetOwningPlayer(GetManipulatingUnit()))],LoadLocationHandle(udg_H, 3, StringHash("GV"+I2S(GetPlayerId(GetOwningPlayer(GetManipulatingUnit()))))))
else
endif
loop
exitwhen k >= F_MaxPlayers()
if GetPlayerSlotState(Player(k)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(k)) != PLAYER_SLOT_STATE_EMPTY then
call MultiboardSetRowCount(udg_MB, k + 2)
endif
set k = k + 1
endloop
что же ему не хватает
он все равно добавляет эти иконки
попробую по другому
если указать в качестве строки переменную типа массив с порядковым номером игрока и через эту нативку установить кол-во строк то оно не сработает....так как функция не умеет считать кол-во игроков
или 2 вариант...когда цикл достиг конца и условие выполнилось.. взять и добавить булевую переменную в качестве остановки цикла
простым языком цикл будет выполнятся до тех пор пока не сработает условие выхода из цикла а условие не сработает так как она добавит только лишнее
или 3 вариант в качестве выхода из цикла указать кол-во игроков и дальше ручками править
local integer l = 0
local integer i = 0
loop
exitwhen i >= 10
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(i)) != PLAYER_SLOT_STATE_EMPTY then
call MultiboardSetRowCount(udg_MB, l + 2)
set l = l + 1
endif
set i = i + 1
endloop
этот вариант сработал
но
loop
exitwhen k >= F_MaxPlayers()
if GetPlayerSlotState(Player(k)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(k)) != PLAYER_SLOT_STATE_EMPTY then
set r = r + 1
call MultiboardSetRowCount(udg_MB, r + 1) //не + 2 а + 1 так как цикл уже запущен
endif
set k = k + 1
endloop
но надо перестроить и другие функции.
10 строк кода вместо одной функции и 1 переменная )) оригинально ))
перестроил полностью функцию
проблема была и в этом и в другом
MultiboardSetRowCount мне оно понадобилось чтобы не указать переменную которая проверяет кол-во игроков которые играют и так далее
чтобы было все понятно
создал цикл и поставил в начале функции постоянно забываю про порядок выполнения кода
если не соблюдать порядок строк оно и не заработает
грешу на то что в цикле нельзя установить кол-во строк таблицы
только присвоить переменную которая проверит кто играет и кто нет и установить кол-во строк
» WarCraft 3 / Каким образом можно заставить варкрафт работать без родных mpq?
удалить ничего не надо, единственное что можно сделать это Оптимизировать то что написал своими ручками, или оптимизировать определенные блоки кода, удалить надо только то что импортировал в карту а не все подряд
это как заставить Мозг думать что он может работать без Ничего
Ред. Centyrion
» WarCraft 3 / Количество Рабов на шахте
Это будет такая дрочильня с приказами. Нужно все тонкости соблюсти.
я уже подумал сколько триггеров на GUI придеться создавать чтобы вот...просто...заставить раб добывать ресурсы
Дерево это отдельный Ресурс игры, если Дерево Погибло значит рубить другое
если Рудник Истошен он Уничтожается останавливая Работников
Ред. Centyrion
» WarCraft 3 / Перенос карты с Reforged на 1.26a
известно что в рефордже есть такие нативки которые могут установить Броню юнита налету Жизнь атака и так далее
назывались они что-то типа
просто убрать эти нативки из Редактора Триггеров
дал ответ какие файлы нужно редактировать чтобы иметь возможность открывать карту в других патчах
Ред. Centyrion
» WarCraft 3 / Подскажите триггер с переносом юнитов
есть вариант Выделить Несколько персонажей расположенные друг с другом и перенести их куда вам надо
есть вариант Выделить Несколько персонажей расположенные в разных местах карты
есть вариант привязать переменную к созданию персонажа и указать чтобы эта переменная Двигалась к выбранной точке
есть вариант выделить персонажей в область и приказать им двигаться в указанную точку
есть вообще вариант моментально выделить персонажей и перенести их в другой конец
что именно вам нужно?
есть вообще вариант выделить персонажей в область и заставить их Прыгнуть в указанную точку
как Крот или БурундукРед. Centyrion
» WarCraft 3 / prio
» 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 и открываются Переменные
и Тип Переменной Ищем Целочисленная
дальше возвращаемся в наш Триггер
и добавляем новое Действие
и в конце добавляем это
конечный результат должен быть таким но только вместо пехотинца выбираем нашу боевую единицу
» Блог им. ofeerist / Обзор на пиво
» Рецепториум / Жульен с грибами
Ред. Centyrion
» WarCraft 3 / Сломалась карта
либо использовать тот же редактор в котором прописаны эти функции
Ред. Centyrion
» WarCraft 3 / ворота по вертикале
Далее выбираем Файл Модель (bfil) Ворот на (З-В)
Выбираем на панель инструментов и смотрим в какую сторону Ворота смотрят
Ред. Centyrion
» WarCraft 3 / Как играть с другом против бота в WarCraft 3?
если в карте в которой играете предусмотрен механизм создания Компьютерного игрока то да можно написать эту команду
если же в условиях нету такого механизма зря вставляете в слоты игроков компьютера он не сработает а проигнорирует их
а так зависит от разработчиков проекта и самого бота. если можно ввести эту команду и в слоте игрока появится компьютер то карта запустится с компьютером.
» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)
оказывается я все это время сохранял Имя Игрока вместо идентификатора, т.е 0 1 2 3 4 в зависимости от айди игрока, так даже лучше...но не каждый зайдет в Function List и глянет что там происходит, все-же это дело оптимизации. как напишешь так и сработает.
» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)
Ред. Centyrion
» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)
вот пример, пояснения в конце
» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)
все равно игрока можно записать как Player(index)
а индекс и будет целочисленной
» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)
» WarCraft 3 / 1.31.1
1.26 работал с 20 фпс
1.31.1 работает но только с 10
проблема с твоим компьютером
Ред. Centyrion
» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)
Ред. Centyrion
» WarCraft 3 / Доска Статистики
попробую по другому
простым языком цикл будет выполнятся до тех пор пока не сработает условие выхода из цикла а условие не сработает так как она добавит только лишнее
» WarCraft 3 / Доска Статистики
пробовал и так, нивкакую не хочет
проблема была и в этом и в другом
чтобы было все понятно
постоянно забываю про порядок выполнения кода
если не соблюдать порядок строк оно и не заработает
Ред. Centyrion
» WarCraft 3 / Доска Статистики
только присвоить переменную которая проверит кто играет и кто нет и установить кол-во строк