Beiträge von Simon2202

    Hallo Community!


    Ich habe irgendein, mir unerklärliches, Problem mit meinem Fraktions System.


    Ich habe mit meiner ersten Fraktion (LSPD, FrakID: 1) begonnen und alles klappte super. Jetzt wollte ich die zweite Fraktion (Regierung,FrakID: 2) hinzufügen, aber es funktioniert kein Fraktionsbezogener Befehl mit der FrakID 2...


    Als Beispiel 2 meiner Befehle:


    1. /makeleader:


    Wenn ich hier /makeleader 0 2 eingebe kommt die Meldung, dass der Befehl nicht existiert, mit der FrakID 1 Funktioniert alles.


    2. /showfkasse:


    Auch hier, mit /showfkasse 1 funktioniert alles perfekt, bei /showfkasse 2 wieder die Meldung, dass der Befehl nicht existiert....

    Habe dir kurz mal markiert was hier wichtig wäre:



    Du musst (fast) jedes mal, wenn der Code den du ausführen willst fertig ist, ein "return" einfügen. Meistens ist das ein "return 1;" in seltenen Fällen, vor allem selbst geschriebenen publics/stocks kann es auch ein "return 0;" sein.



    Ist das return nicht da, dann wird der Code der darunter steht auch einfach ausgeführt, weil du keinen Wert zurückgibst.


    Ja, du kannst auch einfach ein "else" einbauen, ich selbst finde es aber so schöner und es spart in Summe bei mehreren 10.000 - 100.000 Zeilen Code auch Schreibarbeit und Zeilen:)



    Wenn du noch fragen hast kannst du mir auch ne PN schreiben, mfg

    Trotzdem mein Rat: Lerne es gleich mit Mysql. Mysql ist einfach besser zum Scripten, vor allem später für dynamische Systeme und wenn du mal ein Control Panel erstellen wirst sowieso.


    Ja, Mysql ist schwerer, glaub mir ich scripte jetzt schon länger damit und habe manchmal noch immer Fehler beim Mysql Code ^^ aber es zahlt sich aus, für den Vorteil den Man dadurch hat. (Mysql Tutorials findest du außerdem genug, ein Beispiel wäre Mr.Monat von dem ich einiges gelernt habe am Anfang)

    Okey. ich glaube mal du hast den Code nicht selber geschrieben?



    Kurze Erklärung:


    Der Erste Teil ist bei OnGameModeInit das Objekt zu erstellen, z.B:


    Code
    tor[0] = CreateObject(971, 1588.92334, -1638.00989, 12.97296,   0.00000, 0.00000, 0.00000); //Tor LSPD
    	tor[1] = CreateObject(968, 1544.67944, -1630.88037, 13.14428,   0.0, -269.69992, 89.67996);//Schranke LSPD


    Für Jedes Tor, beziehungsweise jedes Objekt, welches du später steuern willst, musst du eine Variable vergeben, ich mache das ganze mit einem Array, du kannst aber auch einzelne Variablen nehmen.



    Dann haben wir den Befehl um die Schranken zu öffnen, ich nehme hier wieder das Beispiel aus meinem Code:


    Du kannst das natürlich nicht 1 zu 1 kopieren, es soll dir nur veranschaulichen wie es funktioniert.



    So, du brauchst jetzt aber auch noch die Koordinaten des Objektes wo es sein soll, wenn es offen/verschoben ist, entweder du besorgst dir diese direkt beim Mappen aus dem Editor, oder wenn du es nach unten verschiebst reicht es auch die z Koordinate (die 3.) kleiner zu machen, als dort wo das Objekt ursprünglich erzeugt wird.


    Hoffe es ist einigermaßen verständlich.



    (Btw: Zeig uns bitte noch dein public close)

    Ja, aber die beiden Tore sind ja nich die gleichen, du kannst nicht für 2 Objekte 1 Variable nehmen.
    Beispiel von mir:


    Code
    tor[0] = CreateObject(971, 1588.92334, -1638.00989, 12.97296,   0.00000, 0.00000, 0.00000); //Tor LSPD
    	tor[1] = CreateObject(968, 1544.67944, -1630.88037, 13.14428,   0.0, -269.69992, 89.67996);//Schranke LSPD

    Kommt die ClientMessage unten, dass du nicht in der Nähe eines Tores bist, oder passiert einfach garnichts?


    Wenn zweiteres:


    Überprüfe ob es die richtigen Koordinaten sind auf die das Tor gesetzt werden soll.

    Ist nicht richtig eingerückt wegen dem komischen Editor von WBB4, aber du musst das "else" immer ans ende setzen^^

    Mach das ganze so:


    Code
    if(strlen(inputtext) < 4)
    	{
    	    StopAudioStreamForPlayer(playerid);
    	}
    else
    	{
    	    ShowPlayerDialog(playerid, DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Register:","Dein Passwort muss mindestens 4 Zeichen lang sein!:","Register","Abbrechen");
    	    Register(playerid,inputtext);
    	}


    Das ganze kommt jetzt zu dem Dialog wo er das Passwort das erste mal eingibt, ich schätze das ist bei dir DIALOG_REGISTER



    @#TroyStoy Deine Variante würde aus 2 Gründen nicht sinnvoll funktionieren:


    1. Wollte er, dass das Passwort mindestens 4 Stellen haben muss, ist mit > 0 nicht erfüllt.


    2. Würde der Spieler einfach nicht registriert werden, er würde nichteinmal eine Meldung angezeigt bekommen, geschweige denn es neu versuchen können.

    Du brauchst dazu ein paar Dinge.


    1. Deinen Admin(?) Befehl mit dem du das Event starten willst, nennen wir ihn mal /startevent


    2. Den Befehl /bereit


    (ich schreibe sie dir jetzt absichtlich nicht, da du vielleicht selber drauf kommst und ich in ocmd schreibe und nicht weiß wie du das machst.)


    Dann brauchst du ein paar Globale/Spieler Variablen


    Code
    new eventexists;
    new playerready[MAX_PLAYERS];


    In deinem Admin Befehl setzt du dann "eventexists" auf 1 -> Das Event existiert


    Im Befehl /bereit musst du abfragen ob "eventexists" auf 1 steht, ansonsten soll man ihn nicht ausführen können.
    Und dort setzt du dann playerready[playerid] auf 1.


    Dann kannst du ihn entweder direkt zu dem Event teleportieren (SetPlayerPos) oder du machst das mit einem 3. Befehl "/startevent" bei dem du mit einer Schleife abfragst welche Spieler denn /bereit eingegeben haben (bei wem playerready[playerid] auf 1 steht):


    Code
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))continue;
    if(playerready[i] == 0)continue;
    playerready[i] = 0;
    //Spieler zum Event teleportieren
    }

    Dann kannst du noch sobald 2 Spieler dort sind (Globale Variable wieder) einen Timer für 2 Minuten starten. Wenn das Event beginnt, oder keine Spieler mehr teilnehmen dürfen musst du "eventexists" natürlich wieder auf 0 setzen.



    Das ist es mal sehr grob, hoffe ich hab in der Schnelle keinen Fehler drinnen in der Erklärung

    Hallo, ich habe diesen /givewanteds Befehl geschrieben:




    Mein Problem:



    Wenn ich /givewanteds 0 60 Test


    Eingeben, dann wird mir das hier ausgegeben:



    Außerdem kann ich 60 Wanteds außerhalb eines Cop Cars vergeben, was ja nicht sein sollte... Habe sicher nur einen dummen Denkfehler:/

    Hallo Community!



    Ich habe meinen /fchat Befehl so geschrieben:





    Nun kommt ingame aber das hier heraus:


    Code
    [22:34:54] (([L]ayerCommandText [MVS]Simon: Hallo))


    Ich lasse die Rangnamen per Mysql Speichern und Laden, habe in der Tabelle auch die Rangnamen Testweise erstellt, der "rname5" wäre in der Datenbank: RName5


    Wenn ich nur die Daten aus der Datenbank nehme kommt das hier bei /fchat:


    Code
    [22:33:22] (([L]


    Durch meinen Befehl mit dem ich die Rangnamen ändern kann, kam dann das obere Beispiel zustande.


    Mein Befehl /changername:


    Und mein Public in dem Ich die Fraktionen laden lasse:



    Ich weiß es ist sehr viel Code, das tut mir auch leid ich weiß nur nicht mehr weiter :/, danke!

    Ich möchte für mein Fraktionsauto System, dass jede Fraktion nur 25 Autos haben darf.


    Ich habe jetzt oben eine Globale Variable erstellt:


    Code
    new frakcars[MAX_FRAKS][15];


    und mir eine schleife geschrieben die überprüfen soll welcher der 15 Slots frei ist:



    Code
    stock GetEmptyFrakCarSlot(fid)
    {
    	for(new i=0;i<MAX_FRAK_CARS;i++)
    	    {
    	        if(!frakcars[fid][i])return i;
    	    }
    	return 1;
    }

    Ich bin mir nur nicht sicher ob das so funktioniert? Ich frage weil ich mein Script jetzt auf nichts aufbauen will, was nicht klappt.



    Freue mich auch über Vorschläge wie ich es denn anders machen kann, wenn es so nicht geht.

    Du musst, wenn du VARCHAR auswählst eine Länge angeben.




    Eigene Frage:



    Ich würde mein Fraktionsauto System gerne Dynamisch mit mysql schreiben. nur wie kann ich die Vehicle IDS dann den Fahrzeugen zuweisen? z.B Es wird ein neues gekauft, das wird dann einfach in die Tabelle eingefügt.


    Sagen wir es gibt schon 3 Fahrzeuge mit den carid variablen lspd[0],lspd[1],lspd[2].


    Wie stelle ich jetzt beim Kauf des 4 fest, dass es schon 3 Gibt?





    Die eigentliche Frage:


    Wie fragt man ab ob ein Array leer ist?