Добавлен , опубликован
Если вы хотели бы использовать в своей карте нестандартное, оригинальное заклинание, но у вас не хватает знаний для его реализации, то эта тема специально для вас. В данной теме вы можете, в определённом правилами формате, оставить заявку на создание необходимого вам заклинания или системы.
Если вы считаете, что у вас есть возможность выполнить какую-либо из имеющихся заявок, то вы можете оставить сообщение в определённом правилами формате, в котором указать какую из заявок собираетесь исполнить.

Правила темы

  • Запрещается дублирование заявок.
  • Любая заявка, написанная непонятным языком (обилие орфографических ошибок, орфоарт, отсутствие знаков препинания, использование рядов восклицательных и вопросительных знаков) будет удалена.
  • Обсуждение технических нюансов исполнения спелла или багов просьба вести через систему личных сообщений.
  • Для составления заявок используйте формы.
Заявки, не удовлетворяющие правилам, будут удалены !

Как составить заявку

Необходимо, используя форму составить сообщение в данной теме, где указать:
  • Желаемое название заклинания
  • Желаемый метод исполнения (GUI/Jass/cJass/vJass)
  • Требуется ли возможность использовать спелл несколькими юнитами одновременно (MUI)
  • Цель применения способности
  • Количество уровней
  • Описание (Смысловое, а не художественное)
  • Технические характеристики (кол-во маны, параметры урона, перезарядки, время действия и т.п.) для каждого из уровней
Форма для составления заявки
Заказ
=
**Название:** Название способности (или системы)
**Метод:** GUI/Jass/cJass/vJass
**MUI:** Обязательно/Не обязательно
**Цель:** Другой юнит / Сам юнит / Точка/ Область/Нет цели/Прочее (указать что именно)
**Количество уровней:** Целое число
**Описание:** Ваше описание. Можно слить со следующим.
**Технические характеристики:** Ваше описание. Можно слить с предыдущим.

Как принимать заказ

Необходимо, используя форму составить сообщение в данной теме, где указать:
  • Никнейм заказчика
  • Название выбранного вами заклинания
  • Примерные сроки исполнения (конечно, их соблюдение не критично, но желательно)
Форма для принятия заявки
Заказ принят
=
**Заказчик:** Никнейм заказчика
**Способность:** Название способности
((центр
**Спелл будет завершен к [дата в формате дд.мм.гггг. без скобок]**
))
[ дата принятия заявки в формате дд.мм.гггг / дата, к которой спелл предположительно будет готов в формате дд.мм.гггг ]

Как сообщить о не/выполнении заказа

Необходимо, используя форму составить сообщение в данной теме, где указать:
  • Никнейм заказчика
  • Название выбранного вами заклинания
  • Выполнен ли заказ
  • В случае, если заказ невыполним/не выполнен полностью, рекомендуется описать, что именно вам удалось/не удалось сделать.

  • Предоставить карту
Форма для не/выполненного заказа
Заклинание готово! [Если заказ выполнен успешно] / Не удалось выполнить заклинание [Если по каким-либо причинам вы не способны его выполнить] (1 из 2)
=
**Заказчик:** Никнейм заказчика
**Способность:** Название способности
**Выполнено:** Да/Нет
-
[Сюда добавить инструкцию по импорту, или описать что у вас не/получилось, если не удалось выполнить заказ]
За качественно выполненный заказ вы получите дополнительно 200 единиц опыта.

Дополнительно: как приобрести спелл, не прибегая к этой теме

A. Для начала загляните в Архив готовых спеллов. Возможно, спелл, аналогичный вашему, уже был сделан.
B. Проверьте, нет-ли нужного спелла в Библиотеке заклинаний. Проверенные спелл-мейкеры изготавливали заклинания специально для общественного использования.
C. Поищите общедоступные для открытия карты - там тоже бывают полезные вещи.
D. Если ничего не помогает, пройдитесь поиском по Академии - вероятно, что такие спеллы уже пытались делать и спрашивали как.
E. Если поиски не помогли, попробуй сделать его сам:
  • Осваиваем триггеры в Базе статей, F.A.Q., если не имеем понятия о них.
  • Существуют специальные статьи по созданию спеллов и баффов: 1, 2, 3, 4, 5
  • Поскольку ваши спеллы будут неоптимизированы, и более того, с кучей утечек - настоятельно рекомендуется читать статьи\темы про JASS. Тяжело читать? Легко делать!
  • Если ну никак не выходит сделать то что требуется, заходим в Академию и используем ее по основному назначению - задаем вопросы.

Разумные поиски и тщательное изучение помогут вам добиться результата.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
6
3 года назад
Отредактирован mistwood
0
biridius:
Заклинание готово!
Заказчик: mistwood
Способность: лечащие логова
Версия варкрафта 1.26, нужен установленный jass new gen pack
Сисетма отлавливает рабов и их вход в транспорты, проверяет что они остаются внутри и лечит их. Кто считается рабом и сколько лечить настраивается в двух функциях вверху.
Импорт - скопировать триггер Healing Burrows в свою карту, указать свои равкоды рабов/зданий если они не стандартные.
перекинул тригер, настроил равкоды. 10 раз проверил. но все равно ругается vjasshelper при сохранении.
Загруженные файлы
0
20
3 года назад
Отредактирован biridius
0
mistwood, должно быть баг редактора тк у меня все сохранилось
что у тебя в файле AdicHelper\lib\cj_types.j в папке с жнгп? там вроде проблемная линия была которую удалить надо, что то сязанное с циклом for или while
0
6
3 года назад
Отредактирован mistwood
0
AdicHelper\lib\cj_types.j
как-то так. пересохранил твою карту, такая же беда.
щас сек...
Загруженные файлы
0
20
3 года назад
Отредактирован biridius
0
mistwood, удали строку с while(cond) и попробуй еще раз сохранить
0
6
3 года назад
0
biridius:
mistwood, удали строку с while(cond) и попробуй еще раз сохранить
Удалил 18 строку сохранил, та же фигня.... странно блин.
0
20
3 года назад
Отредактирован biridius
0
mistwood, Adic Parser включен у тебя? щас снял галку и вышла такая же фигня как на твоем скрине, поставь галку туда
Загруженные файлы
0
6
3 года назад
0
biridius:
mistwood, Adic Parser включен у тебя? щас снял галку и вышла такая же фигня как на твоем скрине, поставь галку туда
да включен. все галки как у тебя. какой у тебя jngp? откуда качал? дай ссыль попробую снести.
0
23
3 года назад
Отредактирован Obelick
0

Заказ

Название: Притягивание
Метод: Jass
MUI: Обязательно
Цель: Юнит
Количество уровней: 1
Описание:
Нужна простая наработка притягивания юнита к себе, ака хук. Эффект "молнии" делать не надо. Действует таргетно на юнита. Упарываться с переменными типа уровня, скорости, дальности, урона и т.д. - не надо. Нужна просто притягивалка. Кастер в это время может двигаться, а цель паузится и притягивается к текущей поз кастера. Остальное сам настрою.
Желательно сделать конечно через индексацию по игроку (больше 1 раза одновременно игрок применить не может), без хэш таблицы, я им в рефе не доверяю, десинкают постоянно.
0
28
3 года назад
Отредактирован Roy Mustang
0

Заказ 1

Название: Прыжок
Метод: Любой (было бы не плохо иметь переменные на ГУИ для оптимальной настройки)
MUI: Желательно
Цель: Юнит
Количество уровней: 1
Описание:
Дальность применения : 800
Герой (ИИ) прыгает на цель , наносит урон и замедляет всех рядом с целю (включая саму цель)
(способность нужна исключительно для ИИ боса героя)
Перезарядка 30 секунд.

Заказ 2

Название: Дикий Рывок
Метод: Любой (было бы не плохо иметь переменные на ГУИ для оптимальной настройки)
MUI: Желательно
Цель: Юнит
Количество уровней: 1
Описание:
Дальность применения : 1000
Герой (ИИ) начинает двигается набирая скорость к определенному герою - (нанося урон и отталкивая всех по пути) при достижение цели - отталкивает цель на 400 дальности и обездвиживает ее на пару секунд.
Перезарядка 50 секунд.
(не должно отталкивать юнитов через клифы)
3
27
3 года назад
Отредактирован rsfghd
3

Заказ принят

Заказчик: Roy Mustang
Способность: Прыжок
Примерный срок выполнения: Спелл закину сегодня ближе к вечеру

Заказ принят

Заказчик: Roy Mustang
Способность: Дикий Рывок
Примерный срок выполнения: Либо вместе с предыдущей абилкой, либо на следующий день
3
27
3 года назад
Отредактирован rsfghd
3

Заклинание готово!

Заказчик: Roy Mustang
Способность: Прыжок
Выполнено: Да

