Вопрос -> "Глобальный" массив
Moderators: Murderator+, Murderator
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Вопрос -> "Глобальный" массив
Возможно ли создать глобальный массив?
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Edred wrote:Прямым способом - нет. Но ты можешь создать кучу глобальных переменных, нумеруя их через индекс, каждую для отдельной ячейки. Можешь хранить в файле. Способов куча.
Тоесть? Как я у ним индекс прилеплю? Так:
Code: Select all
for i = 0 to 20
uo.setglobal(ABCi,i)
next
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
-
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
Если надо хранить в глобальном массиве, например тайпы вещей или еще что-нибудь, то можно всё в строку затолкать..
Писал, когда был маленьким, функции для работы со строкой-массивом:
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. Длинна элемента "массива".
Не ругать, скрипт правда из детства нарыл. Вот примерно по такой схеме, из строки я когда-то сделал массив
Писал, когда был маленьким, функции для работы со строкой-массивом:
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. Длинна элемента "массива".
Не ругать, скрипт правда из детства нарыл. Вот примерно по такой схеме, из строки я когда-то сделал массив

Last edited by Destruction on 2006-04-14 03:05:13, edited 1 time in total.
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Спасибо, но я вот это не понял:
Это для двумерного массива?
А можно так:
И еще: "myArray"+str(i) - это тоже самое что и myArray1,myArray2, ... ,myArray100, ... да?
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, ... да?
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
Destruction wrote:Если надо хранить в глобальном массиве, например тайпы вещей или еще что-нибудь, то можно всё в строку затолкать..
Спасибки, но я ничего в тво1м скрипне не понял




Мне нужнен именно глобальный массив, чтобы мои скрипты между собой обсчались, а т.к. то что я буду там хранить постоянно меняется то файл не подходит... (даже заранее неизвестно сколько елементов в массиве будет)
Кстати, а можно потом эти глоб. переменные удалить? (из реестра)
-
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
Der wrote:Destruction wrote:Если надо хранить в глобальном массиве, например тайпы вещей или еще что-нибудь, то можно всё в строку затолкать..
Спасибки, но я ничего в тво1м скрипне не понял![]()
![]()
![]()
Мне нужнен именно глобальный массив, чтобы мои скрипты между собой обсчались, а т.к. то что я буду там хранить постоянно меняется то файл не подходит... (даже заранее неизвестно сколько елементов в массиве будет)
Кстати, а можно потом эти глоб. переменные удалить? (из реестра)
Глобальные переменные в реестре не лежат. В реестре лежат EasyUO переменные.
Скажи, какая информация у тебя будет храниться?
-
- Expert!
- Posts: 1032
- Joined: 2006-02-25 21:48:38
-
- Junior Expert
- Posts: 3221
- Joined: 2004-06-24 22:08:56
Der wrote:ID чаров...
Идея такая: ищу вокруг себя всех чаров, запоминаю их ID в этот массив, а потом другим скриптом эти ИД обрабатываю (так сказать скрипт на ПвП)
Ну мой скрипт вполне подойдёт.
Будешь писать так:
uo.setEasyUO(1,RegArray( 1, 9 )) ; или getGlobal, не буду говорить, почему я его не люблю...
Ща сделаю функцию "увеличения" количества элементов массива.
....
Нарисовал - ушёл тестировать.
...
Всё вроде норм пашет.