2 jul
2019

AdicHelper?

Added by
Здравствуйте, в пустой карте есть код:
function present takes integer i returns integer
  return i
endfunction

function temp takes nothing returns nothing
  integer dot = 1
  dot = present(dot)
endfunction
Который останавливает компиляцию AdicHelper.
Если изменить temp на :
function temp takes nothing returns nothing
  integer dot = 1
  set dot = present(dot)
endfunction
То компилируется без проблем. В чем же подвох?

Answer

Vlod, cJass немного багнут, по всей видимости, воспринимает dot как do.
2
Голосов: 2
XGM Bot - 3 years ago
2
Голосов: 2
Похожие вопросы:

ответ
Поставил расстояние 256 там, где вычисляются полярные координаты - всё заработало. То есть слишком маленькие значения нельзя, как 64, всё ясно. Тема закрыта.
ответ
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
ответ
~8gabriel8:
PhysCraft, он уже пробовал этот метод. Не подошёл из-за белых портретов.
Steal nerves, извини, обманул тебя. Чтобы сделать вынесение в отдельную поверхность, надо сначала удвоить вершины. Но только почему-то нормально не работает, часть вершин не удваивается.
Сейчас посмотрю, как с анимацией текстур работал.
А ведь ты не сделал копию анимаций, просто продублировал имеющиеся, дав им название с тэгом. Это не даст желаемого.

Извини, но пока путного не получается. Может быть опосля придёт умная мысля.
По идее всё равно надо делать реальную копию анимационного ряда, а не просто дать новое название тем же кадрам. Может быть ты в процессе копирования кадров согласишься, что легче создать кучу крестьянок с новыми моделями в РО и триггерно их заменять, чем одну почти такую же тяжёлую за счёт анимаций модель с тэгами. При этом не факт, что у неё с портретом будет порядок.
ответ
Личный опыт:
  1. Заходить в карту чтобы скоротать время, пока друзья ещё не пришли/ ещё играют (в ту катку, с которой ты вылетел/крашнулся)
  1. Цель от данной игры:
(большинство рпг)
*1) Попытаться выбить что-то, что падает с одноразового босса, и свалить на рмк
*2) Помочь другу попытаться выбить что-то, что падает с в пункте 1
(большинство других карт)//(Те же тролли и эльфы)
[Больше психология и нежелание играть в неравных условиях]
*1) Этот эльф абузит что-либо!
*2) Эти эльфы собрались в войсе и абузят одну стенку на четверых! Делал так вчера :D
*3) Этот тролль играет с мх и всегда сразу находит любого эльфа на большой карте!
  1. Попытка поиграть во что-то, оборачивается чем-то плохим:
*1) Выбивается инэт/свет/ потолок падает на игрока
*2) Вырубается что-то из оборудования, в следствии чего пк зависает/уходит в ребут
*3) Крашит/Десинкает из вара
*4) Винда что-то непонятное выводит (Та же нехватка озу/бэды на харде)
  1. Определённый сегмент игроков, зовущийся троллями которые что и делают что по кд оскорбляют других, и подпалив игроков просто ливают.
  1. Отдельно насчёт игроков: цифры = пункты выше из шапки
Пункты 1, 2, 5, 6, 7, 8, 9, 10, 12 относятся больше к тому, что игроки с "ини" показывают друг другу зубы и соблюдают этот стиль общения на протяжении всей катки
Пункты 8,12 относятся к тем, с чем можно смириться и продолжить играть в мапу
Пункт 6 - для "Соло" карт, которые просто нельзя пройти в одного, не имея друзей ,что мной расценивается как просто потеря времени
Идеальной карты нет и небудет - вы не сможете совместить абсолютно все жанры, которые нравятся комьюнити - Одновременно ТД и РПГ я ещё не видел, не зря это разные жанры.
Если она и будет, то все наткнутся на лимит в 12 слотов, с которых гарена наврядли когда выйдет.

0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
Vlod, ты всегда пытаешься использовать переменную без значения. Это ошибка. Во втором случае ты пытаешь использовать не определённую переменную, о чём и говорит парсер. Скачай новый pjass.exe, он укажет и на ошибки в оставшися случаях.
0
Голосов: 0
nazarpunk - 3 years ago
Edited by
0
Голосов: 0
ты всегда пытаешься использовать переменную без значения. Это ошибка.
А в чём проблема переменной без значения?

