Brauche hilfe bei der Scriptoptimirung(Autosystem)

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
  • Ich habe nun fast mein Autosystem fertig nur die langen for schleifen machen dem server zu schaffen. Ich fang mal mit dem Dcmd an mit dem man einem Spieler ein Schlüssel gibt
    dcmd_gibschluessel(playerid , params[])//dcmd wurde richtig definirt
    {
    new pname[MAX_PLAYERS],accFormat[128];//name des spielers mit dem Schlüssel
    new pnameee[MAX_PLAYERS],accFormattt[128];//name des spielers, der den Schlüssel bekommen soll
    new pID,nummernschild[32];// pID=Spielerid , dessen spielers der den schlüssel bekommt;nummernschild=Der string ( die schlüssel werden anhand des nummernschilds geprüft , ob der schlüssel ins auto passt.
    if(sscanf(params, "ds", pID, nummernschild))
    {
    return SendClientMessage(playerid,COLOR_RED, "Nutze: /gibschluessel [SpielerID] [FahrzeugNummernschild]");//Selbsterklärend
    }
    else
    {
    if(!IsPlayerConnected(pID))
    {
    SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht online!");
    }
    else
    {
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
    GetPlayerName(pID,pnameee,sizeof pnameee);
    format(accFormattt,sizeof accFormattt,"Spieler/%s.datei",pnameee);
    new datei[50],str[256],strr[256];
    for(new i=1;i<2000;i++)//Die erste lange forschleife, sie soll prüfen ob der spieler der den schlüssel vergibt ihn überhauopt hat
    {
    format(datei,50,"car%d",i);
    if(strcmp(nummernschild,dini_Get(accFormat,datei)) == 0){return 1;}Erste Lange schleife, es soll geprüft werden ob die eingabe vom spieler mit einem der 2000 schilder in der datei übereinstimmt.
    //wenn es übereinstimmt, soll der code weiter gehen. wenn nicht soll er aufhören. WIE kann ich in der if-abfrage abfragen ob nummernschild und der string in der datei NICHT überienstimmen
    }
    for(i=1;i<2000;i++)//noch ne lange schleife


    {
    format(datei,50,"car%d",i);
    if(strcmp("0",dini_Get(accFormat,datei)) == 0)//wenn in der dini des spielers noch kein nummernschild(schlüssel)steht dann
    {
    dini_Set(accFormat,datei,"0");//wird das nummernschild des anderen spielers gelöscht(er hat keine schlüssel mehr) dini_Set(accFormattt,datei,nummernschild);// und hier an den anderen übertragen(dieser hat nun die schlüssel)
    format(str,256,"Du hast %s die schlüssel für das Auto mit dem Kennzeichen %s gegeben.",pnameee,nummernschild);
    format(strr,256,"Du hast von %s die schlüssel für das Auto mit dem Kennzeichen %s bekommen.",pname,nummernschild);
    SendClientMessage(playerid,COLOR_GREEN,str);
    SendClientMessage(pID,COLOR_GREEN,strr);
    return 1;
    }
    }
    }
    }
    return 1;
    }
    Sorry für das schlechte einrücken das passirte automatisch.
    Weis einer was ich meine so das das ganze nicht zu server auslatend wird

    Einmal editiert, zuletzt von carlos1710 ()

  • Pack doch einfach alles in eine for schleife und lass statt return 1; einfach ein break laufen.


    Und nutze statt 2 Strings einfach nur einen
    Beispiel:
    format(str,256,"Du hast %s die schlüssel für das Auto mit dem Kennzeichen %s gegeben.",pnameee,nummernschild);
    SendClientMessage(playerid,COLOR_GREEN,str);
    format(str,256,"Du hast von %s die schlüssel für das Auto mit dem Kennzeichen %s bekommen.",pname,nummernschild);
    SendClientMessage(pID,COLOR_GREEN,str);

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

    Margarete Stokowski

  • dcmd_gibschluessel(playerid , params[])//dcmd wurde richtig definirt
    {
    new pname[MAX_PLAYERS],accFormat[128];//name des spielers mit dem Schlüssel
    new pnameee[MAX_PLAYERS],accFormattt[128];//name des spielers, der den Schlüssel bekommen soll
    new pID,nummernschild[32];// pID=Spielerid , dessen spielers der den schlüssel bekommt;nummernschild=Der string ( die schlüssel werden anhand des nummernschilds geprüft , ob der schlüssel ins auto passt.
    if(sscanf(params, "us", pID, nummernschild))
    {
    return SendClientMessage(playerid,COLOR_RED, "Nutze: /gibschluessel [SpielerID] [FahrzeugNummernschild]");//Selbsterklärend
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht online!");
    }
    else
    {
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"Spieler/%s.datei",pname);
    GetPlayerName(pID,pnameee,sizeof pnameee);
    format(accFormattt,sizeof accFormattt,"Spieler/%s.datei",pnameee);
    new datei[50],str[256],strr[256];
    for(new i=1;i<2000;i++)//Die erste lange forschleife, sie soll prüfen ob der spieler der den schlüssel vergibt ihn überhauopt hat
    {
    format(datei,50,"car%d",i);
    if(strcmp(nummernschild,dini_Get(accFormat,datei)) == 0) { break; }

    if(strcmp("0",dini_Get(accFormat,datei)) == 0)//wenn in der dini des spielers noch kein nummernschild(schlüssel)steht dann
    {
    dini_Set(accFormat,datei,"0");//wird das nummernschild des anderen spielers gelöscht(er hat keine schlüssel mehr) dini_Set(accFormattt,datei,nummernschild);// und hier an den anderen übertragen(dieser hat nun die schlüssel)
    format(str,256,"Du hast %s die schlüssel für das Auto mit dem Kennzeichen %s gegeben.",pnameee,nummernschild);
    SendClientMessage(playerid,COLOR_GREEN,str);
    format(str,256,"Du hast von %s die schlüssel für das Auto mit dem Kennzeichen %s bekommen.",pname,nummernschild);
    SendClientMessage(pID,COLOR_GREEN,str);
    break
    }
    }
    }
    return 1;
    }


    Zu deiner Frage
    z.b. so:
    if(strcmp(nummernschild,dini_Get(accFormat,datei)) != 0)
    oder so
    if(strcmp(nummernschild,dini_Get(accFormat,datei)))

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

    Margarete Stokowski