[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
  • Im Normalfall wäre das typisch für fehlerhafte bzw. zu viele Mods auch eine falsch eingestelltes enb kann schuld sein.


    Als dritte Möglichkeit gäbe es noch eine beschädigt San Andreas Installation.


    PS: ein nicht vorhandener oder fehlerhaft konfigurierter Streamer wäre auch möglich aber das hat man dir ja schon im anderem Thread geschrieben.


    Eventuell auch ein Problem mit Grafikkarten Treiber?

  • Hay weiß jemand wie ich das bei OnDialogResponse machen soll?
    /teleport CMD:

    new string[512], count;
    for(new i=0; i!=MAX_TELES; i++)
    {
    if(!TeleInfo[i][tCreated]) continue;
    if(IsPlayerAdminEx(playerid, TeleInfo[i][tRank]))
    {
    format(string, sizeof string, "%s%02d-%s\n", string, i, TeleInfo[i][tName]);
    count++;
    }
    }
    if(count)
    {
    ShowPlayerDialog(playerid, DIALOG_TELE, DIALOG_STYLE_MSGBOX, "Teleport", string, "Teleport", "Schließen");
    }
    Ich weiß jetzt aber nicht wie ich das bei OnDialogResponse machen soll.. (Also herausfinden auf welchen Port er geklickt hat
    um ihn zu porten)

  • Hat jemand Tipps oder TuT Links wie ich einen in eine Art Tutorial versetze?
    SuFu schon genutzt, aber nichts ordentliches gefunden, selbst Youtube ohne.


    Ich will das wenn er in ein Rot markierten Punkt läuft, die Ränder oben und unten Schwarz werden
    und er dann einen Text bekommt mit einem Timer, dass soll mehrmals passieren, einmal nach dem registrieren,
    dann nachdem er zum Wegpunkt gegangen ist und danach wenn er die Stadt erklärt bekommt.
    Doch ich weis nicht wie ich das mache mit dem Rändern.


    MfG


  • Das sind einfache Textdraws, die du erstellst, sobald er in den Checkpoint läuft.


    MfG


  • Arbeitest du mit statischen Ports oder Dynamischen. Bei statischen werten hast du die möglichkeit das ganze direkt über das listitem dies zu tun sonst musst du die anklickbare ids in einem anderen array speichern. Ich würde dir noch empfehlen sollten es statische werte sein ein extra string nimmst und das bei OnGameModeInit zu formatieren damit entlastest du auch dein string ein wenig obwohl das auch geht solle es dynamisch sein in der hinsicht das du den string neu formatieren lässt sollte was geändert werden.

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

  • Arbeitest du mit statischen Ports oder Dynamischen. Bei statischen werten hast du die möglichkeit das ganze direkt über das listitem dies zu tun sonst musst du die anklickbare ids in einem anderen array speichern. Ich würde dir noch empfehlen sollten es statische werte sein ein extra string nimmst und das bei OnGameModeInit zu formatieren damit entlastest du auch dein string ein wenig obwohl das auch geht solle es dynamisch sein in der hinsicht das du den string neu formatieren lässt sollte was geändert werden.


    Ist dynamisch, bei meinem Admin System (Alle Admin befehle zeigen, im format "%s - %d")
    hab ichs dann bei OnDialogResponse so gemacht: (ungetestet)

    new cmd[64], string[128];
    format(cmd, sizeof cmd, "%s", inputtext);
    new found = strfind(cmd, "-", true);
    if(found == -1) return 1; //Dialog zeigen mit, Fehler blabla..
    strdel(cmd, found-1, strlen(cmd));
    new cID = Command_GetID(cmd);
    PlayerEditCommand[playerid] = cID;
    format(string, sizeof string, "Editiere Befehl: %s\nAktueller Rang: %d", cmd, CommandRank[cID]);
    ShowPlayerDialog(playerid, DIALOG_ADMIN_PERM_EDIT, DIALOG_STYLE_INPUT, "Adminbefehl editieren", string, "Setzen", "Zurück");
    Hab gelesen das Wenn man im Listdialog etwas anklickt, der text bei inputtext gespeichert wird..

  • Hallo ich bekomme die Kriese.


    Ich probiere schon seit Minuten an diesem Problem rum aber ich bekomme es einfach nicht gelöst ...


    Also mein Problem ist das ich 2 Checkpoints habe erst beim 2. Checkpoint soll das Fahrzeug weggenommen werden das passiert aber schon beim 1. und wenn man im 1. Checkpoint ankommt soll eigentlich der 2. angezeigt werden was aber auch nicht der Fall ist.


    Hier die Codes:


    Oben definiert:


    new testjob[MAX_PLAYERS];


    In einem Dialog kann man dann den Job bzw die Route wählen dort ist folgender Code


    if(dialogid == DIALOG_ROUTE)
    {
    if(!response)return 1;
    {
    if(listitem==0)
    {
    testjob[playerid] = 1;
    SetPlayerCheckpoint(playerid,1191.5402,-923.7773,43.1096,10);
    }
    }
    return 1;
    }


    Hier wird der erste Checkpoint gesetzt das funktioniert auch nur wenn ich an diesem Checkpoint ankomme wird kein neuer CP gesetzt und das Vehicle wird mir entnommen was erst bei Checkpoint 2 der Fall sein sollte.


    OnPlayerEnterCheckpoint


    if(testjob[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    testjob[playerid] = 2;
    SetPlayerCheckpoint(playerid,1465.9991,-1016.5866,25.7718,10);
    }
    if(testjob[playerid] == 2)
    {
    DisablePlayerCheckpoint(playerid);
    DestroyVehicle(GeldTransportAuto[playerid]);
    }


    Ich hoffe ihr könnt mir helfen :S


  • Also wenn es dynamisch ist benutz doch ein array wo du die jeweilige ids speicherst vom index her um die jeweiligen koordinaten aufzurufen
    MAX_PORTS die anzahl deiner einträge maximal .
    new ValidIndex[MAX_PORTS char];
    stock GetValidTeleports()
    {
    new i,x;
    for(; i < MAX_PORTS; ++i){
    if(!TeleInfo[i][tCreated]) continue;
    ValidIndex[x] = i;
    ++x;
    }
    return 1;
    }


    Bei dem jeweiligen Teleport also bei OnDialogResponse unter dem jeweiligen Dialog die position setzen


    SetPlayerPos(playerid,TeleInfo[ValidIndex[listitem]][X],TeleInfo[ValidIndex[listitem]][Y],TeleInfo[ValidIndex[listitem]][Z]);


    veränderst du ihrgend was an den teleports löscht oder erstellst einen so lässt du die funktion neu aufrufen.



    Zu dem zweiten code was möchtest du genau bewerkstelligen damit also ihrgend ein befehl bearbeiten zu dem kannst du inputtext auch bearbeiten und brauchst kein extra string


  • // Berichtigt

  • @Gobelzz:
    if(testjob[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    testjob[playerid] = 2;
    SetPlayerCheckpoint(playerid,1465.9991,-1016.5866,25.7718,10);
    }
    if(testjob[playerid] == 2)
    {
    DisablePlayerCheckpoint(playerid);
    DestroyVehicle(GeldTransportAuto[playerid]);
    }
    läuft von oben nach unten durch -> erste if abfrage stimmt und es wird testjob[playerid] zu 2 geändert und DANN wird erst das 2te if geprüft und da ist testjob[playerid] folglich schon 2 (= Beides wird ausgeführt)


    Hier richtig:
    if(testjob[playerid] == 1)
    {
    DisablePlayerCheckpoint(playerid);
    testjob[playerid] = 2;
    SetPlayerCheckpoint(playerid,1465.9991,-1016.5866,25.7718,10);
    return 1; // getan was zu tun ist also ENDE
    }
    if(testjob[playerid] == 2)
    {
    DisablePlayerCheckpoint(playerid);
    DestroyVehicle(GeldTransportAuto[playerid]);
    return 1; // getan was zu tun ist also ENDE
    }

  • Vielen Dank noch eine andere Frage wenn ich jetzt in testjob bin wie kann ich verhindern das ich Befehle eingeben kann bei OnPlayerCommandText weiß ich es ja nur ich habe auch viele Befehle mit OCMD gemacht wie funktioniert das dort? oO