Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
5 лет назад

function RandomCircleSpawnCoords(x,y,r,fl)
  if x and y and r then
    if not fl then
      flooor = GROUND
    end
    local t = {}
    local n = 1
    x = x-r
    y = y-r
    r = r+r
    for i = x, r do
      print(i)
      for j = y, r do
        print(j)
        if (i - x)*(i - x) + (j - y)*(j - y) <= r*r then
          t[n] = {x1, y1, flooor}
          n = n + 1
        end
      end
    end
    print('Ìàññèâ: ', t)
    print('Äëèíà: ', length(t))
    local c = t[random(length(t))+1]
    return c[1], c[2], c[3]
  end
end

RCSC = RandomCircleSpawnCoords

Массив t не заполняется, циклы i и j не крутятся совсем. В чём может быть проблема?

В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
}{0TT@6bI4

function RandomCircleSpawnCoords(x,y,r,fl)
  if x and y and r then
    if not fl then
      flooor = GROUND
    end
    local t = {}
    local n = 1
    x = x-r
    y = y-r
    r = r+r
    for i = x, r do
      print(i)
      for j = y, r do
        print(j)
        if (i - x)*(i - x) + (j - y)*(j - y) <= r*r then
          t[n] = {x1, y1, flooor}
          n = n + 1
        end
      end
    end
    print('Ìàññèâ: ', t)
    print('Äëèíà: ', length(t))
    local c = t[random(length(t))+1]
    return c[1], c[2], c[3]
  end
end

RCSC = RandomCircleSpawnCoords

Массив t не заполняется, циклы i и j не крутятся совсем. В чём может быть проблема?

RCSC = RandomCircleSpawnCoords
прям так строчка и написана или скопировал не все? если так и написано, то очевидно, почему не работает)
Аватар пользователя
5 лет назад
Да, так и написано. Это я алиас для функции создал; вызываю RCSC(14,14,2), например.
Аватар пользователя
5 лет назад
С проблемой разобрался.
Аватар пользователя
5 лет назад
Не хочу показаться надоедливым, но снова проблема с потоком:

function Diff_setup()
slozhnost = GetDifficulty();
if slozhnost == DIFFICULTY_EASY  then
print("easy");
startThread(sloz_easy);
elseif slozhnost == DIFFICULTY_NORMAL then
print("norm");
startThread(sloz_norm);
elseif slozhnost == DIFFICULTY_HARD then
print("hard");
startThread(sloz_hard);
elseif slozhnost == DIFFICULTY_HEROIC then
print("hero");
startThread(sloz_hero);
end;
end;

function sloz_easy()
if (GetDate( DAY ) == 31) then
SetRegionBlocked("blok", nil, 4);
end;
end;

function sloz_norm()
if (GetDate( DAY ) == 28) then
SetRegionBlocked("blok", nil, 4);
end;
end;

function sloz_hard()
if (GetDate( DAY ) == 14) then
SetRegionBlocked("blok", nil, 4);
end;
end;

function sloz_hero()
if (GetDate( DAY ) == 12) then
SetRegionBlocked("blok", nil, 4);
end;
end;

startThread(Diff_setup);

Консоль ругается и выдаёт ошибку.

Вложения 1
1 файл • Общий размер: 14,6 KB
В ответ пользователю Andrei_21
Аватар пользователя
5 лет назад
Andrei_21
Не хочу показаться надоедливым, но снова проблема с потоком:

function Diff_setup()
slozhnost = GetDifficulty();
if slozhnost == DIFFICULTY_EASY  then
print("easy");
startThread(sloz_easy);
elseif slozhnost == DIFFICULTY_NORMAL then
print("norm");
startThread(sloz_norm);
elseif slozhnost == DIFFICULTY_HARD then
print("hard");
startThread(sloz_hard);
elseif slozhnost == DIFFICULTY_HEROIC then
print("hero");
startThread(sloz_hero);
end;
end;

function sloz_easy()
if (GetDate( DAY ) == 31) then
SetRegionBlocked("blok", nil, 4);
end;
end;

function sloz_norm()
if (GetDate( DAY ) == 28) then
SetRegionBlocked("blok", nil, 4);
end;
end;

function sloz_hard()
if (GetDate( DAY ) == 14) then
SetRegionBlocked("blok", nil, 4);
end;
end;

function sloz_hero()
if (GetDate( DAY ) == 12) then
SetRegionBlocked("blok", nil, 4);
end;
end;

startThread(Diff_setup);

Консоль ругается и выдаёт ошибку.

Скопировал код в консоль с добавлением @ в начале и он исполнился - т. е. как минимум напечатал уровень сложности.
Если это не весь код, то ошибка, полагаю, в чём-то другом.
К слову, код, скорее всего, работает не так, как вы от него ожидаете.
Аватар пользователя
5 лет назад
Ясно. Не исключаю, что напортачил где-то раньше. Спасибо за помощь, RedHeavenHero.
Аватар пользователя
5 лет назад
Автор
К слову, код, скорее всего, работает не так, как вы от него ожидаете.
Ну да. Код выполняется однократно в первый день, выдаёт false на проверки даты и заканчивается. Если только там ещё чего-нибудь нет.
В ответ пользователю Ment
Аватар пользователя
5 лет назад
Ment
Ну да. Код выполняется однократно в первый день, выдаёт false на проверки даты и заканчивается. Если только там ещё чего-нибудь нет.

Подозревал такой исход событий. Ну ничего, переделаю по-другому.
Аватар пользователя
5 лет назад
RedHeavenHero, а не подскажете такой момент? Если переписать функцию Errormessage например даже так:
errmsg = _ERRORMESSAGE
function _ERRORMESSAGE(msg)
errmsg(msg)
end

И в консоли вызвать MessageBox(''), то вместо обычной ошибки "Empty message text!" происходит вылет игры. Давным-давно вы помогали дурману скрыть ошибку attmept to call a nil value; таким же методом я хочу отловить ошибку отсутствия текстового файла, т.е. определять, существует ли он. Буду признателен за помощь
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
Здравствуйте, дорогие картостроители.  Можете подсказать скрипт, который убирает существо с карты?
В ответ пользователю Flame Crystal
Аватар пользователя
5 лет назад
Flame Crystal
Здравствуйте, дорогие картостроители.  Можете подсказать скрипт, который убирает существо с карты?

RemoveObject("скриптовое имя монстра");
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
}{0TT@6bI4
RedHeavenHero, а не подскажете такой момент? Если переписать функцию Errormessage например даже так:
errmsg = _ERRORMESSAGE
function _ERRORMESSAGE(msg)
errmsg(msg)
end

И в консоли вызвать MessageBox(''), то вместо обычной ошибки "Empty message text!" происходит вылет игры. Давным-давно вы помогали дурману скрыть ошибку attmept to call a nil value; таким же методом я хочу отловить ошибку отсутствия текстового файла, т.е. определять, существует ли он. Буду признателен за помощь
По какой-то причине игра вылетает, когда пытается вызвать _ERRORMESSAGE, который не является встроенной С-функцией. То есть ее можно только переназначить на другую уже существующую, например, print или StopTrigger (последняя, не смотря на свое название, ничего не делает по моим наблюдениям).
Если надо выловить ошибку, используйте errorHook.

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 7 пользователей 1365 гостей