****************************************************************************
*********************На карте оявляется случайный монстр********************
****************************************************************************
!#TM45:S1/999/2/255;
!?TM45; !!FU28447:P?y-1/?y-2/?y-3;Вызываем функцию генерации координат случайной свободной клетки. !!VRy=11:R120;Генерируем случайный номер монстра. !!UN:Iy-1/y-2/y-3/54/y11;Ставим случайного монстра на клетку. !!VRy=12:R12;Устанавливаем случайное количество монстров. !!MOy-1/y-2/y-3:Gy12;Устанавливаем случайное количество монстров.
;Функции генерации случайной свободной клетки карты.
!?FU28447;Функция генерации случайной свободной клетки карты. !!UN:X?y1/?y2;Считываем размеры карты. !!VRy2:+1;Вычисляем количество уровней на карте. !!VRy3:Sy1*y1*y2;Вычисляем количество клеток карты. !!VRy3:-1;Вычисляем номер последней клетки карты. !!VRy4:Sv2;Сохраняем значение глобальной переменной. !!VRv2:S0;Обнуляем переменную счёта свободных клеток. !!DO28448/0/y3/1:Py1/y2;Запускаем цикл, проходящийся по всем клеткам карты и считающий число свободных клеток на ней. !!FU&v2<=0:E;Если свободных клеток нет, завершаем функцию. !!VRy5:Sv2-1;Вычисляем условный номер последней свободной клетки. !!VRv2:S0 Ry5;Генерируем случайный условный номер свободной клетки. !!DO28449/0/y3/1:Py1/y2;Запускаем цикл, проходящийся по клеткам карты и вычисляющий реальный номер клетки. !!VRx1:Sv2%y1;Вычисляем и возвращаем x-координату клетки. !!VRx2:Sv2:y1%y1;Вычисляем и возвращаем y-координату клетки. !!VRx3:Sv2:y1:y1%y2;Вычисляем и возвращаем z-координату клетки. !!VRv2:Sy4;Восстанавливаем значение глобальной переменной.
!?FU28448;Функция проверки свободности клетки. !!VRy1:Sx16%x1;Вычисляем x-координату клетки. !!VRy2:Sx16:x1%x1;Вычисляем y-координату клетки. !!VRy3:Sx16:x1:x1%x2;Вычисляем z-координату клетки. !!TRy1/y2/y3:E?y4;Считываем проходимость клетки. !!TRy1/y2/y3:P?y5;Считываем посещаемость клетки. !!TRy1/y2/y3:T?y6/d/d/d/d/d/d/d;Считываем тип территории клетки. !!FU&y4=0|y5=0/y6=8/y6=9:E;Если клетка недоступна, завершаем тфункцию. !!OBy1/y2/y3:T?y7;Считываем тип объекта на клетке. !!VRv2&y7<>34:+1;Если на клетке стоит не герой, добавляем 1 в переменную свободных клеток.
!?FU28449;Функция проверки свободности клетки. !!VRy1:Sx16%x1;Вычисляем x-координату клетки. !!VRy2:Sx16:x1%x1;Вычисляем y-координату клетки. !!VRy3:Sx16:x1:x1%x2;Вычисляем z-координату клетки. !!TRy1/y2/y3:E?y4;Считываем проходимость клетки. !!TRy1/y2/y3:P?y5;Считываем посещаемость клетки. !!TRy1/y2/y3:T?y6/d/d/d/d/d/d/d;Считываем тип территории клетки. !!OBy1/y2/y3&y4=1/y5=1/y6<>8/y6<>9:T?y7;Если клетка свободна, считываем тип объекта на клетке. !!VRv2&y4=0|y5=0/y6=8/y6=9/y7=34:+1;Если клетка несвободна или на ней есть герой, добавляем 1 в переменную реального номера клетки. !!VRx16&x16=v2:Sx1*x1*x2;Если реальный номер клетки вычислен, завершаем цикл.
как привязать вычисление стоимости монстра к его количеству появляемому на карте?
!!MA : Cy-1/6/?y-2;Считываем стоимость монстра.
!!VRy-3 : S30000:y-2;Вычисляем количество монстров исходя из стоимости.
сколько не пытаюсь, скрипт глючит, заранее благодарен.
Все свежие обновления я выкладываю на своем сайте здесь.