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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Немного не срабатывает спелл (на jass'е)
Немного не срабатывает спелл
CHLSNДата: Воскресенье, 23 Августа 2009, 16:25:35 | Сообщение # 1
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
function Trig_Demo_Cast takes nothing returns nothing
---call IssueTargetOrderBJ( udg_CastTargetUnit, "cripple", GetEnumUnit() )
endfunction

...
set i[3] = 1
set i[4] = GetUnitAbilityLevelSwapped(udg_Spells, c) + 1
set i[1] = 1
set i[2] = 20
loop
---exitwhen i[1] > i[2]
---loop
------exitwhen i[3] > i[4]
------set udg_CastTargetUnit = x[i[3]]
------call ForGroupBJ( GetUnitsInRangeOfLocAll(256.00, GetUnitLoc(x[i[3]])), function Trig_Demo_Cast )
------call IssuePointOrderLocBJ( x[i[3]], "move", PolarProjectionBJ(GetUnitLoc(u), GetRandomReal(200.00, 400.00), GetRandomDirectionDeg()) )
------set i[3] = i[3] + 1
---endloop
---call TriggerSleepAction( 1.00 )
---set i[1] = i[1] + 1
---set i[3] = 1
endloop

Не всегда кастуется заклинание. Может можно сделать лучше, чтобы утечек не было?




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

windrunnerДата: Воскресенье, 23 Августа 2009, 16:41:59 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
Во 1 убери BJ
Во вторых покажи пожайлуста весь триггер(начало) к примеру можно заменить все глобалки локальными(они могут поправить етот глюк) у нас уже такую ошибку исправили локалки=)


И в правду мир сошел с ума...
И до тех пор пока нас не обесточат
Пока не догорит аварийных фонарей заряд
Мы будем жечь тут электричество что есть мочи
Русский мапмейкинг - бессмысленный и беспощадный.xD
 

CHLSNДата: Воскресенье, 23 Августа 2009, 16:51:13 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (windrunner)
Во вторых покажи пожайлуста весь триггер(начало) к примеру можно заменить все глобалки локальными(они могут поправить етот глюк) у нас уже такую ошибку исправили локалки=)

Там "udg_CastTargetUnit" - единственная глобалка, которая используется. Остальное локальные.
В начале создаются через цикл - в конце удаляются, и всё

Добавлено (23-08-2009, 16:51)
---------------------------------------------
windrunner, без BJ вообще нихрена не работает =\




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

[DUОS]Дата: Воскресенье, 23 Августа 2009, 18:53:30 | Сообщение # 4
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
CHLSN,
Сейчас посмотрим, что можно здесь сделать :)


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

ЭллесарДата: Воскресенье, 23 Августа 2009, 19:00:26 | Сообщение # 5
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (CHLSN)
---call IssueTargetOrderBJ( udg_CastTargetUnit, "cripple", GetEnumUnit() )

эт че


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:04:16 | Сообщение # 6
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Вместо PolarProjectionBJ используй векторы или координаты. Оно быстрее будет работать.А пока бажный немного код.
BJ разверни при помощи JASSCraft.

Добавлено (23-08-2009, 19:04)
---------------------------------------------

Quote (Эллесар)
Quote (CHLSN)
---call IssueTargetOrderBJ( udg_CastTargetUnit, "cripple", GetEnumUnit() )

эт че


Эллесар,
Действительно, зачем здесь БЖ когда можно нативку:
Code
native IssueTargetOrder             takes unit whichUnit, string order, widget targetWidget returns boolean

Вообще, что подразумевалось здесь под Х?


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

MaSerДата: Воскресенье, 23 Августа 2009, 19:04:33 | Сообщение # 7
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (CHLSN)
---call TriggerSleepAction( 1.00 )

Quote (CHLSN)
------call ForGroupBJ( GetUnitsInRangeOfLocAll(256.00, GetUnitLoc(x[i[3]])), function Trig_Demo_Cast )

Quote (CHLSN)
--call IssueTargetOrderBJ( udg_CastTargetUnit, "cripple", GetEnumUnit() )

Ошибки в этих строках, вернее, они с ними связаны.




Сообщение отредактировал MaSer - Воскресенье, 23 Августа 2009, 19:04:50
 

ЭллесарДата: Воскресенье, 23 Августа 2009, 19:07:25 | Сообщение # 8
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Можно полярки, потому что 2d.
Так вот что

IssueTargetOrder( whichUnit, order, targetWidget ) юзай

Во вторых у тебя там цикл, выбирает каждого юнита и кастают. так это происходит мгновенно, и как твой паладин успеет все это сделать ? =/

Добавлено (23-08-2009, 19:07)
---------------------------------------------
О кот вернулся)


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:09:14 | Сообщение # 9
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
MaSer,
Если точнее, то, по-моему, не был задан "х". Вот проблемный код:
Quote (CHLSN)
x[i[3]]


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

