Steal nerves #1 - 1 час назад 0
Steal nerves #2 - 1 час назад (отредактировано ) 0

» WarCraft 3 / Как сделать что бы триггер срабатывал после удара

Удалите вопрос.
нельзя оставлять темы без ответов. Другие люди тоже могут искать, и натыкаться на пустые темы.
» последовательность
  1. Событие - Юнит получает приказ если цель далеко, то попытается приблизиться к ней. А потом начнет атаку
  2. Событие - юнит атакован делает замах, то есть самого урона нет. анимация срабатывает, летит снаряд и др. Короче можно узнать, что произошел физический удар. Есть еще событие *получил приказ атаковать* , но мб это приказ, а не замах (но с орбами поможет).
  1. Событие - юнит применяет способность применяет заклинание. Это, если как типа магический урон. Вместо события - юнит атакован
  2. Событие - юнит получает урон приходит урон, завершение атаки
Лень объяснять, но как мог объяснил
Steal nerves #3 - 3 часа назад (отредактировано ) 0

» WarCraft 3 / По ИИ

» нативки приказов
» строительство (приказы в точку)
заставляет юнита строить определенное здание в точке (у нежити с этим проблемы, точнее с рудником)
native IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns boolean
native IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
чтобы возвести сплетенный рудник эльфов или проклятый рудник нежити вроде используют IssueTargetOrderById, наводя на рудник
function IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean
    if (unitId == 'ugol') then //проклятый рудник
        return IssueHauntOrderAtLocBJ(whichPeon, loc)
    else
        return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc))
    endif
endfunction
» стандартные приказы
применяет абилки без цели, нанимает (тренирует) войска, улучшает здания и проводит исследования
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
применяет приказы в точку
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean
native IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
» ГРУППЫ - ОТРЯДЫ, групповые стандартные приказы
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order returns boolean
отдает отряду приказ в цель
native GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean
native GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns boolean
заставляет отряд использовать приказ в точку
native GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean
native GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean
native GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean
native GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns boolean
» нестандартные приказы
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget на цель targetWidget
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantTargetOrder, заставляет юнита whichUnit использовать приказ order на targetWidget с помощью объекта instantTargetWidget
Пример: есть приказ на гуи "dropitem" выбросить предмет, на самом деле этот предмет можно дропнуть другому юниту (герою, или в магазин. если в магазин передаешь, то продает его). Короче на этом примере можно передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него. Это был просто пример, хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget в точку
native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantPointOrder заставляет юнита whichUnit использовать приказ order в точку (x,y) или что-то сделать в точке с помощью объекта instantTargetWidget.
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку. Хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
» приказы с итемами
юнит передает предмет цели target (можно так и продать в магазин, если магазин будет целью)
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
дропают предмет в точку (на землю короче выкидываем)
native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
перемещает предмет в слот (если там был слот занят, то меняет местами).
native UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns boolean
юзаем предмет
native UnitUseItem takes unit whichUnit, item whichItem returns boolean
юзаем предмет в цель (в качестве цели могут быть объект widget: такие как юнит, итем. декорация)
native UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
юзаем предмет в точку
((КОД
native UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
))
852002 to 852007 (moveslot): Эти приказы перемещают указанный предмет в соответствующий слот инвентаря героя, отдавшего приказ. Идентификатор 852002 переместит предмет в первый слот, идентификатор 852003 – во второй и т.д. Можно с помощью IssueInstantTargetOrderById перетащить итем самому себе.
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
» МАНИПУЛЯЦИИ С ПРЕДМЕТОМ (не приказы)
даем итем (не создаем !!!)
native UnitAddItem takes unit whichUnit, item whichItem returns boolean 
создаем итем определенного типа
native UnitAddItemById takes unit whichUnit, integer itemId returns item
создаем итем определенного типа в определенный слот
native UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean
удаляем итем
native UnitRemoveItem takes unit whichUnit, item whichItem returns nothing
удаляем итем с определенного слота
native UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns item
размер инвентаря (может помочь с циклом, например узнать до скольки перебирать слоты и др.)
native UnitInventorySize takes unit whichUnit returns integer
итем в слоте
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
» иммитация
как понял ниже три заставляют чужого юнита делать действия от имени игрока forWhichPlayer:
  1. магазин покупает/продает юнитов и предметов от имени чужого игрока (пример IssueNeutralImmediateOrder)
  2. магазин переключить на героя с помощью smart, иначе герой не купит (пример IssueNeutralTargetOrder)
  3. мастерскую гоблина заставляет делать разведку в точке (IssueNeutralPointOrder)
чаще всего эти нативки помогают в покупках/продажах, neutralStructure представляется часто как магазин, у которого можно что-то купить.
иммитация от имени игрока
native IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean
native IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean
Объяснение: нативка IssueNeutralImmediateOrder - это иммитация приказа, заставляет нейтральное здание neutralStructure (чаще всего магазин) от имени игрока forWhichPlayer что-то делать (например нанимать войска)
иммитация от имени игрока в цель
native IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean
native IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns boolean
Объяснение: нативка IssueNeutralTargetOrder - заставляет что-то делать нейтральное здание neutralStructure с целью (купить выбранную цель у игрока; переключится на героя, тем самым открыв панель магазина)
иммитация от имени игрока в точку
native IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean
native IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean
Объяснение: нативка IssueNeutralPointOrder - заставляет что-то делать нейтральное здание neutralStructure с точкой. Думаю, эта штука, к примеру вроде типа помогает разведку делать. Помните, у мастерской гоблина гоблина разведку делать
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
xgm.guru/p/wc3/warden-buyitem возьмем пример
вариант Warden
function BuyItem takes unit FromShop,integer ItemID,unit ToUnit returns boolean
  if IssueNeutralTargetOrder(GetOwningPlayer(ToUnit), FromShop, "smart", ToUnit) or IssueTargetOrder(FromShop, "smart", ToUnit) then
    return IssueNeutralImmediateOrderById(GetOwningPlayer(ToUnit), FromShop, ItemID) or IssueImmediateOrderById(FromShop, ItemID)
  endif
  return false
endfunction
вариант agentex
function BuyItem takes unit u, unit shop, integer id returns boolean
  call IssueNeutralTargetOrder(GetOwningPlayer(u), shop, "smart", u)
  return IssueNeutralImmediateOrderById(GetOwningPlayer(u), shop, id)
endfunction
выучить навык
native SelectHeroSkill takes unit whichHero, integer abilcode returns nothing
851971 (smart): Приказ (цель-точка или цель-объект), аналог правой клавиши мыши.
852000 (skillmenu): Приказ (без указания цели), при выполнении которого открывается меню навыков героев. Если же триггерно заставить выполнить этот приказ обычную боевую единицу, то исчезнет ее карта команд, которая возвратится, если выбрать боевую единицу.
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
851973 (stunned): Этот приказ отдается боевым единицам, подвергшимся оглушающим способностям, таким как ‘AOws’ (Громовая поступь), лишая их возможности двигаться и атаковать.
По сути совет правильный, но приказ (имеется в виду skillmenu) указан неверно: OrderId("attributemodskill") = 852576
Они у него есть а он не хочет приниматься за дело
возможно что-то еще, без карты вряд ли можно понять что там. Вы как заставляете покупать? через нативки или через Common.AI? через нативки еще проверить еще можно, там на jass-е boolean возвращает. Если false, значит не может строить.
прикреплены файлы
Steal nerves #4 - 22 часа назад (отредактировано ) 3

» WarCraft 3 / Оформление заданий от BLIZZARD

У меня нет списка, так сделай свой. Не понимаю, обязательно делать как было у близзард 3? главное, чтоб красиво, быстро и удобно было, без излишевств. Если так надо перерой весь варкрафт 3, потом скинь на сайт.
Текст сообщения будет записан на след. строке, а не в один с "ОСНОВНОЕ ЗАДАНИЕ ПОЛУЧЕНО"
"|n" - перенос на другую строку. Эта фишка может не везде работать, например в описаний баффов. Но здесь пригодится, должно сработать по идее.
Если "|n" не работает, ну мало ли там, вот в описаний итемов и юнитов работает норм. так введи два сообщения последовательно: Сначало одно сообщение, потом другое. Второе на следующую строку перенесет. И будет тебе два как одно.
допустим, когда вы получаете новое задание, сообщение "ОСНОВНОЕ ЗАДАНИЕ ПОЛУЧЕНО" будет закрашено в цвет "ffcc00" и именно в такой, а не в зеленый (00ff00) например.
Ну нужно иметь набор готовых строк. Короче базу данных. При конкретных ситуациях выдавай соответствующее сообщение. Я тоже хотел бы иметь этот набор
» вот где полезны штуки, так вот здесь
Вот например, для игроков эти штуки пригодятся, в мультибордах или в оповещениях при убийствах и др.
Steal nerves #5 - 23 часа назад (отредактировано ) 0

» WarCraft 3 / Оформление заданий от BLIZZARD

Не совсем понял, что вы хотите. Мб вам нужно знать как генерировать текст, то можно сделать с помощью программ
Журнал сообщений можно очистить полностью, есть такая команда ClearTextMessages. Но пишут на форуме, что нельзя удалять и это что-то другое xgm.guru/forum/showthread.php?t=55086
» код BJ
function ClearTextMessagesBJ takes force toForce returns nothing
    if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
        // Use only local code (no net traffic) within this block to avoid desyncs.
        call ClearTextMessages()
    endif
endfunction
А вот как туда ввести, это же обычное сообщение. После оно вносится в журнал сообщений. Есть две разные нативки (одна вносит в журнал, а другая не вносит. кажется это нативка со временем не работает. возможно ошибаюсь, не помню).
» нативки
native DisplayTextToPlayer takes player toPlayer, real x, real y, string message returns nothing
native DisplayTimedTextToPlayer takes player toPlayer, real x, real y, real duration, string message returns nothing
native DisplayTimedTextFromPlayer takes player toPlayer, real x, real y, real duration, string message returns nothing
Steal nerves #6 - 2 дня назад (отредактировано ) 0

» WarCraft 3 / не срабатывают триггеры инициализации (или вообще триггеры)

TeX13, мб у вас лимит операции? как перечислил выше примеры KingMaximax, Поищи на сайте "лимит операции", просто часто люди задают почему у них перестают работать триггеры (потоки обрываются).
xgm.guru/p/100/192026?postid=351413#comment8 в данном случае невнимательность, ии логическая ошибка тоже могут повлиять на сбой. пример в ссылке
  • мб какое-то действиие обрывает поток. Попробуйте его убрать, временно исключить (под двойной обратный слэш "//"), если не обрывает, значит, что-то другое. Сравнивайте, что сделали до того, как перестало работать, и что уже сделали.
  • длинный кусок кода долго прогружается, особенно при старте игры, поэтому разделить его нужно на части. триггеров не плодить
код в студию
Steal nerves #7 - 2 дня назад (отредактировано ) 0

» WarCraft 3 / Как конвентировать эти функции, чтобы заработали?

KingMaximax, мб и есть хеш таблица, или структура и UserData... Просто я наработку нашел, старую карту. Мультиборд, радар. Жаль не взглянуть никак. Все статьи на хгм про мультиборд почти не о чем.
Так она на новых патчах не работает. Там полностью надо разбираться с кодом и прочее.
Например есть код
function get_object_iparam takes handle h, string keyz returns integer
   return GetStoredInteger(udg_cache, I2S(GetHandleId(h)), keyz)
endfunction

call DestroyLightningBJ(get_object_iparam ( r, "GetLightning[" + I2S(i) + "]"))
он может уничтожать молнию Lightning с помощью DestroyLightningBJ. А сама функция get_object_iparam возвращает число. Сегодня варкрафт пишет, что какая то ошибка (должна быть молния, а не целое число). Извращенный способ. Я абсолютно не понимаю этот старый ретурн баг
Я так понял надо из кэша достать молнию.
Steal nerves #8 - 2 дня назад (отредактировано ) 0

» WarCraft 3 / не срабатывают триггеры инициализации (или вообще триггеры)

где отладка? дебагом на экран выводи. Про какие события вы говорите?
Steal nerves #9 - 2 дня назад (отредактировано ) 0

» WarCraft 3 / Блокировка чит-кодов

mishanka122, ну там отследить нельзя будет это через чат.
Steal nerves #10 - 3 дня назад (отредактировано ) 0

» WarCraft 3 / multiboard

ScopteRectuS, xgm.guru/forum/showthread.php?t=47331
ты знаешь, что там значение на сотку нужно делить? Пропорция.
» раскрыть
Ты не сможешь изменить по ходу игры размер ширины, он только один раз. Нужно спрятать мультииборд через MultiboardDisplay, изменить размер, а потом отобразить.
спасибо, конечно, за список функций. Но я спрашивал не это. Представь МБ, 2строки, 2 столбца.
ну это точно нельзя сказать. Вот, я методом тыка и проб определял. Также тут зависит от длины текста и прочее. Я пробовал посмотреть с помощью карты. MultiboardDisplay действительна полезна, помогает увидеть как меняет положение.
Вводи в чат:
"D1 N" - где N размер ширины 1 ячейки
"D2 N" - где N размер ширины 2 ячейки
Сам только что сделал, мб ничего не значит карта. Надо посмотреть, а то по впечатлениям, ввожу первой 55 (это 0,55), смещается влево, и таким образом расширяет таблицу. Ввожу второй ячейке 54 (0.54), смещается влево, Но получилось очень не красиво, она сдвинула первую ячейку вперед и встала на нее место. Короче зазоры между ячейками большие получились
прикреплены файлы
Steal nerves #11 - 3 дня назад (отредактировано ) 0

» WarCraft 3 / multiboard

» вот
создать мультиборд
set bj_lastCreatedMultiboard = CreateMultiboard() //создаем мультиборд, меню паузы
native CreateMultiboard takes nothing returns multiboard
мультиборд можно представить в виде таблицы
call MultiboardSetRowCount(bj_lastCreatedMultiboard, rows) //ряд, строка
native MultiboardSetRowCount takes multiboard lb, integer count returns nothing
call MultiboardSetColumnCount(bj_lastCreatedMultiboard, cols) //столбец, колонка
native MultiboardSetColumnCount takes multiboard lb, integer count returns nothing
узнать кол-во строк или столбцов мультиборда
MultiboardGetRowCount(mb) //максимальное кол-во строк
native MultiboardGetRowCount takes multiboard lb returns integer
MultiboardGetColumnCount(mb) //максимальное кол-во столбцов
native MultiboardGetColumnCount takes multiboard lb returns integer
мультиборду можно придать имя, заглавие (торчит название сверху)
call MultiboardSetTitleText(bj_lastCreatedMultiboard, title)
native MultiboardSetTitleText takes multiboard lb, string label returns nothing
цвет заглавие мультиборда (названия мультиборда)
native MultiboardSetTitleTextColor takes multiboard lb, integer red, integer green, integer blue, integer alpha returns nothing
показать-скрыть мультиборд, мультиборд можно отобразить конкретному игроку вставив вместо true условие GetLocalPlayer() == Player(0). Если мультибордов несколько, то у игрока активным будет один
call MultiboardDisplay(bj_lastCreatedMultiboard, true)
native MultiboardDisplay takes multiboard lb, boolean show returns nothing
показать-скрыть все мультиборды. Инверсная функция
call MultiboardSuppressDisplay(not flag)
native MultiboardSuppressDisplay takes boolean flag returns nothing
проверка показан ли мультиборд.
native IsMultiboardDisplayed takes multiboard lb returns boolean
часто используют понятие как ячейка multiboarditem, как и таблица Excel может хранить текст (строку), числа (целые и реальные), картинки (сюда вписывают путь картинки)
local multiboarditem mbitem = MultiboardGetItem(mb, curRow - 1, curCol - 1)
Функция MultiboardGetItem поможет перебирать ячейки, например через цикл. После того, как поработали с ячейкой (там текст или картинку изменили, ширину задали и др.). Нужно обязательно в конце вставлять эту нативку MultiboardReleaseItem
native MultiboardGetItem takes multiboard lb, integer row, integer column returns multiboarditem
показать текст, числа или изображения для одной ячейки. Вы можете скрыть текст или изображение (короче два варианта).
native MultiboardSetItemStyle takes multiboarditem mbi, boolean showValue, boolean showIcon returns nothing
показать текст, числа или изображения для всех ячеек.
native MultiboardSetItemsStyle takes multiboard lb, boolean showValues, boolean showIcons returns nothing
установить значение одной ячейки. вообще-то текст, точнее строку. Конвертом из целого числа или из реального числа переводим в строку
native MultiboardSetItemValue takes multiboarditem mbi, string val returns nothing
установить значения для всех ячеек
native MultiboardSetItemsValue takes multiboard lb, string value returns nothing
установить ширину для одной ячейки. В гуи варианте разрешено от 0% до 100%. Думаю, что ширина 100% - весь экран. Если задать хотя бы в одной ячейке 100%, это сместит всю вашу таблицу, она станет шире из-за одной ячейки. Если у вас есть в одном ряду два соседа столбца, вы захотите их расположите на экране, то не забывайте, что, если у обоих в сумме больше 100%, текст или картинка может не отобразиться, вам поэтому нужно, чтобы в одном ряду сумма не превышала 100%, то есть 1.
call MultiboardSetItemWidth(mbitem, width/100.0) //значение делиит на 100%
native MultiboardSetItemWidth takes multiboarditem mbi, real width returns nothing
устанавливает для всех ячеек одну ширину.
MultiboardSetItemsWidth(multiboard,real)
native MultiboardSetItemsWidth takes multiboard lb, real width returns nothing
задает картинку. сюда прописываете путь. Помните, там где нужно писать один слэш "/" , вы пишете два ""
native MultiboardSetItemIcon takes multiboarditem mbi, string iconFileName returns nothing
задаете картинки для всех ячеек.
native MultiboardSetItemsIcon takes multiboard lb, string iconPath returns nothing
перезапуск. удаление утечек. Эта нативка помогает удалить утечку
call MultiboardReleaseItem(mbitem)
native MultiboardReleaseItem takes multiboarditem mbi returns nothing
Цвет одной ячейки
native MultiboardSetItemValueColor takes multiboarditem mbi, integer red, integer green, integer blue, integer alpha returns nothing
цвет всех ячеек
native MultiboardSetItemsValueColor takes multiboard lb, integer red, integer green, integer blue, integer alpha returns nothing
сворачивает и разворачивает мультиборд.
call MultiboardMinimize(mb, minimize)
native MultiboardMinimize takes multiboard lb, boolean minimize returns nothing
проверка свернут ли мультиборд
native IsMultiboardMinimized takes multiboard lb returns boolean
очистить мультиборд от строк и столбцов
MultiboardClear
native MultiboardClear takes multiboard lb returns nothing
уничтожить мультиборд
DestroyMultiboard
native DestroyMultiboard takes multiboard lb returns nothing
Что я помню, что обычно при инициализации не работает то ли создание то ли разворачивание (не помню), а позже.
В гуи BJ-функции там можно нолики приписывать, короче все строки или столбцы работает. Но все это можно сократить, дописав свои.
Steal nerves #12 - 3 дня назад (отредактировано ) 0

» WarCraft 3 / Блокировка чит-кодов

чтобы защититься от whosyourdaddy есть еще один момент - расшарить общий контроль за войсками с другим игроком. Чит работает только в сингле. Ведь супер сильные и неуязвимые становятся ваши войска, а представьте, что вы управляете войсками союзника, и сколько не вводили, но чит не работает
xgm.guru/p/wc3/182252?postid=340524 соответствующие настройки нужно выставить
Steal nerves #13 - 6 дней назад (отредактировано ) 0

» WarCraft 3 / textag

» вот что я выяснил
SetTextTagSuspended - я не знаю что это за функция, но переводится как приостановить действие текстага. В гуи варианте есть еще Suspend/Resume. Resume - так понял запустить, перезапустить. Наверное типа как пауза, таймер жизни паузит, фиг знает, не проверял.
Функция SetTextTagLifespan отвечает за длительность исчезновения. (Оптимально 1-3 сек). время жизни после которого исчезнет и удалиться. В гуишном варианте пишут, что эта команда отвечает за удаление и очистку текстагов, придется поверить на слову.
функция SetTextTagAge - с какого времени начинается исчезновение. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Функция SetTextTagFadepoint - с какого времени начинается исчезновение, текст с каждой секундой становится все более прозрачным, и затем исчезает. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Функции SetTextTagAge и SetTextTagFadepoint напрямую связаны с SetTextTagLifespan. Правда до этого не знал, что делают две побочные нативки. Ведь в SetTextTagLifespan вы задаете время жизни, возвраст текстагов.
Например, вы задаете время жизни в SetTextTagLifespan 5 секунд. Относительно, этих 5 секунд жизни вы задаете так, чтобы на 3 секунде жизни текстаг исчез с помощью SetTextTagAge. Можно сделать так, чтобы исчез сразу на 0 секунде жизни. Если SetTextTagLifespan не задавать, то работать SetTextTagAge не будет. Вернее работает, но не так как хотелось бы (не отчего задавать время, возраст то не задан).
call SetTextTagLifespan(bj_lastCreatedTextTag, 5.) ////время жизни после которого исчезнет и удалиться
call SetTextTagAge(bj_lastCreatedTextTag, 3) //на 3 секунде жизни исчезнет текстаг
аналогично
call SetTextTagLifespan(bj_lastCreatedTextTag, 5.) ////время жизни после которого исчезнет и удалиться
call SetTextTagFadepoint(texttag, 1.5) //текстаг ближе к 1.5 секунде начнет затухать и на 1.5 секунде жизни исчезнет текстаг
» что у меня получилось без SetTextTagLifespan
Пишут: функция SetTextTagAge - для установки возраста текстового объекта (в секундах) и перехода на определенный этап его процесса замирания, затухания.
Если SetTextTagLifespan не вводить, то вовсе это не время, через которое исчезнет текст, а что-то другое. Просто в буржуйском сайте на английском пишут что устанавливают возраст, хотя как-то странно время течет без SetTextTagLifespan, очень долго течет. Мб скорость затухания, то есть постепенно становится более прозрачным, и потом и вовсе исчезнет. (0-30 - не заметно, если ввести 30, то кажется, что текст не исчезает, но на самом деле полностью исчезнет через 69 сек. Если ввести 80, то полностью исчезнет через 18 сек. Если ввести 90, то исчезнет 9 сек. Если ввести 99 и более, то текст тут же исчезнет как будто бы его и не было никогда.)
Пишут: Функция SetTextTagFadepoint - для установки возраста текстового объекта (в секундах) и перехода на определенный этап его процесса замирания, затухания.
Аналогично, как и SetTextTagAge, хотя если присмотреться вроде похоже как исчезают там и здесь, текст с каждой секундой становится все более прозрачным, и затем исчезает (процесс замирания, затухания). Ввел 1 единицу, а исчезал 40-70 секунд.
» пробовал проверять удаляет ли текстаги
проверял таймером обнулена ли переменная с помощью SetTextTagLifespan, SetTextTagFadepoint, SetTextTagAge
    if ( bj_lastCreatedTextTag == null ) then
        call DisplayTextToForce( GetPlayersAll(), "текстаг пуст" )
    endif
но проверка говорит, что переменная текстага не фига не пуста. Вывод (как сказал Драколич):
тексттаги не являются настоящими агентами и существуют на компе отдельно от прочего, как и молнии, например. их можно создавать в локальном коде, их не нужно нуллить.
Придеться использовать SetTextTagLifespan, так как в гуишном варианте написано, что Lifespan удаляет и чистит от текстагов
прикреплены файлы
Steal nerves #14 - 6 дней назад (отредактировано ) 1

» WarCraft 3 / textag

» объяснения
удалять не нужно так как есть для этого специальные команды, которые задают время длительности жизни тексттага.
function TextTag takes unit u, string text returns texttag
local texttag t = CreateTextTag() //создаем текстаг
//скорость изменения координат xvel на оси х, yvel на оси у
local real xvel = 60 * 0.071 / 128 * Cos(70 * (3.14159/180))
local real yvel = 60 * 0.071 / 128 * Sin(70 * (3.14159/180))
call SetTextTagPermanent(t, false) //делаем постоянным
call SetTextTagText(t, text,12 * 0.023 / 10) //изменяем содержания текста, размер букв текста
call SetTextTagPosUnit(t, u, 0) //устанавливаем текстаг над юнитом и задаем высоту. Вместо этой функции можно заюзать SetTextTagPos - над точкой, тогда координаты придется вводить вместо юниита 
call SetTextTagVelocity(t, xvel, yvel) //устанавливаем скорость всплытия текста, короче эта функция отвечает за то, чтобы текст влетал вверх, как это делает при убийстве юнитов или крит и др.
call SetTextTagFadepoint(t, 0.00)  
call SetTextTagLifespan(t, 2.5) 
return t
endfunction
SetTextTagPermanent - сделать ли постоянным. постоянному текстагу нельзя будет установить время жизни. Нельзя будет сделать прозрачным или невидимым. И многие другие фишки, так как на все Permanent не проверял
Функция SetTextTagLifespan отвечает за длительность исчезновения. (Оптимально 1-3 сек). время жизни после которого исчезнет и удалиться.
функция SetTextTagAge - с какого времени начинается исчезновение. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Функция SetTextTagFadepoint - с какого времени начинается исчезновение, текст с каждой секундой становится все более прозрачным, и затем исчезает. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Функция SetTextTagVisibility - сделать текстаг видимым можно через GetLocalPlayer как в ShowTextTagForceBJ
SetTextTagColorBJ - изменяем цвет и прозрачность
SetTextTagSuspended - я не знаю что это за функция
вроде скину карту, ничего в ней особенного, но в ней проверял. возможно ошибаюсь с SetTextTagLifespan, SetTextTagFadepoint, SetTextTagAge. Проверить можно таймером и переменной не удалился ли текстаг, а вот исчезновение у некоторых команд разное кажись
прикреплены файлы
Steal nerves #15 - 6 дней назад (отредактировано ) 0

» WarCraft 3 / Переменные, утечки, стабильность

