Карта также осталась консольная, метки вместо того, чтобы подсвечиваться при наведении, подсвечиваются только при перетаскивании гигантского "перекрестия", которое на ПК вообще не нужно.
- Форумы GTAModding.ru
- → Просмотр профиля: Нравится: VcSaJen
Статистика
- Группа: Пользователи
- Сообщений: 270
- Просмотров: 41042
- Статус: Активный участник
- Возраст: Неизвестен
- День рождения: Неизвестен
-
Пол
Мужчина
-
Интересы
GTA, скриптинг в GTA.
Старые поля
-
Флаг (Flag)
Не выбран (None)
-
Любимая игра серии
Я бoт и не умею заполнять поля (меня можно удалять)
#14208 Grand Theft Auto V
Написано VcSaJen 14 April 2015 - 00:42
edit: окей, ошибка исчезла. Я смотрю, меню всё ещё консольное. Управлять меню мышкой неудобно.
Карта также осталась консольная, метки вместо того, чтобы подсвечиваться при наведении, подсвечиваются только при перетаскивании гигантского "перекрестия", которое на ПК вообще не нужно.
Карта также осталась консольная, метки вместо того, чтобы подсвечиваться при наведении, подсвечиваются только при перетаскивании гигантского "перекрестия", которое на ПК вообще не нужно.
#13927 Оформление вики-статей
Написано VcSaJen 06 December 2013 - 21:23
сорри за вопрос, но как в статью добавлять скриншоты? появлятся код
}}[[Файл:Example.jpg]]просто пока есть время хотел бы оформить некоторые "Требуемые статьи"
Загружаешь картинки сюда (если одна) или сюда (если много). Разметку можно просмотреть тут.
Если кратко:
[[Изображение:Example.jpg|120px|описание]]
- где 120px (или thumb) - размер картинки, описание - описание.
Чтобы вставить в оригинальном размере:
[[Изображение:Example.jpg]]
#9050 [GTA IV | EFLC | C++SH] Езда по стенам
Написано VcSaJen 05 July 2011 - 06:41
Т.к. новая Алиса находится только в стране чудес, я планирую перенести все свои скрипты на C++ Script Hook.
Первым я перенёс скрипт для езды по стенам.
Управление:
Включить/выключить - клавиша "Э"
Подпрыгнуть - клавиша "Ж"
Ускориться - клавиша Shift
Этот скрипт поддерживает GTAIV 1.0.7.0 и EFLC 1.1.2.0.
Установка:
Просто скопируйте содержимое архива в папку игры. (XLiveLess (рекомендуется) или ASILoader должен быть установлен)
Скриншоты:
Вот кусок исходника:
Скрипт находится в аттаче:
Sticky.rar 147.82К 5 загрузок
Первым я перенёс скрипт для езды по стенам.
Управление:
Включить/выключить - клавиша "Э"
Подпрыгнуть - клавиша "Ж"
Ускориться - клавиша Shift
Этот скрипт поддерживает GTAIV 1.0.7.0 и EFLC 1.1.2.0.
Установка:
Просто скопируйте содержимое архива в папку игры. (XLiveLess (рекомендуется) или ASILoader должен быть установлен)
Скриншоты:
Вот кусок исходника:
#include "CustomFiberThread.h" #include "../Sticky/Scripting.h" #include "../ScriptHook/Log.h" #include <windows.h> // Pull in all our scripting functions/types using namespace Scripting; CustomFiberThread::CustomFiberThread() { // Give your own name here! SetName("Sticky"); } // Some helper functions /*...*/ bool CustomFiberThread::KeyPressed(int key) { return (GetKeyState(key) & 0x80000000) != 0; } // The real script void CustomFiberThread::RunScript() { // This is a fiber thread, so we use an loop to run the contents of this script. // The thread will terminate when we return from this function. int PlayerId; Scripting::Ped PlayerChar; Scripting::Vehicle PlayerCar; unsigned int SCurTime, SLastTime; float UpperForce=0.65f; bool on=false; SLastTime=0; while(IsThreadAlive()) { PlayerId = GetPlayerId(); if (PlayerId >= 0) if (IsPlayerPlaying(PlayerId)) if (PlayerHasChar(PlayerId)) { GetPlayerChar(PlayerId, &PlayerChar); if (*((int*)(&PlayerChar))>0) { if (IsCharInAnyCar(PlayerChar)) { StoreCarCharIsInNoSave(PlayerChar, &PlayerCar); while (IsThreadAlive() && IsPlayerPlaying(PlayerId) && IsCharInCar(PlayerChar, PlayerCar)) { if (on) { GetGameTimer(&SCurTime); if (!IsCarInAirProper(PlayerCar)) { GetGameTimer(&SLastTime); } if (KeyPressed(VK_OEM_1) && (SCurTime-SLastTime<400)) { 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); } if (KeyPressed(VK_SHIFT) && (SCurTime-SLastTime<400)) { if (KeyPressed('S')) ApplyForceToCar(PlayerCar,1,0.0,-1.0,0.0,0.0,0.0,0.0,1,1,1,1); else 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); } //ShowText(IntToStr(SCurTime-SLastTime),100); if (SCurTime-SLastTime<500) { 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); } } if (KeyPressed(VK_OEM_7)) { on=!on; if (on) PrintStringWithLiteralStringNow("string", "Sticky activated", 1500, 1); else PrintStringWithLiteralStringNow("string", "Sticky deactivated", 1500, 1); while (IsThreadAlive() && KeyPressed(VK_OEM_7)) Wait(100); } Wait(25); } if (on) PrintStringWithLiteralStringNow("string", "Sticky deactivated", 1500, 1); on=false; } } } // Call Wait() so we can process other scripts/game code // You must call Wait(...) in your loop code for a fiber thread! Wait(100); } }(Весь исходник можно скачать здесь: SourceSticky.rar 300.42К 7 загрузок)
Скрипт находится в аттаче:
Sticky.rar 147.82К 5 загрузок
#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
Управление:
Подствольный гранатомёт:
Выбрать 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.
Прикрепленные файлы
- StickyAndGrenade.ext.rar 160.87К 9 загрузок
#3311 Native Search Tool
Написано VcSaJen 27 September 2009 - 06:16
Native Search Tool - это поисковик скриптовых функций для GTA IV, наподобие Opcode Search Tool (OST). OST уже устарел (он разрабатывался для ViceCity) и не может нормально искать функции для GTA IV.
Возможности:
* Поиск функций по файлам Natives.txt (полный список функций GTA IV) и NativesPlus.txt (описание функций);
* Возможность уточнить поиск с помощью различных операторов и использовать скобки (как в продвинутых интернет-поисковиках);
* Поиск ведётся только по названиям функций, а не по всей строке;
* Возможность поиска по названиям параметров функции и по типам параметров;
* Почти полная совместимость с Opcode Search Tool по возможностям, сочетаниям клавиш и виду интерфейса;
* Более дружелюбный интерфейс: все настройки можно изменить через программу.
Программа так похожа на Opcode Serch Tool, что большинство юзеров даже не заметят подмены
Можно составлять сложные запросы, например: (Actor | Char) & (Car | Vehicle) или ((Max & Health) | (Min & Armor)) & Char & -Player
Также можно искать текст параметров (!слово) и типов (#слово) функций, например: Char !x !y !z #f32 #f32 #f32 - искать слово Char в названии функции, xyz в параметрах функции и три дробных параметра (будет найдено например:
procedure ClearAreaOfChars(x : f32; y : f32; z : f32; radius : f32);
procedure GetCharVelocity(pedestrian : Ped; pX : Pf32; pY : Pf32; pZ : Pf32);
и т.д.)
Все ошибки и пожелания пишите здесь. Надеюсь, программа будет востребована. Хорошо бы выложить для этого её на SannyBuilder.com как и выложили fxt editor.
NST.rar 395.74К 26 загрузок
Возможности:
* Поиск функций по файлам Natives.txt (полный список функций GTA IV) и NativesPlus.txt (описание функций);
* Возможность уточнить поиск с помощью различных операторов и использовать скобки (как в продвинутых интернет-поисковиках);
* Поиск ведётся только по названиям функций, а не по всей строке;
* Возможность поиска по названиям параметров функции и по типам параметров;
* Почти полная совместимость с Opcode Search Tool по возможностям, сочетаниям клавиш и виду интерфейса;
* Более дружелюбный интерфейс: все настройки можно изменить через программу.
Программа так похожа на Opcode Serch Tool, что большинство юзеров даже не заметят подмены
Можно составлять сложные запросы, например: (Actor | Char) & (Car | Vehicle) или ((Max & Health) | (Min & Armor)) & Char & -Player
Также можно искать текст параметров (!слово) и типов (#слово) функций, например: Char !x !y !z #f32 #f32 #f32 - искать слово Char в названии функции, xyz в параметрах функции и три дробных параметра (будет найдено например:
procedure ClearAreaOfChars(x : f32; y : f32; z : f32; radius : f32);
procedure GetCharVelocity(pedestrian : Ped; pX : Pf32; pY : Pf32; pZ : Pf32);
и т.д.)
Все ошибки и пожелания пишите здесь. Надеюсь, программа будет востребована. Хорошо бы выложить для этого её на SannyBuilder.com как и выложили fxt editor.
NST.rar 395.74К 26 загрузок
- Форумы GTAModding.ru
- → Просмотр профиля: Нравится: VcSaJen
- Политика Конфиденциальности
- Общие правила форумов ·