Сейчас 02:31:02 Среда, 27 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
MDD
tRu^SДата: Вторник, 05 Июня 2012, 11:55:23 | Сообщение # 1
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Система онли нуб - простая системка полёта дами(by Ty3uK) и нанесения урона.
Требуеться - JNGP
Code
void cam(player p,real d)
{
    timer t=CreateTimer()
    integer id=GetHandleId(t)
    if (GetLocalPlayer() == p) then
        CameraSetTargetNoiseEx(10*2.0,10*Pow(10,5),true)
        CameraSetSourceNoiseEx(10*2.0,10*Pow(10,5),true)
    endif
    SavePlayerHandle(Hash,id,0,p)
    TimerStart(t,d,false,\
        lambda void()
        {
            timer t=GetExpiredTimer()
            integer id=GetHandleId(t)
            player p=LoadPlayerHandle(Hash,id,0)
            if (GetLocalPlayer() == p) then
                ResetToGameCamera(0.)
            endif
        }
    )
}

void MDWT()
{
    timer t=GetExpiredTimer()
    integer id=GetHandleId(t)
    unit dummy=LoadUnitHandle(Hash,id,0)
    real angle=LoadReal(Hash,id,1)
    real distance=LoadReal(Hash,id,2)
    real speed=LoadReal(Hash,id,3)
    real d=LoadReal(Hash,id,4)
    unit caster=LoadUnitHandle(Hash,id,6)
    string ef=LoadStr(Hash,id,7)
    integer ids=LoadInteger(Hash,id,8)
    real dmg=LoadReal(Hash,id,9)
    group g=LoadGroupHandle(Hash,id,10)
    real x=GetWidgetX(dummy) + speed * Cos(angle)
    real y=GetWidgetY(dummy) + speed * Sin(angle)
    if d >= distance then
        if LoadBoolean(Hash,id,5) then
            RemoveUnit(dummy)
        else
            PauseUnit(dummy,false)
        endif
        FlushChildHashtable(Hash,id)
        PauseTimer(t)
        DestroyTimer(t)
        GroupClear(g)
        DestroyGroup(g)
    else
        SetUnitPosition(dummy,x,y)
        for(unit e;UnitsInRange(x,y,220.)use GG)
        {
            if IsUnitEnemy(e,GetOwningPlayer(caster)) and IsUnitInGroup(e,g) == FALSE then
                GroupAddUnit(g,e)
                UnitDamageTarget(caster,e,dmg*GetUnitAbilityLevel(caster,ids),true,false,ATTACK_TYPE_HERO,DAMAGE_TYPE_UNIVERSAL,null)
                cam(GetOwningPlayer(e),1.)
            endif
        }
        DestroyEffect(AddSpecialEffect(ef,x,y))
        SaveReal(Hash,id,4,d+speed)
    endif
}

void MDW(unit caster, unit dummy, real speed, boolean remove, integer ids,string ef,real dmg,group g,real dis)
{
    timer t=CreateTimer()
    integer id=GetHandleId(t)
    SaveUnitHandle(Hash,id,0,dummy)
    SaveReal(Hash,id,1,Atan2(GetSpellTargetY()-GetWidgetY(caster),GetSpellTargetX()-GetWidgetX(caster)))
    SaveReal(Hash,id,2,dis)
    SaveReal(Hash,id,3,speed)
    SaveBoolean(Hash,id,5,remove)
    SaveUnitHandle(Hash,id,6,caster)
    SaveStr(Hash,id,7,ef)
    SaveInteger(Hash,id,8,ids)
    SaveReal(Hash,id,9,dmg)
    SaveGroupHandle(Hash,id,10,g)
    PauseUnit(dummy,true)
    TimerStart(t,.04,true,function MDWT)
}

Cкачать




Сообщение отредактировал tRu^S - Вторник, 05 Июня 2012, 12:15:11
 

SirNikolasДата: Вторник, 05 Июня 2012, 12:06:42 | Сообщение # 2
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Выложи код, пожалуйста.

 

Ty3uKДата: Вторник, 05 Июня 2012, 12:41:37 | Сообщение # 3
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
:0
мои системы кто-то юзает
так глядишь и жасп в моду войдет


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

tRu^SДата: Вторник, 05 Июня 2012, 12:42:46 | Сообщение # 4
8 уровень
Группа: Проверенные
Сообщений: 614
Награды: 0
Репутация: 138
Блокировки:
Ty3uK, мб) просто всою делать лень

 

DragoNДата: Вторник, 05 Июня 2012, 12:53:48 | Сообщение # 5
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
если юзаешь cJass синтаксис, то юзай по полной
Code
if (smth) then  
ololo
trololo  
else omgtehfunc  
endif

куда краше выглядят к примеру так
Code
if (smth) {  
ololo;  
trololo;
} else {  
omgtehfunc  
}


El Psy Congroo
 

