[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
  • ocmd:admins(playerid,params[])
    {
    new name[MAX_PLAYER_NAME];
    for(new i=0;i<GetMaxPlayers();i++)
    {
    new string[128];
    GetPlayerName(i,name,sizeof(name));
    switch(IsPlayerAnAdmin(i))
    {
    case 0:{ break; }
    case 1:{ format(string,sizeof(string),"Testsupporter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 2:{ format(string,sizeof(string),"Supporter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 3:{ format(string,sizeof(string),"ProSUP: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 4:{ format(string,sizeof(string),"Moderator: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 5:{ format(string,sizeof(string),"SupMOD: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 6:{ format(string,sizeof(string),"ProMOD: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 7:{ format(string,sizeof(string),"High Moderator: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 8:{ format(string,sizeof(string),"Admin: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 9:{ format(string,sizeof(string),"ProADM: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 10:{ format(string,sizeof(string),"High Admin: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 11:{ format(string,sizeof(string),"Stellv. Projektleiter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 12:{ format(string,sizeof(string),"Projektleiter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    }
    }
    }


    So könntest du das machen.. könntest das natürlich auch mit einem Stock und weniger Zeilen schreiben .. Aber jetzt gib mir mal bitte die Error Zeilen ^^

  • ocmd:admins(playerid,params[])
    {
    new name[MAX_PLAYER_NAME];
    for(new i=0;i<GetMaxPlayers();i++)
    {
    new string[128];
    GetPlayerName(i,name,sizeof(name));
    switch(IsPlayerAnAdmin(i))
    {
    case 0:{ break; }
    case 1:{ format(string,sizeof(string),"Testsupporter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 2:{ format(string,sizeof(string),"Supporter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 3:{ format(string,sizeof(string),"ProSUP: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 4:{ format(string,sizeof(string),"Moderator: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 5:{ format(string,sizeof(string),"SupMOD: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 6:{ format(string,sizeof(string),"ProMOD: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 7:{ format(string,sizeof(string),"High Moderator: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 8:{ format(string,sizeof(string),"Admin: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 9:{ format(string,sizeof(string),"ProADM: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 10:{ format(string,sizeof(string),"High Admin: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 11:{ format(string,sizeof(string),"Stellv. Projektleiter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    case 12:{ format(string,sizeof(string),"Projektleiter: %s",name);SendClientMessage(playerid,COLOR_GRAD1,string); }
    }
    }
    }
    C:\Dokumente und Einstellungen\Administrator\Desktop\Mods\samp03x_svr_R2_win32\gamemodes\Dubbi.pwn(567) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.



    Zeile 567: switch(IsPlayerAnAdmin(i))

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • Mal als kleinen Verbesserungsvorschlag dieser Code:


    ocmd:admins(playerid,params[]) {
    new name[MAX_PLAYER_NAME],string[24 + MAX_PLAYER_NAME];
    for(new i,l=GetMaxPlayers();i<l;i++) {
    if(!IsPlayerConnected(i)) continue;
    GetPlayerName(i,name,MAX_PLAYER_NAME);
    switch(GetPVarInt(i,"Adminlevel")) { //evtl anpassen
    case 0: continue;
    case 1: format(string,sizeof(string),"Testsupporter: %s",name);
    case 2: format(string,sizeof(string),"Supporter: %s",name);
    case 3: format(string,sizeof(string),"ProSUP: %s",name);
    case 4: format(string,sizeof(string),"Moderator: %s",name);
    case 5: format(string,sizeof(string),"SupMOD: %s",name);
    case 6: format(string,sizeof(string),"ProMOD: %s",name);
    case 7: format(string,sizeof(string),"High Moderator: %s",name);
    case 8: format(string,sizeof(string),"Admin: %s",name);
    case 9: format(string,sizeof(string),"ProADM: %s",name);
    case 10: format(string,sizeof(string),"High Admin: %s",name);
    case 11: format(string,sizeof(string),"Stellv. Projektleiter: %s",name);
    case 12: format(string,sizeof(string),"Projektleiter: %s",name);
    }
    SendClientMessage(playerid,COLOR_GRAD1,string);
    }
    return 1;
    }


    PS: Achtet besonders auf die Schleife und die Deklaration der Variablen ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Danke, so habe ich das Ganze noch gar nicht betrachtet. :)
    Funktioniert.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.


  • Um das ganze aber nicht jedes mal so zu nutzen kann man sich dafür auch einen Stock nutzen ^^


    Bsp:
    stock Adminrang(playerid)
    {
    new rang[54];
    switch(SpielerInfo[playerid][Adminlevel])
    {
    case 0:{rang="-/-";}
    case 1:{rang="Test Supporter";}
    case 2:{rang="Supporter";}
    case 3:{rang="Moderator";}
    case 4:{rang="Techniker";}
    case 5:{rang="Administrator";}
    case 6:{rang="Server Manager";}
    case 7:{rang="Serverleitung";}
    default:{rang="ERROR";}
    }
    return rang;
    }


    Ich weiß mit einem format wäre es besser ^^

  • Soweit komme ich damit voran.
    Nun wird es soweit gut ausgegeben, dennoch ein Fehler:


    stock Adminrang(playerid)
    {
    new rang[54];
    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 0:{rang="0";}
    case 1:{rang="Testsupporter";}
    case 2:{rang="Supporter";}
    case 3:{rang="ProSUP";}
    case 4:{rang="Moderator";}
    case 5:{rang="SupMOD";}
    case 6:{rang="ProMOD";}
    case 7:{rang="High Moderator";}
    case 8:{rang="Admin";}
    case 9:{rang="ProADM";}
    case 10:{rang="High Admin";}
    case 11:{rang="Stellv. Projektleiter";}
    case 12:{rang="Projektleiter";}
    }
    return rang;
    }


    format(string2,sizeof(string),"Du hast %s zu einem %s befördert.",name,Adminrang(pID));


    Im Spiel wird mir nun angezeigt, dass der Spieler zu Rang 0 befördert wird, auch bei Eingabe der Zahlen 1-12.


    format(string,sizeof(string),"Du wurdest von %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(pID,rot,string);
    Zeigt es erst gar nicht an.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.


  • Kontext fehlt.


    Höchstwahrscheinlich wird die Formatierung vor der Setzung des Adminrangs ausgeführt, was das bedeutet kannst du dir jetzt an 11 Fingern abzählen.


    Übrigens:
    format(string2,sizeof(string)


    Das würde ich so nicht lassen, es hat einen Grund warum die Größe des zu formatierenden Strings übergeben werden muss und du übergibst hier die Größe von string um string2 zu formatieren. Ist string2 nun größer als string, wirst du ein Problem haben wenn die volle Länge noch beansprucht werden soll.


  • ocmd:setadmin(playerid,params[])
    {
    if(IsPlayerAnAdmin(playerid,12))
    {
    new pID, rang, string[128], string2[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(sscanf(params,"ui",pID,rang)) return SendClientMessage(playerid,COLOR_GREY,"Funktion: /setadmin [PlayerID] [AdminLevel]");
    if(rang <1 || rang > 12) return SendClientMessage(playerid,rot,"Ränge sind bis zu einer Stufe von 12 gültig.");
    SetPVarInt(pID,"Adminlevel",rang);
    format(string,sizeof(string),"Du wurdest von %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(pID,rot,string);
    format(string2,sizeof(string2),"Du hast %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(playerid,rot,string2);
    SpielerSpeichern(pID);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist nicht berechtigt.");
    }
    return 1;
    }


    Ich bin mir mit der Formatierung nicht ganz sicher. :(

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • String 2 brauchst du nicht wenn du ihm die message schon einmal ausgegeben hast ;)


    Ich möchte ja ihm und mir eine Message geben.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.


  • Kannst du doch.. dafür reicht ein string.. du formatierst ihn danach ja nochmal bsp..


    format (string, sizeof (string),"text", parameter);
    SendClientMessage (..);
    format (string, sizeof (string),"text", parameter);
    SendClientMessage (..);


    Wenn ich es so wie du mache, dann zeigt es mir gar nichts an. 8|

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • format(string,sizeof(string),"Du wurdest von %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(pID,rot,string);
    format(string,sizeof(string),"Du hast %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(playerid,rot,string);


    So wolltest du es haben ..


    //E:
    Nichts desto trotz, habe ich es dennoch so gemacht und es funktioniert:


    format(string,sizeof(string),"Du wurdest von %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(pID,rot,string);
    format(string2,sizeof(string2),"Du hast %s zu einem %s befördert.",name,Adminrang(pID));
    SendClientMessage(playerid,rot,string2);



    //E2: Man sollte schon seine ID statt die eines 0's angeben.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.


  • Wenn du die Parameter richtig angibst, funktioniert mein Code genauso und entlastet den Server ein wenig 8)

  • Warum kommen in dieser Zeile:
    format(string,sizeof(string), "Du hast auf die Farbe %s getippt, doch die richtige Farbe war %s. Dein Einsatz hat sich in Luft aufgelöst.", farbe, ( dice == 1 ) ? ("Rot") : ("Schwarz") : ("Gelb") );



    Diese Fehler:
    C:\Users\hsj\Desktop\neu.pwn(55845) : error 029: invalid expression, assumed zero
    C:\Users\hsj\Desktop\neu.pwn(55845) : warning 215: expression has no effect
    C:\Users\hsj\Desktop\neu.pwn(55845) : error 001: expected token: ";", but found ")"
    C:\Users\hsj\Desktop\neu.pwn(55845) : error 029: invalid expression, assumed zero
    C:\Users\hsj\Desktop\neu.pwn(55845) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


  • Schau dir das nochmal an:
    http://wiki.sa-mp.com/wiki/Control_Structures#.3F:


    Das "Gelb" passt da nicht!
    Wird aber beim Format da drin wohl nicht funktionieren.
    Ich denke das musst du über dem Format gesondert machen.