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

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

Ответ
 
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Игра вылетает.
У меня в карте есть руны(предметы) при получении которых герой получает заклинание или повышает его уровень.
Все руны при покупке работают нормально, кроме одной из за которыой игра вылетает с черным экраном без ошибки. Из за чего?
Код вот
Код:
function Trig_LearnSkills_Sorceress_Conditions takes nothing returns boolean
    return GetUnitTypeId(GetTriggerUnit()) == 'H002' 
endfunction


function Trig_LearnSkills_Sorceress_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local string s
local integer i
    if GetItemTypeId(GetManipulatedItem()) == 'I004' then //Фаерболл
        if GetUnitAbilityLevel(u,'A00F')<=19 then
            call SetUnitAbilityLevel(u,'A00F',GetUnitAbilityLevel(u,'A00F')+1)
        elseif GetUnitAbilityLevel(u,'A00F')==20 then
            call DisplayTextToPlayer(GetOwningPlayer(u), 0, 0,"Максимальный уровень способности!")
            return
        endif    
        set s = GetObjectName('A00F')
        set i = GetUnitAbilityLevel(u,'A00F')
    endif
////////////////////
// тут порядка еще 10 таких условий
///////////////////////////////
    if GetItemTypeId(GetManipulatedItem()) == 'I02G' then //Ледяной шип
        if GetUnitAbilityLevel(u,'A040')==0 then
            call UnitAddAbility (u,'A042')
            call SetPlayerAbilityAvailable(GetOwningPlayer(u),'A042',false)
        elseif GetUnitAbilityLevel(u,'A040')<=19 then
            call SetUnitAbilityLevel(u,'A040',GetUnitAbilityLevel(u,'A040')+1)
        elseif GetUnitAbilityLevel(u,'A040')==20 then
            call DisplayTextToPlayer(GetOwningPlayer(u), 0, 0,"Максимальный уровень способности!")
            return
        endif
        set s = GetObjectName('A040')
        set i = GetUnitAbilityLevel(u,'A040')
    endif
///////////////////////////////
call DisplayTextToPlayer(GetOwningPlayer(u), 0, 0,"Изучено " + s + " уровень "+I2S(i))
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIsm\\AIsmTarget.mdl",u,"origin"))
set u = null
endfunction

//===========================================================================
function InitTrig_LearnSkills_Sorceress takes nothing returns nothing
    set gg_trg_LearnSkills_Sorceress = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_LearnSkills_Sorceress, EVENT_PLAYER_UNIT_PICKUP_ITEM )
    call TriggerAddCondition( gg_trg_LearnSkills_Sorceress, Condition( function Trig_LearnSkills_Sorceress_Conditions ) )
    call TriggerAddAction( gg_trg_LearnSkills_Sorceress, function Trig_LearnSkills_Sorceress_Actions )
endfunction

Код вам ничего не покажет, если важно то именно из за Способности который предмет добавляет игра виснет, но почему?
Абилка "A042" спеллбук в котором находится абилка "А040" - это абилка канал.
Вообще из за чего может игра вылетать без ошибки? 2 дня назад все работало =/
Старый 07.03.2010, 21:20
DioD

offline
Опыт: 45,134
Активность:
ну делай пошаговую отладку, отключая функцию за функцией до тех пор пока игра не перестанет вылетать, потом смотри в чём проблема.
Старый 07.03.2010, 21:24
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Заменяя абилки "А040" и "A042" станвоится все нормально, только что в них такого что может вызвать краш...

Ninbous добавил:
Вообще интересно у кого были такие же краши без ошибки, прошу отписаться и по какой причине, если вы нашли их.
Старый 07.03.2010, 21:30
DioD

offline
Опыт: 45,134
Активность:
причин каршей не одна и не две, никто тебе расписывать их все не будет.
Старый 07.03.2010, 21:41
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Именно крашей без ошибки?
Старый 07.03.2010, 21:51
XOR

offline
Опыт: 38,159
Активность:
Без каршей если экзекут самой себя(функц.) и еще чо то. Бывает если нахимичишь с параметрами ро то тогда крэш. С ошибкой.
Старый 07.03.2010, 21:55
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Я нашел проблемму. Точнее дело было в описании способности, но все же конкретно "слово" вызывающее краш я не нашел.

Ninbous добавил:
Нашел слово ссылка на значение вместо <A040:ACcb,DataA1> было написано <A040:ACcb:DataA1>. Короче говоря вместо запятой было двоеточие. Вот такая вот нелепая ошибка приводит к крашу ))
Старый 07.03.2010, 22:04
DioD

offline
Опыт: 45,134
Активность:
нет никакого смысла использовать эти самые переменные тем более через двойные коды.
Старый 07.03.2010, 22:12
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
DioD, если у заклинания 20 уровней или больше, то смысл как раз таки появляется. Просто вручную устанеш заполнять цифрами, ты так не считаеш?
Старый 07.03.2010, 22:18
Mr_ILYAS
Kicked by XimikS
offline
Опыт: 492
Активность:
ну они тока добавляют удобство, чмоб при изменении чисел в параметрах РО менялось и в описании автоматом
Старый 07.03.2010, 22:20
DioD

offline
Опыт: 45,134
Активность:
это имеет смысл только если на вашей гениальной карте 100500 абилок которые "наносит 100 урона за уровень способности 100500 уровней"
10 уровней, 5 абилок по 3 уровня, как бы заставляет игрока выбирать то что ему больше надо, и не надо спамить нолики, ваши 20 уровней легко вбиваются в 3.
Старый 07.03.2010, 22:28
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
DioD, бред. Как ты можеш судить об этом, если незнаеш эту карту, или наконец экстросенс котороый был все время в отпуске прибыл на ХГМ? О_о
С чего ты взял что мне нужно вбивать 20 уровней в 3 лвл?
Старый 07.03.2010, 22:35
Mr_ILYAS
Kicked by XimikS
offline
Опыт: 492
Активность:
я вообще его не понял
Старый 07.03.2010, 23:40
Maxidial

offline
Опыт: 93
Активность:
У меня подобное было,ошибка была то ли в даммикасте,то ли в генерации,я поочередно отключал "подозреваемые" триггеры,нашел,исправил,а если у тебя 20 уровней заклинания используй формулы или автозаполнение:)
давно,когда компы были большими никто не писал сколько что наносит-всё постигалось на опыте:-Dно это уже другая история..:-Dрад что вы разобрались
Старый 08.03.2010, 02:17
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Ninbous, мне кажется что DioD, имел в виду автозамену.
видел в системах с 100ур. скилами, где заполнялись в ро просто 1лвл, 3лвл, 7лвл остальное автоматом
Старый 08.03.2010, 11:08
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
AlexKARASb, я заполняю просто 1 уровень, а дальше автоматом все само идет.
Тему клоуз.
Старый 09.03.2010, 02:34
Ответ

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

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

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

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



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