Как сделать?
…
Aleks Versus,
/Оффтоп/Давай Алекс, ёще один коммент, и 900)/Оффтоп/
Aleks Versus:
DaGrozz:
То есть у меня получается 50 одинаковых переменных. Блин. И как это обойти?
не 50 одинаковых переменных, а 50 переменных с одинаковым хэшем имени.
Это можно попробовать обойти генерируя постфикс имени переменной случайным образом, но тогда придётся завести массив, где будут храниться сгенерированные постфиксы для удобства поиска.
Можно. Только я понятия не имею, как мне с этим постфиксами искать в локации нпс. Код и так работает со скрежетом, на пределе куспа. А тут надо будет прогонять циклом все эти постфиксы.
Странно то, что игра 2 дня работает, а затем крашится. Ведь ничего не меняется. Причем я даже сделал систему, где мертвецы выводятся из системы нпс. То есть с каждым днем нагрузка на массив в котором возникает сбой все меньше. И сделал так, что массив каждый час убивается, и строится заново, вдруг там где то накапливалась ошибка. Просто есть чувство, что где то именно накапливается ошибка, потому что пиковая нагрузка на кусп именно в начале игры, с каждым часом нагрузка уменьшается, но сбой возникает именно с течением игры.
DaGrozz:
Ошибка 123
Слишком много переменных с одинаковым хэшем!
тебе нужно сделать технический лог. Чтобы туда писались события игры и имена генерируемых массивов. Через usercom сделать возможность вывода этого лога, и попытаться отследить через него, на каком событии или при генерации какой переменной происходит крах. Но это если у тебя генерация идёт не через counter.
Aleks Versus,
Я точно знаю при генерации какой переменной идет крах.
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
'
На я подстраховался кодом который должен раз в час убивать массивы нпс.
num=1
npcmax=arrsize("$name")
:markkostil
dynamic 'killvar(''$loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>'')'
num+=1
if num<=npcmax:jump'markkostil'
Вот где то в этой связке и есть ошибка.
DaGrozz,
здесь ты, кстати, мог бы разгрузить количество массивов через текстовые индексы.
dynamic '$loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>["<<R[num]>>_'+str(arrsize('$loc_<<X[num]>>_<<Y[num]>>'))+'"] = num'
Или тут проблема возникнет с переполнением массивов?
Или, если это какая-то информация, которую нужно хранить некоторое время, её вообще можно помещать в одну переменную, какой-нибудь условной записью:
$locations+="[x:<<X[num]>>;y<<Y[num]>>;z:<<Z[num]>>;r:<<R[num]>>;count:<<count>>;<<num>>]
"
Но это тоже увеличивает вычислительную, так сказать, нагрузку.
Мне интересно, можно ли как-то в аэру добавить второе окно доп описания?..
Lisichka,
всё можно. Что конкретно ты имеешь ввиду? Выводить два лога в отдельных окнах?
Aleks Versus,
Нужно, чтобы одновременно было два окна доп описания, для удобства, одно слева, одно справа.
Вот на картинке, чтобы одно слева от текста выводилось, а одно справа.
Lisichka,
Ну походу просто прописываешь в $STAT_FORMAT два дива, с фиксированной позицией по краям экрана. И в оба добавляешь служебное поле %TEXT%. Если я что-нибудь в чём нибудь понимаю, конечно.
Aleks Versus,
то есть, нужно прописать как-то так?
'<div class="column1">%TEXT%</div><div class="column2">%TEXT%</div>'
Я сама в html особо не рублю, справочником пользуюсь Х)) а как установить фиксированную позицию, тоже через html?
И еще, как давать компьютеру понять, куда я хочу записать информацию - в правый блок или левый? Нужно вызывать div и писать в нем, с тегами?
upd: все, примерно увидела, как привязывать, буду пробовать! Еще неизвестно, насколько адекватно это все отобразит аэро Х))
Lisichka,
эм. В смысле в правый или в левый?
Я понял так, что тебе одну и ту же информацию нужно выводить в оба блока.
Если два блока, в которые нужно выводить разную информацию, это уже не будет чётко “окно дополнительного описания”, это будет что-то другое.
Aleks Versus,
Ну да, нужно, чтобы разная информация выводилась. То есть, даже с дивами так не получится сделать?
Lisichka, на сколько я могу судить, то тебе нужно два div элемента, но с разным позиционированием. Напиши два разных класса, или идентификатора с разным позиционированием элементов(делается с помощью CSS правил) и применяй их к разным div`ам.
Lisichka,
Это можно сделать, но это не будет текст, выводящийся через pl и ему подобные команды. И да, это несколько трудновато:
Вместо pl в одно окно, помещаешь строки текста в массив $add_desc_1[]
Вместо pl в другое окно, помещаешь строки текста в массив $add_desc_2[]
В нужном месте выводишь:
*p '<div class="column1">'
:for1
if i<arrsize('$add_desc_1'):
*p $add_desc_1[i]+'<br>'
i+=1
jump 'for1'
end
*p '</div>'
*p '<div class="column2">'
*p 'Основное описание'
*p '</div>'
*p '<div class="column3">'
i=0
:for2
if i<arrsize('$add_desc_2'):
*p $add_desc_2[i]+'<br>'
i+=1
jump 'for2'
end
*p '</div>'
Aleks Versus,
Storm,
спасибо, узнала, что так делать можно, но пока не очень понимаю, хаха) (особенно массивы)
поэтому лучше просто возьму таблицу сделаю, попробую ячейки растащить по разным углам с помощью align или чего-то в этом роде. Х)