Проверьте код новичка - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Strateg, Melissa  
Проверьте код новичка
-
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))


а ты присваиваешь координате у, значения от координаты х


Покупка предметов через способность
Прикрепления: Nevermore_by_we.w3x (17.4 Kb)
 
-
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)
---------------------------------------------
во теперь все доперло smile

 
-
$eni0rДата: Четверг, 19-01-2012, 13:57:33 | Сообщение # 7
Ополченец

загрузка наград ...
Группа: Пользователи
Сообщений: 61
Репутация: 98
Статус: Не на сайте
Скачай мой спелл, не конфликтует__

Добавлено (19/01/2012, 13:57:33)
---------------------------------------------
В моем функций больше, но там проще без трудных вычислений и без дополнительных спеллов со строкой thunderclap


 
  • Страница 1 из 1
  • 1
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта
chat