XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Если вы хотели бы использовать в своей карте нестандартное, оригинальное заклинание, но у вас не хватает знаний для его реализации, то эта тема специально для вас. В данной теме вы можете оставить заявку на создание необходимого вам заклинания.
Если вам нужно заклинание одного из персонажей DotA, то ищите его здесь
» Шаблон оформления заявки
Название: название заклинания
Способ исполнения: GUI / JASS / всё равно
Цель: вражеский юнит / свой юнит / сам герой / итд.
Для героя: да/нет
MUI: можно ли одновременно использовать заклинание больше одного раза
Описание: здесь описание нужного спелла
По уровням:
  1. здесь параметры на первом уровне
  2. здесь на втором
  3. итд.
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
**Название:** 
**Способ исполнения:**
**Цель:**
**Для героя:**
**MUI:**
**Описание:**
**По уровням:**
1. 
2. 
...

» Шаблон оформления ответа
Заклинание: здесь может быть название спелла или номер поста
Заказчик: здесь имя пользователя, который заказал заклинание
Способ исполнения: Jass или GUI
MUI: можно ли одновременно использовать заклинание больше одного раза
Нужен ли JNGP: Да или Нет
Используются глобальные переменные: Да или Нет
Шаблон можно просто скопировать здесь, вставить в свое сообщение и заполнить:
**Заклинание:**
**Заказчик:**
**Способ исполнения:**
**MUI:**
**Нужен ли JNGP:**
**Используются глобальные переменные:**
MUI - Multiplayer
Разрешается просто процитировать сообщение заказа и дописать информацию о получившемся заклинании.

Правила темы:

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

Закрытая тема
 
SANTIMEL

offline
Опыт: 12,871
Активность:
Можешь последний вариант замутить ?
А то как я понял два первых баговые.
В первом - Юнит будет преследовать соперника за место того чтобы переключится на ближайшего противника, или остановиться.
А во втором ты сам всё описал.

Отредактировано Дик, 02.06.2013 в 16:46.
Старый 02.06.2013, 05:41
Gera342

offline
Опыт: 724
Активность:
Сделайте пожалуйста такой скилл на гуи.
Описание: герой метит указанного врага, и его начинают атаковать 4 иллюзии героя-кастера, иллюзии появляются возле цели, иллюзии наносят 15%/20%/25%/30% от урона героя кастера, цель оглушается на 1 секунду.
Старый 02.06.2013, 11:55
SiT3D

offline
Опыт: 1,514
Активность:
Дик
Вот держи молнию.
SiT3D добавил:
Gera342:
Сделайте пожалуйста такой скилл на гуи.
Описание: герой метит указанного врага, и его начинают атаковать 4 иллюзии героя-кастера, иллюзии появляются возле цели, иллюзии наносят 15%/20%/25%/30% от урона героя кастера, цель оглушается на 1 секунду.
Вот как-то так, на Гуи немного криво.
Прикрепленные файлы
Тип файла: w3x ChainMail.w3x (18.3 Кбайт, 13 просмотров )
Тип файла: w3x 4ilLusion.w3x (13.5 Кбайт, 23 просмотров )
Старый 02.06.2013, 15:55
DualShock

offline
Опыт: 5,023
Активность:
SiT3D, интересная реализация, я например, не знал про фишку с браслетами.
» Некоторые моменты которые я заметил
((код jass
function Move_cc takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit u = LoadUnitHandle(hash,GetHandleId(t),2)
local unit trg = LoadUnitHandle(hash,GetHandleId(t),1)
if DistanceBetweenPoints(GetUnitLoc(u),GetUnitLoc(trg)) >5 then
SetUnitPosition(u,GetUnitX(trg),GetUnitY(trg) )
endif
set t = null
endfunction
...
set u = CreateUnit(Player(GetPlayerId(GetOwningPlayer(GetEventDamageSource()))),dummy,GetUnitX(GetEventDamag​eSource()),GetUnitY(GetEventDamageSource()),0.) Создаём нашего дамии
call UnitApplyTimedLife(u, 'BTLF', 1.) Ставим таймер жизни на 1 сек
call ShowUnit(u,false)//Скрываем его
call SetUnitPathing(u,true)
call IssueTargetOrder(u,"chainlightning",GetTriggerUnit())//Приказ кастовать молнию, дамику в получившего урон
TriggerSleepAction(0.01)
set t = CreateTimer()
call SaveUnitHandle(hash, GetHandleId(t),1,GetTriggerUnit())
call SaveUnitHandle(hash, GetHandleId(t),2,u)
call TimerStart(t,0.04,true, function Move_cc)
...
))
TriggerSleepAction ты наверное поставил что бы даммик успел кастануть молнию ибо потом ты его двигаешь SetUnitPosition ( что бы молния шла от героя, если он отойдет от места) который может сбить каст молнии, так вот, юзай SetUnitX, SetUnitY это не сбивает каст, TriggerSleepAction убрать
call SaveUnitHandle(hash, GetHandleId(t),1,GetTriggerUnit()) сюда ты хотел сохранить самого героя, а не цель которая получила урон :)
и еще самое главное таймер же не удаляется, после того как даммик умер таймер продолжает работать =O

