forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Нужна функция для работы с массивами. (http://forum.boolean.name/showthread.php?t=13836)

SergSS 06.12.2010 22:44

Ответ: Нужна функция для работы с массивами.
 
знаю про goto у нее свои функции)) хотя в ассемблере вез нее никак)) но тут она чисто для теста была введена и по сути не нужна.
а в рефреше, когда он смотрит принадлежит ли этот элемент типа сумке "If b\items[0]=id_box[0]"(За это отвечает первый элемент каждого из массивов, типа id) он видит почему-то только первую и затем заканчивает обновление.

Crayzi 06.12.2010 23:07

Ответ: Нужна функция для работы с массивами.
 
Цитата:

Сообщение от SergSS (Сообщение 171196)
знаю про goto у нее свои функции)) хотя в ассемблере вез нее никак)) но тут она чисто для теста была введена и по сути не нужна.
а в рефреше, когда он смотрит принадлежит ли этот элемент типа сумке "If b\items[0]=id_box[0]"(За это отвечает первый элемент каждого из массивов, типа id) он видит почему-то только первую и затем заканчивает обновление.

Ппц у тя там намучено :) Блин, а зачем тебе передавать все данные из сумки сумке? Или это не так? Я вижу что тут чтото не так, но просто никак понять не могу что именно не так как ты хочеш...
А насчет того что видит только первую, впиши туда сначала
Код:

For b.box =Each box                                                                                                                                                                                                                                ; zdes` pervyj element peredannogo massiva
                Print b\items[0]
                If b\items[0]=id_box[0]                                                                                                                                                                                                                        ;propisyvaets`a kak nomer sumki
                        Return b\items[take_num]                                                                                                                                        ;owibka tut, no gde imenno - ne pojmu
                        ;Goto nekst
                EndIf
                                Return id_box[take_num]
        Next
.nekst

а потом
Код:

        For b.box =Each box                                                                                                                                                                                                                                ; zdes` pervyj element peredannogo massiva
                Print id_box[0]
                If b\items[0]=id_box[0]                                                                                                                                                                                                                        ;propisyvaets`a kak nomer sumki
                        Return b\items[take_num]                                                                                                                                        ;owibka tut, no gde imenno - ne pojmu
                        ;Goto nekst
                EndIf
                                Return id_box[take_num]
        Next
.nekst

и присмотрись к дикой строчке циферок.
П.с. Я бы наверное по другому все это делал, мне както с типами и одномерными массивами роднее работать.. :crazy:


Минут 15 спустя...
Вообще, какие действия ты хочеш чтобы происходили с инвентарем.
Я так понимаю чтобы можно было перемещать там предметы, выкидывать их. Чтобы после закрытия и открытия интентаря они были: а) в дефолтных местах, б) чтобы они были в тех же местах в каких при закрытии, в) чтобы ничего не было, г) иной вариант.

Crayzi 23.12.2010 20:10

Ответ: Нужна функция для работы с массивами.
 
Есть вариант сделать так как ты хочеш, для этого надо:
Код:

Type Massives
  Field MassName$;Здесь будет хранится имя массива.
  Field Mass%[2];Здесь задаеш собственно свой массив.
End Type
;Создадим первый массив с именем "Massive001".
Ms.Massiveso=New Massives
Ms\MassName$="Massive001"
Ms\Mass[0]=1
Ms\Mass[1]=55
Ms\Mass[2]=33
;Создадим второй массив с именем "Massive002".
Ms.Massiveso=New Massives
Ms\MassName$="Massive002"
Ms\Mass[0]=11
Ms\Mass[1]=23
Ms\Mass[2]=42
;тут остальной твой код... цикл и т. д.
;..................................
;..................................
;..................................
;Вот собственно функция работы с массивами:
Function RabMass(MassName1$,MassName2$,Aktion%=0,ParamMass1%=0,ParamMass2%=0)
  For o.Massives = Each Massives
      If o\MassName$=MassName1$
        For t.Massives = Each Massives
            If t\MassName$=MassName2$
              Select Aktion%
                  Case 0
;.....................................
                  Case 1
;......................................
              End Select
            EndIf
        Next
      EndIf
  Next
End function

Все написано в браузере, так что могут быть опечатки))) Но общий смысл я изложил.

SergSS 24.12.2010 23:21

Ответ: Нужна функция для работы с массивами.
 
Спасибо за ответ! Попозже посмотрю твой вариант, но там собственно нашел ошибку и как от нее избавиться! вродь все отл работает)


Часовой пояс GMT +4, время: 15:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot