|
|
|
|
Нужен человек знающий джасс и готовый помоч!
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 10:20:31 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Вот у меня система стрельбы ЛКМ половина на джасс Code function Trig_____________________________________001_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A002' ) ) then return false endif return true endfunction
function Trig_____________________________________001_Actions takes nothing returns nothing local location A local location B set A = GetUnitLoc(GetSpellAbilityUnit()) set B = GetSpellTargetLoc() call CreateNUnitsAtLoc( 1, 'h003', Player(0), GetUnitLoc(GetSpellAbilityUnit()), GetUnitFacing(GetSpellAbilityUnit()) ) call SetUnitUserData( GetLastCreatedUnit(), 75 ) set udg_missle = GetLastCreatedUnit() call RemoveLocation(A) call RemoveLocation(A) set A = null set B = null endfunction
//=========================================================================== function InitTrig_atakk takes nothing returns nothing set gg_trg_atakk = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_atakk, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_atakk, Condition( function Trig_____________________________________001_Conditions ) ) call TriggerAddAction( gg_trg_atakk, function Trig_____________________________________001_Actions ) endfunction и 2 тригг Code function Trig_____________________________________002_Func001A takes nothing returns nothing local location A set A = GetUnitLoc(GetEnumUnit()) set A = PolarProjectionBJ(A, 20.00, GetUnitFacing(GetEnumUnit())) call SetUnitPositionLoc( GetEnumUnit(),A ) call RemoveLocation(A) set A = null call SetUnitUserData( GetEnumUnit(), GetUnitUserData(GetEnumUnit())-1 ) if (GetUnitUserData(GetEnumUnit())==25) then call KillUnit( GetEnumUnit() ) endif if (GetUnitUserData(GetEnumUnit())==0) then call RemoveUnit( GetEnumUnit() ) endif endfunction
function Trig_____________________________________002_Actions takes nothing returns nothing call ForGroupBJ( GetUnitsOfTypeIdAll('h003'), function Trig_____________________________________002_Func001A ) endfunction
//=========================================================================== function InitTrig_attack takes nothing returns nothing set gg_trg_attack = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_attack, 0.01 ) call TriggerAddAction( gg_trg_attack, function Trig_____________________________________002_Actions ) endfunction
все бы хорошо,но это не работает в мультиплеере!!Я джасс почти не знаю и немогу сделать для всех игроков, игроков всего 10.кто может помоч помогите)
|
|
|
|
Banzay89 | Дата: Воскресенье, 06 Июня 2010, 11:15:04 | Сообщение # 2 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| Quote set udg_missle = GetLastCreatedUnit() ясен х*р! у тя глобалка Добавлено (06-06-2010, 11:13) --------------------------------------------- если уже на то пошло, то Code local unit missle=GetLastCreatedUnit() Добавлено (06-06-2010, 11:15) --------------------------------------------- но тогда все равно нужно будет юзать хэш чтоб переносить локалки между функциями
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 11:19:48 | Сообщение # 3 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Dreii, Это всё, что я с такими триггерами смог сделать: Code function Trig_atakk_Conditions takes nothing returns boolean return GetSpellAbilityId() == 0x41303032 endfunction
function Trig_atakk_Actions takes nothing returns nothing local unit caster = GetTriggerUnit() set udg_missle = CreateUnit(Player(0),'h003',GetUnitX(caster),GetUnitY(caster),GetUnitFacing(caster)) call SetUnitUserData(udg_missle,75) set caster = null endfunction
//=========================================================================== function InitTrig_atakk takes nothing returns nothing set gg_trg_atakk = CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_atakk,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(gg_trg_atakk,Condition(function Trig_atakk_Conditions)) call TriggerAddAction(gg_trg_atakk,function Trig_atakk_Actions) endfunction Code function Trig_attack_Group takes nothing returns nothing local unit enum = GetEnumUnit() local real x = GetUnitX(enum) local real y = GetUnitY(enum) local real angle = GetUnitFacing(enum) * 0.0174532 local real x1 = x + 20. * Cos(angle) local real y1 = y + 20. * Sin(angle) call SetUnitX(enum,x1) call SetUnitY(enum,y1) call SetUnitUserData(enum,GetUnitUserData(enum) - 1) if GetUnitUserData(enum) == 25 then call KillUnit(enum) elseif GetUnitUserData(enum) == 0 then call RemoveUnit(enum) endif set enum = null endfunction
function Trig_attack_Filter takes nothing returns boolean return GetUnitTypeId(GetFilterUnit()) == 'h003' endfunction
function Trig_attack_Actions takes nothing returns nothing local integer i = 0 local group g = CreateGroup() local group final = CreateGroup() loop exitwhen i > 11 call GroupEnumUnitsOfPlayer(g,Player(i),Filter(function Trig_attack_Filter)) set bj_wantDestroyGroup = true call GroupAddGroup(g,final) call GroupClear(g) set i = i + 1 endloop call ForGroup(final,function Trig_attack_Group) call DestroyGroup(g) call DestroyGroup(final) set g = null set final = null endfunction
//=========================================================================== function InitTrig_attack takes nothing returns nothing set gg_trg_attack = CreateTrigger() call TriggerRegisterTimerEvent(gg_trg_attack,0.04,true) call TriggerAddAction(gg_trg_attack,function Trig_attack_Actions) endfunction Добавлено (06-06-2010, 11:19) --------------------------------------------- Banzay89, Да тут таймер, ещё и с кривым периодиком был. Если бы у меня была вторая половина триггеров, я бы мог закрепить юнита на таймер. Хотя зачем тут глобалка вообще - с такой частью и непонятно, ибо ид создаваемого юнита все в группу заносятся. Добавлено (06-06-2010, 11:19) ---------------------------------------------
Quote (|DUОS|) if GetUnitUserData(enum) == 25 then call KillUnit(enum) elseif GetUnitUserData(enum) == 0 then call RemoveUnit(enum) endif Если она по умолчанию 75 и от неё отнимается 1, как вообще может быть юзердата 0? О_о Юнит же убит.
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 11:28:52 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], скачай моюнаработку стрельбы ЛКМ там этот триггер всеь Добавлено (06-06-2010, 11:28) --------------------------------------------- enum это переменная?
|
|
|
|
Banzay89 | Дата: Воскресенье, 06 Июня 2010, 11:33:25 | Сообщение # 5 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| Dreii, вот пример функций(вырвал из скила), двигающих юнит: Code function Move takes nothing returns nothing local timer t=GetExpiredTimer() local unit u=LoadUnitHandle(H, GetHandleId(t), 0) local unit u2=LoadUnitHandle(H, GetHandleId(t), 1) local real ang=LoadReal(H, GetHandleId(t), 2) local real xt=LoadReal(H, GetHandleId(t), 3) local real yt=LoadReal(H, GetHandleId(t), 4) local integer lvl=LoadInteger(H, GetHandleId(t), 5) local real x=GetUnitX(u2) local real y=GetUnitY(u2) local real dist=(x-xt)*(x-xt)+(y-yt)*(y-yt) if dist < lvl*200*200 then //уровень скила * на квадрат кноубека call SetUnitX(u2, x+25*Cos(ang)) call SetUnitY(u2, y+25*Sin(ang)) call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\FlakCannons\\FlakTarget.mdl", x, y)) else call PauseTimer(t) call FlushChildHashtable(udg_HASHTABLE, GetHandleId(t)) call DestroyTimer(t) endif t=null u=null u2=null endfunction function Actions takes nothing returns nothing local timer t=CreateTimer() local unit u=GetSpellAbilityUnit() local unit u2=GetSpellTargetUnit() local real x=GetUnitX(u) local real x1=GetUnitX(u2) local real y=GetUnitY(u) local real y1=GetUnitY(u2) local real ang=Atan2(y1-y,x1-x) local integer lvl=GetUnitAbilityLevel(u, 'A000') call SaveUnitHandle(H, GetHandleId(t), 0, u) call SaveUnitHandle(H, GetHandleId(t), 1, u2) call SaveReal(H, GetHandleId(t), 2, ang) call SaveReal(H, GetHandleId(t), 3, x) call SaveReal(H, GetHandleId(t), 4, y) call SaveInteger(H, GetHandleId(t), 5, lvl) call TimerStart(t, 0.03, true, function Move) t=null u=null u2=null endfunction
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 11:39:35 | Сообщение # 6 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Banzay89, он для мултиплеера будет робить?
|
|
|
|
Banzay89 | Дата: Воскресенье, 06 Июня 2010, 11:44:51 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| Dreii, конечно!
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 11:47:25 | Сообщение # 8 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Dreii) enum это переменная? Локальная.
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 11:49:47 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| ваще ниче не понимаю.....
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 12:12:15 | Сообщение # 10 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Banzay89) LoadReal(H Banzay89, И зачем сразу хаштабло в глобалсы занёс?)
|
|
|
|
Banzay89 | Дата: Воскресенье, 06 Июня 2010, 12:27:07 | Сообщение # 11 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| [DUОS], а какая разница?)
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 15:18:09 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], Banzay89,ктонибудь может из вас в моей карте это сделать?
|
|
|
|
Banzay89 | Дата: Воскресенье, 06 Июня 2010, 15:28:00 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| Dreii, могу, но не сделаю по той простой причине, что сегодня еду на учебу и буду дома аж на следующих выходных! Так что...
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 15:29:14 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Banzay89,а код джассовый написать?или карту пример?на 10 человеков)
|
|
|
|
Banzay89 | Дата: Воскресенье, 06 Июня 2010, 15:39:10 | Сообщение # 15 |
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
| Dreii, по будням я занят другими, более важными делами, чем WE =) Или проси когото другого или жди выходных
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 15:42:16 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Banzay89,блин блинский
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 15:44:10 | Сообщение # 17 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Dreii, Кину тебе сейчас триггер этот.
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 15:44:30 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], Спасибо!=)
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 16:03:04 | Сообщение # 19 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Dreii, Держи первый триггер, второй оставь такой же, безымянный 003 сносить можно. Code function Trig_atakk_Conditions takes nothing returns boolean return GetSpellAbilityId() == 0x41303032 endfunction
function Trig_MissileMove_Filter takes nothing returns boolean return IsUnitAlly(GetFilterUnit(),GetOwningPlayer(udg_Geroi[GetPlayerId(GetTriggerPlayer()) + 1])) == false and IsUnitType(GetFilterUnit(),UNIT_TYPE_DEAD) == false endfunction
function Trig_MissileMove_Group takes nothing returns nothing local timer t = GetExpiredTimer() local unit u = LoadUnitHandle(udg_Hashtable,GetHandleId(t),0) call UnitDamageTarget(u,GetEnumUnit(),200.,ATTACK_TYPE_PIERCE,DAMAGE_TYPE_NORMAL) call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl",GetUnitX(u),GetUnitY(u))) call RemoveUnit(u) set t = null set u = null endfunction
function Trig_atakk_Timer takes nothing returns nothing local timer t = GetExpiredTimer() local unit u = LoadUnitHandle(udg_Hashtable,GetHandleId(t),0) local group g = CreateGroup() call GroupEnumUnitsInRange(g,GetUnitX(u),GetUnitY(u),75.,Filter(function Trig_MissileMove_Filter)) call ForGroup(g,function Trig_MissileMove_Group) call GroupClear(g) call DestroyGroup(g) call DestroyTimer(t) set g = null set u = null set t = null endfunction
function Trig_atakk_Actions takes nothing returns nothing local unit caster = GetTriggerUnit() local timer t = CreateTimer() local unit u = CreateUnit(Player(0),'h003',GetUnitX(caster),GetUnitY(caster),GetUnitFacing(caster)) call SetUnitUserData(u,75) call SaveUnitHandle(udg_Hashtable,GetHandleId(t),0,u) call TimerStart(t,0.04,false,function Trig_atakk_Timer) set t = null set caster = null endfunction
//=========================================================================== function InitTrig_atakk takes nothing returns nothing set gg_trg_atakk = CreateTrigger() call TriggerRegisterAnyUnitEventBJ(gg_trg_atakk,EVENT_PLAYER_UNIT_SPELL_EFFECT) call TriggerAddCondition(gg_trg_atakk,Condition(function Trig_atakk_Conditions)) call TriggerAddAction(gg_trg_atakk,function Trig_atakk_Actions) endfunction
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 17:08:23 | Сообщение # 20 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], ок) Добавлено (06-06-2010, 17:08) --------------------------------------------- [DUОS],выдает много ошибок при проверки карты
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 17:37:42 | Сообщение # 21 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Dreii, Ах,да. Создай глобальную переменную Hashtable типа Хэш-таблица и проинициализируй её в отдельном триггере.
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 17:46:02 | Сообщение # 22 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], ок Добавлено (06-06-2010, 17:46) --------------------------------------------- [DUОS], всеравно ошибки,но их стало меньше ^^
|
|
|
|
[DUОS] | Дата: Воскресенье, 06 Июня 2010, 19:32:37 | Сообщение # 23 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Dreii) [DUОS], всеравно ошибки,но их стало меньше ^^ Мб ты что-то намутил с триггерами? У меня в наработке не возникало ошибок.
|
|
|
|
Dreii | Дата: Воскресенье, 06 Июня 2010, 19:33:24 | Сообщение # 24 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| [DUОS], скинь её мне)
|
|
|
|
windrunner | Дата: Воскресенье, 06 Июня 2010, 19:40:25 | Сообщение # 25 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| Dreii, значит на хгм выкладываешь наработку,а тут ее заставляешь делать другим?Не хорошоооо....=)
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
|
|
|
|
|
|
|