Как сделать?
…
Ajenta:
Не нужно ему ооп, ему нужно, чтобы код кто-то посмотрел-поправил или ещё лучше написал за него. :)
На данный момент я выложил исправленный код который работает, правда с маленькой ошибкой. И кажется я уже нашел эту ошибку. По крайней мере закрыв дырку у меня больше не вылазили нпс стоящие столбом в углу карты. Так что думаю вопрос уже на грани снятия. Даже если этот мелкий баг останется, он уже не мешает сделать игру. Все равно этого нпс не будет видно и он не будет передвигаться.
Ллур,
Да неправда, что песочницы не одобряют. Я вот люблю песочницы. Не одобряют только недоделанные игры без какого-либо смысла, а они из задумки песочниц чаще всего и вытекают.
Ллур,
в тех случаях когда информацию накладно получать в реальном времени из-за большого количества расчетов стоит хранить такую информацию и пересчитывать ее по необходимости
в твоем случае список всех нпс на локе можно хранить в отдельном массиве - и при передвижении нпс менять придется всего 2 массива без особых пересчетов
поскольку вложенных массивов в куспе нету можно использовать построение имени массива на лету и манипуляции с ним через copyarr
пример не привязанный к твоему коду
Spoiler
! строим название массива
$arrayName = 'areanpc_<<x>>_<<y>>'
! переносим его содержимое во временную переменную для удобства манипуляций
copyarr 'tmpArr', $arrayName
! добавляем нпс в локу
tmpArr[] = 10
! удаляем нпс из локи
killvar 'tmpArr', arrpos('tmpArr', 15)
! возвращаем значения из временной переменно в основной массив
copyarr $arrayName, 'tmpArr'
Ллур,
мне интересен твой замысел, но разбираться с таким объёмом кода просто-напросто лень. Были бы комментарии более подробными, можно было б поковырять, но скорее всего ты сам бы уже давно тогда нашёл все недостатки в спроектированной системе, а равно и все мелкие ошибки.
werewolf:
Ллур,
в тех случаях когда информацию накладно получать в реальном времени из-за большого количества расчетов стоит хранить такую информацию и пересчитывать ее по необходимостив твоем случае список всех нпс на локе можно хранить в отдельном массиве - и при передвижении нпс менять придется всего 2 массива без особых пересчетов
поскольку вложенных массивов в куспе нету можно использовать построение имени массива на лету и манипуляции с ним через copyarr
пример не привязанный к твоему кодуSpoiler
! строим название массива $arrayName = 'areanpc_<<x>>_<<y>>' ! переносим его содержимое во временную переменную для удобства манипуляций copyarr 'tmpArr', $arrayName ! добавляем нпс в локу tmpArr[] = 10 ! удаляем нпс из локи killvar 'tmpArr', arrpos('tmpArr', 15) ! возвращаем значения из временной переменно в основной массив copyarr $arrayName, 'tmpArr'Что значат эти цифры 10 и 15
это номер нпс - если использовать для индексации нпс числа
ОДиночка:
Я хотел бы сделать локацию, которая отвечает за переходы. Допустим, если x = 0 ничего не происходит, а если x = 1, то мы переходим на следующую локацию. Просто не хочется постоянно засорять каждую локацию. Заранее спасибо.
А что нужно прописать, чтобы при нажатии на предмет в инвентаре происходило действие. Например Нажал на телепортатор и потом gt ‘Подземелья’. Заранее спасибо.
Одиночка, вначале нужно задать локацию-обработчик выбора предмета, она находится в переменной $ONOBJSEL. Пишешь где-нибудь в начальной локации(допустим в локации меню):
$ONOBJSEL="Предметы"
Это говорит программе: если выбран любой предмет, сделать то, что написано в локации “Предметы”.
Далее, в локации “Предметы” прописать:
If $selobj="Портал": unsel & gt "Подземелья"
unsel
Этим кодом мы говорим программе: если выбран объект “Портал”, то перейти в локацию “Подземелья”. unsel нужен для того, чтобы снять выделение с предмета “Портал”.
Storm,
можно так:
$obj = $SELOBJ
UNSEL
IF $obj = "Портал":
GT "Подземелья"
END
А можно, допустим, сделать такую же локацию, только отвечающую за переходы? Что то вроде того: $переменная<0 gt ‘ТЫ сдох’. Только чтобы все данные были на одной локации?
Nex, спасибо за подсказку. Этим я себе намного упростил движок предметов :)
Одиночка, тебе нужна локация-обработчик, которая будет обрабатывать данные при переходе на любую другую локацию? Если да, то эта локация храниться в переменной $ONNEWLOC. Вот тебе ссылка на это в документации QSP Wiki
А как сделать так, чтобы окно imput было без возможности написания текста?
Одиночка, не пойму что тебе надо. Просто вывести тест в дополнительном окне? Это делается через оператор msg. Информация на Wiki
Большое спасибо.