IMG

 
IMG
IMG   IMG
  Welcome to GTAForums! Be sure to check out the Grand Theft Auto V Forum.

You are not registered! (If you are, click here to login) Registering is fast, free and easy and allows you to instantly reply to any topic on GTAForums.
Why wait? Click here to register your own unique username and become part of the ever-growing community!


( Log In | Register | Revalidate Validation E-mail )
Quick Log-In:
  IMG
       
>
Forum Rules GTA Modification Forums

Post mod/code requests in the Mod Requests topic

Post mod releases in the Mod Showroom

Read the Modding Rules BEFORE posting!

GTAGarage.com
free mod hosting from GTANet, simply login with your GTAForums account details

GTAModding.com
GTANet's modding wiki

GTA Modding Chatroom
provided by irc.gtanet.com (Don't have an IRC client? Click here)


Pages: (86) [1] 2 3 ... Last »  ( Go to first unread post ) Reply to this topicStart new topicStart Poll

 [GTAIV|REL|SRC] C++ Script Hook

 IV Scripting via C++
 
aru  
Posted: Tuesday, Jan 6 2009, 11:35
Quote Post


developer in disguise
Group Icon
Group: Members
Joined: Jun 20, 2005

cd.gif

Member Award




GTA IV C++ Script Hook
Version 0.5.1 BETA (May 28 2010)

- Download Version 0.5.1 (Redistributable) -

Supports GTAIV 1.0.7.0 and EFLC 1.1.2.0. Released as BETA, not tested extensively, bug reports are welcome (don't PM me with them, just post them in this thread).

----

Version 0.5.0 (Apr 16 2010)

- Download Version 0.5.0 (Redistributable) -

Supports GTAIV 1.0.6.0 and EFLC 1.1.1.0.

Please note that 0.4.0 onwards comes with a new License that is different from earlier versions. Make sure you read and understand ScriptHook-License.txt before you make use of ScriptHook.dll.

------------------------------------

Development Info

This one is for all you coders out there (hopefully, there's still a lot of you)...

This module will let you create a custom script thread in C++ and have GTAIV process it along with its real scripts threads. Additionally, a type-safe manner to access native functions in GTAIV is provided.

Currently headers and a compiled dynamic library (DLL) is provided. Some very naive samples are provided as well. This is meant to be a base to build on top of. Feel free to contribute your own samples!

- Download Version 0.4.0 (Development Kit) -

Please note that 0.4.0 onwards comes with a new License that is different from earlier versions. Make sure you read and understand ScriptHook-License.txt before you make use of the ScriptHook SDK.

Developing for the 0.5.0 hook: You can continue to use the 0.4.0 SDK for development, and it is not being updated at this time. An updated DevLoader is available here:
- Download 0.5.0 DevLoader -
- Download 0.5.1 DevLoader -



Solution/Project files in zip are for VC++ 2008. Please read UpdateGuide.txt if you're upgrading your code to work from an older version of ScriptHook.

Whats New in 0.5.1

- Added support for GTAIV 1.0.7.0 and EFLC 1.1.2.0.
- Support for invoking undocumented natives by their "new" hash.

Whats New in 0.5.0

- Added support for GTAIV 1.0.6.0 and EFLC 1.1.1.0.
- Enabled MP on all unranked modes, however your multiplayer session will be isolated from people not using mods.
- Fixed bug with text flickering when using ScriptThread/NativeFiberThread
- Fixed bug with crashing when going in/out of video editor

Whats New in 0.4.0

- Added support for GTAIV 1.0.4 (Patch #5)
- New programming model replaces NativeThread and NativeFiberThread with ScriptThread
- A lot of performance enhancements, including:
---- Natives are now directly invoked using the native hash and not the name
---- "SpeedyInvoke" which dynamically rewrites parts of your compiled code to prevent repeated lookups of natives (only enabled for Release builds)
- Rewrote thread/service loading and now has better detection for when new game sessions start.
- Some minor bugs fixed

Whats New in 0.3.0

- New extensible services framework providing the following services currently:
---- D3DHook: Direct3D Device Hooking
---- Config: Configuration (ini and xml)
---- KeyboardHook: Keyboard hook to recieve events of key presses
---- Menu: A simple yet effective menu creation framework
- New "Speedo" sample demonstrating the use of services
- Added DevLoader which is an ASI loader with some development features such as module unload/reload.
- Improved thread hooking into the game -- less chances of crashing while hooking now (not that it crashed before).
- Added ability to unregister threads that were registered
- Added support for starting threads on demand
- Changed a lot of non-important log messages from Info to Debug
- Few internal bug fixes.

Whats New in 0.2.6

- Added support for GTAIV 1.0.4
- Support for Multiplayer when in LAN (any mode), or Online (Freeroam or Party mode only)
- Added a fix for world Z calculation for the Teleport sample in SampleCustomFiber

Whats New in 0.2.5

- Added support for GTAIV 1.0.3
- ScriptHook is now a DLL that can be updated independently of the mods that use it.
- Improved detection/hooking of scripts into the game engine
- Fixed invocation of natives that have Vector3* parameter types
- Fixed GetGlobalAddress/GetGlobalValue/SetGlobalValue for accessing Global variables
- Merged some of the Scripting native contributions back into the source (937 natives now available)
- A number of internal bug fixes
- ScriptHook is disabled for online play (currently its disabled regardless of which mode you play in or even Live/LAN, but this might change in the future)

Credits

- listener for some of the REing and natives mapping
- Seeman for some of the Natives documentation
- Reconsider for being my guinea pig on IRC during early development
- HazardX for some cleaned up natives
- sjaak327 for a lot of help with testing
- All of you guys PMing and emailing me and making me find the time to work on this smile.gif
- Last but not least, you (yes, you!) for creating (assuming that you will be creating) wonderful mods for this game.

Thanks guys!

This post has been edited by aru on Friday, May 28 2010, 23:12
PM
  Top
 

 
GammaRaptor  
Posted: Tuesday, Jan 6 2009, 11:38
Quote Post


The Phenomenal One
Group Icon
Group: Members
Joined: Jan 4, 2009

au.gif

XXXXX



Damn nice work should be useful !.
Users WebsitePMMSNXbox LivePlayStation Network
  Top
 

 
Intosia  
Posted: Tuesday, Jan 6 2009, 11:48
Quote Post


I'm random! ^^
Group Icon
Group: Members
Joined: Dec 11, 2008

nl.gif

XXXXX



Sweet!~ Good job man! Always hoped someone would release a template. I tried it myself one time but all i managed to get was my dll loaded into ASI showing a Messagebox catspider.gif

Damn, now i need to install VS... I normaly work with CBuilder...
Users WebsitePM
  Top
 

 
L0uNGeR  
Posted: Tuesday, Jan 6 2009, 12:07
Quote Post


Ya, that's what I said.
Group Icon
Group: Members
Joined: Dec 3, 2008

nl.gif

XXXXX



Hmm, I thinking, should I continue with LUA or should I start with C++??
C++ is probably more powerfull, though I'm certain that you can make LUA work at a very low level too.
At the moment it seems pretty hard to work with LUA, Alice gives me a hard time to use some native LUA functions.

Any thoughts?

ps. I this to C++ what Alice is to LUA ?

This post has been edited by L0uNGeR on Tuesday, Jan 6 2009, 12:16
PM
  Top
 

 
aru  
Posted: Tuesday, Jan 6 2009, 12:17
Quote Post


developer in disguise
Group Icon
Group: Members
Joined: Jun 20, 2005

cd.gif

Member Award




QUOTE (L0uNGeR @ Jan 6 2009, 07:07)
Hmm, I thinking, should I continue with LUA or should I start with C++??
C++ is probably more powerfull, though I'm certain that you can make LUA work at a very low level too.
At the moment it seems pretty hard to work with LUA, Alice gives me a hard time to use some actual LUA functions.

Any thoughts?

ps. I this to C++ what Alice is to LUA ?

More or less... yes.

But this is a bit cleaner since all the natives are explicitly typed... so you just have to do one single line of GetCharCoordinates(c, &x, &y, &z); instead of Push( c ), PushVarPtr(x), etc, CallNative("GET_CHAR_COORDINATES") blah blah.

This post has been edited by aru on Tuesday, Jan 6 2009, 12:20
PM
  Top
 

 
L0uNGeR  
Posted: Tuesday, Jan 6 2009, 12:19
Quote Post


Ya, that's what I said.
Group Icon
Group: Members
Joined: Dec 3, 2008

nl.gif

XXXXX



Well that's a big plus to begin with, LUA doesn't even support passing variables as a reference tounge2.gif
PM
  Top
 

 
Intosia  
Posted: Tuesday, Jan 6 2009, 12:22
Quote Post


I'm random! ^^
Group Icon
Group: Members
Joined: Dec 11, 2008

nl.gif

XXXXX



QUOTE (L0uNGeR @ Jan 6 2009, 12:07)
Hmm, I thinking, should I continue with LUA or should I start with C++??
C++ is probably more powerfull, though I'm certain that you can make LUA work at a very low level too.
At the moment it seems pretty hard to work with LUA, Alice gives me a hard time to use some actual LUA functions.

Any thoughts?

ps. I this to C++ what Alice is to LUA ?

I think atm C++ would be alittle more versatile then LUA. But in the future when Alice is at version 1.0 LUA will be just as good. When you have C++ knowledge i would do it in C++. (So i dont have to learn LUA).

This sourcecode builds a DLL file (=ASI file). The patched binkw32.dll will load dll's into the games memory (then you can use the function of the game in your own code). Alice is also a dll (like this code), and basicly does the same, but it has a more 'userfriendly' LUA interface'.
Users WebsitePM
  Top
 

 
L0uNGeR  
Posted: Tuesday, Jan 6 2009, 12:29
Quote Post


Ya, that's what I said.
Group Icon
Group: Members
Joined: Dec 3, 2008

nl.gif

XXXXX



Thanks for the replies.
I think I'll look into C++...Probably a lot easier to do some wicked stuff with math etc.
PM
  Top
 

 
sjaak327  
Posted: Tuesday, Jan 6 2009, 12:49
Quote Post


Big Homie
Group Icon
Group: Members
Joined: Dec 1, 2008

Member Award




QUOTE (Intosia @ Jan 6 2009, 12:22)
QUOTE (L0uNGeR @ Jan 6 2009, 12:07)
Hmm, I thinking, should I continue with LUA or should I start with C++??
C++ is probably more powerfull, though I'm certain that you can make LUA work at a very low level too.
At the moment it seems pretty hard to work with LUA, Alice gives me a hard time to use some actual LUA functions.

Any thoughts?

ps. I this to C++ what Alice is to LUA ?

I think atm C++ would be alittle more versatile then LUA. But in the future when Alice is at version 1.0 LUA will be just as good. When you have C++ knowledge i would do it in C++. (So i dont have to learn LUA).

This sourcecode builds a DLL file (=ASI file). The patched binkw32.dll will load dll's into the games memory (then you can use the function of the game in your own code). Alice is also a dll (like this code), and basicly does the same, but it has a more 'userfriendly' LUA interface'.

I guess for non programmers, being able to do simple, text based scripts, that don't need to be compiled is a big plus. Of course with C++ there is much more possible, altough we have to see, what alice will support in future.

Anyway, thanks for this, also the functions in scripting.h seem to be specified as to what the parm actually does.

PM
  Top
 

 
asd23  
Posted: Tuesday, Jan 6 2009, 14:04
Quote Post


Crackhead
Group Icon
Group: Members
Joined: Mar 24, 2004

et.gif

XXXXX



What about a compiled dll/anything that could be referenced from VB, so calling game functions from there would be possible?
No, there aren't many real coders left tounge2.gif and what I just said is a prime example
PM
  Top
 

 
L0uNGeR  
Posted: Tuesday, Jan 6 2009, 14:13
Quote Post


Ya, that's what I said.
Group Icon
Group: Members
Joined: Dec 3, 2008

nl.gif

XXXXX



Heck even AutoIt would probably work, it has DllCall()
PM
  Top
 

 
ceedj  
Posted: Tuesday, Jan 6 2009, 14:29
Quote Post


PEDS Creator
Group Icon
Group: Members
Joined: May 21, 2005

us.gif

Member Award




Man, you guys (you, Seemann, Sacky, listener, etc) are inSANE. I was just telling my machinima buddies that it'd probably be a good six months or so before I'd get a working Studios mod for IV.

Nice way to prove me wrong. I'm super glad to see C++ hooks being developed so quickly (A month. A FREAKING MONTH!!!). Great work to you all; having worked with a lot of them, I have a good idea of how much difficulty is involved.

Geez, with just a little tweaking, I can eventually port over most of my code from San An Studios. INSANE I tells ya lol.gif

This post has been edited by ceedj on Tuesday, Jan 6 2009, 14:42
Users WebsitePM
  Top
 

 
aru  
Posted: Tuesday, Jan 6 2009, 17:05
Quote Post


developer in disguise
Group Icon
Group: Members
Joined: Jun 20, 2005

cd.gif

Member Award




@asd23... there's no easy way of doing this... you'd probably have to create a .def file with all the function names exposed in Scripting.h. You might have to remove the static keyword from it to be able to do this. Additionally, you'll have to ensure that your VB code executes under a context of a NativeThread because some functions such as CreateCar, etc are thread-based... i.e., when you create a car, its attached to a script thread... when the thread gets killed, the car gets deleted. You'll get some unexpected behavior if you randomly start creating cars on someone else's thread.

@ceedj... can't wait for IV Studios wink.gif

PM
  Top
 

 
aceship  
Posted: Tuesday, Jan 6 2009, 17:36
Quote Post


Just An Indonesian Scripter
Group Icon
Group: Members
Joined: Dec 20, 2008

in.gif

XXXXX



Tutorial Please, I cant go This if There arent Any Tutorial

PMMSN
  Top
 

 
the hubster  
Posted: Tuesday, Jan 6 2009, 17:42
Quote Post


Sup Homies
Group Icon
Group: Members
Joined: May 3, 2005

en.gif

XXXXX



QUOTE (aceship @ Jan 6 2009, 17:36)
Tutorial Please, I cant go This if There arent Any Tutorial

http://www.cplusplus.com/doc/tutorial/


This post has been edited by the hubster on Tuesday, Jan 6 2009, 17:45
PM
  Top
 

 
ceedj  
Posted: Tuesday, Jan 6 2009, 17:43
Quote Post


PEDS Creator
Group Icon
Group: Members
Joined: May 21, 2005

us.gif

Member Award




QUOTE (aceship @ Jan 6 2009, 12:36)
Tutorial Please, I cant go This if There arent Any Tutorial

TUTORIAL:

1) Learn some C
2) Learn some C++
3) Learn how the GTA coding system works
4) Code away!

