Показать сообщение отдельно
Старый 06.12.2010, 00:49   #6
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Сообщение Ответ: Нужна функция для работы с массивами.

Ну тут тебе надо сделать просто функцию в которой будут заложены определенные действия в зависимости от ситуации.
Type Player
   Field Id;Хз зачем, так для прикола создал.
   Field Bag[10];Сумка игрока.
   Field Bank[10];Банк игрока.
End Type
Global Players[1]; это для примера, тут будет хэндл игрока.
For CrP%=1 To 2;Создаем 2-х игроков, еще не придумал зачем 2-рой,
; наверное для компании :)
  p.Player=New Player
  p\Id=CrP%;Так же для прикола заполнил...
  Players[CrP%-1]=Handle(p);Запишем хендл игрока чтобы не перебирать 
; всех игроков при работе с инвентарем.
  p\Bag[1]=5;Положим предмет под ИД-шкой 5 в первый слот сумки.
  p\Bag[3]=546;Положим предмет под ИД-шкой 546 в третий слот сумки.
  p\Bank[3]=3;Положим предмет под ИД-шкой 3 в третий слот банка.
Next
Print  "До"
p.Player=Object.Player(Players[0])
  Print  "Сумка слот - 1: "+p\Bag[1]
  Print  "Сумка слот - 3: "+p\Bag[3]
  Print  "Банк слот - 3: "+p\Bank[3]
;Про функцию юзаемую ниже, первое значение - хэндл игрока в типе
; игроков, 2-е откуда будем брать предмет (1- из сумки, 2 из банка),
; 3-е слот из какого возьмем,
; 4-е куда будем ложить (0-выкинем, 1- в сумку, 2 - в банк).
; 5-е в какую ячейку (при выкидывании роли не играет).
MoveItem(Players[0],1,1,2,3);Перекинем предмет из 1-го слота сумки в 3-й слот банка.
MoveItem(Players[0],1,3,0,0);Выкинем предмет из 3-го слота сумки.
Print  "После"
p.Player=Object.Player(Players[0]);Выберем первого игрока через хендл которыйзаписывали
;при его создании(можно было и позже).
  Print  "Сумка слот - 1: "+p\Bag[1]
  Print  "Сумка слот - 3: "+p\Bag[3]
  Print  "Банк слот - 3: "+p\Bank[3]
MoveItem(Players[0],1,1,1,3);Переместим предмет из 1-го слота в 3-й.
Print  "После 2"
p.Player=Object.Player(Players[0])
  Print  "Сумка слот - 1: "+p\Bag[1]
  Print  "Сумка слот - 3: "+p\Bag[3]
  Print  "Банк слот - 3: "+p\Bank[3]
WaitKey 

Function MoveItem(PlayerID%,ID_BagOut%,SlotNumOut%,ID_BagIn%,SlotNumIn%)
p.Player=Object.Player(PlayerID%)
Local TempItem%
Select ID_BagOut%
  Case 1;Перекладуем из сумки.
    Select ID_BagIn%
       Case 0;В никуда.
         p\Bag[SlotNumOut%]=0
       Case 1;В другой слот.
         TempItem%=p\Bag[SlotNumIn%]
         p\Bag[SlotNumIn%]=p\Bag[SlotNumOut%]
         p\Bag[SlotNumOut%]=TempItem%
       Case 2;В слот банка.
         TempItem%=p\Bank[SlotNumIn%]
         p\Bank[SlotNumIn%]=p\Bag[SlotNumOut%]
         p\Bag[SlotNumOut%]=TempItem%
     End Select
   Case 2;Перекладуем из банка.
     Select ID_BagIn%
       Case 0;В никуда.
         p\Bank[SlotNumOut%]=0
       Case 1;В сумку.
         TempItem%=p\Bag[SlotNumIn%]
         p\Bag[SlotNumIn%]=p\Bank[SlotNumOut%]
         p\Bank[SlotNumOut%]=TempItem%
       Case 2;В другой или в тот же слот банка.
         TempItem%=p\Bank[SlotNumIn%]
         p\Bank[SlotNumIn%]=p\Bank[SlotNumOut%]
         p\Bank[SlotNumOut%]=TempItem%
     End Select
End Select
End Function
П.с. И пусть только какаянить тварь скажет что это говнокод...
П.сс. Если помогло - клацни спасибо)))
П.ссс. Помогаю только потому что сам щас МОРПГ шаманю по чучуть(ну как мморпг, человек 100 потянет стабильно, покачто, пока возможностей мало и игровой мир не приукрашен), вот только мну не удовлетворяет DX7, а Ксорс дорогой, илиже SPE бажный...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SergSS (06.12.2010)