Перейти к содержимому


Самый Популярный Контент


#14552 Underground

Написано cj2000 09 July 2018 - 12:25

Версия 3.3 здесь, а первый пач к ней здесь.




#13959 Обсуждение

Написано Lego 09 February 2014 - 12:07

если ссылку ручками поправить, то можно оживить.

Chipsman, подними лимит сообщений в ЛС, ну хоть до 500. Если потом будет какая-то нагрузка, то можно и обратно вернуть будет.

кстати, непонятно зачем есть возможность нажать "нравится" на собственном сообщении.


#7320 [GTA IV | Alice | Delphi] Езда по стенам и подствольный гранатомёт.

Написано VcSaJen 21 January 2011 - 14:11

Вот порт на Alice моих скриптов для езды по стенам и подствольный гранатомёт.
Управление:
Подствольный гранатомёт:
Выбрать AK-47 или M-4 и нажать E для пуска гранат. Если у вас гранаты, то будет стрелять гранатами, а если коктейль Молотова, то будет стрелять горючими бутылками. Правда, из-за особенностей физики GTA4 и большого сопротивления воздуха гранаты не летят далеко.
Езда по стенам:
J - подпрыгнуть
Shift - ускориться
Из-за особенностей физики GTA4 мотоциклы будут уходить вбок при повороте.
Из-за особенностей работы скрипта машина если перевернётся то будет подпрыгивать.
Если у вас другой FPS чем у меня, то настройте UpperForce под себя.
Другое:
I - Скопировать в буфер обмена текущие координаты
U - Переместиться в координаты из буфера обмена
N -
K - Получить санчез
J - получить Mule

library StickyAndGrenade; {$R *.res} {$E ext}

uses
  Windows,
  SysUtils,
  Clipbrd,
  ScriptNatives,
  ScriptTypes,
  ScriptUseful;

const
  Rus	   ='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';
  EncodedRus='ЋЏђ‘’””•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМН';

function EncodeRus(const text: string): string;
var I,p: Integer;
begin
  Result:=Text;
  for I:=1 to Length(Result) do
  begin
	if Result[i]='ё' then Result[i]:='е';
	if Result[i]='Ё' then Result[i]:='Е';
	p:=pos(Result[i], Rus);
	if p>0 then Result[i]:=EncodedRus[p];
  end;
end;

function DecodeRus(const text: string): string;
var I,p: Integer;
begin
  Result:=Text;
  for I:=1 to Length(Result) do
  begin
	p:=pos(Result[i], EncodedRus);
	if p>0 then Result[i]:=Rus[p];
  end;
end;

procedure ShowText(text: string; time: integer = 5000);
begin
  PrintStringWithLiteralStringNow('string', PChar(EncodeRus(text)), time, 1);
end;

function Round(X: Extended): Int64;
begin
  Result:=System.Round(X);
end;

function FTS(Value: Extended): string;
begin
  DecimalSeparator:='.';
  Result:=FloatToStrF(Value,ffFixed,10,3);
end;

function ReadNum(S: string; var I: Integer): Single;
var ts: string;
begin
  while not (S[I] in ['0'..'9', '-', '.']) and (I<=Length(S)) do Inc(I);
  ts:='';
  while (S[I] in ['0'..'9', '-', '.']) and (I<=Length(S)) do
  begin
	ts:=ts+S[I];
	Inc(I);
  end;
  //ShowText(ts,2000);
  //Wait(2000);
  Result:=StrToFloat(ts);
end;

procedure SpawnCar(Name : PChar);
var
  PlayerId : Player;
  PlayerChar : Ped;
  Car : Vehicle;
  Hash : Cardinal;
  X, Y, Z : f32;
begin
  PlayerId := GetPlayerId();
  if PlayerId >= 0 then
  if IsPlayerPlaying(PlayerId) then
  if PlayerHasChar(PlayerId) then
  begin
	GetPlayerChar(PlayerId, @PlayerChar);
	if PlayerChar > 0 then
	begin
	  Hash := GetHashKey(Name);
	  RequestModel(Hash);
	  while not HasModelLoaded(Hash) do Wait(10);
	  GetOffsetFromCharInWorldCoords(PlayerChar, 0, 5, 0, @X, @Y, @Z);
	  CreateCar(Hash, X, Y, Z, @Car, True);
	  MarkModelAsNoLongerNeeded(Hash);
	  MarkCarAsNoLongerNeeded(@Car);
	  PrintStringWithLiteralStringNow('string', PChar(Name + ' spawned !'), 5000, 1);
	end;  
  end;