ЭллесарДата: Воскресенье, 23 Августа 2009, 19:09:15 | Сообщение # 10
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (MaSer)
---call TriggerSleepAction( 1.00

Одна из самых кривых функций =/


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:10:27 | Сообщение # 11
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Эллесар,
Quote (Эллесар)
Quote (MaSer)
---call TriggerSleepAction( 1.00

Одна из самых кривых функций =/

Можно и PolledWait заюзать.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

MaSerДата: Воскресенье, 23 Августа 2009, 19:11:15 | Сообщение # 12
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (Эллесар)
Одна из самых кривых функций =/

Она нисколько не кривая в отличии от PolledWait
Quote (|DUОS|)
Если точнее, то, по-моему, не был задан "х". Вот проблемный код:

Да плевать нам на х, Зет уже объяснил основную траблу.


 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:14:12 | Сообщение # 13
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (MaSer)
Она нисколько не кривая в отличии от PolledWait

MaSer,
Начинка говорит сама за себя.

Добавлено (23-08-2009, 19:14)
---------------------------------------------

Quote (MaSer)
---call TriggerSleepAction( 1.00 )

Нативки не могут быть кривыми!


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

MaSerДата: Воскресенье, 23 Августа 2009, 19:15:56 | Сообщение # 14
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (|DUОS|)
Нативки не могут быть кривыми!

Лол. Хотя ты прав. Нативки могут быть НЕПОПРАВИМО кривыми.


 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:17:39 | Сообщение # 15
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
MaSer,
Лол. Не поверю, пока не увижу :) Покажи мне начинку хоть одной native.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

ЭллесарДата: Воскресенье, 23 Августа 2009, 19:19:38 | Сообщение # 16
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (|DUОS|)
Нативки не могут быть кривыми!

Сделай тест. это "хлебные часы", всегда неточные.

например сделаем таймер в 0.10 сек который прибовляет

set TimeGame = TimeGame + 1

function test takes nothing returns nothing
call TriggerSleepAction(0.10)
set TimeGame = TimeGame +1
call test()
endfunction

и проверь разницу во времяни... это уже обсуждалось =/


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:21:07 | Сообщение # 17
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Чтобы не было оффтопа, покажи, чем начинена именно TriggerSleepAction()

Добавлено (23-08-2009, 19:21)
---------------------------------------------
Эллесар,
Всё, сорри за оффтоп.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

MaSerДата: Воскресенье, 23 Августа 2009, 19:21:53 | Сообщение # 18
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (|DUОS|)
Чтобы не было оффтопа, покажи, чем начинена именно TriggerSleepAction()

Процессорным временем ) На самом деле реализация нормального вейта на сях далеко не тривиальна, так что неудивителен результат.


 

[DUОS]Дата: Воскресенье, 23 Августа 2009, 19:25:19 | Сообщение # 19
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
MaSer,
Quote (MaSer)
На самом деле реализация нормального вейта на сях далеко не тривиальна, так что неудивителен результат.
Ну, выбирать не приходится, кроме как вообще его не юзать ^_^


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

CHLSNДата: Воскресенье, 23 Августа 2009, 20:03:08 | Сообщение # 20
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (MaSer)
---call TriggerSleepAction( 1.00 )

Здесь всё работает шикарно, потому что даммики исправно перемещаются:
Quote (CHLSN)
------call IssuePointOrderLocBJ( x[i[3]], "move", PolarProjectionBJ(GetUnitLoc(u), GetRandomReal(200.00, 400.00), GetRandomDirectionDeg()) )

Добавлено (23-08-2009, 19:47)
---------------------------------------------

Quote (MaSer)
------call ForGroupBJ( GetUnitsInRangeOfLocAll(256.00, GetUnitLoc(x[i[3]])), function Trig_Demo_Cast )

Quote (MaSer)
--call IssueTargetOrderBJ( udg_CastTargetUnit, "cripple", GetEnumUnit() )

С BJ или без нее - не работает

Quote (Эллесар)
Во вторых у тебя там цикл, выбирает каждого юнита и кастают. так это происходит мгновенно, и как твой паладин успеет все это сделать ? =/

Это же комп. Почему бы ему не успевать всё это сделать? Пробую паузить немного

Добавлено (23-08-2009, 20:02)
---------------------------------------------
function Trig_Demo_Cast takes nothing returns nothing
---//call IssueTargetOrder( udg_CastTargetUnit, "curse", GetEnumUnit() )
---call CreateNUnitsAtLoc( 1, 'n601', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetUnitLoc(GetSpellTargetUnit()), GetRandomReal(200.00, 400.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
---call IssueTargetOrder( GetLastCreatedUnit(), "curse", GetEnumUnit() )
---call TriggerSleepAction( 0.10 )
---call RemoveUnit( GetLastCreatedUnit() )
endfunction

function Trig_Demo_Actions takes nothing returns nothing
---local unit array x
---local unit u = GetSpellTargetUnit()
---local unit c = GetSpellAbilityUnit()
---local integer array i
---set udg_Spells = GetSpellAbilityId()
---if ( udg_Spells == 'A601' ) then
------set bj_forLoopAIndex = 1
------set bj_forLoopAIndexEnd = GetUnitAbilityLevelSwapped(udg_Spells, c) + 1
------loop
------------exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
------------call CreateNUnitsAtLoc( 1, 'n600', GetOwningPlayer©, PolarProjectionBJ(GetUnitLoc(u), GetRandomReal(200.00, 400.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
------------set x[bj_forLoopAIndex] = GetLastCreatedUnit()
------------set bj_forLoopAIndex = bj_forLoopAIndex + 1
------endloop
------set i[3] = 1
------set i[4] = GetUnitAbilityLevelSwapped(udg_Spells, c) + 1
------set i[1] = 1
------set i[2] = 20
------loop
---------exitwhen i[1] > i[2]
---------loop
------------exitwhen i[3] > i[4]
------------//set udg_CastTargetUnit = x[i[3]]
------------call ForGroup( GetUnitsInRangeOfLocAll(256.00, GetUnitLoc(x[i[3]])), function Trig_Demo_Cast )
------------call IssuePointOrderLoc( x[i[3]], "move", PolarProjectionBJ(GetUnitLoc(u), GetRandomReal(200.00, 400.00), GetRandomDirectionDeg()) )
------------set i[3] = i[3] + 1
---------endloop
---------call TriggerSleepAction( 1.00 )
---------set i[1] = i[1] + 1
---------set i[3] = 1
------endloop
------loop
---------exitwhen i[3] > i[4]
---------call RemoveUnit( x[i[3]] )
---------set i[3] = i[3] + 1
------endloop
---else
---endif
---set x[1] = null
---set x[2] = null
---set x[3] = null
---set x[4] = null
---set u = null
---set c = null
---set udg_CastTargetUnit = null
endfunction

//===========================================================================
function InitTrig_Cast takes nothing returns nothing
---set gg_trg_Cast = CreateTrigger( )
---call TriggerRegisterAnyUnitEventBJ( gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
---call TriggerAddAction( gg_trg_Cast, function Trig_Demo_Actions )
endfunction

Добавлено (23-08-2009, 20:03)
---------------------------------------------
Не работает




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

[DUОS]Дата: Понедельник, 24 Августа 2009, 01:25:15 | Сообщение # 21
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
CHLSN,
PolarProjectionBJ - ну смени же ты её, тебе 3 варианта дали! :)


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

CHLSNДата: Понедельник, 24 Августа 2009, 01:39:44 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
[DUОS], *****!!! При чем здесь PolarProjectionBJ!? Говорю: НЕ КАСТУЕТ ЗАКЛИНАНИЕ



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

ЭллесарДата: Понедельник, 24 Августа 2009, 13:08:16 | Сообщение # 23
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
Quote (CHLSN)
Это же комп. Почему бы ему не успевать всё это сделать? Пробую паузить немного

Потому что эта функция задаёт приказ юниту. а на приказ нужно время)

В цикли создавай юниты и давай им приказ )


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE
 

CHLSNДата: Понедельник, 24 Августа 2009, 13:28:10 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 1627
Награды: 0
Репутация: 132
Блокировки:
Quote (Эллесар)
В цикли создавай юниты и давай им приказ )

Quote (CHLSN)
function Trig_Demo_Cast takes nothing returns nothing
---//call IssueTargetOrder( udg_CastTargetUnit, "curse", GetEnumUnit() )
---call CreateNUnitsAtLoc( 1, 'n601', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetUnitLoc(GetSpellTargetUnit()), GetRandomReal(200.00, 400.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
---call IssueTargetOrder( GetLastCreatedUnit(), "curse", GetEnumUnit() )
---call TriggerSleepAction( 0.10 )
---call RemoveUnit( GetLastCreatedUnit() )
endfunction

Не это ли разве?




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

ЭллесарДата: Понедельник, 24 Августа 2009, 13:47:14 | Сообщение # 25
DeMoN
Группа: Ветераны
Сообщений: 934
Награды: 1
Репутация: 210
Блокировки:
CHLSN

local unit u = GetEnumUnit()
local unit U = CreateUnit(GetOwningPlayer(GetSpellAbilityUnit()),'n601',GetUnitX(u),GetUnitY(u),0)
call IssueTargetOrder(U,"curse",u)
call UnitApplyTimedLife(U, 'BTLF', 4)
set u = null
set U = null


база паролей: https://yadi.sk/d/mdDhWuvPcTSKw
бекап сайта от 26.12.2010 https://yadi.sk/d/L3xNpibbiHpYE


Сообщение отредактировал Эллесар - Понедельник, 24 Августа 2009, 13:48:39
 

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

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