Zyankali und andere Z-Items mit Effekt erstellen

Aus Nitradopedia
Wechseln zu: Navigation, Suche
Arma3Altis header.png

Miete dir jetzt deinen eigenen prepaid ArmA 3 Altis Life Server auf nitrado.net

Dateien, die bearbeitet werden

  • configuration.sqf
  • fn_varHandle.sqf
  • fn_varToStr.sqf
  • fn_virt_shops.sqf
  • fn_useItem.sqf

Dateien, die neu erstellt werden

  • fn_zyankali.sqf

1. Erstellen des neuen Items

  • 1.1

Hierzu öffnet ihr die Datei "core/config/fn_varToStr.sqf

hier gebt ihr euren life Items einen Namen

Aussehen sollte dies so:

{
//Virtual Inventory Items
case "life_inv_zyankali": {"Zyankalikapsel"};
....
};
  • 1.2

Nun öffnet ihr die core/config/fn_Handle.sqf

und fügt folgendes ein:

case 0:
	{
		switch (_var) do
		{
			case "zyankali": {"life_inv_zyankali"};
....
....
....
	case 1:
	{
		switch (_var) do
		{
			case "life_inv_zyankali": {"zyankali"};

Nun habt ihr das Item erstellt.

2. Item kauf-/verkaufbar machen

  • 2.1

Wir müssen nun festlegen, wo dieses Item zu kaufen ist.

Dazu benötigen wir die Datei: core/config/fn_virtShops.sqf

ergänzt werden muss:

"zyankali"

Wenn ihr es im normalen Markt kaufbar machen wollt, sieht dies so aus:

case "market": {["Markt",["water","redgull","tbacon","lockpick","pickaxe","fuelE","apple","peach","zyankali"]]};

Alternativ könnt ihr auch einen neuen Verkaufsstand eröffnen.

Dazu müsst ihr einfach einen neuen case hinzufügen:

case "NEUER NAME": {["ANGEZEIGTER NAME",["ITEM","ITEM","ITEM"]]};

Dann im Mapeditor natürlich noch einen NPC oder was auch immer erstellen und diesem folgende Zeile hinzufügen:

this allowDamage false; this enableSimulation false; this addAction[""ANGEZEIGTER NAME"",life_fnc_virt_menu,""NEUER NAME""];
  • 2.2

Der nächste Schritt ist es, für das neue Item auch einen Preis festzulegen.

Dafür brauchen wir die configuration.sqf

hinzufügen:

life_inv_items = 
[
	"life_inv_zyankali", <<< solltet ihr es als letztes Item einfügen muss das Komma weg!!!
];

Soll es nicht verkaufbar sein, lasst diesen Pasus einfach weg.

sell_array = 
[
	["zyankali",5000], <<< solltet ihr es als letztes Item einfügen muss das Komma weg!!!
];
buy_array = 
[
	["zyankali",30000], <<< solltet ihr es als letztes Item einfügen muss das Komma weg!!!
];

Nun habt ihr ein Item, was an jedem Markt für einen Preis von 30.000 gekauft werden kann.

Das Ganze lässt sich umwandeln für jedes Item. Ihr könnt auf die selbe Weise Schmerzmittel einbauen, neue Job-Items, etc..

Weiter geht es damit, dass wir Zyankali auch benutzen können, sprich das die User in der Lage sind es im Z-Inventar anzuwählen und zu benutzen.

== 3. Item benutzbar machen:

Öffnet hierzu die core/pmenu/fn_useItem.sqf

Hier findet ihr alle Items die anwählbar und benutzbar sind. Die Items, die nicht hier aufgeführt werden, sind dank der Zeile:

default { hint "Das kannst du nicht benutzen."; };
case (_item == "zyankali"):									   
	{															  
		if(([false,_item,1] call life_fnc_handleInv)) then		  
		{	
			hint "Du Feigling!!";
			[]spawn life_fnc_zyankali
			//sleep 3;							
			//player setdamage 100;								  						
		};												   
	};

Was dort ausgeklammert ist (//), war ein erster Versuch. Ihr könntet das ganze hier abschließen und die Klammern (//), sowie "[]spawn life_fnc_zyankali" entfernen und hättet folgenden Effekt:

Bei Einnahme des Zyankalis bekommt der Spieler eine Hinweismeldung "Du Feigling!" ...nach 3 Sekunden würde er dann tot umfallen, weil seinem "Damage-Konto" 100 Punkte, sprich Maximalschaden, hinzugefügt wurden!

Das kann man aber beispielsweise so noch verfeinern.

4. Extra Effekt für Zyankali

Nun müsst ihr im Ordner core/items/ eine Datei erstellen mit dem Namen "fn_zyankali.sqf". Der Name kann verändert werden. Dabei ist dann aber zu beachten, dass ihr bei dem obrigen Code diesen dann auch verrändert, sprich diese Zeile:

[]spawn life_fnc_zyankali zu []spawn life_fnc_NEUER-NAME

In diesem File fügt ihr folgendes ein:

//////////////////
//Author: Toto/////
//abetterworld.de//
//////////////////
[[0,format["%1 der Feigling wird nun elendlich an Zyankali verenden!",player getVariable["realname",name player]]],
"life_fnc_broadcast",true,false] spawn life_fnc_MP;// globale nachricht an alle spieler

		enableCamShake true;// kamera gewackle 
		addCamShake [10, 45, 10];	

		player setFatigue 1;// erschöpfung bei 100% ... sprich der rennt erstma nirgends hin
		player setDamage (0.1 + (damage player));//+10 schaden
		sleep 3;
		player setDamage (0.1 + (damage player));   
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));
		sleep 3;
		player setDamage (0.1 + (damage player));// das 10. mal +10 schaden ... 100% also Exitus
		sleep 3;
		resetCamShake;// weil tod muss hier auch nichts mehr wackeln
		player setFatigue 0;// damit er nicht ohne ausdauer spawned

5. Dem Server sagenm wo er die Funktion "zyankali" findet

Dafür benötigen wir die letzte File: "functions.h"

dort hinzufügen:

class Items
	{
		file = "core\items";
		class zyankali {};
....
	};