Проверьте код новичка
|
|
-
Nevermore | Дата: Суббота, 07-01-2012, 13:56:00 | Сообщение # 1 |
GUI IMBA
загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
|
Вот код спелла из доты Nevermore Shadow Fiend способность Shawodraze, когда я использую способность она просто не действует
Code function TrigShadowraze200_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'AUtc' endfunction
function TrigShadowraze200_Actions takes nothing returns nothing local unit Shadowraze = GetSpellAbilityUnit () local location Loc local real x1 = GetLocationX(Loc) + 200 * Cos(GetUnitFacing(Shadowraze)) local real y1 = GetLocationX(Loc) + 200 * Sin(GetUnitFacing(Shadowraze)) set Loc = Location(x1,y1) call SaveUnitHandle(udg_hash, 2 , 2 , Shadowraze) call SaveLocationHandle(udg_hash, 4, 4, Loc) call SaveReal(udg_hash , 5 , 5 , x1) call SaveReal(udg_hash , 6 , 6 , y1) call CreateUnit (GetOwningPlayer(LoadUnitHandle(udg_hash, 2, 2)), 'h000' ,LoadReal(udg_hash,5 ,5),LoadReal(udg_hash , 6, 6), bj_UNIT_FACING) call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 1.00 ) call IssueImmediateOrder( bj_lastCreatedUnit, "thunderclap" ) call RemoveLocation(LoadLocationHandle(udg_hash , 4 , 4)) set Shadowraze = null endfunction
//=========================================================================== function InitTrig_Shadowraze_200 takes nothing returns nothing local trigger Shadowraze200 = CreateTrigger( ) local integer SW200 = 0 loop call TriggerRegisterPlayerUnitEvent( Shadowraze200, Player(SW200), EVENT_PLAYER_UNIT_SPELL_EFFECT, null ) exitwhen SW200 == 15 set SW200 = SW200 + 1 endloop call TriggerAddCondition( Shadowraze200, Condition( function TrigShadowraze200_Conditions ) ) call TriggerAddAction( Shadowraze200, function TrigShadowraze200_Actions ) endfunction
|
| | |
-
wetalq | Дата: Суббота, 07-01-2012, 14:12:32 | Сообщение # 2 |
Король Мёртвых
загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
|
Nevermore, зачем сохранять данные в хеш таблицу, а потом их выгружать в пределах одной функции ?
Code call CreateUnit (GetOwningPlayer(LoadUnitHandle(udg_hash, 2, 2)), 'h000' ,LoadReal(udg_hash,5 ,5),LoadReal(udg_hash , 6, 6), bj_UNIT_FACING) call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 1.00 ) call IssueImmediateOrder( bj_lastCreatedUnit, "thunderclap" )
это не правельно, надо так:
Code local unit u set u = CreateUnit (GetOwningPlayer(Shadowraze), 'h000' ,x1,y1, bj_UNIT_FACING) call UnitApplyTimedLife( u, 'BTLF', 1.00 ) call IssueImmediateOrder( u, "thunderclap" )
Объявлять переменную типа Location не нужно) все можно сделать на координатах
А теперь функция SaveReal(хеш таблица, id таймера юнита или другого объекта, номер ячейки в таблице от 0 до 8096 вроде, переменная которую нужно сохранить)
Покупка предметов через способность
|
| | |
-
Nevermore | Дата: Суббота, 07-01-2012, 15:31:09 | Сообщение # 3 |
GUI IMBA
загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
|
wetalq,
все поправил но юнит не создается и не создовался почему-то
Code Объявлять переменную типа Location не нужно) все можно сделать на координатах
а че тогда здесь ставить
Quote local real y1 = GetLocationX(source) + 200 * Sin(GetUnitFacing(Shadowraze))
|
| | |
-
wetalq | Дата: Суббота, 07-01-2012, 17:07:48 | Сообщение # 4 |
Король Мёртвых
загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
|
Quote (Nevermore) а че тогда здесь ставить
local real x1 = GetUnitX(Shadowraze) + 200 * Sin(GetUnitFacing(Shadowraze)) local real y1 = GetUnitY(Shadowraze) + 200 * Sin(GetUnitFacing(Shadowraze))
Quote (Nevermore) все поправил но юнит не создается и не создовался почему-то
Quote (Nevermore) local real x1 = GetLocationX(Loc) + 200 * Cos(GetUnitFacing(Shadowraze)) local real y1 = GetLocationY(Loc) + 200 * Sin(GetUnitFacing(Shadowraze))
а ты присваиваешь координате у, значения от координаты х
Покупка предметов через способность
|
| | |
-
wetalq | Дата: Суббота, 07-01-2012, 17:37:14 | Сообщение # 5 |
Король Мёртвых
загрузка наград ...
Группа: V.I.P.
Сообщений: 1263
Репутация: 1572
Статус: Не на сайте
|
Quote (Nevermore) local real x1 = GetLocationX(Loc) + 200 * Cos(GetUnitFacing(Shadowraze))
еще вспомнил, функция Cos берет значения в радианах, а в твоем случае ты даешь значения в градусах)
нужно градусы умножить на bj_DEGTORAD и значения с градусов станет в радианах
Code local real x1 = GetLocationX(Loc) + 200 * Cos(GetUnitFacing(Shadowraze) * bj_DEGTORAD)
Покупка предметов через способность
|
| | |
-
Nevermore | Дата: Суббота, 07-01-2012, 20:21:39 | Сообщение # 6 |
GUI IMBA
загрузка наград ...
Группа: Проверенные
Сообщений: 210
Репутация: 338
Статус: Не на сайте
|
зделал но юнит появляется в разных местах первый раз когда делаю спелл там где надо 2 раз уже в левом месте что опять не так?)Добавлено (07/01/2012, 20:19:55) --------------------------------------------- о я не видел что ты карту прикрепил Добавлено (07/01/2012, 20:21:39) --------------------------------------------- во теперь все доперло
|
| | |
-
$eni0r | Дата: Четверг, 19-01-2012, 13:57:33 | Сообщение # 7 |
Ополченец
загрузка наград ...
Группа: Пользователи
Сообщений: 61
Репутация: 98
Статус: Не на сайте
|
Скачай мой спелл, не конфликтует__Добавлено (19/01/2012, 13:57:33) --------------------------------------------- В моем функций больше, но там проще без трудных вычислений и без дополнительных спеллов со строкой thunderclap
|
| | |