Jump to content

Torndeco

Member
  • Content Count

    235
  • Joined

  • Last visited

  • Days Won

    3

Torndeco last won the day on December 27 2013

Torndeco had the most liked content!

About Torndeco

  • Rank
    Hardened

Profile Information

  • Gender
    Male

Recent Profile Visitors

2355 profile views
  1. Make an issue ticket @ https://github.com/maca134/MBCon/issues And paste the error messages Its alot easier for author to keep track + bug fix any issues
  2. @flow0815 Check that the plugin dll for BEFilterMonitor is not blocked. Might aswell unblock all the dlls in the plugins directory aswell
  3. Just posting this as it is a handy tool and people might not be aware of its existance. Plus the source code is available aswell :D ------------ MBCon - Download MBCon is a C# (.NET) BattlEye RCON client for ARMA 2/3 servers. It uses a simple plugin system to make it easy to extend. (BattleNET is included at the moment as there is a missing BE command, this will be changed to nuget soon). Included Plugins Console: Simply outputs stuff to a console window. Logger: Logs various BE events to logs. PlayerCheck: Can be used as a "global" bans list or a whitelister, using a file, http request or mysql database. BEFilterMonitor: Watches bans.txt and filters and reloads them when changed. RestartMessage: A simple plugin to do restart messages. ScheduledTasks: Perform BE commands at certain times. SimpleMessages: Sends messages to server at certain intervals. WebLogger: Sends logs to a URL. WebRcon: A very experimental plugin to allow access to a web-based RCON client. Basic Usage Edit the main config.ini, pointing to the active servers be config and start mbcon.exe.
  4. This is not the first time i mentioned i ported Epoch A3 to MySQL etc. The Epoch Devs are well aware i ported it over to MySQL, and some of them got my Skype Contacts. Hell even skar has used my python script that i use to indent files Epoch Server Files on an obfuscated anti-hack :) --------- Epoch Devs are more than capable of making an SQL extension (fank had one for a Life Server before) + code A3Epoch to use SQL. But they have no interest in doing so look @ axeman last comment. ------- Anyway i just offered to port the code the code to MySQL even mentioned it take 2-3 days. Hell i could prob get it done in less than a day to be honest. But that will only happen if Epoch License get changed or i am given permission to maintain an un-offical fork on a public Github. I have no interest in modify code so it can be obfuscated in a server pbo, which an extension does a checksum check on, guess i am just crazy ;)
  5. I have an old version of Epoch A3 converted over to MySQL. Yes i de-obfuscated all the server code + rewrote sections of the code to optimize for MySQL Tables. When i was de-obfuscated the code, thats when i noticed your tool was obfuscating the code was changing _index breaking code etc. I could easily redo the work in 2-3 days if was allowed to maintain a fork on a public Github. But that breaks EPOCH License, since we are not allowed to redist any changes etc
  6. extDB & extDB2 can be used on Arma2/3 (no linux support for Arma2 since extensions aren't supported on it). extDB2 is really just updated version extDB with some extra features, and slightly faster. Some of the changes changed how you talk to extDB so i renamed it to extDB2 to prevent some confusion. But the main advantage it also has better handling of when Database Connection is lost. Possible for extDB to crash server if Database Connection is lost (timing issue) Note: Your Server will need x86 redist vc2013 installed for later versions of extDB + all versions of extDB2 If your GSP doesn't have it installed, send them a ticket about it. -------- Its fairly easy to convert scripts from extDB->extDB2. Just the setup stage for extDB2 is slighty different + updated fn_async + protocols renamed slightly. Most/All the scripts i seen are using SQL_RAW / DB_RAW this is really insecure, but easier method to access Database. If you are capable i recommend you use SQL_CUSTOM instead.
  7. @Ghostis+Creep His extDB is running fine, its just closing when he shutdowns server etc... Its just his queries are just returning an empty result, but yeah that doesn't look like a steamID value to short @Creep Nice bit of code etc... Just some random tips extDB v34+ requires x86 vc redist 2013, thats is prob your reason for extDB v33 working for you + not the later versions. extDB2 requires x86 vc redist 2013 If you ask your GSP Providor to install them, they shouldn't have any issues etc.. -------- Quick tips if you update to extDB2 _database = "Database2"; _result = call compile ("extDB2" callExtension "9:ADD_DATABASE:Database2"); if (_result select 0 == 0) exitWith {diag_log "extDB2 Database2 Error, check extDB2 Logs ";}; _result = call compile ("extDB2" callExtension format["9:ADD_DATABASE_PROTOCOL:%1:SQL_RAW:1", _database]); if (_result select 0 == 0) exitWith {diag_log "extDB2 SQL_RAW Error, check extDB2 Logs";}; "extDB2" callExtension "9:LOCK"; Use this as fn_async.sqf http://pastebin.com/JX8PbgBU Note: Recommed you consider using SQL_CUSTOM its where you define prepared statements in a file, it is alot more secure. example of a file @ https://github.com/Torndeco/ArmA3_Wasteland.Altis/blob/Development_main/sql_custom/a3wasteland.ini extDB2 is really just has some new features, improved some of the code + better at handling Database Server Connection Loses
  8. For the record A3 Epoch Extension does has some advantages. Mainly it doesn't require to run in scheduled environment when fetching results. But since all the fetched results need to fit in the 10k callExtension limit, there is also extra sqf work to make the inventory arrays smaller when updating database etc.. The ability of custom scripts to save custom data to database without needing to alter the database etc. No knowledge of SQL required (but the basics are fairly easy imo, learning sqf + locality is harder for new people imo). My main point of contention is all the people pointing out Trader Menu is faster with Redis. That is because the A2 Epoch Trader Code was constantly checking the Database, while A3 Epoch Trader only checks the Database @ startup + keeps info in arma variables. ------------- But the main thing is Epoch Server Code is optimized for key value system used in Redis. Which is different to how MySQL Queries work, where you could update a single player value in a table thats linked to index of another table etc... So its abit of work to try + support either backend, without having the extension doing some of work to convert calls to either backend. Apparently the Server Code is getting unobfuscated in version 0.3->0.5. So you could always wait + alter the server code to use MySQL Backend (Its technical not against A3 Epoch License aslong as you don't redistribute the Server Code). It would be nice for the license get changed to something more open-source where people would be allowed to fork the servercode on a public github for different backends. ------------- But there are some other mods in the works, some well known + some not (that may or may not get finished / released). With some luck Epoch Devs might get some friendly competition in the near future.
  9. @f3cuk Inregards to Micheal rewrite for A2 Epoch. Michael used DB_CUSTOM_V3 in his rewrite for A2 Epoch. DB_CUSTOM_V5 has better performance as the procedure statements are cached, which will improve performance. edit: Basicly V3 the sql statements aren't cached, so are generated each time. While with V5 the statements are cached after the first run, extDB only needs to send the updated values afterwards.
  10. I had a long post but i try and rewrite it smaller Redis + MySQL both have advantages / disadvantages Redis Storage Key-Value: Simplier to use, but you need to update the entire string (normally an array containing all the starts Easier for people to write scripts to save in the Database Harder to parse info from outside, requires parser to read Arma Arrays MySQL: Storage == SQL: Harder to update the Database Schemes + perserve Data in the changes. Ability to update individual Info like player inventory, without needed to update the entire string -------------------------------------- Speed wise Redis it is faster MySQL: fast enough if its done right imo ArmaServer will spend most of its time sending updates to Backend to save... This can easily be offloaded to a worker pool todo without blocking arma engine. Hell it might be slightly faster than asking Redis Server ;) Plus you cant compare Trader Speeds with A2, since A3Epoch loads trader lists and saves it via setvariable on Traders Redis also has Advantage when it comes to speed is the ability to callExtension to fetch results in unscheduled enviroment without worry about it blocking engine to long. Other methods using worker threads i.e like extDB, require sleep to avoid blocking arma engine. Means you need to call it in scheduled enviroment to be able to sleep. Plus side to extDB method is you can workaround the size limitations of callExtension (last i checked 10k) --------------- One of the main issues i believe is people need to write a parser to read the info from Redis. <---------- Since its normally an arma array of info stored in string form. When most people are used to MySQL with the easier ability to change individual values. Or run a simply query to check player money etc for people that might be cheating etc... -------------- Regardless both storage schemes have different layouts and it would be a pain to support both offically. Basicly you are stuck waiting for epoch version 1 and a public release of code. Sidenote: You guys couldn't pick a backend with an offical library that supports both Linux + Windows. Instead of an offical library that supports Linux only and the port that MS maintains separately.
  11. To be fair... most people would have been under the impression of an open release day one.... It was then a closed server release fair enough, i can understand that Then you guys went with a public release of server files... gave a date etc + forum post. Not once was it mentioned that Epoch Extension does checksum checks, alters publicvariable etc That wasn't made public till people asked questions Personally i asked AWOL on Skype about it Day 1 of Release about the obfuscated server code,... Most Admins Like the ability to customize their Server a little Now only some admins might understand coding but blah you can argue that. ------------------- So far i rewrote the Server Code to use extDB Yep that means i have gone through the hassle of un-obfuscated the servercode. To acompilish the following 1) Proper secure locked vehicles within range of Base Jammer / Emitter So only group or last person to lock vehicle and open it, assuming jammer belongs to that person / group. Yes you could try implement another way but it would be inefficient and wastes cpu, easier to alter the locking / unlocking code than trying to fight against code that is running. 2) Bypass the publicvariables with my own custom publicvariables for Spawning Units, to spawn custom AI fsm for (multiple) Sappers. Increase the limit on AI Spawning Add support for HC dumb zombie horde Idea is zombie horde distracts player while sapper runs in and blows up... It increases difficulty, most dangerous thing about sappers is explosion gives your position away. 3) Proper random player spawns with helio spawn etc... Prevents camping areas around trader spawn locations. Atleast till you guys get that trader guard ai working nicely (gl with that). But then again someone got a nice AI Driving Script out on Arma3 Forums, i wasn't expecting that. 4) I also recently just fixed issue with an issue with the antihack. While on anti-hack subject you guys are making un-neccesary callExtensions Just have the extension log entries have timestamps by default reduces your callExtension by 1 for every log entry. Same goes for Saving Storage System, you have 2 callExtensions to save BUILDING Info that override each other. I also assume traders don't remove empty quanitys from their Item List in the Database, unless the extension is doing that internally. Personnally i added code when loading Trader Inventory to ignore empty quanitys from Array. That way next player trade it gets updated with smaller array (not containing empty quanities) 5) Override the standard Weather System nicely i.e at player login 6) Disabled UAV + AI Spawns, idea is interested but broken in implementation imo. Plus standard arma AI isn't great ---------------------- ---------------------- Normally i do feedback changes i.e De-obfuscated Serverfiles, noticed issue, explained it + pointed out the issue. Not one mention of thanks or any credit given in the Readme over the bug overreport / fix. Turns out the issue was actually effecting afew different files aswell. You guys ask me to test linux version but don't want to show me code sigh... Also got asked to make a Server Browser aswell at one point. Not to mention the odd Python Script to help out like adding info to bunch of sqf files to help benchmark timings etc.. ---------------------- ---------------------- EMod just allows admins to override client files.... Honestly the current A3 EPOCH just reminds me of DayZ Standalone, limited options you can alter. You are asking people to use mods to alter EPOCH, someone makes Emod which accomplishes what most admins would like. You blacklist the mod from your web browser Just ask author Maca to put up disclaimer in the mod code, so when it launches it warns this isn't Standard A3 EPOCH + warn that it may be broken. For me Emod means Reduce chance of dog spawns + fix FSM so possible to run away from Dog. Most people i know shoot the dog for barking and following them. Or just log off + come back after it despawns. Override the Group Requests WIP + WIP buttons that overlap the inventory screeen.... You know how annoying it is to see an issue. Absolute Co-ords overlaying a dialog using Safezones Co-ords... All the dialogs need abit of work (especially for players running low resolution), some i can change atm, some i can't But who knows what you guys will lock down even more. Also i have a different method to spawn in characters with inventory serverside that doesn't run into your issue of Magazine count not matching up for the first player to login to server. ---------------------- ---------------------- Edit: Sorry about the wall of text... Its just my opinion Anyway as for opening everything up at 1.0, there is no time-frame. You guys could change your mind by then, so far i only got your actions for A3 Epoch to base everything off. Completely different to what i was expecting from A2 Epoch Anyway gl with A3 Epoch it has potential
  12. @GZA Looks like you figured out how to use extDB from scratch / wiki... Not to many people done that i believe... Just had a really quick glance over the code where you callExtension & got afew pointers. You can ignore smaller Change, if you go for larger Change in the code.... (recommended) ------------ Smaller Change, Issue with to many vehicles stored, SYNC Method Will start with easiest code to change All your DELETE / INSERT Code Change from _pipe = "extDB" callExtension format["0:1:%1",_query]; to _pipe = "extDB" callExtension format["1:1:%1",_query]; We aren't interested in the results so no point blocking the arma engine while the SQL Statement is been ran. If there is a race condition in the code + your are worried about people abusing it... You should use the Bigger Change below ----------- Bigger Change, Fix Issue with lots of vehicles stored, ASYNC Method With the code linked below, that way less blocking the arma engine but code wont progress till statement is completed. ASYNC Method of calling extDB https://github.com/Torndeco/A3Wasteland_Framework/blob/master/a3waste_server/functions/extDB/fn_async.sqf [_query, 1, true] call fn_asyncCall.sqf // If we dont need result + dont want to wait till SQL Statement is complete (let it run in background) _result = [_query, 2, true] call fn_asyncCall.sqf // If we need result or are waiting for SQL Statement to be completed Nice + simple, note you need to alter the fn_asyncCall Protocol Names etc... This will also fix the code in regards to Multi-Part Messages, i.e your version of code will break if to many vehicles are stored + it doesnt fit in arma extension outputsize. edit: Link to General extDB call info @ https://github.com/Torndeco/extdb/wiki/Calls:-General-Info
  13. Last time i tried Poco 1.5 it had to many issues... From unable to compile extension on Linux & crashes on Windows I would rather wait for Poco 1.6 to be out for abit & see what sort of issues / pull requests crop up on the github page. There are some minor code changes required when switching from Poco 1.4 -> 1.5/1.6 They fixed Poco Detecting MySQL Datatype Text beening detected as a String Datatype. Will break String Datatype Check behaviour for MySQL i.e not adding "quotes" to TEXT datatype So when i switch over to Poco 1.6 will rename extension to extDB2 or something similiar, since the change will break Altis Life RPG. Also will add MongoDB Support for extDB while i am it. ---------------------- Anyway Support for defining OUTPUTS to have Quotes / No Change / AutoDetect Database String Datatype will be in the next version. Also afew new Options for INPUTS etc, so you dont lose ability to run Sanitize Data Check on INPUT Values, if you arent adding quotes to them in the Database. The code is already pretty much done (on dev branch, not compiled). I just need to get around to testing it + compiling the Release Versions for Windows / Linux.
  14. Innidb is single threaded & you need to update each value one @ a time which needs to be sync'ed to harddisk etc.. So unless you are using it rarely or just on server startup, it will prob hurt your server performance alot imo. Its is nice + simply to use & ok for lightweight stuff... But for performance its either a Standard Hive Custom Hive, extDB Or you could look @ Stats (http://www.armaholic.com/page.php?id=26985) Should work fine for Arma2, the only things you need to check / find out is that the extension outputsize is not hardcoded. If there is a config file that you can randomize the filename.
  15. SELECT * FROM <TABLE>; should work fine... I assume error is unknown datatype ? its prob due to MySQL DataTime Datatype need to backport some code to support that datatype.
×
×
  • Create New...