Easy like pie. smile.gif
Users WebsitePM
  Top
 

 
aru  
Posted: Tuesday, Jan 6 2009, 17:44
Quote Post


developer in disguise
Group Icon
Group: Members
Joined: Jun 20, 2005

cd.gif

Member Award




QUOTE (aceship @ Jan 6 2009, 12:36)
Tutorial Please, I cant go This if There arent Any Tutorial

Uhhh... if you need a tutorial, this probably isn't for you.

But I'll just reiterate what I said in the readme:

QUOTE

1. Edit CustomThread.h/.cpp as per your liking
2. Compile
3. Use a dll/asi loader to get the dll loaded into GTAIV.

If you need to use any natives that are not in Scripting.h, find them in
ScriptingDirty.h, clean it up, and move it to Scripting.h before using it.

PM
  Top
 

 
aceship  
Posted: Tuesday, Jan 6 2009, 18:19
Quote Post


Just An Indonesian Scripter
Group Icon
Group: Members
Joined: Dec 20, 2008

in.gif

XXXXX



thanks, i just need the vc++ 2008 express, and done(BTW i dont understad it)
PMMSN
  Top
 

 
L0uNGeR  
Posted: Tuesday, Jan 6 2009, 18:36
Quote Post


Ya, that's what I said.
Group Icon
Group: Members
Joined: Dec 3, 2008

nl.gif

XXXXX



We know you don't and we expect a lot of questions. turn.gif wink.gif
PM
  Top
 

 
GAK  
Posted: Tuesday, Jan 6 2009, 18:44
Quote Post


Player Hater
Group Icon
Group: Members
Joined: Dec 26, 2008

fr.gif

XXXXX



Awesome! Very good work!
Users WebsitePM
  Top
 

 

0 User(s) are reading this topic (0 Guests and 0 Anonymous Users)

0 Members:

Pages: (86) [1] 2 3 ... Last »

Topic Options Reply to this topicStart new topicStart Poll
Search topic for posted by (exact match)



 
IMG IMG