Wantedsystem 3DText

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
  • Also, ich hab ein kleines Problem, das Wantedsystem funktioniert an sich ziemlich gut, aber
    ich komme nicht mit den 3D Texten zurecht. Es wird zwar ein 3D Text erstellt, aber dieser bleibt immer auf 1.
    Also auch wenn der Spieler 2 Wanteds hat, gibt der 3D Text 1 Wanted aus.
    Hier mal der Befehl zum vergeben der Wanteds:
    COMMAND:wan(playerid,params[])
    {
    new pID, text[200];
    if(sscanf(params, "us",pID,text))return SendClientMessage(playerid,0xC8C8C8FF,"/wan(ted) [ID/Name] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if(pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dir nicht selber Wanteds geben!");
    if(pInfo[playerid][Fraktion] != 4 && pInfo[playerid][Fraktion] != 9)return SendClientMessage(playerid,0xC8C8C8FF,"Du bist kein Cop/FBI!");
    if(GetPVarInt(playerid, "dienst") == 0) return SendClientMessage(playerid,0xC8C8C8FF,"Du bist nicht im Dienst!");
    else
    {
    new str[200] ,str2[200],str3[128],str4[128];
    new Wantedsterne=GetPlayerWantedLevel(pID);
    SetPlayerWantedLevel(pID,Wantedsterne+1);
    pInfo[pID][Wanteds]++;
    format(str,sizeof(str),"%s hat dir ein Wanted gegeben [ Grund: %s ]",SpielerName[playerid],text);
    format(str2,sizeof(str2),"Du hast %s ein Wanted gegeben [ Grund: %s ]",SpielerName[pID] ,text);
    format(str3,sizeof(str3),"Aktuelles Wantedlevel: %i",pInfo[pID][Wanteds]);
    format(str4,sizeof(str4),"Wantedlevel : %i",pInfo[pID][Wanteds]);
    SendClientMessage(pID,0xFF6347AA, str);
    SendClientMessage(playerid,0xFFE600FF,str2);
    SendClientMessage(pID,0xFFFA00FF,str3);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    if(pInfo[playerid][Fraktion] == 4 || pInfo[playerid][Fraktion] == 9)
    {
    WantedLabel[pID] = Create3DTextLabel(str4,0xFFE600FF,30.0,40.0,50.0,40.0,0);
    }
    }
    Attach3DTextLabelToPlayer(WantedLabel[pID], pID, 0.0, 0.0, 0.7);
    }
    return 1;
    }
    Und OnPlayerDeath
    if(pInfo[killerid][Fraktion] != 4 && pInfo[killerid][Fraktion] != 9)
    {
    new str3[128],str4[128],
    Wantedsterne = GetPlayerWantedLevel(killerid);
    SetPlayerWantedLevel(killerid,Wantedsterne+1);
    pInfo[killerid][Wanteds]++;
    format(str3,sizeof(str3),"Aktuelles Wantedlevel: %i",pInfo[killerid][Wanteds]);
    format(str4,sizeof(str4),"Wantedlevel : %i",pInfo[killerid][Wanteds]);
    SendClientMessage(killerid,0xFFFA00FF,str3);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && pInfo[playerid][Fraktion] == 4 || pInfo[playerid][Fraktion] == 9)
    {
    WantedLabel[killerid] = Create3DTextLabel(str4,0xFFE600FF,30.0,40.0,50.0,40.0,0);
    }
    }
    }
    Attach3DTextLabelToPlayer(WantedLabel[killerid], killerid, 0.0, 0.0, 0.7);
    return 1;
    }


    Ich hab versucht, den Text updaten zu lassen, aber dies funktionierte nicht, da kam ein type mismatch error.
    Update3DTextLabelText(WantedLabel,0xFFE600FF,str4);


    Also str4 gibt das aktuelle Wantedlevel aus, was auch an sich funktioniert, ist ja das selbe Prinzip wie bei str3.
    Und diese Zahl aus dem String soll dann als Text ausgegeben werden. Das geht eben nicht.


    Und die 3D Texte sollten eig. nur für Fraktion 4 u. 9 erstellt werden, das geht aber leider nicht, der 3D Text erscheint für alle.


    Hoffe, mir kann jmd. helfen.


    mfG
    Walker


    //Muss ich evtl. i als Cop definieren, also if([i][Fraktion] == 4)
    Aber wie bekomm ich dann noch das Problem mit den falschen Wantedangaben hin?

  • Wie wärs mit
    Update3DTextLabelText(WantedLabel[pID],0xFFE600FF,str4);
    ?

  • Das ist schon richtig, ich möchte es ja nur für einen bestimmten Spieler löschen.
    Trotzdem danke. Es geht mir nur um den Inhalt der Klammer, da ich dort den Error bekomme.
    //
    Ich benötige nur das, was in der Klammer steht, also
    DeletePlayer3DTextLabel();
    Die bisherigen Versuche ergaben alle einen tag mismatch.