Beiträge von Artus

    Ich habe das jetzt so gemacht:


    Pastebin


    Mein Problem ist jetzt folgendes:


    Ich spawne einen Bus.


    Ich werde mit dem Buserstellungsbefehl direkt hineingesetzt.
    Ich steige aus und wenn ich wieder einsteigen will, wird der Bus einfach so entfernt, obwohl seine ModelID nicht im Code mit einbegriffen ist
    und somit nichts für ihn ausgeführt werden dürfte.

    Ich weiß nicht, wie ich das scripten soll.


    Ich habe eine Rollervermietung. Wenn man sich dort einen Roller "mietet", also im Pickup /roller eingibt,
    dann wird einer gespawnt und man wird hineingesetzt.


    Der Roller hat eine Respawnzeit von 300 Sekunden, heißt 5 Minuten.


    Ich möchte jetzt machen, dass, wenn der Roller respawnt, dass dieser stattdessen zerstört wird mit "DestroyVehicle".


    Wie scripte ich das?


    Es gibt leider kein "OnVehicleRespawn", sondern nur ein "OnVehicleSpawn" und ich will den ja nicht direkt nach der Erstellung zerstören.


    Mit freundlichen Grüßen


    Artus


    P.S.: Irgendwie mit einem Timer, welcher sich dann nur auf das bestimmte Fahrzeug ausübt?


    Wenn es verlassen wird, wird er gestartet für das Fahrzeug, wenn wieder eingestiegen wird, wird der Timer abgebrochen.
    Und ansonsten wird der Roller zerstört.


    Geht das?

    Nur das oben eingefügte eingefügt. :D


    Alsoo. Ich weiß, dass es an meinem stock "AutosLaden" liegen muss.
    Denn dieser lädt alle FahrzeugDaten aus der MySQL-Datenbank.
    stock AutosLaden()
    {
    for(new i=0; i!=MAX_AUTOS; i++)
    {
    new ID[MAX_PLAYER_NAME];
    valstr(ID, i);
    format(AutoDaten[i][aBesitzer],64,mysql_GetString("grra", "Besitzer", "id", ID));
    AutoDaten[i][aModel] = mysql_GetInt("grra", "Model", "id", ID);
    AutoDaten[i][aFarbe1] = mysql_GetInt("grra", "Farbe_1", "id", ID);
    AutoDaten[i][aFarbe2] = mysql_GetInt("grra", "Farbe_2", "id", ID);
    AutoDaten[i][aTueren] = mysql_GetInt("grra", "Tueren", "id", ID);
    AutoDaten[i][aPosX] = mysql_GetFloat("grra", "PosX", "id", ID);
    AutoDaten[i][aPosY] = mysql_GetFloat("grra", "PosY", "id", ID);
    AutoDaten[i][aPosZ] = mysql_GetFloat("grra", "PosZ", "id", ID);
    AutoDaten[i][aPosA] = mysql_GetFloat("grra", "PosA", "id", ID);
    AutoDaten[i][aRespawn] = mysql_GetInt("grra", "Respawn", "id", ID);
    format(AutoDaten[i][aNummernschild],16,mysql_GetString("grra", "Nummernschild", "id", ID));
    AutoDaten[i][aID] = AddStaticVehicleEx(AutoDaten[i][aModel], AutoDaten[i][aPosX], AutoDaten[i][aPosY], AutoDaten[i][aPosZ], AutoDaten[i][aPosA], AutoDaten[i][aFarbe1], AutoDaten[i][aFarbe2], AutoDaten[i][aRespawn]);
    SetVehicleToRespawn(i);
    SetVehicleHealth(i, 100.0);
    SetVehicleNumberPlate(AutoDaten[i][aID], AutoDaten[i][aNummernschild]);
    }
    return 1;
    }

    Verstehe ich nun richtig, Auto A steht am LSPD, du bist in SF.


    Sobald du in die Nähe des Auto A am LSPD kommst, explodiert Auto A ? 8|


    Jap so ist es.


    Auto ist an der Polizeistation. Wenn ich jetzt beispielsweise vom BSN zum Fahrzeug fahre und dieses dann in Sichtweite kommt, explodiert es.

    Die, die ich mit CreateVehicle unter OnGameModeInit eingefügt habe.


    Ich verwende ein Selfmadescript auf MySQL (Nur Nutzerfahrzeuge werden aus DB geladen). <-- Sind keine drin.

    Alle Fahrzeuge auf meinem Server explodieren, wenn sie in Sichtweite des Spielers kommen.


    Habe es mit AddStaticVehicle, AddStaticVehicleEx und CreateVehicle ausprobiert. Bei allen passiert dasselbe --> Explosion
    PolizeiFahrzeug[0] = CreateVehicle(599,-2296.6382,2290.6672,5.8854,269.7382,162,1,300); // Policeauto 1
    PolizeiFahrzeug[1] = CreateVehicle(599,-2296.6514,2295.0315,5.8880,270.6637,162,1,300); // Policeauto 2Woran könnte das liegen? Habe alles richtig gescriptet.
    new PolizeiFahrzeug[2];

    [14:16:32] CMySQLHandler::Query(UPDATE `grrs` SET `Name`='Artus', `Passwort`='780068', `Sprache`='0', `Admin`='0', `Level`='1', `Exp`='0', `Expzeit`='30', `Fraktion`='0', `Rang`='0', `Wanteds`='0', `Skin`='26', `Geld`='6000', `Bank`='0', `Roller`='0', `PKW`='0', `Motorrad`='0', `LKW`='0', `Boot`='0', `Flugzeug`='0', `Helikopter`='0', `Waffenschein`='0', `Verwarnungen`='', `Gebannt`='0', `Banngrund`='', `Gebannt_von`='', `Bann_Jahr`='0', `Bann_Monat`='0', `Bann_Tag`='0', `Bann_Stunde`='0', `Bann_Minute`='0', `Bann_Sekunde`='0', `Startbonus`='0' WHERE `Name`='') - Successfully executed.stock SpielerSpeichern(playerid)
    {
    new query[1024], Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    format(query,sizeof(query),"UPDATE `grrs` SET `Name`='%s', `Passwort`='%s', `Sprache`='%d', `Admin`='%d', `Level`='%d', `Exp`='%d', `Expzeit`='%d', `Fraktion`='%d', `Rang`='%d', `Wanteds`='%d', `Skin`='%d', `Geld`='%d', `Bank`='%d',",Name, SpielerDaten[playerid][pPasswort], SpielerDaten[playerid][pSprache], SpielerDaten[playerid][pAdmin], SpielerDaten[playerid][pLevel],
    SpielerDaten[playerid][pExp], SpielerDaten[playerid][pExpzeit], SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRang], SpielerDaten[playerid][pWanteds], SpielerDaten[playerid][pSkin], SpielerDaten[playerid][pGeld], SpielerDaten[playerid][pBank]);
    format(query,sizeof(query),"%s `Roller`='%d', `PKW`='%d', `Motorrad`='%d', `LKW`='%d', `Boot`='%d', `Flugzeug`='%d', `Helikopter`='%d', `Waffenschein`='%d', `Verwarnungen`='%d',", query, SpielerDaten[playerid][pRoller], SpielerDaten[playerid][pPKW], SpielerDaten[playerid][pMotorrad], SpielerDaten[playerid][pLKW], SpielerDaten[playerid][pBoot], SpielerDaten[playerid][pFlugzeug], SpielerDaten[playerid][pHelikopter],
    SpielerDaten[playerid][pWaffenschein]);
    format(query,sizeof(query),"%s `Gebannt`='%d', `Banngrund`='%s', `Gebannt_von`='%s', `Bann_Jahr`='%d', `Bann_Monat`='%d', `Bann_Tag`='%d', `Bann_Stunde`='%d', `Bann_Minute`='%d', `Bann_Sekunde`='%d', `Startbonus`='%d' WHERE `Name`='%s'", query, SpielerDaten[playerid][pVerwarnungen], SpielerDaten[playerid][pGebannt], SpielerDaten[playerid][pBanngrund], SpielerDaten[playerid][pGebannt_von], SpielerDaten[playerid][pBann_Jahr],
    SpielerDaten[playerid][pBann_Monat], SpielerDaten[playerid][pBann_Tag], SpielerDaten[playerid][pBann_Stunde], SpielerDaten[playerid][pBann_Minute], SpielerDaten[playerid][pBann_Sekunde], SpielerDaten[playerid][pStartbonus], Name);
    mysql_query(query);
    return 1;
    }Mein Problem ist, dass er am Anfang den Namen erkennt, wie man an dem Log sieht und dann aber beim Ende, wo der Name in Verbindung mit dem WHERE steht nicht erkannt wird, obwohl es genau dasselbe ist. 8|

    Super danke! :)


    Das speichern klappt. Bei dem Rotationswert hat er einen integer, statt einem Float hineingeschrieben, obwohl im Script alles auf Float gestellt war.


    Naja. Teste das ganze jetzt. :)


    Nochmals vielen vielen Dank an euch! :love:


    Vor allem um die Uhrzeit :rolleyes:


    Ihr seid einfach :thumbup:


    /////////////


    Nächstes Problem.


    Habe jetzt das Fahrzeug mit dem Befehl eingefügt und füge jetzt noch ein anderes ein.


    Aber irgendwie speichert er jetzt das 1. Fahrzeug einfach zum 2. mal ein.


    Eine einfache Kopie.


    stock CreateVehicleForPlayer(Besitzer, Model, Farbe1, Farbe2, Tueren, Float:X, Float:Y, Float:Z, Float:A, Respawn, Nummernschild[])
    {
    new query[1024], Besitzer2[MAX_PLAYER_NAME];
    GetPlayerName(Besitzer, Besitzer2, MAX_PLAYER_NAME);
    mysql_real_escape_string(Besitzer2, Besitzer2);
    format(query, sizeof(query), "INSERT INTO `grra`(`Besitzer`,`Model`,`Farbe_1`,`Farbe_2`,`Tueren`,`PosX`,`PosY`,`PosZ`,`PosA`,`Respawn`,`Nummernschild`) VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d', '%s')", Besitzer2, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
    mysql_query(query);
    AutoLaden(Besitzer);
    return true;
    }


    stock AutoLaden(playerid)
    {
    for(new i=0; i!=MAX_VEHICLES; i++)
    {
    if(!strcmp(SpielerDaten[playerid][pName], AutoDaten[i][aBesitzer]) && strlen(AutoDaten[i][aBesitzer]))
    {
    DestroyVehicle(i); // Fahrzeug wird auch nicht zerstört, welches schon da ist. --> Fahrzeuge werden bei OnGameModeInit erstellt.
    format(AutoDaten[i][aBesitzer],64,mysql_GetString("grra", "Besitzer", "Besitzer", SpielerDaten[playerid][pName]));
    AutoDaten[i][aModel] = mysql_GetInt("grra", "Model", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aFarbe1] = mysql_GetInt("grra", "Farbe_1", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aFarbe2] = mysql_GetInt("grra", "Farbe_2", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aTueren] = mysql_GetInt("grra", "Tueren", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aPosX] = mysql_GetFloat("grra", "PosX", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aPosY] = mysql_GetFloat("grra", "PosY", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aPosZ] = mysql_GetFloat("grra", "PosZ", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aPosA] = mysql_GetFloat("grra", "PosA", "Besitzer", SpielerDaten[playerid][pName]);
    AutoDaten[i][aRespawn] = mysql_GetInt("grra", "Respawn", "Besitzer", SpielerDaten[playerid][pName]);
    format(AutoDaten[i][aNummernschild],16,mysql_GetString("grra", "Nummernschild", "Besitzer", SpielerDaten[playerid][pName]));
    AutoDaten[i][aID] = AddStaticVehicleEx(AutoDaten[i][aModel], AutoDaten[i][aPosX], AutoDaten[i][aPosY], AutoDaten[i][aPosZ], AutoDaten[i][aPosA], AutoDaten[i][aFarbe1], AutoDaten[i][aFarbe2], AutoDaten[i][aRespawn]);
    SetVehicleNumberPlate(i, AutoDaten[i][aNummernschild]);
    }
    }
    return 1;
    }
    Wo könnten die Fehler liegen?


    P.S.:
    Der Befehl
    ocmd:pAuto(playerid, params[])
    {
    if(SpielerDaten[playerid][pAdmin] >= 3)
    {
    new Besitzer, Model, Farbe1, Farbe2, Tueren, Respawn, Nummernschild[16], Float:X, Float:Y, Float:Z, Float:A;
    if(sscanf(params, "dddddds[16]", Besitzer, Model, Farbe1, Farbe2, Tueren, Respawn, Nummernschild)) return SendClientMessage(playerid, Rot, "Benutzung: /pAuto [ID] [Model] [Farbe1] [Farbe2] [Tueren] [Respawn] [Nummernschild]");
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    CreateVehicleForPlayer(Besitzer, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
    }
    return 1;
    }

    Erledigt und getestet. Derselbe Error mit der Syntax erscheint.


    So sieht es in meinem Script derzeit aus:
    format(query, sizeof(query), "INSERT INTO `grra`('Besitzer','Model','Farbe_1','Farbe_2','Tueren','PosX','PosY','PosZ','PosA','Respawn','Nummernschild') VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d', '%s')", Besitzer2, Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn, Nummernschild);
    Dann probiere ich es mit diesen schrägen Teil nochmal in den Spalten aus :)


    Server braucht dank dem Debug immer paar Minuten bis er da ist :D

    Entschuldigung :) Sollte nicht unfreundlich rüberkommen.


    Bin gerade voll froh, dass hier Leute sind wie ihr. :)


    Okay, erneuter Test
    [01:38:55] CMySQLHandler::Query(INSERT INTO 'grra' ('Besitzer', 'Model', 'Farbe_1', 'Farbe_2', 'Tueren', 'PosX', 'PosY', 'PosZ', 'PosA', 'Respawn', 'Nummernschild') VALUES ('Python', '522', '6', '0', '0', '2202.324218', '1848.419189', '10.820312', '89.373367', '300', 'Python')) - An error has occured. (Error ID: 1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''grra' ('Besitzer', 'Model', 'Farbe_1', 'Farbe_2', 'Tueren', 'PosX', 'PosY', 'Po' at line 1)

    [01:25:36] CMySQLHandler::FreeResult() - Result was successfully free'd.


    [01:25:51] >> mysql_real_escape_string( Connection handle: 1 )


    [01:25:51] CMySQLHandler::EscapeString(Python); - Escaped 6 characters to Python.


    [01:25:51] >> mysql_query( Connection handle: 1 )


    [01:25:51] CMySQLHandler::Query(INSERT INTO `grra` (`Model`, `Farbe1`, `Farbe2`, `Tueren`, `PosX`, `PosY`, `PosZ`, `PosA`, `Respawn`) VALUES ('522', '6', '0', '0', '2204.454589', '1848.268432', '10.820312', '85.926658', '300')) - An error has occured. (Error ID: 1054, Unknown column 'Farbe1' in 'field list')


    [01:25:51] >> mysql_query( Connection handle: 1 )


    [01:25:51] CMySQLHandler::Query(UPDATE `grra` SET `Besitzer` = `Python` WHERE `PosX` = '2204.454589') - An error has occured. (Error ID: 1054, Unknown column 'Python' in 'field list')


    [01:25:51] >> mysql_query( Connection handle: 1 )


    [01:25:51] CMySQLHandler::Query(UPDATE `grra` SET `Nummernschild` = `Python` WHERE `PosX` = '2204.454589') - An error has occured. (Error ID: 1054, Unknown column 'Python' in 'field list')


    [01:25:54] >> mysql_real_escape_string( Connection handle: 1 )


    [01:25:54] CMySQLHandler::EscapeString(grrs); - Escaped 4 characters to grrs.


    [01:25:54] >> mysql_real_escape_string( Connection handle: 1 )
    Da haben wir den Error-Salat ^^


    Error ID: 1054, Unknown column 'Python' in 'field list'
    Error ID: 1054, Unknown column 'Farbe1' in 'field list'

    783115 Zeilen ! Dafuq? --> Sind das für die paar Minuten immer so viele Logzeilen? :huh:


    Ich editiere gleich mal eher das Ende hier hin, wo ich den Befehl ausprobiert habe. ;)


    [01:13:18] CMySQLHandler::EscapeString(Exp); - Escaped 3 characters to Exp.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(Name); - Escaped 4 characters to Name.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(); - Escaped 0 characters to .
    [01:13:18] >> mysql_query( Connection handle: 1 )
    [01:13:18] CMySQLHandler::Query(UPDATE `grrs` SET `Exp` = '0' WHERE `Name` = '') - Successfully executed.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(grrs); - Escaped 4 characters to grrs.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(Expzeit); - Escaped 7 characters to Expzeit.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(Name); - Escaped 4 characters to Name.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(); - Escaped 0 characters to .
    [01:13:18] >> mysql_query( Connection handle: 1 )
    [01:13:18] CMySQLHandler::Query(UPDATE `grrs` SET `Expzeit` = '0' WHERE `Name` = '') - Successfully executed.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(grrs); - Escaped 4 characters to grrs.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(Fraktion); - Escaped 8 characters to Fraktion.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(Name); - Escaped 4 characters to Name.
    [01:13:18] >> mysql_real_escape_string( Connection handle: 1 )
    [01:13:18] CMySQLHandler::EscapeString(); - Escaped 0 characters to .
    Die letzten 25 Zeilen

    Mein Problem ist, dass der folgende stock nicht funktioniert.
    stock CreateVehicleForPlayer(Besitzer, Model, Farbe1, Farbe2, Tueren, Float:X, Float:Y, Float:Z, Float:A, Respawn, Nummernschild[])
    {
    new query[512], Besitzer2[MAX_PLAYER_NAME];
    GetPlayerName(Besitzer, Besitzer2, MAX_PLAYER_NAME);
    mysql_real_escape_string(Besitzer2, Besitzer2);
    format(query, sizeof(query), "INSERT INTO `grra` (`Model`, `Farbe1`, `Farbe2`, `Tueren`, `PosX`, `PosY`, `PosZ`, `PosA`, `Respawn`) VALUES ('%d', '%d', '%d', '%d', '%f', '%f', '%f', '%f', '%d')", Model, Farbe1, Farbe2, Tueren, X, Y, Z, A, Respawn);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `grra` SET `Besitzer` = '%s' WHERE `PosX` = '%f'", Besitzer2, X);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `grra` SET `Nummernschild` = '%s' WHERE `PosX` = '%f'", Nummernschild, X);
    mysql_query(query);
    mysql_free_result();
    AutoLaden(Besitzer);
    return true;
    }

    Ja habe ich. Der Klammerfehler war nicht oben im Script, sondern versteckt in einem stock, welcher irgendwo im Script war. :o


    Keine Ahnung, wieso er nur bei diesen beiden Errors gemeckert hat.