Variablen in Pawn nutzen wie in PHP

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
  • Die Idee stammt ja auch von mir :rolleyes:


    Moment mal, dass stimmt so ja nicht !


    Die Grundidee stammt schon von mir nur, dass mit den pVars stammt von dir :whistling:


    Sieht man auch sofort am Code.Du hast den identischen Ablauf ineinander verschachtelt anstatt es 1x logisch aufzubauen mit einer Schleife.
    Was mach ich eigentlich,wenn ich wirklich mal ein $-Zeichen im Text haben möchte? Solltest zumindest ein Doppel-$ erlauben ( $$ ).
    "Du hast $Bank$$ auf deinem Bankkonto" -> "Du hast 1000$ auf deinem Bankkonto"


    Das mit dem Dollar zeichen, daran habe ich nicht gedacht, werde ich gleich mal machen, aber mit einer for-Schleife ist das nicht direkt möglich, da man mit strfind arbeiten muss und das nicht einfach erhöhen kann...sprich sowas:
    for(new z = strfind(format, "$", true); z<strlen(format); z++)
    macht gar keinen Sinn, hast du da eine bessere Idee ?


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Man kann das hier nur schlecht mit dem SSCANF Plugin vergleichen. Bei SSCANF muss man ja selber angeben,was für einen Typ die Variable hat.
    Auch wird dort die Variablen als Referenz übergeben.
    Die Variablen als Referenz übergeben bricht den PHP Aspekt. Wir landen dann wieder bei format oder sprintf ( sprintf hat irgendwer mal iwo gepostet ).
    Wenn die Variable nicht als Referenz übergeben wird,wie kommt er dann an sie herran. Wie gesagt,der Variablenname existiert im Kompilierten-Code nicht mehr.


    Eine while Schleife macht hier viel mehr Sinn als for.Auf die Idee eine for-Schleife zu nutzen würde ich von der Logik her schon nie kommen :-O.

  • Man kann das hier nur schlecht mit dem SSCANF Plugin vergleichen. Bei SSCANF muss man ja selber angeben,was für einen Typ die Variable hat.
    Auch wird dort die Variablen als Referenz übergeben.
    Die Variablen als Referenz übergeben bricht den PHP Aspekt. Wir landen dann wieder bei format oder sprintf ( sprintf hat irgendwer mal iwo gepostet ).
    Wenn die Variable nicht als Referenz übergeben wird,wie kommt er dann an sie herran. Wie gesagt,der Variablenname existiert im Kompilierten-Code nicht mehr.


    Eine while Schleife macht hier viel mehr Sinn als for.Auf die Idee eine for-Schleife zu nutzen würde ich von der Logik her schon nie kommen :-O.


    Mit dem variabel namen hast du teils recht die ganzen PVars bleiben im Index zurück also von 0 bis ... diese kann man jedoch wieder aufrufen
    und zwar mit GetPVarNameAtIndex


    ein beispiel wäre solch ein command

    if(strcmp("/test1", cmdtext, true, 10) == 0){
    new varname[64];
    for(new i=0; i < GetPVarsUpperIndex(playerid); i++)
    {
    GetPVarNameAtIndex(playerid, i, varname, sizeof(varname));
    printf("PVar index: %d varname: %s", i, varname);
    }
    return 1;
    }


    da hat man den Namen zur entsprechenden id und kann dann mit einer while schleife oder mit einer for schleife und strfind
    überprüfen ob der Name der variabel mit dem zeichen vorhanden ist.


    zum thema for-schleife ^^
    for(new i=0; i < GetPVarsUpperIndex(playerid); i++)


    mit GetPVarsUpperIndex lässt dich die anzahl der variabel des spielers auslesen.


    Naja nun fängt der schwierige teil an und zwar das ersetzen der string stücke und zwar bleibt einem in pawn nur
    eine begrenzte möglichkeit.


    Ein beispiel wäre es mit strreplace zu machen. Ich hab mich heute mal 2 Stunden dran gehockt um sowas ähnliches zu
    machen und kam leider zu dem punkt das die meisten möglickeiten von samp her nicht sehr prizise sind
    auch die Funktion hier von Kaliber bringt nicht wirklich das was sie verspicht und zwar grenzt sich das relative früh ab
    also ich hab nicht mal 3 Variabeln geschaft mit deine Funktion ^^ und dort war schon mein string verschoben also
    besser gesagt der Name war zusammen mit einem weiteren Wort.

  • Hä ?
    Es geht doch gar nicht um die PVar Funktionen. PVars sind doch nicht das gleiche wie richtige Variablen.
    Folgendes ist gemeint:

    new text[] = "World!";
    ScmEx(playerid,-1,"Hello $text");

    Es geht jetzt um text.


    Die Ganze Thematik hier ( PHP Like ) ist doch nichts Ganzes,wenn man nur die PVars benutzten kann und immer die PVars bei dem Spieler
    ausgelesen wird,der als 1. Parameter angegeben wird.

  • Ich hab mich auf den letzten abschnitt bezogen von deiner Aussage und hab diese falsch verstanden ich bin davon ausgegangen
    das du die PVars meintest , jedoch meinst du ja die normale Variabeln und damit hast du ja recht ^^, dass diese include
    nicht dem php gedanke ganz entspricht , wenn man keine normalen Variabeln verwenden kann wie du in deinem Beispiel.


    Jo sry. ;)


  • Mach doch:
    new pos = strfind(str,"$$",true);
    while(pos != -1){
    strdel(str,pos,pos);
    pos = strfind(str,"$$",true);
    }

  • mach doch:


    new pos = strfind(str,"$$",true);
    while(pos != -1){
    strdel(str,pos,pos);
    pos = strfind(str,"$$",true);
    }


    Jop, so könnte es gehen, danke :)


    Es geht jetzt um text.
    Die Ganze Thematik hier ( PHP Like ) ist doch nichts Ganzes,wenn man nur die PVars benutzten kann und immer die PVars bei dem Spieler
    ausgelesen wird,der als 1. Parameter angegeben wird.


    Supaa, aber das ist ja nicht möglich :whistling:



    //Goldkiller: Dann ist es aber auch nicht wie in PHP 0o.
    //Kaliber: Ja, aus diesem Grund hatte ich das auch ursprünglich nur in den Bereich Codeschnipsel geschrieben, aber Blackace hat dann die Idee mit den pVars gebracht und aus diesem Grund habe ich diese Include Datei geschrieben... :whistling:

    ast2ufdyxkb1.png


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

    2 Mal editiert, zuletzt von Kaliber ()

  • Idee: Toll
    Umsetzung: Absoluter Fail...
    Da komm ich sogar mal aus meinem sicheren Loch heraus 8|
    Da bekommt jeder gute Scripter ja sofort einen Schlaganfall, wenn er das sieht.
    Was wiederholst du einen Code 4 mal?
    1. Kann man dadurch nur max. 4 Variablen verwenden
    2. Geht das mit einer Schleife viel einfacher
    Da fällt mir nichts mehr zu ein.
    Aber tolle Idee, trotzdem :D