Beiträge von ENEF

    So richtig?
    stock LoadVehicles()
    {
    new string[3], query[128], bool:added;
    for(new i=0; i < MAX_VEHICLES; i++)
    {
    format(string, sizeof string, "%d", i);
    format(VehInfo[i][Grund], 32, mysql_GetString("Autos", "Grund", "ID", string));
    VehInfo[i][ModellID] = mysql_GetInt("Auto", "ModellID", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Fraktion", "ID", string);
    VehInfo[i][PosX] = mysql_GetFloat("Auto", "PosX", "ID", string);
    VehInfo[i][PosY] = mysql_GetFloat("Auto", "PosY", "ID", string);
    VehInfo[i][PosZ] = mysql_GetFloat("Auto", "PosZ", "ID", string);
    VehInfo[i][Abgeschleppt] = mysql_GetInt("Auto", "Abgeschleppt", "ID", string);
    VehInfo[i][inADAC] = mysql_GetInt("Auto", "inADAC", "ID", string);
    VehInfo[i][Preis] = mysql_GetInt("Auto", "Preis", "ID", string);
    VehInfo[i][NewX] = mysql_GetFloat("Auto", "NewX", "ID", string);
    VehInfo[i][NewY] = mysql_GetFloat("Auto", "NewY", "ID", string);
    VehInfo[i][NewZ] = mysql_GetFloat("Auto", "NewZ", "ID", string);
    VehInfo[i][Farbe1] = mysql_GetFloat("Auto", "Farbe1", "ID", string);
    VehInfo[i][Farbe2] = mysql_GetFloat("Auto", "Farbe2", "ID", string);
    CreateVehicle(FrakAutos[g][ModellID],FrakAutos[g][PosX],FrakAutos[g][PosY],FrakAutos[g][PosZ],FrakAutos[g][PosR],FrakAutos[g][Farbe1],FrakAutos[g][Farbe2],-1);//250

    }
    if(added) SaveVehicles();
    return 1;
    }


    Wie sieht es aus mit meinem Speicher Stock? muss ich den auch noch verändern?
    stock SaveVehicles()
    {
    new string[34];
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    format(string, sizeof string, "%d", i);
    mysql_SetInt("Autos", "ModellID", VehInfo[i][ModellID], "ID", string);
    mysql_SetInt("Autos", "Fraktion", VehInfo[i][Fraktion], "ID", string);
    mysql_SetFloat("Autos", "PosX", VehInfo[i][PosX], "ID", string);
    mysql_SetFloat("Autos", "PosY", VehInfo[i][PosY], "ID", string);
    mysql_SetFloat("Autos", "PosZ", VehInfo[i][PosZ], "ID", string);
    mysql_SetInt("Autos", "Abgeschleppt", VehInfo[i][Abgeschleppt], "ID", string);
    mysql_SetInt("Autos", "inADAC", VehInfo[i][inADAC], "ID", string);
    mysql_SetInt("Autos", "Preis", VehInfo[i][Preis], "ID", string);
    mysql_SetString("Autos", "Grund", VehInfo[i][Grund], "ID", string);
    mysql_SetFloat("Autos", "NewX", VehInfo[i][NewX], "ID", string);
    mysql_SetFloat("Autos", "NewY", VehInfo[i][NewY], "ID", string);
    mysql_SetFloat("Autos", "NewZ", VehInfo[i][NewZ], "ID", string);

    }
    return 1;
    }

    Wieso im Enum? Das Enum ist doch nur dazu da die Fahrzeuge zu erstellen oder?


    Hier sorry :/
    stock LoadVehicles()
    {
    new string[3], query[128], bool:added;
    for(new i=0; i < MAX_VEHICLES; i++)
    {
    format(string, sizeof string, "%d", i);
    format(VehInfo[i][Grund], 32, mysql_GetString("Autos", "Grund", "ID", string));
    VehInfo[i][ModellID] = mysql_GetInt("Auto", "ModellID", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Fraktion", "ID", string);
    VehInfo[i][PosX] = mysql_GetFloat("Auto", "PosX", "ID", string);
    VehInfo[i][PosY] = mysql_GetFloat("Auto", "PosY", "ID", string);
    VehInfo[i][PosZ] = mysql_GetFloat("Auto", "PosZ", "ID", string);
    VehInfo[i][Abgeschleppt] = mysql_GetInt("Auto", "Abgeschleppt", "ID", string);
    VehInfo[i][inADAC] = mysql_GetInt("Auto", "inADAC", "ID", string);
    VehInfo[i][Preis] = mysql_GetInt("Auto", "Preis", "ID", string);
    VehInfo[i][NewX] = mysql_GetFloat("Auto", "NewX", "ID", string);
    VehInfo[i][NewY] = mysql_GetFloat("Auto", "NewY", "ID", string);
    VehInfo[i][NewZ] = mysql_GetFloat("Auto", "NewZ", "ID", string);
    }
    if(added) SaveVehicles();
    return 1;
    }


    Wo soll das CreateVehicle hin?

    Hi Jeffry,


    hier ist der Code.
    Müsste alles richtig sein :)


    stock LoadVehicles()
    {
    new string[3], query[128], bool:added;
    for(new i=0; i < MAX_VEHICLES; i++)
    {
    format(string, sizeof string, "%d", i);
    format(VehInfo[i][Grund], 32, mysql_GetString("Autos", "Grund", "ID", string));
    VehInfo[i][ModellID] = mysql_GetInt("Auto", "ModellID", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Fraktion", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetFloat("Auto", "PosX", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetFloat("Auto", "PosY", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetFloat("Auto", "PosZ", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Abgeschleppt", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "inADAC", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetInt("Auto", "Preis", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetFloat("Auto", "NewX", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetFloat("Auto", "NewY", "ID", string);
    VehInfo[i][Fraktion] = mysql_GetFloat("Auto", "NewZ", "ID", string);
    }
    if(added) SaveVehicles();
    return 1;
    }

    Okey.
    Hab es jetzt mal so gemacht und unerklärlicherweise hab ich 1 error und 1 Warning


    enum VehEnum {
    ModellID,
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    Float:PosR,
    Farbe1,
    Farbe2
    }

    new FrakAutos[MAX_VEHICLES][VehEnum] =//MAX_VEHICLES wie beim Speicher Stock :)
    {
    //ModelID, Frak, X,Y,Z,Farbe1,Farbe2
    {597,-1595.8781,693.9594,-5.4741,180.1654, 198, 1},//zeile 123
    {597,-1595.8781,693.9594,-5.4741,179.5844, 198, 1}//zeile 123


    };//173


    for(new g;g<MAX_VEHICLES;g++)
    {
    CreateVehicle(FrakAutos[g][ModellID],FrakAutos[g][PosX],FrakAutos[g][PosY],FrakAutos[g][PosZ],FrakAutos[g][PosR],FrakAutos[g][Farbe1],FrakAutos[g][Farbe2]);//250
    }


    C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(173) : error 052: multi-dimensional arrays must be fully initialized
    C:\Users\Tobi\Desktop\samp03z_svr_R1_win32\gamemodes\newrl.pwn(250) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Alles richtig sonst?

    Ah ok, danke :)


    Meine Autos werden momentan ganz normal gespeichert..

    new PolizeiFahrzeuge[19];
    forward PolizeiFahrzeug(vehicleid);


    Ongamemodeinit


    PolizeiFahrzeuge[0] = AddStaticVehicle(597,-1595.8781,693.9594,-5.4741,180.1654,198,1); // CC1
    PolizeiFahrzeuge[1] = AddStaticVehicle(597,-1600.1920,693.9489,-5.4725,179.5844,198,1); // CC2


    Und dann halt die abfrage ob er cop ist moment


    public PolizeiFahrzeug(vehicleid)
    {
    for(new i = 0; i < sizeof(PolizeiFahrzeuge); i++)
    {
    if(vehicleid == PolizeiFahrzeuge[i])
    {
    return 1;
    }
    }
    return 0;
    }
    //___________Fahrzeug Ende___________//
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    //___________Fahrzeug Defi___________//
    if(PolizeiFahrzeug(vehicleid) && !ispassenger)
    {
    if(SpielerInfo[playerid][pTeam] != 1 && isinADAC[playerid] != 1) {
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    TogglePlayerControllable(playerid,false);
    TogglePlayerControllable(playerid,true); }
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    //____Fahrzeuge___//
    new vehicleid = GetPlayerVehicleID(playerid);
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(PolizeiFahrzeug(vehicleid) && SpielerInfo[playerid][pTeam] != 1 && isinADAC[playerid] != 1) {
    SendClientMessage(playerid,hinweis1,"Du bist kein Beamter der Bundespolizei!");
    return RemovePlayerFromVehicle(playerid);
    }
    }


    Wenn es eine etwas Simplere methode als alle in Case einfügen geben würde, wäre das etwas besser :D

    Danke erstmal für eine Informative und Hilfreiche Antwort! :)


    Habe jetzt mal Schritt für Schritt alles so gemacht wie du gesagt hast :)(natürlich hoffentlich richtig :thumbup: )


    Bin nun bei Schritt 3 (Save/Load)


    Den Save Stock hab ich folgt gemacht :


    stock SaveVehicles()
    {
    new string[34];
    for(new i=1; i < MAX_VEHICLES; i++)
    {
    format(string, sizeof string, "%d", i);
    mysql_SetInt("Autos", "ModellID", VehInfo[i][ModellID], "ID", string);
    mysql_SetInt("Autos", "Fraktion", VehInfo[i][Fraktion], "ID", string);
    mysql_SetFloat("Autos", "PosX", VehInfo[i][PosX], "ID", string);
    mysql_SetFloat("Autos", "PosY", VehInfo[i][PosY], "ID", string);
    mysql_SetFloat("Autos", "PosZ", VehInfo[i][PosZ], "ID", string);
    mysql_SetInt("Autos", "Abgeschleppt", VehInfo[i][Abgeschleppt], "ID", string);
    mysql_SetInt("Autos", "inADAC", VehInfo[i][inADAC], "ID", string);
    mysql_SetInt("Autos", "Preis", VehInfo[i][Preis], "ID", string);
    mysql_SetString("Autos", "Grund", VehInfo[i][Grund], "ID", string);
    mysql_SetFloat("Autos", "NewX", VehInfo[i][NewX], "ID", string);
    mysql_SetFloat("Autos", "NewY", VehInfo[i][NewY], "ID", string);
    mysql_SetFloat("Autos", "NewZ", VehInfo[i][NewZ], "ID", string);

    }
    return 1;
    }


    Aber wenn ich mir jetzt den Ladestock von der Kasse anschaue verwirrt es mich etwas wegen den "Case"


    Weil es gibt ja viele viele Autos, muss ich dann jedes einzelne in ein Kase schreiben oder wie macht man das ?
    Wie definier ich das jetzt? mich verwirrt das etwas :p
    noch mal den Ladestock:
    stock LoadKassen()
    {
    new string[3], query[128], bool:added;
    for(new i=1; i < MAX_FRAKTION; i++)
    {
    format(string, sizeof string, "%d", i);
    format(KassenInfo[i][fName], 32, mysql_GetString("Kassen", "Name", "ID", string));
    if(!strlen(KassenInfo[i][fName]))
    {
    switch(i)
    {
    case 1: format(KassenInfo[i][fName], 32, "Staatskasse");
    case 2: format(KassenInfo[i][fName], 32, "Test1");
    case 3: format(KassenInfo[i][fName], 32, "Test2");
    case 4: format(KassenInfo[i][fName], 32, "Test3");
    case 5: format(KassenInfo[i][fName], 32, "ADAC");
    }
    format(query, sizeof(query), "INSERT INTO Kassen (ID) VALUES ('%d')", i);
    mysql_query(query);
    added = true;
    }
    KassenInfo[i][fGeld] = mysql_GetInt("Kassen", "Geld", "ID", string);
    KassenInfo[i][fDrogen] = mysql_GetInt("Kassen", "Drogen", "ID", string);
    KassenInfo[i][fWaffen] = mysql_GetInt("Kassen", "Waffen", "ID", string);
    }
    if(added) SaveKassen();
    return 1;
    }

    Hallo und schon wieder ich, mit paar neuen Fragen :)


    mir wurde in letzter Zeit viel geholfen, da ich momentan versuche ein ADAC(Ordnungsamt) System zu erstellen.
    Kurze Info damit jeder weiß um was es geht.
    ADAC Mitglieder haben eine Zone, in der sie alle Fahrzeuge fahren können(um sie zu Parken).
    Nun dachte ich mir, dass abgeschleppte Autos in dieser Zone auch freigekauft werden sollen.
    Da hab ich mir überlegt das so zu machen:
    Wenn ein ADAC Mitglied nun ein CopCar abschleppt und es in die Zone bringt, kann er mit /oParken [Summe][Grund] ein Fahrzeug dort parken.
    Dieses Fahrzeug soll dann nicht mehr Respawnen und auch nach einen Server restart wieder dort spawnen.(Solange man es nicht freigekauft hat)
    Steigt man in ein Fahrzeug ein um es "Freizukaufen" soll ein kleines Dialog erscheinen, mit dem Preis zum freikaufen und der Grund des abschleppens(Das kann ich noch selbst).
    So jetzt wird es kompliziert, ich habe eigentlich meine Fahrzeuge im Script fest definiert(unter OnGamemodeInit) das würde ja dann nicht mehr gehen.
    Ich will das jetzt über MySQL machen und zwar so irgendwie.
    Eine neue Tabelle mit dem Namen Fahrzeuge erstellen, darin wird gespeichert
    Fraktion(zb auf 1 für Cops)
    ModellID(560 bsp. Sultan)
    Float: PosX
    Float: PosY // Das sollen die Koord. sein wo es üblicherweiße Spawnt bsp SFPD
    Float: PosZ
    Abgeschleppt//Falls auf 1 darf es nicht mehr bei dem üblichen Spawn spawnen!
    inADAC//Das es in der ADAC Zone ist und die ADAC'ler vollsten Zugriff auf das Fahrzeug haben
    Preis
    Grund
    Float: NewX
    Float: NewY//Stattdessen soll es hier Spawnen(Da wo der ADAC /oPark gemacht hat)
    Float: NewZ


    Und wenn es freigekauft wurde, wird abgeschleppt wieder auf 0 gestellt und das Auto hat seinen üblichen Spawn.


    Jetzt meine Frage, ist das sehr aufwändig? Wenn überhaupt sogar möglich?
    Geht die Abfrage dann noch, dass nur Cops das Auto fahren dürfen?(ja oder)
    Und wie müsste ich die Fahrzeuge denn Speichern lassen? Oder gibt es Tutorials mit denen ich was anfangen könnte?


    Wäre sehr froh darüber, wenn ihr mir Tipps und Hilfe anbieten könntet :)


    Mit freundlichen Grüßen


    TV :thumbup:

    [23:17:18] I couldn't load any gamemode scripts. Please verify your server.cfg
    [23:17:18] It needs a gamemode0 line at the very least.



    Schreib den richtigen Namen deines GM in die CFG und ändere




    So müsste es gehen(WICHTIG: Ändere den Gamemode Namen zu dem GM, dass du benutzen möchtest!)


    Falls was nicht klappt schreib mir eine Pn :)


    MfG :thumbup:

    Ups das hab ich von Oben Kopiert gehabt und vergessen zu ändern :O


    Also wie man auf dem Screen sieht will ich das jede Kasse ihre ID hat und ihren Namen!


    Das heisst adac kasse ist bsp id 1 heisst aber adac kasse!


    ich verzweifle das ist das erste mal wo ich so mit mysql arbeite könnt ihr mir helfen :D?


    Danke :/

    Doch natürlich
    Hier einfach der komplette Code, ist übersichtlicher
    enum KassenDaten
    {
    fName,
    fGeld,
    fDrogen,
    fWaffen
    }
    new KassenInfo[MAX_FRAKTION][KassenDaten];


    mysql_query("SELECT * FROM Kassen");
    mysql_store_result();
    new rows = mysql_num_rows();
    for(new i=rows; i < MAX_FRAKTION; i++)
    {
    if(mysql_CheckKasse(i) == 0)
    {
    switch(i)
    {
    case 1: mysql_query("INSERT INTO Kassen (Name) VALUES ('ADAC');");
    case 2: mysql_query("INSERT INTO Kassen (Name) VALUES ('Staatskasse');");
    case 3: mysql_query("INSERT INTO Kassen (Name) VALUES ('Test');");
    }
    }
    }


    stock SaveKassen()
    {
    new string[3];
    for(new i=0; i < MAX_FRAKTION; i++)
    {
    format(string, sizeof string, "%d", i);
    mysql_SetInt("Kassen", "Geld", Kasseninfo[i][fGeld], "fName", SpielerInfo[playerid][fName]);
    mysql_SetInt("Kassen", "Drogen", Kasseninfo[i][fDrogen], "fName", SpielerInfo[playerid][fName]);
    mysql_SetInt("Kassen", "Waffen", Kasseninfo[i][fWaffen], "fName", SpielerInfo[playerid][fName]);
    }
    return 1;
    }

    Debug ist jetzt ganz oben bei OnGameModeinit


    Und die logg spuckt das aus


    Ist es Jeffry, dass war es die ganze Zeit sorry :D


    Ich habe jetzt den Code mit dem von deinem getauscht und das in der MySQL log steht jetzt so



    Edit:


    Fortschritte!
    ich habe den Public gelöscht und es wieder unter OnGameModeInit geschrieben jetzt erstellt er eine ADAC Kasse

    Ich habe Maddins system da steht nichts unter OnGamemodeinit :)


    aber bei Onplayerrequestetclass


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    if(GetPVarInt(playerid,"Eingeloggt") == 0)
    {
    if(mysql_CheckAccount(playerid) == 0)
    {
    SendClientMessage(playerid, 0xFFFFFFFF,"________Herzlich Wilkommen auf San Francisco Reallife________");
    SendClientMessage(playerid, 0xFFFFFFFF,"Datenbank: Akte konnte nicht gefunden werden. Bitte Registrieren Sie sich!");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren","Bitte gib dein Persöhnliches Passwort ein:","Register","Abbrechen");
    }
    else if(mysql_CheckAccount(playerid) == 1)
    {
    SendClientMessage(playerid, 0xFFFFFFFF,"________Herzlich Wilkommen auf San Francisco Reallife________");
    SendClientMessage(playerid, 0xFFFFFFFF,"Datenbank: Akte wurde gefunden. Bitte Loggen Sie sich ein!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Einloggen","Bitte gib dein Passwort ein:","Login","Abbrechen");
    }
    }
    return 1;
    }


    dann bei dialog
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Regestration","Datenbank: Das angegebene Passwort ist zu kurz!","Register","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    SetSpawnInfo(playerid, 0, 0, -1982.5010,140.7040,27.6875,89.0363, 0, 0, 0, 0, 0, 0 );
    return 1;
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    case DIALOG_LOGIN:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Einloggen","Datenbank: Das angegebene Passwort ist falsch!","Login","Abbrechen");
    return 1;
    }
    else
    {
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    if(!strcmp(inputtext, mysql_ReturnPasswort(PlayerName), true))
    {
    SetPVarInt(playerid,"Eingeloggt",1);
    LoadPlayer(playerid);
    SpawnPlayer(playerid);
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Einloggen","Datenbank: Das war das falsche Passwort!","Login","Abbrechen");
    return 1;
    }
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    }


    und nun noch da wo die verbindung hergestellt wird


    stock Connect_To_Database()
    {
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden.
    if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht.
    {
    //Falls ja wird das in die Console geschrieben und die Funktion wird beendet.
    print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    return true;
    }
    else
    {
    //Falls nicht wird erneut versucht eine verbindung aufzubauen.
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(mysql_ping() == 1)
    {
    print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
    return true;
    }
    else
    {
    //Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren.
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Der Server wird nun beendet!");
    SendRconCommand("exit");
    return true;
    }
    }
    }


    Falls ich irgendwas ausgelassen habe oder du andere sachen brauchst sag es, dann sorry :/


    PS Danke für die hilfe :)