[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
  • format(str, sizeof(str), "{%s}%s{FFFFFF}: %s", HexToStr(GetPlayerColor(playerid)), name, text);


    Du kannst das auch einfach shiften und so machen:


    format(str, sizeof(str),"{%06x}%s{FFFFFF}: %s",GetPlayerColor(playerid) >>> 8,name,text);


    Dann brauchst du diese Funktion nicht :)


    wenn du hier 10 eingibst erhältst du als rückgabe wert 10.
    Daher kannst du das mit dem Operator nicht gleichsetzen


    Tatsache :D Gar nicht darauf geachtet ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Und das mache ich wie? Schließlich habe ich den Dialog bereits am Ende plaziert und ob Admins online oder offline sind spielt keine Rolle. Habe ja bei 0 Admins nen komplett anderen Dialog verwendet?


    Schau mal hier nach, dort ist es ein wenig erklärt ;)
    MAX_PLAYERS - Dialog


    Dort dann iItem abfragen um zu gucken ob überhaupt ein Admin online ist.


  • dcmd_admins(playerid,params[])
    {
    #pragma unused params
    new string[(MAX_PLAYER_NAME + 40) * 10];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if (IsPlayerConnected(i))continue;
    if(AccInfo[i][Level] >= 1 && AccInfo[i][Hide] == 0)
    {
    format(string, sizeof(string), "%sAdmin %s (ID: %i)- Level %d - %s\n",string,PlayerName2(i),i, AccInfo[i][Level],((AccInfo[i][OnDuty])?("Available"):("Busy")));
    }
    }
    if (!string[0])return ShowPlayerDialog(playerid,NO_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins","\n\n\n\nThere are no admins online.","Close","");
    return ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX,"Online Admins",string,"Close","");
    }


    Zum einen solltest du ShowPlayerDialog ausserhalb der schleife lassen und du musst natürlich den formatierten string bei einem treffer auch
    beim nächsten treffer noch parat haben entweder nutzt ein extra string wo man den formatierten via strcat anhängt oder formatiert in mit

  • Jeffry:


    Warum geht das nicht?


    Spoiler anzeigen

    public OnPlayerText(playerid, text[])
    {
    if(realchat)
    {
    new str[144],name[MAX_PLAYER_NAME],pos = strfind(name, "."),pos1 = strfind(name, "_");
    GetPlayerName(playerid, name, sizeof(name));
    if(pos != -1) name[pos] = ' ';
    else if(pos1 != -1) name[pos1] = ' ';
    format(str, sizeof(str),"%s sagt: %s",name,text);
    ProxDetector(20.0, playerid, str,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    return 0;
    }
    return 1;
    }

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Dieses Problem besteht leider immer noch -.- . Er soll das pRegDatum "Nicht" updaten. Aber er tut es trotzdem. Und bei pVersuche soll eigentlich 0 stehen, aber dort steht das Jahr und der Monat was ich nicht kapieren kann :pinch: .

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Das ding ist, wenn ich es aus dem Update Befehl raus nehme, wird er erst recht nicht Gespeichert :pinch:

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Wie sieht es damit aus?
    mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pRegDatum` = '%s', `pVersuche` = '%d', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,Spieler[playerid][pRegDatum],Spieler[playerid][pWrongPass], Spieler[playerid][pLeben],Spieler[playerid][pName]);

  • Jeffry:


    Warum geht das nicht?



    public OnPlayerText(playerid, text[])
    {
    if(realchat)
    {
    new str[144],name[MAX_PLAYER_NAME],pos = strfind(name, "."),pos1 = strfind(name, "_");
    GetPlayerName(playerid, name, sizeof(name));
    if(pos != -1) name[pos] = ' ';
    else if(pos1 != -1) name[pos1] = ' ';
    format(str, sizeof(str),"%s sagt: %s",name,text);
    ProxDetector(20.0, playerid, str,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    return 0;
    }
    return 1;
    }

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);


    mysql_format(DBHandle, query, sizeof(query),"UPDATE `Accounts` SET `pAlter` = '%d', `pBargeld` = '%d', `pKontoguthaben` = '%d', `pLastLogin` = '%s', `pLeben` = '%.1f' WHERE `pName` = '%e'",Spieler[playerid][pAlter],Spieler[playerid][pBargeld],Spieler[playerid][pKontoguthaben],query,Spieler[playerid][pLeben],Spieler[playerid][pName]);


    mysql_tquery(DBHandle, query, "","");


    Eddy
    Ich meinte pRegData = %s und den inhalt welchen du an diesen platzhalter übergibst entfernen.


    geschrieben am handy


    //edit
    Fabi.StaR
    was geht daran nicht wird dir das falsch ausgegeben
    Der Name oder der gesamte string

  • Ich meinte pRegData = %s und den inhalt welchen du an diesen platzhalter übergibst entfernen.


    Ja, das ist es ja das klappt nicht. Es wird nix in die Datenbank geschrieben wenn ich das entferne :wacko: :pinch:

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Warum geht das nicht?


    public OnPlayerText(playerid, text[])
    {
    if(realchat)
    {
    new str[144],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new pos = strfind(name, "."), pos1 = strfind(name, "_");
    if(pos != -1) name[pos] = ' ';
    else if(pos1 != -1) name[pos1] = ' ';
    format(str, sizeof(str),"%s sagt: %s",name,text);
    ProxDetector(20.0, playerid, str,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
    return 0;
    }
    return 1;
    }


    Du hast strfind vor GetPlayerName benutzt.

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