Jump to content

[WIP] ZFM-FairMission System-Dynamic,Modular & Balanced (Alpha release 90% complete, Test builds frequently available) - Actively developed


Recommended Posts

I would like to take the Translator role :D

 

English-German unfortunatly nothing else :S

 

Maybe I could also be a dedicated tester on my server soon, but Iam not sure ;)

Sold!

 

I would also like to welcome Darihon as a Junior Developer for ZFM. He will be performing various additions to ZFM to save time and will hopefully gain super-knowledge and become a co-developer someday :lol:

Link to comment
Share on other sites

hmmmm

I could apply as developer/coding monkey for sqf~  though I never have coded anything new in ArmA (I don't mean editing, as every monkey with brain can take something already available and edit/adjust it!), I can code in C, C++ and ASM~ so I guess, the SQF scripts aren't that hard to learn in syntax or language-specific stuff~

 

I could also translate to German and Russian.

 

btw, as I'm here, I had an idea and it should fit to your dynamic missions..

It could/should/is possible to adjust the AI-entity- and loot-amount depending on the monthly average of players.

I mean it like you have a fixed amount of KI ..and then added for every 10 players one more to the mission. That way the missions wouldn't get too easy on a populated server with advanced players.

The avg players variable could be read out from database or set via config file by the admin (for the case that the database isn't directly accessible like in the linux epoch version)

 

ps: our server is more a testserver where we try to balance the loot, missions, AI ..as the epoch 1.0.4.2 version with EMS and WAI mods ..isn't really balanced, you are getting everything very fast^^   I like the old DayZ Vanilla feeling more =)

 

 

regards

cracky

Link to comment
Share on other sites

Some great ideas, certainly.

 

 

I could also translate to German and Russian.

 

Russian translations excite me. We already have a German translator, but Russian is welcome! :D

 

 

It could/should/is possible to adjust the AI-entity- and loot-amount depending on the monthly average of players.

This is a brilliant idea, however, this would require persistence between server restarts, which would effectively require SQL. So, to be honest, post-release or ZFM Pro. :) I would prefer to have more accurate results to go off, and this goes in line with the direction I'm moving in currently. If you check the most recent test build, you will see that in the mission stack, there is an array which stores who killed what using what weapon, and when. For ZFM pro I aim to make this information available to a web interface, and via database, and provide a mission summary like you may have seen when Halo 3 did their web-tracking stuff.

 

I like the idea of balanced loot; I think just dumping lots of powerful weapons makes the game a bit of a shootout rather than a survival simulator, so I would always like to A) Limit the amount of loot while keeping the game minimal and 2) Keep the missions fun and varied, for both ARMA 2 and ARMA 3. :)

 

The more the merrier on the code -- read what is already in the repo, get familiar with it, hack on it, then you too can become a SQF bear. Huggable and code-able. ^_^

Link to comment
Share on other sites

Okay, so, two pieces I need to request from the kindly community, and the first one is in terms of the loot mechanism. So, previously, as you were aware, the "Probability" loot system left something to desire. Particularly as there was a probability you would get nothing. It worked as it was supposed to, but erm, not much fun in getting to loot and finding a compass!

 

If you like helping ZFM and have good ideas, now is the time to contribute them by reading below and responding!

 

Moving-picture-Germany-flag-waving-in-wiDeutsch Übersetzung erforderlich! (Zu diesem information :D )

 

Loot system changes

I am changing the loot system so that first of all, loot can be (although it will be disabled as default), placed inside a car or helicopter if you wish, it will be placed into loot crates, which are technically vehicles. The "Loot tables" as they were, will most likely change to a more simplified structure.  The changes I propose (which can change based on what you want!) are:

 

Alpha release - In the alpha, I want to include the simplified loot structure so that there will be guaranteed loot sets.

  • So for instance, building gear, snipers, machine guns, pistols and so on. ZFM will take a minimum amount of items to appear and either, give you just those things, or give you a mixture of all of them.
  • So if you want just building materials, it will fill up however many containers the mission is told to create with building materials, or snipers, or whatever. 
  • There will also be a list of rare items, which will have probabilities attached, so for instance, only 10% of the time, these weapons or items will appear, or maybe less, whichever you feel is best. This means things like powerful weapons on Overpoch and Epoch can be limited to effectively 1/10 the population of the server, making them scarcer, more valuable, and less abundant.
  • So, in alpha - loot will be guaranteed, with rare items thrown in in rare occasions.

