Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

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

Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

  • Dr. Frauenarzt schrieb:

    format(string, sizeof(string), "{2C140F}LyD {050E2B}- %d", Vehicle[pTaxifahrer][vehID]);
    Ich rate einfach mal ins Blaue @Kasakow hat da schon ganz recht mit seiner Aussage.

    Schreib es mal so:

    PAWN-Quellcode

    1. format(string, sizeof(string), "{2C140F}LyD {050E2B}- %d", pTaxifahrer[i]);


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/

    Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: - ().
  • Neu

    Hab mir ein dynamisches Autohaus System gescriptet, Problem ist wenn man ein Autohaus-Vehikel betritt returnt es die falsche Daten, zb anstatt die Modell ID vom Infernus die von den anderem Vehikel, auch 0 bei den Vehikeln.

    Hier paar Systeme, wo ich nicht weiß wo ein Fehler ist:

    PAWN-Quellcode

    1. new DealerShipCarInfo[MAX_VEHICLES][dccEnum];


    PAWN-Quellcode

    1. new vehicleid;
    2. for(new i = 0; i < rows; i ++)
    3. {
    4. DealerShipCarInfo[vehicleid][dcCarExists] = 1;
    5. cache_get_value_name_int(i, "id", DealerShipCarInfo[vehicleid][dcInsertID]);
    6. cache_get_value_name_int(i, "dealershipid", DealerShipCarInfo[vehicleid][dcCarOwner]);
    7. cache_get_value_name_int(i, "model", DealerShipCarInfo[vehicleid][dcModel]);
    8. cache_get_value_name_int(i, "price", DealerShipCarInfo[vehicleid][dcModelPrice]);
    9. cache_get_value_name_float(i, "pos_x", DealerShipCarInfo[vehicleid][dcModelPosX]);
    10. cache_get_value_name_float(i, "pos_y", DealerShipCarInfo[vehicleid][dcModelPosY]);
    11. cache_get_value_name_float(i, "pos_z", DealerShipCarInfo[vehicleid][dcModelPosZ]);
    12. cache_get_value_name_float(i, "pos_a", DealerShipCarInfo[vehicleid][dcModelPosA]);
    13. vehicleid = CreateVehicle(DealerShipCarInfo[vehicleid][dcModel], DealerShipCarInfo[vehicleid][dcModelPosX], DealerShipCarInfo[vehicleid][dcModelPosY], DealerShipCarInfo[vehicleid][dcModelPosZ], DealerShipCarInfo[vehicleid][dcModelPosA], 0, 0, -1);
    14. dcVehicle{vehicleid} = true;
    15. }
    Alles anzeigen


    PAWN-Quellcode

    1. forward OnDealerShipVehCreated(dealershipid, model, price, Float:x, Float:y, Float:z, Float:angle);
    2. public OnDealerShipVehCreated(dealershipid, model, price, Float:x, Float:y, Float:z, Float:angle)
    3. {
    4. new vehicleid;
    5. vehicleid = CreateVehicle(model, x, y, z, angle, 0, 0, -1);
    6. dcVehicle{vehicleid} = true;
    7. DealerShipCarInfo[vehicleid][dcInsertID] = cache_insert_id();
    8. DealerShipCarInfo[vehicleid][dcCarOwner] = dealershipid;
    9. DealerShipCarInfo[vehicleid][dcModel] = model;
    10. DealerShipCarInfo[vehicleid][dcModelPrice] = price;
    11. DealerShipCarInfo[vehicleid][dcModelPosX] = x;
    12. DealerShipCarInfo[vehicleid][dcModelPosY] = y;
    13. DealerShipCarInfo[vehicleid][dcModelPosZ] = z;
    14. DealerShipCarInfo[vehicleid][dcModelPosA] = angle;
    15. return 1;
    16. }
    Alles anzeigen

    Beitrag von FutureStunt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: gelöst ().
  • Neu

    ähhhh stehe gerade bissn aufm Schlauch
    Warum geht der Code nicht ? :D

    Quellcode

    1. {
    2. new query[128];
    3. mysql_format(handle, query, sizeof(query), "SELECT ID FROM Accounts WHERE Name = '%e'", Name);
    4. mysql_pquery(handle, query);
    5. new rows;
    6. cache_get_row_count(rows);
    7. if(rows == 0)
    8. {
    9. return 1;
    10. }
    11. else
    12. {
    13. return 0;
    14. }
    15. }
    Alles anzeigen
    @Jeffry:
    @Kaliber:
    Geht sowas noch ?
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn

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

  • Neu

    @reaL.

    Weil du den Cache erst in einem Callback auswerten lassen kannst.
    Aber noch vorab, du brauchst bei einer zweiseitigen Abfrage, kein return verwenden.
    Weil er wird bei dieser Abfrage Methode nicht das andere von beiden auch noch ausführen.

    Daher schreibe es mal so:

    PAWN-Quellcode

    1. new query[128];
    2. mysql_format(handle, query, sizeof(query), "SELECT ID FROM Accounts WHERE Name = '%e'", Name),
    3. mysql_pquery(handle, query, "Callback", "d", playerid); //d oder i für einen runden Zahlenwert
    4. forward Callback(playerid); //Kann beliebig umbenannt werden
    5. public Callback(playerid)
    6. {
    7. new rows;
    8. cache_get_row_count(rows);
    9. if(rows == 0)
    10. {
    11. }
    12. else
    13. {
    14. }
    15. }
    Alles anzeigen
    Рыба лично :rolleyes:

  • Neu

    Nutze doch bitte die PAWN Box für solch Quellcodes, danke!
    Ja, also.. ich nehme an dass du die soweit die neuste Version von BlueG nutzt, so wie fast jeder heutzutage.
    Von daher, wird das so nicht funktionieren.
    Schicke anstatt deinem Funktionsaufruf, einen Query mit einer Aufforderung an die Datenbank, eine Spalte zu markieren unter wie folgtem Namen: "playername". In dem Callback, arbeitest du dann mit dem Cache der dir zur Verfügung steht.
    Früher ging das noch .. bei R5 habe ich das mal so angewendet mit mysql_num_rows(); unter der gleichen Funktion.
    Sprich, so wie ich es dir Oben geschickt habe.
    Рыба лично :rolleyes:
  • Neu

    reaL. schrieb:

    Geht sowas noch ?
    Die Frage ist doch eher, sollte es so gemacht werden?

    Und die Antwort ist ganz klar nein.

    Das hat seine Gründe, wieso diese Asynchronität eingeführt wurde.

    Natürlich muss man jetzt etwas umdenken, weil man es davor gewohnt war synchron zu arbeiten.

    Du brauchst den Wert nicht, du kannst einfach den Code, der danach kommt in den Callback packen und ihn da weiter ausführen lassen.

    Und dort quasi den Wert verarbeiten lassen.

    C-Quellcode

    1. //Code von Kasakow
    2. new query[41 + MAX_PLAYER_NAME];
    3. mysql_format(handle, query, sizeof(query), "SELECT `ID` FROM `Accounts` WHERE `Name` = '%e'", Name),
    4. mysql_pquery(handle, query, "Callback", "d", playerid);
    5. forward Callback(playerid); //Kann beliebig umbenannt werden
    6. public Callback(playerid)
    7. {
    8. new rows;
    9. cache_get_row_count(rows);
    10. if(rows == 0)
    11. {
    12. //Hier der Code Weiter, wenn nicht
    13. }
    14. else
    15. {
    16. //Hier der Code Weiter wenn doch :D
    17. }
    18. }
    Alles anzeigen


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Neu

    reaL. schrieb:

    Geht sowas noch ?
    Ja, es würde noch gehen, aber wie wie schon von den Vorrednern gesagt, ist es nicht zu empfehlen, außer man weiß zu 100% was man macht.
    Gehen würde es mit mysql_query.
    wiki.sa-mp.com/wiki/MySQL/R40#mysql_query


    Daher, wenn, dann nur mit Bedacht nutzen.
    Wenn in deinem Fall die Funktion nur aus einem (oder mehreren) Befehlen heraus, immer nur für einen Name verwendet wird, dann könnte man das durchgehen lassen, weil es den Aufbau vom Code natürlich deutlich einfacher und übersichtlicher macht, als wenn man bei 20 Befehlen 20 unterschiedliche Callbacks macht, oder alles in eins mit switch packt.
    Wichtig ist auf jeden Fall, cache_delete() danach zu nutzen.