Вопрос -> "Глобальный" массив

Ask for help

Moderators: Murderator+, Murderator

Post Reply
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Вопрос -> "Глобальный" массив

Post by DerMeister =) »

Возможно ли создать глобальный массив?
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

почему бы и нет? кто мешает?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Прямым способом - нет. Но ты можешь создать кучу глобальных переменных, нумеруя их через индекс, каждую для отдельной ячейки. Можешь хранить в файле. Способов куча.
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Как? Так можно:

Code: Select all

for i = 0 to 20
uo.setglobal(abc[i],i)
next
?? :lol: :lol:
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Edred wrote:Прямым способом - нет. Но ты можешь создать кучу глобальных переменных, нумеруя их через индекс, каждую для отдельной ячейки. Можешь хранить в файле. Способов куча.


Тоесть? Как я у ним индекс прилеплю? Так:

Code: Select all

for i = 0 to 20
uo.setglobal(ABCi,i)
next
??
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Пробуй. Если не проходит, то вставь запись элемента массива в переменную, а уже ее как имя в глобалку
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Edred wrote:Пробуй. Если не проходит, то вставь запись элемента массива в переменную, а уже ее как имя в глобалку


Эт я всё понимаю вроде. Я не знаю какие имена разрешены для глоб. переменных и как мне к ним индексы приляпать...
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

uo.SetGlobal("myArray"+str(i)+str(j), ...)
минимумлогики чтобы i=1 j =11 <>i=11 j=1
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

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

Писал, когда был маленьким, функции для работы со строкой-массивом:

Code: Select all

Sub RegArray(num,len)
var arr=""
var add=""
while strlen(add) < len
add = add + "0"
wend
while strlen(arr) < num*len
arr = arr + add
wend
return arr
endsub

Sub SetArray(val,str,num,len) ; что
if len < strlen(val) then
uo.print("Value to long!")
return false
endif
while strlen(val) < len
val = "0"+val
wend
return MID(str,0,num*len) + val + MID(str,num*len+len,strlen(str)-num*len-len)
endsub

Sub GetArray(str,num,len)
return MID(str,num*len,len)
endsub

Sub IncArray(str,num,len)
var i,j
for i=1 to num
for j=1 to len
str = "0"+str
next
next
return str
endsub

str RegArray - создаст "массив", передаётся:
val 1. Количество элементов
val 2. Длинна элемента (пустота заполняется нуликами, можно еще чем-нить заполнять, мне нулики было удобно).

str SetArray - запишет в "элемент массива" и вернёт полученный "массив", передаётся:
str 1. Записываемое значение
str 2. "Массив"
val 3. Номер элемента
val 4. Длинна элемента "массива"

str GetArray - вернёт "элемент из масива", передаётся:
str 1. "Массив"
val 2. Номер элемента
val 3. Длинна элемента "массива"

str IncArray - вернёт массив на n элементов больше.
str 1. "Массив"
val 2. Количество добавляемых элементов
val 3. Длинна элемента "массива".

Не ругать, скрипт правда из детства нарыл. Вот примерно по такой схеме, из строки я когда-то сделал массив 8)
Last edited by Destruction on 2006-04-14 03:05:13, edited 1 time in total.
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Спасибо, но я вот это не понял:

Grin wrote:минимум логики чтобы i=1 j =11 <>i=11 j=1


Это для двумерного массива?

А можно так:

Code: Select all

for i = 0 to 10
uo.SetGlobal("myArray"+str(i), i)
next


И еще: "myArray"+str(i) - это тоже самое что и myArray1,myArray2, ... ,myArray100, ... да?
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

Destruction wrote:Если надо хранить в глобальном массиве, например тайпы вещей или еще что-нибудь, то можно всё в строку затолкать..


Спасибки, но я ничего в тво1м скрипне не понял :( :oops: :oops: :(

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

Кстати, а можно потом эти глоб. переменные удалить? (из реестра)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Der wrote:
Destruction wrote:Если надо хранить в глобальном массиве, например тайпы вещей или еще что-нибудь, то можно всё в строку затолкать..


Спасибки, но я ничего в тво1м скрипне не понял :( :oops: :oops: :(

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

Кстати, а можно потом эти глоб. переменные удалить? (из реестра)

Глобальные переменные в реестре не лежат. В реестре лежат EasyUO переменные.

Скажи, какая информация у тебя будет храниться?
DerMeister =)
Expert!
Posts: 1032
Joined: 2006-02-25 21:48:38

Post by DerMeister =) »

ID чаров...
Идея такая: ищу вокруг себя всех чаров, запоминаю их ID в этот массив, а потом другим скриптом эти ИД обрабатываю (так сказать скрипт на ПвП)
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Der wrote:ID чаров...
Идея такая: ищу вокруг себя всех чаров, запоминаю их ID в этот массив, а потом другим скриптом эти ИД обрабатываю (так сказать скрипт на ПвП)

Ну мой скрипт вполне подойдёт.

Будешь писать так:
uo.setEasyUO(1,RegArray( 1, 9 )) ; или getGlobal, не буду говорить, почему я его не люблю...

Ща сделаю функцию "увеличения" количества элементов массива.

....

Нарисовал - ушёл тестировать.

...

Всё вроде норм пашет.
Post Reply