[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Wobei du bei ~ (Tilde) wegen den Color Codes aufpassen musst, falls du iwann mal vorhast, Text von Textdraws oder ähnliches zu speichern :)

    Das spielt eigentlich keine Rolle, da bei Textdraws mit ~n~ ein Zeilenumbruch gemacht wird, daher darf die obige Routine gar nicht an der Stelle eingefügt werden, wenn der Text für ein Textdraw bestimmt ist. ;)

  • Verstehe ich nich so ganz aber du hast denke davon mehr Ahnung :D


    Aber damit ich es verstehe:
    Nach dem Code geht er ja jeden Character des Strings durch (char - Array), das heißt er überprüft in diesem Fall, ob irgendein Char ein "~" (Tilde) entspricht. Falls das der Fall ist, ersetzt er diesen mit "\n". Dann geht er zum nächsten char. Und wenn man jetzt als Textdrawtext z.B. "Hey ~r~ich bin ein roter Text" hat, müsste es doch dann zu "Hey \nr\nich bin ein roter Text" werden? :o


    Ist jetzt von meiner Seite nur darauf bezogen worden, dass man unterscheiden sollte, wann man was einsetzt bzw. dass man die Überprüfung nicht über nen Textdraw schickt. Denn es gibt auch Plugins oder Includes, die die Standart GUIs ersetzen. Und falls man dann den Text weiterbenutzen will, müsste man den neu formatieren. Um zukünftige Fehler auszuschließen (wegen diesem Zeichen).

  • Genau, das würde dann so aussehen. Die Schleife mit dem Array Durchlauf durch string sollte daher nur bei Dialogen verwendet werden, da die keine Tilden zur Formatierung nutzen (außer man will Tilden im Text haben, dann muss man sich ein anderes Zeichen suchen).


    Für Textdraws benötigt man keine "Übersetzung", das kann 1:1 aus der Datenbank gelesen werden, daher darf man für einen String der im Textdraw genutzt wird die Schleife nicht voranstellen (in einem Textdraw gibt es keine Formatierung mit Backslash).


    Ich denke das ist was du meinst, dass man die Tilde nicht als Zeilenumbruch Platzhalter nutzen darf, wenn sie anderweitig verwendet werden soll.

  • ich habe mal eine Frage bezüglich des MySQL's.
    Frage lautet: Ist es möglich in der MySQL abfrage einzubauen das er prüft ob der Spieler bereits einen Dateneinsatz hat?
    Nicht das alles doppelt drinne ist?


    geht dies oder muss ich anderes vorgehn?
    da bin ich grad etwas übefragt :D

  • Inwiefern möchtest du das einbauen (d.h. soll es in einer Abfrage selbst vorkommen)?
    Du kannst natürlich mit dem SELECT-Statement und entsprechenden WHERE-Selektionen prüfen, ob ein Datensatz existiert. Mit der Abfrage (* num_rows in PHP, o.ä.) kannst du dir dann anzeigen lassen wie viele Zeilen deine Anfrage geliefert hat

  • ich habe mal eine Frage bezüglich des MySQL's.
    Frage lautet: Ist es möglich in der MySQL abfrage einzubauen das er prüft ob der Spieler bereits einen Dateneinsatz hat?
    Nicht das alles doppelt drinne ist?


    geht dies oder muss ich anderes vorgehn?
    da bin ich grad etwas übefragt :D

    Nein, du kannst es direkt mit einer einzigen SQL Abfragen erledigen. :)
    Hier der grobe Vorgang (man kann mehrere Varianten verwenden, um ans Ziel zu gelangen. :) )


    Als erstes erstellst du deine Abfrage.
    Danach fragst du mittels den gegeben Funktionen ab, wieviele Zeilen du erhalten hast.
    Und richtest danach deine Bedingung aus.


    if(rows == 1) -> ein datensatz gegeben, keine doppelten
    allerdings wenn z.B.
    if(rows > 1) -> mehrere accounts vorhanden


    Es wäre gut grob zu sagen, was du vor hast.
    Wenn du z.B. damit ein "Account Daten Laden" machen möchtest und das MySQL Plugin Version R35+ verwendest, so kannst du z.B. eine effiziente Variante nutzen, die sogar im Wiki dokumentiert ist.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du kannst den Actor an der Position des Interiors erstellen, er ist dann automatisch drin.
    Du kannst dem Actor aber kein spezielles Interior zuweisen, also wenn eine Position (z.B. Haus) von zwei Interior IDs verwendet wird, dann steht er in beiden Interior IDs drin.


  • Ich versteh nicht warum in der Datenbank dies nicht erstellt wird, hat wer eine Idee oder sieht den Fehler ?


    ERROR MELDUNG: [ERROR] CMySQLQuery::Execute[OnQueryFinish] - (error #1146) Table 'servernamen.gm_races' doesn't exist


  • Möglicheweise ist die Query-Variable zu klein.


    Aber: Mach das bitte nicht so. Das geht völlig am Sinn einer Datenbank vorbei.


    Erstelle eine Tabelle mit:

    • RaceID (PRIMARY KEY)
    • Name
    • fID (was auch immer das ist)
    • rmode


    Und die zweite Tabelle mit

    • RaceID (PRIMARY KEY)
    • CheckpointID (PRIMARY KEY)
    • x
    • y
    • z
    • cp_typ
    • cp_size


    Dann sparst du dir so eine Monster-Tabelle, die komplett unübersichtlich ist, sondern hast schön jeden Checkpoint für sich stehen.

  • if(!sInfo[playerid][pLogIn] == 1)

    Klingt zwar vollkommen bescheuert :D


    Aber man könnte das wirklich so schreiben:


    if(!sInfo[playerid][pLogIn] == true) return SendClientMessage(playerid,ROT,"Du bist nicht Eingeloggt.");


    Aber natürlich wäre hier offensichtlicher entweder:


    //Direkt so:
    if(!sInfo[playerid][pLogIn]) return SendClientMessage(playerid,ROT,"Du bist nicht Eingeloggt.");


    oder:


    if(sInfo[playerid][pLogIn] != true) return SendClientMessage(playerid,ROT,"Du bist nicht Eingeloggt.");

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S