Beiträge von Mostey

    Normalerweise sollte es nicht erforderlich sein deinen Account zu löschen weil der meistens an die Nummer gebunden ist. So konnte ich damals von einem alten iPhone auf ein Android Gerät wechseln und habe lustigerweise sogar die Lifetime Mitgliedschaft ebenfalls mit übertragen bekommen.


    Bei Android werden die Chatverläufe und internen Daten von WA im Telefonspeicher intern gespeichert, die du nur mit einem Wipe/Factory Reset löschen kannst (und selbst da ist es theoretisch noch nicht endgültig gelöscht weil da nur ne Formatierung stattfindet, sofern ich weiß). Diese Daten werden in der Regel regelmäßig auf die interne SD Karte kopiert, wo du sie dann abgreifen kannst.


    Kontext fehlt.


    Höchstwahrscheinlich wird die Formatierung vor der Setzung des Adminrangs ausgeführt, was das bedeutet kannst du dir jetzt an 11 Fingern abzählen.


    Übrigens:
    format(string2,sizeof(string)


    Das würde ich so nicht lassen, es hat einen Grund warum die Größe des zu formatierenden Strings übergeben werden muss und du übergibst hier die Größe von string um string2 zu formatieren. Ist string2 nun größer als string, wirst du ein Problem haben wenn die volle Länge noch beansprucht werden soll.

    Warum fragst du hier ob es an der Datenbank liegt wenn du selber nachschauen kannst ob die Felder 0 sind?


    Wie soll ich das jetzt beurteilen können?

    Handles gibt es für alle möglichen Sachen, unter anderem kommen diese auch in der Windowsprogrammierung vor, da dort die einzelnen Fenster (Windowhandles) einer Anwendung (Instancehandles) identifiziert werden. Mit dem Datenbank Handle hast du also eine Verbindung zur Datenbank womit diese dementsprechend auch identifiziert wird.


    Deshalb werden Handles auch bei diesen Funktionen oft genutzt, wenn du ne Abfrage erstellst brauchst du sicherlich auch ne DB und ein Objekt, das eine DB nunmal identifiziert damit du nicht immer alle Argumente neu durchgeben musst.

    Beavis ah so meinste des ^^ sry


    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));


    Mostey was speicherst du den in die pScore ? ;)
    Sicherlich die GetPlayerScore(playerid); oder ;)
    is für mich auch nur eine Var =D (Is eine funktion die eine Var wiedergibt)


    Und was ist jetzt das Problem?


    PlayerInfo[playerid][pScore] = GetPlayerScore(playerid);
    // Funktion die den Score erfordert:
    SomeFunc(PlayerInfo[playerid][pScore]);


    und


    // Funktion die den Score erfordert:
    SomeFunc(GetPlayerScore(playerid));


    machen genau das selbe, da gibt es keinen Unterschied. Was du da zwischen speichern willst ist mir da etwas schleierhaft.

    also weil die score im spiel ja sowieso eine andere variable ist als die die gespeichert wird ist das ja nicht ganz falsch ;)


    Dann hast du was falsch gemacht, man speichert normalerweise den Score kurz vorher in die selbe Variable (PlayerInfo[playerid][pScore] würde sich dafür anbieten) und speichert erst danach in der DB. Da braucht man doch nicht alles doppelt zu machen.

    if(Tore[playerid][Torart] == 1) {
    MoveObject(Tore[playerid][TorID], Tore[playerid][OpenX], Tore[playerid][OpenY], Tore[playerid][OpenZ], 5);


    Was hat 'playerid' dort verloren? Du vergleichst hier möglicherweise (sogar sehr wahrscheinlich) nicht die Tore die du im Array definiert hast sondern durch 'playerid' zieht die Anweisung sich einen nicht vorhanden Eintrag raus wenn deine ID nicht 0 ist und du nur ein Tor definiert hast.


    enum Gates {
    Float:X,
    Float:Y,
    Float:Z,
    bool:State
    }


    for(new i; i < sizeof(Tore); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid, Tore[i][X], Tore[i][Y], Tore[i][Z])) continue;
    if(Tore[i][State] = true) // auf
    {
    MoveObject(Tore[i][TorID], Tore[i][X], Tore[i][Y], Tore[playerid][Z] - 5, 5);
    Tore[i][State] = false;
    }
    else // zu
    {
    MoveObject(Tore[i][TorID], Tore[i][X], Tore[i][Y], Tore[playerid][Z] + 5, 5);
    Tore[i][State] = true;
    }
    break;
    }


    Diese 'OpenX' und 'CloseX' Variablen sind nicht nötig, du brauchst nur eine Position die du dann entsprechend modifizieren kannst. Falls dir das zu viel Arbeit ist kannst du dir dafür auch ein Makro basteln aber das über Variablen zu lösen ist Speicherverschwendung. Das Array bei 'TorID' kannst du entfernen, das brauchst du nicht, da reicht eine normale Variable.

    Wenn die Daten nicht gespeichert werden und die Abfrage fehlerhaft ist, kommt immer eine dementsprechende Fehlerneldung in der Konsole. Die wäre hilfreich.



    Bitte was?

    Na dann sollte das beim Callback auch berücksichtigt werden:


    public OnVehicleSpawn(vehid)
    {
    SetVehiclePos(vehid, FactionCars[vehid][fPos][0],FactionCars[vehid][fPos][1],FactionCars[vehid][fPos][2]);
    }


    So etwas in der Art.

    Sollte man mit \t (Formatierungstab) sauber hinbekommen können.


    print("Kleines Beispiel zur Repräsentierung") // Kleines Beispiel zur Repräsentierung
    print("Kleines \t Beispiel \t zur \t Repräsentierung") // Kleines Beispiel zur Repräsentierung

    Etwas sehr umständlich und unübersichtlich.


    Warum legst du nicht eine eine eindeutige ID in der DB für jeden User an, diese ID wird dann von der DB auf den User geladen und diese kannst du dann für die Abfrage bei Fahrzeugen benutzen.

    if((oldstate == PLAYER_STATE_ONFOOT) && (newstate == PLAYER_STATE_DRIVER) && IsATaxi(GetPlayerVehicleID(playerid)))
    SendClientMessage(playerid,-1,"Taxi ya");


    stock IsATaxi(vehid)
    {
    for(new i; i < max_taxis; i++)
    {
    if(vehid == taxicar[i])
    return true;
    }
    return false;
    }


    Bin zwar etwas spät, würde aber obigen Code präferieren.