Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > Star Wolves

Star Wolves 3D space RPG with deep strategy and tactical elements

View Poll Results: What should I Prioritize on?
Basebuilding! 1 25.00%
Balancing! 0 0%
The Mod Manager! 0 0%
Asteroid ore-dropping! 0 0%
Intensive Bugfixing! 3 75.00%
Voters: 4. You may not vote on this poll

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #21  
Old 03-07-2017, 07:18 PM
nocalora29's Avatar
nocalora29 nocalora29 is offline
¯\_ ͯ‿ ͯ_/¯
 
Join Date: Dec 2011
Posts: 518
Default /Progress Report | March. 2017 | "New Systems and Old Systems"/

Heres another PR.

In my spare time I worked on something called MGVE, which is just like MQLE, but this time, it is for Global's.
#Snippet#
HTML Code:
--     *****   **    **         * ***         ***** *      **        ***** **    
--  ******  ***** *****       *  ****      ******  *    *****     ******  **** * 
-- **   *  *  ***** *****    *  *  ***    **   *  *       *****  **   *  * ****  
--*    *  *   * **  * **    *  **   ***  *    *  **       * **  *    *  *   **   
--    *  *    *     *      *  ***    ***     *  ***      *          *  *         
--   ** **    *     *     **   **     **    **   **      *         ** **         
--   ** **    *     *     **   **     **    **   **      *         ** **         
--   ** **    *     *     **   **     **    **   **     *          ** ******     
--   ** **    *     *     **   **     **    **   **     *          ** *****      
--   ** **    *     **    **   **     **    **   **     *          ** **         
--   *  **    *     **     **  ** *** **     **  **    *           *  **         
--      *     *      **     ** *   ****       ** *     *              *          
--  ****      *      **      ***     ***       ***     *          ****         * 
-- *  *****           **      ******* **        *******          *  ***********  
--*     **                      ***   **          ***           *     ******     
--*                                   **                        *                
-- **                                 *                          **              
--                                   *                                           
--                                  *                                            
--ooooooooooooooooooooooooooooooooooooooooooooo
-- V E R S I O N      ::      1 . 1_IR
--  A U T H O R       ::      Nocalora
--SW3EXP.Framework    ::      0.6.2X
--ooooooooooooooooooooooooooooooooooooooooooooo
-- Monitored Global Variables Environment (MGVE)
-- Replaces Functions: [MGVS, getglobal]

--##### W A R N I N G /// W A R N I N G /// W A R N I N G #####
--
-- Warning: Do NOT Modify MGVE in any shape or form, only Proceed if you know what you are doing.
--
--##### W A R N I N G /// W A R N I N G /// W A R N I N G #####

--Function VarNames
-- "IDAL" = I-D Associated Link

--Amount of Total Globals existing.
__MGVE_GVAmount 	= 0;

--Amount of Total Global writes (MGVS -> MSGV)
__MGVE_GVWrites 	= 0;

--Amount of Total Global reads (getglobal -> MGGV)
__MGVE_GVReads 		= 0;

--Amount of Total Global deletes (Delete a Global -> MCGV)
__MGVEGVDeletes 	= 0;

--Allow the Real-Time OutputToScreenLOG LOG of existing MGVE Variables
__MGVE_LiveDebugMenuEnable = TRUE;

--Main Data Table containing all information about current existing MGVE for Diagnostic purposes
__MGVE_DataTable = {};

--Allow to Dump the Data in the Data Table into a AUTOGEN file
__MGVE_DumpDataTable_ExtendedLOG = TRUE;

--Allow the load of an GV Environment from a Table
__MGVE_LoadGVTableEnable = FALSE;

--Allow the Deletion of the complete MGVE Space when using the LoadGVTable Function.
__MGVE_LoadGVTableClearMGVEEnable = FALSE;

--Allow the Deletion of the complete MGVE Space when using the LoadGVFromFile Function.
__MGVE_LoadGVEnvironmentFromFileClearMGVEEnable = TRUE;

--The GV Environment Loading Table
__MGVE_LoadGVTable = {
						{"Developer_Mode", "False"}
					 };

