Man kann die Teller wie eine Frisbee werfen
HToneill's Mod Thread - Theorie und Praxis
-
-
psst xD
-
also, die Kochrezepte und das servieren auf dem Teller finde ich fantastisch umgesetzt.
Hatte ich vor ca einem halben Jahr auch mal begonnen.
Da war mir aber die Rezeptmechanik und die dann über 100 nötigen Möglichkeiten, wie man was kombinieren kann, zu dumm.
Ich würde mir gerne deine Arbeit mal ansehen.
Auch wie du die rezeptmechanik erweitert hast.
Denn ich suche zB schon ewig nach einer Lösung für eins meiner Modprobleme.
Ich habe nämlich kleine nicht belabelte Pillendosen ins Spiel gebracht und diese mit sämtlichen Tabletten (vanilla und teilweise aus Mods) kombinierbar gemacht.
Sodass man nicht unzählige angerissene Tabletten-Packungen aufheben muss.
Jetzt suche ich eine Möglichkeit ein kontinuierliches craftingrezept zu erstellen.
Aktuell muss ich beide items jedes mal kombinieren um 1 Tablette in die Dose zu machen.
Da die crafting Mechanik die Menge vom Inhalt nicht prüfen kann, muss ich so vorgehen.
Entweder so dass die enthaltene Menge der Packung und das verbleibende Volumen der Dose abgleicht und in einem crafting Durchgang alle Pillen der Packung oder nur soviel, wie die Dose noch Platz hat umfällt, oder aber ein kontinuierliches crafting, wo man so lange gedrückt halten muss und jeder Zyklus eine Tablette in die Dose packt.
Ich bin aber echt begeistert, was so alles von der Community kommt.
-
@cj, entweder du erstellst gleich eine modded class RecipeBase
oder wenn es nur ein einzelnes Problem ist und mit nativen Abfragen gemacht werden kann,
gehst du in dein Rezept.c ein
und fügst der klasse ein override bool CanDo hinzu,
das sieht etwa so aus:
Code
Alles anzeigen... oberer Teil vom Rezept //result1 AddResult("Flakesbowl_HT");//add results here m_ResultSetFullQuantity[0] = false;//true = set full quantity, false = do nothing m_ResultSetQuantity[0] = -1;//-1 = do nothing m_ResultSetHealth[0] = -1;//-1 = do nothing m_ResultInheritsHealth[0] = -2;// (value) == -1 means do nothing; a (value) >= 0 means this result will inherit health from ingredient number (value);(value) == -2 means this result will inherit health from all ingredients averaged(result_health = combined_health_of_ingredients / number_of_ingredients) m_ResultInheritsColor[0] = -1;// (value) == -1 means do nothing; a (value) >= 0 means this result classname will be a composite of the name provided in AddResult method and config value "color" of ingredient (value) m_ResultToInventory[0] = -1;//(value) == -2 spawn result on the ground;(value) == -1 place anywhere in the players inventory, (value) >= 0 means switch position with ingredient number(value) m_ResultUseSoftSkills[0] = false;// set 'true' to allow modification of the values by softskills on this result m_ResultReplacesIngredient[0] = -1;// value == -1 means do nothing; a value >= 0 means this result will transfer item propertiesvariables, attachments etc.. from an ingredient value } // wichtiger teil für dich override bool CanDo(ItemBase ingredients[], PlayerBase player)//final check for recipe's validity { if(( ingredients[0].GetQuantity() + ingredients[1].GetQuantity() ) > ingredients[1].GetQuantityMax()) { return false; } return true; } // wichtiger teil für dich override void Do(ItemBase ingredients[], PlayerBase player,array<ItemBase> results, float specialty_weight)//gets called upon recipe's completion { Debug.Log("Recipe Do method called","recipes"); results[0].SetQuantity( ingredients[0].GetQuantity() + ingredients[1].GetQuantity() ); } };
In den beiden Funktionen kannst du dann wie im Beispielcode mit der Menge spielen. Sobald du da tiefere Infos abreifen willst, musst du gleich die RecipeBase modden.
-
super, ich danke dir.
Ich versuche mal damit zu arbeiten.
Was das Programmieren betrifft, bin ich aber sehr schlecht.
-
Gern geschehen. Ich glaube die Zeilen können dir recht gut helfen.
Wo sind denn die Stärken, wenn ich fragen darf?
-
Texturen erstelle ich sehr gerne.
Auch im 3D-Modellbau war ich 10 Jahre lang für ein anderes Spielgenre sehr leidenschaftlich aktiv.
Und Ideen habe ich, viele Ideen...
-
Habe ein wenig mit Proxy Attachments gespielt und erst gemerkt, wie schlecht das alles implementiert ist, wenn man
nicht nur das Model des Attachments anzeigen möchte, sondern auch die Funktionsweise.
Hier habe ich einen Gasofen/Herd aus 4 Campingkochern gemacht.
Das Ding symbolisiert quasi die perfekte Kochstelle um in kurzer Zeit einen haufen Essen zu kochen, für größere Gruppen
interessanter, als für Einzelkämpfer.
Die Ofentür kann man öffnen und schießen. Auf die 4 Campingkocher kann man Töpfe stellen und einen weiteren im Ofen warm machen.
Die Campingkocher beziehen ihre Energie aus einem zentralen Tank, sobald diese in die Herdslots gesteckt werden.
Da hilft es sehr erstmal in die EnergyMananger Klasse zu schauen.
Und auch die Proxies der Proxies (Topf auf Gaskocher auf Herd) werden auch angezeigt.
Man kann bereits schon die vier Gasfelder zum an/aus schalten anschauen, leider kann ich jedoch noch nicht aus der First Person den Topf anbringen oder abnehmen, aber das scheint in erster Linie ein Problem vom Gaskocher zu sein. Energier weiterleiten funktioniert nur, wenn das Objekt, dass die Energie liefert an ist (die haben wohl nicht weiter als ein Generator-Verbraucher System gedacht) Etwas doof, wenn man die Gasfelder nutzen möchte, ohne dass der Ofen läuft...
...Es wird also nochmal hier ein Spaß zu machen, was die Devs nicht haben.
Ein weiterer Punkt ist, dass GUIInventoryAttachmentsProps nicht den Inhalt der Töpfe anzeigt, da diese "Sub-Sub-Attachments" sind.
Zwar habe ich das schon den Devs geschrieben aber da kam noch nichts zurück.
Und ein weiteres Gimmick ist, dass ich den Topf nicht an den Gaskocher machen kann, sobald da auch nur ein Slot im Topf belegt ist.
- Dann schaue ich mir das mal an.
-
Jetzt kann man die Töpfe aus der First Person nehmen und abstellen.
Das war trickreich, da "ActionAttach" das Ziel zum Parent eines Attachments weitergeleitet hat.
Somit wurde zwar angezeigt, dass man den Topf am Gaskocher anbringen kann, aber gemeint war damit laut Bohemia der Ofen.
Durch eine Ausnahmeliste in "ActionAttach" kann man Attachments in Reihe schalten und benutzen. Das geschieht aktuell von Hand,
muss ich zwingend anpassen.
Auch war das Problem im Gasbrenner von Bohemia selbst. Sie haben in ihrem 3d Modell eine Zeile Code "Verweis auf Proxy" vergessen.
Somit konnte man nie den Topf aus der First Person erreichen. Habe ich gefixt bekommen, auch wenn das nicht gehen soll :P.
Als Nebeneffekt können wir auch fixen, dass die blaue Flamme durch die Pfanne durchgeht. Auch passiert, dass man den Topf, der auf dem einzelnen Vanilla Gaskocher steht aus der First Person nehmen/ drauf stellen kann. Win-Win-Win.
Die GUIInventoryAttachmentsProps Sache gebe ich auf. Wenn das BI nicht fixt, wird es erstmal so sein, dass man die Töpfe, die auf den Herdplatten stehen, in die Hand nehmen muss, um zu sehen ob der Inhalt fertig gekocht ist.
Ich kümmere mich noch um den Kniff, dass man die Gaskocher auf der Herdplatte nur anbringen kann, wenn keine Gasflasche dran hängt.
Ansonsten scheint das Skript grundlegend zu funktionieren. Da sind ein paar schöne Tricks zusammengekommen.
Wenn alle soweit funktioniert, gibt es ein Update vom Ofenmodell mit einer richtigen Textur.
-
Ein kleines Modelupdate, mit mehr Details.
Leider ist es so, dass wenn man 4 Gaskocher mit einer Vanilla Gasflasche versorgt, selbst die große Flasche schnell leer ist und da ist der Gasofen noch nicht bedacht^^ => Große Gasflasche musste her.
Hier habe ich ein schönes Ventil erstellt, wo der 1/2 Zoll Gasschlauch auch eine Verbindung zum Ofen herstellt.
Wie gesagt, Texturen fehlen noch. Das Mesh ist aber fertig.
-
-
Ich freue mich, wenn es euch gefällt
Vielen dank^_^
Hier mal die erste Runde Texturieren, eine Runde kommt noch.
Runde zwei:
-
-
Ich danke euch vielmals^^ habe nie gedacht, dass es so viel positive Resonanz erzeugt.
Und da es euch so sehr gefällt, zeige ich euch ein neues Detail:
Ich habe mir die Mühe gemacht den Schlauch samt Ventil in zwei Variationen zu erstellen.
Ein kleines Detail, aber auf sowas kommt es an
In der Model CfG müssen folgende Zeilen da sein um eine Selection über Code zu schalten:
-
Ich habe mich nochmal drangesetzt um für die 1.09 den Ofen fertig zu stellen.
- Man kann jetzt das Inventar jedes Topfes im Tab Menu sehen und mit dem Inhalt interagieren.
- Der Topf, der im Ofen steht ist nur erreichbar, wenn die Ofentür offen ist.
- Bohemia Partikelbug gefixt (Teilfix) Der Dampf beim kochenden Topf sieht so aus wie er muss, weniger dicht als zuvor
Die Durchsichtbarkeit von Dampf habe ich nicht angepasst, weshalb man immernoch nicht durch den Dampf schauen kann.
Aber der Dampf ist weniger.
Und jetzt bin ich beim letzten Arbeitsschritt angekommen.
Wenn es kein Gas gibt, muss das Kochen aufhören. Aktuell blubbert alles noch weiter.
Absolut machbar und demnächst fertig.
Edit:
Ich habe unglaublich Lust noch eigene Sounds zu machen für:
- die Ofentür
- dem anbringen den Töpfe/ Campingkocher/ Gasflasche
- Öffnen/ Schließen des Gasventils
Erst die besonderen akustisten Eigenschaften machen das Objekt zum Unikat.
-
Edit:
Ich habe unglaublich Lust noch eigene Sounds zu machen für:
- die Ofentür
Erst die besonderen akustisten Eigenschaften machen das Objekt zum Unikat.
-
Genau so
Die Sounds sind jetzt fertig und eingebaut, ich habe sogar Variationen für jeden Sound! Habe ich noch nie gesehen, aber falls es euch interessiert:
Codeclass DeinSoundName_Soundshader : HT_Main1_SoundShader { samples[] = {{"DeineMod\sound\Variation1",1},{"DeineMod\sound\Variation2",1}}; };
So macht man die Aufzählung aller Variationen im Soundshader...
Es wird durch Zufall entschieden welcher definierte Sound gespielt wird, sobald man den Sound abspielt.
brauche nur noch zwei Soundeffekte für den Gaskocher (dranmachen/abmachen). Ich habe im Haushalt nichts vergleichbares. Evtl fahre ich mal an die Tanke und lasse meine Reifen befüllen und nehme das mal auf.
Ach ja - Überraschung!
Die 1.09 bringt neue Bugs! - Ich kann meine Herdplatten nicht mehr durch anschauen anmachen. Die haben wohl erfolgreich an Actions von Attachments gearbeitet und ein paar Möglichkeiten wegoptimiert. DayZ, der Horror wenn man etwas besonderes machen will
Edit: Die Bugs sind tatsächlich mit 1.09 reingekommen, sind jetzt gefixt.
Ich habe mir ebenfalls gedanken über die Wärme gemacht. Eine Gasofen/Herd Kombo hat etwa 8-12kW Wärmeleistung.
Das ist genug um einen Gasofen als Wärmequelle zu nutzen. Das habe ich ebenfalls implementiert. Je nachdem ob der Ofen offen ist oder zu, wie viele Herdplatten angeschaltet sind wird die Wärme entsprechend berechnet. Es ist nicht übertrieben, aber kann einen warm halten und trocknen. Auch Kleider die in der Nähe abgelegt werden, werden getrocknet.
Das sollte euch gefallen
-
Ein kleines Preview für euch.
-
Geil, kann der Gastank hochgehen?
Ich frage für einen Freund.
-
+++ Breaking News: Tödliche Unfälle im Haushalt steigen exponentiell in Chernarus! +++