Questions for you to answer

  • For overpoch & epoch which items should spawn as loot in these crates as default, how many? Should it have ammo in the same crate? An ammo crate?
  • What should be considered rare? How often should they spawn? For example "I think DMR should only be available 1% of the time, X weapon 10%, and so on, because.."
  • When a bandit dies, what items should appear in his backpack? How many?
  • What would be the maximum amount of items you would have in a loot crate?

Base generation

Here's another question I need to ask. In the current system, a plane will crash, and in some instances, some very sexy and fun instances, they hit buildings, and you have ZFM units shooting at you from a burning wreck. This is great, but, generating bases on top of houses that have exploded is hard. At present, the code I have written for generating a base assumes that the area is just trees or open field, and if it is, it will build on it. If it's a road, it'll simply not build on it, and if there's houses nearby then it won't do that.

 

Now, my questions for you to help decide on:

  • If a tree falls, does it make a sound? :P
  • If the crash occurs in trees, should I clear the area of trees for the size of the base, then place the base there? Should the bandits just sometimes knock a lot of trees down and hide behind those? (That makes missions hard for me, at least! :P )
  • If the crash occurs in a city, should the bandits just hide in the city, or should they build a base outside it?
Link to comment
Share on other sites

Moving-picture-Germany-flag-waving-in-wiDeutsch Übersetzung 

 

Loot-System Änderungen

Das Lootsystem wird so angepasst, das es (auch wenn Standardmäßig deaktiviert ist) in Fahrzeugen, wie Autos oder auch Helikoptern spawnen kann, wenn ihr das so möchtet. Sonst wird es in Lootboxen gespawnt (die ja technisch Fahrzeuge sind). Die Loottables (Loottabellen) erhalten eine vereinfachte Struktur bzw. Aufbau. Die Änderungen die ich plane (die nach euren Belieben geändert werden können) sind:

 

Alpha Release:

Für die Alpha will ich die vereinfachten Loottables hinzufügen, so dass es garantierte Lootkombinationen gibt.

Die Lootkombinationen werden etwa so aussehen: Baumaterial, Scharfschützengewehre, Schwere Maschinengewehre, Pistolen usw. ZFM wird dann ein ein Minimum an Items auswählen, alle gelisteten Sachen spawnen oder eine Kombination aus den gelisteten Sachen spawnen.

Falls ihr also nur Baumaterial wollt, wird es so viele Items an Baumaterial spawnen, wie es für die Mission festgelegt ist, gleiches gilt für Scharfschützengewehre usw.

Ebenfalls wird es eine Liste von seltenen Items geben, die mit einer bestimmten Wahrscheinlichkeit spawnen, ob nun 10%, oder weniger (oder mehr) ist euch überlassen. So können z.B. sehr starke Waffen aus Overpoch und Epoch balanciert in das Spielgeschehen eingebracht und so selten, tödlich und wertvoll gehalten werden.

In der Alpha wird der Loot also garantiert sein und genannte seltene Items/Waffen enthalten.

 

Fragen die Ihr beantworten sollt:

- Welche Waffen bzw. welcher Loot soll für Overpoch und Epoch in den Kisten spawnen und wie viel davon? Soll die Munition in der selben Kiste, oder in einer extra Kiste spawnen?

- Was sollte als selten eingestuft werden? Wie oft sollte es spawnen? Bsp.: "Die DMR sollte eine Spawnchance von 1% erhalten, Waffe X 10%, usw., weil...."

- Wenn ein Bandit stirbt, welche Items sollten in seinen Rucksack erscheinen und wie viele davon?

- Was sollte die maximale Anzahl an Items sein, die in einer Kiste spawnen

 

Basenerstellung

Hier gibt es noch eine Frage, die ich euch stellen muss. Im jetzigen System wird ein Flugzeug abstürzen und in einigen sehr guten Fällen, stürzen sie in Gebäude und die ZFM Einheiten schießen aus euch aus einem brennenden Wrack!

Das ist toll, aber Basen auf explodierten Häusern zu erstellen, ist schwer. Momentan ist es so, das Basen nur errichtet werden, wenn sich die Mission auf offenem Feld befindet. Falls sie auf einer Straße oder in der Nähe von Häusern liegt, entstehen also keine Basen.

 

