Как сделать?
…
Ллур,
в тех случаях когда информацию накладно получать в реальном времени из-за большого количества расчетов стоит хранить такую информацию и пересчитывать ее по необходимости
в твоем случае список всех нпс на локе можно хранить в отдельном массиве - и при передвижении нпс менять придется всего 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
Большое спасибо.
Возникла такая ситуации: мне нужно к названию массива, допустим, char прибавить число 1, 2 и так далее чтобы получить название нового массива, допустим char1. Затем в этот новый массив копировать данные из какого-то другого массива в игре. Возможно ли это реализовать в QSP? Как вчера не пытался, не смог придумать как это записать в операторах.
!номер массива
char = 1
!и остальное
char_money = 200
$char = ‘Бомж’
Дальше пишешь char = 2 и все что тебе нужно.