--Simple Settings Section
--Allow LOGging of MGVE (Recommended Value: TRUE)
--// WARNING: Only disable this if you know what you're doing
__MGVE_SGCLOG = FALSE;

					 
-- == I N S T R U C T I O N S == --
-- __MGVE_LoadGVTable: 
--						If Enabled, this table will allow you to Load Global Variables from a Table.
--						- Uses: Default-Restoration, User-Sharing of Global Variable Environments, BackUp of Important Global-Space Data, Diagnostic Utilities.
--
-- __MGVE_LiveDebugMenuEnable:
--								If Enabled, this will Show a Real-Time OutputToScreenLOG Textblock with the following variables shown:
--								"__MGVE_GVAmount, __MGVE_GVWrites, __MGVE_GVReads, __MGVE_GVDeletes".
--
-- __MGVE_DumpDataTable_ExtendedLOG:
--										If Enabled, the function "MGVE_DumpDataTable" will not only Output the MGVE in the LOG, -
--										but also in a seperate file, in the AUTOGEN folder.
--
-- == I N S T R U C T I O N S == --

--+-------------------------+
--|+ Functions  + + + + + + | 
--+-------------------------+

--MGVS Replacement ( MSGV(VAL1, VAL2) = MGVS(VAL1, VAL2) )
function MGVS(GlobalName, GlobalContent)
	if (__MGVE_SGCLOG == TRUE) then LOG("[MSGV]WRITE: '"..tostring(GlobalName).."'='"..tostring(GlobalContent).."', MGVE_id = "..__MGVE_GVAmount); end;
	setglobal(GlobalName, GlobalContent);
	setglobal("__MGVE_IDAL:"..GlobalName, __MGVE_GVAmount);
	setglobal("__MGVE_IDAL:"..__MGVE_GVAmount, GlobalName);
	
	--//Diagnostics
	tinsert(__MGVE_DataTable, GlobalName..":"..tostring(GlobalContent));
	__MGVE_GVAmount = __MGVE_GVAmount + 1;
	__MGVE_GVWrites = __MGVE_GVWrites + 1;
end;

--getglobal Replacement ( MGGV(VAL1) = getglobal(VAL1) )
function MGGV(GlobalName)
	if (getglobal("__MGVE_IDAL:"..GlobalName)) then
		local GetIDAL = getglobal("__MGVE_IDAL:"..GlobalName);
		if (__MGVE_SGCLOG == TRUE) then LOG("[MGGV]READ: '"..tostring(GlobalName).."'='"..tostring(getglobal(GlobalName)).."', MGVE_id = "..GetIDAL); end;
	else --No Idal -> \
		if (__MGVE_SGCLOG == TRUE) then LOG("[MGGV]READ: '"..tostring(GlobalName).."'='"..tostring(getglobal(GlobalName)).."', MGVE_id = !!! NO IDAL LINKED !!!"); end;
	end;
	
	--//Diagnostics
	__MGVE_GVReads = __MGVE_GVReads + 1;
	
	return (getglobal(GlobalName));
end;

--ClearGlobal Replacement ( MCGV(VAL1) = ClearGlobal(VAL1) )
function MCGV(GlobalName)
	if (getglobal("__MGVE_IDAL:"..GlobalName)) then
		local GetIDAL = getglobal("__MGVE_IDAL:"..GlobalName);
		if (__MGVE_SGCLOG == TRUE) then LOG("[MGGV]DELETE: '"..tostring(GlobalName).."'='"..getglobal(GlobalName).."', MGVE_id = "..GetIDAL); end;
		
		setglobal(GlobalName, nil);
		setglobal("__MGVE_IDAL:"..GetIDAL, nil);
		setglobal("__MGVE_IDAL:"..GlobalName, nil);
		
		--//Diagnostics
		__MGVE_GVAmount = __MGVE_GVAmount - 1;
		__MGVE_GVDeletes = __MGVE_GVDeletes + 1;
	else --No Idal -> \
		if (__MGVE_SGCLOG == TRUE) then LOG("[MGGV]DELETE: '"..tostring(GlobalName).."'='"..getglobal(GlobalName).."', MGVE_id = !!! NO IDAL LINKED !!!"); end;
		
		setglobal(GlobalName, nil);
		
		--//Diagnostics
		__MGVE_GVAmount = __MGVE_GVAmount - 1;
		__MGVE_GVDeletes = __MGVE_GVDeletes + 1;
	end;
