Per stock public aufrufen

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
  • Hey Com,


    ich möchte per stock erstellen, das dieser Stock noch einen Public aufrufen kann.
    Ich möchte für mein Handy Ingame dynamische Apps eröffnen, welche als Backend noch auf das Script zurückgreifen


    Beispiel


    public Wecker()
    {
    return 1;
    }


    stock AddApplicaton(name,publicname)
    {
    dann soll der publicname aufgerufen werden
    }


    SaMp Beispiele


    SetTimerEx("Dieser Teil ruft den public auf","1000",1,"i",playerid);


    Danke euch

  • stock AddApplicaton(publicname[], playerid)
    {
    CallLocalFunction(publicname, "d", playerid);
    return 1;
    }


    Das wäre dann:
    public Wecker(playerid)
    {
    return 1;
    }


    Und der Aufruf:
    AddApplicaton("Wecker", playerid);


    Ich war mal so frei und hab das "name[]" aus AddApplication entfernt.


  • Kann man das auch so machen das man beliebig viele parameter da zufügen kann so ist die anzahl aj bestimmt


  • Im stock musst du dann die Paramenter entgegen-nehmen...


    stock test(param1, param2, param3, param4...)


    Möchtest du, dass man das param1, etc. nicht immer schreiben muss?


    Wenn du da jetzt oben 5 möglichkeiten hinschreibst dann sind wenn du nur 2 brauchst nicht nutzbar und der
    CallLocalFunction(publicname, "dddddddd...", playerid, 1, 2, 3, 4, 5...);
    Ist fehlerhaft

  • Wenn du da jetzt oben 5 möglichkeiten hinschreibst dann sind wenn du nur 2 brauchst nicht nutzbar und der
    CallLocalFunction(publicname, "dddddddd...", playerid, 1, 2, 3, 4, 5...);
    Ist fehlerhaft


    das ... habe ich auch nur gemacht, falls man mehrere braucht. Das sollte man nicht so ins Script übernehmen, da vom Compiler ... ungültig ist.


  • stock AddApplication(publicname[], value=0, platzhalter, platzhalter1, platzhalter2, platzhalter3, platzhalter4)
    {
    switch(value)
    {
    case 0: CallLocalFunction(publicname, "d", platzhalter);
    case 1: CallLocalFunction(publicname, "dd", platzhalter,platzhalter1);
    case 2: CallLocalFunction(publicname, "ddd", platzhalter,platzhalter1,platzhalter2);
    case 3: CallLocalFunction(publicname, "dddd", platzhalter,platzhalter1,platzhalter2,platzhalter3);
    case 4: CallLocalFunction(publicname, "ddddd", platzhalter,platzhalter1,platzhalter2,platzhalter3,platzhalter4);
    }
    return 1;
    }


    AddApplication("Wecker", 2, 502, 503, 0, 0, 0) // zum Beispiel..


    Was besseres fällt mir jetzt auch nicht ein..

    3 Mal editiert, zuletzt von Secres ()

  • Das hier immer so Diskussionen entstehen müssen...Leute.
    niklasbollmer: Ganz einfach: Was du vorgeschlagen hast macht keinen Sinn in Bezug auf was NicoWiss haben möchte. Punkt.


    Er möchte bei AddApplicaton beliebig viele Parameter hinzufügen, und diese beliebig vielen Parameter auch in CallLocalFunction weitergeben.
    Die Frage ist ob das geht und wenn ja wie.


    Secres: Daran hatte ich auch schon gedacht, ist aber ziemlich undynamisch.


    @NicoWiss: Wie viele Parameter brauchst du maximal?

  • Sofern public Funktionen in definierte Anzahl an Parametern unterstützt, weiß ich nicht genau, würde ich dir getarg und numargs ans Herz legen

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Damit kenne ich mich leider nicht aus :(


    Erstmal sorry, dass ich dich so lange hingehalten habe.
    Nach langem Überlegen hab ich dir jetzt die Beste Möglichkeit, auf die ich gekommen bin.


    stock AddApplicaton(publicname[], params[])
    {
    CallLocalFunction(publicname, "s", params);
    return 1;
    }


    Wird so verwendet.
    AddApplicaton("Wecker", "Blau 14 03 17");
    Kannst du auch mit format machen, falls über einen Dialog etwas bestimmt wird, oder wenn du die playerid mitgeben willst.
    new tmp[50];
    format(tmp, sizeof(tmp), "%d %s", playerid, inputtext);
    AddApplicaton("EineAndereApp",tmp);


    public Wecker(params[])
    {
    //Dann kannst du hier eben pre-definiert, mit strtok oder sscanf, wie bei einem command
    //die Parameter auseinander nehmen und benutzen.
    //Ich mach das Beispiel mal mit strtok:
    new tmp[4][256], idx;
    for(new i = 0; i<4; i++) tmp[i] = strtok(params, idx);
    new WeckerFarbe[10];
    format(WeckerFarbe, sizeof(WeckerFarbe), "%s", tmp[0]);
    new Stunde = strval(tmp[1]), Minute = strval(tmp[2]), Beeps = strval(tmp[3]);
    new string[144];
    format(string, sizeof(string), "[Wecker-App] Der Wecker mit der Farbe %s wird um %d:%d %d mal klingeln.", WeckerFarbe, Stunde, Minute, Beeps);
    SendClientMessageToAll(-1, string);
    return 1;
    }
    Das Beispiel ist nicht das Beste, aber es sollte zum Verständnis erlangen reichen.


    Ich hoffe damit kannst du arbeiten.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen