3dTextLabel string einbauen?

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
  • Kann ich in diesem Befehl
    ocmd:aduty(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    new Text3D:label = Create3DTextLabel("Server Admin", 0xB4B4B4FF, 30.0, 40.0, 50.0, 40.0, 0);
    Attach3DTextLabelToPlayer(label, playerid, 0.0, 0.0, 0.3);
    return 1;
    }


    Ein string einbauen das dann über dem Spieler Steht mit ALevel Rank 1 : "Supporter im Dienst" Rank 2: Moderator im Dienst"
    Wenn ja wie?
    Und dem Spieler einen Skin setzen und beim erneuten Befehleingabe /aduty alles löschen und den vorherigen Skin wieder geben.
    Danke im voraus :)

  • ocmd:aduty(playerid,params[]) {
    new stringlabel[512];
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    if(SpielerInfo[playeri][pAdminlevel >= 1)
    {
    format(string,sizeof(string),"Supporter im Dienst");
    }
    if(SpielerInfo[playeri][pAdminlevel >= 2)
    {
    format(string,sizeof(string),"Moderator im Dienst");
    }
    setlabel[playerid]=Create3DTextLabel(stringlabel, ROT, 30.0, 40.0, 50.0, 40.0, 0, 0);
    return 1;
    }


    So würde ich das machen :)


    Ist eventuell bisschen falsch eingerückt ^^

  • Da es mehrere Ränge gibt würde ich Switch und case benutzen.
    Alles wofür mehr als 3 Abfragen zu einer Variabel führen sollte mit Switch und Case gemacht werden.



    switch(SpielerInfo[playerid][pAdminLevel])
    {
    case 1,2: //Rank 1 - 2
    case 3..5: //Rank 3 bis 5
    case 6: //Rank 6
    }

    RFT


  • Und wie mache ich das dann mit dem /aduty Befehl?


  • ocmd:aduty(playerid,params[]) {
    new stringlabel[128]; //WTF 512 ist bei weitem zuviel
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    new tN[32];
    switch(SpielerInfo[playerid][pAdminlevel])
    {
    case 1,2:tn = "Moderator";
    case 3..5:tn = "Administrator";
    case 6:tn = "Hauptadministrator";
    }
    format(stringlabel, sizeof(stringlabel), "%s ist im Dienst.", tn);
    setlabel[playerid]=Create3DTextLabel(stringlabel, ROT, 30.0, 40.0, 50.0, 40.0, 0, 0);
    Attach3DTextLabelToPlayer(setlabel[playerid], playerid, 0.0, 0.0, 0.7);
    return 1;
    }


    Musst halt noch die Ränge abändern.

    RFT

  • ocmd:aduty(playerid,params[]) {
    new stringlabel[128]; //WTF 512 ist bei weitem zuviel
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    new tn[32];
    switch(SpielerInfo[playerid][pAdminlevel])
    {
    case 1:tn = "Probe Supporter";
    case 2:tn = "Supporter";
    case 3:tn = "Moderator";
    case 4:tn = "Adminstrator";
    case 5:tn = "Manager";
    case 6:tn = "Manager";
    }
    format(stringlabel, sizeof(stringlabel), "%s ist im Dienst.", tn);
    setlabel[playerid] = Create3DTextLabel(stringlabel, ROT, 30.0, 40.0, 50.0, 40.0, 0, 0);
    Attach3DTextLabelToPlayer(setlabel[playerid], playerid, 0.0, 0.0, 0.7);
    return 1;
    }



    C:\Users\kevin\Desktop\server\gamemodes\self.pwn(634) : error 017: undefined symbol "setlabel"
    C:\Users\kevin\Desktop\server\gamemodes\self.pwn(634) : warning 215: expression has no effect
    C:\Users\kevin\Desktop\server\gamemodes\self.pwn(634) : error 001: expected token: ";", but found "]"
    C:\Users\kevin\Desktop\server\gamemodes\self.pwn(634) : error 029: invalid expression, assumed zero
    C:\Users\kevin\Desktop\server\gamemodes\self.pwn(634) : 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.

  • Ganz einfach, einfach ne Abfrage dazu erstellen:



    ocmd:aduty(playerid,params[]) {
    new stringlabel[128]; //WTF 512 ist bei weitem zuviel
    if(SpielerInfo[playerid][pAdminlevel] < 1) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 1");
    if(!GetPVarInt(playerid, "aDuty"))
    {
    new tn[32];
    switch(SpielerInfo[playerid][pAdminlevel])
    {
    case 1:tn = "Probe Supporter";
    case 2:tn = "Supporter";
    case 3:tn = "Moderator";
    case 4:tn = "Adminstrator";
    case 5:tn = "Manager";
    case 6:tn = "Manager";
    }
    format(stringlabel, sizeof(stringlabel), "%s ist im Dienst.", tn);
    setlabel[playerid] = Create3DTextLabel(stringlabel, ROT, 30.0, 40.0, 50.0, 40.0, 0, 0);
    Attach3DTextLabelToPlayer(setlabel[playerid], playerid, 0.0, 0.0, 0.7);
    SetPVarInt(playerid, "aDuty", 1);
    }
    else
    {
    DeletePVar(playerid, "aDuty");
    Delete3DTextLabel(setlabel[playerid]);
    }
    return 1;
    }

    RFT

  • Funktioniert soweit alles,bis auf das ich ,wenn der jenige im Aduty geht einen Skin setze:
    SetPlayerSkin(playerid,278);


    Wie kann ich dann wenn er wieder raus geht,den alten Skin setzen der er vorher hatte?
    mysql_SetInt(Tabelle_Spieler,"Skin",SpielerInfo[playerid][pSkin],"Name",GetName(playerid));