Nun zu ein paar Fragen für euch, die helfen mich zu entscheiden:

Wenn ein Baum umfällt, sollte das ein Geräusch machen?

Wenn sich der Absturzort in einem Wald befindet, soll ich den Wald im Bereich der Basis fällen? Oder sollen die Banditen nur manchmal viele Bäume fällen und sich dann dahinter verstecken (Das macht die Mission sehr schwer, für mich zumindest)?

Wenn sich der Absturzort in einer Stadt befindet, sollen sich die Banditen in der Stadt verschanzen oder eher eine eine Base außerhalb der Stadt errichten?

Link to comment
Share on other sites

- Welche Waffen bzw. welcher Loot soll für Overpoch und Epoch in den Kisten spawnen und wie viel davon? Soll die Munition in der selben Kiste, oder in einer extra Kiste spawnen?

- in anderen kisten bitte... waffen und munition werden nie zusammen gelagert.

 

- Wenn ein Bandit stirbt, welche Items sollten in seinen Rucksack erscheinen und wie viele davon?

- essen und trinken, munition, toolbet items...

 

- Was sollte die maximale Anzahl an Items sein, die in einer Kiste spawnen

- waffen 1-2, baumateialien 10-15, minition 5-10, toolbet items jeweils 1...

 

Wenn ein Baum umfällt, sollte das ein Geräusch machen?

- ja auf jeden fall :)...

 

- Wenn sich der Absturzort in einem Wald befindet, soll ich den Wald im Bereich der Basis fällen? Oder sollen die Banditen nur manchmal viele Bäume fällen und sich dann dahinter verstecken (Das macht die Mission sehr schwer, für mich zumindest)?

- fällen und basen bau...

 

- Wenn sich der Absturzort in einer Stadt befindet, sollen sich die Banditen in der Stadt verschanzen oder eher eine eine Base außerhalb der Stadt errichten?

- in einer stad verschanzen, hört sich gut an...

 

Das ist meine vorstellung

 

mfg

Link to comment
Share on other sites

@ViperGer

 

Ger:

Der Herr ZamboniBambino  scriptet das Plugin/Script wir übersetzen es nur damit auch Deutsche User es verstehen. Also müsstest du ihn es auf Englisch schreiben.^^

 

Eng:

 

The guy ZamboniBambino is the owner of the Script he dont understand german. We German people help him (German Translate). So him write it in English.^^

Link to comment
Share on other sites

@ViperGer

 

Ger:

Der Herr ZamboniBambino  scriptet das Plugin/Script wir übersetzen es nur damit auch Deutsche User es verstehen. Also müsstest du ihn es auf Englisch schreiben.^^

 

Eng:

 

The guy ZamboniBambino is the owner of the Script he dont understand german. We German people help him (German Translate). So him write it in English.^^

 

Please write in your native language. I want to learn German, so it gives me the opportunity to do so :) It allows me to be a rare Englishman that speaks German, rather than rely on well-educated Germans to cater to the deficiencies of my countrymen. Ich Bin Ein European-er? :D

 

Or...

 

Sie verkaufen und ich kaufe, sprechen wir deutsch. Aber Sie kaufen und ich verkaufe, dann sprechen wir Ihre Sprache. :wub:

 

Wer fremde Sprachen nicht kennt, weiß nichts von seiner eigenen. ^_^
Link to comment
Share on other sites

Language support has been added. It's been expanded so it's a basic version of gettext, so that strings inside ZFM are denoted by global variables with various prefixes which are then read by ZFM. Because other people can benefit from these lovely functions in their own projects, after alpha, I will be moving them into a library called Zambino Common Runtime (ZCR) components, which will be a third-party library for various useful programming functions, like the BIS functions, but documented and for different purposes.

 

Not yet tested, and not on my development machine, but if you want to use it, here's the basic ZFM/Gettext shtuff:

/*
*	FairServer - ZFM - Zambino FairServer 
* 	The beast of all beasts. 
* 	Copyright (C) 2014 Jordan Ashley Craw
*
* 	This program is free software; you can redistribute it and/or
* 	modify it under the terms of the GNU General Public License
* 	as published by the Free Software Foundation; either version 2
* 	of the License, or (at your option) any later version.
*
* 	This program is distributed in the hope that it will be useful,
* 	but WITHOUT ANY WARRANTY; without even the implied warranty of
* 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*	GNU General Public License for more details.

*/