Инструкция по импорту:
Просто импортируешь либу mylib в свою карту (можно прямо в шапку)
Дальность применения и перезарядка могут быть любыми, спелл муи
Копируй все созданные на гуи переменные
Сам спелл юзается через функцию
function Jump takes unit caster, unit target, real dmg, real speed, real height, real tmper, boolexpr b, real radius, real dbtm returns nothing
Ты увидишь её на кастомскрипте, всё что тебе там в принципе можно поменять это периодичность таймера и названия переменных на свои
Замедление реализовано через ауру, чтобы с другими твоими замедлениями не конфликтовать
Ты можешь использовать свою хэш-таблицу, не создавая новой (их лимит 255 по моему), но учти, ради ауры мне пришлось взять одну ячейку юнита, то бишь если ты там что-то записываешь в юнита и не помнишь последнюю свободную ячейку, то лучше новую хэш-таблицу создать, чтобы спелл тебе ничего там не сломал. Ах да, использовать свою хэш-таблицу нужно через дефайн, я оставил там комментарии, но опять же, дефайн может вызвать какие-то непонятки и конфликтовать с кодом других людей. Если название твоей хэш-таблицы соответствует моей и ты хочешь её подставить, то просто удали private hashtable H = InitHashtable()
По коду лишь пару переменных тебе нужно изменить:
private constant attacktype AttackType = ATTACK_TYPE_MAGIC // Тип атаки
private constant damagetype DamageType = DAMAGE_TYPE_NORMAL // Тип урона
private constant integer AbilityID = 'A001' // Равкод ауры замедления
private constant integer AbilityID1 = 'Basl' // Равкод заклинания из ауры замедления
private constant integer UnitH = 0 // Свободная ячейка юнита для ауры
private constant integer ItemID = 'I000' // Получение предмета после завершения прыжка для своих действий
Я добавил показательный триггер пример, где юнит после приземления создаёт кратер, там можешь делать свои действия на гуи. Например выбрать всех юнитов вокруг юнита и повесить спецэффект. Ах да, если тебе не нужно замедление именно с ауры и ты предпочтёшь какой-нибудь даммикаст, то можешь в коде указать равкод ауры 0.
Всё в либе приватное и не должно конфликтовать с чужим кодом, исключение сама функция Jump.
Если нужно что-то переделать или доделать, то пиши
Код
library mylib initializer init
private hashtable H = InitHashtable()
//define private H = udg_Hash // если у тебя уже есть хэш-таблица, разкомменти эту строку вписав вместо udg_Hash название своей хэш-таблицы и удали предыдущую строку
//Внимание! Используется ячейка юнита в хэш-таблице, чтобы не сбивались ауры, если ты записывал какие-то значения в юнита и не помнишь ячейку, лучше создать ещё одну хэш-таблицу
private constant attacktype AttackType = ATTACK_TYPE_MAGIC // Тип атаки
private constant damagetype DamageType = DAMAGE_TYPE_NORMAL // Тип урона
private constant integer AbilityID = 'A001' // Равкод ауры замедления
private constant integer AbilityID1 = 'Basl' // Равкод заклинания из ауры замедления
private constant integer UnitH = 0 // Свободная ячейка юнита для ауры
private constant integer ItemID = 'I000' // Получение предмета после завершения прыжка для своих действий

private location LFZ = Location(0,0)
private group TempG = CreateGroup()
private group DebuffG = CreateGroup()
private real TempR = 0.
private real TempR1 = 0.
private timer DebuffT = CreateTimer()

private function DBC takes real x, real y, real x1, real y1 returns real
   return SquareRoot((x-x1)*(x-x1)+(y-y1)*(y-y1)) 
endfunction 

private function ParabolaZ takes real h, real d, real x returns real
    return (4 * h / d) * (d - x) * (x / d)
endfunction

private function GetLocZ takes real x, real y returns real
    call MoveLocation(LFZ,x,y)
    return GetLocationZ(LFZ)
endfunction

private function RemoveF takes nothing returns nothing
    local unit u = GetEnumUnit()
    local integer i = GetHandleId(u)
    local real r = LoadReal(H,i,UnitH)-.01
    if r <= 0. then
        call RemoveSavedReal(H,i,UnitH)
        call GroupRemoveUnit(DebuffG,u)
        call UnitRemoveAbility(u,AbilityID)
        call UnitRemoveAbility(u,AbilityID1)
    else
        call SaveReal(H,i,UnitH,r)
    endif
    set u = null
endfunction
private function Remove takes nothing returns nothing
    call ForGroup(DebuffG,function RemoveF)
endfunction

private function Dmg takes nothing returns nothing
    local unit u = GetEnumUnit()
    call UnitDamageTarget(bj_lastCreatedUnit,GetEnumUnit(),TempR,false,false,AttackType,DamageType,null)
    if not IsUnitType(u,UNIT_TYPE_DEAD) then
        if LoadReal(H,GetHandleId(u),UnitH) <= 0. and AbilityID != 0 then
            set bj_groupCountUnits = 0
            call ForGroup(DebuffG,function CountUnitsInGroupEnum)
            call GroupAddUnit(DebuffG,u)
            call UnitAddAbility(u,AbilityID)
            if bj_groupCountUnits == 0 then
                call TimerStart(DebuffT,.01,true,function Remove)
            endif
        endif
        call SaveReal(H,GetHandleId(u),UnitH,TempR1)
    endif
    set u = null
endfunction

private function Move takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer i = GetHandleId(t)
    local unit u = LoadUnitHandle(H,i,0)
    local real s = LoadReal(H,i,2)
    local real a = LoadReal(H,i,4)
    local real x = GetUnitX(u)+s*Cos(a)
    local real y = GetUnitY(u)+s*Sin(a)
    local real d = LoadReal(H,i,5)-s
    local real d1 = LoadReal(H,i,9)+s
    local real d2 = LoadReal(H,i,7)
    
    call SetUnitX(u,x)
    call SetUnitY(u,y)
    call SetUnitFlyHeight(u,LoadReal(H,i,12)+ParabolaZ(LoadReal(H,i,6),d2,d)+(LoadReal(H,i,8)-GetLocZ(x,y)),0)
    
    if d2-d1 < s then
        set s = d2-d1
        set x = GetUnitX(u)+s*Cos(a)
        set y = GetUnitY(u)+s*Sin(a)
        call SetUnitX(u,x)
        call SetUnitY(u,y)
        call SetUnitFlyHeight(u,LoadReal(H,i,12),0)
        call PauseUnit(u,false)
        call SetUnitPathing(u,true)
        call UnitRemoveAbility(u,'Arav')
        set bj_lastCreatedUnit = u
        set TempR = LoadReal(H,i,1)
        set TempR1 = LoadReal(H,i,13)
        call GroupEnumUnitsInRange(TempG,x,y,LoadReal(H,i,10),LoadBooleanExprHandle(H,i,11))
        call ForGroup(TempG,function Dmg)
        call GroupClear(TempG)
        call DestroyBoolExpr(LoadBooleanExprHandle(H,i,11))
        call PauseTimer(t)
        call DestroyTimer(t)
        call FlushChildHashtable(H,i)
        call UnitAddItem(u,CreateItem(ItemID,0,0))
    else
        call SaveReal(H,i,5,d)
        call SaveReal(H,i,9,d1)
    endif
    
    set u = null
    set t = null
endfunction

function Jump takes unit caster, unit target, real dmg, real speed, real height, real tmper, boolexpr b, real radius, real dbtm returns nothing
    local timer t = CreateTimer()
    local integer i = GetHandleId(t)
    local real d = DBC(GetUnitX(caster),GetUnitY(caster),GetUnitX(target),GetUnitY(target))
    call SaveUnitHandle(H,i,0,caster)
    call SaveReal(H,i,1,dmg)
    call SaveReal(H,i,2,speed)
    call SaveReal(H,i,3,tmper)
    call SaveReal(H,i,4,Atan2(GetUnitY(target)-GetUnitY(caster),GetUnitX(target)-GetUnitX(caster)))
    call SaveReal(H,i,5,d)
    call SaveReal(H,i,6,height)
    call SaveReal(H,i,7,d)
    call SaveReal(H,i,8,GetLocZ(GetUnitX(caster),GetUnitY(caster)))
    call SaveReal(H,i,10,radius)
    call SaveBooleanExprHandle(H,i,11,b)
    call SaveReal(H,i,12,GetUnitFlyHeight(caster))
    call SaveReal(H,i,13,dbtm)
    call TimerStart(t,tmper,true,function Move)
    call UnitAddAbility(caster,'Arav')
    call SetUnitPathing(caster,false)
    call PauseUnit(caster,true)
    
    set t = null
endfunction

private function Res takes nothing returns nothing
    set bj_groupCountUnits = 0
    call ForGroup(DebuffG,function CountUnitsInGroupEnum)
    if bj_groupCountUnits == 0 then
        call PauseTimer(DebuffT)
    endif
endfunction

private function init takes nothing returns nothing
    call TimerStart(CreateTimer(),1,true,function Res)
endfunction

endlibrary
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.