Textdraw verändert sich InGame nicht!

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
  • Hallo,


    ich habe heute ein Filterscript erstellt und stehe nun vor den
    Problem, dass ich mein TextDraw nicht verändern kann.
    Im Script kann ich zwar die Zeilen (Größe, Schriftart usw.) verändern und alles
    mögliche, aber InGame ändert sich am Textdraw (Größe, Schriftart usw.) nichts.


    Hier mal die ganzen Zeilen, es wäre sehr nett wenn mir da jemand helfen könnte.


    #include <a_samp>
    #include <ocmd>


    new Text:GpsText[MAX_PLAYERS];
    forward GpsTimer(playerid);
    new GpsOnOff = 0;



    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" GPS-Koordinaten-Fliterscript von Syneroz!");
    print("--------------------------------------\n");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f,\n%f,\n%f", x, y, z);
    GpsText[i] = TextDrawCreate(240.0,580.0, string);
    TextDrawColor(GpsText[i],0xffffffff);
    TextDrawBackgroundColor(GpsText[i],0xFF9933FF);
    TextDrawAlignment(GpsText[i],2);
    TextDrawFont(GpsText[i],1);
    TextDrawLetterSize(GpsText[i],0.35,0.7);
    TextDrawSetOutline(GpsText[i],1);
    TextDrawSetShadow(GpsText[i],1);
    TextDrawSetProportional(GpsText[i],1);
    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }
    #endif


    public OnPlayerConnect(playerid)
    {
    SetTimerEx("GpsTimer", 1000, true, "", playerid, "");
    return 1;
    }


    ocmd:gps(playerid,params[])
    {
    if(GpsOnOff == 0)
    {
    TextDrawShowForPlayer(playerid, GpsText[playerid]);
    GpsOnOff = 1;
    }
    else if(GpsOnOff == 1)
    {
    TextDrawHideForPlayer(playerid, GpsText[playerid]);
    GpsOnOff = 0;
    }
    return 1;
    }


    public GpsTimer(playerid)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f, %f, %f", x, y, z);
    TextDrawSetString(GpsText[playerid], string);
    return 1;
    }


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }



    Gruß und vorab schon einmal vielen Dank!

  • Okay, die beiden Zeilen sind raus.


    Nun kommt folgendes "error 017: undefined symbol "playerid", das wäre dann Zeile 20.
    GetPlayerPos(playerid, x, y, z);


    Nun würde ich "playerid" durch "i" ersetzen, allerdings funktioniert dann der Befehl "/gps" nicht mehr.

  • Okay, hier mal das was ich mir mittlerweile zusammengeschustert habe,
    der Befehl "/gps" funktioniert noch immer nicht.



    #include <a_samp>
    #include <ocmd>


    new PlayerText:GpsText[MAX_PLAYERS];
    forward GpsTimer(playerid);
    new GpsOnOff[MAX_PLAYERS] = 0;



    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" GPS-Koordinaten-Fliterscript von Syneroz!");
    print("--------------------------------------\n");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(i, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f,\n%f,\n%f", x, y, z);
    GpsText[i] = CreatePlayerTextDraw(i, 240.0,580.0, string);
    PlayerTextDrawColor(i,GpsText[i],0xffffffff);
    PlayerTextDrawBackgroundColor(i,GpsText[i],0xFF9933FF);
    PlayerTextDrawAlignment(i,GpsText[i],2);
    PlayerTextDrawFont(i,GpsText[i],1);
    PlayerTextDrawLetterSize(i,GpsText[i],0.35,0.7);
    PlayerTextDrawSetOutline(i,GpsText[i],1);
    PlayerTextDrawSetShadow(i,GpsText[i],1);
    PlayerTextDrawSetProportional(i,GpsText[i],1);
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    SetTimerEx("GpsTimer", 1000, true, "", playerid, "");
    return 1;
    }


    ocmd:gps(playerid,params[])
    {
    if(GpsOnOff[playerid] == 0)
    {
    PlayerTextDrawShow(playerid, GpsText[playerid]);
    GpsOnOff[playerid] = 1;
    }
    else if(GpsOnOff[playerid] == 1)
    {
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    GpsOnOff[playerid] = 0;
    }
    return 1;
    }


    public GpsTimer(playerid)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f,\n%f,\n%f", x, y, z);
    PlayerTextDrawSetString(playerid, GpsText[playerid], string);
    return 1;
    }


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


  • Hab oben ein edit gemacht :) .
    Außerdem hau doch den Timer in den Befehl rein.onplayerconnect macht da kein sinn wenn der Spieler verbindet nachgefragt wird wo er ist obwohl er den Befehl noch nie benutzt hat.


    Mfg

    Einmal editiert, zuletzt von Agent47 ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Folgendes habe ich nun gemacht.


    ocmd:gps(playerid,params[])
    {
    if(GpsOnOff[playerid] == 0)
    {
    SendClientMessage(playerid, 0x00FF00FF, "1");
    PlayerTextDrawShow(playerid, GpsText[playerid]);
    SendClientMessage(playerid, 0x00FF00FF, "2");
    GpsOnOff[playerid] = 1;
    SendClientMessage(playerid, 0x00FF00FF, "3");
    }
    else if(GpsOnOff[playerid] == 1)
    SendClientMessage(playerid, 0xFF9933FF, "4");
    {
    SendClientMessage(playerid, 0xFF9933FF, "5");
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    GpsOnOff[playerid] = 0;
    SendClientMessage(playerid, 0xFF9933FF, "6");
    }
    return 1;
    }


    Daraufhin wurde mir im Chat die Zahlen 1-6 geschrieben.
    Dann habe ich folgendes gemacht


    ocmd:gps(playerid,params[])
    {
    if(GpsOnOff[playerid] == 0)
    {
    SendClientMessage(playerid, 0x00FF00FF, "1");
    PlayerTextDrawShow(playerid, GpsText[playerid]);
    SendClientMessage(playerid, 0x00FF00FF, "2");
    GpsOnOff[playerid] = 1;
    SendClientMessage(playerid, 0x00FF00FF, "3");
    }
    return 1;
    }


    Damit kamen dann nur noch die Zahlen 1-3, aber damit hat sich auch nichts verbessert.
    Der Timer ist auch weg aber es bringt nichts.


    Gruß

  • Warte ich fahre mein Laptop hoch :p.


    Mache gleich hier ein edit ^^


    /* Edit */


    Probiere es mal mit folgenden code: ( Bei fehlern bitte sagen )



    #include <a_samp>
    #include <ocmd>


    /* - Variablen - */
    new PlayerText:GpsText[MAX_PLAYERS];
    new GpsOnOff[MAX_PLAYERS] = 0;
    /* - Timer - */
    new Gps_Timer[MAX_PLAYERS] = 0;


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" GPS-Koordinaten-Fliterscript von Syneroz!");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    /* PlayerTextDraws werden am besten hier bei 'OnPlayerConnect(playerid)' erstellt. */
    GpsText[playerid] = CreatePlayerTextDraw(playerid, 240.0,580.0, "GPS-Koordinaten: Ungenau");
    PlayerTextDrawColor(playerid,GpsText[playerid],0xffffffff);
    PlayerTextDrawBackgroundColor(playerid,GpsText[playerid],0xFF9933FF);
    PlayerTextDrawAlignment(playerid,GpsText[playerid],2);
    PlayerTextDrawFont(playerid,GpsText[playerid],1);
    PlayerTextDrawLetterSize(playerid,GpsText[playerid],0.35,0.7);
    PlayerTextDrawSetOutline(playerid,GpsText[playerid],1);
    PlayerTextDrawSetShadow(playerid,GpsText[playerid],1);
    PlayerTextDrawSetProportional(playerid,GpsText[playerid],1);
    return 1;
    }


    ocmd:gps(playerid,params[])
    {
    if(GpsOnOff[playerid] == 0)
    {
    PlayerTextDrawShow(playerid, GpsText[playerid]);
    new string[60],Float: X, Float: Y, Float: Z;
    GetPlayerPos(playerid,X,Y,Z);
    format(string,sizeof(string),"GPS-Koordinaten: %f , %f , %f",X,Y,Z);
    PlayerTextDrawSetString(playerid,GpsText[playerid],string);
    Gps_Timer[playerid] = SetTimerEx("GpsTimer", 1000, true, "i", playerid);
    PlayerTextDrawShow(playerid,GpsText[playerid]);
    GpsOnOff[playerid] = 1;
    }
    else if(GpsOnOff[playerid] == 1)
    {
    KillTimer(Gps_Timer[playerid]);
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    GpsOnOff[playerid] = 0;
    }
    return 1;
    }


    public GpsTimer(playerid)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f,\n%f,\n%f", x, y, z);
    PlayerTextDrawSetString(playerid, GpsText[playerid], string);
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    PlayerTextDrawShow(playerid,GpsText[playerid]);
    return 1;
    }


    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    Einmal editiert, zuletzt von Agent47 ()

  • Okay, ich habe es mal reingepackt, nun ist folgender Fehler aufgetreten:
    "warning 235: public function lacks forward declaration (symbol "GpsTimer")"


    Gemeint ist folgendes:
    public GpsTimer(playerid) <---
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f,\n%f,\n%f", x, y, z);
    PlayerTextDrawSetString(playerid, GpsText[playerid], string);
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    PlayerTextDrawShow(playerid,GpsText[playerid]);
    return 1;
    }

  • Das bedeutet auf Deutsch: 'Das Public wurde nicht als forward erstellt' <- Selbst erfunden von mir ^^.


    Bevor du ein Filterscript schreibst würde ich dir Empfehlen überhaupt sich erstmal mit der Programmiersprache PAWN zu beschäftigen :) ( Oder vllt kannst du sie ja bist aber gerade nur schußelig xd )


    Zurück zum Thema:


    forward GpsTimer(playerid);


    Dieses am besten unter 'Includes' packen .


    Mfg

  • Es funktioniert leider immer noch nicht,
    ich habe es das Filterscript gerade als Gamemode ausgeführt, wobei es dann auch nicht ging.


    EDIT: Okay, ich habe es geschafft, nun klappt es!


    Anbei:
    Ich konnte Pawn mal, aber das ist auch schon was her.
    Es ist mein erstes Filterscript, zuvor habe ich immer alles in einer Scriptfile
    gepackt bis ich nach mehreren Tausend Seiten den Überblick verloren habe.


    Ist halt wie bei der Schule, wenn man raus ist verdrängt man das meiste was man gelernt hat.
    War bei mir jedenfalls so.. :D

    Einmal editiert, zuletzt von Syneroz ()


  • public GpsTimer(playerid)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten:\n%f,\n%f,\n%f", x, y, z);
    PlayerTextDrawSetString(playerid, GpsText[playerid], string);
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    PlayerTextDrawShow(playerid,GpsText[playerid]);
    return 1;
    }


    Mir ist gerade aufgefallen das ich ein Fehler gemacht hab ^^ mach mal das hier:



    public GpsTimer(playerid)
    {
    new string[64];
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    format(string, sizeof(string), "GPS-Koordinaten: %f,%f,%f", x, y, z);
    PlayerTextDrawSetString(playerid, GpsText[playerid], string);
    PlayerTextDrawHide(playerid, GpsText[playerid]);
    PlayerTextDrawShow(playerid,GpsText[playerid]);
    return 1;
    }