/*
*	ZFM_DEFAULT_LANGUAGE
*
*	TODO: Move to config file
*	Sets the language for in-game information. 
*/

ZFM_DEFAULT_LANGUAGE = "ENG";

/*
*	ZFM_SUPPORTED_LANGUAGES
*
*	Lists the supported languages for ZFM. This is based on ISO-639-2.
*	Info: http://www.loc.gov/standards/iso639-2/php/English_list.php
*/
ZFM_SUPPORTED_LANGUAGES = [
	"ENG", // English
	"DEU", // German
	"NLD", // Dutch
	"RUS" // Russian
];

/*
*	ZFM_BASE_FOLDER
*
*	Lists where ZFM is installed. By default, is "ZFM" inside addons folder for @Dayz_Server mod.
*/
ZFM_BASE_FOLDER = "\z\addons\dayz_server\ZFM";

/*
*	ZFM_LANGUAGES_FOLDER
*
*	Gets the name of the folder, from which, languages are loaded.
*/
ZFM_LANGUAGES_FOLDER = "Languages";

/*
*	ZFM_LANGUAGES_FILE_PREFIX
*
*	Gets the name of the folder, from which, languages are loaded. Includes wildcard for format[] call.
*/
ZFM_LANGUAGES_FILE_PREFIX = "ZFM_Languages_Strings_";


/*
*	ZFM_LANGUAGES_LANGSTRING_PREFIX
*
*	Used for 
*/
ZFM_LANGUAGES_LANGSTRING_PREFIX = "ZFM_Language_";

/*
*	ZFM_Language_Check_Settings
*
*	Runs on startup to check if the settings for language are set correctly. If not, they're set to English.
*/
ZFM_Language_Check_Settings ={
	if(!(ZFM_DEFAULT_LANGUAGE in ZFM_SUPPORTED_LANGUAGES)) then
	{
		ZFM_DEFAULT_LANGUAGE = "ENG";
	};

};

/*
*	ZFM_Language_Is_Supported_Language
*
*	Returns TRUE or FALSE if a language is supported.
*/
ZFM_Language_Is_Supported_Language={
	private ["_retVal"];
	
	_retVal = false;
	
	if(typeName _this == "ARRAY" && count _this >0) then
	{
		_retVal = (_this select 0) in ZFM_SUPPORTED_LANGUAGES;
	};
	
	_retVal
	
};


/*
*	ZFM_Languages_Include_Generate
*
*	Sub-function used to generate the filename of the language file for the language.
*	Outputs: /z/dayz_server/addons/ZFM/Languages/ZFM_Languages_Strings_<LangName>.sqf (by default)
*/
ZFM_Language_Include_Generate = {
	format["%1/%2/%3%4.sqf",ZFM_BASE_FOLDER,ZFM_LANGUAGES_FOLDER,ZFM_LANGUAGES_FILE_PREFIX,(_this select 0)]
};


/*
*	ZFM_Language_Include
*
*	Used to Include the relevant files for the language set.
*	NOTE: Without a lot of effort, it's difficult to ensure that files selected
*/
ZFM_Language_Include ={
	private["_includePath"];

	// Check and set the languages to whatever is enabled
	[] call ZFM_Language_Check_Settings;
	
	// Generates the path of the current language files.
	_includePath = [ZFM_DEFAULT_LANGUAGE] call ZFM_Language_Include_Generate;

	// Includes the file as required.
	call compile preprocessFile _includePath;
};

/*
*	T
*
*	Shorthand function which is used to translate a given string. This function gets the current
*	language, gets the functionName and subDescription and compiles a string which refers to a 
*	global variable, which contains a version of the string given. By default, the "_input" variable
*	will be returned, as English doesn't need translating.
*
*	If the variable isn't a string, it will return the English default. If it is, it'll return it. 
*	The idea for the subDescription is to allow multiple lines for translation per each 
*	This is a poor man's GETTEXT given the lack of line numbers available in SQF.
*/
T ={
	private["_functionName","_subDescription","_input","_trans"];
	
	_functionName = _this select 0;
	_subDescription = _this select 1;
	_input = _this select 2;
	
	// Always exit with input if it's English. That's the default.
	if(ZFM_DEFAULT_LANGUAGE == "ENG") exitWith { _input };
	
	if(typeName _functionName == "STRING" && typeName _subDescription == "STRING" && typeName _input == "STRING") then
	{
		// ZFM_Language_ + LangName + FunctionName + SubDescription
		// ZFM_Language_ENG_MyFunctionName_MyFunctionContext
		_trans = compile format["%1_%2_%3_%4",ZFM_LANGUAGES_LANGSTRING_PREFIX,ZFM_DEFAULT_LANGUAGE,_functionName,_subDescription];
		
		if(typeName _trans != "STRING") then
		{
			_trans = _input;
		};
	};
	
	_trans
};






