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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Помощь в наработке
Помощь в наработке
CHLSNДата: Суббота, 25 Декабря 2010, 18:13:28 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Помогите, пожалуйста, макет заклинания сделать. Принцип такой:
На юнита накладывается заклинание.
Если этот не технический юнит наносит урон другому не техническому юниту, то на него накладывается проклятие.

function Trig_M_Attack takes nothing returns nothing
unit d = GetEventDamageSource()
unit u = GetTriggerUnit()
real la = GetUnitState( d, UNIT_STATE_LIFE )
if not IsUnitType( d, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then
//Проклятие
endif
d = null
u = null
endfunction

function Trig_M_Actions takes nothing returns nothing
trigger g = CreateTrigger()
unit d = GetAttacker()
unit u = GetTriggerUnit()
if not IsUnitType( u, UNIT_TYPE_STRUCTURE ) and GetUnitAbilityLevel( d, 'A021' ) > 0 then
TriggerAddAction( g, function Trig_M_Attack )
TriggerRegisterUnitEvent( g, u, EVENT_UNIT_DAMAGED )
endif
d = null
u = null
TriggerSleepAction( 15.00 )
DestroyTrigger( g )
g = null
endfunction

//===========================================================================
function InitTrig_M takes nothing returns nothing
set gg_trg_M = CreateTrigger( )
DisableTrigger( gg_trg_M )
call TriggerRegisterAnyUnitEventBJ( gg_trg_M, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddAction( gg_trg_M, function Trig_M_Actions )
endfunction

С этим кодом игра сразу вылетает с фатальной ошибкой.




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?


Сообщение отредактировал CHLSN - Суббота, 25 Декабря 2010, 18:14:58
 

Vova5009Дата: Суббота, 25 Декабря 2010, 18:19:57 | Сообщение # 2
8 уровень
Группа: Проверенные
Сообщений: 577
Награды: 0
Репутация: 125
Блокировки:

попробуй так)
 

DreiiДата: Суббота, 25 Декабря 2010, 18:20:47 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
TriggerSleepAction( 15.00 )

юзай таймеры


 

CHLSNДата: Суббота, 25 Декабря 2010, 18:21:27 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Vova5009, а что собственно изменилось?



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

EdiTTORRДата: Суббота, 25 Декабря 2010, 18:21:34 | Сообщение # 5
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
Quote (CHLSN)
unit d

а надо local unit d
так и с остальным.
перед типом локальной переменной необходимо ставить слово local

а так же не g=null а set g=null
так и с остальными.
Что-бы присвоить переменной значение перед её именем пишется set


Местами здесь.


Сообщение отредактировал EdiTTORR - Суббота, 25 Декабря 2010, 18:22:20
 

CHLSNДата: Суббота, 25 Декабря 2010, 18:22:08 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Dreii, а какая разница между таймером и спячкой?



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Суббота, 25 Декабря 2010, 18:23:00 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
спячкой?

Если поставят паузу,залагает игрок то отсчет будет идти на карйняк юзай PolleWait


 

CHLSNДата: Суббота, 25 Декабря 2010, 18:23:06 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
EdiTTORR, cJass рулит. На этот счет тема закрыта. Иначе бы у меня даже код не откомпилировал.



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Суббота, 25 Декабря 2010, 18:23:51 | Сообщение # 9
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, а че вообще нужно было сделать?)))

 

EdiTTORRДата: Суббота, 25 Декабря 2010, 18:24:50 | Сообщение # 10
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
CHLSN, сJass может и рулит, но экстрасенсы разъехались отдыхать, я их заменяю, но мысли человека находящегося хрен знает где я читать не умею. <_<

Местами здесь.
 

CHLSNДата: Суббота, 25 Декабря 2010, 18:27:30 | Сообщение # 11
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Dreii, ладно, фиг с ним с таймером, но всё равно это проблему не решает, потому что вылетает с ошибкой.
Quote (Dreii)
CHLSN, а че вообще нужно было сделать?)))

Написал же

Добавлено (25-12-2010, 18:26)
---------------------------------------------
EdiTTORR, cJass при сохранении карты добавляет и local и set и прочую лабуду автоматически.

Добавлено (25-12-2010, 18:27)
---------------------------------------------
<_<




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

EdiTTORRДата: Суббота, 25 Декабря 2010, 18:28:26 | Сообщение # 12
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
CHLSN, я имел в виду что ты не написал ни одного слова о том что это cJass *****. <_<

Местами здесь.


Сообщение отредактировал EdiTTORR - Суббота, 25 Декабря 2010, 18:28:43
 

CHLSNДата: Суббота, 25 Декабря 2010, 18:31:53 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
EdiTTORR, Т_Т cJass не cJass, разница только во внешнем виде. Закрыли флуд.



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

EdiTTORRДата: Суббота, 25 Декабря 2010, 18:42:24 | Сообщение # 14
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
CHLSN, ну ты и ******. Я имел в виду что В пЕрВоМ пОсТе Не УкАзАнО чТо ЭтО cJASS. Ты надеялся что я отличу тебя от нуба и угадаю что это cJass?

Местами здесь.
 

IlgardIoДата: Суббота, 25 Декабря 2010, 18:45:32 | Сообщение # 15
3 уровень
Группа: Пользователи
Сообщений: 57
Награды: 0
Репутация: 11
Блокировки:
http://ifolder.ru/21014602

Добавлено (25-12-2010, 18:45)
---------------------------------------------
Не читал посты выше и не увидел что надо cJass зделал на Jass <_<

 

CHLSNДата: Суббота, 25 Декабря 2010, 18:48:58 | Сообщение # 16
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Большая просьба тупо кинуть код в тему, а не ссылку на карту на файлообменнике, умоляю Вас.



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

DreiiДата: Суббота, 25 Декабря 2010, 18:59:37 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (CHLSN)
Большая просьба тупо кинуть код в тему, а не ссылку на карту на файлообменнике, умоляю Вас.

Code
function Delete takes nothing returns nothing
local timer t=GetExpiredTimer()
local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),1)
call RemoveUnit(u)
call DestroyTimer(t)
set t = null
set u = null
endfunction
function Trig_trg_Actions takes nothing returns nothing
local unit u = GetEventDamageSource()
local unit a = GetTriggerUnit()
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local player p = GetOwningPlayer(u)
local unit d
local timer t = CreateTimer()
if IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(a, UNIT_TYPE_MECHANICAL) == false and UnitHasBuffBJ(a,'Bcrs') == false and IsPlayerEnemy(GetOwningPlayer(a), GetOwningPlayer(u)) == true  then
set d = CreateUnit(p,'e000',x,y,0)
call IssueTargetOrder( d, "curse", a )
call SaveUnitHandle(udg_Hash,GetHandleId(t),1,d)
call TimerStart(t,2,false,function Delete)
set d = null
endif
set t = null
set p = null
set u = null
set a = null
endfunction

//===========================================================================
function InitTrig_trg takes nothing returns nothing
     set gg_trg_trg = CreateTrigger(  )
     call TriggerAddAction( gg_trg_trg, function Trig_trg_Actions )
endfunction

Добавлено (25-12-2010, 18:59)
---------------------------------------------
CHLSN, в ините

Code
set udg_Hash=InitHashtable()

Действие: Отряд - выбрать каждого юнита в зоне Игровая карта
Триггер - Добавить к trg <gen> Боевая еденица(Выбранный юнит) Получает урон


 

IlgardIoДата: Суббота, 25 Декабря 2010, 18:59:43 | Сообщение # 18
3 уровень
Группа: Пользователи
Сообщений: 57
Награды: 0
Репутация: 11
Блокировки:
Code
//===========================================================================
function Trig_trg_Actions takes nothing returns nothing
local unit u = GetEventDamageSource()
local unit a = GetTriggerUnit()
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local player p = GetOwningPlayer(u)
local unit d
local timer t = CreateTimer()
if IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(a, UNIT_TYPE_MECHANICAL) == false and UnitHasBuffBJ(a,'Bcrs') == false and IsPlayerEnemy(GetOwningPlayer(a), GetOwningPlayer(u)) == true  then
set d = CreateUnit(p,'e000',x,y,0)
call IssueTargetOrder( d, "curse", a )
call UnitApplyTimedLife(d,'BTLF',2)
set d = null
endif
set t = null
set p = null
set u = null
set a = null
endfunction

//===========================================================================
function InitTrig_trg takes nothing returns nothing
     set gg_trg_trg = CreateTrigger(  )
     call TriggerAddAction( gg_trg_trg, function Trig_trg_Actions )
endfunction

При инициализации пикай всех юнитов и добовляй выбранных юнитов к событию "Боевая еденица - получает урон" Так же при создании новых тоже добовляй.
 

