2

» WarCraft 3 / Помощь по исправлению кода

TripleKor:
FenikS1991, убери стоимость в 15 маны.
да я убрал. Только всё равно интересно почему вылетает то? я изза этой ерунды всю карту по 150 раз перерыл, все bj нативками заменил кучу функций переписал.. а тут вон оно что
и ещё 1 вопросик. ещё один глюк нашёлся странный. имеется герой, для него есть улучшение, каждый уровень улучшения добавляет 5 маны 5 hp и 3 атаки для героев. 100 уровней улучшений. Для всех героев работает нормально. Для одного героя вот такая проблема:
Герой имеет абилку стандартную, создаёт иллюзии при использовании. Так вот когда улучшение доходит до 31 уровня.. герой больше не создаёт иллюзии. они пропадают до того как успевают появиться...
PS это уже третий необъяснимый глюк найденный в Warcraft (
В принципе фиг с этим, снизил улучшения до 30 уровней и всё норм. тему можно закрывать все спасибо за помощь.
2

» Wanderer: Акт 1 / Wanderer: Акт 1

ещё не качал но судя по скринам... дизайн и ландшафт на высшем уровне.
2

» WarCraft 3 / Помощь по исправлению кода

Если ктото ещё читает эту тему (прошу прощения что наверное задолбал уже),но функцию я полностью переписал, и теперь в ней даже нет цикла в цикле, но вылеты продолжились.
Вообщем улыбнулась мне удача и как раз перед вылетом я случайно сохранил игру. Потом много раз загружал игру и тестил, искал причину.
Вообщем имеется босс (нейтрально враждебный, его способности баш, мана выжигалка пассивная, и криты.)
Вылет происходил во время битвы с боссом одного из ботов (точнее одно из типов героев,ботов), отправлял их по одному к нему и все норм а именно этот даёт вылет.
Думал в чём причина, и увидел одну закономерность.
босс бьёт по герою и за несколько ударов выжигает ему всю ману, критует и станит. Как только у героя заканчивается мана игра вылетает, с другими всё нормально видимо потому что они не собирают прелмет пополняющий ману, а этот герой собирает этот предмет.
В тригерах я этого не задавал, но видимо герой пытается пополнить ману нажав на предмет, а маны для использования не хватает. и игра вылетает (я так полагаю). Как тогда бороться с этой проблемой? ведь в тригерах я не задавал поведения боту при битве с крипами и вобще что нужно пользоваться предметами независимо с крипами или героями.
Если кто сможет сказать что да как то я даже могу выложить саму карту и сохранённую игру где бот идёт на босса и происходит вылет.
вот вам типичный пример "
Создал тестовую карту на неё поместил 2 стандартных героя. дал им абилку выжигающюю ману "Магический огонь" (выжигает всю ману сразу.) создал 1 предмет (пополняющий ману за 15 маны) дал предмет герою врага. Обсолютно никаких тригерров нет.
Выжигаешь ману у героя компа и игра вылетает.
Загруженные файлы
2

» WarCraft 3 / Помощь по исправлению кода

Ты сам ставишь свой ответ лучшим или что? Ты вообще проверял своё решение?
но я точно не ставлю. Пока что.
Doc:
Знаем что такое бинарный поиск?
знаем.~Doc:
Не уверен, что проблема именно в группе
Да я уже тоже не уверен. Даже не уверен что именно в этой функции. Doc:
И вот это:
call GroupRemoveUnit(g,u)
set u=FirstOfGroup(g)
Должно все-таки быть за пределами if'а
Учту. Исправлю.
nvc123:
имхо то что фатал вызван следующим кодом это бред
Тут я тоже согласен. И видимо что вылеты прекратились это просто совпадение, ведь карта вылетает как я уже говорил не всегда, а пару сыгранных игр по 1.2 часа (для проверки) могли просто не дать результата. Закоментировал эти строчки я только потому что был не уверен что правильно работаю с группой либо циклом. Т.к уж извините но мне ещё сложно вникнуть в этот язык хоть и статейки тут читал на форуме. До этого я плотно работал с VB.NET, VB 6.0, и чуть менее C#. Поэтому объявляя переменные в jass по привычке использую синтаксис
VB.NET.)) Самому смешно.
nvc123:
+ лог какой то левый
Лог предоставил по средствам программы найденной тут, когда копался в ресурсах на xgm. Ну как я уже понял это не то что требуется.
Строчки разкоментировал и продолжил тестить. Теперь при вылетах лог обрывается всё чаще и чаще на строчках curCol и numCols. А эти строчки - переменные, функции MultiboardSetItemValueBJ()
Тут я начал грешить на свой мультиборд. Но пока ни к чему не пришёл, да и кто знает, может программа которая пишет лог сама как то некорректно работает. А может быть ошибка не одна а парочка.
Ужас, ищу ошибку уже более двух недель, за это время проверил каждого героя по отдельности, проверил все их нестандартные способности, проверил все предметы способности которых тоже нестандартные, всё работает идеально на разных целях (на героях, иллюзиях, юнитах и т.д) Устал биться, поэтому создал пост, в надежде что лог не врёт а гуру этого языка смогут определить ошибку на глаз (которую я так и ненашёл).
Моя последняя надежда на то что ошибка в мультиборде (если так то ужас сколько всего переделывать там), но пятой точкой чую что отключив этот триггер, ничего не изменится. (Хотя MultiboardSetItemValueBJ() только в нём)
2

