Posts by red51

A small new update is available now!

    Genau, momentan kann die API noch keine Verbindung zu einer beliebigen Datenbank erstellen (sie bietet lediglich Zugriff auf die Weltdatenbank), aber trotzdem kann man unabhängig von der API mit Java eine eigene Verbindung aufbauen. Das benötigt allerdings die passenden JDBC Treiber. Man kann dazu aus dem Serververzeichnis die sqlite-jdbc-3.7.2.jar für SQLite Verbindungen und die mariadb-java-client-1.1.8.jar für MySQL Verbindungen in sein Plugin-Projekt laden (müssen später nicht mit ausgeliefert werden, da der Server diese ja bereits hat), diese ermöglichen alle Datenbankzugriffe.


    Ein "einfacher" Weg über die API eine eigene Datenbankverbindung aufzubauen (oder eine eigene SQLite Datenbank anzulegen, ähnlich wie bei der alten Lua API) sind aber ebenfalls geplant ;)

    I thought the animations supported now were limited to basic scale, rotate, and translate. The kind of animations shown by the bug eating plant would require support for bones and complex animations. I thought that wasnt supported yet. But I do admit I know nothing about bones.

    Sorry if one of my previous posts gave this impression. Animations are not supported at the moment, and I guess it will take some time until that's finally available. Right now it's as you said, limited to basic transformations (rotate, scale, translate).

    Btw, I read the API again since the recent update and nothing is really standing out to me for getting the screen size.

    The easiest way is to provide relative coordinates for the gui elements (usually the gui constructors and particular methods have a boolean flag which determines if the provided coordinates are absolute or relative). When providing 1.0f as relative size coordinate for example, it fills the whole screen of the player ;)


    And is the position coordinate at top left or bottom right of the gui? This is not documented.

    It depends on the PivotPosition, by default this is set to "BottomLeft", so it's usually the bottom left. But if you change the pivot to the "Center", for example, the center of the gui element is used instead. I see the documentation doesn't say much about that, this will be changed //edit: the javadoc has been updated, the setPosition() and setPivot() methods provide proper descriptions and an example now :)

    Wo liegt das Limit denn?

    Eigentlich bei 100 8| Du kannst auf die Übersicht gehen, dann siehst du links wieviele Konversationen du hast und wieviel Speicherplatz belegt ist. Du kannst dort auch alte Konversationen löschen, einfach einen Haken links neben der/den Konversation(en) setzen und dann unten auf "xx Konversationen markiert" klicken -> "Verlassen (xx)"

    Leider musten wir heute mal wieder feststellen, das es spieler gibt die lieber Sachen
    klauen und Dinge kaputt machen als positiv aufzufallen und mitzuhelfen...

    Von diesen Spielern gibt es leider viel zu viele. Leider in allen Spielen :( Grundsätzlich gibt es bei RW derzeit zwei "einfache" Möglichkeiten, dies zu verhindern: Entweder das AreaProtection Skript wird verwendet, damit lassen sich bestimmte Gebiete festlegen und einzelnen Usern zuweisen. Dadurch kann nur noch dieser User etwas in diesen Bereichen etwas abbauen, verändern, was aus Kisten nehmen etc, Griefer gucken in die Röhre. Alternativ kann über die Permissions festgelegt werden, dass neue Spieler grundsätzlich gar nichts dürfen (also nix abbauen, nix klauen), und es Entscheidung der Admins ist, sie nach einer gewissen Bewährungszeit mit mehr Rechten auszustatten.


    - Einfachere Bedinung zb. Häckchen machen bei Adminrechte für verschiedene Befehle.

    An sowas können wir uns mal ransetzen wenn wir etwas Zeit übrig haben ;)


    -Passwortschutz bei Kisten jeder Art wo man Sachen lagern kann.

    Später wird es sowas ähnliches mal geben, also zB Safes.


    -Deaktivierung von Flugmodus! Mein Kollege hat schon an permissons rumprobiert und dabei ersten server geschrottet.

    Dafür muss in der default.permissions Datei unter dem "general" Teil das "true" neben "fly" in ein "false" umgewandelt werden, sodass der Abschnitt so aussieht:

    Code
    general:
    fly: false
    pvp: true


    Änderungen an den Permissions Dateien sollten aber niemals den Server "schrotten" ;)



    -Möglichkeit zb. duch Blaupause gebiet zu markieren, und alles dort in diesem Bereich auf Safe/unkaputtbar zu machen.

    Das klingt eher nach einem Job für ein Lua Skript bzw. vorzugsweise für ein Plugin (was mit der API, die in den Startlöchern ist, möglich sein wird).


    -Wenn ein Spieler gekickt wid od. gebannt, sollte automatisch sein gesamtes Inventar an Ort und Stelle liegen bleiben.

    Das könnte man zwar grundsätzlich machen, auf der anderen Seite würde das aber auch dazu führen, dass der Server u.U. unnötig mit Items zugemüllt wird (es wird sich ja nicht immer um Diebstähle handeln). Als Admin ist es vermutlich besser, die fehlenden Items einfach via Command neu zu spawnen.


    P.S. Auch wenn es bereits Scripte, permissons Befehle etc. dafür geben sollte,

    Ich glaube hier flogen irgendwo mal solche Permissions rum, du kannst mir aber auch kurz sagen, was genau die Permissions können sollen oder wie sie aufgebaut sein sollen (verschiedene Gruppen etc., und was sollen die Gruppen dürfen, was nicht etc), ich kann kurz eine Permissions Datei für euch anfertigen :)

    @Miacat: Es liegt definitiv nicht daran dass die Hardware nicht ausreichend wäre, ganz im Gegenteil, sie übertrifft ja bei weitem die Mindestanforderungen und sogar die empfohlenen Anforderungen ;) Dennoch können Hardwareprobleme oder Treiberkonflikte o.ä. selbst mit der besten Hardware auftreten.
    Der Vergleich mit Battlefield oder CS kann leider nur bedingt herangezogen werden, es macht zwar das Szenario "es könnte ein Temperaturproblem sein" sehr unwahrscheinlich, aber diese Spiele stellen ganz andere Anforderungen an den Computer. Rising World lastet den Computer hinsichtlich der CPU und des Arbeitsspeichers mehr aus, das liegt einfach an diesem Genre (Battlefield und CS haben eine vorgefertigte Welt, daher entfällt da schonmal ein riesiger Brocken den Rising World hingegen für die Weltgenerierung benötigen würde). Das trifft übrigens auch auf Minecraft zu, man könnte sich zwar zu der Annahme hinreißen lassen, dass Minecraft keinerlei Anforderungen stellen würde oder selbst auf einem PC der 90er laufen müsste, aber auch hier ist die Anforderung an die CPU und vor allem an den Arbeitsspeicher deutlich größer als bei vielen anderen Spielen, die deutlich schöner aussehen ^^
    Und natürlich ein anderer kleiner Unterschied (aber mit großer Wirkung^^) ist die Tatsache, dass viele Windows Spiele DirectX verwenden, anstelle von OpenGL.


    Hast du die anderen Dinge denn mal geprüft (Ereignisprotokoll in Windows etc)? Melde dich ansonsten einfach mal via Steam o.ä. bei mir, dann können wir etwas genauer gucken, ob sich ggf. etwas finden lässt.

    @Captian_Cornball: Working with the API requires some basic programming knowledge. Of course you don't have to dive into any of the advanced stuff in Java (e.g. for a simple plugin, you don't have to care about things like multithreading, networking, jni etc), but first you should be able to write simple Java applications (you could try to create a small calculator in Java, for example). Without going this way, there is probably no real chance (or at least this would be a very long and stony road) to understand how the API works, or use its full potential. There are several Java tutorials on the net which are available for free.
    Once you feel ready for the API, you can check out some of the code snippets in the forum, e.g. this one: Create a Plugin
    The javadoc also contains a few examples. If you have an explicit question, just ask it in the forum. Otherwise if this isn't sufficient, just wait until the API is fully released and the first plugins are available.

    If we have access in the API to apply a screen filter then one could be blinded or poisoned by such a plant

    Basically you can indeed achieve this by using gui elements. You could create a colored panel which has the same size as the screen. By changing the alpha value you can also have transparency etc ;)


    I'm thinking about a filter applied to the main viewing area (actual rendered 3d content, seperate from the UI)

    Maybe it's worth to consider adding access to various filter effects... but I guess that's something for the long run^^


    I think what I would have to do is make a test model and send it to someone as an .obj or something and then they can walk me though how I would implement it... if that works I would make something more elaborate.

    If you have a model ready just let us know, creating a small plugin which loads custom models isn't a big deal ^^ Basically even the small example above should work (of course pathes etc. need to be adjusted).

    I am worried! Do you never sleep?

    Hehe, sleep is overrated :D But thanks for caring about me :saint:


    But not all plug-in GUI interaction with users needs to be modal; in fact, most of the applications I have in mind would work equally well (some even better) with modeless "dialogue boxes" (well, kind of...).

    At least if mouse input is required a modal element would be useful. So the player can't mess up the gui by opening up the inventory at the same time etc.^^ But of course it's also possible (basically that's already possible, with the exception that you can't disable keys yet) to just have a panel which displays some options or instructions (i.e. "Press E to enable the elevator"). In this case it would be up to the plugin to decide when a key input actually has an effect (i.e. only when standing at a certain position).

    Unfortunately we are having a problem with the hive server right now. Account creation and login should work again (theoretically), please try again, if it still does not work, please let us know :)

    Es gibt gerade leider ein kleines Problem mit dem Hive Server, wir arbeiten daran. Accounterstellung und Login sollte jetzt aber wieder funktionieren (eigentlich), falls nicht, sag bitte nochmal Bescheid :)

    Bei Java SE handelt es sich um die Standard-Edition, bei Java EE um die Enterprise-Edition. Letztere brauchst du im Grunde nicht, zumindestens nicht wenn du nur normale Java Anwendungen erstellen möchtest oder insbesondere Plugins für Rising World. D.h. in dem Fall ist NetBeans Java SE die richtige Wahl ;)

    How does one go about adding custom objects?

    It would be necessary to create a small plugin which loads the model. A simple plugin which creates a custom model at a certain position could look like this (note: currently this code would throw errors, but there will be a minor update for the api in a few hours):


    Of course this is only a basic example. One could create much more powerful plugins, e.g. a plugin which allows the player to place the model in the world (after typing a command or pressing some keys or whatever) ^^


    I hope I don't have to limit myself to working with small blocks. I would prefer to use more traditional models with a UV-mapped texture.

    Hehe, of course not ^^ Actually creating a model with a proper uv mapped texture is definitely the best approach.


    By the way, your videos are awesome! :thumbup:

    Not sure if I know exactly what you mean... there is only one single main class (subclass of net.risingworld.api.Plugin). It doesn't matter if you create several other classes in your plugin which are also derived from net.risingworld.api.Plugin for example, only the "main class" (which needs to be defined somewhere) will be instantiated by the server. Even if you create new instances of your main class somewhere, it's up to you what you do with them (the server doesn't care about them).
    Is there something specific you want to achieve, or is this just out of curiosity?

    However, dealing with keystrokes in some specific / special way from within plug-ins might be rather important and it seems reasonable to get as right as possible since the beginning

    In general the only options are indeed either clientside scripts, or the client has to ask the server first every time it wants to process a key input. While the first one isn't an option right now, the second one is unfortunately never an option... :(


    GuiElements might be a primary way to display choices and actions to the player and collect selections from him, replacing the chat command system, which was a God sent so far, but it is a bit clumsy and requires the player to know what to type. As normally there is no mouse cursor in RW, selection in a GUIPanel can only be carried out with keystrokes, which however, when directed to the GUIPanel, should not trigger the 'usual' action (selecting a "{S}ave" button in the panel with {S} should not move backward).

    Right now you can't create "modal" gui elements (so any panel, label or image you create will simply be attached to the hud, without an option to interact with it). However, it's our intention to create something like a "modal window" element, once it's displayed on the player's screen, he is forced to interact with it. At the same time no other keys will work (with the exception of the ESC key), but the PlayerKeyEvent will still be triggered (and since the API has full control over the window, you could listen to any key you want, and close the windows whenever you want).
    Of course it will also be possible to enable the mouse cursor then, so it's up to you to decide if the player has to interact with the window by pressing certain keys, or if he can actually press buttons or any elements on the window.
    Modal windows will be implemented in the medium run, they're not too far away, but right now we need to concentrate on other things first ^^


    Customised key bindings does not seem to me an issue

    Yeah, my mistake, of course you define a certain key in your plugin (e.g. key E or Enter or whatever) and it doesn't matter what keybindings the player has, you simply want to disable key E or Enter etc, no matter if it's used for something else or not.


    what about the [MOVE_FORWARD] being kept pressed for 5 secs? How many individual [MOVE_FORWARD] key presses this implies?

    If the API listens for the "move forward" key (it can't listen for certain keybindings, just for explicit keys, so in this case probably the W key), the PlayerKeyEvent will be called twice: the first time the isPressed() function returns true, the second time (after 5 seconds) it returns false ;)

    Hmm.. what do you mean exactly with "handle several instances of itself running"? The server only loads the plugin once, but of course you can create as many threads as you want (as @zfoxfire mentioned), or use an executor / scheduler, or the "out-of-the-box" Timer class (although it does not provide any kind of parallelism). You can also define your events to be called in a separate thread (by defining the threading type in the @EventMethod annotation).
    But something tells me you mean something else? ;)