sniperrifle shit
Beiträge von Backer133
-
-
Meinte ich sorry
-
Craft System von PapaBear? oder einfach nur Processen?
-
Hallo Leute,
heute möchte ich euch den ersten Teil der Dialog Basics ein bisschen näher bringen. Das Dialog Tutorial wird sich über mehrere Reihen ziehen.
Also fangen wir mal an.Also was ist den nun ein Dialog, was braucht man und was gibt es alle?
Für einen Dialog benötigt man zuerst mal eine config datei indem die Klassen der Dialoge angeführt werden (Wie ist der Stil dieser Box, Hintergrund, was macht was). Kann man sich so vorstellen wie eine VehicleCfg.
Hierfür wird in Altis Life die sogenannte config.cpp (eher für Mods) oder die description.ext (eher für Missionen) genutzt. Der Grund liegt hierbei weil die description.ext eine überbrückte Version der config.cpp ist d.h. man kann weniger definieren. (wie z.B keine CfgVehicle klassen).Deswegen werden wir uns eher auf die description.ext fokussieren.
Es gibt 2 Wege wie man eine GUI anzeigen lassen kann.
Nummero 1 :
cutRsC/titleRsc --> Hierbei wird das Bild sozusagen als Display angezeigt - Bedeutet keine Kontrolle über den Maus Cursor kennt ihr sicher vom "Black OUT", "BLACK FADED", "WHITE OUT","PLAIN", etc.
Nummero 2:
createDialog --> Hierbei wird das Bild als Dialog angezeigt - Bedeutet Kontrolle über Maus Cursor (Normaler Dialog wie z.B das Z Inventar etc.)
In der description.ext wird ein Dialog wie hier zum Beispiel eine Bild in der Mitte des Bildschirmes wie folgt erstellt:
Zuerst benötigt muss man den Titel anführen wie z.B.Hierbei ist wichtig das der Namen nicht mit einem anderen "Titel" übereinstimmen darf!
Zunächst kommt die idd (Display ID) Jeder Dialog muss eine idd besitzen um bei Bedarf auf diesen zu referieren. Dies kann eine beliebte Zahl sein oder einfach -1 wenn man nicht mehr auf diesen referieren will.
Jetzt die duration (Dauer) = Selbsterklärend - wie lange soll dieser Dialog am Bildschirm angezeigt werden. Beachtet die totale duration zeit inkludiert fade in und fade out.
Jetzt fehlt uns nur noch der Control:
Dies ist eine Spezielle Klasse und beinhaltet alle Anzeige Elemente wie z.B Hintergrund, Schriftart, Ausrichtung, etc.
Hier eine kleine Erklärung des Control:
Code
Alles anzeigenclass ExampleControl { idc = -1; type = 0; style = 0; x = 0.125; y = 0.125; h = 0.75; w = 0.75; font = "EtelkaNarrowMediumPro"; sizeEx = 0.05; colorBackground[] = {1,1,1,0}; colorText[] = {1,1,1,1}; text = "textures\example.paa"; lineSpacing = 1; };
idc = Control ID - jede Klasse braucht Ihre eigene ID das bei Bedarf auf sie Bezug genommen werden kann. Man kann -1 verwenden wenn man keinen direkten Bezug auf die Klasse benötigt.
type = Typ von der Klasse wie z.B. Text Box, Button, listbox etc. Jeder type hat seine eigene Nummer welche Ihn identifiziert. Es kann Dezimal oder Hexadezimal sein. In diesem Falle ist 0 eine einlinige Text Box.
style= Anzeige Stil wie z.B Rahmen, Ausrichtung etc. ebenfalls mit dezimal sowie hexadezimal. Die Nummer 0 ist Standart also linksbündiger Text. (Mehr dazu in einen darauf folgenden Tutorial)
x = Kontrolliert X Achse
y= same
h= die Höhe der Klasse
w= die weite der Klasse
font= Schriftart (alle möglichen Schriftarten Direkt hier)
sizeEX= Schriftgröße
ColorBackround = Hintergrundfarbe {r,g,b,a}
colorText = Schriftfarbe {r,g,b,a}
text = Text oder pfad für TexturDas ganze zusammen sieht dann wie folgt aus:
Code
Alles anzeigenclass RscTitles { class Logo { idd = -1; duration = 6; class controls { class ExampleControl { idc = -1; type = 0; style = 2192; x = 0.125; y = 0.125; h = 0.75; w = 0.75; font = "EtelkaNarrowMediumPro"; sizeEx = 0.05; colorBackground[] = {1,1,1,0}; colorText[] = {1,1,1,1}; text = "textures\logo.paa"; lineSpacing = 1; }; }; }; };
Hoffe man versteht es so halbwegs.
Werde wenn Zeit natürlich weitere Tutorials bezüglich Dialoge machen. Außer jemand ist so gut und nimmer mir die Arbeit ab
LG
-
-
Ahh habs schon
du hast schonwieder
"" gemacht
"life_fnc_kistegl"
sollte aber
["Bauplan nehmen", life_fnc_kistegl];
so aussehen
-
-
Hab's gerade bei mir probiert funktionierte einwandfrei
PS: this allowDamage false;
darfst du nicht machen da die kiste ja im script zerstört wird und erst was passiert wenn die Kiste sozusagen nicht mehr Lebtpassiert gar nichts? oder was passiert den?
-
Ok, wenn ich Zeit habe werde ich mal Schritt für Schritt alles Erklären mit Basics für Dialoge
-
Falls ich Zeit habe eventuell ^^.
Was genau wird den gewünscht? GUI Editor oder direkt schreiben?Oder einfach ne Erklärung wie z.B: was macht was?
-
Das ist auch kein Dialog Tutorial
sondern nur eine Erklärung der Positionen.
-
hast du den die datei so genannt
fn_kistenscript.sqf
?und nein darfst du nicht
-
Und zwar:
Code: fn_kistenscript.sqf
Alles anzeigenprivate["_obj","_pos","_crate"]; _crate = _this select 0; clearMagazineCargo _crate; clearWeaponCargo _crate; clearItemCargoGlobal _crate; _crate setDamage 1; sleep 1; if(!(alive _crate)) then { _pos = _crate modelToWorld[0,3,0]; _pos = [_pos select 0, _pos select 1, 0]; _obj = "Land_Suitcase_F" createVehicle _pos; _obj setVariable["item",["water",1],true]; _obj setPos _pos; [[_obj],"life_fnc_simDisable",nil,true] call life_fnc_MP; hint "Oh das scheint wohl eine magische Kiste zu sein, was liegt den da schönes am Boden?"; }; sleep 1; deleteVehicle _crate;
undDürfte funken!
Statt water einfach dein virt item.
Viel Spaß mit deiner magischen Box
-
nönö, habs schon
#brainafk
-
Rpt?
Ich schaus mir mal an bin jetzt eh Zuhause
-
Hallo zusammen, Heute möchte ich euch mal eine kleine Erklärung bezüglich Dialoge abgeben.
Ich hoffe man versteht es einigermaßen und es hilft ein paar Leute weiter bezüglich Dialog positionierung etc.Die Positionen sowie die weite und höhe kalkulieren sich auf die sogenannte Controll Positioning Box (Bild unten) Diese ist bei jeden Bildschirm gleich ! Das heißt es ist imemr 4:3 und ist immer auf genau 0 positioniert (Mitte des Bildschirms). Weiters ist Sie immer 1x1 weit und hoch!
das Bedeutet wenn du nur schreibst z.B : x= 1.0; y=1.0; w= 1.0; h=0.7; bezieht sich das immer auf das Zentrum des Bildschirmes. ( Beachte dass der blaue Rahmen jedoch ein Quadrat ist das heißt das die Höhe immer etwas niedrieger ist wie die länge). In Relation zur weite = 1 ist höhe = 0.7. Das bedeutet das hier die Höhe sowie breite genau gleich lang bzw groß ist (da die blaue Box ja ein Rechteck ist und kein Quadrat)
Um den Dialog die größe von H zu geben kannst du es so machen und sparrst dir dadurch das umrechnen von 1 auf 0.7 und es ergibt ein Quadrat!:
h = 0.7;
w = 0.7 * 3 / 4;Wenn du den Dialog der größe von w geben willst so:
h = 0.7 * 4 / 3;
w = 0.7;
Wenn du allerdings den gesamten Bildschirm nutzen willst (und nicht nur das Zentrum also die blaue Box) geht das wiefolgt:
safeZoneW und safeZoneH.
Bespiel =
h = safeZoneH;
w = safeZoneW;Bedeutet der ganze Bildschirm. Natürlich kannst du auch hier ein bisschen rumspieln z.B
safeZoneX: -0.235402
safeZoneY: -0.0882083
safeZoneW: 1.4708
safeZoneH: 1.17642(dieses Beispiel wäre für einen Bildschirm)
Das zum Beispiel würde dir vom Ganzen Bildschirm unten rechts eine Box anzeigen.
(wenn du Background Colour etc definiert hast)Also wenn die weite des blauen Rahmens gleich w=1.0; ist ist die weite des kompletten Bildschrirm gleich
w= safeZoneW;Dann gibts noch den Befehl für Multi Bildschirme (Wenn du mehrere hättest, würd ich dir aber nicht empfehlen)
h = safeZoneH;
w = safeZoneWAbs; <---Somit erstreckt sich der Dialog über die gesamte länge.
Hoffe ich konnte es dir ein bisschen erklären (weiß nicht wie ichs besser Beschreiben soll). Wenns jedoch noch Fragen gibt, fragt einfach hier helfe euch gerne weiter.
An die Moderatoren. Man kann leider immer noch keine Dateianhänge raufladen wenn man ein neues Thema erstellt
-
-
Hey, Probiers mal wie folgt:
in die Init der Kiste:
dann ne datei erstellen:
SQL: kistenscript.sqf
Alles anzeigenprivate["_obj","_pos","_crate","_player"]; _crate = _this select 0; clearMagazineCargo _crate; clearWeaponCargo _crate; clearItemCargoGlobal _crate; _crate setDamage 1; sleep 1; if(!(alive _crate)) then { _pos = getposASL _crate; _obj = "Land_Suitcase_F" createVehicle _pos; _obj setVariable["item",["deinitemname",1],true]; _obj setPos _pos; [[_obj],"life_fnc_simDisable",nil,true] call life_fnc_MP; hint "Oh das scheint wohl eine magische Kiste zu sein, was liegt den da schönes am Boden?"; }; sleep 1; deleteVehicle _crate;
Wurde nicht getestet, theoretisch dürfte es aber funken, bin noch in der arbeit habs nur so schnell nebenbei geschrieben. Hier dürfte am Standort der Kiste ein Suitcase spawnen in dem dann dein Item ist. Dannach wird die kiste zerstört und gelöscht.
Hoffe es funk ansonsten setz ich mich dann nochmal hin.
PS: Gibt sicher nen besseren weg, das ist jedoch der erste was mir auf die schnelle eingefallen ist.
LG