Beiträge von Campbell

    Verstehe davon 0 kann nur Reallife oder Deathmatch Scripts machen aber kein Derby...


    Das hat nichts damit zu tun ob man diesen oder jenen Script erstellen kann, es geht darum, ob man den Quellcode versteht oder nicht. Was ist unklar (In der Klammer oben wurde die Funktion beschrieben)?

    Beispiel (ob dies so zur Anwendung sinnvoll ist ist ein anderes Thema - Durchläuft alle möglichen SpielerIDs und setzt im curClients-Array den Wert auf true, falls ein Spieler mit dieser ID gefunden wurde):



    new bool:curClients[MAX_PLAYERS] = {false, ...};


    public OnDerbyInitiate() {
    checkClients();
    }


    stock checkClients() {
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    curClients[i] = true;
    } else {
    curClients[i] = false;
    }
    }
    }

    Dann solltest du den Spieler einen Moment lang einfrieren und ihm erst dann freien Lauf lassen, da vorher der Boden nicht geladen ist und somit der Spieler durch den Boden fällt. Zumindest ist dies oft die Ursache, es kann natürlich auch hinter anderen Ecken versteckt sein.

    Also,
    Ich habe jetzt in der Tabelle bei email von einem interger zu einem varchar ungewandelt.
    Jetzt wird keine 0 mehr eingetragen, aber auch keine email.
    Sonst habe ich baer keine veränderungen vorgenommen.
    Wie meinst du das mit dem typ der var. im enum?! wie änder ich den da?



    enum SpielerDaten {
    pName[MAX_PLAYER_NAME],
    pEmail[30]
    }

    Hast du dir auch die Variablen mal ausgeben lasssen (Stichwort: Debugging)?

    Also 1.


    Ich habe die variable im enum etstellt! Dann hab ich versuch ein Haus zu kaufen (Hab ich alles erstellt) Jedoch wenn ich es verkaufen möchte dann steht du hast kein haus! Ich hab in die PlayerDatei gesehen und habe keine der beiden Variablen fie ich im enum erstellt habe finden?


    • Wie erwartest du nun, sollen wir in der Lage sein, dir zu helfen?
    • Achte auf deine Rechtschreibung.

    Du überschreibst deine ObjectID mit dem Wert 1, demnach wirst du das Objekt nicht mehr löschen können. Lasse dir ebenfalls einfach mal den Array SEKCar[] ausgeben und überprüfen In-Game, ob die Werte überhaupt übereinstimmen.

    Woher stammt denn CarInfo[][]? Hast du die Datei bereits eingelesen? Denn falls dies der Fall ist, benötigst du doch keine weiteren Tests, ob eine Datei existiert. Du arbeitest hier doch nirgendwo mit Datein, nicht wahr?

    In deinem Enumerator würde ich zunächst den Typ der Variable ändern, da deine E-Mail wohl kaum ein Integer sein wird. Ebenfalls würde ich mir die Variablen in SetEmail() ausgeben und nochmals die Datenbankstruktur anschauen (vllt. ist dort auch ein Integer vorgesehen?).

    Was hälst du davon?



    public OnPlayerDeath(playerid, killerid, reason) {
    if(killerid != INVALID_PLAYER_ID) { // Hier bestand dein Problem.
    if(isPlayerInFrakt(killerid, 1)) {
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 2);
    } else {
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    }


    new playercash = GetPlayerMoney(playerid);


    if(playercash > 0) {
    new killstr[18],
    deathstr[18];

    SetPVarInt(killerid, "Bank", GetPVarInt(killerid,"Bank") + playercash);
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, 500);
    format(killstr, sizeof(killstr), "+ %i$ (Bank)", playercash);
    format(deathstr, sizeof(deathstr), "- %i$", playercash);
    GameTextForPlayer(killerid, killstr, 2000, 1);
    GameTextForPlayer(playerid, deathstr, 2000, 1);
    }
    }
    }

    Es ist Quatsch 3x zu testen, ob eine ID eine valide ID ist und nach Setzen eines +2 Scores ein return hat ein Abbruch des Rest des Codes zur Folge. Und ebenfalls nur wenn keine KillerID existiert wird der Geld-Code ausgeführt. Dieser Sinn ist mir nun wirklich nicht erklärbar.