Beiträge von Jeffry

    Da fehlt doch alles. Schau dir doch mal meinen Code und deinen Code an. Der Unterschied ist ja wohl nicht zu übersehen.


    stock LoadGZ_(i)
    {
    new string[500], str[64];
    mysql_query("SELECT * FROM gangwar");
    mysql_store_result();
    new counter = 0;
    mysql_fetch_row(string);
    strins(string, "|", strlen(string));
    new oldx=0;
    new count=0;
    for(new x=0; x<strlen(string); x++)
    {
    if(string[x]=='|')
    {
    count++;
    new tmpstring[sizeof(string)]; tmpstring=string;
    strdel(tmpstring, x, strlen(tmpstring));
    strdel(tmpstring, 0, oldx+1);
    switch(count)
    {
    case 2: GZ[i][owner] = strval(tmpstring);
    case 3: GZ[i][max_x] = floatstr(tmpstring);
    case 4: GZ[i][max_y] = floatstr(tmpstring);
    case 5: GZ[i][min_x] = floatstr(tmpstring);
    case 6: GZ[i][min_y] = floatstr(tmpstring);
    case 7: GZ[i][flagge_x] = floatstr(tmpstring);
    case 8: GZ[i][flagge_y] = floatstr(tmpstring);
    case 9: GZ[i][flagge_z] = floatstr(tmpstring);
    case 10: GZ[i][erstellt] = strval(tmpstring);
    }
    oldx=x;
    }
    }
    GZ[i][zid] = i;
    if(GZ[i][erstellt] != 1)return 1;
    format(str,64,"%d |Besitzer: '%s'",i,FrakName(GZ[i][owner]));
    M_CreateZone(GZ[i][min_x],GZ[i][min_y],GZ[i][max_x],GZ[i][max_y],FrakColor(GZ[i][owner]),str,FrakColor(GZ[i][owner]));
    GZ[i][pickup] = CreatePickup(1314,1,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],0);
    GZ[i][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge', um die Flagge zu erobern.",Rot,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],20,0);
    counter ++;
    return printf(" '%d' Gangzone(n) wurde(n) erfolgreich erstellt und geladen.",counter);
    }


    Das i mit zoneid zu ersetzen kannst du machen, musst du aber nicht.

    stock CheckBadWords(playerid, text[])
    {
    new BadWords[][] = {
    "schlampe"
    };
    for(new i = 0; i < sizeof(BadWords); i++)
    {
    if(strfind(text, BadWords[i], true) != -1)
    {
    new KMessage[128];
    format(KMessage, sizeof(KMessage), "System: (%d)%s wurde 5 Minuten vom System gemutet. Grund: Beleidigung", playerid,GetName(playerid));
    SendClientMessage(playerid, RED, KMessage);
    SpielerInfo[playerid][Mute] = 5;
    SendClientMessage(playerid,RED,"System: Bitte unterlasse das Benutzen von Schimpfwörtern.");
    return 1;
    }
    }
    return 0;
    }


    Mit
    if(CheckBadWords(playerid,text))return 0;

    stock LoadGZ()
    {
    new string[500], str[64];
    mysql_query("SELECT * FROM gangwar");
    mysql_store_result();
    new i = -1, counter = 0;
    while(mysql_fetch_row(string))
    {
    i++;
    strins(string, "|", strlen(string));
    new oldx=0;
    new count=0;
    for(new x=0; x<strlen(string); x++)
    {
    if(string[x]=='|')
    {
    count++;
    new tmpstring[sizeof(string)]; tmpstring=string;
    strdel(tmpstring, x, strlen(tmpstring));
    strdel(tmpstring, 0, oldx+1);
    switch(count)
    {
    case 2: GZ[i][owner] = strval(tmpstring);
    case 3: GZ[i][max_x] = floatstr(tmpstring);
    case 4: GZ[i][max_y] = floatstr(tmpstring);
    case 5: GZ[i][min_x] = floatstr(tmpstring);
    case 6: GZ[i][min_y] = floatstr(tmpstring);
    case 7: GZ[i][flagge_x] = floatstr(tmpstring);
    case 8: GZ[i][flagge_y] = floatstr(tmpstring);
    case 9: GZ[i][flagge_z] = floatstr(tmpstring);
    case 10: GZ[i][erstellt] = strval(tmpstring);
    }
    oldx=x;
    }
    }
    GZ[i][zid] = i;
    if(GZ[i][erstellt] != 1)continue;
    format(str,64,"%d |Besitzer: '%s'",i,FrakName(GZ[i][owner]));
    M_CreateZone(GZ[i][min_x],GZ[i][min_y],GZ[i][max_x],GZ[i][max_y],FrakColor(GZ[i][owner]),str,FrakColor(GZ[i][owner]));
    GZ[i][pickup] = CreatePickup(1314,1,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],0);
    GZ[i][label] = Create3DTextLabel("Tippe '/angriff', um das Gebiet anzugreifen.\nTippe '/flagge', um die Flagge zu erobern.",Rot,GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],20,0);
    counter ++;
    }
    return printf(" '%d' Gangzone(n) wurde(n) erfolgreich erstellt und geladen.",counter);
    }


    Der Teil der "for(new x=0; x<strlen(string); x++)" Schleife kann auch mir sscanf ersetzt werden. Da ich aber kein sscanf nutze, gebe ich es dir so. Zudem finde ich es persönlich besser das so zu schreiben.

    Includes werden beim kompilieren vom Compiler gelesen und praktisch an die Stelle im Code geschrieben, an der das "include" steht.


    Beispiel:


    test.inc
    -------------
    Hallo
    ich


    gamemode.pwn
    --------------------
    #include <test>
    bin
    Jeffry.



    In der AMX steht anschaulich (natürlich steht es da nicht so, da es ja umgewandelt wird):
    Hallo
    ich
    bin
    Jeffry.



    Es hat keine Auswirkung auf deinen Server ob und wie viele Includes du verwendest, oder ob du alles in den Gamemode schreibst.

    Sag das doch gleich. :fun:


    stock SaveGZ()
    {
    for(new i,string[500]; i<MAX_GZ; i++)
    {
    if(GZ[i][max_x] == 0.0 && GZ[i][min_x] == 0.0) continue;
    format(string,sizeof(string),"INSERT INTO gangwar (id,owner,maxX,maxY,minX,minY,flaggeX,flaggeY,flaggeZ,erstellt) VALUES (%d,'%s','%f','%f','%f','%f','%f','%f','%f','%s')",
    i,GZ[i][owner],GZ[i][max_x],GZ[i][max_y],GZ[i][min_x],GZ[i][min_y],GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],GZ[i][erstellt]);
    format(string,sizeof(string),"%s ON DUPLICATE KEY UPDATE `owner`='%s',`maxX`=%f,`maxY`=%f,`minX`=%f,`minY`=%f,`flaggeX`=%f,`flaggeY`=%f,`flaggeZ`=%f,`erstellt`='%s';",
    string, GZ[i][owner],GZ[i][max_x],GZ[i][max_y],GZ[i][min_x],GZ[i][min_y],GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],GZ[i][erstellt]);
    mysql_query(string);
    }
    return 1;
    }


    Dann sollte es nur eine Zeile erstellen.
    Lösche natürlich vorher die Daten in der Datenbank, die jetzt noch drin sind.

    woran liegt das eigentlich jetzt das der diese eine position (ZAngle) nicht greift? vielleicht kann man sich dazu noch was einfallen lassen.


    SA-MP eben, mit einem Programmierer der sich nicht um Bugs kümmert, auch wenn sie schon 5 Jahre existieren.


    Kannst es ja mit einem Timer versuchen, aber da ist es besser wenn du die einzelnen Funktionen einfach nimmst um das Auto zu reparieren.

    Also genau das was auch mit dem Query übergeben wird, dann stimmt das doch.
    Ich verstehe dein Problem nicht ganz.


    Deine Variablen im Server haben (bis auf die ID 0) alle keine Werte, daher werden auch an die Datenbank nur die Werte von ID 0 übergeben. Du siehst ja selbst, dass im Log alle Zeilen, bis auf die erste, auf 0 stehen.


    Da solltest du dir mal den Code anschauen, mit dem du die Variablen

    Code
    GZ[i][owner],GZ[i][max_x],GZ[i][max_y],GZ[i][min_x],GZ[i][min_y],GZ[i][flagge_x],GZ[i][flagge_y],GZ[i][flagge_z],GZ[i][erstellt]

    befüllst.

    Nur mal testweise:
    Wenn du
    SetVehicleToRespawn(v);
    auskommentierst, schauen deine Fraktionsfahrzeuge dann in die richtige Richtung (mal davon abgesehen, dass Sie nicht repariert etc sind)?


    Ich erinnere mich, vor einigen Jahren das selbe Problem gehabt zu haben, es lag damals daran, dass die ZAngle nicht direkt nach SetVehicleToRespawn funktioniert hat.