end;

var
  MemInfo: TMemoryBasicInformation;
  ModName: array[0..MAX_PATH] of Char;
  S: string;

//Если что не понятно, спрашивайте в темке.
procedure main(); export;
const
  MaxObjs=16; // Максимальное кол-во летящих одновременно гранат
  ReloadTime=500;// Время перезарядки в мс
var
  Objs: array [0..MaxObjs-1] of LongWord;
  ObjsStartTimes: array [0..MaxObjs-1] of Integer;

  procedure CheckObjs;
  var
	I: Integer;
	CurTime: Integer;
	Model: LongWord;
	X,Y,Z: Single;
  begin
	GetGameTimer(@CurTime);
	for I:=0 to MaxObjs-1 do
	begin
	  if DoesObjectExist(Objs[I]) and (Objs[I]>0) then
	  begin
		if HasObjectCollidedWithAnything(Objs[I])
					   or IsObjectInWater(Objs[I])
					   or (CurTime-ObjsStartTimes[I] = 5000) then
		begin
		  GetObjectCoordinates(Objs[I], @X, @Y, @Z);
		  GetObjectModel(Objs[I], @Model);
		  if Model=GetHashKey('w_grenade') then
			AddExplosion(X,Y,Z, 0, 5.5, 1, 0, 1.0);
		  if Model=GetHashKey('w_molotov') then
			AddExplosion(X,Y,Z, 1, 5.5, 1, 0, 1.0);
		  DeleteObject(@Objs[I]);
		end;
	  end;
	end;
  end;

  function GetFreeObjIndex: Integer;
  var I: Integer;
  begin
	Result:=-1;
	for I:=0 to MaxObjs-1 do
	  if not DoesObjectExist(Objs[I]) then
	  begin
		Result:=I;
		ShowText('OK', 1000);
		Exit;
	  end;
	ShowText('~r~Fail', 1000);
  end;

var
  PlayerId : Player;
  PlayerChar : Ped;
  PlayerCar: Vehicle;
  UpperForce: Single;
  //S: string;
  X,Y,Z: Single;
  I,N: Integer;
  LastTime, CurTime: Integer;
  SLastTime, SCurTime: Integer;
  Cam, Weap, Ammo, WeapModel: Cardinal;
  RotX,RotY,RotZ,Vx,Vy,Vz: Single;
  BonePos: Vector3;
  //---------------
  ptfx: Cardinal;
begin
  Wait(2000);
  try
  DecimalSeparator:='.';
  LastTime:=0;
  SLastTime:=0;
  //ShowText('Липучка (123456.654321)');
  UpperForce:=0.65;
  while True do
  begin
	PlayerId := GetPlayerId();
	if PlayerId >= 0 then
	if IsPlayerPlaying(PlayerId) then
	if PlayerHasChar(PlayerId) then
	begin
	  GetPlayerChar(PlayerId, @PlayerChar);
	  if PlayerChar > 0 then
	  begin
		if KeyPressed(Ord('U')) then
		begin
		  S:=Clipboard.AsText;
		  I:=1;
		  try
			X:=ReadNum(S,I);
			Y:=ReadNum(S,I);
			Z:=ReadNum(S,I);
			SetCharCoordinates(PlayerChar, X, Y, Z);
			ShowText('Выполнен переход на ~n~'+FTS(X)+', '+FTS(Y)+', '+FTS(Z));
		  except
			on EConvertError do ShowText('~r~Неверный формат координат телетортации!');
		  end;
		end;
		if KeyPressed(Ord('I')) then
		begin
		  GetCharCoordinates(PlayerChar, @X, @Y, @Z);
		  ShowText('Скопировано '+FTS(X)+', '+FTS(Y)+', '+FTS(Z));
		  Clipboard.AsText:=fts(X)+', '+fts(Y)+', '+fts(Z);
		end;

		CheckObjs;

		GetCurrentCharWeapon(PlayerChar, @Weap);
		GetGameTimer(@CurTime);

		if KeyPressed(Ord('E')) and
		   KeyPressed(VK_RBUTTON) and
		   (Weap in [14,15]) and
		   (CurTime-LastTime>ReloadTime) then
		begin
		  PlaySound(-1, 'ball_returned');
		  GetPedBonePosition(PlayerChar,1232,0.42,0.05,-0.15,@BonePos);
		  GetCharCoordinates(PlayerChar,@X,@Y,@Z);
		  GetDistanceBetweenCoords3D(BonePos.X,BonePos.Y,BonePos.Z,X,Y,Z,@X);
		  N:=GetFreeObjIndex;
		  GetCharWeaponInSlot(PlayerChar, 8, @Weap, @Ammo, @WeapModel);//04B8
		  if Ammo<=0 then ShowText('Нет гранат!');

		  if (X<2.0) and (N<>-1) and (Ammo>0) then
		  begin

			CreateObject(WeapModel,BonePos.X,BonePos.Y,BonePos.Z,@Objs[N],True);
			Dec(Ammo);
			SetCharAmmo(PlayerChar, Weap, Ammo);

			SetObjectVisible(Objs[N],False);
			SetActivateObjectPhysicsAsSoonAsItIsUnfrozen(Objs[N], true);

			GetGameCam(@Cam);
			GetCamRot(Cam,@rotX,@rotY,@rotZ);
			RotZ:=RotZ+90.0;
			Vx:=ScriptNatives.Cos(rotZ)*50.0;
			Vy:=ScriptNatives.Sin(rotZ)*50.0;
			Vz:=ScriptNatives.Sin(rotX)*50.0;

			ApplyForceToObject(Objs[N],1,Vx,Vy,Vz,0.0,0.0,0.0,0,1,1,1);// Эта конструкция может показаться странной: мол, зачем повторять 2 раза и делать задержку?
			Wait(0);											   // На самом деле при одинарном вызывании без задержки объект вообще не будет двигаться.
			ApplyForceToObject(Objs[N],1,Vx,Vy,Vz,0.0,0.0,0.0,0,1,1,1);//
			SetObjectVisible(Objs[N],True);
			SetObjectRecordsCollisions(Objs[N],True);
			
			GetGameTimer(@ObjsStartTimes[N]);
			GetGameTimer(@LastTime);

		  end;
		end;
		//SetPlayerInvincible(PlayerId, True);
		//SetPlayerNeverGetsTired(PlayerId, True);
		//SetPoliceIgnorePlayer(PlayerId, True);

		if KeyPressed(Ord('N')) then
		begin
		  ptfx:=StartPtfxOnPedBone('exp_trespass_mid', PlayerChar, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1205, 1065353216);
		  Wait(5000);
		  StopPtfx(ptfx);
		end;

		if KeyPressed(Ord('K')) then
		begin
		  SpawnCar('sanchez');
		end;
		if KeyPressed(Ord('J')) then
		begin
		  SpawnCar('mule');
		end;
		{if KeyPressed(Ord('M')) then
		begin
		  GetPedBonePosition(PlayerChar,1232,0.42,0.05,-0.15,@BonePos);
		  CreateObject(GetHashKey('w_grenade'),BonePos.X,BonePos.Y,BonePos.Z,@Obj,True);
		  ShowText(fts(X));
		  SetObjectCollision(Obj,False);
		end;}

		if IsCharInAnyCar(PlayerChar) then
		begin
		  StoreCarCharIsInNoSave(PlayerChar, @PlayerCar);
		  while IsPlayerPlaying(PlayerId) and IsCharInCar(PlayerChar, PlayerCar) do
		  begin
			if KeyPressed(Ord('J')) and (SCurTime-SLastTime<200) then
			begin
			  ApplyForceToCar(PlayerCar,1,0.0,0.0,1.0,0.0,2.0,0.0,1,1,1,1);
			  //Wait(90);
			  //ApplyForceToCar(PlayerCar,1,0.0,0.0,1.0,0.0,1.0,0.0,1,1,1,1);
			end;
			if KeyPressed(VK_SHIFT) and (SCurTime-SLastTime<200) then
			begin
			  ApplyForceToCar(PlayerCar,1,0.0,1.0,0.0,0.0,0.0,0.0,1,1,1,1);
			  //Wait(90);
			  //ApplyForceToCar(PlayerCar,1,0.0,0.0,1.0,0.0,1.0,0.0,1,1,1,1);
			end;

			//ShowText(FTS(UpperForce),100);
			{TODO:Сделать мод езденья по стенам и узнать назначение остальных параметров}
			GetGameTimer(@SCurTime);
			if not IsCarInAirProper(PlayerCar) then
			begin
			  GetGameTimer(@SLastTime);
			end;
			ShowText(IntToStr(SCurTime-SLastTime),100);
			if SCurTime-SLastTime<500 then
			begin
			  ApplyForceToCar(PlayerCar,1,0.0,0.0,UpperForce,0.0,0.0,0.0,1,0,1,1);
			  ApplyForceToCar(PlayerCar,1,0.0,0.0,-UpperForce,0.0,0.0,0.0,1,1,1,1);
			end;
			Wait(25);
		  end;
		end;
	  end;
	end;
	Wait(50);
  end;
  except
	on E: Exception do
	begin

	  Windows.Beep(100, 100);
	  Windows.Beep(1600, 100);
	  Windows.Beep(100, 100);
	  Windows.Beep(1600, 100);
	  Windows.Beep(100, 100);
	  Windows.Beep(1600, 100);

	  ShowText('-------------------------------',0);
	  ShowText('или в крайнем случае на ящик VcSaJen@ya.ru',0);
	  ShowText('Пожалуйста сообщите эти данные автору в темке RaCon на [url="http://forums.gtamodding.ru/',0);"]http://forums.gtamodding.ru/',0);[/url]

	  ShowText('Адрес: '+IntToHex(Integer(ExceptAddr),8),0);
	  ShowText('Адрес Main: '+IntToHex(Integer(@main),8),0);

	  VirtualQuery(ExceptAddr, MemInfo, SizeOf(MemInfo));
	  if (MemInfo.State = MEM_COMMIT) and
		 (GetModuleFileName(THandle(MemInfo.AllocationBase), ModName, SizeOf(ModName)) <> 0) then
	  begin
		S:=ModName;
		Delete(S, Pos(GetCurrentDir,S), Length(GetCurrentDir)+1);
		//ShowText('Локальный адрес Base: '+IntToHex(Integer(ExceptAddr)-Integer(MemInfo.BaseAddress),8),0);
		ShowText('Локальный адрес: '+IntToHex(Integer(ExceptAddr)-(Integer(MemInfo.AllocationBase)+$1000),8),0);
		//ShowText('Base: '+IntToHex(Integer(MemInfo.BaseAddress),8),0);
		ShowText('Allocation base: '+IntToHex(Integer(MemInfo.AllocationBase),8),0);
		ShowText('Модуль: '+S,0);
	  end
	  else begin

	  end;

	  ShowText(E.Message,0);
	  ShowText('Класс: '+E.ClassName,0);
	  ShowText('-------------------------------',0);
	  ShowText('  Информация об ошибке:',0);
	  ShowText('-------------------------------',0);

	  AddNextMessageToPreviousBriefs(False);
	  ShowText('В RaCon возникла ошибка. Перепишите информацию об ошибке и перезагрузите игру.',5000);

	  Wait(5000);
	  {'~r~'+E.ClassName+': '+E.Message}
	  AddNextMessageToPreviousBriefs(False);
	  ShowText('Информацию об ошибке смотрите в "Истории" (Briefs) в меню (2-й пункт, сразу после "Карты").',60000);
	  //Clipboard.AsText:=E.Message;
	  Exit;
	end;
  end;
