Dcmd und sscanf Problem

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
  • moin ich habe nin Problem mit sscanf bekomme ne warnung ausgeben


    Code
    sscanf warning: Strings without a length are deprecated, please add a destination size.


    der Code
    dcmd_teleport(playerid,params[])
    {
    new Area_tele[64];
    if(PlayerInfo[playerid][pIsLogin] == false) return 1;
    if(PlayerInfo[playerid][AdminLevel] > 1)
    if(sscanf(params, "s",Area_tele)) {
    return SendClientMessage(playerid,COLOR_WHITE,"USAGE: /teleport Locazion");
    }
    {
    new Float:pos_x_tele,Float:pos_y_tele,Float:pos_z_tele,Float:pos_r_tele;
    new AdminLevel_tele;
    format(teleportcoords,sizeof(teleportcoords),"SELECT * FROM `teleport_coords` WHERE `AreaName`= '%s' LIMIT 1;",Area_tele);
    mysql_query(teleportcoords);
    mysql_store_result();
    if(mysql_num_rows() == 1)
    {
    mysql_fetch_field("pos_x",teleportcoords); pos_x_tele = floatstr(teleportcoords);
    mysql_fetch_field("pos_y",teleportcoords); pos_y_tele = floatstr(teleportcoords);
    mysql_fetch_field("pos_z",teleportcoords); pos_z_tele = floatstr(teleportcoords);
    mysql_fetch_field("AdminLevel",teleportcoords); AdminLevel_tele = strval(teleportcoords);
    }
    if(AdminLevel_tele < PlayerInfo[playerid][AdminLevel])
    {
    SetPlayerPos(playerid,pos_x_tele,pos_y_tele,pos_z_tele);
    return 1;
    }
    if(mysql_num_rows() == 0)
    {
    SendClientMessage(playerid,COLOR_WHITE,"teleport Areaname not found");
    }
    mysql_free_result();
    return 1;
    }
    }


    ich habe mich schon Umgesehen etc auch in den tuts hier gegugt aber vll finded jmd ja mein Fehler
    oder ich mache was grundlegendes Falsch
    das Command selber funzt aber das Probs ist der server Crasht gerne ab und an bei dem Command auch Bei Ähnlichen Commands ohne mysql


    Were für Hilfe dankbar :)

  • Das hättest du sogar Googlen können,und du hättest den Fehler erklärt bekommen.

    Zitat

    ich habe mich schon Umgesehen etc auch in den tuts hier gegugt aber vll finded jmd ja mein Fehler


    Du benutzt aber das Plugin,falls du das Tutorial von mir zur PAWN Code Version von sscanf gelesen hast,ist das klar das du den Fehler nicht findest.Die Plugin - Version unterscheided sich stark von der PAWN - Code Version.

    Zitat

    The above code should be:
    new
    str[32],
    val;
    sscanf("hello\\ there 27", "s[32]i", str, val);


    As you can see - the format specifier now contains the length of the target string, ensuring that you can never have your strings overflow and cause problems.


    Heisst also, du musst bei Strings die größe mit angeben.In deinem Fall ist "Area_tele" 64 Zellen groß,daher
    if(sscanf(params, "s[64]",Area_tele)) {

    Das ist eine Neuheit in sscanf2.


    Gibt seit kurzem auch ein sscanf 2 ( sscanf 2 = Plugin Version ) Tutorial hier im Forum.
    http://forum.sa-mp.de/wbb/san-…torials/50342-sscanf-2-0/