Autohaus, Auto soll erstellt werden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Quellcode

    1. if(response)
    2. {
    3. switch(listitem)
    4. {
    5. case 0: //Eigene Fahrzeugschlüssel
    6. {
    7. new string[300], name;
    8. format(string,sizeof(string),"%s{FFFFFF}Fahrzeug\t{FFFFFF}kenn\t{FFFFFF}current \n\
    9. ", string);
    10. for(new i = 0; i < sizeof(PCar[]); i++)
    11. {
    12. name = PCar[playerid][i][P_MID] - 400;
    13. if(name < 0 || name >= sizeof(carNames)) format(string,sizeof(string),"%sLeer\t/\n", string);
    14. else if(pInfo[playerid][P_Current] > 0)
    15. {
    16. format(string,sizeof(string),"%s{FFFFFF}%s\tSF-1337\tX\n", string, carNames[name]);
    17. }
    18. else
    19. {
    20. format(string,sizeof(string),"%s{FFFFFF}%s\tSF-1337\n", string, carNames[name]);
    21. }
    22. }
    23. ShowPlayerDialog(playerid, DIALOG_FAHRZEUG3, DIALOG_STYLE_TABLIST_HEADERS, "Fahrzeugschlüssel - Auswählen", string, "Auswählen","Zurück");
    24. }
    25. case 1: //Andere Fahrzeugschlüssel
    26. {
    27. }
    28. }
    29. }
    30. else
    31. {
    32. //Wenn er wieder zurück ins Hautpmenü will
    33. }
    34. return 1;
    35. }
    Alles anzeigen
  • Ok, dann kannst du es auch so machen:
    Ändere

    PAWN-Quellcode

    1. else if(pInfo[playerid][P_Current] > 0)

    zu:

    PAWN-Quellcode

    1. else if(pInfo[playerid][P_Current] == i)


    Und der andere Code dann so:

    PAWN-Quellcode

    1. if(dialogid == DIALOG_FAHRZEUG3)
    2. {
    3. if(response)
    4. {
    5. if(PCar[playerid][listitem][P_MID] < 400)
    6. {
    7. //Fahrzeug <Leer> ausgewählt
    8. }
    9. else if(pInfo[playerid][P_Current] == listitem)
    10. {
    11. //P_Current bereits dieses Fahrzeug
    12. }
    13. else
    14. {
    15. //Key auswählen
    16. pInfo[playerid][P_Current] = listitem;
    17. }
    18. }
    19. else
    20. {
    21. //Wenn er wieder zurück ins Hautpmenü will
    22. }
    23. return 1;
    24. }
    Alles anzeigen


    Sorry für die Verwirrung. Da bin ich noch vom Ursprung ausgegangen.
  • PAWN-Quellcode

    1. if(dialogid == DIALOG_AUTOHAUS5) //ZULASSUNG JA LASTSCHRIFT
    2. {
    3. if(response)
    4. {
    5. new vid = GetPlayerVehicleID(playerid);
    6. for(new i = 0; i < sizeof(Autohausauto1); i++)
    7. {
    8. if(IsPlayerInVehicle(playerid, Autohausauto1[i]))
    9. {
    10. if(vid == Autohausauto1[i])
    11. {
    12. if(pInfo[playerid][pBankgeld] < Autohausauto1_preis[i])
    13. {
    14. RemovePlayerFromVehicle(playerid);
    15. new string[100];
    16. format(string, sizeof(string), "{bc4343}Du brauchst $%s auf deinem Konto damit du dir den %s kaufen kannst.",sMoney(Autohausauto1_preis[i]),Autohausauto1_name[i]);
    17. SendClientMessage(playerid,-1,string);
    18. }
    19. else
    20. {
    21. RemovePlayerFromVehicle(playerid);
    22. ShowPlayerDialog(playerid, DIALOG_AUTOHAUS10, DIALOG_STYLE_MSGBOX, "{F39C12}Los Santos Super-Sport Autohaus", "\t{FFFFFF}«{F39C12} Zahlung erfolgreich {FFFFFF}»\nDein Fahrzeug steht auf dem Parkplatz", "Verstanden", "");
    23. new SP = random(sizeof(SAHSpawn));
    24. new FB = random(127);
    25. for(new d = 0; d < sizeof(PCar[]); d++)
    26. {
    27. //Prüfe, ob Fahrzeug existiert. Wenn nicht, nutze den Slot und lege das Fahrzeug an.
    28. if(PCar[playerid][d][P_MID] == 0)
    29. {
    30. PCar[playerid][d][P_uID] = pInfo[playerid][db_id];
    31. PCar[playerid][d][P_X] = SAHSpawn[SP][0];
    32. PCar[playerid][d][P_Y] = SAHSpawn[SP][1];
    33. PCar[playerid][d][P_Z] = SAHSpawn[SP][2];
    34. PCar[playerid][d][P_R] = SAHSpawn[SP][3];
    35. PCar[playerid][d][P_C1] = FB;
    36. PCar[playerid][d][P_C2] = FB;
    37. PCar[playerid][d][P_MID] = GetVehicleModel(Autohausauto1[i]);
    38. PCar[playerid][d][P_dbID] = pInfo[playerid][db_id];
    39. PCar[playerid][d][P_VID] = CreateVehicle(PCar[playerid][d][P_MID],PCar[playerid][d][P_X] , PCar[playerid][d][P_Y], PCar[playerid][d][P_Z], PCar[playerid][d][P_R], PCar[playerid][d][P_C1], PCar[playerid][d][P_C2], -1);
    40. new query[256];
    41. mysql_format(db, query, sizeof(query), "INSERT INTO personalcars (P_X, P_Y, P_Z, P_R, P_C1, P_C2, P_MID, P_uID) VALUES ('%f','%f','%f','%f','%d','%d','%d','%d')",PCar[playerid][d][P_X],PCar[playerid][d][P_Y],PCar[playerid][d][P_Z],PCar[playerid][d][P_R],PCar[playerid][d][P_C1],PCar[playerid][d][P_C2],PCar[playerid][d][P_MID],PCar[playerid][d][P_uID]);
    42. mysql_pquery(db,query);
    43. break;
    44. }
    45. }
    46. }
    47. }
    48. }
    49. }
    50. }
    51. else
    52. {
    53. RemovePlayerFromVehicle(playerid);
    54. }
    55. return 1;
    56. }
    Alles anzeigen
    Also erst einmal muss ich das so hinbekommen das ich mehrere Fahrzeuge brauch.
    Hier wird ja gefragt ob P_MID == 0 ist dann legt er ja alles an, kann ich die Abfragen auch mit P_MID1, P_MID2, P_MID3, P_MID4

    Dazu was muss ich jetzt alles nochmal in der Datenbank kopieren?
    Also welche Variablen brauche ich doppelt damit es funktioniert

    Also würde ich das machen wer der Code locker 200 Zeilen lang.



    PAWN-Quellcode

    1. enum PCarEnum{
    2. Float:P_X,
    3. Float:P_Y,
    4. Float:P_Z,
    5. Float:P_R,
    6. P_C1,
    7. P_C2,
    8. P_MID,
    9. P_VID,
    10. P_dbID,
    11. P_uID,
    12. P_Fuel
    13. };
    Alles anzeigen
  • Nein, das macht er nicht.
    Dafür ist der Code da:

    PAWN-Quellcode

    1. for(new d = 0; d < sizeof(PCar[]); d++)
    2. {
    3. //Prüfe, ob Fahrzeug existiert. Wenn nicht, nutze den Slot und lege das Fahrzeug an.
    4. if(PCar[playerid][d][P_MID] == 0)


    Ist in Slot 0 schon ein Fahrzeug, nimmt er Slot 1. Ist dort auch schon eins, nimmt er Slot 2, etc.
  • Oh, habe darauf gar nicht geachtet, jetzt ergibt alles einen Sinn für mich.
    Ein Zulassungssystem habe ich auch schon erstellt mit Kennzeichen.

    Er speichert mir den Fuel nicht ab. Laden tut er aber wenn ich ein Wert in die Tabelle gebe.

    PAWN-Quellcode

    1. forward SavePlayerCars(playerid);
    2. public SavePlayerCars(playerid)
    3. {
    4. new query[512];
    5. for(new i = 0; i < sizeof(PCar[]); i++)
    6. {
    7. if(PCar[playerid][i][P_MID] == 0) continue;
    8. mysql_format(db, query, sizeof(query), "UPDATE personalcars SET P_fuel = '%d' WHERE dbID = '%d'", vehData[PCar[playerid][i][P_VID]][e_fuel], PCar[playerid][i][P_dbID]);
    9. mysql_pquery(db, query);
    10. }
    11. return 1;
    12. }
    Alles anzeigen
    Kann ich irgendwie ohne großartig die Tankart wieder zu speichern sie irgendwie in einem Dialog anzeigen lassen?
    Haben da ja was gemacht mit e_fuelType


    Dazu wollte ich noch:
    Spieler1 = X
    Spieler2 = Y

    Wenn Spieler X auf dem Server ist kann Spieler Y sein Fahrzeug öffnen wenn er seinen Schlüssel hat.
    Das Fahrzeug wird trotzdem im Dialog angezeigt und mit einer anderen Variable wird noch im Dialog angezeigt ob das Fahrzeug überhaupt dar ist.
    Fahrzeug wird natürlich als P_Current wieder gesetzt.
  • Sorry, hatte den Thread schon als gelesen markiert und dann nicht mehr drauf geachtet.

    BrightLeaN schrieb:

    Er speichert mir den Fuel nicht ab. Laden tut er aber wenn ich ein Wert in die Tabelle gebe.
    Gibt dir der MySQL Log etwas aus?


    BrightLeaN schrieb:

    Kann ich irgendwie ohne großartig die Tankart wieder zu speichern sie irgendwie in einem Dialog anzeigen lassen?
    Grundsätzlich schon, kommt halt drauf an wie dein Code dazu aktuell aussieht.


    BrightLeaN schrieb:

    Wenn Spieler X auf dem Server ist kann Spieler Y sein Fahrzeug öffnen wenn er seinen Schlüssel hat.
    Kannst du das genauer erklären? Willst du den Schlüssel sozusagen an einen anderen Spieler weitergeben?
  • Jeffry schrieb:

    Kannst du das genauer erklären? Willst du den Schlüssel sozusagen an einen anderen Spieler weitergeben?
    Genau man kann irgendwo seinen Schlüssel kopieren lassen für X $. Damit werde ich glaube ich wenig Probleme haben.
    Aber wie gebe ich den Schlüssel weiter und das dann angezeigt wird im Dialog ob das Fahrzeug überhaupt da ist.

    Ist es da kann man das Fahrzeug anklicken wie die eigenen Schlüssel und es ist ein P_Current Fahrzeug

    Mit dem MySqL Log schaue ich morgen noch einmal nach.

    EDIT:


    JEFFRY schrieb:

    Grundsätzlich schon, kommt halt drauf an wie dein Code dazu aktuell aussieht.

    PAWN-Quellcode

    1. v = Vehicle
    2. fuelName[vehDefaultData[v][e_fuelType]]
    Wie mache ich das mit den PCars also im Dialog.

    Zum Fuel speichern:




    Quellcode

    1. [21:17:07] [ERROR] cache_get_row_count: no active cache
    Das habe ich jetzt gefunden im Log der Rest war irrelevant.
    ( prntscr.com/l2od3k )

    Der Code ist gleich wie im Post 107

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BrightLeaN ()

  • BrightLeaN schrieb:

    Aber wie gebe ich den Schlüssel weiter und das dann angezeigt wird im Dialog ob das Fahrzeug überhaupt da ist.
    Ich würde das vermutlich über die Datenbank-ID des Fahrzeugs regeln. Sprich, beim weitergeben des Schlüssels wird die Datenbank-ID des Fahrzeugs von Spieler A in die Variable von Spieler B geschrieben. Gegebenenfalls dazu auch die Model-ID.
    Der Rest muss natürlich vollständig integriert werden, heißt, dass das Fahrzeug beim verlassen nicht gelöscht wird, etc.


    BrightLeaN schrieb:

    Wie mache ich das mit den PCars also im Dialog.
    Zeige das in einem weiteren Tab an, wie das Kennzeichen.


    BrightLeaN schrieb:

    Der Code ist gleich wie im Post 107
    Der Log Eintrag kommt nicht vom Code aus Post 107, da dort kein Zugriff auf den Cache erfolgt.

  • Das war das einzige deswegen dachte ich das.

    Jeffry schrieb:

    Ich würde das vermutlich über die Datenbank-ID des Fahrzeugs regeln. Sprich, beim weitergeben des Schlüssels wird die Datenbank-ID des Fahrzeugs von Spieler A in die Variable von Spieler B geschrieben. Gegebenenfalls dazu auch die Model-ID.
    Der Rest muss natürlich vollständig integriert werden, heißt, dass das Fahrzeug beim verlassen nicht gelöscht wird,

    Ich weiß halt nur nicht wie ich das alles im Code umsetzte, es ist auch schwierig.
    Hab ja schon einen Dialog mit Andere Fahrzeuge aber, so vom Code Aufbau das man halt ein Fahrzeug besitzt wenn es da ist sprich es öffnen kann usw.

    Jeffry schrieb:

    Zeige das in einem weiteren Tab an,
    //EDIT
    Doch nicht hinbekommen


    PAWN-Quellcode

    1. name = PCar[playerid][i][P_MID] - 400;
    2. format(string,sizeof(string),"%s{FFFFFF}%s\t%d\tLS-%d\tX\n", string, carNames[name], fuelName[vehDefaultData[name][e_fuelType]],PCar[playerid][i][P_KZ]);
    Er zeigt mir Ingame zahlen an wie z:b 66 oder 68

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von BrightLeaN ()

  • BrightLeaN schrieb:

    Er zeigt mir Ingame zahlen an wie z:b 66 oder 68
    Nutze %s da du einen String anzeigst.


    BrightLeaN schrieb:

    Ich weiß halt nur nicht wie ich das alles im Code umsetzte, es ist auch schwierig.
    Ich rate dir, erst mal an den weiteren Systemen zu arbeiten, Erfahrung zu sammeln, und dann daran weiter zu machen, wenn du eine Idee hast, wie du es in deinen gesamten Code integrieren kannst.
  • Ja du hast Recht, ich bin auch der Meinung ich komme mehr zurecht auch wenn man es vielleicht nicht so sehen kann.

    PAWN-Quellcode

    1. forward SavePlayerCars(playerid);
    2. public SavePlayerCars(playerid)
    3. {
    4. new query[512];
    5. for(new i = 0; i < sizeof(PCar[]); i++)
    6. {
    7. if(PCar[playerid][i][P_MID] == 0) continue;
    8. mysql_format(db, query, sizeof(query), "UPDATE personalcars SET P_fuel = '%d' WHERE dbID = '%d'", vehData[PCar[playerid][i][P_VID]][e_fuel], PCar[playerid][i][P_dbID]);
    9. mysql_pquery(db, query);
    10. }
    11. return 1;
    12. }
    Alles anzeigen
    Hier wid doch gefragt ob M_ID == 0 ist fals ja macht er weiter oder nicht?
    Aber es soll es doch machen wenn es nicht = 0 ist dann existiert doch ein Fahrzeug oder nicht?
  • BrightLeaN schrieb:

    Ja du hast Recht, ich bin auch der Meinung ich komme mehr zurecht auch wenn man es vielleicht nicht so sehen kann.
    Natürlich, das entwickelt sich mit der Zeit. Deine Systeme solltest du immer so aufbauen, dass zuerst das Grundgerüst steht und funktioniert. Solche zusätzlichen Funktionen macht man dann später, da diese oft weitaus mehr Aufwand bedeuten. (~ 20% Aufwand für die ersten 80% des Systems, und 80% Aufwand für die restlichen 20% des Systems).


    BrightLeaN schrieb:

    Hier wid doch gefragt ob M_ID == 0 ist fals ja macht er weiter oder nicht?
    continue heißt, gehe sofort zum nächsten Schleifendurchlauf.
    Sprich, wenn die MID 0 ist, dann geht er sofort zum nächsten "i", ohne das Query auszuführen.
  • Gerne! :)

    Und wie gesagt, nehme dir das Thema mit der Weitergabe des Schlüssels für später irgendwann vor, wenn du etwas länger auch mit dem System gearbeitet hast und eventuell auch noch weitere Dinge eingebaut hast.
    Mit der Zeit kommt da die Erfahrung und du hast dann auch schneller Ideen, wie du das in deinem Code am besten und geschicktesten umsetzen kannst.