| 
 DreamShell lua source code - SWAT -  02.09.2005 00:12
 
 Думаю для лучшего изучения DreamShell lua скриптов, можно кидать исходники своих скриптов на форуме, так на примерах будет лучше понять:)
 Я вот начал уже обновлять CMD Path, сделал одну новую команду, она может конвертировать файл браузера DK или DP в обычный файл, чтобы можно было его использовать в DS(например скрипты). Так же комнда может сразу запускать скрипты из файлов браузера, перед тем сама сконвертировав его.
 Ну вообщем вот сам исходник:
 
 
 
Код:
 -- DK/DP VMU files manager v1.6-- Created by SWAT
 -- http://www.dc-swat.net.ru
 -- dc-swat@nm.ru
 -- Usage: lua bfm.lua -flag infile.lua outfile.lua(if needed)
 
 if argv.n < 2 then
 print("Usage: bfm -flag file_in file_out(if needed)")
 print("Flags:")
 print(" -c    -Convert DK or DP VMU file to normal file")
 print(" -rl   -Run lua script from DK or DP VMU file")
 print(" -rd   -Run dscript from DK or DP VMU file")
 return
 end
 
 
 function dpf_convert(filein, fileout)
 local buff
 local fin = assert(io.open(filein,"r"))
 fin:seek(set, 704)
 local type = fin:read(5)
 
 if type == "From:" then
 
 fin:seek(cur, 101)
 buff = fin:read("*a")
 
 end
 
 if type ~= "From:" then
 
 fin:seek(cur, -5)
 buff = fin:read("*a")
 
 end
 
 io.close(fin)
 local fout = assert(io.open(fileout,"w"))
 fout:write(buff)
 io.close(fout)
 end
 
 
 
 -- DS.makeabspath(fnin, argv[2], 256);
 fnin = argv[2]
 
 if argv[1] == "-c" then
 -- DS.makeabspath(fnout, argv[3], 256);
 fnout = argv[3]
 dpf_convert(fnin, fnout)
 return
 end
 
 
 if argv[1] == "-rl" then
 dpf_convert(argv[2], "/ram/bf_temp_file___.lua")
 DS.ds_exec_one("lua /ram/bf_temp_file___.lua");
 DS.ds_exec_one("rm /ram/bf_temp_file___.lua");
 return
 end
 
 
 if argv[1] == "-rd" then
 dpf_convert(argv[2], "/ram/bf_temp_file___.dsc")
 DS.ds_exec_one("dscript /ram/bf_temp_file___.dsc");
 DS.ds_exec_one("rm /ram/bf_temp_file___.dsc");
 return
 end
 Причем данный скрипт использует стандартные функции для работы с файлами lua 5... Хоть я интегрировал туда и KOS и стандартные Си функции работы с файлами, думаю нет необходимости писать лишнее если можно это было сделать и со стандартными:)
 Да и кстати, прошу заметить коментарии сверху скрипта, в скрипте должен быть хотябы один коментарий в самом верху файла! Когда DreamShell определяет из чего сделана команда(а она может быть dscript, lua и bin) она заглядывает в нутрь файла и определяет что это. Так же в случае и с DScript, у него тоже должен быть комментарий сверху, только он там обозначается символом решетки - #
 Надеюсь появятся люди которые будут поддерживать DreamShell все большим числом команд ;)Если что будет не понятно, я обязательно помогу!
 И еще, советую использовать редактор lua скриптов для подсветки синтаксиса, так будет полегче:)Есть один хороший, которым я пользуюсь, называется LuaEdit скачать его мона на сайте http://luaedit.luaforge.net/
 
 
 DreamShell lua source code - SWAT -  05.09.2005 00:42
 
 Скрипт для рипа GD-ROM'ов с помощью модема.
 Пока конечно не удобен в использовании из за того что сектора нужно указывать самому :(
 Просто я не внедрил в lua пару нужных сидиромных функций, у меня просто не получилось их туда засунуть, если бы они там были бы, то процесс я бы сделал полностью автомотическим, а так придется указывать сектора, думаю можно просто указать весь диск :) скрипт сам рубанет процесс, когда читать будет нечего :)
 Да и кстати, нет поддержки GD-ROM с аудио треками...
 Я не смог сделать автораспознание, по той же причине, но если уж так надо будет, то просто нужно поменять размер сектора на 2352.
 Вообщем вот:
 
 
 