Отредактировано DualShock, 02.06.2013 в 16:45.
Старый 02.06.2013, 16:32
SiT3D

offline
Опыт: 1,514
Активность:
А точно забыл про таймер =)) спасибо что исправил, да я когда проверял, он почему то не кастовал, поэтому решил поставить, вообще писал 2 заклинания мин 10 это и ещё 1 поэтому не сильно проверял, и что-то забыл. Ну в общем сделал, работает )) на здоровье так сказать =0) надеюсь что помог )
а точно))) кстати прикольный эффект получился )))) молния так прикольно обрезается )
Я ещё не сильно в джаз разбираюсь, не знал про SetUnitX спасибо что подсказал =)

Отредактировано SiT3D, 02.06.2013 в 17:06.
Старый 02.06.2013, 16:51
Gera342

offline
Опыт: 724
Активность:
SiT3D, благодарю.
Старый 02.06.2013, 21:44
SANTIMEL

offline
Опыт: 12,871
Активность:
Название: Продать
Способ исполнения: Желательно GUI
Цель: Предмет в инвентаре
Для героя: Нет
Описание: Нужна способность для переносчика артефактов. Нажав на которую, курсор меняется на курсор в прикреплённом изображении. Если потом нажать этим курсором на предмет в инвентаре. То он должен быть продан.
Но курсор не должен меняться на обычный.
Он должен оставаться таким пока не нажмут правой кнопкой мыши, или не переключатся на другого юнита.
(Чтобы при продаже нескольких предметов, не приходилось снова и снова активировать способность).
Изображения
 

Отредактировано Дик, 13.06.2013 в 03:28.
Старый 05.06.2013, 14:14
Zerom Croufer

offline
Опыт: 118
Активность:
  1. Название способности: Бросок якоря
  2. Относится к: Герою
  3. Тип цели: боевая единица
  4. Метод исполнения: GUI
  5. Мультиприменяемость: Да
  6. Общий вид: Нет
7.1 Описание способности в общем виде: персонаж крутится и после 1,25с задержки и бросает якорь под пропорциональным углом на цель
(тоесть чем дальше цель - тем больше угол броска понятное дело, если цель стоит рядом персонажа то угол полёта будет 90градусов...ну вы поняли. Если деревья - они уничтожаются по пути)
(тип цели только боевая единица, не точка),
якорь падает в ту точку где был юнит
(если даже юнит отошёл - якорь не будет лететь в него, он будет лететь в ту точку в которую он был указан при активации)
и если там кто будет в момент падения - он замедляется и ему наносится урон.
Во время полета якоря герой летит за ним.
как то так это выглядит:
7.2 Описание способности - уровни:
  1. Урон от падения якоря 30+ сила сила героя ед. , замедление 5% на 4 сек. Радиус -300
  2. Урон от падения якоря 45+ сила сила героя ед. , замедление 10% на 4 сек. Радиус -330
  3. Урон от падения якоря 60+ сила сила героя ед. , замедление 15% на 4 сек. Радиус -360
  4. Урон от падения якоря 75+ сила сила героя ед. , замедление 20% на 4 сек. Радиус -390
модель якоря:

Отредактировано Zerom Croufer, 11.06.2013 в 01:46.
Старый 11.06.2013, 01:32
SANTIMEL

offline
Опыт: 12,871
Активность:
SiT3D,
Спс "^_^" Извини за ожидание. У меня инет отрубили когда я спросил у провайдера какой у меня долг =))))
Старый 13.06.2013, 03:29
Zerom Croufer

offline
Опыт: 118
Активность:
а мне кто нибудь поможет? 2 дня жду
Старый 13.06.2013, 14:06
youtube
сктыщь
offline
Опыт: 8,025
Активность:
Zerom_Croufer, лучше б ты дал модель юнита который будет просто крутиться, хотя на самом деле можно сделать что бы только якорь крутился
похожий
и вот на формулу высоты
(4.*250/m_d)*(m_d-d)*(d/m_d)
250 - максимальная высота
m_d - изначальное расстояние до цели
d - расстояние до цели в данный момент
Старый 13.06.2013, 14:56
Diablo256

offline
Опыт: 373
Активность:
А мне может кто-то помочь? Уже несколько месяцев не могу сделать этот спел. Вся работа застопорилась без нового героя(( Помогите пожалуйста, хоть как-нибудь сделать, хоть на джасс или на гуи.
Diablo256:
Название: Удержание
Способ исполнения: GUI
Цель: Без цели.
Для героя: да
MUI: без разницы
Описание: При активации спелла, вокруг героя в радиусе 600 AoE, из земли вылазят могильные кресты, не дающие пройти противникам через них (может пройти только сам герой и союзники). Так же всем противникам, попавшим в этот круг ежесекундно будет наноситься урон.
По уровням: 3 уровня. Время действия - 8, 10, 12 секунд. Наносится по 55, 65, 75 урона в секунду. Радиус круга постоянный, 600 AoE.
Старый 15.06.2013, 20:50
youtube
сктыщь
offline
Опыт: 8,025
Активность:
Diablo256, пикаешь всех вокруг, проверяешь радиус то центра, и если больше то выталкиваешь
я бы сделал, но вы тут все гуишниги, так вот принимай только на словах
Старый 15.06.2013, 22:48
Diablo256

offline
Опыт: 373
Активность:
youtube, Я извиняюсь, давно уже не работал с такого рода спеллами, не помню как радиус определить, да и не совсем понял на счет выталкивания. Если юниты за пределами круга, они не могут войти, если в круге - не могут выйти. В принципе понял как можно реализовать, но я с радиусом запортачу полюбому, да и отталкивание не знаю как сделать)
Если не сложно - сделайте пожалуйста, а я как раз поковыряюсь, и пойму что к чему)
Старый 16.06.2013, 10:36
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
Diablo256, обсчитываешь расстояние - это и есть твой радиус, потом через SetUnitX\Y устанавливаешь позиции юнитов(пикнутых в радиусе) через полярный оффсет
Старый 16.06.2013, 11:06
youtube
сктыщь
offline
Опыт: 8,025
Активность:
Diablo256, завтра постараюсь сделать на jass'e
Старый 16.06.2013, 16:14
Diablo256

offline
Опыт: 373
Активность:
youtube, Благодарю, буду ждать, только прокомментируйте пожалуйста свои действия, и как правильно импортировать в карту.
Старый 16.06.2013, 18:16
youtube
сктыщь
offline
Опыт: 8,025
Активность:
Diablo256,
Такс, что бы карта работала тебе нужно будет скопировать вот это
Так же нужен cjass
Сделал лишь забор. Урон думаю сам сможешь сделать
урон можешь сделать через этот скилл
» вот сам код
scope Spell initializer Init{
    define{
        private SpellId='A000'
        //айди скила
        private DummyId='h000'
        //айди даммика
        private Range=350.
        //радиус действия
        private Duration=10.
        //время действия скила
        private ExtraRange=80.
        //радиус преграды
        private Count=20
        //сол-во юнитов (преграды)
    }
    private unit CAST
    private real X,Y
    private struct Cast{
    unit cast,dmy[21]
    real d,x,y
    static method onAction takes void returns void
        timer t = GetExpiredTimer()
        thistype r = GetTimerData(t)
        if r.d>=0
        //проверяем оставшееся время
        
            //========================================
            //вычитаем время
            r.d-=.03125
            //========================================
            
            //========================================
            //присваиваем для пика к клобалке
            CAST=r.cast
            X=r.x
            Y=r.y
            //========================================
            group g=new group
            //создаем группу
            GroupEnumUnitsInRange(g, r.x, r.y,Range+ExtraRange, Filter(lambda bool onDamage(){
                unit u = GetFilterUnit()
                //фильтр офк
                //убери потом "not" что бы действовала на врагов
                if not IsUnitEnemy(CAST, GetOwningPlayer(u)) and GetWidgetLife(u) > 0.405 and not IsUnitType(u, UNIT_TYPE_STRUCTURE) and not IsUnitType(u, UNIT_TYPE_MECHANICAL)
                    real d=SQ(X,Y,GetUnitX(u),GetUnitY(u))
                    //находим м\у ними расстояние
                    real a=ABU3(GetUnitX(u),GetUnitY(u),X,Y)
                    //угол
                    if d>=Range
                        //из круга
                        //SafeX\Y для того, что бы не улетала за границу
                        SetUnitX(u,SafeX(X+(Range+ExtraRange)*Cos(a)))
                        SetUnitY(u,SafeY(Y+(Range+ExtraRange)*Sin(a)))
                    elseif d>=Range-ExtraRange
                        //в круге
                        SetUnitX(u,SafeX(X+(Range-ExtraRange)*Cos(a)))
                        SetUnitY(u,SafeY(Y+(Range-ExtraRange)*Sin(a)))
                    endif
                endif
                clear
                return false
            }))
            DestroyGroup(g)
            //удаляем группу
        else
            int i=1
            do {
                RemoveUnit(r.dmy[i])
                //удаляем даммиков
            } whilenot(i++==20)
            ReleaseTimer(t)
            //удаляем таймер
        endif
        clear
        //обнуляем переменные
    endmethod
    
    static method Create takes unit cast returns thistype
        thistype r = thistype.create()
        timer t = NewTimer()
        r.cast=cast
        //присваиваем юнита-кастера к система
        int i=1
        real a=bj_PI/Count
        //фигня
        real x=GetUnitX(cast)
        real y=GetUnitY(cast)
        //положение юнита
        r.x=x
        r.y=y
        r.d=Duration
        //в систему добавляем данные
        do {
            //создаем даммиков через цикл
            r.dmy[i]=new unit(GetOwningPlayer(cast),DummyId,x+Range*Cos(a*(i*2)),y+Range*Sin(a*(i*2)))
        } whilenot( i++ == Count)
        
        SetTimerData(t,r)
        //сохраняем
        TimerStart(t, .03125, true, function thistype.onAction)
        //запускаем таймер
        clear
        //обнуляем переменные
        return r
    endmethod
    }
    private void Init(){
        trigger t=new trigger
        TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        TriggerAddCondition(t,Condition(lambda bool Cond(){
            //регистрация на скилл
            if GetSpellAbilityId()==SpellId
                unit cast=GetTriggerUnit()
                Cast.Create(cast)
                //применение скила
            endif
            clear
            return false
        }))
        clear
        //обнуляем переменные
    }
}
Прикрепленные файлы
Тип файла: w3x forxgm.w3x (19.0 Кбайт, 8 просмотров )
Старый 16.06.2013, 20:22
Diablo256

offline
Опыт: 373
Активность:
youtube, вот это механизм) Сразу появляются вопросы, cjass нужен только для того, чтобы проверить вашу карту? Если я импортирую код в свою, все игроки по сети смогут нормально играть и пользоваться им? (просто никаких доп. программ до этого не ставил).
На счет урона, нужно просто сделать, чтобы всех врагов в радиусе круга било магией к примеру, через жар преисподней не вариант делать, так как он может использоваться как предмет в моей карте.
Там же в одну строку можно расписать я так понимаю? + добавить спецэффект какой-нить.
Старый 16.06.2013, 21:48
youtube
сктыщь
offline
Опыт: 8,025
Активность:
Diablo256, можно все что только душа желает
cjass нужен только для того, чтобы проверить вашу карту?
он нужен для того, что бы сохранять мой код
Старый 16.06.2013, 22:23
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:07.