Ты не сможешь изменить по ходу игры размер ширины, он только один раз. Нужно спрятать мультииборд через MultiboardDisplay, изменить размер, а потом отобразить.
спасибо, конечно, за список функций. Но я спрашивал не это. Представь МБ, 2строки, 2 столбца.
ну это точно нельзя сказать. Вот, я методом тыка и проб определял. Также тут зависит от длины текста и прочее. Я пробовал посмотреть с помощью карты. MultiboardDisplay действительна полезна, помогает увидеть как меняет положение.
Вводи в чат:
"D1 N" - где N размер ширины 1 ячейки
"D2 N" - где N размер ширины 2 ячейки
Сам только что сделал, мб ничего не значит карта. Надо посмотреть, а то по впечатлениям, ввожу первой 55 (это 0,55), смещается влево, и таким образом расширяет таблицу. Ввожу второй ячейке 54 (0.54), смещается влево, Но получилось очень не красиво, она сдвинула первую ячейку вперед и встала на нее место. Короче зазоры между ячейками большие получились
показать-скрыть мультиборд, мультиборд можно отобразить конкретному игроку вставив вместо true условие GetLocalPlayer() == Player(0). Если мультибордов несколько, то у игрока активным будет один
часто используют понятие как ячейка multiboarditem, как и таблица Excel может хранить текст (строку), числа (целые и реальные), картинки (сюда вписывают путь картинки)
Функция MultiboardGetItem поможет перебирать ячейки, например через цикл. После того, как поработали с ячейкой (там текст или картинку изменили, ширину задали и др.). Нужно обязательно в конце вставлять эту нативку MultiboardReleaseItem
установить значение одной ячейки. вообще-то текст, точнее строку. Конвертом из целого числа или из реального числа переводим в строку
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
задает картинку. сюда прописываете путь. Помните, там где нужно писать один слэш "/" , вы пишете два ""
чтобы защититься от whosyourdaddy есть еще один момент - расшарить общий контроль за войсками с другим игроком. Чит работает только в сингле. Ведь супер сильные и неуязвимые становятся ваши войска, а представьте, что вы управляете войсками союзника, и сколько не вводили, но чит не работает
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 удаляет и чистит от текстагов
удалять не нужно так как есть для этого специальные команды, которые задают время длительности жизни тексттага.
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. Проверить можно таймером и переменной не удалился ли текстаг, а вот исчезновение у некоторых команд разное кажись
Naadir, Видимо, он хотел использовать её вместо Temp_Unit, но не срослось.
но в том то и дело, что в гуи-менюшки не вставишь локалки, эти буковки не везде можно вписать. Только через Custom Script. Человек должен понимать, что это переменные типа как ссылки, и что-то с ними делают. И еще в гуи например в условии эту локалку не впишешь (только через CS), так как в гуи условие создает отдельную функцию. Здесь можно использовать ту глобалку. Вообще многие гуишники начинают везде лепить локалки для мультиплеерности, в каждом действии (конечно полезны локалки, чтоб не создавать глобалки, юзаю их). Вопрос полезно ли лепить везде локи? Мне кажется, если есть разрывы во времени (триггерное действие длительное), то можно юзать их. Только вот где юзать локалки - вэйт? нет. В таймере, так на каждый поток отдельный создается таймер и поток? Да и ладно не парюсь, пишу чисто jass
Кстати в аргументах функции - то же локалки. Их можно обнулить. Не знал, узнал недавно, что обнулять можно аргументы.
Maxwell_Hive, у разных людей разные вкусы) мне больше ТД-шки и выживалки нравятся. Интересно же Вадимка снимает кодо-таг или зомби-тэг, выживалки и др, правда Вадим больше одного раза не снимает. 20 минут просмотра мало.
к сожалению арены и доты не цепляют =(( главная фишка - необычность, чтобы что-то поделать можно было и так далее.
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
применяет приказы в цель (в качестве цели могут быть юниты, предметы, декорации - деревья)
по дереву и золоту:
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
ГРУППЫ - ОТРЯДЫ, групповые стандартные приказы
заставляет отряд применять приказ
native GroupImmediateOrder takes group whichGroup, string order returns boolean
native GroupImmediateOrderById takes group whichGroup, integer order 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
Объяснение: на примере нативки 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 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 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:
магазин покупает/продает юнитов и предметов от имени чужого игрока (пример IssueNeutralImmediateOrder)
магазин переключить на героя с помощью smart, иначе герой не купит (пример IssueNeutralTargetOrder)
мастерскую гоблина заставляет делать разведку в точке (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 что-то делать (например нанимать войска)
Объяснение: нативка 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 с точкой. Думаю, эта штука, к примеру вроде типа помогает разведку делать. Помните, у мастерской гоблина гоблина разведку делать
если у вас расшарен общий контроль это поможет например синему купить что-то у красного. хотя не всегда работает. Не путайте покупку и тренировку
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посмотри здесь тему, посмотри карты. Там рабочии вокруг ратуши строит фермы, вместо ферм можно чего-нибудь другое построить
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, но на триггерах это
JNGP снимает ограничения (например максимум декорации 20к), если обычным редактором открыть критует. В jngp есть новые гуишные функции, которых нет в обычном, стандартный редактор их не распознает. Юзайте поиск, такой вопрос уже задавали
ScopteRectuS, нет. можно попробовать юзать систему урона. стандартным способом никак. можно отрицательные маг. резисторы давать, но лучше системой урона
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется 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
8gabriel8, точно не уверен.проверял, и ничего (не круг, не полоска - никаких изменений). мне советовали, что спрятать хп-бар можно, если изменить шкалу и высоту выбора. Но работает только шкала выбора. А что значит высота выбора для меня загадка, не работает что-то. Мб с моделью как-то.
Чаще всего предметные способности не видны, это прежде всего пассивные, и можно триггерно добавлять при получении итема, и триггерно удалять при дропе (потере) итема. Запас хп можно увеличить, есть некий баг, ищи на сайте. Есть на сайте готовые системы добавления (хп, маны, силы атаки, защиты и др.)
Вроде бы все правильно. Ничего страшного нет, но если у тебя очень много скилов, то мб сделать базу данных.
Единственное, что неудобно искать. Когда функции дохера в один файлик вложено.
Недавно была тема на этот вопрос xgm.guru/p/wc3/190367
И в третьих, зацикливание может привести к вылету, нужно отключать триггер, отдавать приказ, и включать триггер.
если отдать триггерно приказ, то сработает событие. Сработает заново триггер, и заново отдача приказа. И так по кругу. Зацикливание короче. Поэтому нужно оборвать это. Выключаем временно триггер или делаем задержку таймером или вэйтом
Ред. MpW
» WarCraft 3 / multiboard
ты знаешь, что там значение на сотку нужно делить? Пропорция.
Вводи в чат:
"D1 N" - где N размер ширины 1 ячейки
"D2 N" - где N размер ширины 2 ячейки
Сам только что сделал, мб ничего не значит карта. Надо посмотреть, а то по впечатлениям, ввожу первой 55 (это 0,55), смещается влево, и таким образом расширяет таблицу. Ввожу второй ячейке 54 (0.54), смещается влево, Но получилось очень не красиво, она сдвинула первую ячейку вперед и встала на нее место. Короче зазоры между ячейками большие получились
Ред. MpW
» WarCraft 3 / multiboard
Ред. MpW
» WarCraft 3 / Блокировка чит-кодов
Ред. MpW
» WarCraft 3 / textag
Функция SetTextTagFadepoint - с какого времени начинается исчезновение, текст с каждой секундой становится все более прозрачным, и затем исчезает. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Если SetTextTagLifespan не вводить, то вовсе это не время, через которое исчезнет текст, а что-то другое. Просто в буржуйском сайте на английском пишут что устанавливают возраст, хотя как-то странно время течет без SetTextTagLifespan, очень долго течет. Мб скорость затухания, то есть постепенно становится более прозрачным, и потом и вовсе исчезнет. (0-30 - не заметно, если ввести 30, то кажется, что текст не исчезает, но на самом деле полностью исчезнет через 69 сек. Если ввести 80, то полностью исчезнет через 18 сек. Если ввести 90, то исчезнет 9 сек. Если ввести 99 и более, то текст тут же исчезнет как будто бы его и не было никогда.)
Пишут: Функция SetTextTagFadepoint - для установки возраста текстового объекта (в секундах) и перехода на определенный этап его процесса замирания, затухания.
Аналогично, как и SetTextTagAge, хотя если присмотреться вроде похоже как исчезают там и здесь, текст с каждой секундой становится все более прозрачным, и затем исчезает (процесс замирания, затухания). Ввел 1 единицу, а исчезал 40-70 секунд.
Ред. MpW
» WarCraft 3 / textag
Функция SetTextTagLifespan отвечает за длительность исчезновения. (Оптимально 1-3 сек). время жизни после которого исчезнет и удалиться.
функция SetTextTagAge - с какого времени начинается исчезновение. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Функция SetTextTagFadepoint - с какого времени начинается исчезновение, текст с каждой секундой становится все более прозрачным, и затем исчезает. (0, для того что бы сразу). Удаляется после истекшего времени я не знаю.
Функция SetTextTagVisibility - сделать текстаг видимым можно через GetLocalPlayer как в ShowTextTagForceBJ
SetTextTagColorBJ - изменяем цвет и прозрачность
SetTextTagSuspended - я не знаю что это за функция
Ред. MpW
» WarCraft 3 / Переменные, утечки, стабильность
Кстати в аргументах функции - то же локалки. Их можно обнулить. Не знал, узнал недавно, что обнулять можно аргументы.
Ред. MpW
» WarCraft 3 / Конвертация равкодов
Ред. MpW
» WarCraft 3 / Конкурс карт Warcraft 3, Новости
к сожалению арены и доты не цепляют =(( главная фишка - необычность, чтобы что-то поделать можно было и так далее.
Ред. MpW
» WarCraft 3 / Как определить, является ли воин героем?
https://www.xgm.guru/p/wc3/181514
Ред. MpW
» WarCraft 3 / заставить рабочего строить здание
"harvest" - добывать ресурсы
"eattree" - съесть дерево
"grabtree" - вырвать дерево
"sentinel" - сторожевая сова
Пример: есть приказ на гуи "dropitem" выбросить предмет, на самом деле этот предмет можно дропнуть другому юниту (герою, или в магазин. если в магазин передаешь, то продает его). Короче на этом примере можно передать targetWidget итем instantTargetWidget или использовать какое-нибудь заклинание предмета на него. Это был просто пример, хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
Пример: к примеру есть приказ на гуи "dropitem" выбросить предмет targetWidget или приказ использовать итем instantTargetWidget в точку. Хотя ничего кроме предмета не приходит на ум. Если в качестве widget можно было бы использовать способность, а не только юнита, декорацию и итем.
order_dropitem = 852001
Ред. MpW
» WarCraft 3 / Как рассчитать стоимость здания?
» WarCraft 3 / Не открывается карта
Ред. MpW
» WarCraft 3 / Радиус постройки
Ред. MpW
» WarCraft 3 / Изгнание в астрал
Ред. MpW
» WarCraft 3 / Изгнание в астрал
поиском юзать умеешь?
Ред. MpW
» WarCraft 3 / Объединить предметы одного типа в инвентаре
Ред. MpW
» WarCraft 3 / Объединить предметы одного типа в инвентаре
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
вот еще одна система hh
Ред. MpW
» WarCraft 3 / Проверка при выборе цели атаки
» WarCraft 3 / Загрузочный экран
Ред. MpW
» WarCraft 3 / Изменение положения полоски здоровья
Ред. MpW
» WarCraft 3 / Увеличение уровня-способность на основе предмета
https://www.xgm.guru/forum/showpost.php?p=1206771&postcount=...
https://www.xgm.guru/forum/showthread.php?t=20479
https://www.xgm.guru/forum/showthread.php?t=12730
https://www.xgm.guru/forum/showpost.php?p=1261743&postcount=...
https://www.xgm.guru/p/wc3/dms
» WarCraft 3 / Увеличение уровня-способность на основе предмета
Ред. MpW
» WarCraft 3 / Правильно ли писать такой код?
Единственное, что неудобно искать. Когда функции дохера в один файлик вложено.
Недавно была тема на этот вопрос xgm.guru/p/wc3/190367
Ред. MpW
» WarCraft 3 / Блокировка приказов
Ред. MpW
» WarCraft 3 / Блокировка приказов