» WarCraft 3 / Помощь по исправлению кода

FenikS1991, я хз кто и что тебе выдаёт но там всё нормально работает
скачай джнгп
Уже скачан и давно...
nvc123:
твоё бд должно содержать строки приказов спеллов, равкоды спеллов, мп необходимое для каста спеллов
хранить экземпляры структур лучше всего в хэше по равкоду героя
при необходимости кастануть спелл ты должен доставать экземпляр структуры из хэш таблицы по равкоду твоего героя
Это как раз понять и требовалось, спасибо.
nvc123:
делать за тебя тут никто не будет
И ненужно.
nvc123:
если ты не можешь сам по примеру из статьи сделать то что тебе надо то тебе стоит бросить это дело и заняться вязанием (носки там или шарфик)
Видимо ты в этом профи.
P.S Нет желанья помогать, лучше мимо прошагать.
2

» WarCraft 3 / Помощь по исправлению кода

а вообще чтобы не писать простыню кода я бы сделал бд
в бд указаны спелы которые есть у юнита, затрачиваемое мп и строка приказа
Спасибо за совет я знаю что бд отличная вещь но как юзать её в jass так и не понял...
Ошибку в карте нашёл отключив строки
call GroupRemoveUnit(g,u)
set u=FirstOfGroup(g)
в блоке else\endif. Но боты стали хуже кастовать способности, хотя теперь нет вылетов. Теперь понять бы как это дело исправить. А на будущее хотел бы попросить ещё примерчик использования бд для моего случая (для каста имеющихся способностей на героя врага), хотя-бы самый простой. Т.к этот "http://xgm.guru/p/wc3/wc3bd" пример выдаёт исключения при компиляции (говоря что есть не очищаемые переменные). а тут "http://xgm.guru/p/wc3/24007" всё ок, но как использовать не догнал.
Был бы очень благодарен.
2

» WarCraft 3 / Помощь по исправлению кода Jass

Ну вообщем больше помощь не требуется. решение по поиску ошибки нашёл сам (и безо всяких логов кстати) Осталось ждать вылета. Всем спасибо.
2

» WarCraft 3 / Помощь по исправлению кода Jass

