procedure ChangeFrontImages(oldimage, newimage: int); 
 var 
 w, h, x, y: int; 
 neko: PSprite; 
 begin 
 w:=strtoint(GetSystemVariable('bricks_x'))+1; // Узнаем кол-во бриков по X 
 h:=strtoint(GetSystemVariable('bricks_y'))+1; // Узнаем кол-во бриков по Y 
 for x:=0 to w-1 do // От нуля до конца всех бриков по X делаем... 
 for y:=0 to h-1 do // От нуля до конца всех бриков по Y делаем... 
 if GetBrickStruct(x, y).image=oldimage then // Проверяем ID брика и если ещё не изменено то... 
 begin 
 // VTDb_FreeMem; 
 neko := frontSprites.AddSprite; // Добавляем фронт спрайт 
 neko^.ImageNumber := 48; // Берём картинку палитры (48) 
 neko^.X := x*32+16; // Назначаем координату X картинке 
 neko^.Y := y*16+8; // Назначаем координату Y картинке 
 neko^.SpriteType := 1; // Ставим тип спрайта (не буду объяснять че это) 
 neko^.frame := newimage-54; // Кадр (фрэйм) нашей картинки брика (из палитры) - 54 (т.к. 54 брика это итемы кажись) 
 ChangeBrickImage(x, y, 0, 2); // После того как наложили фронт спрайт брика, удаляем настоящий брик 
 end; 
 end;  type 
 PSprite = ^TSprite; 
 TSprite = record 
 ImageNumber: integer; 
 X: single; 
 Y: single; 
 AX: single; 
 AY: single; 
 angle: integer; 
 scale: integer; 
 SpriteType: integer; 
 StartFrame: integer; 
 EndFrame: integer; 
 frame: integer; 
 prev: PSprite; 
 next: PSprite; 
 end; 
 ПОЛУЧАЕТСЯ ТАК ЧТО ЛИБО СПРАЙТЫ либо ФРОНТ БРИКИ, вместе у них несостыковачка небольшая получается 
 я уж думаю что может это потомучто в одном случае используется динамический массив а в другом обычная фииговина 
 я в этом нуб может есть какието тонкости 
 Добавление спрайта: 
 xobject: array of PSprite; 
 if (par1 = 'sp_bg') then 
 begin 
 if (par2 <> '') and (par3 <> '') and (par4 <> '') and (strtoint(par2) > 499) and (strtoint(par2) < 950) then 
 begin 
 setlength(xobject, 2); 
 XOBJX:=strtoint(par2); 
 xobject[XOBJX] := backSprites.AddSprite; 
 xobject[XOBJX]^.ImageNumber := strtoint(par2); 
 xobject[XOBJX]^.X := strtofloat(par3)*32+128; 
 xobject[XOBJX]^.Y := strtofloat(par4)*16+128; 
 xobject[XOBJX]^.SpriteType := 1; 
 xobject[XOBJX]^.frame := 0; 
 end; 
 end; 
 Где-то в этой процедуре добавления фронт брика я думаю трабла, по неизвестной причине если использовать кучу фронт-бриков 
 функции движения спрайтов и вобще спрайтов начинает глючить (при том глючит только при первом запуске, после рестарта всё нормально почему-то)... 
 Злой баг, ели выследил, теперь думаю какбы пофиксить, т.к вроде процедура написана достаточно логично... 
 FIXED Bot.dll ! Титан комплекс и прочие карты со спрайтами теперь будут работать нормально без всяких рестартов и затычек !!! FiX качать не надо Трибы все это сделают автоматически за вас 
 Также тудаже добавил команды sp_rotate & sp_frame & sp_size (че это - читать ниже)