IniGetVal liest nur %d, Wie lese ich nun Floats?

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
  • Ich habe das hier:
    stock ini_GetValue( line[] )
    {
    new valRes[128];
    valRes[0]=0;
    if ( strfind( line , "=" , true ) == -1 ) return valRes;
    strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
    return valRes;
    }


    Ich will nun aber auch Floats lesen, denn dieses hier liest nur Dezimalzahlen(%d)...
    Hoffe auf Profis *grins*

  • strget findest du in der Wiki bei strtok.
    Header:
    Float:ini_FloatValue(const line, key[]);
    Code:
    Float:ini_FloatValue(const line[], key[])
    {
    new Float:ret = 0.0;
    if(strcmp(strget(line, 0, '='), key))
    return ret;
    ret = floatstr(strget(line, 1, '='));
    return ret;
    }
    Sowas? :>

  • Ja danke :D
    Aber wie muss ich das hier nun verändern das es die FLaots ausliest?


    if( strcmp( key , "Level" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLevel] = strval( val ); }
    if( strcmp( key , "Admin" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }
    if( strcmp( key , "Geld" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }
    if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
    if( strcmp( key , "Death" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeath] = strval( val ); }
    if( strcmp( key , "Member" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pMember] = strval( val ); }
    if( strcmp( key , "Leader" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pLeader] = strval( val ); }
    if( strcmp( key , "Premium" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pPrem] = strval( val ); }


    Ich glaube das hier:
    val = ini_GetValue( Data );
    ersetzen durch:
    val = ini_FloatValue( Data );

  • if(!strcmp(key, "Level"))
    {
    PlayerInfo[playerid][pLevel] = floatstr(ini_GetValue(Data));
    }
    oder mit meiner Funktion:
    PlayerInfo[playerid][pLevel] = ini_FloatValue(Data);
    Auch wenns unsinng ist x_X
    Achja noch eine Version:
    Float:ini_FloatValue(const line[], key[], &bool:xvalue=false)
    {
    new Float:ret = 0.0;
    if(!strcmp(strget(line, 0, '='), key))
    {
    ret = floatstr(strget(line, 1, '='));
    xvalue = true;
    }
    return ret;
    }