|
|
|
|
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 мои системы кто-то юзает так глядишь и жасп в моду войдет
|
|
|
|
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' заменить на свой имеем одного дамми для всех заклинаний
|
|
|
|
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
Блокировки:
| не знаю, дурак я, вот почему (:
|
|
|
|
Dreii | Дата: Вторник, 05 Июня 2012, 13:52:53 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| я не ставлю=)
|
|
|
|
Ty3uK | Дата: Вторник, 05 Июня 2012, 13:55:19 | Сообщение # 11 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| врешь, в шарпе можно и без них (: офк если действие одно
|
|
|
|
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
Блокировки:
| ^
|
|
|
|
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
Блокировки:
| а я люблю так писать
|
|
|
|
|
|
|
|
|
|
|