Altf40160, плохо написано =((
Naadir, Видимо, он хотел использовать её вместо Temp_Unit, но не срослось.
но в том то и дело, что в гуи-менюшки не вставишь локалки, эти буковки не везде можно вписать. Только через Custom Script. Человек должен понимать, что это переменные типа как ссылки, и что-то с ними делают. И еще в гуи например в условии эту локалку не впишешь (только через CS), так как в гуи условие создает отдельную функцию. Здесь можно использовать ту глобалку. Вообще многие гуишники начинают везде лепить локалки для мультиплеерности, в каждом действии (конечно полезны локалки, чтоб не создавать глобалки, юзаю их). Вопрос полезно ли лепить везде локи? Мне кажется, если есть разрывы во времени (триггерное действие длительное), то можно юзать их. Только вот где юзать локалки - вэйт? нет. В таймере, так на каждый поток отдельный создается таймер и поток? Да и ладно не парюсь, пишу чисто jass
Кстати в аргументах функции - то же локалки. Их можно обнулить. Не знал, узнал недавно, что обнулять можно аргументы.
Steal nerves #16 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / Конвертация равкодов

поищи на сайте, уже тем скопилось дофига. Есть еще библиотеки и программ и ссылок
Steal nerves #17 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / Конкурс карт Warcraft 3, Новости

Maxwell_Hive, у разных людей разные вкусы) мне больше ТД-шки и выживалки нравятся. Интересно же Вадимка снимает кодо-таг или зомби-тэг, выживалки и др, правда Вадим больше одного раза не снимает. 20 минут просмотра мало.
к сожалению арены и доты не цепляют =(( главная фишка - необычность, чтобы что-то поделать можно было и так далее.
Steal nerves #18 - 1 неделю назад (отредактировано ) 1

» WarCraft 3 / Как определить, является ли воин героем?

IsUnitType //проверка
UnitAddType //добавить класс
UnitRemoveType //удалить класс
в JNGP есть библиотека, в триггерах найти еще можно в первом boolean условии
Steal nerves #19 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / заставить рабочего строить здание

bazeba, через приказ вроде (узнаем равкод здания или строковое название здания) или через предмет со способностью игрушечной фермы
» нативки приказов
» строительство (приказы в точку)
заставляет юнита строить определенное здание в точке (у нежити с этим проблемы, точнее с рудником)
native IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns boolean
native IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
чтобы возвести сплетенный рудник эльфов или проклятый рудник нежити вроде используют IssueTargetOrderById, наводя на рудник
function IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean
    if (unitId == 'ugol') then //проклятый рудник
        return IssueHauntOrderAtLocBJ(whichPeon, loc)
    else
        return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc))
    endif
endfunction
» стандартные приказы
применяет абилки без цели, нанимает (тренирует) войска, улучшает здания и проводит исследования
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
применяет приказы в точку
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean
native IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
» ГРУППЫ - ОТРЯДЫ, групповые стандартные приказы
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order returns boolean
отдает отряду приказ в цель
native GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean
native GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns boolean
заставляет отряд использовать приказ в точку
native GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean
native GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean
native GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean
native GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns boolean
» нестандартные приказы
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget на цель targetWidget
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantTargetOrder, заставляет юнита whichUnit использовать приказ order на targetWidget с помощью объекта instantTargetWidget
Пример: есть приказ на гуи "dropitem" выбросить предмет, на самом деле этот предмет можно дропнуть другому юниту (герою, или в магазин. если в магазин передаешь, то продает его). Короче на этом примере можно передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него. Это был просто пример, хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
ИСПОЛЬЗОВАНИЕ объекта instantTargetWidget в точку
native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
Объяснение: на примере нативки IssueInstantPointOrder заставляет юнита whichUnit использовать приказ order в точку (x,y) или что-то сделать в точке с помощью объекта instantTargetWidget.
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку. Хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
» приказы с итемами
юнит передает предмет цели target (можно так и продать в магазин, если магазин будет целью)
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
дропают предмет в точку (на землю короче выкидываем)
native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
перемещает предмет в слот (если там был слот занят, то меняет местами).
native UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns boolean
юзаем предмет
native UnitUseItem takes unit whichUnit, item whichItem returns boolean
юзаем предмет в цель (в качестве цели могут быть объект widget: такие как юнит, итем. декорация)
native UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
юзаем предмет в точку
native UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
852002 to 852007 (moveslot): Эти приказы перемещают указанный предмет в соответствующий слот инвентаря героя, отдавшего приказ. Идентификатор 852002 переместит предмет в первый слот, идентификатор 852003 – во второй и т.д. Можно с помощью IssueInstantTargetOrderById перетащить итем самому себе.
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
» МАНИПУЛЯЦИИ С ПРЕДМЕТОМ (не приказы)
даем итем (не создаем !!!)
native UnitAddItem takes unit whichUnit, item whichItem returns boolean 
создаем итем определенного типа
native UnitAddItemById takes unit whichUnit, integer itemId returns item
создаем итем определенного типа в определенный слот
native UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean
удаляем итем
native UnitRemoveItem takes unit whichUnit, item whichItem returns nothing
удаляем итем с определенного слота
native UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns item
размер инвентаря (может помочь с циклом, например узнать до скольки перебирать слоты и др.)
native UnitInventorySize takes unit whichUnit returns integer
итем в слоте
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
» иммитация
как понял ниже три заставляют чужого юнита делать действия от имени игрока forWhichPlayer:
  1. магазин покупает/продает юнитов и предметов от имени чужого игрока (пример IssueNeutralImmediateOrder)
  2. магазин переключить на героя с помощью smart, иначе герой не купит (пример IssueNeutralTargetOrder)
  3. мастерскую гоблина заставляет делать разведку в точке (IssueNeutralPointOrder)
чаще всего эти нативки помогают в покупках/продажах, neutralStructure представляется часто как магазин, у которого можно что-то купить.
иммитация от имени игрока
native IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean
native IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean
Объяснение: нативка IssueNeutralImmediateOrder - это иммитация приказа, заставляет нейтральное здание neutralStructure (чаще всего магазин) от имени игрока forWhichPlayer что-то делать (например нанимать войска)
иммитация от имени игрока в цель
native IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean
native IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns boolean
Объяснение: нативка IssueNeutralTargetOrder - заставляет что-то делать нейтральное здание neutralStructure с целью (купить выбранную цель у игрока; переключится на героя, тем самым открыв панель магазина)
иммитация от имени игрока в точку
native IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean
native IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean
Объяснение: нативка IssueNeutralPointOrder - заставляет что-то делать нейтральное здание neutralStructure с точкой. Думаю, эта штука, к примеру вроде типа помогает разведку делать. Помните, у мастерской гоблина гоблина разведку делать
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
xgm.guru/p/wc3/warden-buyitem возьмем пример
вариант Warden
function BuyItem takes unit FromShop,integer ItemID,unit ToUnit returns boolean
  if IssueNeutralTargetOrder(GetOwningPlayer(ToUnit), FromShop, "smart", ToUnit) or IssueTargetOrder(FromShop, "smart", ToUnit) then
    return IssueNeutralImmediateOrderById(GetOwningPlayer(ToUnit), FromShop, ItemID) or IssueImmediateOrderById(FromShop, ItemID)
  endif
  return false
endfunction
вариант agentex
function BuyItem takes unit u, unit shop, integer id returns boolean
  call IssueNeutralTargetOrder(GetOwningPlayer(u), shop, "smart", u)
  return IssueNeutralImmediateOrderById(GetOwningPlayer(u), shop, id)
endfunction
выучить навык
native SelectHeroSkill takes unit whichHero, integer abilcode returns nothing
851971 (smart): Приказ (цель-точка или цель-объект), аналог правой клавиши мыши.
852000 (skillmenu): Приказ (без указания цели), при выполнении которого открывается меню навыков героев. Если же триггерно заставить выполнить этот приказ обычную боевую единицу, то исчезнет ее карта команд, которая возвратится, если выбрать боевую единицу.
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
851973 (stunned): Этот приказ отдается боевым единицам, подвергшимся оглушающим способностям, таким как ‘AOws’ (Громовая поступь), лишая их возможности двигаться и атаковать.
По сути совет правильный, но приказ (имеется в виду skillmenu) указан неверно: OrderId("attributemodskill") = 852576
xgm.guru/p/100/184889 посмотри здесь тему, посмотри карты. Там рабочии вокруг ратуши строит фермы, вместо ферм можно чего-нибудь другое построить
Steal nerves #20 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / Как рассчитать стоимость здания?

ScopteRectuS, сделай базу данных. стандартным способом узнать не получится, нет такой нативки. мемхаком наверное
» первый способ
вот при инициализации, берешь целочисленную записываешь в хэш
//по равкоду
call SaveInteger(Hash, rawcode, 0, 225) //1 здание
call SaveInteger(Hash, upgrage1, 0, 450) //upgrage 1
call SaveInteger(Hash, upgrage2, 0, 675) //upgrage 2
//вместо rawcode или upgrage 1,2 пиши например так: 'hfoo' - это обыкновенные числа в 256-ричной системе
если нужно достать стоимость, в качестве ключа проверяешь равкод (rawcode, upgrage 1,2)
set CostWood = LoadInteger(Hash, GetUnitTypeId(GetTriggerUnit()), 0) 
» по хэндлу
вот при инициализации, берешь целочисленную записываешь в хэш
//по равкоду записываешь изначальную стоимость здания
call SaveInteger(Hash, rawcode, 0, 225) //стоимость здание - древесина
call SaveInteger(Hash, rawcode, 1, 100) //стоимость здание - золото
//сохраняем по ключу хэндлу GetHandleId, по формуле от изначально стоимости
call SaveInteger(Hash, GetHandleId(GetTriggeriUnit()), 0, 0)  //кол-во апргрейдов равно ноль
при улучшении строительства прибавляешь счетчик
set id = GetHandleId(GetTriggeriUnit()) //хэндл юнита, номер объекта
set k = LoadInteger(Hash, id, 0) //загружаем счетчик апгрейдов по ключу хэндлов
call SaveInteger(Hash, id, 0, k+1) //сохраняем кол-во апргрейдов
А когда нужно достать стоимость по той формуле, что выше. Ты берешь счетчик, изначальную цену, и считываешь себе стоимость.
можно еще в качестве базы данных поля в РО забить, но что-то не вижу ничего. У здании уровни не отображаются, хп у итемов делаются так как там не видно хп, короче не много вариантов у зданий. Есть еще CustomValue, но на триггерах это
Steal nerves #21 - 1 неделю назад 1

» WarCraft 3 / Не открывается карта

JNGP снимает ограничения (например максимум декорации 20к), если обычным редактором открыть критует. В jngp есть новые гуишные функции, которых нет в обычном, стандартный редактор их не распознает. Юзайте поиск, такой вопрос уже задавали
можно вместо новых триггерных команд юзать нативки. Писать например через Custom Script или вообще на jass
Steal nerves #22 - 1 неделю назад (отредактировано ) 0

» WarCraft 3 / Радиус постройки

xgm.guru/p/wc3/184889 ИИ строит вокруг ратуши
погоди у тебя строителем является ратуша?
Steal nerves #23 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Изгнание в астрал

ScopteRectuS, нет. можно попробовать юзать систему урона. стандартным способом никак. можно отрицательные маг. резисторы давать, но лучше системой урона
Steal nerves #24 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Изгнание в астрал

смотри в константах. там типа таблица коэффициентов урона. эфир
поиском юзать умеешь?
Steal nerves #25 - 2 недели назад (отредактировано ) 2

» WarCraft 3 / Объединить предметы одного типа в инвентаре

а что за системы CCS?
8gabriel8, я уже скинул выше
при заполненном инвентаре юзай руны, пример карты Items и hh
Steal nerves #26 - 2 недели назад (отредактировано ) 2

» WarCraft 3 / Объединить предметы одного типа в инвентаре

» ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется item being manipulated. А юнит, который получает итем - Triggering Unit. Вы можете с помощью этой переменной итема узнать тип, сравнить. Потом циклом пробегаете по слотам (от 1 до 6), тут вся суть в одной команде триггерной (item in slot X, итем в слоте Х) и проверяете есть ли такой же итем (не забываем делать проверки, на то что этот предмет не равен item being manipulated и сравниваете не одинаковые ли типы). Если есть такой же (находите тот же тип что и item being manipulated), то от item being manipulated берете заряды и прибавляете к зарядам существующего, а потом item being manipulated удаляете. Недостаток: при заполненном инвентаре такая штука не будет работать.Не хватает свободного места.
» код
цикл А от 1 до 6
if тип итема (item being manipulated) РАВНО тип итема (item in slot А) and item being manipulated НЕ РАВНО item in slot А then проверяете
set k = Charges remaining in ( item being manipulated) + Charges remaining in ( item in slot А) складываете заряды
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
прикреплены файлы
Steal nerves #27 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Проверка при выборе цели атаки

еще вот например есть классификации как "может атаковать наземные цели", "может атаковать воздушные цели". но что-то кроме бд тут не вижу.
Steal nerves #28 - 2 недели назад 3
Steal nerves #29 - 2 недели назад (отредактировано ) 0

» WarCraft 3 / Изменение положения полоски здоровья

8gabriel8, точно не уверен.проверял, и ничего (не круг, не полоска - никаких изменений). мне советовали, что спрятать хп-бар можно, если изменить шкалу и высоту выбора. Но работает только шкала выбора. А что значит высота выбора для меня загадка, не работает что-то. Мб с моделью как-то.
это надо у модельщиков спрашивать. Хорошо бы, если кто-то расписал бы в этой теме.
Steal nerves #31 - 3 недели назад 3

» WarCraft 3 / Увеличение уровня-способность на основе предмета

Чаще всего предметные способности не видны, это прежде всего пассивные, и можно триггерно добавлять при получении итема, и триггерно удалять при дропе (потере) итема. Запас хп можно увеличить, есть некий баг, ищи на сайте. Есть на сайте готовые системы добавления (хп, маны, силы атаки, защиты и др.)
Steal nerves #32 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Правильно ли писать такой код?

Вроде бы все правильно. Ничего страшного нет, но если у тебя очень много скилов, то мб сделать базу данных.
Единственное, что неудобно искать. Когда функции дохера в один файлик вложено.
Недавно была тема на этот вопрос xgm.guru/p/wc3/190367
Steal nerves #33 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Блокировка приказов

ClotPh, ты проверял? выкл. и вкл. - этого мало. просто отдать, юнит ничего не делает. а только через задержку 0.00
Steal nerves #34 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Блокировка приказов

Игра вылетает
Steal nerves,
И в третьих, зацикливание может привести к вылету, нужно отключать триггер, отдавать приказ, и включать триггер.
если отдать триггерно приказ, то сработает событие. Сработает заново триггер, и заново отдача приказа. И так по кругу. Зацикливание короче. Поэтому нужно оборвать это. Выключаем временно триггер или делаем задержку таймером или вэйтом
Steal nerves #35 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Блокировка приказов

» у меня есть система, но она д+рьмовая.
Во-первых, для каждого нужно сохранять текущие приказы и цели. Чтобы при отдаче приказа юнит не слушался хозяина и продолжал делать свои дела. Вроде пока справляемся с идеей, можно все сохранить в переменные (правда, занудно). Но изначально, нужно сохранять приказ стоп, а то в ячейке пустует и он ничего не делает. Во-вторых, события приказов срабатывают намного раньше, чем он начинает делать. То есть, если дать сразу в этот момент еще один приказ, то ничего не будет, ибо начинает выполнять текущий. И получается, что нужно делать задержку в 0.00. То есть не получится так что сразу. Не понимаю вот, почему близзарды не сделали, чтоб сразу. И в третьих, зацикливание может привести к вылету, нужно отключать, отдавать приказ, и включать триггер. Короче это нафиг никому не нужное, он успевает сделать что-то, немножко отбежать туда - куда ему игрок указал. Делал на скорую руку.
ой немного недоработанную выложил, там вэйт включите. удалите двойной слэш
xgm.guru/forum/showthread.php?t=39525 тут скока способов. Е-мое
xgm.guru/forum/showthread.php?t=39004 тут твой ответ (см. ответ Александра).
Прошу прощения, оказалось, что вэйт лучше не использовать. Вместо него таймер используйте, так как с помощью таймера приказ отдается сразу. Скину другую наработку Block of orders Upgraid
прикреплены файлы
Steal nerves #36 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Не выводится игровой текст

DesiMorti, у тебя в группах есть вэйт? Недавно на сайте xgm делал одному парню наработку, а там часть действии в ForGroup не выполнялось. Дебагом проверял. И понял, что не выполняется после определенных действии. Не понимал я почему. Убирал одну функцию - вэйт. И заработало. А то дальше после вэйта код не работал. ForGroup + вэйт не совместимы
Steal nerves #37 - 3 недели назад 0

» WarCraft 3 / Не выводится игровой текст

скорее всего обрывается поток (обрыв может быть еще из-за лимита операции, поищи на сайте. Еще некоторые команды могут обрывать поток, например вэйт. Вэйт работает в действии, а в других частях кода не работает), или логическая ошибка в условии (мб условие не прокатывает, это к примеру). Скорее всего обрыв потока, у тебя триггер Destroy Temp_player_group длинный? триггеров много? советую разбить на части или ищи статью на сайте на лимит операции
ищи лучше через гугл. а то на этом сайте поиск плохой, поломан. Например: "лимит операции xgm" сразу находит нужные темы
Steal nerves #38 - 3 недели назад (отредактировано ) 2

» WarCraft 3 / Есть какя нить функция или еще что либо которая позволила бы узн

ssbbssc, ну и у юнита можно, при покупке даешь голды 15 игроку, запоминаешь сколько в переменную, покупаешь его в магазине. Есть нативка. Драколич вроде другое имел в виду.
» нативки с приказами
» строительство в точку
заставляет юнита строить определенное здание в точке (у нежити с этим проблемы, точнее с рудником)
native IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns boolean
native IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
чтобы возвести сплетенный рудник эльфов или проклятый рудник нежити вроде используют IssueTargetOrderById, наводя на рудник
function IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean
if (unitId == 'ugol') then проклятый рудник
return IssueHauntOrderAtLocBJ(whichPeon, loc)
else
return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc))
endif
endfunction
» стандартные приказы
применяет абилки без цели, нанимает (тренирует) войска, улучшает здания и проводит исследования
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
применяет приказы в точку
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean
native IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
» необычные приказы
ИСПОЛЬЗОВАНИЕ instantTargetWidget на цель targetWidget
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
Объяснение: на примере IssueInstantTargetOrder, заставляет юнита whichUnit использовать приказ order на targetWidget с помощью instantTargetWidget
Пример: есть приказ на гуи "dropitem" передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него
order_dropitem = 852001
С таким же успехом можно юзать итем на цель
ИСПОЛЬЗОВАНИЕ instantTargetWidget в точку
native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
Объяснение: на примере IssueInstantPointOrder, заставляет юнита whichUnit использовать приказ order в точку (x,y) или что-то сделать в точке с помощью instantTargetWidget
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку
order_dropitem = 852001

http://xgm.guru/p/wc3/warden-buyitem

юнит передает предмет цели target (можно так и продать в магазин, если магазин будет целью)
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
перемещает предмет в слот (если там был слот занят, то меняет местами). Иногда можно перемещать исчезнутые итемы в слот (например, они невидимы, заставляем их переместить в слот, и становятся видимы).
native UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns boolean
юзаем предмет
native UnitUseItem takes unit whichUnit, item whichItem returns boolean
юзаем предмет в цель (в качестве цели могут быть юнит, итем. декорация)
native UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
юзаем предмет в точку
native UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
852002 to 852007 (moveslot): Эти приказы перемещают указанный предмет в соответствующий слот инвентаря героя, отдавшего приказ. Идентификатор 852002 переместит предмет в первый слот, идентификатор 852003 – во второй и т.д. Можно с помощью IssueInstantTargetOrderById перетащить итем самому себе.
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
дропают предмет в точку (на землю короче выкидываем)
native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
» МАНИПУЛЯЦИИ С ПРЕДМЕТОМ (не приказы)
даем итем (не создаем !!!)
native UnitAddItem takes unit whichUnit, item whichItem returns boolean
создаем итем определенного типа
native UnitAddItemById takes unit whichUnit, integer itemId returns item
создаем итем определенного типа в определенный слот
native UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean
удаляем итем
native UnitRemoveItem takes unit whichUnit, item whichItem returns nothing
удаляем итем с определенного слота
native UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns item
размер инвентаря
native UnitInventorySize takes unit whichUnit returns integer
итем в слоте
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
» иммитация
как понял ниже три заставляют не только продавать/покупать. но и делать действия от имени игрока
иммитация от имени игрока - нанимать войска, которые есть в наличии у лагеря
native IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean
native IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean
Объяснение: IssueNeutralImmediateOrder это иммитация приказа, заставляет нейтральное здание neutralStructure (чаще всего магазин) от имени игрока forWhichPlayer нанимать войска
иммитация от имени игрока - заставляет купить/продать выбранную цель
native IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean
native IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns boolean
иммитация от имени игрока - заставляет что-то делать с точкой (непонятная нативка). Думаю, эта штука вроде типа помогает разведку делать. Помните, у гоблина можно разведку делать
native IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean
native IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
851971 (smart): Приказ (цель-точка или цель-объект), аналог правой клавиши мыши.
852000 (skillmenu): Приказ (без указания цели), при выполнении которого открывается меню навыков героев. Если же триггерно заставить выполнить этот приказ обычную боевую единицу, то исчезнет ее карта команд, которая возвратится, если выбрать боевую единицу.
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
851973 (stunned): Этот приказ отдается боевым единицам, подвергшимся оглушающим способностям, таким как ‘AOws’ (Громовая поступь), лишая их возможности двигаться и атаковать.
По сути совет правильный, но приказ (имеется в виду skillmenu) указан неверно: OrderId("attributemodskill") = 852576
выучить навык
native SelectHeroSkill takes unit whichHero, integer abilcode returns nothing
» ГРУППЫ - ОТРЯДЫ
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order returns boolean
отряду приказ в цель
native GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean
native GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns boolean
заставляет отряд использовать приказ в точку
native GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean
native GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean
native GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean
native GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns boolean
Steal nerves #39 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Есть ли функция, которая возвращает стоимость юнита?