Код:
 -- RIP GD-ROM with modem using-- Created by SWAT
 -- http://www.dc-swat.net.ru
 -- dc-swat@nm.ru
 -- Usage: lua gdrip.lua first_sector num_sec_for_read
 
 
 function write_data(sbuf, sbyte)
 
 local bw = DS.modem_write_data(sbuf, sbyte);
  
 if bw == 0 then
   print("DS_ERROR: 0 bytes written, maybe modem is not connected?")
 end
      
 return bw
 end
 
 
 
 function rip_sec(first, nsec)
 
 local secbyte, rerr, werr, istep, secbuf
 secbyte = 2048
 rerr = 0
 werr = 1
 
 print("\nCerrent Sector | Total MBytes\n")
 
 for istep=0, nsec do
 
 rerr = DS.cdrom_read_sectors(secbuf,first+istep,1)
  
  if rerr ~= 0 then
       print("DS_ERROR: GD-ROM read error")
     return
  end
  
 werr = write_data(secbuf,secbyte)
  
    if werr == 0 then
          break
  end
  
        if istep == 0 then
           print(first+istep, "", secbyte/102400)
        end
        
        if istep > 0 then
           print(first+istep, "", istep*secbyte/102400)
        end
 end
 end
 
 
 if argv.n < 2 then
   print("Usage: gdrip first_sector num_sec_for_read \n")
   print("DS_INF: Do not overlook to connect the modem before the beginning!")
  return
 end
 
 print("DS_PROCESS: Ripping GD-ROM...")
 rip_sec(tonumber(argv[1]), tonumber(argv[2]))
 Модемное подключение выбираете сами, сначало подключаетесь с помощью команды modem, а потом рипаете...
 Для РС прогу я не писал, может попробую... Я просто незнаю как там с модемом работать :)
 Может кто поможет с этим?
 
 Можно попробовать сделать на TCP/IP, просто в рипе сделать клиент а для РС сервер, так я сделать смогу, но вот я не уверен в корректной работе PPP соединения в DreamShell...
 
 
 DreamShell lua source code - SWAT -  06.09.2005 02:29
 
 Окончательно решился обучению вас скриптам :)
 Привожу примеры скриптов с использованием SDL.
 Скрипт выполнены в 2 версиях, одна для интерпритатора скриптов для РС, сделанный мной с поддержкой SDL специально для проверки скриптов на РС, он находится в DreamShell Service v5.
 Вторая непосредственно для DreamShell.
 Скрипт включает в себя функции для загрузки и показа картинок на экране:
 
 DreamShell Service version
 
 
Код:
 -- DreamShell lua SDL Test 2, Load and display images-- Created by SWAT
 
 SDL.SDL_BlitSurface = SDL.SDL_UpperBlit;
 
 function ShowIMG(file, screen)
 local img_t
 
 img_t = SDL.IMG_Load(file);
 
 if img_t == nil then
 print("DS_ERROR: Couldn't load ", file);
 return;
 end
 
 SDL.SDL_BlitSurface(img_t, NULL, screen, NULL);
 SDL.SDL_Flip(screen);
 SDL.SDL_FreeSurface(img_t);
 end
 
 
 function ShowIMG_xy(file, screen, x, y)
 local img_t, dest
 
 dest = SDL.SDL_Rect_new();
 
 img_t = SDL.IMG_Load(file);
 
 if img_t == nil then
 print("DS_ERROR: Couldn't load ", file);
 return;
 end
 
 dest.x = x
 dest.y = y
 dest.w = img_t.w
 dest.h = img_t.h
 
 SDL.SDL_BlitSurface(img_t, NULL, screen, dest);
 SDL.SDL_Flip(screen);
 SDL.SDL_FreeSurface(img_t);
 end
 
 
 -- Инициализируем SDL
 SDL.SDL_Init(SDL.SDL_INIT_VIDEO);
 
 -- Устанавливаем видеорежим
 flags = SDL.bit_or(SDL.SDL_HWSURFACE, SDL.SDL_DOUBLEBUF);
 screen = SDL.SDL_SetVideoMode(640,480,16,flags);
 
 
 -- Показываем картинку
 ShowIMG("image.jpg", screen)
 
 -- Ждем 3 секунды
 SDL.SDL_Delay(3000);
 
 -- Показываем картинку с указанием координат
 ShowIMG_xy("image.jpg", screen, 100, 50)
 
 -- Ждем 3 секунды
 SDL.SDL_Delay(3000);
 
 DreamShell version
 
 
Код:
 -- DreamShell lua SDL Test 2, Load and display images-- Created by SWAT
 
 SDL.SDL_BlitSurface = SDL.SDL_UpperBlit;
 
 function ShowIMG(file, screen)
 local img_t
 
 img_t = SDL.IMG_Load(file);
 
 if img_t == nil then
 print("DS_ERROR: Couldn't load ", file);
 return;
 end
 
 SDL.SDL_BlitSurface(img_t, NULL, screen, NULL);
 SDL.SDL_Flip(screen);
 SDL.SDL_FreeSurface(img_t);
 end
 
 
 function ShowIMG_xy(file, screen, x, y)
 local img_t, dest
 
 dest = SDL.SDL_Rect_new();
 
 img_t = SDL.IMG_Load(file);
 
 if img_t == nil then
 print("DS_ERROR: Couldn't load ", file);
 return;
 end
 
 dest.x = x
 dest.y = y
 dest.w = img_t.w
 dest.h = img_t.h
 
 SDL.SDL_BlitSurface(img_t, NULL, screen, dest);
 SDL.SDL_Flip(screen);
 SDL.SDL_FreeSurface(img_t);
 end
 
 
 -- Закрываем графику DreamShell
 DS.ds_draw_shutdown();
 
 -- Показываем картинку
 ShowIMG("/rd/image/logos/DSXT1.jpg", DS.screen)
 
 -- Ждем 3 секунды
 SDL.SDL_Delay(3000);
 
 -- Показываем картинку с указанием координат
 ShowIMG_xy("/rd/image/logos/DSXT1.jpg", DS.screen, 100, 50)
 
 -- Ждем 3 секунды
 SDL.SDL_Delay(3000);
 
 -- Инициализируем назад графику DreamShell
 DS.ds_draw_init();
 
 
 DreamShell lua source code - SWAT -  06.09.2005 23:59
 
 В связи с вынужденным обновлением DS, я решил воспользоваться возможностью и всетаки впихнуть нужные функции для CD-ROM.
 И написал более автоматизированный скрипт по рипу GD-ROM'ов
 Теперь не нужно указывать сектора, скрипт все треки сам рипанет и рипанет как надо :)
 
 Работает он естественно только в v2.3.1
 
 
 
