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

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

Закрытая тема
 
quq_CCCP
Я белый и пушистый!
online
Опыт: 93,279
Активность:
Проблема со структурой...
Ну мы имеем некую структуру st и метод m, метот "м" берет целое число и возвращает булевское значение, проверяет есть ли интегер в массиве, если есть вернёт true и тд... (не в этом суть) ну можно ли вернуть из некой функции condition результат метода m?
((код jass
function Trig_Morf_Conditions takes nothing returns boolean
set StructData = GetStroredStruct( GetTriggerUnit( ) )
If StructData == 0 then
return false
endif
return StructData.IsAbilityMorph( GetSpellAbilityId( ) )
endfunction
GetStroredStruct выдаёт структуру сохранённую на юнита, если структура равна 0 то на юните нету данных, вернуть false...
StructData.IsAbilityMorph( GetSpellAbilityId( ) ) это выражение проверяет есть ли данные относитльно юнита в структуре и если есть вернуть true, но на эту строчку и гавкает компилятор (мб, я дето ошибся, но тока не пойму где)
))
И вопрос то что я написал вобще возможно исполнить? или это моя ошибка в синтаксисе?
Старый 10.10.2012, 18:00
Doc

offline
Опыт: 63,163
Активность:
quq_CCCP, я не вижу полный код.
Старый 10.10.2012, 18:28
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
что за If еще ? ._.
Старый 10.10.2012, 19:52
spellwerk

offline
Опыт: 4,869
Активность:
StructData скорее всего имеет тип integer, а должен иметь тип твоя_структура
Старый 10.10.2012, 19:57
ScorpioT1000
Работаем
online
Опыт: отключен
function Trig_Morf_Conditions takes nothing returns boolean
    local StructData temp = GetStroredStruct( GetTriggerUnit( ) )
    boolean result = false
    if StructData != 0 then
        result = temp.IsAbilityMorph( GetSpellAbilityId( ) )
    endif
    temp.destroy()
    return result
endfunction
Старый 10.10.2012, 21:07
Doc

offline
Опыт: 63,163
Активность:
ScorpioT1000,
temp.destroy()
Лол. А так то способ верный.
Старый 10.10.2012, 21:19
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
ScorpioT1000, :facepalm:
if StructData != 0 then
мб
if temp != 0 then
И вообще тут правильно будет завести темповую глобалку, ибо быстрее будет.
Faion добавил:
А еще правильнее будет не юзать эти уг структуры, а юзать юзер дату и параллельные массивы.
Faion добавил:
А еще правильнее будет юзать ХТ, ибо рученки кривые, и весь прирост производительности, который даст юз структур будет потерян из за кривых с т.з. логики алгоритмов. Проще говоря, учитывая руки, куда оптимальнее писать с использованием хт.
Старый 10.10.2012, 21:25
adic3x

offline
Опыт: 108,439
Активность:
local StructData temp = GetStroredStruct (GetTriggerUnit())
return (temp != 0) and (temp.IsAbilityMorph (GetSpellAbilityId()))
Старый 10.10.2012, 23:50
quq_CCCP
Я белый и пушистый!
online
Опыт: 93,279
Активность:
Doc, он тут так нужен? полный код, тут проблема именно в этой строчке, и 1 функции, всё остальное работает норм...
spellwerk, StructData имеет тип именно структура а не интегер и является глобальной переменной, я не дибил...
Faion:
Faion добавил:
А еще правильнее будет юзать ХТ, ибо рученки кривые, и весь прирост производительности, который даст юз структур будет потерян из за кривых с т.з. логики алгоритмов. Проще говоря, учитывая руки, куда оптимальнее писать с использованием хт.
Да что вы говорите? с десяток параметров по 100 вариантов и юзать ХТ, троллить мб не нужно, и про корявость поясните а не разбрасывайтесь словами, из ваших предложений я нечего дельного не увидел...
quq_CCCP добавил:
ADOLF, увы ту эе самую ошибку выдаёт...
» вот метод
((код jass
method IsAbilityMorph takes integer abilityId returns boolean
set nLoopAIndex = 0
loop
exitwhen nLoopAIndex > bj_MaxMorphAbilityCount
if this.MorpSkillId[nLoopAIndex] == abilityId then
return true
endif
set nLoopAIndex = nLoopAIndex + 1
endloop
return false
endmethod
))
Не знаю чем он вам поможет, ну мб что то другое предложите
там все это дело в библиотеке происходит, и еще пару методов есть но ошибка именно с этим
Практически все переменные глобалки
quq_CCCP добавил:
немного переписал через локалку, все работает, тока юзаю глобалку сразу ошибка, хотя я правильно объявил переменную структуры...
((код jass
globals
UnitData StructData
endglobals
))
ну что за косяки с компилятором...

Отредактировано quq_CCCP, 11.10.2012 в 06:10.
Старый 11.10.2012, 04:42
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
quq_CCCP:
Да что вы говорите? с десяток параметров по 100 вариантов и юзать ХТ, троллить мб не нужно, и про корявость поясните а не разбрасывайтесь словами, из ваших предложений я нечего дельного не увидел...
Что тут пояснять? Автор задают нубские вопросы, значит автор нуб, значит ему положено юзать хт.
Метод тому доказательство. Существенно быстрее будет сохранить все морфы в ХТ, по абилити хендлу.
Вообще отрицание ХТ, и жалкие попытки сэкономить через структуры, доказывает незнание матчасти юзером, ибо один кривой алгоритм, сводит на нет мизерное преимущество структур перед хт.
Старый 11.10.2012, 10:54
Doc

offline
Опыт: 63,163
Активность:
quq_CCCP, нет, конечно нам не нужен полный код, давайте мы сами догадаемся как там объявлена StructData!
С глобалками это косяк векса, ничего не поделаешь.
Старый 11.10.2012, 11:22
quq_CCCP
Я белый и пушистый!
online
Опыт: 93,279
Активность:
Faion, ладно тему закрывайте, будут разбиратся далее...
Постараюсь больше не давать вам тему для троллинга.
quq_CCCP добавил:
Faion, кстати насчёт метода, это только пока для проверки что все работает, я переделаю систему проверки наличия интегера в массиве, вместо перебаора будет рассчёт id как в хт...
Старый 11.10.2012, 15:32
Закрытая тема

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

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

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

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



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