Jump to content

x39

Member
  • Content Count

    645
  • Joined

  • Last visited

  • Medals

  • Medals

Everything posted by x39

  1. just wanted to quickly point out that there is no need to get angry or call the software "shit" for bugs in an alpha phase ... things like this: <?xml version="1.0" encoding="utf-8"?> <root> <version>0.2.6331.26237</version> <report><![CDATA[I tried saving a fucking file. fix your shit software]]></report> <stacktrace><![CDATA[...]]></stacktrace> <trace /> </root> are frankly not helping nailing any problem this specific case for example, i cannot fix just by seeing the actual stacktrace as the exception raised already should be catched in code. An actual description what has happened and what was done, would allow me to "fix my shit software" as somehow an edge case was found i did not yet covered just quick note PS that particular bug is fixed now the root cause was that newly added projects would not have the dictionary of the solution "assigned" but instead the full path to the solution file meaning that .../foo/solution.asln/newproject would be the path that obviously could not be created was some change wrongly applied there is no QA on this project ... so theese things can happen will be in next minor release fix can be received via auto-update or via https://x39.io/Files/ArmAStudio/ArmA.Studio.0.2.6333.12157.setup.exe
  2. ArmA.Studio 0.2.6331.26237 got released you will be prompted when you start ArmA.Studio if you are not up to date (unless you disabled Auto-Updating) Open panels will appear empty due to internal changes, just reopen those Changes: - Rewrote whole lot of the backend --> Solution now supports separate projects from different pathes --> Fixed a whole lot minor and major issues - Added German Localization - Added Plugin System - Added Workspace History (displays the last X workspace pathes and makes them selectible) - Added simple image viewer (no PAA currently) - Added properties page for Solution-Project - Added Search (& Replace) - Added Temporary documents (will be received by the debugger so that debugging unknown code is possible) - Breakpoints now are in a separate file with separate extension - Images wont upscale anymore Special Thanks goes out to @vabene1111#5492 and `trdwll` for this update link: https://x39.io/projects?project=ArmA.Studio
  3. ArmA.Studio 0.1.6293.24366 got released you will be prompted when you start ArmA.Studio in case you are not up to date Changes: - Fixed Auto-Crash-Report not working - Fixed invalid sorting - Fixed crashes with non-ascii characters in workspace path - Fixed crash when no debugger is present - Changes layout of workspace selector dialog - Added info about current workspace to title - doubleclick on error info will now lead to line (for now only when document already is open) Special thanks goes out to jonpas and Knight for this update
  4. technically, you guys also could join the ArmA.Studio project :P IDE just got released and will feature more down the line to help ArmA developers in every aspect possible eg. it is planned to include a UI editor later also planned: stringtable editor all that however, still requires to have some systems to be implemented
  5. profiling branch provides important hooks for the debugger without those, you might still use it but some things mightn ot work as intended
  6. It is not dead but it is on hold ... due to real life i currently have litterally zero free time i could invest in modding :/ unfortunately this means stuff i created not receiving HEAVILY needed updates (and prevents some other projects i only got on my hdd on being released) in regards of this mission, you can pick development up anytime by forking it the latest codebase is not really understandable in SQF that much ... reason is: latest codebase was coded in OOS (you can see that source code here https://github.com/X39/XInsurgency/tree/OOS_Insurgencyand to get to know what OOS is, you just have to follow my signature link) development will continue activly as soon as i can make room for it again
  7. IMPORTANT NOTE Currently, the entire mission gets rewritte. You can try the current version but i would not recommend porting it over yet or judging by that impression you get from the current state. Current state just represents the performance level the mission will operate in the end! greets X39 and now you can continue :) Links & Download Steam Workshop Armaholic GitHub v1.0Stratisv1.1Stratis v1.1 - h1Stratis Altis v1.2Stratis Altis Changelog Version 1.2 Fixed |- Intel spawning inside of buildings was not working (thx TDC-Insane https://github.com/X39/XInsurgency/pull/2) |- ALTIS: Enemy friendly with Bluefor (https://github.com/X39/XInsurgency/issues/3) |- ALTIS: Vehicle position in base (https://github.com/X39/XInsurgency/issues/4) |- Save Inventory & auto-load inventory after death |- AmmoCaches cant be destroyed (THANKS ARMA ... rename some more classnames please!), also made it possible that they are being destroyed now with normal explosive charges \- Script issue when all AmmoBoxes got destroyed Added |- Multiple options to change the behaviour of the mission to missions parameters \- non-optional GarbageCollector Removed Changed Version 1.1 - hotfix 1 Fixed \- Fixed syntax issue caused by missing '}' in init.sqf Added Removed Changed Version 1.1 Fixed |- Some issue where the intel was not added correctly (always was added around spot [0,0,0]) due to objNull in ammoCache module \- (maybe) Quads were not invulnerable Added \- Save Inventory & auto-load inventory after death Removed Changed \- Added version message (systemChat currently) with current XInsurgency version -|MILESTONE: Initial Release|- Description XInsurgency orients at the classic ArmA 2 Insurgency mission we all know and love! It features are fairly simple but still effective: Optional simple vehicle spawner (changeable during mission by logged in admin or before mission) SimpleToUse pseudo modules (see XLibs Insurgency and AmmoCaches module for more informations) Destroy randomly spawned Ammo Caches to win the mission (pickup intel from dead enemies) (Warning! Currently there is no way to prevent the ammoCaches from spawning inside of the base) Clear out ton of enemies and make the grid clear for your backup (RED grid = BAD, GREEN grid = clear) Dynamic unit spawning Dead enemies are respawned after ~150 seconds Screenshots http://x39.unitedtacticalforces.de/XInsurgency/screen1.jpg (197 kB) http://x39.unitedtacticalforces.de/XInsurgency/screen2.jpg (196 kB) Frequently-Asked-Questions How to port it to another map?To port XInsurgency to another mission, just copy the different GameLogics over to the other mission (+ the mission folder) and youre done! If the map you chose does not supports automatic size detection (its a config entry most custom maps dont have) you have to change the "overrideMapsize" variable insided of the gamelogics from -1 to the mapSize (see XLib for help) Greets X39
  8. actually, that is supposed to work problem: it works because of the exitWith and only because of the exitWith exitWith will exit current scope with given result foreach however, should not return anything --> nil or generic error the thing in questions thus is: does foreach really returns something? the exitWith syntax however, is totally fine problem in the end with SQF still is: the syntax actually has nothign to do with its control structures syntax of SQF: private <LOCALIDENT> = <EXPRESSION>; <IDENT> = <EXPRESSION>; <EXPRESSION>; and that is pretty much it
  9. The unix version still is an experiment and not a serious version bi maintains Also ... this might run on linux (if someone ported the wpf framework)
  10. who needs crossplatform support for a single-platform game? there you go btw. https://forums.bistudio.com/topic/191187-alpha-arma-ui-editor-the-future-of-ui-editing-in-arma/ currently in alpha though ... also need loads of feedback still
  11. Prologue What is ObjectOrientedScripting (OOS)? OOS is a new script language that will be translated to native SQF meaning that it is 100% compatible with SQF. It makes it possible to develop modifications in an ObjectOriented way (thats why it is callen ObjectOrientedScripting ... ok i admit ... that was too obvious :P) Why would we want to stop using SQF? well ... its a quite complex thematic where most of it is personal choice thus i cant rly help you with this questions there is just one thing i can tell you: ObjectOriented Programming (in this case Scripting) has the benefit that youre (in theory) faster in developing scripts for some comparison, please read this: http://vbsoftwaredeveloper.blogspot.de/2012/05/procedual-programming-vs-object.html How does it look like? more or less like so (begging for a better example here, so if you just learned how to write in OOS please provide a better one due to the fact that im a horrible example provider as author of the lang): namespace X39 { namespace testNamespace { class cFoo { public void foobar(string _someRandomArg) { SQF diag_log("class foo " + _someRandomArg); } public void test(string _test, string _test2) { } private void test2(string _test, string _test2) { } } class cBar : cFoo { public void override foobar(string _someRandomArg) { SQF diag_log("class bar " + _someRandomArg); } } } interface testInterface { void interfaceFnc(string, scalar, scalar); } class testObj : testInterface { public testObj() { this.testVarPublic = ""; testVarStatic = ""; this.testFncPublic("arg1", "arg2"); this.testFncPublic("arg1", "arg2"); ::X39::testObj::testFncStatic("arg1", "arg2"); } public string testVarPublic; static string testVarStatic; public void testFncPublic(string _arg1, string _arg2) { SQF diag_log(SQF str(_arg1)); } static string testFncStatic(string _arg1, string _arg2) { SQF diag_log(SQF str(_arg2)); return ""; } void interfaceFnc(string s, scalar i, scalar j) { return; } } static void castDynamicTest(::X39::testNamespace::cBar testVar) { auto casted = $testNamespace::cFoo$ testVar; } static void castStaticTest(strict ::X39::testNamespace::cBar testVar) { auto casted = §testNamespace::cFoo§ testVar; } static bool instanceOfTest(::X39::testNamespace::cFoo testVar) { return testVar is ::X39::testNamespace::cBar; } static bool returnTrue() { return true; } static void preInit() { SQF diag_log("preInit"); auto _obj = new ::X39::testObj(); _obj.testFncPublic("preInitArg1", "preInitArg2"); ::X39::testObj::testFncStatic("preInitArg1", "preInitArg2"); auto _foo = new ::X39::testNamespace::cFoo(); _foo.foobar("normal foo"); auto _bar = new ::X39::testNamespace::cBar(); _foo.foobar("normal bar"); auto _testing = 0; auto scalarArray = {1, 2, 3, 4, 5, 6}; auto stringArray = {"test1", "test2", "test3"}; auto boolArray = {false, true, false}; auto scalarValue = scalarArray[0]; auto stringValue = stringArray[0]; auto boolValue = boolArray[0]; string castedString = §string§ scalarValue; for(auto _test = 0; _test < 10; _test = _test + 1) { SQF diag_log("test"); } switch(SQF alive (SQF player)) { case true: try { throw "foobar"; } catch(string test) { SQF diag_log(test); } break; default: if(::X39::returnTrue()) { SQF systemChat("aprooved"); } else { SQF systemChat("nop"); } break; } while(true) { break; } } } I want to try it! So where is the link? Just scroll a lil further and you will see the download section, from there just download the setup.exe and execute the Wrapper.exe application using the command line. A good thing to start with would be to use the -help param to check the available param list of your Wrapper.exe Never trusted executables out of unknown sources ... any way to get the source so i can compile it by myself? Yes you can! The Entire project is OpenSource and thus anybody can contribute to the developement. What you need is a simple installation of VisualStudio and youre good to go (if you got further questions please either ask here or create a new ticket in the github repository) Important Links Downloads v0.8.0-ALPHA v0.7.4-ALPHA v0.7.3-ALPHA v0.7.2-ALPHA v0.7.1-ALPHA v0.7.0-ALPHA v0.6.2-ALPHA v0.6.1-ALPHA v0.6.0-ALPHA v0.5.3-ALPHA v0.5.2-ALPHA v0.5.1-ALPHA v0.5.0-ALPHA v0.4.0-ALPHA v0.3.0-ALPHA v0.2.0-ALPHA v0.1.0-ALPHA GitHub X39.io Project Page Skype group Task List General Describing Document ObjectOrientedScripting "project" example Same but in SQF (hand translated) GreetsX39 PS If you got questions, feel free to ask
  12. Release v0.8.0-ALPHA Changelog Version 0.8.0-ALPHA |- stdLib: Added interface ::std::ISerializable |- stdLib: Added ::std::Vehicle(string, vec3) constructor |v- stdLib: Added `using ::std::Tupel` ||- Added Tupel2<T1, T2> ||- Added Tupel3<T1, T2, T3> ||- Added Tupel4<T1, T2, T3, T4> |\- Added Tupel5<T1, T2, T3, T4, T5> |- Compiler: ReEnabled (& implemented) interfaces |- Compiler: Fixed TryCatch variable is not getting printed |- Compiler: Changed how virtual functions are adressed |- Compiler: Changed where object meta data is located |- Compiler: Fixed issue in switch |- Compiler: Fixed NPE in Idents on LNK errors \v- Compiler: Only one PreInit function is allowed now \- Added new Linker exception LNK0060 Known Issues - Passing an object of the same class which you are in right now will result in the object getting assigned an invalid type ((Internally it will ref to the function which is for sure nonsense ... however ... harder to fix then it might sounds in first place due to the lower logic behind it)) - (Not rly an issue but more of a note) currently only idents are allowed to be callen. Thus you cannot call from an expression following would be invalid: `(new foobar()).foo()` due to the fact that it is the following: `<EXPRESSION>.<IDENT><FUNCTIONCALL>` - Casts currently do not check if given object is kind of cast target thus you can enforce invalid object types - Downcasting has to be done explicit - casting to an object having a template requires you to write it like so (example shows array<scalar> cast): < array<scalar> >yourVariable - creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array): new array< array<scalar> >()
  13. x39

    SQF Syntax checker

    that is pretty much what you have in the "outer world" of the IT :) so ... yes ... that is extremly useful (especially with SQF ... where the code most of the time is not behaving like you would expect :facepalm:)
  14. x39

    SQF Syntax checker

    its called "debuging" a breakpoint is just something where the debugger (in this case the tool presented here) will pause the execution of the script (and the program) so you can do some manipulation or just some visual check see: https://en.wikipedia.org/wiki/Debugger greets X39
  15. x39

    SQF Syntax checker

    cool idea still it is missing something to be "ArmA Studio" eg. creating and reading functions into cfgFunctions (+ parsing its head for the informations) should not be that hard to add such a component to the tool though ... (the functions should show up inside the autocompletion and in the string args for eg. execVM)
  16. Little bit late ... but here is a PreRelease http://x39.io/XInsurgency/XInsurgency_PreRelease.zip "official" release candidate will come as soon as i found the time to properly review the missions themself (codebase is clean as far as i tested)
  17. Release v0.7.4-ALPHA Changelog Version 0.7.4-ALPHA |v- Compiler: Fixed error in PreProcessor preventing some macros to work |v- Compiler: Fixed define compiler flag |v- Compiler: Added internal defines: ||- __VERSION <-- Contains current compiler version ||- __NEXCEPT(MSG) <-- Wrapper for Exception Object |\ Only working in Native Functions |- Compiler: `async` attribute functions now have to be of type script |- Compiler: Added `inline` attribute to functions | static inline [ async ] | <TYPE> <IDENT> ( <ARGLIST> ) [ throwing ] {...} |- Compiler: Added `throwing` attribute to functions | throwing is required when using the "throw" operation. | functions that call such a function but do not catch the | potential exception will generate a warning | Syntax: | static [ inline | external ] [ async ] [ virtual ] | <TYPE> <IDENT> ( <ARGLIST> ) throwing {...} |v- Compiler: Added internal object Exception (extendable for custom) ||- catch now has to use Exception type |\- throw now has to use Exception type |v- Compiler: updated vec3 (thx to Zeven90`s PR #48) ||- new constructor `vec3(array<scalar>)` ||- new member function `vec3 add(vec3 other)` ||- new member function `vec3 diff(vec3 other)` ||- new member function `vec3 dot(vec3 other)` ||- new member function `vec3 cross(vec3 other)` ||- new member function `scalar cos(vec3 other)` ||- new member function `scalar magnitude()` ||- new member function `scalar magnitudeSqr()` ||- new member function `vec3 multiply(scalar n)` ||- new member function `scalar distance(vec3 other)` ||- new member function `scalar distanceSqr(vec3 other)` |\- new member function `vec3 normalized()` |- stdLib: Updated ::std::Marker to use vec3 |- stdLib: Updated ::std::base::VehicleBase to use vec3 |v- stdLib: ::std::base::VehicleBase (thx to Zeven90` PR #48) |\- Fixed error in `::std::Config getConfigEntry()` |v- stdLib: ::std::Man (thx to Zeven90` PR #47) ||- Added enum ::std::Man::VisionMode ||- Fixed locality on `void disableAI(AiSection)` (throws now) ||- Fixed locality on `void enableAI(AiSection)` (throws now) |\- Updated enum ::std::Man::AiSection to 1.56 \v- stdLib: ::std::Group (thx to Zeven90` PR #47) | Fixed locality on `void delete()` (throws now) | Added `void join()` \ Added `::std::Man getLeader()` Known Issues - Passing an object of the same class which you are in right now will result in the object getting assigned an invalid type ((Internally it will ref to the function which is for sure nonsense ... however ... harder to fix then it might sounds in first place due to the lower logic behind it)) - (Not rly an issue but more of a note) currently only idents are allowed to be callen. Thus you cannot call from an expression following would be invalid: `(new foobar()).foo()` due to the fact that it is the following: `<EXPRESSION>.<IDENT><FUNCTIONCALL>` - Casts currently do not check if given object is kind of cast target thus you can enforce invalid object types - Downcasting has to be done explicit - casting to an object having a template requires you to write it like so (example shows array<scalar> cast): < array<scalar> >yourVariable - creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array): new array< array<scalar> >()
  18. Problem fixed by magic going into MP testing now one problem which somehow remains ... for no reason at all ... some variables are not set for some reason and some markers are not deleted ... why? because magic ... still analyzing but ... no solution yet found
  19. Release v0.7.3-ALPHA Changelog Version 0.7.3-ALPHA |v- Compiler: Added `deref <ident>` operation, returns SQF name of given || Non-Native function (virtual functions are not allowed too) || or of given static variable ||- Added new Linker exception LNK0052 || "Invalid Operation, Native functions are not derefable" ||- Added new Linker exception LNK0053 || "Invalid Operation, Virtual Functions are not derefable" ||- Added new Linker exception LNK0054 |\ "Invalid Operation, Non-Static Variables are not derefable" ||- Added new Linker exception LNK0055 |\ "Invalid Operation, using this in static functions" |v- Compiler: rewrote Expression code & EBNF ||v- Compiler: Expressions get parsed according to following precedence |||- First: "+" | "-" | "*" | "/" |||- Second: ">=" | "<=" | "==" | "<" | ">" ||\- Third: "&&" | "||" ||- EXPOP `==` is now using isEqualTo ||- removed EXPOP `===` ||- removed EXPOP `&` |\- removed EXPOP `|` |- Compiler: added `bool array<T>::contains(T)` function |v- stdLib: Added missing functions to ::std::Marker ||- string getText() |\- void setText(string) |- stdLib: Fixed ::std::Man constructor not returning objects |v- stdLib: Altered how ::std::Group is working ||- Removed ::std::Group::createGroup*() functions ||v- stdLib: Added ::std::Side class |||- Member Function: ::std::Side asEast() |||- Member Function: ::std::Side asWest() |||- Member Function: ::std::Side asResistance() |||- Member Function: ::std::Side asCivilian() |||- Member Function: ::std::Side asLogic() |||- Member Function: ::std::Side asEnemy() |||- Member Function: ::std::Side asFriendly() ||\- Member Function: ::std::Side asUnknown() |\- Added constructor ::std::Group::Group(::std::Side) |- Compiler: Fixed exception when LNK0012 happens |- Compiler: Fixed external functions had to return |- Compiler: Fixed variables without value get printed in function |- Compiler: Fixed Fixed static functions throw LNK0051 |- Compiler: Fixed encapsulation call check (on private/protected) |- Compiler: Fixed for loop arg1 variable not private in parents scope |- Compiler: Fixed private functions \- Compiler: Fixed "_" in fnc name fucks up config.cpp Known Issues - Passing an object of the same class which you are in right now will result in the object getting assigned an invalid type ((Internally it will ref to the function which is for sure nonsense ... however ... harder to fix then it might sounds in first place due to the lower logic behind it)) - (Not rly an issue but more of a note) currently only idents are allowed to be callen. Thus you cannot call from an expression following would be invalid: `(new foobar()).foo()` due to the fact that it is the following: `<EXPRESSION>.<IDENT><FUNCTIONCALL>` - Casts currently do not check if given object is kind of cast target thus you can enforce invalid object types - Downcasting has to be done explicit - casting to an object having a template requires you to write it like so (example shows array<scalar> cast): < array<scalar> >yourVariable - creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array): new array< array<scalar> >() NotesI am happy to announce that this build finally is stable for productive usage! BETA release will most likely be in Q2 this year
  20. Quick Status-Update so ... the code is litterally done ... but for some reason i get a weird behaviour with the different squares are spawning invalid (eg. units of square X spawn uphill and only in one building, you walk up to that building and they despawn just to spawn at a different position) ... so ... release still delays a little as i still try to nail that problem down ... as little "time-killer" ... here is the most recent codebase :) http://x39.io/XInsurgency/InDev.zip greetings X39
  21. well right now i only got a lil problem with the units not acting like i want them to act ... they clunch up way too much ...
  22. got something nice for you ppl soon, it is done :) the "rewrite" is nearly finished just a little bit of polishing is needed before i can deploy a complete new codebase to all missions faster, simpler, better stay tuned! looking forward to a release in feb :) greets X39
  23. x39

    SQF Syntax checker

    tbh ... this should not be that complicated ... only problem would be the PreProcessor will see when i got some spare time to do that
  24. thats what im doing :)there is even a little OOS project ongoing where i discovered the majority of the bugs i fixed since release of 0.7.0 https://github.com/X39/XInsurgency/tree/OOS_Insurgency/InsurgencyModule/src Release 0.7.2-ALPHA Changelog Version 0.7.2-ALPHA |- Wrapper: fixed Project.writeToFile(string) wrote buildfolder to | srcfolder |- WrapperUI: fixed saving exception which prevented saving changes |- WrapperUI: fixed set buttons not getting disabled when loading files |- Compiler: fixed issue where assignment type is not chosen correctly |- Compiler: fixed member variables are "directly assigned" |- Compiler: fixed member variables w/o def val being initialized using nil |- Compiler: fixed missing comma printing on params for multi-arg fncs |- Compiler: fixed static native functions args get messed up with printout |- Compiler: fixed native functions wrappers wrong select index |- Compiler: fixed void function wrappers tried to return something |- Compiler: added internal script object (currently unused) |- Compiler: added internal floor(<scalar>) function |- Compiler: added LNK0051 exception for variable defined twice in class |- and function |v- stdLib: Updated ::std::Marker functions ||- stdLib: new enum: Shape ||- stdLib: new function: void setType(string) ||- stdLib: new function: string getType() ||- stdLib: new function: void setShape(Shape) |\- stdLib: new function: Shape getType() |- stdLib: Added delete() function to ::std::Marker |- stdLib: Added deleteVehicle() function to ::std::base::VehicleBase |- WrapperUI: WrapperUI will inform you about unsaved changes you have | made to current file upon load/close |- WrapperUI: Implemented Ressources \- Compiler: Implemented Ressources Known Issues - Passing an object of the same class which you are in right now will result in the object getting assigned an invalid type ((Internally it will ref to the function which is for sure nonsense ... however ... harder to fix then it might sounds in first place due to the lower logic behind it)) - (Not rly an issue but more of a note) currently only idents are allowed to be callen. Thus you cannot call from an expression following would be invalid: `(new foobar()).foo()` due to the fact that it is the following: `<EXPRESSION>.<IDENT><FUNCTIONCALL>` - Casts currently do not check if given object is kind of cast target thus you can enforce invalid object types - Downcasting has to be done explicit - casting to an object having a template requires you to write it like so (example shows array<scalar> cast): < array<scalar> >yourVariable - creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array): new array< array<scalar> >()
  25. Release 0.7.1-ALPHA Changelog Version 0.7.1-ALPHA |- Compiler: fixed member functions without arguments lacked params command |- Compiler: fixed callWrapper `___tmp___ = ___tmp___` printout |- Compiler: fixed breakout missed left args brackets |- Compiler: fixed invalid LNKxxxx exception when function is not existing |- Compiler: fixed ident call wrapper used ___tmp___ AND _tmp |- Compiler: fixed some other stuff (meh ... do not ask :) tiny things) |- Compiler: fixed loops not printing scopeName instruction |- Compiler: "using" files did not got preprocessed |- Compiler: fixed third for argument is printed at the very begining |- Compiler: fixed native function calls do not process last argument |- Compiler: fixed passing <IDENT>.<IDENT> for a native function (and some | other things too ... kinda hard to explain ^^) |- Compiler: fixed objects require auto keyword inside of code |- Compiler: added static native functions |- Compiler: added external function references using the external keyword | static external [ async ] <TYPE> <IDENT> ( <ARGLIST> ); |- Compiler: added foreach operation | foreach( <VARTYPE> <IDENT> in <IDENT> ) |- Compiler: added vec3 object to OOS |v- Compiler: added native functions to OOS ||- isServer() ||- sleep(scalar) |\- isDedicated() |- stdLib: added ::std::getPlayer static function to ::std::Man |- stdLib: added AiSection enum to ::std::Man |- stdLib: added enableAI function to ::std::Man |- stdLib: added disableAI function to ::std::Man |- stdLib: fixed invalid return type in getObject of ::std::Context |- stdLib: fixed script issue on ::std::VehicleBase::setDamage(scalar) |- stdLib: fixed invalid string argument on ::std::Config::count() |- stdLib: fixed potential script issue in all native objects \- stdLib: changed function arglists of ::std::Context Known Issues - Passing an object of the same class which you are in right now will result in the object getting assigned an invalid type ((Internally it will ref to the function which is for sure nonsense ... however ... harder to fix then it might sounds in first place due to the lower logic behind it)) - (Not rly an issue but more of a note) currently only idents are allowed to be callen. Thus you cannot call from an expression following would be invalid: `(new foobar()).foo()` due to the fact that it is the following: `<EXPRESSION>.<IDENT><FUNCTIONCALL>` - Casts currently do not check if given object is kind of cast target thus you can enforce invalid object types - Downcasting has to be done explicit - casting to an object having a template requires you to write it like so (example shows array<scalar> cast): < array<scalar> >yourVariable - creating a new template object which gets another template object as kind requires you to write it like so (example shows array<scalar> in another array): new array< array<scalar> >()
×