zinc например позволял их объявлять.
local real x, y = 0.5, z
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
PT153, поправил поправленное описание
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
А в чём проблема переменной без значения?
При обращении к переменной без значения поток обрывается. Вот у массивов все ячейки имеют дефолтное значение, обычнве переменные нет.
Vlod, а какая ошибка?
0
Голосов: 0
nazarpunk - 3 years ago
Edited by
0
Голосов: 0
При обращении к переменной без значения поток обрывается.
Правда? А посему декларация переменных поток не сбрасывается?
Вот у массивов все ячейки имеют дефолтное значение
А не обращение к несуществующему элементу массива возвращало null?
0
Голосов: 0
PT153 - 3 years ago
0
Голосов: 0
Правда?
В JASS так, даже последний pjass.exe это определяет.
А посему декларация переменных поток не сбрасывается?
Не понял.
А не обращение к несуществующему элементу массива возвращало null?
Все элементы массива по умолчанию заполнены нулями.
0
Голосов: 0
nazarpunk - 3 years ago
0
Голосов: 0
Все элементы массива по умолчанию заполнены нулями.
Если б это было так, то простое объявление массива сжирало всю доступную память.
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
PT153:
Vlod, ты всегда пытаешься использовать переменную без значения.
Теперь переменная имеет начальное значение. Хочу отметить, что компиляция кода:
function temp takes nothing returns nothing
  integer i
  i = present(i)
endfunction
И так не вызывает ошибок. Хотя поток и оборвется при исполнении.
Обратите внимание на название переменной в вопросе
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
Если б это было так, то простое объявление массива сжирало всю доступную память.
Что за чушь? Объявление массива аллоцирует под него место и заполняет нулями (как calloc в C). Потому начальные значения у массива есть false, 0, 0. и null. Для обычной переменной заполнения нулями не происходит, потому там может быть что угодно. Использование переменной без установленного значения (которое может быть присвоено во время определения переменной или после) обрывает поток.

И так не вызывает ошибок.
Потому что используете старый pjass.exe, используйте новый.
То компилируется без проблем. В чем же подвох?
Если писать на cJass, то надо писать на cJass. Верно будет так.
void temp() {
  integer dot = 1
  dot = present(dot)
{
function temp takes nothing returns nothing
  local integer dot = 1
  set dot = present(dot)
endfunction
0
Голосов: 0
nazarpunk - 3 years ago
0
Голосов: 0
Объявление массива аллоцирует под него место и заполняет нулями (как calloc в C).
А почему нолями, а не null?
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
А почему нолями, а не null?
Выше пояснил. 0 = false = null, в том же vJass в структурах (что являются integer) идёт сравнение с null. JASS не ругается.
0
Голосов: 0
nazarpunk - 3 years ago
0
Голосов: 0
Выше пояснил. 0 = false = null, в том же vJass в структурах (что являются integer) идёт сравнение с null.
А почему он тогда ругается на false > null?
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
А почему он тогда ругается на false > null?
Ну этого сказать не могу, но инты с null JASS норм сравнивает.
Это ещё зависит от версии pjass.exe, последний может быть на это не реагирует.
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
PT153:
Vlod:
Потому что используете старый pjass.exe, используйте новый.
То компилируется без проблем. В чем же подвох?
Если писать на cJass, то надо писать на cJass. Верно будет так...
Спасибо, скачал. Новый pjass не решил проблему. Код на сjass
nothing temp() {
  integer dot = 1
  dot = present(dot)
}
также вызывает ошибку компиляции
0
Голосов: 0
nazarpunk - 3 years ago
0
Голосов: 0
Vlod, переходите на новый патч с lua или на zinc. Они всяко круче cjass.
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
Например, изначальный блок кода:
nothing temp() {
  integer dot = 1
  dot = present(dot)
}

nothing temp2() {
  integer i = 1
  i = present(i)
}
На момент ошибки:
Compiling is stopped
Critical error: unclosed block
Uploaded files
0
Голосов: 0
nazarpunk - 3 years ago
0
Голосов: 0
А куда букву дели?
Uploaded files
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
Они всяко круче cjass.
cJass представляет мощный препроцессор. Ни Lua, ни Zinc такого не имеют.
0
Голосов: 0
Vlod - 3 years ago
Edited by
0
Голосов: 0
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
Vlod, а какие опции cJass включены?
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
их комбинация ничего не дала
Uploaded files
0
Голосов: 0
PT153 - 3 years ago
0
Голосов: 0
Vlod, попробуй отключить всё, кроме AdicParser.
pjass.exe новый стоит?
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
PT153:
Vlod, попробуй отключить всё, кроме AdicParser.
pjass.exe новый стоит?
ага, пока все печально кушает всё, кроме dot
0
Голосов: 0
PT153 - 3 years ago
0
Голосов: 0
Vlod, а если изменить имя dot на другое?
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
PT153, то работает
0
Голосов: 0
PT153 - 3 years ago
0
Голосов: 0
Vlod, cJass немного багнут, по всей видимости, воспринимает dot как do.
0
Голосов: 0
Vlod - 3 years ago
Edited by
0
Голосов: 0
жаль, что отключить кастомные циклы нельзя.
PT153, нужно ли и кому сообщать о найденном баге?
0
Голосов: 0
PT153 - 3 years ago
Edited by
0
Голосов: 0
Vlod, напиши под статьёй про циклы, но я не думаю, что cJass кто-то будет править.
0
Голосов: 0
Vlod - 3 years ago
0
Голосов: 0
PT153, всё может быть)
To leave a comment please sign in to the site.