FenikS1991, имхо c++ тоже не особо нормальный
На вкус и цвет товарища нет. А что по поводу "Все спелы" так это потому что я низнаю какой спел у героя перезаряжается, на какой хватает маны, какие спелы у героя вообще есть, и в прочем на основе каких спелов они сделаны
Господи уже голова не варит.
nvc123:
FenikS1991, нет
точка создаётся при вызове метода
вызовешь 100 раз метод - получишь 100 точек
и насколько я помню хэширование точек нигде не юзается
так что это не проблема языка а твоя
FenikS1991, имхо c++ тоже не особо нормальный
FenikS1991, он кастует не по точке x2 y2 а по координатам x2 y2
ты вообще хоть немного понимаешь программирование? (твои ошибки никак не привязаны к языку, так что отговорка "незнаюjass" не прокатит)
Я знаю что это координаты умник.. пустые придирки не прокатят
2

» WarCraft 3 / Помощь по исправлению кода Jass

nvc123:
FenikS1991, ну во первых ты отдаёшь юниту целую кучу приказов
FenikS1991, и там нету утечки вроде
Как тогда иначе узнать какие спелы имеет герой и приказать кастовать поочерёдно? До этого я так и недодумался, написал так, проверил, работает. (на этом и остановился)
Утечки мб и нету. но вылеты во время боя, а во время боя часто только эта функция срабатывает. Хотя повторюсь что без оптимизации вылетов не заметил. (хотя мб, просто повезло)
2

» WarCraft 3 / Помощь по исправлению кода Jass

nvc123:
FenikS1991, нет
точка создаётся при вызове метода
вызовешь 100 раз метод - получишь 100 точек
и насколько я помню хэширование точек нигде не юзается
так что это не проблема языка а твоя
FenikS1991, имхо c++ тоже не особо нормальный
Хорошо, спорить не буду, не проверял. Тогда посоветуй, как правильно? Приведи рабочий пример без утечек и багов
2

» WarCraft 3 / Помощь по исправлению кода Jass

nvc123:
FenikS1991, бэйсик нормальный?
Ну если ты не вкурсе то 2012 в отличии от 5-6 нормальный. И прибегать к сишкам уже требуется очень редко.
nvc123:
ты создал точку и тутже её удалил
Ну вроде бы точка была создана, использована (для направления каста) и только затем удалена. На сколько я понимаю, если бы я точку удалил так:
set x2 = GetUnitX(u)
set y2 = GetUnitY(u)
call RemoveLocation(Location(x2,y2))
то юнит AI не получил бы приказ кастовать по точке x2,y2. А если бы получил то значит точка вовсе не была удалена. Или тут я ошибаюсь?
2

» WarCraft 3 / Помощь по исправлению кода Jass

nvc123:
FenikS1991, там не функция а полное дерьмо
любой кто хоть немного знает английский и у кого есть здравый смысл посоветует тебе удалить весь этот код нафиг
FenikS1991, также посмотри статьи на сайте(особенно про то как делать лог)
и скинь лог
и ты так и не объяснил зачем ты написал эту строчку
call RemoveLocation(Location(x2,y2))
чтобы удалять точку позиции юнита на которого кастуется заклинание.
мб я это сделал не так или вобще не нужно было. но вроде как без этого будет же утечка или не
Сейчас играл 3 партии по 40+ минут по сети 6 на 6. Вылетов, лагов небыло даже на слабом компе. Но вот в чём проблема вылетов небыло на карте которую я НЕ стал оптимизировать с помощью wc3 Map Optimizer. Может ли быть в этом проблема?
nvc123:
FenikS1991, там не функция а полное дерьмо
любой кто хоть немного знает английский и у кого есть здравый смысл посоветует тебе удалить весь этот код нафиг
Напомню в Jass я мало что знаю я изучал нормальный язык VB.net 2012 а этот "недо язык" я не понимаю. Если код говно, (в этом я тут не спорю, т.к не знаю) то может тогда напишешь нормальную функцию?
2

» WarCraft 3 / Помощь по исправлению кода Jass

короче делай дебаг и кидай логи
как в jass это вообще возможно.. я в jass не оч
Если ты про BJDebugMsg? то это же будет ужасно. там множество функций и тригерров. Я не же не на 100% уверен что ошибка именно тут. Или может ты как jass(ер) можешь подправить мою вышеуказанную функцию чтоб она она стабильно работала при вызове каждую секунду? был бы оч.благодарен