Beiträge von Jeffry

    So wie das aussieht machst du beim Erstellen des ersten Checkpoints kein GetPosHinterFahrzeug.


    Wann soll es den Checkpoint hinter dem Fahrzeug denn erstellen, und an welcher Position?


    Schreibe es ggf mal so herum, geht es dann?
    if(Post[playerid][post_bAktiv])
    {
    if(Post[playerid][post_Checkpoint] == 1)
    {
    for(new i = 0; i < sizeof(postCars); i++)
    {
    if(IsPlayerInVehicle(playerid,postCars[i]))
    {
    new veh = GetPlayerVehicleID(playerid);
    Post[playerid][post_Checkpoint] = 0;
    DisablePlayerCheckpoint(playerid);
    new rand = random(sizeof(RandomSpawn1));
    SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
    return 1;
    }
    }
    }
    else
    {
    for(new f = 0; f < sizeof(postg); f++)
    {
    if(IsPlayerInVehicle(playerid,postg[f]))
    {
    sInfo[playerid][post]++;
    Post[playerid][post_Checkpoint] = 1;
    printf("%i",sInfo[playerid][post]);
    if(sInfo[playerid][post] == 10)
    {
    SendClientMessage(playerid,0xFF0000FF,"Fertig");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }
    else
    {
    new Float:x,Float:y,Float:z;
    GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
    sInfo[playerid][postx] = x;
    sInfo[playerid][posty] = y;
    sInfo[playerid][postz] = z;
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
    return 1;
    }
    }
    }
    }
    }



    Das würde erst mal ausschließen, dass der Checkpoint am 0 Punkt ist.

    Setze nach dem query im Befehl einfach mal einen Print und schaue im Log nach, was da steht, wenn du den Befehl eingibst.
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `fID`='%i'",level,result,PlayerInfo[playerid][pMember]);
    printf(query);


    Dann poste was geprintet wird.

    Zitat

    [17:24:40] CMySQLHandler::Disconnect() - Connection was closed.


    Irgendwas stimmt mit deiner Verbindung zur Datenbank nicht. An dem geposteten Code liegt das aber nicht. Ich bezweifle sogar, dass es überhaupt am Script liegt.
    Hast du es mal mit dem R39-2 MySQL Plugin versucht? Das sollte eigentlich ohne Probleme laufen.




    Für Rocky
    @Rocky: Wieder da wo ich hingehöre :fun:

    Kannst du bitte sagen was du gemacht hast um den Fehler zu beheben? Würde mich interessieren, und hilft sicher auch anderen.


    Zwecks dem neuen Problem:
    Da steht gar kein Spieler Name im Log, und in der Klammer auch keine IP Adresse, sehr seltsam.
    Funktioniert es mit einem leeren Gamemode?
    Was sagt der MySQL Log?

    @CyberFish:
    Du kannst es zwar in einem Texteditor eintippen, aber wirklich Sinn macht das nicht. Einen Compiler für PAWN gibt es für Android nicht (zumindest wäre mir keiner bekannt, habe selbst mal danach gesucht), somit wird es wohl auch für iOS und Windows Phone keinen geben, wenn doch, wäre ich wirklich überrascht. Für Java gibt es sowas, aber das ist ziemlich umständlich.
    Außerdem macht es meiner Meinung nach kaum Sinn mit dem Smartphone zu scripten, da du so langsam damit bist (Sonderzeichen etc...), dass sich der Aufwand nicht lohnt. Da brauchst du eine Stunde für das was du am PC in ein paar Minuten hast.
    Meine Empfehlung: Nimm dir ein Windows Tablet oder Netbook und arbeite damit. Da kannst du es auch gleich testen, hast eine Tastatur und viel längere Akkulaufzeiten.



    @[LnD]JustMe.77:
    Den Befehl musst du in ein callback setzen, da es ein Befehl ist logischerweise unter OnPlayerCommandText. Das sähe dann so aus:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    //Dein Befehl hier hin!

    //Ende deines Befehls.
    //...weitere Befehle.
    return 0;
    }

    Wenn dein Wanted Level 0 ist, dann kannst du nicht angezeigt werden. Daher die Frage, wie du das Wanted Level aus der Date lädst, bzw. aus der Datenbank.

    Wenn du willst, dann kannst du auch selbst einen print da hin setzten, ebenfalls im /wanted Befehl, um zu schauen, was dir das als Wert des Wanted Levels ausgegeben wird. Wenn es 0 ist, dann wird dir logischerweise nichts angezeigt, folglich ist ein Fehler im Laden der Wanteds.


    Wie lädst du das WantedLevel aus der ini Datei?

    So, jetzt bin ich endlich dazu gekommen dir das mal umzuschreiben.
    Beim starten des Post-Jobs musst du natürlich
    Post[playerid][post_Checkpoint] = 0;
    und
    Post[playerid][post_bAktiv] = 1;
    machen, sowie dem Spieler den ersten Checkpoint anzeigen:
    new rand = random(sizeof(RandomSpawn));
    SetPlayerCheckpoint(playerid,RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2],5.0);
    GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
    sInfo[playerid][postx] = x;
    sInfo[playerid][posty] = y;
    sInfo[playerid][postz] = z;


    Außerdem sieht der Code unter OnPlayerEnterCheckpoint dann so aus:
    if(Post[playerid][post_bAktiv])
    {
    if(Post[playerid][post_Checkpoint] == 1)
    {
    for(new i = 0; i < sizeof(postcar); i++)
    {
    if(IsPlayerInVehicle(playerid,postcar[i]))
    {
    new Float:x,Float:y,Float:z;
    new veh = GetPlayerVehicleID(playerid);
    Post[playerid][post_Checkpoint] = 0;
    DisablePlayerCheckpoint(playerid);
    new rand = random(sizeof(RandomSpawn));
    SetPlayerCheckpoint(playerid,RandomSpawn[rand][0], RandomSpawn[rand][1],RandomSpawn[rand][2],5.0);
    GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
    sInfo[playerid][postx] = x;
    sInfo[playerid][posty] = y;
    sInfo[playerid][postz] = z;
    return 1;
    }
    }
    }
    else
    {
    for(new f = 0; f < sizeof(forklift); f++)
    {
    if(IsPlayerInVehicle(playerid,forklift[f]))
    {
    sInfo[playerid][post]++;
    Post[playerid][post_Checkpoint] = 1;
    printf("%i",sInfo[playerid][post]);
    if(sInfo[playerid][post] == 10)
    {
    SendClientMessage(playerid,0xFF0000FF,"Fertig");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }
    else
    {
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
    return 1;
    }
    }
    }
    }
    }


    Teste es so mal. Falls es nicht geht, beschreibe bitte das Problem und was passiert, sowie was passieren sollte.

    Eine direkte Lösung zu dem Fehler kenne ich nicht, auch im englischen Forum wird meistens nur spekuliert und die Threads sind eigentlich nie gelöst.
    Debuggen wir den Code doch mal:


    public LoadKassenInfo()
    {
    printf("Starte LoadKassenInfo");
    new string[128], val[128];
    for(new t = 0; t < MAX_TEAMIDS; t++)
    {
    printf("t: %d", t);
    format(string, sizeof(string),"SELECT * FROM `teamkassen` WHERE `TeamID` = '%d'", t);
    printf("string: %s", string);
    self_mysql_query(string);
    printf("query sent");
    mysql_store_result(MySQLConnection);
    printf("result stored");
    if(mysql_num_rows(MySQLConnection) != 0)
    {
    printf("rows != 0");
    mysql_fetch_row_format(string);
    printf("row fetched: %s", string);
    self_mysql_get_field("Kasse", val); printf("val: %s", val); KassenInfo[t][tKasse] = strval( val ); printf("strval: %d", strval(val));
    self_mysql_get_field("Lohn", val); printf("val: %s", val); KassenInfo[t][tLohn] = strval( val ); printf("strval: %d", strval(val));
    }
    mysql_free_result(MySQLConnection);
    printf("result freed");
    }
    printf("Ende LoadKassenInfo");
    return 1;
    }


    Poste dann bitte, was im Log steht (falls die Fehlermeldung wieder kommt, poste diese im Zusammenhang mit).

    Zwecks dem Freeze:
    Bei OnPlayerEnterCheckpoint:
    if(LSRACE[playerid] == 0)
    {
    TogglePlayerControllable(playerid, false);
    }


    Und zwecks der Sperre:
    Unter den Includes:
    new joinSperre[MAX_PLAYERS];
    Und beim Join:
    if(joinSperre[playerid] > gettime()) return SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist noch gesperrt.");
    joinSperre[playerid] = gettime() + 30 * 60;