Er spuckt mir nichts aus :O

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 will das ich alle 0,5 Sekunden die Höhe des Spielers im Chat stehen habe.
    Der Code:
    if(strcmp(cmdtext,"/height",true)==0)
    {
    if(Height2[playerid]==0)
    {
    Height2[playerid] = 1;
    SetTimerEx("Height", 500, false,"i",playerid);
    SendClientMessage(playerid,blue,"Server: Heightmeter ON");
    return 1;
    }
    if(Height2[playerid]==1)
    {
    Height2[playerid] = 0;
    SendClientMessage(playerid,blue,"Server: Heightmeter OFF");
    return 1;
    }
    }


    public Height(playerid)
    {
    if(Height2[playerid]==1)
    {
    new Float:xHeight;
    new Float:yHeight;
    new Float:zHeight;
    new test[5];
    GetPlayerPos(playerid,Float:xHeight,Float:yHeight,Float:zHeight);
    SendClientMessage(playerid,red,test);
    format(test,sizeof(test),"Server: %d",Float:zHeight);
    SetTimerEx("Height", 500, false,"i",playerid);
    }
    if(Height2[playerid]==0)
    {
    return 1;
    }
    return 1;
    }


    Wie bekomm ich ihn dazu, des Spielers Höhe mit 2 Kommastellen auszuspucken ? :O


    Gruß Simon

  • new HeightTimer[MAX_PLAYERS];


    if(strcmp(cmdtext,"/height",true)==0)
    {
    if(Height2[playerid]==0)
    {
    Height2[playerid] = 1;
    HeightTimer[playerid] = SetTimerEx("Height", 500, false,"i",playerid);
    SendClientMessage(playerid,blue,"Server: Heightmeter ON");
    }
    else if(Height2[playerid]==1)
    {
    Height2[playerid] = 0;
    KillTimer(HeightTimer[playerid]);
    SendClientMessage(playerid,blue,"Server: Heightmeter OFF");
    }
    return 1;
    }


    forward Height(playerid);
    public Height(playerid)
    {
    new Float:xHeight,Float:yHeight,Float:zHeight,test[65];
    GetPlayerPos(playerid,Float:xHeight,Float:yHeight,Float:zHeight);
    SendClientMessage(playerid,red,test);
    format(test,sizeof(test),"Server: %.2f",Float:zHeight);
    return 1;
    }


    //Edit:


    %f.2 -> %.2f

  • Ihr lasst die Message senden bevor sie formatiert wurde!
    Klar das das nicht klappt.
    Dann war die Größe des Strings viel zu klein, was schon angesprochen wurde.
    Dann musst du wenn du den High-Test beendest auch den Timer killen, wurde auch bereits im beitrag vor mir eingefügt.


    Dann musst du noch den repeater im SetTimer auf true setzen, damit sich der Timer immer wiederholt.
    Wenn man etwas nachguckt und den Code Zeile für Zeile durchgeht oder auch mal prints setzt um zu schauen an welcher stelle er welche Werte hat und ab welcher Zeile ein Fehler ist, würde das schon von alleine auffallen.


    Ein weiterer Tipp: Benutz doch mal die verschiedenen Typen für Variablen. Hier kannst du doch ganz einfach ein Boolean verwenden da eh nur "Ja" oder "Nein" (Hier: 1 oder 0) also True OR False gespeichert werden.


    Hier der komplette Code damit es auch wirklich klappt:


    new HeightTimer[MAX_PLAYERS];
    new bool:Height2[MAX_PLAYERS];


    if(strcmp(cmdtext,"/height",true)==0)
    {
    if(!Height2[playerid])
    {
    Height2[playerid] = true;
    HeightTimer[playerid] = SetTimerEx("Height", 500, true,"i",playerid);
    SendClientMessage(playerid,blue,"Server: Heightmeter ON");
    }
    else
    {
    Height2[playerid] = false;
    KillTimer1(HeightTimer[playerid]);
    SendClientMessage(playerid,blue,"Server: Heightmeter OFF");
    }
    return 1;
    }


    forward Height(playerid);
    public Height(playerid)
    {
    new Float:xHeight,Float:yHeight,Float:zHeight,test[20];
    GetPlayerPos(playerid,Float:xHeight,Float:yHeight,Float:zHeight);
    format(test,sizeof(test),"Server: %0.2f",Float:zHeight);
    SendClientMessage(playerid,red,test);
    return 1;
    }