end;

--Looping function to show the MGVE Variables in Realtime
function MGVE_LiveDebugMenu()
	if (__MGVE_LiveDebugMenuEnable==TRUE) then
		ClearScreenLOG();
		OutputToScreenLOG("[MGVE] Deletes: "..__MGVE_GVDeletes,0.318712);
		OutputToScreenLOG("[MGVE] Reads: "..__MGVE_GVReads,0.318712);
		OutputToScreenLOG("[MGVE] Writes: "..__MGVE_GVWrites,0.318712);
		OutputToScreenLOG("[MGVE] Exist: "..__MGVE_GVAmount,0.318712);
		
		Timer_Seq(0.318712, MGVE_LiveDebugMenu);
	end;
end;

--Function to Dump the Data Table to a AUTOGEN file
function MGVE_DumpDataTable()
	LOG("[MGVE] BEGIN DUMP DATA");
	for Data, CurData in __MGVE_DataTable do
		LOG("[MGVE] '"..CurData.."'");
	end;
	
	if (__MGVE_DumpDataTable_ExtendedLOG)==TRUE then
		local game_path = GetUserFolder();
		local input_filename = game_path.."Autogen/_AUTO_MGVE.lua";
		SaveToFile(input_filename, __MGVE_DataTable, "MGVE_Data");
	end;
	LOG("[MGVE] END DUMP DATA")
end;

--Function to Toggle the Real-Time LOGging of MGVE
function MGVE_Toggle()
	if (__MGVE_LiveDebugMenuEnable==TRUE) then
		__MGVE_LiveDebugMenuEnable = FALSE;
	elseif (__MGVE_LiveDebugMenuEnable==FALSE) then
		__MGVE_LiveDebugMenuEnable = TRUE;
	else
		return FALSE;
	end;
	LOG("[MGVE] GV Live Debug Active: "..__MGVE_LiveDebugMenuEnable);
end;

--Function to Load A Stored GV inside a Table
function MGVE_LoadGVEnvironmentFromTable(xTable)
	LOG("[MGVE] BEGIN LOAD FROM TABLE...");
	if (xTable) then
		--Delete whole GV Environment
		if (__MGVE_LoadGVTableClearMGVEEnable~=FALSE) then
			LOG("[MGVE]: Deleting MGVE...");
			MGVE_DeleteGVEnvironment();
			LOG("[MGVE]: Deleted MGVE.");
		end;
		
		LOG("[MGVE]: Accessing Table-Loader...");
		local ProccessedItems = 0;
		SplittedStr = {};
		for Objects, CurObject in xTable do
			if (type(CurObject)~="number") then 
				SplittedStr = strsplit(CurObject[1], ":");
				MSGV(SplittedStr[1], SplittedStr[2]);
				LOG("[MGVE][TABLE-LOADER]: Asserted GV: "..SplittedStr[1].." with Value: "..SplittedStr[2].." from Stored GV Table");
				ProccessedItems = ProccessedItems + 1;
			else
				LOG("[MGVE][TABLE-LOADER]: Number Received, skipping...");
			end;
		end;
		LOG("[MGVE][TABLE-LOADER]: Job Done. Proccessed: "..ProccessedItems.." GV-Values.");
	else
		return FALSE;
	end;
	LOG("[MGVE] END LOAD FROM TABLE");
end;

--Function to Delete the complete current Monitored Quest-Label Environment
function MGVE_DeleteGVEnvironment()
	LOG("[MGVE][DELETER]: BEGIN MGVE DELETION.");
	for Objects, CurObject in __MGVE_DataTable do
		MCGV(CurObject);
		LOG("[MGVE][DELETER]: Deleting: "..CurObject);
	end;
	LOG("[MGVE][DELETER]: Job Done.");
	__MGVE_DataTable = {};
	LOG("[MGVE][DELETER]: END MGVE DELETION.");
end;

--Function to Load the MGVE.Load File.
function MGVE_LoadGVEnvironmentFromFile()
	LOG("[MGVE]: BEGIN LOAD FILE.");
	--Delete whole GV Environment
	if (__MGVE_LoadGVEnvironmentFromFileClearMGVEEnable~=FALSE) then
		LOG("[MGVE]: Deleting MGVE...");
		MGVE_DeleteGVEnvironment();
		LOG("[MGVE]: Deleted MGVE.");
	end;
	
	LOG("[MGVE][FILE-LOADER]: Loading File...");
	ExecuteScriptFile("DATA/Addons/@MGVE/MGVE.Load.lua");
	LOG("[MGVE][FILE-LOADER]: File Loaded!...");
	
	--Proccess Numerical Table
	__MGVE_ProccessedNumericalTable = {};
	SplittedStr = {};
	for Objects, CurObject in __MGVE_LoadNumericalTable do
		LOG(CurObject);
		SplittedStr = strsplit(CurObject, ":");
		--SplittedStr[2] = gsub(SplittedStr[2], "%s+", "")
		--if (SplittedStr[1]) then LOG("Split 1 is something!"); end;
		--if (SplittedStr[2]) then LOG("Split 2 is something!"); end;
		--LOG("Split 1:"..SplittedStr[1].." Split 2:"..SplittedStr[2]);
		tinsert(__MGVE_ProccessedNumericalTable, {SplittedStr[1]..":"..tostring(SplittedStr[2])});
		
		SplittedStr = {};
	end;
	--Proccess END
	
	--Reload MGVE with MGVE_DATA_TABLE
	LOG("[MGVE]: Re-Loading MGVE...");
	MGVE_LoadGVEnvironmentFromTable(__MGVE_ProccessedNumericalTable);
	LOG("[MGVE]: MGVE Reloaded.");
	
	LOG("[MGVE]: END LOAD FILE.");
end;
I think its pretty neat, but lets move to another thing I have worked on: The Addonloader, I decided to tweak it a bit more, and the Loader has now the capabilities to autorun functions that you can define in a table, take a peak
#Snippet#
HTML Code:
--WARNING: This embedded Autorun has a Higher load Priority than SW3 Expansion's GetFollowers() Init Hook, so if - 
-- - you use this Autorun, make sure it doesn't rely on SW3EXP Functions
-- "Addon Name",				"Content-Type",			{Table of Functions to be Executed}
__AddonsList = {
	--Addons
	{"MGVE",					"Addon",				{"LOG4GV_Clear"}},
	{"MQLE",					"Addon",				{"LOG4QL_Clear"}},
	{"StarRover",				"Addon"},
	{"SW3_Expansion",			"Addon"},
	{"Motherships_Mod_0.27",	"Addon"},
	{"Fleet_Mod",				"Addon"},
	{"Plugins",					"Addon"},
	
	--Core Scripts
	{"Data/Scripts/",			"Core"}
};
This change, along with other additions I plan to take, would make it easier for say: Mod Manager's and such to come up, as I plan to make one eitherway when I finish this Mod, this change will most likely make it worth the effort I put into it, even tho its minimal

RCFF: MAJOR progress done, it will be probably done in like at most like 3 - 4 weeks, I wish I had more time to work on this mod tho, it really sucks.

But be assured that Progress is made, and the Mod is still being worked on.

ALSO: I Plan to release a Experimental Build which is basically 0.6.1.9P2H1 but with MQVE and the new Addonloader in the following weeks, to see if its stable.

Note: An Official Repo of the Script Code of the Mod will go online in the near future, might depend on how tricky its going to be to set one up.


Thanks 4 Reading!
__________________
Discord: Nocalora#6847 | SW3.Expansion Thread | SWX.MouseMovementFix | SWX.TUVMark+Src (.tuv editing Tool) | SWX.SLOTMark+Src (.ini Slots editing Tool)
Reply With Quote
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:37 AM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.