Page 1 of 4 123 ... LastLast
Results 1 to 40 of 147
  1. #1
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Lightbulb UDK - DLLBind: Embedded database (SQLite,MySQL) v3.1.0.2

    For all those are intersted in my project. It is an embedded SQLite databases with capabilities to connect to an external MySQL database, realised via DLLBind.

    Download last release: SQLProject3102.zip (version: 3.1.0.2)
    Download sources: DLLBindProjects.zip (version: 3.1.0.2)
    Sources are available under the NewBSD license.

    Download older releases:
    - SQLProject3101.zip (version: 3.1.0.1)
    - SQLProject2010.zip (version: 2.0.1.0)
    - SQLProject1051.zip (version: 1.0.5.1)

    The zipped release packages contains a small example how to use the interface functions.

    Core features:
    - Common statement syntax from SQLite including prepared statements, savepoints, transactions, rollbacks (see http://www.sqlite.org for further informations)
    - Multiple databases in memory
    - Load database from file into memory
    - Save database from memory to file
    - Supported types on UScript side: int, float, string

    Note: Please check out READ_ME_FIRST.txt before usage


    CHANGELOG:
    Version 3.1.0.1 to 3.1.0.2:
    - Fixed MySQL Driver Bugs (thx to Dan Cowell)

    Version 2.0.1.3 to 3.1.0.1:
    - Added MySQL Driver, allows connection to a remote database (need to be open for remote access)

    - Huge refactoring, older code won't compile with this version due to function signature changes
    - Adding DataProviders to make lot of things easier
    - Handling multiple result sets
    - Added function wrappers in DB_DLLAPI allowing to have multiple database drivers instantiate (for example if you want to

    connect to 2 different MySQL databases on 2 different servers)
    - Various new functions for general table management:
    dllimport final function int SQL_getTableCount();
    dllimport final function SQL_getTableName(int aTableIdx, string aValue);
    dllimport final function int SQL_getColumnCount(int aResultIdx);
    dllimport final function SQL_getColumnInfo(int aResultIdx, int aColumnIdx, out string aColumnName, out int aColumnType, out int aColumnDetail);

    - untested: 128-bit TEA file encryption
    - MD5 Hash implementation

    Version 2.0.1.2 to 2.0.1.3:
    - Hotfix: Crash when restarting map PIE

    Version 2.0.1.0 to 2.0.1.2:
    - Fixed directoryDeletion using IO_DeleteDirectory

    Version 2.0.0.0 to 2.0.1.0:
    - Added additional function to get last inserted row of selected database:
    int SQL_lastInsertID();

    Version 1.0.5.1 to 2.0.0.0:
    - Release under NewBSD license

    Version 1.0.5.0 to 1.0.5.1:
    - Added additional function to access query result values:
    SQL_getIntVal(string aParamName, out int aValue);
    SQL_getFloatVal(string aParamName, out float aValue);
    SQL_getStringVal(string aParamName, out string aValue);
    All these functions work on the column name of a result defined my the query expression (aParamName is case in-sensitive).
    - Previous getter functions are still available but marked as deprecated, being removed in a future release.

    Version 1.0.4.0 to 1.0.5.0:
    - Added function for directory and file access:
    bool IO_directoryExists(string aDirectoryPath);
    Return true if given path is a valid directory.
    bool IO_createDirectory(string aDirectoryPath);Return true if for given path a directory is created successfully.
    bool IO_deleteDirectory(string aDirectoryPath, int aRecursive);
    If aRecursiv is 1, all subdirectories and containing files will be removed to, regardless of read-only file attribute.
    Return true if deletion of given path was successful.
    bool IO_fileExists(string aFilePath);
    Return true if given path is a valid file.
    bool IO_deleteFile(string aFilePath);
    Return true if given file was successfully removed.


    Kind regards,
    BlackHornet
    Attached Files Attached Files
    Last edited by BlackHornet80; 09-27-2012 at 03:40 PM. Reason: New version

  2. #2
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    UDK
    Posts
    330

    Default

    Handsome Work ! Now our MMO can take shape ......

  3. #3
    MSgt. Shooter Person
    Join Date
    Sep 2007
    Posts
    115

    Default

    UDK April Build

    C:\UDK\UDK-2010-04\Development\Src\SQLProject\Classes\SQLProject_E xample.uc(44) : Error, Bad or missing expression in 'If'

  4. #4
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    Copy/Paste devil ... and i thought i checked everything before -.-

    should be mDLLAPI of course

    Code:
    /**
    * Function to test several imported DLLBind functions of UDKProjectDLL.
    * - Used to create a SQL Driver, which automatically creates a in-memory database.
    * - Create a table and fill it with data.
    * - Save database to disc
    * - Query table content and print on console
    * 
    * After initalising the SQLDriver it would be possible to load a presaved database from disc, its content
    * would be load into the current in-memory database.
    * @see bool SQL_loadDatabase(string aFilename)
    */
    function TestDatabase(){
    	local string lName, lCountry;
    	local int lID;
    	local int lSecondDB;
    
    	mDLLAPI.SQL_initSQLDriver(SQLDrv_SQLite);
    	lSecondDB = mDLLAPI.SQL_createDatabase();
    	if(lSecondDB > 0){
    		if(mDLLAPI.SQL_selectDatabase(lSecondDB)){
    			mDLLAPI.SQL_queryDatabase("CREATE TABLE Carproducer (ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,Name VARCHAR(30) NOT NULL,Country VARCHAR(30))");
    			mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Volkswagen', 'Germany');");
    			mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Opel', 'Germany');");
    			mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Ford', 'Germany');");
    			mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('BMW', 'Germany');");
    			mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Audi', 'Germany');");
    			
    			mDLLAPI.SQL_saveDatabase("test2ndDB.db");
    		}
    	}
    	
    	if(mDLLAPI.SQL_selectDatabase(0)){
    		mDLLAPI.SQL_queryDatabase("CREATE TABLE Carproducer (ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,Name VARCHAR(30) NOT NULL,Country VARCHAR(30))");
    		mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Volkswagen', 'Germany');");
    		mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Opel', 'Germany');");
    		mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Ford', 'Germany');");
    		mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('BMW', 'Germany');");
    		mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Audi', 'Germany');");
    		
    		mDLLAPI.SQL_saveDatabase("testDB.db");
    	}
    	
    	if(lSecondDB > 0){
    		if(mDLLAPI.SQL_selectDatabase(lSecondDB)){
    			mDLLAPI.SQL_queryDatabase("INSERT INTO Carproducer (Name, Country) VALUES ('Toyota', 'Japan');");
    			
    			mDLLAPI.SQL_saveDatabase("test2ndDB.db");
    		}
    	}
    	
    	mDLLAPI.SQL_selectDatabase(0);
    	mDLLAPI.SQL_saveDatabase("testDB.db");
    	if(mDLLAPI.SQL_queryDatabase("SELECT * FROM Carproducer;")){
    		while(mDLLAPI.SQL_nextResult()){
    			lName = class'SQLProject_Defines'.static.initString(30);
    			lCountry = class'SQLProject_Defines'.static.initString(30);
    
    			mDLLAPI.SQL_getValueInt(0, lID);
    			mDLLAPI.SQL_getValueString(1, lName);
    			mDLLAPI.SQL_getValueString(2, lCountry);
    			`log("Carproducer: Id: "$lID$", Name: "$lName$", Country: "$lCountry);
    		}
    	}
    
    	if(mDLLAPI.SQL_selectDatabase(lSecondDB)){
    		if(mDLLAPI.SQL_queryDatabase("SELECT * FROM Carproducer;")){
    			while(mDLLAPI.SQL_nextResult()){
    				lName = class'SQLProject_Defines'.static.initString(30);
    				lCountry = class'SQLProject_Defines'.static.initString(30);
    
    				mDLLAPI.SQL_getValueInt(0, lID);
    				mDLLAPI.SQL_getValueString(1, lName);
    				mDLLAPI.SQL_getValueString(2, lCountry);
    				`log("Carproducer: Id: "$lID$", Name: "$lName$", Country: "$lCountry);
    			}
    		}
    	}
    }

  5. #5
    MSgt. Shooter Person
    Join Date
    Sep 2007
    Posts
    115

    Default

    yes it's working now

  6. #6

    Default

    Nice. Does it support calling of Stored Procedure? That would be a sweet feature in terms of performance. Also, a support for Date/Time data type.

  7. #7
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    Due to limitations of SQLite, stored procedures are NOT stored in database, only during runtime, as long as the database is opened => prepared statements!

    see http://www.sqlite.org/datatype3.html for further informations about datatypes in SQLite
    Last edited by BlackHornet80; 04-23-2010 at 06:37 PM.

  8. #8

    Default

    I see. So SQLite is more of an single application's database rather than a client/server enterprise setup. Also, SQLite won't be able to handle MMOs with large-scale data efficiently.

  9. #9
    Redeemer
    Join Date
    Nov 2009
    Location
    Crete
    Posts
    1,044

    Default

    Thank! This is gon'a be very useful!!!

  10. #10
    Iron Guard
    Join Date
    Jan 2010
    Location
    Ottawa, Canada
    Posts
    777

    Default

    Very nice, I had this slated for a few months out - you gone and saved this community a whole pile of trouble.


  11. #11
    Veteran
    Join Date
    May 2007
    Location
    Above KillZ, Below StallZ
    Posts
    9,986

    Default

    The performance of SQLite is rather surprising - I work with a group of people doing poker database stuff, and for databases of under a million records, it's usually outperforming mySQL and very close with PGSQL. But, none of us in that group are database experts, either.
    http://www.ericbla.de http://www.dungeondefenders.com http://en.wikipedia.org/wiki/Warm_Gun http://www.rekoil.com http://www.groundbranch.com

    - Please don't send me private messages asking programming questions, those would be better asked on the Programming forum here. Thanks

  12. #12

  13. #13
    Veteran
    Join Date
    May 2007
    Location
    Above KillZ, Below StallZ
    Posts
    9,986

    Default

    Sure, if you design a way to save and restore your state as much as you need to
    http://www.ericbla.de http://www.dungeondefenders.com http://en.wikipedia.org/wiki/Warm_Gun http://www.rekoil.com http://www.groundbranch.com

    - Please don't send me private messages asking programming questions, those would be better asked on the Programming forum here. Thanks

  14. #14
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    not an addition to the SQL part, but within the upcoming version 1.0.5.0 i will add some file/directory functions...

    bool IO_directoryExists(string aDirectoryPath);
    bool IO_createDirectory(string aDirectoryPath);
    bool IO_deleteDirectory(string aDirectoryPath, int aRecursive);
    bool IO_fileExists(string aFilePath);
    bool IO_deleteFile(string aFilePath);

    I'm currently setting up my database account/savegame management...so a game could have several accounts, and each account can have its own savegames, everything stored in database

  15. #15
    MSgt. Shooter Person
    Join Date
    Mar 2010
    Posts
    46

    Default

    Quote Originally Posted by razvanab View Post
    UDK April Build

    C:\UDK\UDK-2010-04\Development\Src\SQLProject\Classes\SQLProject_E xample.uc(44) : Error, Bad or missing expression in 'If'
    After correction I still have the same problem at line 44. How can I fix this error.

  16. #16
    Veteran
    Join Date
    May 2007
    Location
    Above KillZ, Below StallZ
    Posts
    9,986

    Default

    I bet if you look at it for a minute or two, you'll figure it out, CHaos..
    http://www.ericbla.de http://www.dungeondefenders.com http://en.wikipedia.org/wiki/Warm_Gun http://www.rekoil.com http://www.groundbranch.com

    - Please don't send me private messages asking programming questions, those would be better asked on the Programming forum here. Thanks

  17. #17
    Iron Guard
    Join Date
    Jan 2010
    Location
    Ottawa, Canada
    Posts
    777

    Default

    Check your PM's Hornet

  18. #18
    MSgt. Shooter Person
    Join Date
    Mar 2010
    Posts
    46

    Default

    Quote Originally Posted by Blade[UG] View Post
    I bet if you look at it for a minute or two, you'll figure it out, CHaos..
    After fixing that I have another error:

    F:\UDK4\Binaries\..\Development\Src\MyMod\Classes\ SQLProject_Example.uc : Error, Bad class definition 'SQLProject_Defines'.static.initString(30);'/''/3483/3483

  19. #19
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    Just released version 1.0.5.1 with some new functions for basic IO handling (but experimental).
    Directory functions: directoryExists, createDirectory, deleteDirectory
    File functions: fileExists, removeFile

    And new functions added to the DLL Interface accessing query result columns via param name (see example).

    @Chaosnet
    Looks like you strip of the class identifier...
    class'SQLProject_Defines'.static.initString(30);
    Last edited by BlackHornet80; 05-02-2010 at 04:14 PM. Reason: Updated to version 1.0.5.1

  20. #20
    MSgt. Shooter Person
    Join Date
    Mar 2010
    Posts
    46

    Default

    Latest version built fine for me but I don't know how to use it, so can you provide some tutorials how can we use it. Thanks for this SQL feature.

  21. #21
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    UDK
    Posts
    330

    Default

    Quote Originally Posted by Chaosnet View Post
    Latest version built fine for me but I don't know how to use it, so can you provide some tutorials how can we use it. Thanks for this SQL feature.
    Big boss, if you are not ready for this start with INI saving, alien swarm did it and their game wasnt less popular for that.

    To answer you, the zip is coming already with an example, function are self explanatory even if some need 3 to 5 min of analysis and thinking. May be you need some database logic before using this, i suggest you to take MSDE express and try building database program using OCX oledb data provider, that is doing exactly the same as our friend blackhornet80. I used ado.net and oledb data provider on VS2005 express and it needed the same step as blackhornet80 is doing, so i am quite familiar with the concept and logic. I suggest to start from there, is not taking all the days as microsoft have very good small examples and 24h free courses on how to build a database program (not db but program to access a db through the provider given in OCX by them)

    Best regards

  22. #22
    MSgt. Shooter Person
    Join Date
    Mar 2010
    Posts
    46

    Default

    Quote Originally Posted by UT2007 View Post
    Big boss, if you are not ready for this start with INI saving, alien swarm did it and their game wasnt less popular for that.

    To answer you, the zip is coming already with an example, function are self explanatory even if some need 3 to 5 min of analysis and thinking. May be you need some database logic before using this, i suggest you to take MSDE express and try building database program using OCX oledb data provider, that is doing exactly the same as our friend blackhornet80. I used ado.net and oledb data provider on VS2005 express and it needed the same step as blackhornet80 is doing, so i am quite familiar with the concept and logic. I suggest to start from there, is not taking all the days as microsoft have very good small examples and 24h free courses on how to build a database program (not db but program to access a db through the provider given in OCX by them)

    Best regards
    I didn't say 24h free courses, only need an information that how can we connect our game class with SQL class and how can we use SQL commands in game. Should we use them in console or should we just run the "function TestDatabase()" to see the result

    Thank you.
    Last edited by Chaosnet; 05-03-2010 at 06:14 AM.

  23. #23
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    I will make a short tutorial with a GameInfo using the DLLBind functions in the near future for UDKC.

  24. #24
    Iron Guard
    Join Date
    Jan 2010
    Location
    Ottawa, Canada
    Posts
    777

    Default

    Thanks

  25. #25
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    For everybody who is interesed in the sources...i released my source under the NewBSD license, you can download the zip or access the sources via svn.

    Links for download/checkout are added to the first post of this thread (http://forums.epicgames.com/showthread.php?t=726137).

    There are NO functional changed from 1.0.5.1 to 2.0.0.0, I changed the version number due to license change

  26. #26
    MSgt. Shooter Person
    Join Date
    Mar 2009
    Posts
    117

    Default

    Was there any specific reason why you chose to use sqlite instead of others like postgresql and also fire bird ect ... I am just curious because I don't know that much about sql databases.

    Lost in my own never ending passion.

  27. #27
    Veteran
    Join Date
    May 2007
    Location
    Above KillZ, Below StallZ
    Posts
    9,986

    Default

    yeah, sqlite does not require a seperate server software, and is absolutely 100% free (bsd license i think) for any use
    http://www.ericbla.de http://www.dungeondefenders.com http://en.wikipedia.org/wiki/Warm_Gun http://www.rekoil.com http://www.groundbranch.com

    - Please don't send me private messages asking programming questions, those would be better asked on the Programming forum here. Thanks

  28. #28
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    As Blade said, i choose SQLite because its a non-zero configuration database with easy access via database files, where you dont have to install/start a server to use the database.



    But due to the reason its open source now, everybody is free to add own databasedrivers which can be easily added to the whole package.

    In that case i would be glad if you send me your changes, and i will merge them into the project.

  29. #29
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    New released version 2.0.1.0 available as package and on SVN
    Last edited by BlackHornet80; 05-15-2010 at 06:27 AM.

  30. #30
    MSgt. Shooter Person
    Join Date
    Nov 2009
    Posts
    152

    Default InitSQLDriver Error

    Do you have any problems during Play In Editor while Initializing the Database?
    I made a function that contains the Initialization code according to the example code, and it's called after a particular level finishes streaming. The first time in PIE, it works perfectly, but if I run PIE again (without closing the Editor), it hangs and crashes UDK.
    Running PIE after restarting the Editor before each playthrough, or playing as a standalone game works perfectly.

    Could you please tell if the same problem occurs at your end?
    Is it because I don't close the Database connection before exiting the PIE game? I tried to add the SQL_closeDatabase(int) function before the game closes, but that function doesn't work either. It hangs the moment I call it.

    EDIT: The specific line at which it hangs is : mDLLAPI.SQL_initSQLDriver(SQLDrv_SQLite);
    I don't know if there's any way to add it to a editor based singular function (which will run only once when the editor is started, instead of starting everytime I run the game), or perhaps your C++ code might be able to perform such a check?

    Log of errors:
    Code:
    [0046.15] SQLDriver: Initializing SQLite Driver
    [0049.32] Log: === Critical error: ===
    Fatal error!
    
    Address = 0x584d536d (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UserCode\UDKProjectDLL.DLL]
    Address = 0x584d14ad (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UserCode\UDKProjectDLL.DLL]
    Address = 0x779fc263 (filename not found) [in C:\Windows\SYSTEM32\ntdll.dll]
    Address = 0x19ad99a  (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UDK.exe]
    Address = 0x19ad833  (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UDK.exe]
    Address = 0x58c569   (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UDK.exe]
    Address = 0x58e9dd   (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UDK.exe]
    Address = 0x58e9dd   (filename not found) [in C:\UDK\UDK-2010-05\Binaries\Win32\UDK.exe]
    Last edited by research; 05-31-2010 at 12:46 AM. Reason: found the line causing problems

  31. #31
    Skaarj
    Join Date
    May 2010
    Location
    Cambridge, UK
    Posts
    17

    Default

    Awesome, I think I'll use this for savegames

  32. #32
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    @research: I will have a look into this evening, but it looks like the editor doesn't unload the dll properly, thanks for the hint.

  33. #33

    Default

    This looks really good. Do you know if it's safe against SQL injection attacks? Or will it all depend on the queries written by the developer?

    Thanks

  34. #34
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    the DLL itself do not perform any functions like htmlescape or something like that.

    with the parameterized statements you can perform own checks on every input value before binding it.

    In a multiplayer game, all sql action should be done on server side anyway.

  35. #35

    Default

    I guess parameters will take care of most possible problems It's true to say that most sql actions are performed server-side, but what if for example a player search feature was included and the player entered malicious sql in the search string.

    More a curiosity than anything ,great work though!

  36. #36
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    in my meaning, this should be handled by the server, to check the players input before performing the SQL command...just passing the values without having a look on first...i dont like this ^^

  37. #37
    MSgt. Shooter Person
    Join Date
    Nov 2009
    Location
    California
    Posts
    87

    Default

    My understanding of SQLite might be what's confusing me, but is having an in-memory DB necessary? All I'm trying to do right now is open up an existing db, accounts.s3db (already contains usernames and passwords), add a new entry into the existing table by script, and then overwrite/update the existing accounts.s3db with the new data.

    I tried using your DBMgr and FileMgr along with some exec functions I quickly coded into my PlayerController to try and see if I could achieve this but ran into some problems, particularly with saving.. Basically what I did was set my default ContentDatabase to accounts.s3db, made an exec function DB_CreateNewAccount(string username, string password) that successfully inserted new acc info into the in-memory db. I verified this by running another exec function that ran a select * query and fed all the results to `Log, the newly created account info was there.. but I couldn't figure out how to save the new database as accounts.s3db, in effect overwriting the existing one.. I tried creating a new exec function that used the saveDatabase("accounts.s3db") function; but this didn't work, nor did using the full filepath "C:\UDK....\Content\Data\accounts.s3db".

  38. #38
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    due to the fact you cannot access the unrealscript varibables from the C++ side, you have to give the whole path to the file you wanna save...
    like
    Code:
    local string lSavePath;
    lSavePath = mUserCodeRelPathUDKGame $ mDataRootPath $ "\\" $ "accounts.s3db"; // or using a string passed into a function
    and your right, you could also work directly in opened files instead of in-memory databases, maybe this is an addtion for one of the next versions, but i don't like this approach in this meaning.
    One of my intentions when i create this DLL was: I want to realize savegames.

    And for me a Savegame is a game state, so i just save my gameplay database to hard disc, and finished...all changes during gameplay are in-memory and lost if not saved. And writing operations into memory are faster than onto disc, even if SQlite are very handy and there might be any problems commonly used.

    PS: Check your Bin\Win32\UserCode folder for your saved database (this is the working folder of the DLL). There your saved database should be.

  39. #39
    MSgt. Shooter Person
    Join Date
    Nov 2009
    Posts
    152

    Default

    Quote Originally Posted by BlackHornet80 View Post
    @research: I will have a look into this evening, but it looks like the editor doesn't unload the dll properly, thanks for the hint.
    The Editor never unloads the dll once it has been loaded. You can verify this by deleting the dll file after the editor has started up. The dll related functions will still work.

    So maybe you could add a check in C++ to verify if the driver has been initialized or not before, before actually initializing it?

  40. #40
    MSgt. Shooter Person
    Join Date
    Jan 2010
    Location
    Germany
    Posts
    320

    Default

    just updated the sources to version 2.0.1.3 including the fix for this, compiled dll will follow


 
Page 1 of 4 123 ... LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Copyright ©2009-2011 Epic Games, Inc. All Rights Reserved.
Digital Point modules: Sphinx-based search vBulletin skin by CompletevB.com.