DreiiДата: Вторник, 05 Июня 2012, 12:56:23 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
elese не надо в в{

 

Ty3uKДата: Вторник, 05 Июня 2012, 12:59:34 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
у меня еще парочка прикольных "системок" есть
один дамми для всех спеллов (вот эту модель поставить)
ну и функция создания. С использованием жаспа:
Code
function CreateDummy takes player owner, string model, real size, real x, real y, real height, real face returns unit
     var dummy = CreateUnit(owner, 'dmmy', x, y, face)
     call SetUnitScale(dummy, size, size, size)
     call AddSpecialEffectTarget(model, dummy, "origin")
     call SetUnitFlyHeight(dummy, height, 0.)
     set bj_lastCreatedUnit = dummy
     flush dummy
     return bj_lastCreatedUnit
endfunction

на cJass:
Code
unit CreateDummy (player owner, string model, real size, real x, real y, real height, real face)
{
     unit dummy = CreateUnit(owner, 'dmmy', x, y, face);
     SetUnitScale(dummy, size, size, size);
     AddSpecialEffectTarget(model, dummy, "origin");
     SetUnitFlyHeight(dummy, height, 0.);
     bj_lastCreatedUnit = dummy;
     flush locals;
     return bj_lastCreatedUnit;
}

на чистом:
Code
function CreateDummy takes player owner, string model, real size, real x, real y, real height, real face returns unit
     local unit dummy = CreateUnit(owner, 'dmmy', x, y, face)
     call SetUnitScale(dummy, size, size, size)
     call AddSpecialEffectTarget(model, dummy, "origin")
     call SetUnitFlyHeight(dummy, height, 0.)
     set bj_lastCreatedUnit = dummy
     set dummy = null
     return bj_lastCreatedUnit
endfunction

соответственно равкод 'dmmy' заменить на свой
имеем одного дамми для всех заклинаний :)


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Вторник, 05 Июня 2012, 13:50:46 | Сообщение # 8
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
set bj_lastCreatedUnit = dummy
set dummy = null
return bj_lastCreatedUnit
Почему бы сразу глобальную не использовать?

Добавлено (05 Июнь 2012, 13:49:19)
---------------------------------------------

Code
lambda void()
{
    timer t=GetExpiredTimer()
    integer id=GetHandleId(t)
    player p=LoadPlayerHandle(Hash,id,0)
    if (GetLocalPlayer() == p) then
        ResetToGameCamera(0.)
    endif
}
А кто таймер будет уничтожать?

Добавлено (05 Июнь 2012, 13:50:46)
---------------------------------------------

Quote (Dreii)
else не надо в в{
Во всех C-подобных - надо.


 

Ty3uKДата: Вторник, 05 Июня 2012, 13:51:05 | Сообщение # 9
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
не знаю, дурак я, вот почему (:

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DreiiДата: Вторник, 05 Июня 2012, 13:52:53 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
я не ставлю=)

 

Ty3uKДата: Вторник, 05 Июня 2012, 13:55:19 | Сообщение # 11
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
врешь, в шарпе можно и без них (:
офк если действие одно


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DragoNДата: Вторник, 05 Июня 2012, 14:21:43 | Сообщение # 12
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (Dreii)
elese не надо в в{

если >1 операции идут после блока, то надо
можно вообще как-то так if (cond) act1; else act2;
инлайн тащет!


El Psy Congroo
 

Ty3uKДата: Вторник, 05 Июня 2012, 17:41:46 | Сообщение # 13
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
^ buba

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Вторник, 05 Июня 2012, 19:43:40 | Сообщение # 14
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
врешь, в шарпе можно и без них (:
офк если действие одно
Нет, в Сях немного по-другому устроено.
После if, else (а также while, for и т. д.) должен стоять ровно один оператор. При этом ноль или больше операторов можно объединить в блок, который, в свою очередь, тоже является оператором. Получаем:
if (cond)
{
/*Это все один оператор*/
}

else
i++;//И это тоже один оператор

Кстати, весь if тоже считается одним оператором.
А скажите, как вы разделите здесь?
if (cond)
{
//...
else
//...
}
Quote (DragoN)
можно вообще как-то так if (cond) act1; else act2;
инлайн тащет!
А мне что-то не нравится. В крайнем случае пишу фигурные скобки.(if (...) { ... })

Добавлено (05 Июнь 2012, 19:43:40)
---------------------------------------------
Кстати, на этом же устроены подобные конструкции:

Code
if (cond1)
    abc();
else if (cond2)
    def();
else
    ghi();
Это может быть расписано как
Code
if (cond1)
    abc();
else
    if (cond2)
        def();
    else
        ghi();
, что еще раз подтверждает принцип одного оператора.


 

Ty3uKДата: Вторник, 05 Июня 2012, 19:45:09 | Сообщение # 15
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
а я люблю так писать

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz