XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Zahanc

offline
Опыт: 23,017
Активность:
Не могу найти ошибку в коде
Код:
globals
    unit g_Caster = null
    effect g_Wave = null
endglobals

function Trig_FastAttack_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A60A'
endfunction

function FastAttackEnd takes nothing returns nothing
    call DisplayTextToForce( GetPlayersAll(), "fkkj" )
    call DestroyEffectBJ(g_Wave)
    call SetUnitMoveSpeed( g_Caster, GetUnitDefaultMoveSpeed(g_Caster) )
    //call UnitRemoveAbilityBJ( 'Aloc', g_Caster )
    call SetUnitPathing( g_Caster, true )
    set g_Caster = null
    set g_Wave = null
    call DestroyTimer(GetExpiredTimer())
endfunction

function Trig_FastAttack_Actions takes nothing returns nothing
    local location Target
    set Target = GetSpellTargetLoc()
    set g_Caster = GetSpellAbilityUnit()
    call SetUnitMoveSpeed( g_Caster, 522 )
    //call UnitAddAbilityBJ( 'Aloc', g_Caster )
    call SetUnitPathing( g_Caster, false )
    call TimerStart(CreateTimer(), (DistanceBetweenPoints(GetUnitLoc(g_Caster), Target) / 522 ), false, function FastAttackEnd )
    call IssuePointOrderLocBJ( g_Caster, "move", Target )
    call AddSpecialEffectTargetUnitBJ( "origin", g_Caster, "Abilities\\Spells\\Orc\\Shockwave\\ShockwaveMissile.mdl" )
    set g_Wave = GetLastCreatedEffectBJ()
    call RemoveLocation(Target)
    set Target = null
endfunction

//===========================================================================
function InitTrig_FastAttack takes nothing returns nothing
    set gg_trg_FastAttack = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_FastAttack, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_FastAttack, Condition( function Trig_FastAttack_Conditions ) )
    call TriggerAddAction( gg_trg_FastAttack, function Trig_FastAttack_Actions )
endfunction


В этом коде есть ошибка, не дающая запустится карте. Скорее всего она находится в таймере или каким-то образом связана с globals. Я пришел к такому выводу, поочередно вкл.\выкл. разные строки и функции. Однако Syntax Check никаких ошибок не находит. точнее находит, но он её находит во всех триггерах, вне зависимости от того работают они или нет. Необъявленая переменная gg_trg_FastAttack.

Отредактировано bladget, 24.12.2010 в 03:03.
Старый 21.12.2010, 21:16
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
bladget:
set Target = GetSpellTargetLoc()
а где ты эту переменную объявляешь? Какого она типа?
Старый 22.12.2010, 00:43
JimALIEN
вдупляет sc2 editor
offline
Опыт: 7,176
Активность:
лока норм, объявлена... А вот у глобалок вроде префикс udg_ а не g_, и объявляюца они в самом начале нестандартного кода. Хотя мб я чегото не знаю... Кстате обнуление локации не удаляет ее, плюс утечка локации - позиции кастера
Старый 22.12.2010, 06:01
Nekit1234007

offline
Опыт: 11,916
Активность:
this->Очень частые ошибки, выдаваемые JNGP.
Старый 22.12.2010, 08:13
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
JimALIEN:
А вот у глобалок вроде префикс udg_ а не g_
У него g_ идет как часть имени..префикс udg_ это стандартные глобалки, созданные через ctrl+B (кнопка Variables)
Vampirrr добавил:
и глобалс таки перенеси в корень триггеров, что б наверняка
Старый 22.12.2010, 09:10
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Vampirr:
и глобалс таки перенеси в корень триггеров, что б наверняка
не имеет значения, так как все объявленные глобалки переносятся джассхелпером в начало кода (до функций).
bladget:
В этом коде есть ошибка, не дающая запустится карте.
Необъявленая переменная gg_trg_FastAttack.
Собственно, отвечаешь сам.
Префикс gg_trg_ обозначает Global Generated Trigger, глобалку, создающуюся автоматически при создании триггера. Если у тебя нет триггера, названного FastAttack, то будет ругаться. Можно либо создать триггер (ctrl+t) с названием FastAttack и вставить туда вышеуказанный код, а можно написать нормальный код и не париться насчет утечек, отсутствующих названий и прочего.
Старый 22.12.2010, 10:37
Zahanc

offline
Опыт: 23,017
Активность:
Цитата:
Сообщение от JimALIEN
Кстате обнуление локации не удаляет ее, плюс утечка локации - позиции кастера


как это исправить?

Цитата:
Сообщение от JimALIEN
А вот у глобалок вроде префикс udg_ а не g_


я уже делал подобное и все работало.

Цитата:
Сообщение от Nekit1234007
this->Очень частые ошибки, выдаваемые JNGP.


не знаю в чем дело, но у меня JNGP при сохранении код не проверяет, приходится юзать чек. наверно в опциях что-то неправильно поставил. вечером гляну.

Цитата:
Сообщение от ShadoW DaemoN
Необъявленая переменная gg_trg_FastAttack.
Собственно, отвечаешь сам.


Цитата:
Сообщение от bladget
он её находит во всех триггерах, вне зависимости от того работают они или нет.


триггер с таким названием есть, и в него запихан код.

Цитата:
Сообщение от ShadoW DaemoN
можно написать нормальный код и не париться насчет утечек


создать нормальный код проблематично, ибо jass для меня темный лес
Старый 22.12.2010, 14:43
Nekit1234007

offline
Опыт: 11,916
Активность:
bladget:
JNGP при сохранении код не проверяет
Кириллица в пути.
Старый 22.12.2010, 14:47
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
bladget:
Кстате обнуление локации не удаляет ее, плюс утечка локации - позиции кастера

как это исправить?
RemoveLocation(loc) удаление
loc = null обнуление
Старый 22.12.2010, 14:56
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
как это исправить?
RemoveLocation(loc) перед обнулением.
Для проверки правильности кода не следует использовать Syntax Check(он работает неправильно), просто пересохраните карту
У меня такие настройки:
Миниатюры
Кликните на картинку для увеличения
Название:  untitled_49.jpg
Просмотров: 37
Размер:  56.8 Кбайт  
Старый 22.12.2010, 14:59
Zahanc

offline
Опыт: 23,017
Активность:
Цитата:
Сообщение от Nekit1234007
Кириллица в пути.


да вроде нет нигде кириллицы...

Hellfim,

хм, все-равно не проверяет.
Старый 22.12.2010, 15:08
Zahanc

offline
Опыт: 23,017
Активность:
Проблема постала следующим образом: триггер не работает только в кампании, в отдельной карте все работает, (если не принимать во внимание убогость кода, но это отдельный вопрос) почему?
Старый 24.12.2010, 03:06
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Хз. Юзаешь скорповский Campaign Builder? Он лежит в последнем JNGP на сайте.
Старый 24.12.2010, 03:38
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:54.