RU 📌 Pinned

Как сделать?

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

Aleks Versus,

/Оффтоп/Давай Алекс, ёще один коммент, и 900)/Оффтоп/

Aleks Versus:

DaGrozz:

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

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

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

Можно. Только я понятия не имею, как мне с этим постфиксами искать в локации нпс. Код и так работает со скрежетом, на пределе куспа. А тут надо будет прогонять циклом все эти постфиксы.

Странно то, что игра 2 дня работает, а затем крашится. Ведь ничего не меняется. Причем я даже сделал систему, где мертвецы выводятся из системы нпс. То есть с каждым днем нагрузка на массив в котором возникает сбой все меньше. И сделал так, что массив каждый час убивается, и строится заново, вдруг там где то накапливалась ошибка. Просто есть чувство, что где то именно накапливается ошибка, потому что пиковая нагрузка на кусп именно в начале игры, с каждым часом нагрузка уменьшается, но сбой возникает именно с течением игры.

Aleks Versus Moderator 03.02.2016 20:35 (10 years ago)

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'

Вот где то в этой связке и есть ошибка.

Aleks Versus Moderator 03.02.2016 22:38 (10 years ago)

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>>]
"

Но это тоже увеличивает вычислительную, так сказать, нагрузку.

Мне интересно, можно ли как-то в аэру добавить второе окно доп описания?..

Aleks Versus Moderator 04.02.2016 20:59 (10 years ago)

Lisichka,
всё можно. Что конкретно ты имеешь ввиду? Выводить два лога в отдельных окнах?

Aleks Versus,
Нужно, чтобы одновременно было два окна доп описания, для удобства, одно слева, одно справа.
Вот на картинке, чтобы одно слева от текста выводилось, а одно справа.

Aleks Versus Moderator 04.02.2016 21:43 (10 years ago)

Lisichka,
Ну походу просто прописываешь в $STAT_FORMAT два дива, с фиксированной позицией по краям экрана. И в оба добавляешь служебное поле %TEXT%. Если я что-нибудь в чём нибудь понимаю, конечно.

Aleks Versus,
то есть, нужно прописать как-то так?

'<div class="column1">%TEXT%</div><div class="column2">%TEXT%</div>'

Я сама в html особо не рублю, справочником пользуюсь Х)) а как установить фиксированную позицию, тоже через html?
И еще, как давать компьютеру понять, куда я хочу записать информацию - в правый блок или левый? Нужно вызывать div и писать в нем, с тегами?

upd: все, примерно увидела, как привязывать, буду пробовать! Еще неизвестно, насколько адекватно это все отобразит аэро Х))

Aleks Versus Moderator 04.02.2016 22:14 (10 years ago)

Lisichka,
эм. В смысле в правый или в левый?
Я понял так, что тебе одну и ту же информацию нужно выводить в оба блока.
Если два блока, в которые нужно выводить разную информацию, это уже не будет чётко “окно дополнительного описания”, это будет что-то другое.

Aleks Versus,
Ну да, нужно, чтобы разная информация выводилась. То есть, даже с дивами так не получится сделать?

Lisichka, на сколько я могу судить, то тебе нужно два div элемента, но с разным позиционированием. Напиши два разных класса, или идентификатора с разным позиционированием элементов(делается с помощью CSS правил) и применяй их к разным div`ам.

Aleks Versus Moderator 04.02.2016 22:33 (10 years ago)

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 или чего-то в этом роде. Х)

Log in or Register to post comments.