Beiträge von #save

    Guten Tag,


    ich habe das Problem das ich wenn ich gegen ein bestimmtes Tor (ID #2933) fahre, dass es kaputt geht. OK ob es kaputt geht wenn ich dagegen fahre weis ich nicht ich gehe nur davon aus weil ich mich als ich das Objekt bewegt habe mich dazwischen gestellt habe mit meinem Auto und es dann kaputt ging ^^ Ich möchte Praktisch für die LSPD Base ein Tor machen das sich nach links bewegt und dann wieder nach 7 Sekunden zurück fährt. Das ganze funktioniert auch bloß ich weis nicht wie ich das verhindern kann das dass Objekt nicht kaputt gehen kann.

    Guten Tag,


    mal wieder benötige ich eure Hilfe. Ich habe eine MySQL Datenbank die wie folgt aufgebaut ist:


    Hier die ganzen Inhalte der Tabelle (40 Autos):


    So sieht mein GameMode Init aus:

    public OnGameModeInit()
    {
    // Objekte
    //new dbVehicleID[20], vehicleID, modelID[5], posX[20], posY[20], posZ[20], posAngle[20], color1[5], color2[5], respawnTime[5];
    new carID[30];
    new vehicleID[5];
    new gameVehicleID;
    new color1[2];
    new color2[2];
    new positionX[20];
    new positionY[20];
    new positionZ[20];
    new positionAngle[20];
    new numberPlateText[50];
    new numberPlateActivated[1];
    new query[180];

    // mysql connect
    mysql_init(LOG_ALL, 1);
    mysql_connect(host, mysqluser, mysqlpass, database);


    // GameMode Name
    SetGameModeText("Brox German Reallife");

    // Server Einstellungen
    DisableInteriorEnterExits();
    EnableStuntBonusForAll(0);
    ShowPlayerMarkers(0);
    UsePlayerPedAnims();
    SetWeather(10);

    // Update
    mysql_query("UPDATE users SET ingameID = 0, status = 'offline'");
    mysql_query("UPDATE prison_user SET ingameID = 0, status = 'offline'");
    mysql_query("UPDATE vehicles SET ingameID = 0");


    // Lade alle Autos von der Datenbank
    mysql_query("SELECT * FROM vehicles WHERE ownerID = 0");
    mysql_store_result();


    while (mysql_fetch_row_data())
    {
    // Speichere alle Daten ab
    mysql_fetch_field("vehicleID", carID);
    mysql_fetch_field("modelID", vehicleID);
    mysql_fetch_field("color1", color1);
    mysql_fetch_field("color2", color2);
    mysql_fetch_field("posX", positionX);
    mysql_fetch_field("posY", positionY);
    mysql_fetch_field("posZ", positionZ);
    mysql_fetch_field("posAngle", positionAngle);


    CreateVehicle(strval(vehicleID), strval(positionX), strval(positionY), strval(positionZ), strval(positionAngle), strval(color1), strval(color2), 5);
    /*
    format(query1, sizeof(query1), "UPDATE cars SET gameVehicleID = %d WHERE carID = %d", gameVehicleID, strval(carID));
    mysql_query(query1);


    printf("%s", query1);
    */
    }


    mysql_free_result();

    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

    // Timer
    SetTimer("AntiWeaponHack", 1000, true);
    SetTimer("BanTimer", 60000, true);
    SetTimer("ShowPosMarkers", 1000, true);
    SetTimer("PrisonTimer", 60000, true);

    return 1;
    }


    Wenn ich den Server starte, läd er genau 1 Auto. Der Log sieht wie folgt aus:


    Diese Zeile ist mir schon aufgefallen:

    Code
    [11:59:37] [MySQL] Error (0): Function: mysql_fetch_row_data failed, no field data.


    Ich weis aber nicht was ich ändern kann. Seitdem ich meinen GameMode neu gescriptet habe will das ganze nicht mehr, obwohl ich das wirklich so gemacht habe wie immer.


    So funktioniert es ja auch:

    public OnGameModeInit()
    {
    // Objekte
    new carID[30];
    new vehicleID[5];
    new gameVehicleID;
    new color1[2];
    new color2[2];
    new positionX[20];
    new positionY[20];
    new positionZ[20];
    new positionAngle[20];
    new numberPlateText[50];
    new numberPlateActivated[1];
    new query1[180];

    // mysql connect
    mysql_init(LOG_ALL, 1);
    mysql_connect(host,mysqluser,mysqlpass,database);

    // Setze den Status aller Spieler auf "offline"
    mysql_query("UPDATE users SET status = 'offline'");

    // Interiors deaktivieren
    DisableInteriorEnterExits();

    // Spieler auf der Karte deaktivieren
    ShowPlayerMarkers(0);

    // Setze das Standartwetter
    SetWeather(10);


    // Lade alle Autos von der Datenbank
    mysql_query("SELECT * FROM cars WHERE disabled = 0");
    mysql_store_result();

    while (mysql_fetch_row_data())
    {
    // Speichere alle Daten ab
    mysql_fetch_field("carID", carID);
    mysql_fetch_field("vehicleID", vehicleID);
    mysql_fetch_field("color1", color1);
    mysql_fetch_field("color2", color2);
    mysql_fetch_field("positionX", positionX);
    mysql_fetch_field("positionY", positionY);
    mysql_fetch_field("positionZ", positionZ);
    mysql_fetch_field("positionAngle", positionAngle);
    mysql_fetch_field("numberPlateText", numberPlateText);
    mysql_fetch_field("numberPlateActivated", numberPlateActivated);


    if (strval(numberPlateActivated) == 1)
    {
    CreateVehicle(strval(vehicleID), strval(positionX), strval(positionY), strval(positionZ), strval(positionAngle), strval(color1), strval(color2), 5);
    /*
    format(query1, sizeof(query1), "UPDATE cars SET gameVehicleID = %d WHERE carID = %d", gameVehicleID, strval(carID));
    mysql_query(query1);


    printf("%s", query1);
    */
    }
    else
    {
    CreateVehicle(strval(vehicleID), strval(positionX), strval(positionY), strval(positionZ), strval(positionAngle), strval(color1), strval(color2), 5);
    /*
    format(query1, sizeof(query1), "UPDATE cars SET gameVehicleID = %d WHERE carID = %d", gameVehicleID, strval(carID));
    mysql_query(query1);

    printf("%s", query1);
    */
    }
    }

    mysql_free_result();

    ManualVehicleEngineAndLights();
    }


    Lasst euch nicht von der Tabelle cars irritieren, ich habe nämlich 2 Auto-Tabellen (bevor ich angefangen habe den GameMode neu zu scripten hieß es cars und jetzt vehicles.) Beide Tabellen existieren noch. Die Tabelle cars lösche ich aber da sie wie ich schon gesagt habe jetzt vehicles heißt. Die Tabelle cars ist so aufgebaut:


    Den Inhalt von cars werde ich aber nicht posten, da sonst der Beitrag zu lang ist. In der Tabelle cars werden aber zumindest 84 Autos geladen. Zwar keine 163 (so viel sind eigentlich eingetragen) aber zumindest 84.


    Erkennt jemand den fehler zwischen den beiden GameModes ? Der untere GameModeInit Teil ist vom alten Script und oben das neue. Warum liest er nicht alle Autos aus der MySQL Tabelle aus ? Das ist mein eigentliches Problem derzeit. Ich hoffe ich habe es so verständlich erklärt.


    Wenn es nicht verständlich ist, erkläre ich es gerne noch einmal. Ich hoffe ihr könnt mir helfen :)

    BlackAce, wäre dann mein Code dann richtig wenn ich das + durch ein [ austausche, also so:
    TextDrawCreate(240.0,580.0,"[");
    Ich habe das mit [ schon einmal probiert, aber das wird mir nicht angezeigt (der Stern).

    Wenn du einen Linux Server betreiben willst, gehören viele Kentnisse dazu. Ich kann mich anbieten dir deinen Server möglichst sicher zu konfigurieren und dir einen SAMP Server zu installieren. In Linux einzusteigen ist nicht allzuschwer. Einen Remote-Desktop auf einem vServer zu installieren ist ein GROOOOOßER Fehler! Mit der Konsole hast du a) nicht so viel Geschiss b) geht es (meines erachtens) einfacher c) Die Konsole ist sicherer als ein Remote-Desktop

    Das heißt also ich ertselle ein TextDraw wie folgt:
    TextDrawCreate(240.0,580.0,"+");


    Und das wars dann ? Kann ich mir gerade nicht vorstellen und kann es gerade nicht testen da ich an meinem Mac Laptop bin und mein Windoof 7 PC aus ist und ich eigentlich schlafen gehen wollte ^^

    Guten Tag,


    ich sehe nun immer mehr auf anderen Servern das man unendlich viele Wanted Sterne haben kann. Das sieht dann ungefähr so aus:
    breadfish.de/wcf/attachment/4436/


    (Das Bild habe ich bearbeitet und entsprach davor dem unteren).


    Bloß die Frage ist einfach, wenn ich einen Stern vergebe wie dann die restlichen "halb durchsichtigen" Sterne dann verschwinden.


    So sieht das bei mir aus:
    breadfish.de/wcf/attachment/4437/


    Ich meine also die durchsichtigen Sterne neben dem goldenen. Die Zahl ist ja nur eine simple TextDrawCreate(); Funktion wie ich das so sehe.

    Guten Tag,


    ich habe ja in einem meiner vorherigen Themen geschrieben das ich wahrscheinlich selber rausfinden werde wie man die Attach3DTextLabelToPlayer(); Funktion nur für bestimmte Spieler sichtbar macht. Leider schaffe ich das jetzt doch nicht und benötige erneut eure Hilfe. Es geht mir darum das nur die Polizisten und das FBI unter dem Namen von einem Spieler das Wanted Level sehen.


    Welche zweite Funktion ich aber noch dazu brauche weis ich nicht.


    Vielen Dank schonmal im Voraus :)

    Wenn das aber nur 1 Person nutzen soll (was ich dir derzeit auch raten würde), solltest du eine IP Abfrage reinbauen oder einen Eindeutigen-Key das nicht ein Spambot damit deine Datenbank vergewaltigen kann.


    Wenn ich dirs einbauen soll -> Melden ;)

    Er hat ein Komma hinzugefügt. Das würde aber nicht das Problem lösen da es falsch ist. Bitte mal die Zeilen drüber über dem enum posten.

    Wie gesagt, es würde kein Problem auftreten wenn du einfach mein Video anschaust... Außerdem kommt es mir so vor als würdest du nicht sehr viel Ahnung in Sachen Linux/Server haben. Der Fehler der kommt sagt doch schon alles aus. Du hast einfach Parameter vergessen mit anzugeben bei adduser. Der erste Treffer in Google bringt dir bereits die Lösung zum Problem: http://debiananwenderhandbuch.de/benutzerverw.html


    Mal eine kleine Frage so nebenbei was lässt du so alles über deinen V-Server laufen ? Wenn du nichtmal weist wie du User anlegst, dann frage ich mich ob du ernsthaft alle Programme über "root" laufen lässt. Wenn ja, dann hast du einen RIEEEESSSSEEENNNN großen Fehler gemacht den du am besten schnell beheben solltest...


    Zu isCP: http://serversupportforum.de/f…von-ispcp-auf-debian.html


    Nur gut gemeinte Tipps ;)

    Wenn ich aber jetzt aus einer MySQL Datenbank bestimmte Sachen auslesen will und diese in eine Funktion einbaue, wie mache ich das ?
    Beispiel:

    new testfield[30];


    mysql_query("SELECT testfield FROM test");
    mysql_store_result();


    mysql_fetch_field("testfield", testfield);


    mysql_free_result();


    SetPlayerFightStyle(playerid, testfield);


    Das ganze gibt es ja auch für Integers das ich statt testfield einfach strval(testfield) mache.


    Also dann praktisch das hier:

    SetPlayerFightStyle(playerid, testfield);

    in

    SetPlayerFightStyle(playerid, strval(testfield));

    ändere. Würde nicht gehen da ich keine Integers bei SetPlayerFightStyle verwenden kann, ich weis. Soll auch nur ein Beispiel sein.


    Es muss doch einen Weg geben Strings aus einer MySQL Tabelle auslesen zu können und diese dann in Funktionen verwenden kann.

    Guten Tag,


    der Titel mag ein bisschen wirr klingen, aber ich denke ich kann das euch auch so verständlich erklären ;) Ich bastel mir gerade meinen eigenen PayDay zusammen. Ich habe eine MySQL Tabelle mit Daten zu jedem User (bitte im Anhang schauen).


    In der Spalte "payDayMinutes" wird nur festgehalten wie viel Minuten seit dem letzten PayDay vergangen sind. Dazu brauche ich einen Timer der alle 60 Sekunden die Spalte um einen Wert erhöht. Wenn er aber beim nächsten Durchlauf auf 60 updaten will, updatet er gleich wieder auf 0 und der User bekommt sein Geld + seinen Respekt Punkt. Ist ja auch irgendwie logisch.


    Mein Skript sieht wie folgt aus:

    forward payDay(playerid);
    public payDay (playerid)
    {
    printf("%s", "PayDay");
    // Objekte
    new playerName[MAX_PLAYER_NAME+1];
    new userID;
    new payDayMinutes[2];
    new payDayMoney[20];
    new userLevel[30];
    new userRespect[30];
    new userRespectPointsNeeded[10];
    new query1[180];
    new query2[180];
    new query3[180];
    new query4[180];
    new query5[180];
    new query6[180];
    new query7[180];

    // Spielername
    GetPlayerName(playerid, playerName, sizeof(playerName));

    // Bekomme UserID
    userID = strval(getUserID(playerName));

    // Sind bereits 60 Minuten vergangen ?
    format(query1, sizeof(query1), "SELECT payDayMinutes FROM users WHERE userID = %d", userID);
    mysql_query(query1);
    mysql_store_result();

    mysql_fetch_field("payDayMinutes", payDayMinutes);

    mysql_free_result();

    if (strval(payDayMinutes) == 59)
    {
    // Setze den PayDay wieder auf 0
    format(query2, sizeof(query2), "UPDATE users SET payDayMinutes = 0 WHERE userID = %d", userID);
    mysql_query(query2);

    // Wie viel Geld bekommt der Spieler ausgezahlt ?
    format(query3, sizeof(query3), "SELECT payDayMoney FROM users WHERE userID = %d", userID);
    mysql_query(query3);
    mysql_store_result();

    mysql_fetch_field("payDayMoney", payDayMoney);

    mysql_free_result();

    // Schreibe das Geld auf der Bank gut
    format(query4, sizeof(query4), "UPDATE bank_accounts SET money = %d WHERE userID = %d", payDayMoney, userID);
    mysql_query(query4);

    // Gebe dem User einen Respekt Punkt
    format(query5, sizeof(query5), "UPDATE users SET userRespect = userRespect + 1 WHERE userID = %d", userID);
    mysql_query(query5);

    // Bekomme Informationen zum nächsten Level Up
    format(query6, sizeof(query6), "SELECT userLevel, userRespect, userRespectPointsNeeded FROM users WHERE userID = %d", userID);
    mysql_query(query6);
    mysql_store_result();


    mysql_fetch_field("userLevel", userLevel);
    mysql_fetch_field("userRespect", userRespect);
    mysql_fetch_field("userRespectPointsNeeded", userRespectPointsNeeded);


    mysql_free_result();

    if (strval(userRespect) == strval(userRespectPointsNeeded))
    {
    format(query7, sizeof(query7), "UPDATE users SET userLevel = userLevel + 1, userRespect = 0, userRespectPointsNeeded = userRespectPointsNeeded + 4 WHERE userID = %d", userID);
    mysql_query(query7);
    }
    }
    else
    {
    // Erhöhe die Minuten des PayDay's
    format(query2, sizeof(query2), "UPDATE users SET payDayMinutes = payDayMinutes + 1 WHERE userID = %d", userID);
    mysql_query(query2);
    }
    }


    Jetzt habe ich aber leider das Problem, dass wenn er payDayMinutes auf 10 updatet er stehen bleibt. Ihr seht ich habe bereits ein printf ausgeben lassen um zu gucken ob der Timer die Funktion immernoch aufruft (das tut er auch). Aber warum hört das Skript auf in der MySQL Tabelle noch einmal zu updaten.


    Dann habe ich noch ein zweites Problem. Irgendwie werde nur ich (userID 1) geupdatet. Wenn die anderen Spieler joinen dann macht er nichts, nur bei mir.


    Ich habe SetTimerEx unter OnPlayerSpawn eingebaut da ich nicht möchte das die Leute einfach im Login Bildschirm hocken bleiben können und sich sozusagen hochleveln können. Oder darf ich das garnicht machen ?


    OnPlayerSpawn Auszug mit SetTimerEx:

    public OnPlayerSpawn(playerid)
    {
    // Setze den PayDay Timer
    SetTimerEx("payDay", 60000, 1, "i", playerid);


    return 1;
    }


    Ich hoffe ihr könnt mir wieder weiterhelfen :)