Код:
 -- RIP GD-ROM with modem using v1.5-- Created by SWAT
 -- http://www.dc-swat.net.ru
 -- dc-swat@nm.ru
 -- Usage: lua gdrip.lua
 
 
 
 function write_data(sbuf, sbyte)
 
 return DS.modem_write_data(sbuf, sbyte);
 
 end
 
 
 
 function rip_sec(trak_num, first, nsec, type)
 
 local secbyte, rerr, werr, istep, secbuf
 
 
 if type == 4 then
   secbyte = 2048
 end
 
 if type ~= 4 then
   secbyte = 2352
 end
 
 rerr = 0
 werr = 1
 
 print("\nCerrent Sector | Total MBytes| Track number\n")
 
 for istep=0, nsec do
 
  
 rerr = DS.cdrom_read_sectors(secbuf,first+istep,1)
  
  if rerr ~= 0 then
       print("DS_ERROR: GD-ROM read error")
     return
  end
 
 werr = write_data(secbuf, secbyte)
 
  
    if werr == 0 then
        print("DS_ERROR: 0 bytes written, maybe modem not connected?")
          break
  end
  
        if istep == 0 then
           print(first+istep, "", secbyte/102400, "", trak_num)
        end
        
        if istep > 0 then
           print(first+istep, "", istep*secbyte/102400, "", trak_num)
        end
 end
 end
 
 
 
 
 
 
 print("DS_PROCESS: Ripping GD-ROM...")
 
 local start, s_end, s_size, type, tn
 toc = DS.CDROM_TOC_new();
 
 for session=0, 1 do
 
 local ret = DS.cdrom_read_toc(toc, session);
 if ret > 0 then
  print("DS_ERROR: Toc read error")
     return
 end
 
 local first = DS.TOC_TRACK_(toc.first);
 local last = DS.TOC_TRACK_(toc.last);
 
 print("DS_INF: Session ", session+1)
 
 for tn=first, last do
 
  type = DS.TOC_CTRL_(toc.entry[tn-1]);
  start = DS.TOC_LBA_(toc.entry[tn-1]);
  
  if tn == last then
    s_end = DS.TOC_LBA_(toc.dunno);
  end
 
  if tn ~= last then
    s_end = DS.TOC_LBA_(toc.entry[tn]);
  end
 
  s_size = s_end - start
  rip_sec(tn, start, s_size, type)
 end
 end
 
 print("DS_OK: End ripping.")
 
 
 DreamShell lua source code - zaero -  01.10.2005 18:48
 
 Вот калькулятор:
 
 
 
 
Код:
 -- lua calc by zaero-- zaero@list.ru
 
 if argv.n < 1 then
 print("\n\nLua calc v.0.1 by zaero")
 print("Usage: calc -flag(if needed) arg1 operator arg2")
 print("Flags:")
 print(" -d    -date and clock")
 print(" -o    -operations")
 print(" -v    -print version")
 print(" -h    -help")
 print("\n")
 print("Examples: calc 2 / 2")
 print("\t  calc 2 + 2")
 return
 end
 
 if argv[1] == "-v" then
 print("Lua calc 0.1 for DreamshellXT")
 return
 end
 
 if argv[1] == "-o" then
 print("This version supports such operations: +, -, *, /")
 return
 end
 
 if argv[1] == "-h" then
 print("This flag is not supported")
 return
 end
 
 if argv[1] == "-d" then
 print(os.date())
 return
 end
 
 if argv[1] then
 if argv[2] then
 
 if argv[2] == '+' then
 print(argv[1]+argv[3])
 end
 if argv[2] == '-' then
 print(argv[1]-argv[3])
 end
 if argv[2]== '*' then
 print(argv[1]*argv[3])
 end
 if argv[2]== '/' then
 print(argv[1]/argv[3])
 end
 
 end
 return
 end
 
 
 DreamShell lua source code - SWAT -  02.10.2005 20:18
 
 Вот пример использования функций файловой системы KOS в DS lua скриптах:
 
 Скрипт считает количество файлов в директории и выдает их имена.
 
 
Код:
 -- KOS Filesystem in lua test - Reading dir's-- Created by SWAT
 -- http://www.dc-swat.net.ru
 -- dc-swat@nm.ru
 
 
 local ent
 
 function read_dir(hnd)
 
 ent = DS.fs_readdir(hnd)
 return ent
 
 end
 
 
 function find_files_count(dirname)
 
 local flags = SDL.bit_or(DS.O_RDONLY, DS.O_DIR);
 local fcount = 0
 
 hnd = DS.fs_open(dirname, flags);
 
 if hnd == -1 then return 0 end
 
 
 while read_dir(hnd) do
 
 
 if ent.name ~= ".." then
 
 -- Use if needed print list files
 print(ent.name)
 
 fcount = fcount + 1
 
 end
 end
 
 DS.fs_close(hnd);
 return fcount
 
 end
 
 
 -- Example using
 local cn = find_files_count("/cmd")
 print(cn)
 
 
 DreamShell lua source code - SWAT -  02.10.2005 20:48
 
 Еще один пример работы с файлами в DS lua с использованием KOS filesystem.
 
 
 Скрипт считывает все данные из одного файла и записывает их в другой:
 
 
Код:
 -- KOS Filesystem in lua test - Reading and writing primitive-- Created by SWAT
 -- http://www.dc-swat.net.ru
 -- dc-swat@nm.ru
 
 
 
 local buff
 
 -- Открываем файл
 local src = DS.fs_open("/rd/doc/about.txt", DS.O_RDONLY);
 
 -- Проверяем, открылся ли файл?
 if src < 0 then
 
 print("DS_ERROR: Error opening ", srcfn);
 return
 
 end
 
 
 -- Тоже самое...
 local dest = DS.fs_open("/ram/about.txt", DS.O_WRONLY);
 
 if dest < 0 then
 
 print("DS_ERROR: Error opening ", destfn);
 DS.fs_close(src);
 return;
 
 end
 
 -- Узнаем размер файла src
 local sizef = DS.fs_total(src);
 
 -- Считываем все данные из файла src
 DS.fs_read(src, buff, sizef);
 
 -- Записываем все прочтенные данные из файда src в файл dst
 DS.fs_write(dest, buff, sizef);
 
 -- Закрываем файлы
 DS.fs_close(src);
 DS.fs_close(dest);
 
 
 DreamShell lua source code - alex -  12.11.2005 22:18
 
 извиняюсь что не совсем в тему:)
 на днях наткнулся на сайт
 и у меня возник вопрос
 а мона ли такое на dreamshell lua сделать:)
 
 
 DreamShell lua source code - zaero -  12.11.2005 22:38
 
 Впринципе можно такое сделать на луа и SDL.
 
 
 Только часы не получется. Dreamshell не умеет щитать время. =(
 
 
 DreamShell lua source code - SWAT -  12.11.2005 22:46
 
 Можно взять основу, но есть некоторые функции которые интегрированы туда автором этого плеера, так же как и я делал в DS, так что его функции не полуится использовать в DS, а основу пожалуйста...
 
 
 DreamShell lua source code - zaero -  20.11.2005 22:56
 
 Сват выручай нужны примеры работы с SDL
 
 
 DreamShell lua source code - SWAT -  21.11.2005 18:31
 
 Что именно? Мне нужно знать к чему клонить то хоть...
 
 
 DreamShell lua source code - zaero -  21.11.2005 18:37
 
 Любое...
 Ну например надо вывести прямую
 
 
 DreamShell lua source code - SWAT -  21.11.2005 18:43
 
 Я попробую помочь...
 
 
 DreamShell lua source code - zaero -  21.11.2005 22:05
 
 Вот блокнот. Теперь при нажатии ентер каретка не будет возвращена и вы сможете писать дальше. Надеюсь хоть теперь кто-то начнет писать приложения, благо теперь это можно делать прямо в дримшелл.
 
 Кратко о notepad v0.3full:
 1)Для работы требует клавиатуру
 2)Теперь при нажатии на ентер вы можете писать дальше
 3)Сохраняет при нажатии на "~"(консоль, тильда)
 
 
 
Код:
 -- Lua notepad v 0.3full by zaero-- Большое спасибо Swat'y за помощь и поддержку
 -- This is notepad.
 -- http://bbrclan.dc-swat.net.ru/dreamshell/
 
 
 -- This is filter ASCII => in char.
 
 function convert_ascii(num)
 
 -- Special symbol and digital
 
 if num == 96 then return "" end
 if num == 61 then return "=" end
 if num == 59 then return ";" end
 if num == 126 then return "~" end
 if num == 32 then return " " end
 if num == 48 then return "0" end
 if num == 49 then return "1" end
 if num == 50 then return "2" end
 if num == 51 then return "3" end
 if num == 52 then return "4" end
 if num == 53 then return "5" end
 if num == 54 then return "6" end
 if num == 55 then return "7" end
 if num == 56 then return "8" end
 if num == 57 then return "9" end
 if num == 33 then return "!" end
 if num == 64 then return "@" end
 if num == 35 then return "#" end
 if num == 36 then return "$" end
 if num == 37 then return "%" end
 if num == 94 then return "^" end
 if num == 38 then return "&" end
 if num == 42 then return "*" end
 if num == 40 then return "(" end
 if num == 41 then return ")" end
 if num == 45 then return "-" end
 if num == 95 then return "_" end
 if num == 43 then return "+" end
 if num == 124 then return "|" end
 if num == 91 then return "[" end
 if num == 93 then return "]" end
 if num == 123 then return "{" end
 if num == 125 then return "}" end
 if num == 46 then return "." end
 if num == 44 then return "," end
 if num == 58 then return ":" end
 if num == 39 then return "'" end
 if num == 34 then return '"' end
 if num == 60 then return "<" end
 if num == 62 then return ">" end
 if num == 47 then return "/" end
 if num == 63 then return "?" end
 if num == 10 then return "\n" end
 
 -- Big char
 
 if num == 65 then return "A" end
 if num == 66 then return "B" end
 if num == 67 then return "C" end
 if num == 68 then return "D" end
 if num == 69 then return "E" end
 if num == 70 then return "F" end
 if num == 71 then return "G" end
 if num == 72 then return "H" end
 if num == 73 then return "I" end
 if num == 74 then return "J" end
 if num == 75 then return "K" end
 if num == 76 then return "L" end
 if num == 77 then return "M" end
 if num == 78 then return "N" end
 if num == 79 then return "O" end
 if num == 80 then return "P" end
 if num == 81 then return "Q" end
 if num == 82 then return "R" end
 if num == 83 then return "S" end
 if num == 84 then return "T" end
 if num == 85 then return "U" end
 if num == 86 then return "V" end
 if num == 87 then return "W" end
 if num == 88 then return "X" end
 if num == 89 then return "Y" end
 if num == 90 then return "Z" end
 
 -- Little char
 
 if num == 97  then return "a" end
 if num == 98  then return "b" end
 if num == 99  then return "c" end
 if num == 100 then return "d" end
 if num == 101 then return "e" end
 if num == 102 then return "f" end
 if num == 103 then return "g" end
 if num == 104 then return "h" end
 if num == 105 then return "i" end
 if num == 106 then return "j" end
 if num == 107 then return "k" end
 if num == 108 then return "l" end
 if num == 109 then return "m" end
 if num == 110 then return "n" end
 if num == 111 then return "o" end
 if num == 112 then return "p" end
 if num == 113 then return "q" end
 if num == 114 then return "r" end
 if num == 115 then return "s" end
 if num == 116 then return "t" end
 if num == 117 then return "u" end
 if num == 118 then return "v" end
 if num == 119 then return "w" end
 if num == 110 then return "x" end
 if num == 121 then return "y" end
 if num == 122 then return "z" end
 
 end
 
 
 
 function save_data(filename, data, size)
 local i
 local buff = {}
 
 fout_write = assert(io.open(filename,"w"))
 
 for i = 0, size do
 
 buff[i] = convert_ascii(data[i])
 fout_write:write(buff[i])
 
 end
 
 io.close(fout_write)
 end
 
 
 
 
 
 
 local ibuff = {}
 local bc = 0
 local exit = 1
 
 -- open input outpat streem. This need to buffer.
 
 while exit do
 
 ibuff[bc] = DS.getchar()
 
 
 
 if ibuff[bc] == 96 then
 
 save_data("/ram/note.txt", ibuff, bc)
 print("Saved in /ram/note.txt\n")
 break end
 
 
 bc = bc+1
 end
 
 
 DreamShell lua source code - SWAT -  22.11.2005 15:28
 
 Ты проверял его в самой DS? В DSS то работает DS.getchar(), а вот в DS я не уверен...
 И еще, размер буфера в твоем случае можеш делать какой хочеш, так как буфер ввода в DS тут тебе не помеха совсем, ведь буфер у тебя свой...
 А вообще молодец!!!
 
 
 DreamShell lua source code - zaero -  22.11.2005 20:14
 
 Спасибо!=)
 В дримшелл еще не проверял. Т.к не было времени подключать дрим к нету и качать скрипт.
 
 
 DreamShell lua source code - SWAT -  22.11.2005 22:11
 
 Давно пора тебе собрать Coders Cable:)
 
 
 DreamShell lua source code - zaero -  22.11.2005 22:19
 
 Надо. Были б руки прямые сделал бы =)
 А если серьезно, то надо уже делать.
 
 
 
 DreamShell lua source code - SWAT -  23.11.2005 20:09
 
 Вот обещаный пример как нарисовать примитивы в DS lua.
 Можно попробовать их как в DS так и в DSS, что для этого нужно, я написал в коментариях.
 
 
 
Код:
 -- DreamShell lua SDL Test 3, Draw func from SDL_prime-- Created by SWAT
 
 
 SDL.SDL_BlitSurface = SDL.SDL_UpperBlit;
 
 -- Инициализируем SDL(нужно сделать только если пробуем в DSS)
 -- SDL.SDL_Init(SDL.SDL_INIT_VIDEO);
 
 
 -- Закрываем графику DreamShell
 -- (Если в DSS пробуем, то удолите эту функцию или поместите в коментарий)
 DS.ds_draw_shutdown();
 
 
 -- Устанавливаем видеорежим
 flags = SDL.bit_or(SDL.SDL_HWSURFACE, SDL.SDL_DOUBLEBUF);
 screen = SDL.SDL_SetVideoMode(640,480,16,flags);
 
 
 
 -- Сделаем функцию для рисовки квадрата из функций для рисовки линий.
 
 function DrawBox(scr, x, y, width, height, clr, alpha, flags)
 
 SDL.SDL_drawLine_TG(scr, x, y, x + width, y, clr, alpha, flags);
 SDL.SDL_drawLine_TG(scr, x, y, x, y+height, clr, alpha, flags);
 SDL.SDL_drawLine_TG(scr, x+width, y, x + width, y+height, clr, alpha, flags);
 SDL.SDL_drawLine_TG(scr, x, y+height, x + width, y + height, clr, alpha, flags);
 
 end
 
 
 
 -- Что за параметры функциям я задавал,
 -- можно посмотреть в списке внедренных в DS lua функций SDL(конкретно это SDL_prime)
 
 
 -- Рисуем линию
 SDL.SDL_drawLine_TG(screen, 200, 200, 50, 50, 255, 0, SDL.SDL_TG_ANTIALIAS);
 
 -- Круг
 SDL.SDL_drawCircle_TG(screen, 300, 300, 20, 255, 0, SDL.SDL_TG_ANTIALIAS);
 
 -- Треугольник
 SDL.SDL_drawTriangle_TG(screen, 400, 400, 350, 350, 300, 300, 255, 0, SDL.SDL_TG_ANTIALIAS);
 
 -- Рисуем 1 пиксель
 SDL.SDL_putPixel(screen, 320, 240, 255);
 
 -- 1 Пиксель с альфа блендом
 SDL.SDL_blendPixel(screen, 310, 240, 255, 0);
 
 -- Квадрат
 DrawBox(screen, 100, 100, 50, 50, 255, 0, SDL.SDL_TG_ANTIALIAS);
 
 
 -- Так как видеорежим мы сделали с двойным буфером,
 -- мы меняем местами буфер тот который мы сейчас видим,
 -- на тот буфер который мы изменили поместив туда разные объекты.
 -- Если после этого мы еще что нибудь нарисуем, то потребуется вызвать эту функцию еще раз.
 
 SDL.SDL_Flip(screen);
 
 
 -- Ждем 30 секунд и наслаждаемся тем что нарисовали :)
 
 SDL.SDL_Delay(30000);
 
 
 -- Инициализируем назад графику DreamShell
 -- (Если в DSS пробуем, то удолите эту функцию или поместите в коментарий)
 
 DS.ds_draw_init();
 
 
 
 |