DreiiДата: Суббота, 25 Декабря 2010, 18:59:53 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
CHLSN, это код с
Quote (IlgardIo)
http://ifolder.ru/21014602


 

CHLSNДата: Суббота, 25 Декабря 2010, 19:04:05 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (IlgardIo)
При инициализации пикай всех юнитов и добовляй выбранных юнитов к событию "Боевая еденица - получает урон" Так же при создании новых тоже добовляй.

+100500 юнитов за всю игру. Лагать не будет?




Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

IlgardIoДата: Суббота, 25 Декабря 2010, 19:07:52 | Сообщение # 21
3 уровень
Группа: Пользователи
Сообщений: 57
Награды: 0
Репутация: 11
Блокировки:
Quote (CHLSN)
+100500 юнитов за всю игру. Лагать не будет?

А подчищать юнитов не учили? Создай группу. Добовляй туда юнитов. Делай проверку есть выбранный юнит там или нет(по необходимости если не хочеш парится добовлять после каждого созданного юнита. Тупо переодическим событием) Юнит умирает, удаляем из группы.И всё будет нормально.По мне так лучше лок тригеров.
 

CHLSNДата: Суббота, 25 Декабря 2010, 19:13:42 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
IlgardIo, события-то не удаляются



Я в контакте и на warcraft3ft.info.
Кто может сказать, почему **** дизайнер писал вместо "pt" "px" в CSS, благодаря чему нужно смотреть форум через лупу с Ctrl++?
 

EdiTTORRДата: Суббота, 25 Декабря 2010, 19:40:25 | Сообщение # 23
8 уровень
Группа: Проверенные
Сообщений: 585
Награды: 0
Репутация: 147
Блокировки:
CHLSN, юзай тогда таймер.

Местами здесь.
 

IlgardIoДата: Суббота, 25 Декабря 2010, 19:42:09 | Сообщение # 24
3 уровень
Группа: Пользователи
Сообщений: 57
Награды: 0
Репутация: 11
Блокировки:
CHLSN,
Создать переменную Hash типо хеш-таблица
Code
function F3 takes nothing returns nothing
local timer Tmr = GetExpiredTimer()
     local trigger Trg = LoadTriggerHandle(udg_Hash, GetHandleId(Tmr), 1)
     call FlushChildHashtable(udg_Hash, GetHandleId(Tmr))
     call DestroyTimer(Tmr)
     set Tmr = null
     call DestroyTrigger(Trg)
     set Trg = null
endfunction
//===========================================================================
function F2 takes nothing returns nothing
local unit u = GetEventDamageSource()
local unit a = GetTriggerUnit()
local real x = GetUnitX(a)
local real y = GetUnitY(a)
local player p = GetOwningPlayer(u)
local unit d
local timer t = CreateTimer()
if IsUnitType(u, UNIT_TYPE_MECHANICAL) == false and IsUnitType(a, UNIT_TYPE_MECHANICAL) == false and UnitHasBuffBJ(a,'Bcrs') == false and IsPlayerEnemy(GetOwningPlayer(a), GetOwningPlayer(u)) == true  then
set d = CreateUnit(p,'e000',x,y,0)
call IssueTargetOrder( d, "curse", a )
call UnitApplyTimedLife(d,'BTLF',2)
set d = null
endif
set t = null
set p = null
set u = null
set a = null
endfunction
//===========================================================================
function Trig_trg2_Actions takes nothing returns nothing
local trigger Trg = CreateTrigger()
local timer Tmr = CreateTimer()
call TriggerRegisterUnitEvent(Trg, GetTriggerUnit(), EVENT_UNIT_DAMAGED)
call TriggerAddAction(Trg, function F2)
call SaveTriggerHandle(udg_Hash, GetHandleId(Tmr), 1, Trg)
call TimerStart(Tmr, 7, false, function F3)
set Trg = null
set Tmr = null
endfunction

//===========================================================================
function InitTrig_trg2 takes nothing returns nothing
     set gg_trg_trg2 = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_trg2, EVENT_PLAYER_UNIT_ATTACKED )
     call TriggerAddAction( gg_trg_trg2, function Trig_trg2_Actions )
endfunction

При инициализации
Code
set udg_Hash=InitHashtable()
 

SirNikolasДата: Воскресенье, 26 Декабря 2010, 11:31:50 | Сообщение # 25
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
IlgardIo, во-первых, в функции F2 ты создаешь таймер, и, если условие ложно, не удаляешь его. А во-вторых, лишняя локальная переменная Trg в F3.

 

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

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