Jump to content

Neijwiert

Members
  • Posts

    139
  • Joined

  • Last visited

  • Days Won

    11
  • Donations

    0.00 USD 

Reputation Activity

  1. Like
    Neijwiert got a reaction from unknown for a file, PackageServer   
    Requires RenSharp v1.3

    This plugin will embed a TTFS server inside your Renegade FDS. Pretty much the only thing you need to do is add the .DLL to your FDS and the config file. This plugin does NOT require administrator privileges, however for it to work for external people you would probably need to forward the specified port in your router/network. 

    You may set other settings in the config file, but the only settings required in the config file are the port and the external IP checking websites. All others can have defaults and are probably better than what you would configure them to.
     
    PackageServer.ini:
    ; This settings file is for the Package Server [General] ; IPFetchSecondsInterval defines the interval in seconds when to check for the external IP of the Server ; Default is 5 ;IPFetchSecondsInterval = 5 ; TTFSPath override the TTFS path where the package server gets its packages from ; Default is 'Engine.AppDataPath/ttfs' ;TTFSPath = MyPath ; MaxClientConnections specifies the max clients can connect from a single IP address ; <= 0 means no limit, this is discouraged ; Default is 10 ;MaxClientConnections = 10 ; ClientTimeout specifies how long a client may take to download everything in whole minutes ; <= 0 means no limit, this is discouraged ; Default is 60 ;ClientTimeout = 60 ; LocalIPAddress specifies the local IP to bind the package server to ; Default is any network interface ;LocalIPAddress = 192.168.0.1 ; Port specifies the local port to bind the package server to ; There is no default, this must be defined Port = 23445 ; This section is dedicated to the servers that will provide the 'raw' extneral IP address ; These servers MUST return an IPv4 address, since the Renegade client can't handle IPv6 [IPFetchURLs] 0=http://ipv4.icanhazip.com/ 1=http://ipv4bot.whatismyipaddress.com  
  2. Like
    Neijwiert got a reaction from Unstoppable for a file, RenSharp - C# Wrapper for Dragonade   
    Are you struggling with your everyday development in C++?
    Do you suck with memory management or just the general hassle to get third party libraries for your custom Dragonade plugin?

    Well, no more!
    Introducing RenSharp for Dragonade

    This framework I created lets you make plugins for your FDS in .NET 4.7.2. You're probably wondering: will this need a heavily modified scripts.dll? I hear you and that's why I made sure it is bootstrapped by a regular Dragonade plugin.

    "Are there any other limitations?", is probably your next question. Very few, here they are:

    - You can only create custom classes (i.e. specialization of classes) for the classes I made support for. However the reach of this support is the same as you'd use in any normal Dragonade plugin (event classes, console functions, player observer, object observer, etc).

    - I only made support for the template classes that are used throughout scripts.dll. Any customizations on this are not supported.

    - Even though I added in some more safety nets to check for nulls etc. You can still fuck this up and make it crash horribly. Although the checks in place will also throw a managed exception and if not catched and handled will gracefully shutdown the FDS.

    - Some design choices removed some support. For example there is no 'const' concept. But these choices shouldn't really limit your imagination.

    - That's about it of what I can come up with on top of my head right now.


    With any plugin interface there are a few 'gotchas' and for RenSharp those are:

    - Inheritance is pretty much the same as you would in Dragonade. Except static initialization (using macros to register stuff) will not work in C#. Further explanation how this is handled is discussed in the example plugin.

    - All managed classes are basically handles to their C++ variants. You can bind the C++ pointer using the appropiate constructor which takes an IntPtr as an argument. These handle classes are not inheriting from IDisposable and assume they are not in charge of cleaning up that handle. If one of these handle classes is wrapped around an IUmanagedContainer<T> class that means that you MUST dispose them when you're done with them. As these containers indicate that you are indeed in charge of cleanup. 

    - If you pass ownership of an unmanaged pointer to the C++ side (which does the memory management) you should make sure to release the pointer on the managed side. To make sure the garbage collector never disposes it. Likewise, when you keep ownership on the managed side, you should keep a reference to the object for as long as you want to keep it alive.

    - Don't call any methods or use properties of which you don't really know what they do. You can screw it up. Otherwise, if you consider yourself well versed in this stuff, go right ahead.

    - Any more gotchas or usage are pretty much discussed in the example plugin.


    How to get started?
    The only config this adds to da.ini is 'RenSharpPlugins'. You name managed plugin .dlls the same way as you would under 'Plugins'. To start RenSharp you also need to add 'da_RenSharp.dll' under 'Plugins'. Preferably on position 1. But that is up to you. Then follow one of the instructions below:

    The quickest way to get started is to just use any Visual Studio version that can handle .NET 4.7.2. (for VS2019 you can just use the Visual Studio Installer to install .NET 4.7.2.). Create a new .NET 4.7.2. C# class library and search for the NuGet package 'Neijwiert.RenSharp' (right-mouse click on your project and click Manage NuGet Packages...) and click Install. All Renegade stuff is placed under the RenSharp namespace. When the NuGet package is installed it shows a readme.txt on how to properly set your target platform. You then have to place YourPlugin.dll, da_RenSharp.dll, ManagedRenSharp.dll and ManagedScripts.dll in your FDS folder. You can find these .dlls in 'YourPlugin\packages\Neijwiert.RenSharp.1.0.0\content' and 'YourPlugin\packages\Neijwiert.RenSharp.1.0.0\lib'.

    The slow way is to compile it yourself. You can download the ZIP file with the source, or from GitHub. Compilation requires you to have C++/CLI build tools installed (use Visual Studio Installer) and .NET 4.7.2. (also use Visual Studio Installer). You can use a newer Visual Studio version as long as you have Visual Studio 2012 installed on your computer, with latest updates (whenever it prompts you to update the projects when you open the solution, you need to hit cancel). For the C++ stuff you need the same requirements as you would when you build Dragonade. Then you can just add a .NET 4.7.2. class library project and add a reference to 'ManagedScripts'. Make sure you configurate the class library to build as x86. Then you're ready to build and use everything. 


    I pretty much made all this without drawing out a plan. I made some design mistakes and I also couldn't test everything due to the size of it. If you find anything broken/not working or stupidly designed message met and I see if I can get it fixed. This also applies for new feature requests. The best way to approach me would be via GitHub probably or a PM here. This cost me a lot of time and effort to make and I hope you guys are going to enjoy it and hopefully open up modding to some more less experienced coders. Everything is licensed under the Apache 2.0 license, which means you can do everything, but you must mention my name and include a copy of the license. I'm wide open to responses to this negative and positive, feel free to reply to this post.

    GitHub: https://github.com/Neijwiert/RenSharp
    NuGet: https://www.nuget.org/packages/Neijwiert.RenSharp
  3. Like
    Neijwiert got a reaction from unknown for a file, RenSharp - C# Wrapper for Dragonade   
    Are you struggling with your everyday development in C++?
    Do you suck with memory management or just the general hassle to get third party libraries for your custom Dragonade plugin?

    Well, no more!
    Introducing RenSharp for Dragonade

    This framework I created lets you make plugins for your FDS in .NET 4.7.2. You're probably wondering: will this need a heavily modified scripts.dll? I hear you and that's why I made sure it is bootstrapped by a regular Dragonade plugin.

    "Are there any other limitations?", is probably your next question. Very few, here they are:

    - You can only create custom classes (i.e. specialization of classes) for the classes I made support for. However the reach of this support is the same as you'd use in any normal Dragonade plugin (event classes, console functions, player observer, object observer, etc).

    - I only made support for the template classes that are used throughout scripts.dll. Any customizations on this are not supported.

    - Even though I added in some more safety nets to check for nulls etc. You can still fuck this up and make it crash horribly. Although the checks in place will also throw a managed exception and if not catched and handled will gracefully shutdown the FDS.

    - Some design choices removed some support. For example there is no 'const' concept. But these choices shouldn't really limit your imagination.

    - That's about it of what I can come up with on top of my head right now.


    With any plugin interface there are a few 'gotchas' and for RenSharp those are:

    - Inheritance is pretty much the same as you would in Dragonade. Except static initialization (using macros to register stuff) will not work in C#. Further explanation how this is handled is discussed in the example plugin.

    - All managed classes are basically handles to their C++ variants. You can bind the C++ pointer using the appropiate constructor which takes an IntPtr as an argument. These handle classes are not inheriting from IDisposable and assume they are not in charge of cleaning up that handle. If one of these handle classes is wrapped around an IUmanagedContainer<T> class that means that you MUST dispose them when you're done with them. As these containers indicate that you are indeed in charge of cleanup. 

    - If you pass ownership of an unmanaged pointer to the C++ side (which does the memory management) you should make sure to release the pointer on the managed side. To make sure the garbage collector never disposes it. Likewise, when you keep ownership on the managed side, you should keep a reference to the object for as long as you want to keep it alive.

    - Don't call any methods or use properties of which you don't really know what they do. You can screw it up. Otherwise, if you consider yourself well versed in this stuff, go right ahead.

    - Any more gotchas or usage are pretty much discussed in the example plugin.


    How to get started?
    The only config this adds to da.ini is 'RenSharpPlugins'. You name managed plugin .dlls the same way as you would under 'Plugins'. To start RenSharp you also need to add 'da_RenSharp.dll' under 'Plugins'. Preferably on position 1. But that is up to you. Then follow one of the instructions below:

    The quickest way to get started is to just use any Visual Studio version that can handle .NET 4.7.2. (for VS2019 you can just use the Visual Studio Installer to install .NET 4.7.2.). Create a new .NET 4.7.2. C# class library and search for the NuGet package 'Neijwiert.RenSharp' (right-mouse click on your project and click Manage NuGet Packages...) and click Install. All Renegade stuff is placed under the RenSharp namespace. When the NuGet package is installed it shows a readme.txt on how to properly set your target platform. You then have to place YourPlugin.dll, da_RenSharp.dll, ManagedRenSharp.dll and ManagedScripts.dll in your FDS folder. You can find these .dlls in 'YourPlugin\packages\Neijwiert.RenSharp.1.0.0\content' and 'YourPlugin\packages\Neijwiert.RenSharp.1.0.0\lib'.

    The slow way is to compile it yourself. You can download the ZIP file with the source, or from GitHub. Compilation requires you to have C++/CLI build tools installed (use Visual Studio Installer) and .NET 4.7.2. (also use Visual Studio Installer). You can use a newer Visual Studio version as long as you have Visual Studio 2012 installed on your computer, with latest updates (whenever it prompts you to update the projects when you open the solution, you need to hit cancel). For the C++ stuff you need the same requirements as you would when you build Dragonade. Then you can just add a .NET 4.7.2. class library project and add a reference to 'ManagedScripts'. Make sure you configurate the class library to build as x86. Then you're ready to build and use everything. 


    I pretty much made all this without drawing out a plan. I made some design mistakes and I also couldn't test everything due to the size of it. If you find anything broken/not working or stupidly designed message met and I see if I can get it fixed. This also applies for new feature requests. The best way to approach me would be via GitHub probably or a PM here. This cost me a lot of time and effort to make and I hope you guys are going to enjoy it and hopefully open up modding to some more less experienced coders. Everything is licensed under the Apache 2.0 license, which means you can do everything, but you must mention my name and include a copy of the license. I'm wide open to responses to this negative and positive, feel free to reply to this post.

    GitHub: https://github.com/Neijwiert/RenSharp
    NuGet: https://www.nuget.org/packages/Neijwiert.RenSharp
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.