RU 📌 Pinned

Как сделать?

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

Aleks Versus Moderator 31.01.2016 19:16 (10 years ago)

Aaaspavel,
в момент смены одного дня на другой меняешь маркер:

нечётность = 1 - нечётность

если нечётность = 1 - хайд, если нечётность = 0 - джеккил.

Белый Шарик #100 01.02.2016 18:42 (10 years ago)

Пипец! Случайно сдвинул окно действий, оно вылезло как отдельное окно теперь. Как его вернуть на место?

Белый Шарик #100 01.02.2016 18:43 (10 years ago)

Разобрался. Кфг-шку снес.

if $selobj='Инвентарь':
end
unsel

Как через код заставить сработать объект? Есть инвентарь и при работе с ним нужно перезагружать инвентарь иначе не очень удобно каждый раз его открывать.

DaGrozz,
В смысле перезагружать? Можешь дать пример, в игровых условиях?

Aleks Versus Moderator 03.02.2016 01:51 (10 years ago)

DaGrozz,
напиши отдельную локацию для вывода инвентаря. И всякий раз при необходимости вывести инвентарь, вызывай её.

Aleks Versus:

DaGrozz,
напиши отдельную локацию для вывода инвентаря. И всякий раз при необходимости вывести инвентарь, вызывай её.

Ну да. Инвентарь можно закатать в какую нибудь локу, которую будешь вызывать либо селобектом, либо просто госаб на эту локу. Спасибо. А то что то, чем дальше в лес, тем сильнее туплю.

Ошибка 123
Слишком много переменных с одинаковым хэшем!

Через 3 игровых дня начинает ругаться на эту строку.

!код добавляющий нпс на локацию
dynamic '$loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>[] = num'

А это ядро движка. Именно создавая массив для каждой локации и впиывая туда ИД нпс, я и могу сделать взаимодействие нпс друг с другом. Что не так? И как обойти эту ошибку? Может через игровые сутки килвар устраивать, да заново создавать массив?

!код удаляющий нпс с локации
st= arrsize('$loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>')

dynamic'
temp=0
t=-1
:markdolnpc
if $loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>[temp]!num and temp<=st:temp+=1&jump''markdolnpc''
if $loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>[temp]=num and temp<=st:t=temp
if t!-1:killvar(''$loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>''), t
'

Эти два кода работают в связке. При входе на локацию удаляем нпс из старого массива (2й код), и добавляем его (1й код) на новую локацию. И именно обработка этого массива позоляет существенно облегчить код. Нпс не нужно прогонять весь список нпс для того, что бы узнать кто на локации кроме него находится.

DaGrozz,
Я бы, через условие, ограничил бы количество, да и все.

Oliver:

DaGrozz,
Я бы, через условие, ограничил бы количество, да и все.

Количество чего бы ты ограничил??? Этот массив создается на ходу, его даже удалить без цикла через killvar не возможно.
Сейчас я даже сделал полное удаление массива через цикл каждый час, но один черт на третий день вылетает ошибка. Я даже понятия не имею, что его может переполнить. нпс 2500, а предельный индекс массива 2 миллиарда.

DaGrozz,
В массиве ведь что то храниться, верно?
X[num] - это, как я понял переменные координат(дурак может быть, новичЕк, пытается наставить Мастера, да где это слыханно!!
Попробуй их то и ограничить.

Oliver:

DaGrozz,
В массиве ведь что то храниться, верно?
X[num] - это, как я понял переменные координат(дурак может быть, новичЕк, пытается наставить Мастера, да где это слыханно!!
Попробуй их то и ограничить.

Они и так ограниченны. Вся сетка от 1 до 50. И почему то хватает на три дня игры. Карта то не увеличивается, и количество нпс не прибавляется. Но советы у тебя действительно в духе одного героя Булгакова. Взять все, и поделить.

DaGrozz,
Ограничения QSP

Nex:

Количество переменных ограничено 12800, при этом не допускается более 50 переменных с одинаковым хэшем имени.
Количество элементов массива ограничено размерностью “int”, в зависимости от того, как собрана библиотека, 32768 или 2147483648 соответственно.

evp:

DaGrozz,
Ограничения QSP

Nex:

Количество переменных ограничено 12800, при этом не допускается более 50 переменных с одинаковым хэшем имени.
Количество элементов массива ограничено размерностью “int”, в зависимости от того, как собрана библиотека, 32768 или 2147483648 соответственно.

То есть у меня получается 50 одинаковых переменных. Блин. И как это обойти?

Aleks Versus Moderator 03.02.2016 18:11 (10 years ago)

DaGrozz:

То есть у меня получается 50 одинаковых переменных. Блин. И как это обойти?

не 50 одинаковых переменных, а 50 переменных с одинаковым хэшем имени.

Это можно попробовать обойти генерируя постфикс имени переменной случайным образом, но тогда придётся завести массив, где будут храниться сгенерированные постфиксы для удобства поиска.

Log in or Register to post comments.