Posts by noci

The official Rising World Soundtrack is available!
You can also get the Soundtrack on Steam

    Thema AssetBundle und 3D Modelle

    Ja damit fange ich gerade an, hatte nur immer diesen Beitrag genommen, für Fragen an Red, mehr oder Weniger

    :thinking:Der Themaen Name Passt dan nicht mehr ganz


    Dafür dachte ich an die Code-Schnipsel Seite, da wollte ich alles rein machen was Funktioniert und damit die mal an einem Ort sind


    Und daraus dann Gute Beispiele machen, ich will die [Beispiel Plugin] weiter ausbauen, dass man sich an denen Orientieren kann


    Eine herausforderung war für mich auch das Bedienen des Unity-Editors:dizzy:
    Wenn ich das mit den Assets sauber hin bekomme Wollte ich mal ein Video dazu machen, um die Unsicherheit zu nehmen was Falsschen zu Klicken.

    Also für AssetBundel ist ein Beispielcode geplant(wenn's bei mir Klappt) mit einblich in den Unity-Editor8)

    Hi red51 ,

    :DIch Spiele gerade ein bisschen mit den AssetBundle herumm.

    Es scheint erstmal so als ob mann Derzeit Wissen muss was im *.bundle enthalten ist
    Ich habe zwar ein GetAllAssetNames gefunden, aber ich finde keinen Zugang dazu


    Ist es machbar so ein Bundle durchzu Scannen?



    Ein anderer gedanke wehre eine direckte Funktion für AssetBundle.loadFromFile(String obj, String Diffuse, String Normal) zu haben, dazu habe ich den Runtime OBJ Importer gefunden.
    Ist der schon enthalten und wie kann ich derzeit eine einfache OBJ und Texture Laden?

    "Vieleicht wehre hier eine Liste mit den Style-Phaden nicht schlecht, am ende für die Komponenten im UITarget."


    Das wird eine gewaltig lange Liste :D Grundsätzlich kannst du Elemente aber auch im Spiel auslesen: Dazu musst du einfach uidebugger in die Konsole eingeben - dadurch kannst du mit der Maus über ein Element fahren und siehst dann oben links den Pfad. Via Rechtsklick auf das Element kannst du den Pfad in die Zwischenablage kopieren.

    Zum Beenden, einfach das kleine X oben links neben dem Pfad drücken (wenn das nicht geht, kurz ESC drücken und dann das X auswählen).


    Manche Elemente können aber leider nicht darüber erfasst werden (zB der Ladebildschirm), dafür akzeptiert der Befehl aber noch einen weiteren Parameter: Du kannst eine UI Layer angeben, dann werden alle zugehörigen Pfade ausgegeben. Wenn du zB uidebugger loadinglayer eingibst, dann bekommst du alle Elemente des Ladebildschirms (mit Bild Auf/Ab kannst du in der Konsole scrollen) ^^

    Die universellste Lösung dafür wäre ggf. eine Funktion, um ein beliebiges UI Element bzw. den Zustand (Style, Text etc) auszulesen (dann könnte das vom Ladeelemente ausgelesen werden)^^ Dazu müssen wir uns mal Gedanken machen.

    Kein Stress, war nur so ein Gedanke
    Aber sehrwarscheinlich will man an der Stelle Maximal den Ladebalken Überarbeiten, wenn das Später dann Überschrieben werden könnte, denke ich das Reicht
    Interessant wehre da so ein Balken der ein eigenes Bild (Hintergrund und Higlight) was sich Procentual überlagert Interresant, ich weiß aber nicht wie umfangreich das für Unity ist:D

    LoadingScreen.mp4



    Ich bekomme Folgende Fehlermeldung:

    Code
    [12:43:51] Java RegisterEvent - Event not found: Events.General.UpdateEvent
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogError(Object)
    RisingWorld.PluginAPI.PluginEventHandler:OnRegisterEvent(IntPtr, JObject, JString)

    Ich mache da noch nichts besonderes

    getstatisticnew-api-vs-old-api


    Java
    @EventMethod
    public void onChatMessage(PlayerChatEvent evt) {
    processChatEvent(evt);
    }
    public void processChatEvent(PlayerChatEvent evt) {
    System.out.println(evt.getChatMessage());
    }



    new-plugin-ui





    new-plugin-game-objects




    Als "Workaround" bis dahin kannst du sonst das HUD auf Screenshots sichtbar lassen, aber über die API ausblenden. Das geht über diesen Code:

    Code
    Style s = new Style();
    s.display.set(DisplayStyle.None);
    Internals.overwriteUIStyle(player, "HudLayer/hudContainer", s);

    Nur Vorsicht: Du kannst danach den Chat nicht mehr bedienen (daher macht das Sinn, das nicht über einen Command zu machen, sondern über einen Tastendruck, wodurch "DisplayStyle" anschließend wieder auf "Flex" gesetzt werden kann).


    Im Zweifelsfall kannst du die Welt neu laden, dabei wird die UI wieder zurückgesetzt ^^




    some-gui-question



    plugin-api-wehre-schön-wenn-fehlerberichte-it-would-be-nice-if-bug-reports

    Java
    //Load an image from a plugin resource
    TextureAsset image = TextureAsset.loadFromPlugin(this, ...);
    //Create new UI element and assign the image
    UIElement panel = new UIElement();
    panel.style.backgroundImage.set(image);
    //Add element to player screen
    player.addUIElement(panel);



    chat-farben

    Code
    player.sendTextMessage("<color=red>Roter Text</color>");
    player.sendTextMessage("<color=#ff0000>Roter Text</color>");

    Supported rich-text tags

    javadoc: Class Player

    ColorNames



    getstatistic



    calculate-height-on-z-axis



    onplayersleepevent


    Java
    @EventMethod
    public void onPlayerChangeState(PlayerChangeStateEvent evt){
    Player player = evt.getPlayer();
    //If new state is "sleeping", player went to bed
    if(evt.getNewState() == Player.State.Sleeping) System.out.println("Player " + player.getName() + " is now sleeping");
    //If old state was sleeping, player is now definitely no longer sleeping
    //(otherwise there wouldn't have been a state change)
    else if(evt.getOldState() == Player.State.Sleeping) System.out.println("Player " + player.getName() + " is no longer sleeping...");
    }


    ui-override

    Java
    Style style = new Style();
    style.backgroundImage.set(TextureAsset.loadFromFile(...));
    style.backgroundImageTintColor.set(1f, 1f, 1f, 1f);
    Internals.overwriteUIStyle(player, "inventoryLayer/inventoryContainer", style);


    an-callback-example

    Java
    event.getPlayer().showMessageBox(MessageBoxButtons.Yes_No_Cancel, "Title", "Question", 0, button -> {
    switch (button) {
    case 0 -> event.getPlayer().sendTextMessage("YES!");
    case 1 -> event.getPlayer().sendTextMessage("NO!");
    case 2 -> event.getPlayer().sendTextMessage("CANCEL! (Or just timeout)");
    }
    });


    Wetter Ändern

    Java
    WeatherDefs.Weather heavyRain = Definitions.getWeather("heavyrain");
    Server.setWeather(heavyRain, true);


    playercraftitemevent

    Java
    //Example: Prevent player from crafting the repeater item or paper press object
    @EventMethod
    public void onPlayerCraftItem(PlayerCraftItemEvent evt) {
    Crafting.Recipe recipe = evt.getRecipe();
    if (recipe.name.equals("repeater") || recipe.name.equals("paperpress")) {
    evt.setCancelled(true);
    }
    }


    blueprints-and-total-elements

    ehrlich gesagt ein bisschen "Overengineered"

    :lol:Ja, sorry das kommt bei mir immer mal wieder vor:D


    wir könnten ggf. ein weiteres UITarget einführen

    Ja, ich denke auch das würde Reichen:thumbup:


    =Oda muss ich erstmal noch einiges Lesen:Dich vermisse an einiegen Stellen kleine Beispiele in der API, zum besseren verständnis der zusammenhänge, alles zu seiner Zeit:saint:

    OKe, das habe ich übersehen


    Aber irgendwie sind die jetzt etwas unterschiedlich


    Vorher hat es mir besser gefallen, das der Hud nicht mit dabei war


    Kann ich nicht im Plugin entscheiden ob es auf dem Screenshoot mit erscheinen Darf oder generell nicht?
    Könntest du da Vieleicht noch eine Option für "nur Sicht"(kein HUD) und mit "Normal"(wie vorher war) und "Alles"(so wie Jetzt ist) machen:saint:
    Geht das nicht das auf dem HUD Mehrere Ebenen sind? (Spiel-HUD, Spiel-Anzeigen,UIElement,Yell-Nachrichten)
    Gibt es da schon eine nur für UIElemente?
    Die Ebenen könnten ja dann für den Screenshoot einzeln eingestellt werden^^

    :thumbup:Super, Danke für das Update


    Andere Plugins könen jetzt geladen werden^^
    Die System.out.println & System.err.println sind jetzt in der Konsole gut zu unterscheiden:wow:

    Noch eine kleinigkeit, wegen dem UIElement und dem hoverStyle, wenn ich einen PlayerUIElementClickEvent habe und wie in ASB den Inhalt überarbeite, Funktioniert danach das Hovern nicht mehr.
    Ich hatte auch schon Versucht nach dem überarbeiten die betreffenden style & hoverStyle neu zu setzen, ohne erfolg.
    Meine Vermutung liegt darin das eventuell das mir dem ClickEvent und der Maus Position im Hoverbereich zusammen hängt. Wie wenn ich eine Taste gedrückt halte, das Spiel den Focus verliert und damit den "KeyUp" nicht mehr registriert, und ich damit Dauerfeuer "geschietet" habe ^^

    Mein zewiter Ansatz ist, weil die UIElemente über die Player Attribute gespeichert werden und da etwas nicht Richtig mit kommt.


    Ist das absicht?

    Das bei einem PlayerUIElementClickEvent mir der Event von allen Registrierten Playern auftaucht?

    Dieses Plugin verlangt bei der ersten Server Anmeldung vom Spieler, die Regeln durchzublättern und zu akzeptieren oder abzulehnen. (Steuerung über Maus)

    Werden die ASB akzeptiert, wird der Spieler in die Gruppe acceptGrouphinzugefügt.

    Andernfalls wird er in die Gruppe defaultGroup gesetzt, wenn er nicht schon in ihr ist.


    Sollte sich jemand erneut anmelden, der zuvor schon die Bedingung abgelehnt hat, wird ihm das Regelwerk ab der 2. Seite wieder angezeigt.



    Die Texte können alle gängigen Rich Text Tags enthalten



    ### INSTALATION ###

    Das Arcive Öffnen und den Ordner ASB in den OrdnerPlugins



    :!:Es müssen beide Dateien Heruntergeladen werden und im gleichen Ordner liegen um sie zu Entpacken:!:

    Bei meiner dock Steht was von public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) und ein String wird nicht Akzeptiert

    Wo anders habe ich die aussage A NoSuchMethodErrorist der Hinweis auf einen defekten Klassenpfad (mit gemischten und/oder inkompatiblen Versionen) gefunden und hoffe noch das es mit dem ClassLoader-Fix auch behoben wird:saint: