Score auf dem Bildschirm anzeigen lassen

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
  • Beitrag von The Sensei ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Habe jetzt was gebastelt...
    new Text:name = TextDrawCreate(100.0, 100.0, "Name: %s",Name(playerid));
    TextDrawShowForPlayer(playerid, name);
    new Text:Score = TextDrawCreate(100.0, 100.0, "Score: %s");
    TextDrawShowForPlayer(playerid, Score);
    new Text:Kills = TextDrawCreate(100.0, 100.0, "Kills/Tode: %s");
    TextDrawShowForPlayer(playerid, Kills);


    Brauche nurnoch ein paar Erklärungen.
    Was bedeuten die Zahlen bei TextDrawCreate???

  • Das Beispiel was ich gepostet habe (der Link zum Tutorial) war leider nicht so passend,
    habe da eben nicht dran gedacht!
    So werden die Textdraws für ALLE Personen angezeigt.
    Du willst sie aber für einzelne Personen ändern können (Es haben ja nicht alle den gleichen Namen, den gleichen Score und zudem noch die gleiche KD).
    Also brauchst du folgende Funktionen:
    http://wiki.sa-mp.com/wiki/Textdraw#Player-textdraws


    Die Zahlen sind die X und Y Koordinaten!
    Schau dir den Wiki-Link an.
    Hier sieht man das mit den Koordinaten:
    http://wiki.sa-mp.com/wiki/Image:Textdraw_map.png

  • ok
    Das hat mir geholfen habe es schon herrausbekommen.
    Wie kann ich aus dieser TextDraw was anzeigen lassen wie Name???
    Habe das so:
    public OnPlayerConnect(playerid)
    {
    if(GetPVarInt(playerid,"loggedin"))SpielerSpeichern(playerid);
    new Text:name = TextDrawCreate(30.0, 300.0, "Name: %s",Name(playerid));
    TextDrawShowForPlayer(playerid, name);
    new Text:Score = TextDrawCreate(30.0, 310.0, "Score: %s",GetPVarInt(playerid,"Respektpunkte"));
    TextDrawShowForPlayer(playerid, Score);
    new Text:Kills = TextDrawCreate(30.0, 320.0, "Kills/Tode: %s/%s",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"));
    TextDrawShowForPlayer(playerid, Kills);
    return 1;
    }


    Aber es kommen Warnings...

    Code
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(160) : warning 202: number of arguments does not match definition
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(162) : warning 202: number of arguments does not match definition
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(164) : warning 202: number of arguments does not match definition
    C:\Users\Patrick\Desktop\IRP-City\gamemodes\Deathmatch.pwn(164) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    4 Warnings.
  • "number of arguments does not match definition"
    Die Funktion erwartet weniger/mehr Argumente als du angegeben hast!
    new Text:name = TextDrawCreate(30.0, 300.0, "Name: %s",Name(playerid));
    Ein "Argument" zu viel!
    Man muss das ganze ERST mit "format" formatieren!


    new string[MAX_PLAYER_NAME+7];
    format(string,"Name: %s",Name(playerid));
    new Text:name = TextDrawCreate(30.0,300,0, string);


    Zu dem MAX_PLAYER_NAME+7:
    Das ist die maximale Größe von dem String.
    MAX_PLAYER_NAME ist 24.
    Also könntest du gleich hinschreiben 31.
    "Name: " sind zwar eigentlich nur 6 Zeichen (OHNE Anführungszeichen und MIT Leerzeichen), aber der Null-Terminator muss mit eingerechnet werden (http://wiki.sa-mp.com/wiki/Err…nation_array_is_too_small).
    Darum immer +1, man muss aber nicht jedes Mal so stark rechnen, man kann es groß überschlagen.


    MfG Kevin


    ps. Du solltest immernoch die Player-Textdraws nehmen ^^
    http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw

  • Beitrag von The Sensei ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Habe einen Shop. Dieser hat punkte auf der Ganzen Map.
    Er soll den Dialog nur anzeigen wenn man in der nähe ist von den Punkten.
    Aber wie mache ich das mit den vielen Koordinaten oder ist das so richtig?.


    ocmd:shop(playerid)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5,208.9612,1809.1342,21.8672 && -1422.9803,501.1250,3.0391 && -2518.1814,1213.3663,37.4283 && -1481.4482,2642.8135,58.7879 && -2446.1567,505.1133,30.0910 && 2591.0640,2795.3386,10.9844 && 1917.9510,966.5826,10.8203))return SendClientMessage(playerid,ROT,"Du bist nicht an den Shops");
    ShowPlayerDialog(playerid,DIALOG_BUY,DIALOG_STYLE_LIST,"Kaufen","Rüstung(Preis)\nLeben(Preis)","Kaufen","Abbrechen");
    return 1;
    }


    Warnings...

  • Pack das bitte beim nächsten Mal in einen anderen Thread.
    if(!IsPlayerInRangeOfPoint(playerid,5,208.9612,1809.1342,21.8672) && !IsPlayerInRangeOfPoint(playerid,5,-1422.9803,501.1250,3.0391) && !IsPlayerInRange ...

  • Hätte ich einen Neuen Thread aufgemacht hätten mich bestimmt welche angeschnautzt.
    Habe dennoch einen Fehler.


    ocmd:shop(playerid)
    {
    if(!IsPlayerInRangeOfPoint(playerid,5,208.9612,1809.1342,21.8672)); && if(!IsPlayerInRangeOfPoint(playerid,5,-1422.9803,501.1250,3.0391)); && if(!IsPlayerInRangeOfPoint(playerid,5,-2518.1814,1213.3663,37.4283)); && if(!IsPlayerinRangeOfPoint(playerid,5,-1481.4482,2642.8135,58.7879)); && if(!IsPlayerInRangeOfPoint(playerid,5,-2446.1567,505.1133,30.0910)); && if(!IsPlayerinRangeOfPoint(playerid,5,2591.0640,2795.3386,10.9844));
    && if(!IsPlayerInRangeOfPoint(playerid,5,1917.9510,966.5826,10.8203))return SendClientMessage(playerid,ROT,"Du bist nicht an den Shops");
    ShowPlayerDialog(playerid,DIALOG_BUY,DIALOG_STYLE_LIST,"Kaufen","Rüstung(Preis)\nLeben(Preis)","Kaufen","Abbrechen");
    return 1;
    }
    Was ist falsch ich habe diese Fehlercodes...