Link to comment
Share on other sites

Bandit base layout generation is about 50% complete in code. This will mean that bandits will spawn with a layout based upon pre-set layouts. These layouts are set simply by 1 function.

// Array of items with directions, to outline what to spawn, in what direction, and with what parameters. Parameters are used in the case of units, vehicles which move, or lootcrates. Boom.
ZFM_Layouts_Array = [
	[0,0,0,0,0],
	[0,0,0,0,0],
	[0,0,["C130J",0,[]],0,0],
	[0,0,0,0,0],
	[0,0,0,0,0]
];

// I like things in 1 line. Nice and easy. [1,1] is the center, from which, the position of other objects will be adjusted. 
// The [3,3] refers to our classic C130J, which is at [8000,6000,0].
[ZFM_Layouts_Array,[3,3],[8000,6000,0],1] call ZFM_Layout_Create;

/*

ZFM_Layouts_Array = [
    [["Land_fort_bagfence_long",90,[]],["Land_fort_bagfence_long",90,[]],["Land_fort_bagfence_long",90,[]],["Land_fort_bagfence_long",90,[]],["Land_fort_bagfence_long",90,[]]],
    [0,0,0,0,0],
    [0,0,["C130J",0,[]],0,0],
    [0,0,0,0,0],
    [0,0,0,0,0]
];

Example above generates a wall of bag fences above the C130J. You get the picture. This array can be stretched to any size.
ZFM_Layouts_Array = [
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,["C130J",45,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
];

Oh the fun you can have making your own bases. 

*/



// This outputs an area of whatever size specified (in this case, +1 to the Location X + Y for each 0 in the array, so 5 x 5. The objects are always X distance away from eachother.

Will appear in dev tomorrow.

Link to comment
Share on other sites

/*
*	ZFM Basic variables
*
*	Used for basic system information
*/
ZFM_Language_RUS_Localised_Name 				= 		"Zambino Социалистическая сервер"; // Hahaha
ZFM_Language_RUS_Version_Stage 					= 		"Альфа-релиз"; // Alpha release
ZFM_Language_RUS_Error 							= 		"ошибка"; // Error
ZFM_Language_RUS_Information 					= 		"Информация"; // Information


/*
*	Loot information
*/
ZFM_Langauge_RUS_LootCrate_Spawned 				= 		"Выпадает вещей породил (расположение %1, одержание %2)"; // Loot crate spawned (Location %1, contents %2)
ZFM_Langauge_RUS_LootCrate_Filling 				= 		"Добавление элементов грабить ящик (расположение %1, одержание %2)"; // Loot crate spawned (Location %1, contents %2)
ZFM_Langauge_RUS_LootCrate_Filling_Item 		= 		"Добавлен пункт %1 грабить ящик (расположение %2)"; // Filling loot crate with item %1 (Location %2)
ZFM_Langauge_RUS_LootCrate_Filling_Item_Rare 	= 		"Редкий предмет %1 добавил грабить ящик (%2 вероятностей ублюдок)"; // Added rare item %1 into loot box (Probability %2)

Something to make crckdns laugh.

Link to comment
Share on other sites

You're always welcome, freakystyle! I love Germans :D I thought you guys have gotten some bad treatment in DayZ -- when I have played with Germans in other servers, people have said stupid things like "SPEAK ENGLISHZ PLZ" and all manor of dumb things, so I want to redress that balance by giving everyone their opportunity to make a language for ZFM. Your language is just as important as mine! :) Go Euro-friends ^_^

 

Developing right now, and listening to this album. Would highly recommend it:

 

HeavyFeet.jpg

https://www.youtube.com/watch?v=h2zWfxW60z0&feature=kp

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×
×
  • Create New...