ssbbssc, ну и у юнита можно, при покупке даешь голды 15 игроку, запоминаешь сколько в переменную, покупаешь его в магазине. Есть нативка. Драколич вроде другое имел в виду.
» нативки с приказами
» строительство в точку
заставляет юнита строить определенное здание в точке (у нежити с этим проблемы, точнее с рудником)
native IssueBuildOrder takes unit whichPeon, string unitToBuild, real x, real y returns boolean
native IssueBuildOrderById takes unit whichPeon, integer unitId, real x, real y returns boolean
чтобы возвести сплетенный рудник эльфов или проклятый рудник нежити вроде используют IssueTargetOrderById, наводя на рудник
function IssueBuildOrderByIdLocBJ takes unit whichPeon, integer unitId, location loc returns boolean
if (unitId == 'ugol') then проклятый рудник
return IssueHauntOrderAtLocBJ(whichPeon, loc)
else
return IssueBuildOrderById(whichPeon, unitId, GetLocationX(loc), GetLocationY(loc))
endif
endfunction
» стандартные приказы
применяет абилки без цели, нанимает (тренирует) войска, улучшает здания и проводит исследования
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean
применяет приказы в точку
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssuePointOrderById takes unit whichUnit, integer order, real x, real y returns boolean
native IssuePointOrderLoc takes unit whichUnit, string order, location whichLocation returns boolean
native IssuePointOrderByIdLoc takes unit whichUnit, integer order, location whichLocation returns boolean
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueTargetOrderById takes unit whichUnit, integer order, widget targetWidget returns boolean
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
» необычные приказы
ИСПОЛЬЗОВАНИЕ instantTargetWidget на цель targetWidget
native IssueInstantTargetOrder takes unit whichUnit, string order, widget targetWidget, widget instantTargetWidget returns boolean
native IssueInstantTargetOrderById takes unit whichUnit, integer order, widget targetWidget, widget instantTargetWidget returns boolean
Объяснение: на примере IssueInstantTargetOrder, заставляет юнита whichUnit использовать приказ order на targetWidget с помощью instantTargetWidget
Пример: есть приказ на гуи "dropitem" передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него
order_dropitem = 852001
С таким же успехом можно юзать итем на цель
ИСПОЛЬЗОВАНИЕ instantTargetWidget в точку
native IssueInstantPointOrder takes unit whichUnit, string order, real x, real y, widget instantTargetWidget returns boolean
native IssueInstantPointOrderById takes unit whichUnit, integer order, real x, real y, widget instantTargetWidget returns boolean
Объяснение: на примере IssueInstantPointOrder, заставляет юнита whichUnit использовать приказ order в точку (x,y) или что-то сделать в точке с помощью instantTargetWidget
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку
order_dropitem = 852001

http://xgm.guru/p/wc3/warden-buyitem

юнит передает предмет цели target (можно так и продать в магазин, если магазин будет целью)
native UnitDropItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
перемещает предмет в слот (если там был слот занят, то меняет местами). Иногда можно перемещать исчезнутые итемы в слот (например, они невидимы, заставляем их переместить в слот, и становятся видимы).
native UnitDropItemSlot takes unit whichUnit, item whichItem, integer slot returns boolean
юзаем предмет
native UnitUseItem takes unit whichUnit, item whichItem returns boolean
юзаем предмет в цель (в качестве цели могут быть юнит, итем. декорация)
native UnitUseItemTarget takes unit whichUnit, item whichItem, widget target returns boolean
юзаем предмет в точку
native UnitUseItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
852002 to 852007 (moveslot): Эти приказы перемещают указанный предмет в соответствующий слот инвентаря героя, отдавшего приказ. Идентификатор 852002 переместит предмет в первый слот, идентификатор 852003 – во второй и т.д. Можно с помощью IssueInstantTargetOrderById перетащить итем самому себе.
852008 to 852013 (useslot): Заставляют героя, отдавшего приказ, использовать предмет, находящийся в соответствующем слоте инвентаря. Идентификатор 852008 использует предмет в первом слоте, идентификатор 852009 – во втором и т.д.
дропают предмет в точку (на землю короче выкидываем)
native UnitDropItemPoint takes unit whichUnit, item whichItem, real x, real y returns boolean
» МАНИПУЛЯЦИИ С ПРЕДМЕТОМ (не приказы)
даем итем (не создаем !!!)
native UnitAddItem takes unit whichUnit, item whichItem returns boolean
создаем итем определенного типа
native UnitAddItemById takes unit whichUnit, integer itemId returns item
создаем итем определенного типа в определенный слот
native UnitAddItemToSlotById takes unit whichUnit, integer itemId, integer itemSlot returns boolean
удаляем итем
native UnitRemoveItem takes unit whichUnit, item whichItem returns nothing
удаляем итем с определенного слота
native UnitRemoveItemFromSlot takes unit whichUnit, integer itemSlot returns item
размер инвентаря
native UnitInventorySize takes unit whichUnit returns integer
итем в слоте
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
» иммитация
как понял ниже три заставляют не только продавать/покупать. но и делать действия от имени игрока
иммитация от имени игрока - нанимать войска, которые есть в наличии у лагеря
native IssueNeutralImmediateOrder takes player forWhichPlayer, unit neutralStructure, string unitToBuild returns boolean
native IssueNeutralImmediateOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId returns boolean
Объяснение: IssueNeutralImmediateOrder это иммитация приказа, заставляет нейтральное здание neutralStructure (чаще всего магазин) от имени игрока forWhichPlayer нанимать войска
иммитация от имени игрока - заставляет купить/продать выбранную цель
native IssueNeutralTargetOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, widget target returns boolean
native IssueNeutralTargetOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, widget target returns boolean
иммитация от имени игрока - заставляет что-то делать с точкой (непонятная нативка). Думаю, эта штука вроде типа помогает разведку делать. Помните, у гоблина можно разведку делатьДумаю, эта штука вроде типа помогает разведку делать. Помните, у гоблина можно разведку делать
native IssueNeutralPointOrder takes player forWhichPlayer,unit neutralStructure, string unitToBuild, real x, real y returns boolean
native IssueNeutralPointOrderById takes player forWhichPlayer,unit neutralStructure, integer unitId, real x, real y returns boolean
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
851971 (smart): Приказ (цель-точка или цель-объект), аналог правой клавиши мыши.
852000 (skillmenu): Приказ (без указания цели), при выполнении которого открывается меню навыков героев. Если же триггерно заставить выполнить этот приказ обычную боевую единицу, то исчезнет ее карта команд, которая возвратится, если выбрать боевую единицу.
851994 (buildmenu): Приказ (без указания цели), открывающий меню строительства воина, способного возводить здания.
851973 (stunned): Этот приказ отдается боевым единицам, подвергшимся оглушающим способностям, таким как ‘AOws’ (Громовая поступь), лишая их возможности двигаться и атаковать.
По сути совет правильный, но приказ (имеется в виду skillmenu) указан неверно: OrderId("attributemodskill") = 852576
выучить навык
native SelectHeroSkill takes unit whichHero, integer abilcode returns nothing
» ГРУППЫ - ОТРЯДЫ
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order returns boolean
отряду приказ в цель
native GroupTargetOrder takes group whichGroup, string order, widget targetWidget returns boolean
native GroupTargetOrderById takes group whichGroup, integer order, widget targetWidget returns boolean
заставляет отряд использовать приказ в точку
native GroupPointOrder takes group whichGroup, string order, real x, real y returns boolean
native GroupPointOrderById takes group whichGroup, integer order, real x, real y returns boolean
native GroupPointOrderLoc takes group whichGroup, string order, location whichLocation returns boolean
native GroupPointOrderByIdLoc takes group whichGroup, integer order, location whichLocation returns boolean
Steal nerves #40 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Есть какя нить функция или еще что либо которая позволила бы узн

