Need for Speed: ProStreet

Скрипт Need for Speed: ProStreet 1.1

Нет прав для скачивания

Adil

Старожил
Пользователь Adil разместил новый ресурс:

Need for Speed: ProStreet - Скрипт Need for Speed: ProStreet

Информация:

Особенности:
Простой скрипт с расширенной проверкой необходимого места на жёстком диске.​

Использованные библиотеки:
Использованные модули:
Узнать больше об этом ресурсе...
 

sergey3695

Ветеран
Модератор
super.maloy1992, лого в фотошопе нарисовать поверх картинок можно. Splash и отключение формы выбора языка я прикрутил. Замени и добавь файлы что залил в скрипте.
 

Вложения

  • Like
Реакции: Adil

SBalykov

Старожил
  • Like
Реакции: Adil

SBalykov

Старожил
Самое простое, что приходит в голову - создать кнопку ...
подскажите как? куда нужно и что вписывать
я всю ночь просидел:D
Да это так, шутка ...
procedure RedesignWizardForm;
begin
with WizardForm do
begin
Left:= -10000;
OnShow := @WizardFormOnShow;
SetClassLong(Handle, -26, GetClassLong(Handle, -26) or $200);
BorderStyle := bsNone;
Width := 0;
Height := 0;
DirEdit.Color := clGray;
end;
 
  • Like
Реакции: Adil

sergey3695

Ветеран
Модератор
а не подскажешь как оставить только 1 выбор языка в авторане
ну изначально на два языка задумывалось, я не буду переделывать :D.
как прописать с выбором языка установщика что бы язык менялся в steam api
надо менять с выбором в компанентлисте, а не с выбором языка.
я этим пользуюсь для вставки.
Код:
procedure RePlaceTextinFile(FilePath:string; find:string; replace1, replace2:string);
var
  S: TStringList;
  i : Integer;
begin
if FileExists(FilePath) then begin
  S:=tstringlist.create;
  S.LoadFromFile(FilePath);
for i := 0 to S.Count-1 do
begin
if S.Names[i]=find then
begin
  S.Delete(i);
  S.Insert(i,replace1+'='+replace2);
end;
end;
  S.SaveToFile(FilePath);
end;
end;
//  Пример
//  RePlaceTextinFile(ExpandConstant('{app}\d3d9.ini'),'resX', 'resX',inttostr(screen.Width));
//  RePlaceTextinFile(ExpandConstant('{app}\d3d9.ini'),'resY', 'resY',inttostr(screen.Height));
//  RePlaceTextinFile(ExpandConstant('{app}\d3d9.ini'),'bPillarBox16to9', Sides, 'true');
 

sergey3695

Ветеран
Модератор
OriginX333, там картинку надо перерисовать. она там кривая.
 

Вложения

sergey3695

Ветеран
Модератор
OriginX333, и в IsDoneUnpack надо поставить
if CurStep = ssInstall then begin
а то ПО раньше будет. сменить забыл.
 

Вложения

sergey3695

Ветеран
Модератор
OriginX333,
Код:
function RusLanguage:boolean;
begin
  Result:= WizardForm.ComponentsList.Checked[1];
end;
и дальше if RusLanguage then делать else иначе другое. или секцию files (Check) используй чтоб готовые файлы кидать. это как пример. нумерация с 0 строки, сверху вниз.
 

Adil

Старожил
OriginX333,

Код:
CreateShellLink(ExpandConstant('{userdesktop}\{#GameName}.lnk'),'',ExpandConstant('{app}')+'\{#ExeName}', '', '', ExpandConstant('{app}\Uninstall\unins000.exe'),0,SW_SHOW);
ExpandConstant('{app}\Uninstall\unins000.exe') вот это кастомная иконка
 

agent555

Пользователь
[Ini]
FileName: "{app}\steam_rld.ini"; Section: "Settings"; Key: "Language"; String: "russian"; Components: crack\reloaded and text\rus;
FileName: "{app}\steam_rld.ini"; Section: "Settings"; Key: "Language"; String: "english";
[Components]
Components: crack\reloaded and text\eng;
Name: text; Description: {cm:languageSetting}; Types: full; Flags: Fixed
Name: text\rus; Description: {cm:compRU}; Flags: exclusive;
Name: text\eng; Description: {cm:compEN}; Flags: exclusive;
 