end;

exports main;

end.

Прикрепленные файлы




#14526 Underground

Написано cj2000 08 September 2017 - 11:02

Версия 3 здесь, а первый пач к ней здесь.




#14483 Scarface на Rage

Написано XEPOMAHT007 13 March 2017 - 06:37

Проблема в том, что нет прог для открытия файлов из Scarface и только уже по этой причине порт не возможен. Если я ошибаюсь то было бы не плохо узнать название этой проги (этих прог), а если не ошибаюсь, то прошу прощение за раскопку старой темы.


Основные проблемы следующие:

1. Порт на ПК был сделан самими разработчиками. Кто хотел - уже поиграл.
2. Качество карты - на уровне гта3. Без материальных эффектов и качественных текстур на RAGE будет жуткое мыло.
3. Нулевая играбельность - карту перетащить не проблема, но что игрок будет на ней делать?

А то, что нет готовых программ - просто они никому не нужны. Не то что программы - сами файлы игры гугл не видит. По прошествии 10 лет одни дохлые торренты.


#14454 [REL] OpenIV (GTA V, GTA IV & Max Payne 3)

Написано cj2000 26 January 2017 - 15:20

Как так то? Когда извлекаешь модель в ODR, в нем указано что где mesh файлы находятся, в папке с таким же именем как сам ODR.

