julionib Posted May 18, 2015 Share Posted May 18, 2015 dont know what is the correct type to use as return Try int. but how i could use it in the methods that require entities? for example freezeposition, set collision Link to comment Share on other sites More sharing options...
Inco Posted May 18, 2015 Share Posted May 18, 2015 (edited) Thanks, and to get vehicle type I need to crete model first, right? You can also use native function: // returns all boat modelsVehicleHash[] allBoatModels = Enum.GetValues( typeof( VehicleHash ) ).Cast<VehicleHash>().Where( m => Function.Call<bool>( Hash.IS_THIS_MODEL_A_BOAT, (int)m ) ).ToArray(); dont know what is the correct type to use as return Try int. but how i could use it in the methods that require entities? for example freezeposition, set collision int objHandle = create object;Entity e = new Entity(objHandle); Edited May 18, 2015 by Inco Link to comment Share on other sites More sharing options...
crosire Posted May 18, 2015 Author Share Posted May 18, 2015 int objHandle = create object;Entity e = new Entity(objHandle); It's not possible to create an instance of "Entity", because it's abstract as GTAV does not have any "free" entities without a type. but how i could use it in the methods that require entities? for example freezeposition, set collision Objects, or entities which are not peds or vehicles are called "Props": int handle = ...;Prop myObject = new Prop(handle); julionib 1 Link to comment Share on other sites More sharing options...
LCbuffalo Posted May 18, 2015 Share Posted May 18, 2015 Is anyone else having trouble with the World.GetDistance() method? I'm feeding it two proper Vector3's, but sometimes it works and sometimes it freezes up the entire game. Link to comment Share on other sites More sharing options...
c39687 Posted May 18, 2015 Share Posted May 18, 2015 (edited) Is anyone else having trouble with the World.GetDistance() method? I'm feeding it two proper Vector3's, but sometimes it works and sometimes it freezes up the entire game. use this instead then... public static float GetDistance(Vector3 startPos, Vector3 endPos){ Vector3 vector = endPos - startPos; return vector.Length();} edit: nm, just noticed this in the GTA.Math.Vector3 class... public float DistanceTo(Vector3 position) Edited May 18, 2015 by c39687 Link to comment Share on other sites More sharing options...
Cyron43 Posted May 18, 2015 Share Posted May 18, 2015 (edited) Can anybody please tell my why KeyEventArgs.Shift returns false when I press either of the shift keys? Heck I'm programming since many years and that never failed. And yes my keyboard is alright. Oh and when I press Alt then either KeyEventArgs.Alt AND KeyEventArgs.Shift return true. Edited May 18, 2015 by Cyron43 Link to comment Share on other sites More sharing options...
julionib Posted May 18, 2015 Share Posted May 18, 2015 im trying to delete a Rope created with ADD_ROPE native call but with the actual version of .net scripthookv the game crashes, in the previous version i was using (v0.6) the script .asi was crashing, probably im doing something wrong with the variables used, this is the code i made for testing: Dim tmpPos As Vector3 = Game.Player.Character.PositionDim tmp As Native.InputArgument = New Native.InputArgument(0)Dim rope As Integer = ADD_ROPE(tmpPos.X, tmpPos.Y, tmpPos.Z, 0, 0, 0, 10.0, 4, 10.0, 0.5, 0, False, False, False, 10.0, False, tmp)Wait(1000)UI.ShowSubtitle("delete")Wait(100)Dim tmpRope As Native.InputArgument = New Native.InputArgument(rope)Native.Function.Call(Native.Hash.DELETE_ROPE, tmpRope) this is the Add_rope method (just to make easy to me identify the params) Private Function ADD_ROPE(position_x As Double, position_y As Double, position_z As Double, angle_x As Double, angle_y As Double, angle_z As Double, length As Double, type As Integer, max_length As Double, min_length As Double, p10 As Double, p11 As Boolean, p12 As Boolean, p13 As Boolean, p14 As Double, breakable As Boolean, ByRef p16 As Native.InputArgument) As Integer Return Native.Function.Call(Of Integer)(Native.Hash.ADD_ROPE, position_x, position_y, position_z, angle_x, angle_y, angle_z, length, type, max_length, min_length, p10, p11, p12, p13, p14, breakable, p16) End Function Link to comment Share on other sites More sharing options...
julionib Posted May 18, 2015 Share Posted May 18, 2015 obs.: In a .asi script the code to delete works, the difference is that we use Any as the type, im not sure what would be the correct for .net, this is a sample code for .asi: Vector3 tmpPos = ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), false);Any tmp;Any rope = ROPE::ADD_ROPE(tmpPos.x, tmpPos.y, tmpPos.z, 0, 0, 0, 10.0, 4, 10.0, 0.5, 0, false, false, false, 10.0, false, &tmp);ROPE::ROPE_LOAD_TEXTURES();WAIT_WithMsg("deleting in 2 sec", 2000);ROPE::DELETE_ROPE(&rope);msg("deleted"); Link to comment Share on other sites More sharing options...
crosire Posted May 18, 2015 Author Share Posted May 18, 2015 (edited) DELETE_ROPE takes a pointer, you are feeding it the value directly. Game then tries to jump to the address which in your case is actually the handle and thus crashes, because the handle reinterpreted as an address obviously doesn't exist. To pass an input pointer to a native you currently need to enable unsafe code, which VB.NET doesn't support, or alternativly expand the scripting API in C++/CLI (where you can use pointers too). unsafe{ Native.Function.Call(Native.Hash.DELETE_ROPE, &rope);} Edited May 18, 2015 by Crosire Link to comment Share on other sites More sharing options...
julionib Posted May 18, 2015 Share Posted May 18, 2015 DELETE_ROPE takes a pointer, you are feeding it the value directly. Game then tries to jump to the address which in your case is actually the handle and thus crashes, because the handle reinterpreted as an address obviously doesn't exist. To pass an input pointer to a native you currently need to enable unsafe code, which VB.NET doesn't support, or alternativly expand the scripting API in C++/CLI (where you can use pointers too). unsafe{ Native.Function.Call(Native.Hash.DELETE_ROPE, &rope);} its possible to implement this on this tool? im sorry for all those questions, my knowledge is superficial, when memory, pointers, unsafe, etc words appears im completely noob ^^ or would be possible to make a .asi script with methods to create and delete the possible Ropes, then export them, you know a simple example of how i could export a C++ method and call it inside the .net script, but we need to consider that it dont will load the DLL/ASI because the .asi script will be already in mem loaded by asi loader (otherwise it cant call the game methods right?) Link to comment Share on other sites More sharing options...
flynhigh09 Posted May 18, 2015 Share Posted May 18, 2015 Is it possible to add control support for controllers judt need to implement the IS_CONTROL_PRESSED() N IS_CCONTROL_JUST_PRESSED().? Was gonna add myself but get errors from the NativesCaller.h n Main.h missing? Link to comment Share on other sites More sharing options...
LCbuffalo Posted May 18, 2015 Share Posted May 18, 2015 Is anyone else having trouble with the World.GetDistance() method? I'm feeding it two proper Vector3's, but sometimes it works and sometimes it freezes up the entire game. use this instead then... public static float GetDistance(Vector3 startPos, Vector3 endPos){ Vector3 vector = endPos - startPos; return vector.Length();} edit: nm, just noticed this in the GTA.Math.Vector3 class... public float DistanceTo(Vector3 position) Thanks. I ended up doing a re-write, and the problem's gone. Most likely my own error, after all. On a different note, since World.Weather is write-only, is there another method to find out what the current weather is like? Link to comment Share on other sites More sharing options...
crosire Posted May 18, 2015 Author Share Posted May 18, 2015 its possible to implement this on this tool? im sorry for all those questions, my knowledge is superficial, when memory, pointers, unsafe, etc words appears im completely noob ^^ or would be possible to make a .asi script with methods to create and delete the possible Ropes, then export them, you know a simple example of how i could export a C++ method and call it inside the .net script, but we need to consider that it dont will load the DLL/ASI because the .asi script will be already in mem loaded by asi loader (otherwise it cant call the game methods right?) Sure, just needs to be added to the scripting API. I think somebody has started working on a rope wrapper not long ago (could be wrong though, in which case that definitly is a thing to be done in the near future). but get errors from the NativesCaller.h n Main.h missing? Please read the readme =), you need to download and add the C++ Script Hook SDK to build. Link to comment Share on other sites More sharing options...
PlayPrey Posted May 18, 2015 Share Posted May 18, 2015 (edited) *Insert stupid question where I figured what I did wrong and fixed it... Sorry* Edited May 18, 2015 by PlayPrey Link to comment Share on other sites More sharing options...
NXT Posted May 18, 2015 Share Posted May 18, 2015 Hey all. I've been trying to understand why this code may work, or not: Imports SystemImports System.Collections.GenericImports System.IOImports System.TextImports System.LinqImports System.Threading.TasksImports System.DrawingImports System.Windows.FormsImports GTAImports GTA.NativeNamespace GTAVscriptsPublic Class MainScriptInherits ScriptDim taskes As GTA.TaskSequenceDim car00 As VehicleDim spawn00 As GTA.Math.Vector3 = New GTA.Math.Vector3(-2232.192, -342.7576, 13.44737)Dim dest001 As GTA.Math.Vector3 = New GTA.Math.Vector3(-1066.685, -625.2508, 16.71763)Public Sub New()AddHandler Tick, AddressOf onTickAddHandler KeyUp, AddressOf onKeyUpAddHandler KeyDown, AddressOf onKeyDownCreator()Tasker()TeleportPlayer()End SubPrivate Sub onTick(sender As Object, e As EventArgs)Interval = 50End SubPrivate Sub onKeyDown(sender As Object, e As KeyEventArgs)End SubPrivate Sub onKeyUp(sender As Object, e As KeyEventArgs)End SubPrivate Sub TeleportPlayer()Game.Player.Character.Position = New GTA.Math.Vector3(-2214.914, -344.171, 13.3544)Game.Player.Character.Task.PerformSequence(taskes)End SubPrivate Sub Tasker()taskes = New TaskSequencetaskes.AddTask.DriveTo(car00, dest001, 10.0, 300.0F, CInt(DrivingStyle.AvoidTrafficExtremely))taskes.Close()End SubPrivate Sub Creator()car00 = World.CreateVehicle(VehicleHash.BJXL, spawn00, 260.0)End SubEnd ClassEnd Namespace The .log says this: [18:14:17] [DEBUG] Found 1 script(s) in 'GTA V - Coordinate.dll'.[18:14:17] [DEBUG] Found 1 script(s) in 'GTA V - PedTests.dll'.[18:14:17] [DEBUG] Starting 2 script(s) ...[18:14:17] [DEBUG] Instantiating script 'GTAVCoordinate.GTAVscripts.MainScript' in script domain 'ScriptDomain_580198B2' ...[18:14:17] [DEBUG] Started script 'GTAVCoordinate.GTAVscripts.MainScript'.[18:14:17] [DEBUG] Instantiating script 'GTAVPedTests.GTAVscripts.MainScript' in script domain 'ScriptDomain_580198B2' ...[18:14:17] [ERROR] Failed to instantiate script 'GTAVPedTests.GTAVscripts.MainScript' because constructor threw an exception:System.InvalidOperationException: Illegal call to 'Script.Wait()' outside main loop!at GTA.Script.Wait(Int32 ms)at GTA.Model.Request(Int32 timeout)at GTA.World.CreateVehicle(Model model, Vector3 position, Single heading)at GTAVPedTests.GTAVscripts.MainScript..ctor()[18:14:18] [DEBUG] Unloading script domain 'ScriptDomain_580198B2' ...[18:14:18] [DEBUG] Stopping 1 script(s) ...[18:14:18] [DEBUG] Aborted script 'GTAVCoordinate.GTAVscripts.MainScript'.[18:14:18] [DEBUG] Deleted script domain 'ScriptDomain_580198B2'. Sorry for the 'spoilers'. Just to make it not too long. I can't figure what's wrong (maybe it's all wrong in the first place?). Now let me say something: it may happen for once, or twice, then it starts working normal (just have to press Insert a couple of times). And there's something I noticed, and it is: It won't work when I start the game fresh (or reload any saved game), only by pressing Insert (maybe twice). How can I solve it? I'm a beginner (as most of you can see). Now something totally different from this above: the 'DrivingStyle': I highly doubt this has something to do with this ScriptHook, but yes with how the game was made: Most of those modes of driving are pretty bad (mainly the AvoidTrafficExtremely, and the AvoidTraffic, too)... I would try to make some racing AI, but they're really bad driving (even without any traffic, they slow down for no reason and, they even crash in wide spaces). Just to make sure it's not just me. Link to comment Share on other sites More sharing options...
PlayPrey Posted May 18, 2015 Share Posted May 18, 2015 Now something totally different from this above: the 'DrivingStyle': I highly doubt this has something to do with this ScriptHook, but yes with how the game was made: Most of those modes of driving are pretty bad (mainly the AvoidTrafficExtremely, and the AvoidTraffic, too)... I would try to make some racing AI, but they're really bad driving (even without any traffic, they slow down for no reason and, they even crash in wide spaces). Just to make sure it's not just me. I am actually also making a racing mod. O.O And I got the same problems; AI drive very slowly around corners and crash. Link to comment Share on other sites More sharing options...
julionib Posted May 18, 2015 Share Posted May 18, 2015 its possible to implement this on this tool? im sorry for all those questions, my knowledge is superficial, when memory, pointers, unsafe, etc words appears im completely noob ^^ or would be possible to make a .asi script with methods to create and delete the possible Ropes, then export them, you know a simple example of how i could export a C++ method and call it inside the .net script, but we need to consider that it dont will load the DLL/ASI because the .asi script will be already in mem loaded by asi loader (otherwise it cant call the game methods right?) Sure, just needs to be added to the scripting API. I think somebody has started working on a rope wrapper not long ago (could be wrong though, in which case that definitly is a thing to be done in the near future). but get errors from the NativesCaller.h n Main.h missing? Please read the readme =), you need to download and add the C++ Script Hook SDK to build. Right, i tried to build one here lol, based on the Entity.cpp and .hpp i made some changes to "adapt" the basic create + delete methods to the Rope entity (i guess) but when i compile the project the .asi file is not loaded, in the asilog i obtain this message: ASI: Loading "E:\Program Files X\SteamLibrary\steamapps\common\Grand Theft Auto V\ScriptHookVDotNet.asi""ScriptHookVDotNet.asi" failed to loadLOADER: Finished loading *.asi plugins This is the result of my compilation log: ------ Rebuild All started: Project: ScriptHookVDotNet, Configuration: Debug x64 ------ Blip.cpp Camera.cpp Entity.cpp Game.cpp GameplayCamera.cpp Log.cpp Main.cpp Matrix.cpp Menu.cpp MenuItem.cpp Model.cpp Native.cpp Ped.cpp Player.cpp Prop.cpp Quaternion.cpp Script.cpp ScriptDomain.cpp Settings.cpp Tasks.cpp Generating Code... Compiling... UI.cpp UIContainer.cpp UIRectangle.cpp UIText.cpp Vector2.cpp Vector3.cpp Vehicle.cpp Viewport.cpp World.cpp TaskSequence.cpp Weapon.cpp WeaponCollection.cpp Generating Code... .NETFramework,Version=v4.5.AssemblyAttributes.cpp ScriptHookVDotNet.vcxproj -> \\VBOXSVR\Grand_Theft_Auto_V\ScriptHookVDotNet.dll 1 arquivo(s) copiado(s).========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ========== and this is a error that appear for each native call in the code but the compilation succeed even with those errors: http://puu.sh/hSl1v/bbb01246af.png This is the files i copied to sdk folder as asked in the README: http://puu.sh/hSlu6/378452ae72.png Link to comment Share on other sites More sharing options...
Cyron43 Posted May 18, 2015 Share Posted May 18, 2015 (edited) Now something totally different from this above: the 'DrivingStyle': I highly doubt this has something to do with this ScriptHook, but yes with how the game was made: Most of those modes of driving are pretty bad (mainly the AvoidTrafficExtremely, and the AvoidTraffic, too)... I would try to make some racing AI, but they're really bad driving (even without any traffic, they slow down for no reason and, they even crash in wide spaces). Just to make sure it's not just me. Same here. Sometimes the driver avoids traffic pretty well, at other times he crashes right into the car in front without even trying to avoid it. Most times the driver follows the drawn route to the waypoint, at other times he seems to prefer highways/freeways and sometimes he even wants to drive to the waypoint in a straight line - all with the same driving style set. The most reliable driving style seems to be the normal one (obey traffic laws and stop at red traffic lights). Edited May 18, 2015 by Cyron43 Link to comment Share on other sites More sharing options...
crosire Posted May 18, 2015 Author Share Posted May 18, 2015 I can't figure what's wrong (maybe it's all wrong in the first place?). Now let me say something: it may happen for once, or twice, then it starts working normal (just have to press Insert a couple of times). And there's something I noticed, and it is: It won't work when I start the game fresh (or reload any saved game), only by pressing Insert (maybe twice). How can I solve it? I'm a beginner (as most of you can see). Exception message explains it pretty well. You are attempting to create a vehicle inside the constructor, which itself has to stream in the vehicle model, which is a blocking call and thus not allowed. Anything attemping to block (calling "Script.Wait" or "Script.Yield") inside the constructor is not allowed, since the constructor is executed in the base thread and would block the entire Script Hook. You have to do those kind of things in the Tick or KeyDown/Up events. Right, i tried to build one here lol, based on the Entity.cpp and .hpp i made some changes to "adapt" the basic create + delete methods to the Rope entity (i guess) but when i compile the project the .asi file is not loaded, in the asilog i obtain this message: Don't worry about the errors inside Visual Studio, that's just Intellisense screwing up. As for the not loading thing, try to build the ASI in release build rather than debug. Link to comment Share on other sites More sharing options...
unknown modder Posted May 19, 2015 Share Posted May 19, 2015 (edited) To use unsafe pointers in c# (int *) add these to native.cpp/hpp. This wont work for VB and this wont let you use the ref keyword(references are not the same as pointers.) In order to use natives that maybe take the pointer to an entity, you would need to edit Output Argument to set the value of where the pointer points to first //Native.hpp InputArgument(void *value); static inline operator InputArgument ^ (void *value) { return gcnew InputArgument(value); }//Native.cpp InputArgument::InputArgument(void *value) : mData(IntPtr::IntPtr(value).ToInt64()) { } Few issues that may want to be addressed, rather than using void *, may be more sensible to have multiple definitions for int *, float * etc. Not all item types will work for this, GTA.Math.Vector3 is a prime example of where this would fail Edited May 19, 2015 by unknown modder Link to comment Share on other sites More sharing options...
julionib Posted May 19, 2015 Share Posted May 19, 2015 Ok i made it work, based on world.createVehicle i made the CreateRope + the Rope.cpp + Rope.hpp, i just made the create + delete methods, now i need to send it to the github for possible aprovation and inclusion in the project right? flynhigh09 1 Link to comment Share on other sites More sharing options...
crosire Posted May 19, 2015 Author Share Posted May 19, 2015 Ok i made it work, based on world.createVehicle i made the CreateRope + the Rope.cpp + Rope.hpp, i just made the create + delete methods, now i need to send it to the github for possible aprovation and inclusion in the project right? Correct, that's the easiest way to collaborate on a project. Link to comment Share on other sites More sharing options...
julionib Posted May 19, 2015 Share Posted May 19, 2015 (edited) Ok i made it work, based on world.createVehicle i made the CreateRope + the Rope.cpp + Rope.hpp, i just made the create + delete methods, now i need to send it to the github for possible aprovation and inclusion in the project right? Correct, that's the easiest way to collaborate on a project. damn, i tried to add my changes into github (pull request, fork) but simple cant get how that thing work lol, this is the files i edited, can someone add the request for me? http://puu.sh/hSUMO/e039bd5daa.zip Edited May 19, 2015 by julionib Link to comment Share on other sites More sharing options...
crosire Posted May 19, 2015 Author Share Posted May 19, 2015 damn, i tried to add my changes into github (pull request, fork) but simple cant get how that thing work lol, this is the files i edited, can someone add the request for me? http://puu.sh/hSUMO/e039bd5daa.zip Will merge them later today. Link to comment Share on other sites More sharing options...
c39687 Posted May 19, 2015 Share Posted May 19, 2015 Is anyone else having trouble with the World.GetDistance() method? I'm feeding it two proper Vector3's, but sometimes it works and sometimes it freezes up the entire game. use this instead then... public static float GetDistance(Vector3 startPos, Vector3 endPos){ Vector3 vector = endPos - startPos; return vector.Length();} edit: nm, just noticed this in the GTA.Math.Vector3 class... public float DistanceTo(Vector3 position) Thanks. I ended up doing a re-write, and the problem's gone. Most likely my own error, after all. On a different note, since World.Weather is write-only, is there another method to find out what the current weather is like? not sure you you can try these out... static BOOL IS_PREV_WEATHER_TYPE(Any* p0) { return invoke<BOOL>(0x44F28F86433B10A9, p0); } // 0x44F28F86433B10A9 0x250ADA61 static BOOL IS_NEXT_WEATHER_TYPE(Any* p0) { return invoke<BOOL>(0x2FAA3A30BEC0F25D, p0); } // 0x2FAA3A30BEC0F25D 0x99CB167F Any is just an unsigned long, i havent tested but only relevant code i could find in the natives.h from AB's scripthookv Link to comment Share on other sites More sharing options...
flynhigh09 Posted May 19, 2015 Share Posted May 19, 2015 What Am i missing why do none of these work but do in c.. Boolean isPressed(int Button) { InputArgument button = new InputArgument(Button); return Function.Call<Boolean>(Hash.IS_CONTROL_JUST_PRESSED, 2, button); } Boolean isJustPress(int Button) { InputArgument button = new InputArgument(Button); return Function.Call<Boolean>(Hash.IS_CONTROL_PRESSED, 2, button); } Boolean isReleased(int Button) { InputArgument button = new InputArgument(Button); return Function.Call<Boolean>(Hash.IS_CONTROL_JUST_RELEASED, 2, button); } Boolean isJustReleased(int Button) { InputArgument button = new InputArgument(Button); return Function.Call<Boolean>(Hash.IS_DISABLED_CONTROL_JUST_RELEASED, 0, button); } bool isDown(int Button) { OutputArgument buttons = new OutputArgument(); // InputArgument button = new InputArgument(Button); Function.Call<bool>(Hash.IS_DISABLED_CONTROL_PRESSED, 0, buttons); bool output = buttons.GetResult<bool>(); return output; } Boolean isJustDown(int Button) { InputArgument button = new InputArgument(Button); return Function.Call<Boolean>(Hash.IS_DISABLED_CONTROL_JUST_PRESSED, 0, button); } Link to comment Share on other sites More sharing options...
Mcfloy Posted May 19, 2015 Share Posted May 19, 2015 I think i found the utility of the function _0xB5CC40FBCB586380 This function reacts like IS_VEHICLE_SIREN_ON, but as i can't set the siren light without the siren horn, i can't know if i'm totally right... BUT, i can prove that IS_VEHICLE_SIREN_ON and _0xB5CC40FBCB586380 displayed true when i activate the siren. When it would be possible to find the SET_SIREN_LIGHTS in the undefined functions, then this function _0xB5CC40FBCB586380 would react like a "IS_SIREN_LIGHTS_ON" function. If someone can make some tests with it (with at first a SET_SIREN_LIGHTS equivalent function), i'd like to know your opinion. Link to comment Share on other sites More sharing options...
Moder L Posted May 19, 2015 Share Posted May 19, 2015 (edited) Hello again, does anyone know how to delete prop from the world ? This doesn't work: Prop myprop = World.CreateProp(modelString, Game.Player.Character.Position, true, true);myprop.MarkAsNoLongerNeeded();myprop.Delete(); Edited May 19, 2015 by Moder L Link to comment Share on other sites More sharing options...
flynhigh09 Posted May 19, 2015 Share Posted May 19, 2015 Try like this n see if it will work..? Prop myprop = World.CreateProp(modelString, Game.Player.Character.Position, true, true);myprop.MarkAsNoLongerNeeded();Function.Call<Prop>(Hash.DELETE_OBJECT, myprop.Handle); Hello again, does anyone know how to delete prop from the world ? This doesn't work: Prop myprop = World.CreateProp(modelString, Game.Player.Character.Position, true, true);myprop.MarkAsNoLongerNeeded();myprop.Delete(); Link to comment Share on other sites More sharing options...
crosire Posted May 19, 2015 Author Share Posted May 19, 2015 Try like this n see if it will work..? Prop myprop = World.CreateProp(modelString, Game.Player.Character.Position, true, true);myprop.MarkAsNoLongerNeeded();Function.Call<Prop>(Hash.DELETE_OBJECT, myprop.Handle); Please don't! That will definitly crash your game, since DELETE_OBJECT takes a pointer to a handle, not a handle. =) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now