RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2425165 views

Ллур,
в тех случаях когда информацию накладно получать в реальном времени из-за большого количества расчетов стоит хранить такую информацию и пересчитывать ее по необходимости

в твоем случае список всех нпс на локе можно хранить в отдельном массиве - и при передвижении нпс менять придется всего 2 массива без особых пересчетов
поскольку вложенных массивов в куспе нету можно использовать построение имени массива на лету и манипуляции с ним через copyarr
пример не привязанный к твоему коду

Spoiler
! строим название массива
$arrayName = 'areanpc_<<x>>_<<y>>' 
! переносим его содержимое во временную переменную для удобства манипуляций
copyarr 'tmpArr', $arrayName
! добавляем нпс в локу
tmpArr[] = 10
! удаляем нпс из локи
killvar 'tmpArr', arrpos('tmpArr', 15)
! возвращаем значения из временной переменно в основной массив
copyarr $arrayName, 'tmpArr'
Aleks Versus Moderator 05.05.2015 13:47 (10 years ago)

Ллур,
мне интересен твой замысел, но разбираться с таким объёмом кода просто-напросто лень. Были бы комментарии более подробными, можно было б поковырять, но скорее всего ты сам бы уже давно тогда нашёл все недостатки в спроектированной системе, а равно и все мелкие ошибки.

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, то мы переходим на следующую локацию. Просто не хочется постоянно засорять каждую локацию. Заранее спасибо.

Одиночка #1417 07.05.2015 20:46 (10 years ago)

А что нужно прописать, чтобы при нажатии на предмет в инвентаре происходило действие. Например Нажал на телепортатор и потом gt ‘Подземелья’. Заранее спасибо.

Одиночка, вначале нужно задать локацию-обработчик выбора предмета, она находится в переменной $ONOBJSEL. Пишешь где-нибудь в начальной локации(допустим в локации меню):

$ONOBJSEL="Предметы"

Это говорит программе: если выбран любой предмет, сделать то, что написано в локации “Предметы”.
Далее, в локации “Предметы” прописать:

If $selobj="Портал": unsel & gt "Подземелья"
unsel

Этим кодом мы говорим программе: если выбран объект “Портал”, то перейти в локацию “Подземелья”. unsel нужен для того, чтобы снять выделение с предмета “Портал”.

Storm,
можно так:

$obj = $SELOBJ
UNSEL

IF $obj = "Портал": 
    GT "Подземелья" 
END
Одиночка #1417 08.05.2015 15:41 (10 years ago)

А можно, допустим, сделать такую же локацию, только отвечающую за переходы? Что то вроде того: $переменная<0 gt ‘ТЫ сдох’. Только чтобы все данные были на одной локации?

Nex, спасибо за подсказку. Этим я себе намного упростил движок предметов :)
Одиночка, тебе нужна локация-обработчик, которая будет обрабатывать данные при переходе на любую другую локацию? Если да, то эта локация храниться в переменной $ONNEWLOC. Вот тебе ссылка на это в документации QSP Wiki

Одиночка #1417 08.05.2015 20:34 (10 years ago)

А как сделать так, чтобы окно imput было без возможности написания текста?

Одиночка, не пойму что тебе надо. Просто вывести тест в дополнительном окне? Это делается через оператор msg. Информация на Wiki

Одиночка #1417 08.05.2015 21:12 (10 years ago)

Большое спасибо.

Возникла такая ситуации: мне нужно к названию массива, допустим, char прибавить число 1, 2 и так далее чтобы получить название нового массива, допустим char1. Затем в этот новый массив копировать данные из какого-то другого массива в игре. Возможно ли это реализовать в QSP? Как вчера не пытался, не смог придумать как это записать в операторах.

!номер массива
char = 1
!и остальное
char_money = 200
$char = ‘Бомж’
Дальше пишешь char = 2 и все что тебе нужно.

Log in or Register to post comments.