Прошу прощения за глупые вопросы так, как с самого начала я тебя не правильно понял про odr формат, сперва думал, что меши в самом odr потом в той же папке где odr и только теперь их нашёл. Формат этих файлов оказался тоже не таким сложным, самая важная часть там находится в секции geometris в которой опять содержатся секции geometry. В каждой секции geometry есть секция indices и vertex. В секции indices находятся треугольники в формате trianglelist, каждая строка содержит максимум 15 индексов или 5 треугольников. В секции vertex каждая строка выглядит где то так:

 

float vertex[3] / float weights[4] / int indices[4] / float normal[3] / uchar rgba[4] / float texCord[2] / float unknown[4]

Что касается названий секций, то имена может не всегда правильные, пишу по памяти. Вроде бы должно быть правильно? А sheder это аналог секции material в старых GTA?




#14445 [REL] OpenIV (GTA V, GTA IV & Max Payne 3)

Написано cj2000 20 January 2017 - 10:34

Насколько старая? Инсталятор который скачивает файлы с интернета в OpenIV появился еще в ноябре 2011 года.

Версия старая конечно, но кажись не на столько старая, если быть точней 1.3.5.




#14420 [REL] OpenIV (GTA V, GTA IV & Max Payne 3)

Написано cj2000 09 January 2017 - 16:42

 

Странно, но функцию экспорта я там не находил, возможно конечно версия проги у меня староватая. Начиная с какой версии экспорт поддерживается?

Для GTA V начиная с OpenIV 2.8

А для этих openFormats есть документация? Без обид, уверен, что GIMS крутая прога, но системные требования у неё немного заоблачные для того, что она делает.

Должна быть тут, http://docs.openiv.c...ku.php?id=start но нету. Бытует мнение что если нас постоянно про неё српашивать она там появится.

 

А для Max Payne 3 какая версия поддерживает экспорт?

А ссылка ведёт к сожалению в никуда:

58a0375767e9.png




#14413 Команда OpenIV представляет Liberty City в GTA V

Написано GooD-NTS 04 January 2017 - 13:24

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

Есть мнение, что не сильно.

И по добавлению в гта5 карты Red Dead Redemption что-нибудь слышно?

Пока ничего. По одной карте за раз, давайте с либерти сначала разберёмся.

Эмм.. очень апасный же процесс? По времени наверно дольше чем установка гта 5?

Пока не понятно :)


#14361 [REL] OpenIV (GTA V, GTA IV & Max Payne 3)

Написано unregistered 15 January 2016 - 12:52

Пара вопросов по поводу хешей

 

1. Ковыряясь в аудио ресурсах встретил кучку неопознанных хешей, которые смог подобрать

После добавления их в файл \Games\Five\strings\Audio.Tracks.txt - имена стали распознаваться

 

pBqIG4S.png

 

Вопрос в следующем: эти списки стрингов вы откуда-то из открытого ресурса берете, или составляете сами?

Другими словами, чтобы добавить мои найденные строки в вашу сборку - их нужно на какой-нибудь сайт сабмиттить, или единственный вариант - переслать их вам лично?

 

2. По поводу хешей и утилиты Hash Generator (в составе OpenIV)

