Jump to content
Korean Random

hevi

User
  • Content Count

    18
  • Joined

  • Last visited

Posts posted by hevi


  1. 09.01.2024 в 16:04, jon12345 сказал:

     

    
    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
    
    ;[ISSI]
    #define ISSI_SplashScreen "C:\Users\jonat\Desktop\mods\images\SPLASH.bmp"
    #define ISSI_SplashScreen_T 3
    #define ISSI_SplashScreen_X 800
    #define ISSI_SplashScreen_Y 540
    #define ISSI_SplashScreen_Corner
    #define ISSI_IncludePath "C:\ISSI"
    ;#include ISSI_IncludePath+"\_issi.isi"
    #define MyAppPublisher "Loyz, Inc."
    #define Patch "1.23.0.2"
    #include "Components.iss"
    #define MyAppName         "Loyz Lite Mods"                     ;Название инстоллятора
    
    [Setup]
    AppId={{CA87A65E-9305-4849-9706-B47852EAF90F}
    AppName={#MyAppName}
    AppVersion=1.0
    AppPublisher={#MyAppPublisher} 
    DefaultDirName={code:GetWOTPath}
    OutputDir=.
    OutputBaseFilename=Beta1
    Compression=lzma
    SolidCompression=yes
    WizardStyle=modern
    ; не более 164на314.bmp Чтобы добавить изображение в левую часть окна инсталлятора
    WizardImageFile=C:\Users\jonat\Desktop\mods\images\164x314red.bmp
    WizardSmallImageFile=C:\Users\jonat\Desktop\mods\images\smalllogo.bmp
    AlwaysShowDirOnReadyPage=yes
    
    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"
    Name: "french"; MessagesFile: "compiler:Languages\French.isl"
    Name: "german"; MessagesFile: "compiler:Languages\German.isl"
    Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
    Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
    Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
    
    [Files]
    Source: logo.bmp; Flags: dontcopy nocompression
    Source: SPLASH.bmp; Flags: dontcopy nocompression
    
    [Code]
    var
      WOTPath: String;
    
    function GetWOTPath(Param: String): String;
    var
      RegPath: String;
    begin
      // Путь к реестру с информацией об установке World of Tanks
      RegPath := 'Software\Wargaming.net\GameInstall\World of Tanks';
    
      // Попытка получить путь из реестра
      if RegQueryStringValue(HKEY_LOCAL_MACHINE, RegPath, 'InstallFolder', Result) then
      begin
        Result := AddBackslash(Result);
      end
      else
      begin
        // Если не удалось получить путь из реестра, используем путь по умолчанию
        Result := 'C:\Games\World_of_Tanks\';
      end;
    end;
    
    function InitializeSetup: Boolean;
    begin
      // Присваиваем глобальной переменной WOTPath значение, чтобы использовать в DefaultDirName
      WOTPath := GetWOTPath('');
      Result := True;
    end;
    
    

     

    Вот мой код. Не могу добиться чтоб автоматически находило куда устанавливать т.е. папку с игрой World of Tanks. Поможет кто? ИИ без силен...

     

    ты снг пользователь


  2. 7 часов назад, F1nder сказал:

    Добрый день, хотелось бы спросить одну вещь. Я облазил всю тему (наверное плохо искал) не подскажите как убрать эти отступы от краёв окна?

    Заранее спасибо за ответ

    image.png.4da273e608f90dd351f72ba0e8f3ad3f.png

    где код скрипта


  3.  

    3 минуты назад, hevi сказал:

    [Setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={pf}\My Application
    OutputDir=.

    [Tasks]
    Name: task1; Description: Доп. программное обеспечение; Flags: exclusive
    Name: task1\task2; Description: DirectX; Flags: unchecked
    Name: task1\task3; Description: Microsoft Visual C++ 2005 Redist; Flags: unchecked


    var
      CheckListBox: TNewCheckListBox;

    procedure InitializeWizard();
    begin
      CheckListBox := TNewCheckListBox.Create(WizardForm);
    with CheckListBox do
    begin
      Parent := WizardForm.SelectTasksPage;
      SetBounds(WizardForm.TasksList.Left, WizardForm.TasksList.Top+ScaleY(80), WizardForm.TasksList.Width, ScaleY(80));

      AddCheckBoxEx('Язык интерфейса:', '', 0, False, False, True, False, nil, True);
      AddRadioButtonEx('Русский', '', 1, True, True, nil, False);
      AddRadioButtonEx('Английский', '', 1, True, True, nil, True);

      Color:= clWindow;
      ParentColor:= True;
      WantTabs:= True;
      BorderStyle:= bsNone;
      ItemHeightFixed := True;
      HideSelection := True;
    end;
    end;


  4. 04.06.2022 в 23:44, DraugDM сказал:

    Друзья, плиз подскажите как убрать это драное окошко?(((

    через раз выскакивает(

     

    2022-06-04-233930.jpg.0e2f2a4457143c5787a7f678165e68ea.jpg

     

     

     

    А ты пробовал в некоторых  строчках ставить точку с запятой (;;;;;;;;;;;;;)

    PicForm := TForm.Create(WizardForm)

    DeleteRadioButton.SetBounds(0, 120, WizardForm.RunList.Width, 20)

    NoneRadioButton.SetBounds(0, 150, WizardForm.RunList.Width, 20)

    BASS_Init('{tmp}\Music.mp3')

    BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', 20, 320, 36, 36, 4)

    gdipShutdown


  5. 09.02.2022 в 14:26, P.S.Enot сказал:

    Всем доброго времени суток. ребята помогите сделать еще две кнопки ссылками на социальные профили. типа вк и канал ютуб . вот код но я не понял как в него встроить еще две иконки сделать их кликабельными с переходом на группу вк и канал ютуб. Кому не сложно помогите пожалуйста . За ранее благодарю . вот мой код кнопка ссылкой.txt

    Сам себе походу опять и отвечу. Вот так вот слепил вариант. короче код не придумал Две Кнопки Social.txt  картинки  не забываем добавить и указать к ним путь.  Вариант без Botva2

    Афигеть ты пролистал все страницы и нашёл что тебе нужно)))))


  6. 9 часов назад, ShuraBB сказал:

    Спасибо, 

     

     

    9 часов назад, ShuraBB сказал:

    Не могу запустить мод, может не правильный путь установки мода (\res_mods\1.9.0.1\scripts\client\gui\mods\

    или вот этой срочке что то неправильно ввожу  User-Agent

    req = urllib2.Request(url, param, headers={'UA-142362884-1': '%s/%s' % (self.name, self.ver)})

     

     

     

    если можете выложите открытый готовый модик

     


  7. Прошу уважаемых и профессионалов по созданию модиков  сделать модик для analytics.google.com.

    Или может у кого то есть уже, не могли бы поделиться модиком с открытым кодом чтоб можно было настроить под себя.

     

    Заранием ОГРОМНОЕ СПАСИБО уважаемые мододелы.

    И удачи в жизни


  8. Вопрос таков что уже не одну обнову вижу что в statisticForm нету выравнивание ников и всяких иконок в отличии от battleLoading

     

    Пример для сравнения:

     

    shot_001.jpg.2d517f770c830180b26944bf0c2c7420.jpgshot_228.thumb.jpg.b825c8e5b44b2948257b00995476a234.jpg.6534d41ab832bcbe559611b54041f4c2.jpg

     

    может кто подскажет или разработчики исправят


  9. 26.09.2019 в 12:51, Andrew_Dark сказал:

    Да я то понимаю, но тема то создана для помощи, раз не хочется писать сразу ответ, это одно, но волшебного пинка хотя бы надо дать, а вдруг догадается как сделать, и станет новым гуру в области модпакомейкерства:) Все мы когда-то задаём идиотские вопросы, но я считаю что лучше 100 раз спросить и выглядеть глупым, чем 1 раз не спросить и быть тупым всегда.

    я же говорил, что он лентяй, за неделю он даже носом не повёл 50 страниц почитать, котярко читает и правильно что не подсказывает тугадуму лому, не забываем мне за правду минусы ставить

    • Upvote 2
    • Downvote 2

  10. 6 часов назад, Lom сказал:

    а я что просил тебя о помощи? кому не лень и кому в масть помогут и помогали уже. не все же тут такие АФИГИТЕЛЬНЫЕ как ты.

    подсказка загадка

    два слова поменяй где видишь ........... на .................. , по этому за 3 года ты лентяй и даже такой простой язык не можешь выучить, а лучше почитай последние 50 а может и по больше страниц там всё найдёшь

    22 минуты назад, hevi сказал:

    подсказка загадка

    два слова поменяй где видишь ........... на .................. , по этому за 3 года ты лентяй и даже такой простой язык не можешь выучить, а лучше почитай последние 50 а может и по больше страниц там всё найдёшь

    в причём я выше кидал там по новей код картинок чем у тебя с фризами,

    а самое главное если ты сделаешь у тебя будет вопрос как два одинаковых скрипта что в компонентах работали и не выдавали дубликат с таксом))))))

    • Upvote 1
    • Downvote 1

  11. 14.09.2019 в 14:08, Lom сказал:

    всем приветы. подскажите как в этот код добавить чтобы и на странице таска тоже картинку показывало при наведении? 

     

    
    
    [Code]
    
    function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
    var
    
        InfoPic: TBitmapImage;
        TempPath: String;
    
    procedure ShowPicHint(const PicFilePath: String);
    var
        pt: TPoint;
    begin
        if not GetCursorPos(pt) then Exit;
        InfoPic.Bitmap.LoadFromFile(PicFilePath);
        InfoPic.SetBounds(ScaleX(521), ScaleY(100), ScaleX(500), ScaleY(350));      // 1-двигает саму картинку лево-право  2-вверх-вниз  //  3-вширь окно картинки... 4-в высоту окно картинки
        InfoPic.Show;
    end;
    
    
    procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
    var
        UndefPic: String;
    begin
        if Index = -1 then Exit;
    
        try
    
                case TNewCheckListBox(Sender).ItemCaption[Index] of
                '. Анимированная лампочка 10сек.': UndefPic := 'анимированная лампочка.bmp';
                '. Белые трупы танков и белые гусеницы': UndefPic := 'белые трупы.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
                '. НАЗВАНИЕ МОДА': UndefPic := 'НАЗВАНИЕ КАРТИНКИ.bmp';
    
    
    
            else
                begin
                    InfoPic.Hide;
                    Exit;
                end;
            end;
            if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
            ShowPicHint(TempPath + UndefPic);
        finally
    
        end;
    end;
    
    
    procedure CompOnMouseLeave(Sender: TObject);
    begin
        InfoPic.Hide;
    
    end;
    
    
    procedure InitInfo();
    begin
        WizardForm.TypesCombo.Hide;
        WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(20), ScaleX(520), ScaleY(505));
        WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
        WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
        TempPath := AddBackslash(ExpandConstant('{tmp}'));
    
        with TBevel.Create(WizardForm) do
        begin
          Parent := WizardForm.SelectComponentsPage;
          SetBounds(ScaleX(434), ScaleY(20), ScaleX(590), ScaleY(505));  // 1-двигает само окно картинки лево-право  2-вверх-вниз  //  3-вширь окно картинки... 4-в высоту окно картинки
          Shape := bsFrame;
        end;
    
        InfoPic := TBitmapImage.Create(WizardForm)
        with InfoPic do
        begin
            Parent := WizardForm.SelectComponentsPage;
            AutoSize := True;
        end;
    end;

     

    Афигеть ты даже самое элементарное не можешь сделать, просто поменять слова на те которые нужно, лентяй и даже помогать тебе не буду,за тебя тут модпак собрали а ты так и не вник в суть

    • Downvote 1

  12. 03.04.2019 в 15:13, Draugd сказал:

    можно ли сделать чтоб картинки формата пнг или джепег отображались в установщике при наведении?

    а то .BMP весят каждая как мр3 (((

    и можно ли как нибудь исправить такие жуткие подвисания установщика при выборе модов? (((

    D Mod White v.5.2.exe 24 MB · 6 скачиваний

     

    
    #include "Addons\botva2.iss"
    #include "Addons\BASS_Module.iss"
    
    [Code]                            
    #ifdef UNICODE
      #define A "W"
    #else
      #define A "A"
    #endif
    
    const
      UNDEF_INDEX = -777;
      ALPHA_BLEND_LEVEL = 255; // max=Byte=255
      WS_EX_LAYERED = $80000;
      WS_EX_TRANSPARENT = $20;
      LWA_COLORKEY = 1;
      LWA_ALPHA = 2;
      GWL_EXSTYLE = (-20);
    
    var
      InfoPic: TBitmapImage;
      LastIndex: Integer;
      TempPath: String;
      PicForm: TForm;
    
    type
      COLORREF = DWORD;
    
    function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
    function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] stdcall';
    function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
    function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
    function SetFocus(hWnd: HWND): HWND; external '[email protected] stdcall';
    function WOT_GetClientsCount(): Integer;
    external 'WOT_GetClientsCount@files:FindWot.dll cdecl';
    function WOT_GetClientBranch(ClientIndex: Integer): Integer;
    external 'WOT_GetClientBranch@files:FindWot.dll cdecl';
    procedure WOT_GetClientPathW(Buffer: String; BufferSize: Integer; ClientIndex: Integer);
    external 'WOT_GetClientPathW@files:FindWot.dll cdecl';
    
    function DefaultDirName(Param: String): String;
    var
      ClientsCount, Index: Integer;
      FoundDir: String;
    begin
      SetLength(FoundDir, 1024);
      ClientsCount:=WOT_GetClientsCount();
      if ClientsCount > 0 then
      begin
        for Index:=0 to ClientsCount-1 do
        begin
          if WOT_GetClientBranch(Index) = 1 then
            begin
              WOT_GetClientPathW(FoundDir, Length(FoundDir)-1, Index);
              Result:=ExpandConstant(FoundDir);
            end;
        end;
      end else
        Result:=ExpandConstant('{sd}\Games\World_of_Tanks');
    end;
    
    procedure ShowPicHint(const PicFilePath: String);
    var
      pt: TPoint;
    begin
      if not GetCursorPos(pt) then Exit;
      InfoPic.Bitmap.LoadFromFile(PicFilePath);
      try
        with PicForm do
        begin
          SetBounds(ScaleX(WizardForm.Left + 509), ScaleY(WizardForm.Top + 80), InfoPic.Width, InfoPic.Height);
          Show;
        end;
        finally
        SetFocus(WizardForm.Handle);
      end;
    end;
    
    procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
    var
      UndefPic: String;
    begin
      if Index = -1 then Exit;
      if Index = LastIndex then Exit;
      try
        case TNewCheckListBox(Sender).ItemCaption[Index] of
          '1.Командирская камера.': UndefPic := 'KK.bmp';
          '2.Винтик.': UndefPic := 'VNT.bmp';
          '3.Панель урона.': UndefPic := 'PY.bmp';
          '4.AutoEquip авто установка/снятие оборудования.': UndefPic := 'AO.bmp';
          '5.Калькулятор эффективности в бою.': UndefPic := 'KEB.bmp';
          '6.Таймер сведения орудия в бою.': UndefPic := 'TS.bmp';
          '7.Увеличенное время лампы засвета.': UndefPic := 'LZ.bmp';
          '8.Статистика за сессию YasenKrasen Vanilla.': UndefPic := 'SS.bmp';
          '9.Шанс на победу + хп команд.': UndefPic := 'SHP.bmp';
          '10.Рейтинг отметок на стволе.': UndefPic := 'ML.bmp';
          '11.Углы горизонтальной наводки.': UndefPic := 'YGN.bmp';
          '12.Радар.': UndefPic := 'TLS.bmp';
          '1.Гарпун мини + сведение Fatality.': UndefPic := 'PGM.bmp';
          '2.Прицел Taipan (мини) настройка Draug.': UndefPic := 'TS.bmp';
          '3.Прицел OverCross + сведение MeltyMaps.': UndefPic := 'OC.bmp';
          '4.Прицел Гарпун Lite.': UndefPic := 'PGL.bmp';
          '5.Улучшенный прицел J1mb0 мини.': UndefPic := 'PJ.bmp';
          '6.Прицел Ахиллес.': UndefPic := 'PAH.bmp';
          '7.Прицел минималистичный.': UndefPic := 'PMI.bmp';
          '1.Минималистичный лог.': UndefPic := 'ML.bmp';
          '2.Подробный лог.': UndefPic := 'PL.bmp';
          '1.Стволик хаоса.': UndefPic := 'SH.bmp';
          '2.Блокировка выстрела по союзникам и трупам.': UndefPic := 'BV.bmp';
          '3.Зум х30 старт х2 + улучшенная видимость.': UndefPic := 'YGN.bmp';
          '4.Пересадка экипажа.': UndefPic := 'AVE.bmp';
          '5.Направление стволов на миникарте.': UndefPic := 'NSM.bmp';
          '6.Калькулятор бронепробития.': UndefPic := 'KB.bmp';
          '7.Мульти клиент.': UndefPic := 'MK.bmp';
          '8.Отключение тумана.': UndefPic := 'OT.bmp';
          '9.Засвет в ушах.': UndefPic := 'ZY.bmp';
          '10.Места пассивного засвета (Spoter).': UndefPic := 'MZ.bmp';
          '11.ЛБЗ в бою.': UndefPic := 'LBZ.bmp';
          '12.Рейтинг игроков в бою.': UndefPic := 'RI.bmp';
          '13.Сумарный WN8 комманд (Ekspoint).': UndefPic := 'PPB.bmp';
          '14.ХП противников в ушах.': UndefPic := 'HP.bmp';
          '15.Информатор засвета.': UndefPic := 'IZ.bmp';
          '16.Информационная панель.': UndefPic := 'IP.bmp';
          '17.Маркер автоприцела.': UndefPic := 'IA.bmp';
          '18.Оповещения союзников о засвете.': UndefPic := 'OZ.bmp';
          '1.Свободное вращение камеры.': UndefPic := 'RK.bmp';
          '2.Полное отключение ручника.': UndefPic := 'RK.bmp';
            else
              begin
                LastIndex := UNDEF_INDEX;
                PicForm.Hide;
                Exit;
               end;
        end;
          if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
          ShowPicHint(TempPath + UndefPic);
          finally
          LastIndex := Index;
      end;
    end;
    
    procedure CompOnMouseLeave(Sender: TObject);
    begin
      PicForm.Hide;
      LastIndex := -1;
    end;
    
    procedure InitInfo();
    begin
      WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
      WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
      TempPath := AddBackslash(ExpandConstant('{tmp}'));
      LastIndex := UNDEF_INDEX;
      PicForm := TForm.Create(WizardForm)
      with PicForm do
        begin
        BorderStyle := bsNone;
        FormStyle := fsStayOnTop;
        InfoPic := TBitmapImage.Create(PicForm)
        with InfoPic do
          begin
          Parent := PicForm;
          AutoSize := True;
          end;
        end;
      SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
      SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);
    end;
    
    procedure InitializeWizard1();
    begin
      InitInfo();
    end;
    
    function NextButtonclick(CurPageID: Integer): Boolean;
    begin
    Result := True;
    case CurPageID of
    wpSelectDir:
    if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
    begin
    MsgBox('Не верно указана папка World of Tanks!', mbError, MB_OK);
    Result := False;
    end;
    end;
    end;

     

    Попробуй вот это

    Desktop.rar


  13. здравствуйте а можно заменить иконку ноты милодии 29af985ffe78.jpg заменить на другую ad9d51d3367d.jpg

    #define USE_BASS
    
    
    [Files]
    #ifdef USE_BASS
    Source: {#Way}\bass.dll; flags: dontcopy;
    #endif
    
    
    [Code]
    
    const
      LB_ITEMFROMPOINT  = $01A9;
    #ifdef UNICODE
      #define A "W"
      #define Phrase "#$266B"
    #else
      #define A "A"
      #define Phrase "'(пример)'"
    #endif
    
    type
      TComponentSound = record
        SoundName: String;
        Index: Integer;
      end;
      HSTREAM = Longword;
    
    var
      iSound: array of TComponentSound;
      sndCompOldProc: TNotifyEvent;
    #ifdef USE_BASS
      BASS_Handle: HWND;
    #endif
    
    function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
    function MapWindowPoints(hWndFrom, hWndTo: HWND; var lpPoints: TPoint; cPoints: UINT): Integer; external '[email protected] stdcall';
    #ifdef USE_BASS
      function BASS_Init(device: LongInt; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload';
      function BASS_StreamCreateFile(mem: BOOL; f: PAnsiChar; offset1, offset2, length1, length2: DWORD; flags: DWORD): HSTREAM; external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';
      function BASS_StreamFree(handle: HSTREAM): BOOL; external 'BASS_StreamFree@files:BASS.dll stdcall delayload';
      function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
      function BASS_Start(): Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload';
      function BASS_Stop(): Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload';
      function BASS_Free(): Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload';
    #else
      function sndPlaySound(lpszSoundName: String; fuSound: UINT): BOOL; external 'sndPlaySound{#A}@winmm.dll stdcall';
    #endif
    
    #ifdef USE_BASS
    procedure bassPlaySound(Filename: AnsiString);
    begin
      if (BASS_Handle <> -1) then begin
        BASS_Stop();
        BASS_StreamFree(BASS_Handle);
        BASS_Handle:= -1;
      end;
      BASS_Handle:= BASS_StreamCreateFile(false, PAnsiChar(Filename), 0, 0, 0, 0, 0);
      BASS_Start();
      BASS_ChannelPlay(BASS_Handle, false);
    end;
    #endif
    
    procedure PlaySound(Sender: TObject);
    var
      i, f, lParam, ids: Integer;
      p: TPoint;
      s: String;
      box: TNewCheckListBox;
    begin
      box:= TNewCheckListBox(Sender);
    
      GetCursorPos(p);
      MapWindowPoints(0, box.Handle, p, 1);
    
      lParam:= p.x or (p.y shl 16);
      i:= SendMessage(WizardForm.ComponentsList.Handle, LB_ITEMFROMPOINT, 0, lParam);
      if ((i shr 16) = 1) or ((i and $FFFF) < 0) then Exit;
      i:= i and $FFFF;
    
      if (i < 0) or (i >= box.Items.Count) then Exit;
    
      ids:= i;
      f:= -1;
      for i:= 0 to GetArrayLength(iSound)-1 do begin
        if (ids = iSound[i].Index) then begin
          f:= i;
          Break;
        end;
      end;
    
      if (f < 0) then Exit;
    
      s:= box.ItemCaption[ids];
      if (Pos({#Phrase}, s) <= 0) then Exit;
    
      if FileExists(iSound[f].SoundName) then
    #ifdef USE_BASS
        bassPlaySound(iSound[f].SoundName);
    #else
        sndPlaySound(iSound[f].SoundName, 0);
    #endif
    
      if (sndCompOldProc <> nil) then
        sndCompOldProc(Sender);
    end;
    
    procedure AddItemSound(AIndex: Integer; AFilename: String);
    var
      i: Integer;
    begin
      i:= GetArrayLength(iSound);
      SetArrayLength(iSound, i+1);
      iSound[i].Index:= AIndex-1;
      iSound[i].SoundName:= ExpandConstant(AFilename);
      WizardForm.ComponentsList.ItemCaption[AIndex-1]:= WizardForm.ComponentsList.ItemCaption[AIndex-1] + ' '+{#Phrase};
    end;
    
    procedure InitializeWizard10();
    begin
    #ifdef USE_BASS
      BASS_Init(-1, 44100, 0, 0, 0);
      BASS_Start();
      BASS_Handle:= -1;
    #endif
    
      WizardForm.ComponentsList.Width := ScaleX(483);
      WizardForm.ComponentsList.Height := ScaleY(270);
    
      sndCompOldProc:= WizardForm.ComponentsList.OnClick;
      WizardForm.ComponentsList.OnClick:= @PlaySound;
    
    
      ExtractTemporaryFile('Озвучка Фрагов в бою.mp3');
      AddItemSound(2, '{tmp}\Озвучка Фрагов в бою.mp3');
    end;
    
    #ifdef USE_BASS
    procedure DeinitializeSetup();
    begin
      BASS_Stop();
      BASS_Free();
    end;
    #endif

     

     

×
×
  • Create New...