недавно задавали такой вопрос "как узнать стоимость " можно продать
нечто похожее помню было с итемами, даешь dummy и продаешь предмет в магазин
Steal nerves #41 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / Есть какя нить функция или еще что либо которая позволила бы узн

нативок таких нет. поэтому стандартным способом никак.
» только костыльным можно забить базу данных
  1. можно использовать поля объектов. Например, уровень предмета, хп-предмета. Их в редакторе объектов забиваем заранее. Там можно узнать стоимость и др. Смотри какие поля можно использовать, часто в игре остается много не используемых полей. Еще есть у предметов и у юнитов не используемое поле CustomValue. Его вот триггерно забиваем значениями.
  2. или использовать ячейки хэш-таблицы, переменные, массивы и др. По ключу можно забить равкод или хэндл. Или еще как-нибудь.
Суффикс не получится использовать, но если так уж хочется, то можно использовать текст, ну например, название юнита: "Ферма +1", "+1" можно было бы как-нибудь спрятать. Не знаю можно ли скрыть. Ну из строки доставать значение. Кстати имя можно изменять будет.
Steal nerves #42 - 3 недели назад (отредактировано ) 2

» WarCraft 3 / Как быть со зверями, которые блокируют путь?

8gabriel8, можно руну создать/дать с виндволк, как говорил ссср-овский кот
Steal nerves #43 - 3 недели назад 1
Steal nerves #44 - 3 недели назад (отредактировано ) 0

» WarCraft 3 / вопрос по спеллам

как отследить? так таймер + проверка расстояния
там каждую секунду сначала двигают к цели, потом проверяют расстояние. Если расстояние между снарядом и целью меньше чем n, то дамажим.
Ищи наработку на слово arrow, вот скинул пару. только не помню, jass там или гуи. не открывал
что за название темы? и есть для этого специальная тема
прикреплены файлы
Steal nerves #45 - 4 недели назад (отредактировано ) 2

» WarCraft 3 / Добавление в группу юнитов с "Москитами"

была тема о том что нативки которые начинают с GroupEnum....могут не выделять москитов в группу, третий коммент выше - рабочий вариант. Пикаем всех dummy, и даем москитов после того, как добавили в группу.
правда, не все функции. посмотрите код/карту внимательно, сюда добавил все существующие в варе пики и проверял xgm.guru/p/wc3/187447?postid=345848#comment10
с помощью тех нативок GroupEnum..., которые ловят москитов, нельзя указать радиус. Поэтому делаем такую вещь - используем фильтр. Фильтр отсеивает не нужных. Короче берет всех кто попал в круг вокруг цели, и фильтром отсеивает. Если вернет true, то юнита зачисляют в группу, иначе отсеивают. можно проверять с помощью xgm.guru/p/wc3/iscoordsincircle прописываем в нем эту функцию
Steal nerves #46 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Предметы (триггер)

datar1231, нее. это просто плагин, снимает кучу ограничении и дает новые гуишные команды триггерам. А вот у обычного редактора стоят ограничения, когда он пробует открыть карту (а в ней допустим сняты ограничение на декор, на ландшафт, и др. есть непонятная функция. У меня карта пустая, только триггеры, одну нестандартную гуишную функцию ввел, но стандартный редактор не может распознать функцию. и поэтому не открывает. у тебя плагин отключен, я с этим знаком - также было. там может не запуститься из-за ОС и других непонятных ситуации - решение смотри на странице нового JNGP ) . вот переделал.
прикреплены файлы
Steal nerves #47 - 4 недели назад 0

» WarCraft 3 / Предметы (триггер)

datar1231, забыл сказать нужно JNGP и UMS мод включить
Steal nerves #48 - 4 недели назад 0

» WarCraft 3 / Предметы (триггер)

вот
прикреплены файлы
Steal nerves #49 - 4 недели назад (отредактировано ) 0

» WarCraft 3 / Вторая кнопка "Построить"

вторая 2 кнопка строить, построить
хотите больше 12 зданий , то юзайте канал +способность от игрушечная ферма / игрушечная башня / шкатулка вождей. Можно использовать dummy-юнитов, создавать предметы и каставать.
» умолчу, изобретение бреда
  1. Можно подогнать строящие участки (типа маленький квадратик - башни, квадратик побольше - фермы, еще больше - бараки и др.). Там когда выбираешь, там просто пустой dummy-юнит без модели, у него площадка зеленым подсвечено.
  2. Под эту площадку подбираешь здание.
  3. Жаль, невозможно подобрать указывающая на цель способность с ресурсами, нельзя. Можно было на участок определить. Хотел конечно юзнуть такую штуку как способность "поставка ресурсов", но с разными id-приказами. Параллельно с этим будет канал без иконки (выключена "Изображение"), но будет одинаковый приказ. Хотел как-то связать канал + поставка ресурсов. Когда жмешь на поставку ресурсов, там срабатывает приказ, приказ от поставки ресурсов одинаков с каналом, то активирует канал. Канал должен показать указатель цели. Кажется не заработает это
  1. А строит еще один дамми-юнит, нет который зеленый, а другой. Строить будет через приказ. Приказы имеют свойство возвращать булеан. Если строить можно, то сам приказ вернет истину, иначе ложь. Там у даймика все прописано.
Steal nerves #50 - 4 недели назад (отредактировано ) 2

» WarCraft 3 / Как запретить обмениваться ресурсами между игроками-союзниками?

кажется есть настройки в триггерах, в разделе игра. там флаги выставляешь (да/нет)
точно не уверен, так как так не проверишь в одиночку. Нужно с друзьями тестить.
» код, для поиска
GUI triggers: Игра - Set Запретить Торговлю между союзниками to Вкл.,
Jass function: call SetMapFlag(MAP_RESOURCE_TRADING_ALLIES_ONLY, true)