Показать сообщение отдельно
Старый 05.03.2011, 23:11   #20
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Так более универсально - для C4
delphi Код:
var   ItemID, ItemOID, ItemEnch: integer;      //ItemID затачиваемого предмета   //ITEMs   BaseItems:  array[1..maxitems, 1..12] of integer//все предметы в инвентаре //...................................... Procedure ItemList; //создание базы предметов var     i, j, count : integer;     values : array[0..8] of variant; begin     count:=round((length(pck)-5)/ReadH(4));     for j:=1 to 12 do for i:=1 to maxitems do BaseItems[i,j]:=0;     for i:=0 to ReadH(4)-1 do         begin             readmask('hdddhhhdh', 6+i*count, values);             BaseItems[i+1,2]:=values[1];  //OID             BaseItems[i+1,3]:=values[2];  //ItemID             BaseItems[i+1,5]:=values[3];  //Amount (кол-во предметов)             BaseItems[i+1,10]:=values[8]; //EnchLvl         end;  end; //...................................... Procedure InventoryUpdate; var     i, j, obj, count : integer;     values : array[0..9] of variant; begin     count:=round((length(pck)-3)/ReadH(2));     for i:=0 to ReadH(2)-1 do         begin             readmask('hhdddhhhdh', 4+i*count, values);             case values[0] of                 1: obj:=0;                 2: obj:=values[2];                 3: begin                     for i:=1 to maxitems do                         if BaseItems[i,2]=values[2] then                             begin                                 for j:=1 to 12 do BaseItems[i,j]:=0;                                 break;                             end;                     continue;                    end;             end;             for i:=1 to maxitems do                 if BaseItems[i,2]=obj then                     begin                         BaseItems[i,2]:=values[2];  //OID                         BaseItems[i,3]:=values[3];  //ItemID                         BaseItems[i,5]:=values[4];  //Amount                         BaseItems[i,10]:=values[9]; //EnchLvl                         break;                     end;         end; end;

Тоже самое для Freya
delphi Код:
//...................................... Procedure ItemList; //создание базы предметов var     i, j, count : integer;     values : array[0..8] of variant; begin     count:=round((length(pck)-5)/ReadH(4));     for j:=1 to 12 do for i:=1 to maxitems do BaseItems[i,j]:=0;     for i:=0 to ReadH(4)-1 do         begin             readmask('dddqhhhdh', 6+i*count, values);             BaseItems[i+1,2]:=values[0];             BaseItems[i+1,3]:=values[1];             BaseItems[i+1,5]:=values[3];             BaseItems[i+1,10]:=values[8];         end; end; //...................................... Procedure InventoryUpdate; var     i, j, obj, count : integer;     values : array[0..9] of variant; begin     count:=round((length(pck)-3)/ReadH(2));     for i:=0 to ReadH(2)-1 do         begin             readmask('hdddqhhhdh', 4+i*count, values);             case values[0] of                 1: obj:=0;                 2: obj:=values[1];                 3: begin                     for i:=1 to maxitems do                         if BaseItems[i,2]=values[1] then                             begin                                 for j:=1 to 12 do BaseItems[i,j]:=0;                                 break;                             end;                     continue;                    end;             end;             for i:=1 to maxitems do                 if BaseItems[i,2]=obj then                     begin                         BaseItems[i,2]:=values[1];                         BaseItems[i,3]:=values[2];                         BaseItems[i,5]:=values[4];                         BaseItems[i,10]:=values[9];                         break;                     end;         end; end;
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 3 спасибками от: