Сайт обо всём!!!Пятница, 22.11.2024
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Написание программ на языке LUA, будем учить и учится вместе
EquiTablEДата: Суббота, 20.03.2010, 23:10 | Сообщение # 1
Генералиссимус
Группа: Проверенные
Сообщений: 82
Репутация: 12
Статус: Offline

Часть 3 [Часть 2, Часть 1]



AutoPlay Media Studio - мощная программа для создания меню автозагрузки CD/DVD. Эта программа создаст все необходимые файлы для автозапуска и его графическую оболочку. Пользователю останется лишь записать готовый проект на свой CD/DVD.
AutoPlay Media Studio не требует от пользователя никаких особых знаний и очень прост в освоении, имеет дружественный и интуитивно понятный интерфейс. Приложение, которое будет создано AutoPlay Media Studio в конце работы, представлено в виде объектной модели. Эта модель состоит из группы отдельных страниц. На этих страницах можно размещать объекты, которые могут представлять собой графику, музыку, текст, видео, Flash, HTML и пр. Любому элементу можно назначить определенное действие. Например, при наведении на рисунок курсора мыши, может возникать текст с комментариями, при нажатии на кнопку "Play" начнет проигрываться фильм и т.д. Программа предоставляет сотни различных действий, которые можно связать с объектами. В AutoPlay Media Studio присутствует большое количество уже готовых шаблонов.
AutoPlay Media Studio имеет широкие возможности и богатый набор инструментов для разработки мультимедийных проектов. Использовать программу можно не только для создания файлов автозапуска, но и, например, для разработки интерактивного обучающего софта или мультимедийной презентации.

Язык интерфейса: английский
Страница загрузки: AutoPlay Media Studio Trial v7.5.1006.0
Язык интерфейса: Русский
Страница загрузки: Скачать AutoPlay Media Studio RUS
Рекомендуемое дополнение: AMS PluginPowerPack by Kindly v4.0 - Зеркало
Это дополнение содержит все последние плагины, расширяющие возможности AMS, на момент его выпуска (02.08.09).

Учимся работать с AMS:
Ресурс 1 - Ресурс 2 - Ресурс 3 - Ресурс 4

Скриптовый язык LUA:
Ресурс 1 (En) - Ресурс 2 (Ru)

Ресурсы, посвященные AMS (содержат коллекции примеров, дополнений, уроков):

  • amsplugins.com
  • amsuser.com
  • azman.info
  • icynorth.com
  • warmuskerken.com

    smile Ответы на наиболее часто задаваемые вопросы:

  • Альтернативный перенос строки для текста (подходит и для *.ini) от Zloy_Gelud
  • Активация кнопок по информации из реестра (на примере авторана для игр) от Zloy_Gelud
  • Виды путей, используемых в AMS от GOOSE
  • Включение отключение фоновой музыки кнопкой
  • Вывод HTML отчета с использованием SQLite плагина от IndigoRose
  • Выделение и копирование в буфер текста, части текста от GOOSE
  • Для тех, у кого русский проект с "кракозяблами"
  • Запуск WinRAR'a для распаковки архивов от Reineke
  • Запуск файлов из Web объекта
  • Запуск/открытие файлов из Web объекта от tavria2
  • Запускаем экзешник по информации из реестра от Lexua
  • Пример бегущей строки (более красивый способ) от tavria2
  • Из окна в полноэкранный режим и обратно
  • Изменяем иконку приложения от Lexua
  • Изменяем курсор в приложении от GOOSE
  • Изменяем скроллинг ListBox-у от GOOSE
  • Используем таймер
  • Отображение процесса распаковки файла из ZIP-архива + общий прогресс распаковки от Zloy_Gelud
  • Отправка данных из форм по e-mail от GOOSE
  • Перенос строки во всплывающей подсказке от GOOSE
  • Показ, скрытие объектов по действиям мыши
  • Полноэкранный режим для приложения
  • Последовательный запуск нескольких файлов
  • Проблема с путями при создании приложения .EXE и ресурсами на CD от Reineke
  • Проверка на существование копии проекта aka запрет повторного запуска от tavria2
  • Проигрвывание MP3 из ListBox-а подряд от UMode
  • Простой пример бегущей строки от GOOSE
  • Работаем с запароленными архивами от GOOSE
  • Работаем с объектом дерева от GOOSE
  • Ряд вопросов и ответов по созданию меню для DVD от tavria2
  • Реализация Play-листов для Винампа от BOObastis
  • Таблица дисков системы от Lexua
  • Изменение стиля границ окна проекта от tavria2
  • Многострочная подсказка (tooltip) от tavria2


    Каждому своё...

    Сообщение отредактировал KENT - Воскресенье, 21.03.2010, 19:42
  •  
    KENTДата: Понедельник, 22.03.2010, 23:11 | Сообщение # 2
    ADMIN
    Группа: Проверенные
    Сообщений: 75
    Репутация: 10020
    Статус: Offline
    Сегодня будем писать программу довольно таки сложную которая будет редактировать фаил игры GTA4 хандинг.дат


    AMD Phenom II Х4 945@3900 DDR3 2x2GB @1390 8,8,8,20 GA-MA790FXT-UD5P AMD Radeon HD5850 1GB DDR5 @1000/5200 Ice Hammer IH-4401 3Dmark06 22218, вантеч P16227
     
    KENTДата: Понедельник, 22.03.2010, 23:31 | Сообщение # 3
    ADMIN
    Группа: Проверенные
    Сообщений: 75
    Репутация: 10020
    Статус: Offline

    Для начала скачиваем программу она есть в шапке.
    Устанавливаем программу.
    Запускаем программу и создаём новый пустой проект.
    Открываем в меню

    Quote
    Инструменты>Проводник сценария

    В Global Functions пишем следуещее

    Code
    Application.LoadScript("DelimitedStringFunctions.lua");

    Тут же раскрываем Page1 и пишем туда следающий код
    Code

    function GetIdValues(strVehicleID)
                     tblResult = {};
                     local tblID = TextFile.ReadToTable(strPATH);
                     if (tblID) then
                      for i, strID in tblID do
                       tblPart = DelimitedStringToTable(strID, " ");
                       if (tblPart) then                    
                        if (tblPart[1] == strVehicleID) then
                         for n = 1, Table.Count(tblPart) do                      
                          tblResult[Table.Count(tblResult) + 1] = tblPart[n];
                         end
                        end
                       end                    
                      end
                     end
                     r  e turn tblResult;
    end

    function GetIdName()
                     if File.DoesExist(strPATH) then
                      tblResult_1 = {}; --tblResult_2 = {};
                      tblLines = TextFile.ReadToTable(strPATH);
                      if (tblLines) then
                       for i, strLine in tblLines do
                        if (String.Mid(strLine, 1, 1) ~= "%") and (String.Mid(strLine, 1, 1) ~= "!") and (String.Mid(strLine, 1, 1) ~= "$") and (String.Mid(strLine, 1, 1) ~= "^") then
                         tblPart = DelimitedStringToTable(strLine, " ");
                         if (tblPart) then                    
                          tblResult_1[Table.Count(tblResult_1) + 1] = tblPart[1];
                         --else
                          --tblResult_2[Table.Count(tblResult_2) + 1] = strID;
                         end
                        end
                       end
                       --for n = Table.Count(tblResult_1) + 1, Table.Count(tblID) do
                       --    tblResult_2[Table.Count(tblResult_2) + 1] = tblID[n];
                       --end
                      end
                     end
                     return tblResult_1, tblLines;
    end

    Далее нажимаем кнопочку закрыть.

    Делаем 2й клик около окна проекта выставляем нужный размер окна, в моём случае это 500х600.
    далее делаем 2й клик по окну и там меняем цвет фона окна если конечно хотим его поменять, также фоном можно сделать любую картинку, вот скриншот что у нас получилось.


    Далее добавляем объекты

    Quote
    ComboBox1-Это выпадающий список
    Input1-Это поле ввода текста их нам надо будет очень много
    Button1-Это кнопка нужно 3-4 кнопки
    Объекты добовляем кликом правой кнопки мишки на окне проекта.

    Так как значений очень много делать всё придётся очень плотно чтобы получить компактную программу. Получаем примерно сдуещие

    Я решил отказатся от фоновой картинки так как она мешает немного. Раставляем объекты примерно таким образом.

    Далее кликаем 2 раза по элементу раскрывающигося списка и во вкладке скрипт прописываем следующие в раздео он селект

    Code
    if (e_Selection) then
           if (strPATH) then
            tblValues = GetIdValues(ComboBox.GetItemText("ComboBox1", e_Selection));
           end
    end

    if tblValues then
           for i = 2, 37 do
            Input.SetText("Input"..i, tblValues[i]);
           end
    end

           --[[Input.SetText("Input2", tblValues[2]);
           Input.SetText("Input2", tblValues[3]);
                 
           Input.SetText("Input3", tblValues[5]);
           Input.SetText("Input4", tblValues[6]);
           Input.SetText("Input5", tblValues[7]);
                 
           Input.SetText("Input6", tblValues[8]);
           Input.SetText("Input7", tblValues[9]);
           Input.SetText("Input8", tblValues[10]);       
           Input.SetText("Input9", tblValues[11]);
           Input.SetText("Input10", tblValues[12]);
                 
           Input.SetText("Input11", tblValues[22]);       
           Input.SetText("Input12", tblValues[23]);
           Input.SetText("Input13", tblValues[24]);
           Input.SetText("Input14", tblValues[25]);       
           Input.SetText("Input15", tblValues[26]);
           Input.SetText("Input16", tblValues[27]);
           Input.SetText("Input17", tblValues[28]);
                 
           Input.SetText("Input18", tblValues[13]);
           Input.SetText("Input19", tblValues[14]);
                 
           Input.SetText("Input20", tblValues[16]);
           Input.SetText("Input21", tblValues[17]);
           Input.SetText("Input22", tblValues[18]);
           Input.SetText("Input23", tblValues[19]);
           Input.SetText("Input24", tblValues[20]);       
           Input.SetText("Input25", tblValues[21]);
                 
           Input.SetText("Input26", tblValues[29]);
           Input.SetText("Input27", tblValues[30]);
           Input.SetText("Input28", tblValues[31]);
           Input.SetText("Input29", tblValues[32]);
                 
           Input.SetText("Input30", tblValues[4]);
           Input.SetText("Input31", tblValues[15]);
           Input.SetText("Input32", tblValues[33]);
           Input.SetText("Input33", tblValues[34]);
                 
           Input.SetText("Input34", tblValues[35]);
           Input.SetText("Input35", tblValues[36]);
           Input.SetText("Input36", tblValues[37]);]]

    Кликаем 2 раза по кнопке открыть и открываем вкладку скрипт, пишем следующий код в он клицк.

    Code
    local strREGPATH = Registry.GetValue(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GameUX\\GamesToFindOnWindowsUpgrade\\{41AD5594-259E-4DA5-8420-4050E73BC67E}", "GameInstallPath", true);
    if (strREGPATH ~= "") then
             strPATH = strREGPATH.."\\common\\data\\handling.dat";
    else
             strPATH = nil;
             local tblFiles = Dialog.FileBrowse(true, "Locate File", _DesktopFolder, "DAT Files (*.dat)|*.dat|", "", "dat", false, false);
             if (tblFiles ~= nil) and (tblFiles[1] ~= "CANCEL") then
                 strPATH = tblFiles[1];
             end
    end
    if (strPATH ~= nil) then
             tblIDs, tblLines = GetIdName();
             if (tblIDs) then
                 for i, strIDName in tblIDs do
                     result = ComboBox.AddItem("ComboBox1", strIDName, "");
                 end
                 ComboBox.SetSelected("ComboBox1", 1);
             end
    end

    Далее такоеже действие с кнопкой сохранить как только прописываем туда следуещий код

    i

    Code
    f (ComboBox.GetSelected("ComboBox1") ~= -1) then
          strOut = ComboBox.GetItemText("ComboBox1", ComboBox.GetSelected("ComboBox1"));
          for i = 2, 37 do
           strOut = strOut.." "..Input.GetText("Input"..i);
          end
          if (tblLines) then
           Table.Remove(tblLines, ComboBox.GetSelected("ComboBox1"));
           Table.Insert(tblLines, ComboBox.GetSelected("ComboBox1"), strOut);
           local tblFiles = Dialog.FileBrowse(false, "Locate File", _DesktopFolder, "DAT Files (*.dat)|*.dat|", "handling", "dat", false, false);
           if (tblFiles[1] ~= "CANCEL") then
            TextFile.WriteFromTable(tblFiles[1], tblLines, false);
           end
          end
    end

    Остальные кнопки пока не создаем, ато будет слижком сложно, делаем всё по минимуму.
    Инпут текст будут номероватся согласно таблице, когда мы открывает хандинг блокнотом видем следующие:

    Code
    ; mass in Kg
    ; velocity in Km/h
    ; acceleration/deceleration in ms-2
    ; multipliers x1.0 is default
    ; angles in degrees
    ; Levels :- (L)ow, (M)edium, (H)igh
    ; buoyancy = percent submerged (> 100% vehicle sinks)
    ; engine type :- (P)etrol, (D)iesel, (E)lectric
    ; engine drive :- (F)ront, (r)ear, (4)-wheel drive
    ;
    ; > FIELD DESCRIPTIONS <
    ; ----------------------
    ; (A) vehicle identifier   [14 characters max]
    ; (B) fMass
    ; (c) fDragMult
    ; (D) nPercentSubmerged    [10 to 120]
    ; (E) CentreOfMass.x    [-10.0 > x > 10.0]
    ; (F) CentreOfMass.y    [-10.0 > x > 10.0]
    ; (G) CentreOfMass.z    [-10.0 > x > 10.0]
    ;
    ; TRANSMISSION
    ; (Tt)    m_nDriveBias    1.0 = front wheel drive, 0.0 = rear wheel drive
    ; (Tg)    m_nDriveGears
    ; (Tf)    m_fDriveForce
    ; (Ti)    m_fDriveInertia
    ; (Tv)    m_fV
    ; (Tb)    m_fBrakeForce
    ; (Tbb)    m_fBrakeBias
    ; (Ts)    m_fSteeringLock
    ;
    ; WHEEL TRACTION
    ; (Wc+) m_fTractionCurveMax    (formerly fTractionMult)
    ; (Wc-) m_fTractionCurveMin    (formerly fTractionLoss)
    ; (Wc-) m_fTractionCurveLateral   (shape of lateral traction curve (peak traction position in degrees)
    ; (Wc|) m_fTractionCurveLongitudinal    (shape of longituduinal traction curve (peak traction position in degrees)
    ; (Ws+) m_fTractionSpringDeltaMax  (max dist for traction spring)
    ; (Wh) m_fTractionBias
    ;
    ; SUSPENSION
    ; (Sf)    m_fSuspensionForce    (1 / (Force * NumWheels) = Lower limit for zero force at full extension
    ; (Scd)    m_fSuspensionCompDamp
    ; (Srd)    m_fSuspensionReboundDamp
    ; (Su)    m_fSuspensionUpperLimit
    ; (Sl)    m_fSuspensionLowerLimit
    ; (Sr)    m_fSuspensionRaise
    ; (Sb)    m_fSuspensionBias
    ;
    ; DAMAGE
    ; (Dc)    m_fCollisionDamageMult
    ; (Dw)    m_fWeaponDamageMult
    ; (Dd)    m_fDeformationDamageMult
    ; (De)    m_fEngineDamageMult
    ;
    ; MISC
    ; (Ms)    m_fSeatOffsetDist
    ; (Mv)    m_nMonetaryValue
    ; (Mmf)    mFlags   (model flags - see below)
    ; (Mhf) hFlags   (handling flags - see below)
    ; (Ma)    m_nAnimGroup    (anim group type - see below below)
    ;
    ; MODEL FLAGS - written HEX for easier reading of flags
    ;    1st digit    1: IS_VAN   2: IS_BUS   4: IS_LOW    8: IS_BIG
    ;    2nd digit    1: ABS_STD   2: ABS_OPTION  4: ABS_ALT_STD   8: ABS_ALT_OPTION
    ;    3rd digit    1: NO_DOORS   2: TANDEM_SEATS  4: SIT_IN_BOAT   8: N/A
    ;    4th digit    1: NO_EXHAUST  2: DOUBLE_EXHAUST    4: NO1FPS_LOOK_BEHIND    8: CAN_ENTER_IF_NO_DOOR
    ;    5th digit    1: AXLE_F_NOTILT    2: AXLE_F_SOLID  4: AXLE_F_MCPHERSON  8: AXLE_F_REVERSE
    ;    6th digit    1: AXLE_R_NOTILT    2: AXLE_R_SOLID  4: AXLE_R_MCPHERSON  8: AXLE_R_REVERSE
    ;    7th digit    1: IS_BIKE   2: IS_HELI   4: IS_PLANE    8: IS_BOAT
    ;    8th digit    1: BOUNCE_PANELS    2: DOUBLE_RWHEELS    4: FORCE_GROUND_CLEARANCE    8: IS_HATCHBACK
    ;
    ; HANDLING FLAGS - written HEX for easier reading of flags
    ;    1st digit    1: SMOOTH_COMPRESN    2: N/A    4: NPC_ANTI_ROLL  8: NPC_NEUTRAL_HANDL
    ;    2nd digit    1: NO_HANDBRAKE  2: STEER_REARWHEELS 4: HB_REARWHEEL_STEER    8: ALT_STEER_OPT
    ;    3rd digit    1: WHEEL_F_NARROW2    2: WHEEL_F_NARROW    4: WHEEL_F_WIDE   8: WHEEL_F_WIDE2
    ;    4th digit    1: WHEEL_R_NARROW2    2: WHEEL_R_NARROW    4: WHEEL_R_WIDE   8: WHEEL_R_WIDE2
    ;    5th digit    1: HYDRAULIC_GEOM  2: HYDRAULIC_INST    4: HYDRAULIC_NONE  8: NOS_INST
    ;    6th digit    1: OFFROAD_ABILITY    2: OFFROAD_ABILITY2    4: HALOGEN_LIGHTS  8: PROC_REARWHEEL_1ST
    ;    7th digit    1: USE_MAXSP_LIMIT    2: LOW_RIDER  4: STREET_RACER
    ;    8th digit    1: SWINGING_CHASSIS    2: OLD_PHYSICS
    ;
    ; > THE DATA <
    ; name mass drag boy centreofmass   transmission    brakes steer    wheel-traction    suspension         damage    seat val  mflags hflags   anim
    ; A B C D E F G   Tt Tg Tf  Ti Tv    Tb Tbb Thb Ts  Wc+ Wc- Wc- Ws+ Wbias  Sf Scd Srd Su Sl Sr Sb   Dc Dw Dd De  Ms Mv   Mmf   Mhf     Ma
    ;
    ADMIRAL  1700.0 6.0 85    0.0 0.0 -0.2   0.0 5 0.17 1.0 140.0    0.22 0.65 0.7 35.0  1.2 0.95 14.0 0.13 0.47  1.6 1.0 1.0 0.15 -0.16 0.0 0.5   1.0 1.0 0.7 1.5  0.0 25000   440080  0    0
    AIRTUG 1400.0 20.0 85    0.0 0.0 -0.2   0.0 5 0.10 1.0 140.0    0.4 0.50 0.7 35.0  1.15 0.95 11.0 0.10 0.5   4.0 1.5 1.5 0.10 -0.10 0.0 0.5   1.0 1.0 0.8 1.5  0.0 15000   440000  0    0

    На это надо смотреть в блокноте тут есть перенос строки и не много не понятно, ну ладно щас попробую объяснить.

    видим примерно следуещие:
    A B C D E F G Tt Tg Tf Ti Tv Tb Tbb
    ADMIRAL 1700.0 6.0 85 0.0 0.0 -0.2 0.0 5 0.17 1.0 140.0 0.22

    столбик A эту у нас значение 1 равное первому столбику тоесть выводит название так: ADMIRAL

    столбик B у нас имеет зеачение 1700.0 это значение 2, тоесть инпут2 будет иметь значение 2, почему не значение 1 ? да потомучто в раскрывающимся списке выводится название машины, тоест весь стольбик A остальные начиная со 2го значения будут выводится в инпут2 инпут3 и так далее..

    как нам узначь что означет значение 1 2 3 4 итп ?
    смотрим фаил хондинг выше там есть следующие
    ; (A) vehicle identifier [14 characters max]
    ; (B) fMass
    ; © fDragMult

    A это у нас модель
    B это масса
    C Это множитель столкновения и так далее все колонки..

    A это значение 1 выводится в раскрывающийся список, B значение 2 выводится в инпут2, C значение 3 будет выводится в инпут3 итак далее все значения в инпут прописываем тоесть ставим нужную цифру столбика и на против его пишем что будет редактировать данный инпут.

    Скрины уже работающий программы вот:

    Удачи в написании своей программы, сли чо пишите на форум подскажу чо смогу wink

    Прикрепления: 4969902.gif (101.2 Kb) · 0330606.gif (116.7 Kb) · 7488651.gif (85.7 Kb) · 3701534.gif (40.1 Kb) · 1046152.gif (41.8 Kb)



    AMD Phenom II Х4 945@3900 DDR3 2x2GB @1390 8,8,8,20 GA-MA790FXT-UD5P AMD Radeon HD5850 1GB DDR5 @1000/5200 Ice Hammer IH-4401 3Dmark06 22218, вантеч P16227
     
    KENTДата: Среда, 24.03.2010, 21:44 | Сообщение # 4
    ADMIN
    Группа: Проверенные
    Сообщений: 75
    Репутация: 10020
    Статус: Offline
    Создание простейшей программы котора по нажатию на определёную кнопочку будет запускать игру.
    Создаем объект кнопка.
    Кликаем мышкой по ней 2 раза, в открывшимся окне выбераем последнею вкладку скрипт, там открывает онклицк и пишем туда следающий код :
    Code
    result = File.Run("E:\GAMES\Grand Theft Auto IV\LaunchGTAIV.exe", "", "", SW_SHOWNORMAL, false);

    После этого закрываем окно кнопкой ок.
    Затем перейдёшь в первую вкладку там напишешь название кнопки в моём случее это гта4, только выбери шрифт и поставь там кирилица а то руские шрифты тупить будут.
    Потом создашь сколько надо кнопок таким образом.

    Нажмёш кнопочку ф5 запустится прога в тестовом режиме, тоесть она будет функционировать но не сохранена как приложение.
    Чтобы созранить прогу на финт нажимает ф7 и галочку ставим исполнямый ехе фаил сохранить куда указываем путь.
    И всё готова ваша простейшая программа!



    AMD Phenom II Х4 945@3900 DDR3 2x2GB @1390 8,8,8,20 GA-MA790FXT-UD5P AMD Radeon HD5850 1GB DDR5 @1000/5200 Ice Hammer IH-4401 3Dmark06 22218, вантеч P16227
     
    • Страница 1 из 1
    • 1
    Поиск:

    KENT © 2024