В результате добавления стрингов в Audio.Tracks.txt, аудио-файл, который раньше назывался 0x1104C5A2 стал корректно отображаться под именем "GLAMOROUS_01".

Но в хэш-генераторе я такого результата почему-то получить не могу. Почему так?

 

RuHXoPW.png




#14311 Underground

Написано XEPOMAHT007 03 August 2015 - 15:42

Как уже было сказано выше, новые города не останутся безлюдными и подтверждение тому это видео:


Надеюсь, у Вас имеются исходники путей ЛС и ВС. Видно, что nodesXX.dat по узлам распилены криво (как это было в модификациях LC2SA и VC2SA), может быть исправите к первому публичному релизу.


#14281 Underground

Написано cj2000 08 June 2015 - 10:28

А вот и новое видео, где можно увидеть прогресс работы над VC.

 

 

У мода есть теперь свой канал на трубе, кому интересно следите здесь.




#14234 Интересный скрипт миссии "BusMod" by rooft0p, разбор полётов.

Написано НикИТОС 26 April 2015 - 10:40

Попробуй метод GetHashCode класса Ped и сравни результат с полученным при помощи нейтива.


#14165 Моддинг ChinatownWars

Написано DK22 06 April 2015 - 03:23

Просмотрищик ресурсов для iOS и Android версий CW




#14094 Ментовский Беспредел

Написано XEPOMAHT007 24 February 2015 - 22:09

То, что "окрашено красненьким" в шаблоне, то и на очереди: http://gtamodding.ru.../Шаблон:VC-navi

Те модификации, которые мне чем-то интересным запомнились 10 лет спустя, о тех и не жалко статью-некролог написать (помним, любим, скорбим и всё такое...).


#14056 Моддинг LCS и VCS (PSP/PS2)

Написано DenielX 18 August 2014 - 08:55

Понял,однако просто совет использовать PackZipv.03,он в режиме ультра сжимает офигенно,более лучшего zlib компрессора я не видел.Даже когда сториес ворлд тул недолго был в открытом доступе и я успел там использовать компрессор zlib'а-он далеко от этой проги.SimplyZip,PasZlibFile,DTZ Editor v 0.3 и прочие-отдыхают.Для сравнения приведу запакованный различными компрессорами GAME.DTZ с максимальным уровнем сжатия,доступным для каждого компрессора в отдельности:

SimplyZip-2267442 байта,максимально доступный уровень сжатия-средний

PasZlibFile-2258338 байта,максимально доступный уровень сжатия-максимальный

PackZipv0.3-2196130 байта,максимально доступный уровень сжатия-ультра(максимальный+индивидуально подбираемые словари),однако скорость запаковки 5-10 минут,но оно того стоит.

 

Поправка:PSP не понимает ультра компрессию(а точнее не стандартные словари),но всё равно PackZipv0.3 лидирует:2 208 803 байт запакованный GAME.DTZ.




#13971 [REL] OpenIV (GTA V, GTA IV & Max Payne 3)

Написано Chipsman 22 March 2014 - 16:43




#13943 LCS PC Edition

Написано Lego 28 December 2013 - 18:34

Интересно, а под андроид запилить реально? хотя бы частично?


#13913 Видеоролики

Написано Chipsman 27 October 2013 - 14:40




#13780 Обсуждение

Написано Chipsman 14 August 2013 - 11:55

Похоже на то, что я починил ipbwiki и теперь темы обсуждений статей должны работать как и раньше.

 

Ещё аттачи неправильно отображаются. Сначала число загрузок, а потом текст "Количество загрузок:". 

 

изменил на "загрузок" (так как если искать и изменять шаблон, то уже для других языков будет не правильно) 

 

3) хорошо бы исправить б-гмерзкие "лайки" в профиле на, скажем "нравится" (и без кавычек);

поменял

 

 2) хотел поставить +, но форум выдаёт ошибку, что я исчерпал положительные отметки за сегодня;

 

пол часа искал настройку, но вроде нашел, теперь пробуй


4) лого на вики ведёт на www.gtamodding.ru, хотя потом Redirect 301 на gtamodding.ru. (поправь ссылку лого);

 

исправлено