18

» WarCraft 3 / Каким образом можно заставить варкрафт работать без родных mpq?

Незнание структуры Карты и Архивов внутри игры приведет к печальным последствиям
удалить ничего не надо, единственное что можно сделать это Оптимизировать то что написал своими ручками, или оптимизировать определенные блоки кода, удалить надо только то что импортировал в карту а не все подряд

Заставить варкрафт работать без родных mpq
это как заставить Мозг думать что он может работать без Ничего
18

» WarCraft 3 / Количество Рабов на шахте

МрачныйВорон
Это будет такая дрочильня с приказами. Нужно все тонкости соблюсти.
я уже подумал сколько триггеров на GUI придеться создавать чтобы вот...просто...заставить раб добывать ресурсы
Замечано, что позже после срубки раб ищет ближайшее дерево. А с шахтами неизвестно. Мб он захочет с ближайшей шахты собирать
Дерево это отдельный Ресурс игры, если Дерево Погибло значит рубить другое
если Рудник Истошен он Уничтожается останавливая Работников

это делается 1 строкой
call IssueImmediateOrder( udg_Работник[1], "autoharvestgold" ) для золота
call IssueImmediateOrder( udg_Работник[1], "autoharvestlumber" ) для древесины
call IssueImmediateOrder( udg_Работник[1], "returnresources" ) чтобы принести добытые ресурсы

если ордер уже отдан отследить его согласно условию и менять значение

можно Boolean юзать чтобы отследить приказ
18

» WarCraft 3 / Перенос карты с Reforged на 1.26a

Можешь подробнее рассказать про то, как ты с редактором 1.31 сделал, а то я не совсем понял.
это было когда рефордж появился..он был багнутым и я ради спортивного интереса приспособил проект для рефорджа
известно что в рефордже есть такие нативки которые могут установить Броню юнита налету Жизнь атака и так далее
назывались они что-то типа
SetUnitArmor
эти нативки отсутствуют в 1.26 патче поэтому посчитать броню не получится одной нативкой, нужно создавать костыль чтобы посчитать кол-во брони у юнита
просто убрать эти нативки из Редактора Триггеров

nazarpunk
дал ответ какие файлы нужно редактировать чтобы иметь возможность открывать карту в других патчах
18

» WarCraft 3 / Подскажите триггер с переносом юнитов

что подразумевается под словом перенести?
есть вариант Выделить Несколько персонажей расположенные друг с другом и перенести их куда вам надо
есть вариант Выделить Несколько персонажей расположенные в разных местах карты
есть вариант привязать переменную к созданию персонажа и указать чтобы эта переменная Двигалась к выбранной точке
есть вариант выделить персонажей в область и приказать им двигаться в указанную точку
есть вообще вариант моментально выделить персонажей и перенести их в другой конец
что именно вам нужно?

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

есть еще возможность Нырнуть

есть возможность взять Лопату и копать землю чтобы выходить в другой конец
как Крот или Бурундук

есть еще вариант Взять Огромную металическую перчатку и Швырнуть всех персонажей в указанную точку
18

» WarCraft 3 / prio

nothing SetHeroesTakeItems ( boolean state) 
  • слабейший герой будет подбирать предметы. К сожалению не всегда. Ценность предмета определяется полем в РО Характеристики - приоритет.
18

» WarCraft 3 / Количество Рабов на шахте

тут надо и инкремент увеличить каждый раз когда пеон начинает добывать золото
и менять значение текста на + 1 или - 1 если пеон не добывает
18

» WarCraft 3 / Перенос карты с Reforged на 1.26a

я сделал следующим образом
скачал редактор 1.31 и на основе существующей карте заточенная под 1.26 добавил новые условия для рефорджа.
про обратную совместимость не в курсе но рефордж отличается от патча 1.26, если так сильно хочется можно поочередно вытащить из рефорджа все необходимое используя Mpq Master и смотреть если в версии 1.26 она откроется, если нет то убрать дополнительные поля в РО которые мешают открытия карты и еще раз попытаться.
ябы так сделал.
точно также и с триггерами.
18

» WarCraft 3 / квест с убийством юнитов

а если аое?
в каком смысле АОЕ? если убить несколько юнитов?
тогда есть специальная функция Добавления Юнита в Группу, с помощью нее посчитаем сколько юнитов погибло но надо добавлять этих юнитов в группу
далее посчитать сколько юнитов погибло
но оно сработает в любом случае...если цикл запущен то посчитает сколько юнитов погибло
18

» WarCraft 3 / квест с убийством юнитов

anton1623:
я приведу пример как сделать подобное
сначал создаем триггер где вставляем в Событие Юнит Умирает
каждый раз когда ктото (неважно кто) Умирает срабатывает это Событие
далее мы должны узнать Кто умер
в Условие вставляем что умер такой юнит
Тип юнита Погибающий Юнит Равняется Наш Юнит
и в действие вставляет получить 1 золото Каждый Раз когда наш Юнит погибает
далее нажимаем комбинацию клавишь CTRL + B и открываются Переменные
нажимаем на Зеленый крестик и выскачит окно
здесь пишем название переменной (Любое)
и Тип Переменной Ищем Целочисленная
нажимаем на Ок и готово наша переменная заведена
дальше возвращаемся в наш Триггер
и добавляем новое Действие
каждый раз когда этот юнит погибнет переменная увеличит кол-во на 1 (мы же убиваем по 1 юниту?)
и в конце добавляем это
готово
конечный результат должен быть таким но только вместо пехотинца выбираем нашу боевую единицу
18

» WarCraft 3 / Сломалась карта

это скорее всего по невнимательности, это решается убиранием всех строк кода из war3map.j на которые указывают редактор, новые функции которые поддерживаются в JNJP не будут работать в обычном редакторе
либо использовать тот же редактор в котором прописаны эти функции
18

» WarCraft 3 / ворота по вертикале

Идем в Редакторе Объектов -> Разрушаемые объекты или Декорации -> Ищем например Ворота (СВ- ЮЗ) или (СЗ - ЮВ) -> ищем Параметр J) Графика - Фиксированное вращение (bfxr) и указываем от 0 до 360.00 где значение указывается в градусах
Далее выбираем Файл Модель (bfil) Ворот на (З-В)
Выбираем на панель инструментов и смотрим в какую сторону Ворота смотрят
18

» WarCraft 3 / Как играть с другом против бота в WarCraft 3?

видимо он имеет в виду про команду !comp
<> на боте

если в карте в которой играете предусмотрен механизм создания Компьютерного игрока то да можно написать эту команду
если же в условиях нету такого механизма зря вставляете в слоты игроков компьютера он не сработает а проигнорирует их
а так зависит от разработчиков проекта и самого бота. если можно ввести эту команду и в слоте игрока появится компьютер то карта запустится с компьютером.
но они не действуют, когда ввожу их в игре
это потому что в Лобби надо их вводить а не в самой игре
18

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

Centyrion, если исправно работает, то и смущаться лишний раз незачем.
ну все-же предупрежден значит вооружен.
оказывается я все это время сохранял Имя Игрока вместо идентификатора, т.е 0 1 2 3 4 в зависимости от айди игрока, так даже лучше...но не каждый зайдет в Function List и глянет что там происходит, все-же это дело оптимизации. как напишешь так и сработает.

Centyrion, если исправно работает, то и смущаться лишний раз незачем.
спасибо за ответ.
18

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

Откуда вообще был взят первый вариант, где два раза _STRING? Всё там должно быть нормально.
не сомневаюсь
вот пример, пояснения в конце
call SavePlayerHandleBJ(GetOwningPlayer((Hero[GetPlayerId(GetTriggerPlayer())])),15,1,udg_H)
call SaveLocationHandle(udg_H, 3, StringHash("GV"+I2S(GetPlayerId(GetTriggerPlayer()))), GetUnitLoc(Hero[GetPlayerId(GetTriggerPlayer())]))
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
HaveSavedValue работает исправно но смущает
    elseif (valueType == bj_HASHTABLE_STRING) then
        return HaveSavedHandle(table, missionKey, key)
    else
                return false

Centyrion, ещё раз, зачем использовать обёртку вместо нативки?
как вариант, хоть и незачем

Откуда вообще был взят первый вариант, где два раза _STRING? Всё там должно быть нормально.
это прописано в Function List Jass New Gen Pack

ссылка на сайте
18

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

тут выбор не велик
  1. использовать другие значения для сохранения хэндла в хэш таблице кроме HaveSavedHandle но при этом использовать BJ функции
  2. можно без BJ но использовать HaveSavedHandle
  3. записать в некую переменную значение которое должно проверятся и проверить ее перед определенным действием
  4. ну или использовать обычный редактор не JNJP
  5. запилить свою функцию на подобие этой и туда прописать что мне нужно сохранять с последующим очищением
5 )наиболее подходящий вариант

я о том почему JNJP написал в Function List подобное
Потому что такая функция имеется в игре наверное.
она есть но сохраняет false вместо хэндла

воспользуюсь конструкции типа bj_HASHTABLE_INTEGER
все равно игрока можно записать как Player(index)
а индекс и будет целочисленной

или зависит от того что буду делать можно и bj_HASHTABLE_BOOLEAN чтобы не использовать BJ функции

тем более они занимают намного меньше места в памяти нежели хэндлы
18

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

Почему бы не использовать напрямую HaveSavedHandle?
Потому что так неинтересно и невозможно из гуя.
верно подметил 🙂я о том почему JNJP написал в Function List подобное
18

» WarCraft 3 / 1.31.1

1.31.1 я тоже скачал, пользовался ноутбуком 2010 года
1.26 работал с 20 фпс
1.31.1 работает но только с 10
проблема с твоим компьютером
18

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

или все-же целочисленную переменную сохранить вместо хэндла?
valueType == bj_HASHTABLE_INTEGER

особой роли не играет что буду сохранять но смущает Function List из JNJP

	// Hashtable value types
	constant integer   bj_HASHTABLE_BOOLEAN                 = 0
	constant integer   bj_HASHTABLE_INTEGER                 = 1
	constant integer   bj_HASHTABLE_REAL                    = 2
	constant integer   bj_HASHTABLE_STRING                  = 3
	constant integer   bj_HASHTABLE_HANDLE                  = 4
18

» WarCraft 3 / Доска Статистики

сдаюсь

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 переменная )) оригинально ))

спасибо за ответ
Загруженные файлы
18

» WarCraft 3 / Доска Статистики

Borodach:
пробовал и так, нивкакую не хочет
перестроил полностью функцию
проблема была и в этом и в другом
MultiboardSetRowCount мне оно понадобилось чтобы не указать переменную которая проверяет кол-во игроков которые играют и так далее
чтобы было все понятно

создал цикл и поставил в начале функции
постоянно забываю про порядок выполнения кода
если не соблюдать порядок строк оно и не заработает
18

» WarCraft 3 / Доска Статистики

грешу на то что в цикле нельзя установить кол-во строк таблицы
только присвоить переменную которая проверит кто играет и кто нет и установить кол-во строк