Adil

Старожил
OriginX333, справка к isdone., раздел компоненты.

Код:
[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;

....

Comps1:=0; Comps2:=0; Comps3:=0;
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 4

....

ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
  repeat
    if not FileSearchInit(false) then break;
    if not ISArcExtract ( 0, 0, ExpandConstant('{src}\BasicData.arc'), ExpandConstant('{app}\'), '', false, '', '', '', notPCFonFLY) then break;
    if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
    ISDoneError:=false;
  until true;
  ISDoneStop;
end;
 

agent555

Пользователь
Чел, если ты не шаришь, зачем ты выкладывал скрипты (того же масика)? скачай соседние скрипты и посмотри, где прописываются компоненты, здесь такие скрипты есть

Компоненты которые ты хочешь распаковать нужно указывать в файле coreISdone2

if not ISArcExtract ( 1, 0, ExpandConstant('{src}\data1.arc'), ExpandConstant('{app}\'), 'компонент1', false, 'пароль', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\Temp'), notPCFonFLY{PCFonFLY}) then break;

TmpValue:=1;
if IsComponentSelected('компонент1) then Comps1:=Comps1+TmpValue; //компонент 1
 
Последнее редактирование модератором:

Adil

Старожил
OriginX333, в первый раз дожны распаковаться все архивы что бы создать рекордс инф.

а что прописывать где //компонент
это просто информация
номер компонента прописывается тут, цифра с зеленым

if not ISArcExtract ( 1, 0, ExpandConstant('{src}\data1.arc'), ExpandConstant('{app}\'), 'компонент1', false, 'пароль', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\Temp'), notPCFonFLY{PCFonFLY}) then break;
 

Adil

Старожил
OriginX333, а как ты указал компоненты тут?
Код:
Comps1:=0; Comps2:=0; Comps3:=0;
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 4
 

Adil

Старожил
OriginX333, этот пункт отвечает за нумерацию компонентов. В скобках пишутся имя компонентов остюда

Код:
[Components]
Name: gamename; Description: I AM ALIVE; Types: full; Flags: fixed
Name: text; Description: Язык интерфейса; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
//Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;
voice\eng в пункте

Код:
Comps1:=0; Comps2:=0; Comps3:=0;
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 4
нумерован как 4 компонент. значит

Код:
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\video_eng.bin'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\Temp'), notPCFonFLY{PCFonFLY}) then break;
 

Adil

Старожил
OriginX333, впервый раз он распакует все что бы создать файл records.inf. После берешь этот файл и подключаешь его в инсталлятор, раскоментировав
#define records

включи этот файл в инсталлятор

Код:
Автоматическая расстановка процентных соотношений в операциях.
При автоматической расстановке необходим тестовый проход для определения времени выполнения каждой операции относительно других.
  Для включения данного режима необходимо заполнить вторые значения всех функций извлечения архивов нулями.
  Краткая инструкция:
  а) первым делом убедитесь, что в начале скрипта закомментирована строка

#define records
(т.е. необходимо поставить точку с запятой в начале этой строки);
  б) компилим проект и запускаем на установку. Это и будет нашим тестовым проходом. Все операции должны дойти до конца и завершиться удачно. Прогрессбар будет зашкаливать и все компоненты будут извлечены вне зависимости от того выбраны они, или нет. Все так и должно быть!
  в) после тестового прогона в указанной папке создастся файл records.inf (имя и путь назначается в процедуре инициализации. О ней см. "подробное описание функций" ниже), его необходимо добавить в проект, раскомметировав, или добавив в начале скрипта строку:

#define records

Так же стоит отметить, что если сам скрипт находится в папке отличной от той, в которую компилится проект (например в скрипте NFS:Undercover откомпиленный файл сохраняется в Output\setup.exe), то records.inf создастся в папке с setup.exe и его необходимо будет перенести непосредственно к скрипту, или же подправить в секции [Files] его истинное расположение, например:

#ifdef records
Source: Output\records.inf; DestDir: {tmp}; Flags: dontcopy
#endif
г) снова откомпилить проект.
  После этого инсталлер готов к работе.
  При запуске процесс выполнения операций будет равномерно и корректно отображаться на прогрессбаре.
 
Последнее редактирование модератором:
Сверху