Сейчас 20:15:28 Четверг, 25 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Нужен человек знающий джасс и готовый помоч!
Нужен человек знающий джасс и готовый помоч!
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
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Нужен человек знающий джасс и готовый помоч!
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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