Ja, du kannst den Query auch direkt unter OnGamemodeInit ausführen. Das macht keinen Unterschied.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Okay. Nun werden allerdings zu viele nullen angezeigt, kann man das auch irgendwie reduzieren ? Ich würde das ganz gerne dann so auch fürs Tacho übernehmen haha^^
%0.2f
Damit kannst du zum Beispiel 2 Nachkommastellen anzeigen.Also brauche ich sozusagen 2 Callbacks / stocks um die Funktion für die Fahrzeuge zu machen oder kann ich den Query auch unter OnGameModeInit ausführen und dann an LoadCars geben ?
Das SELECT Query kannst du bei OnGameModeInit ausführen und darüber das Callback mit den Cache Funktionen aufrufen.
-
Ja, du kannst den Query auch direkt unter OnGamemodeInit ausführen. Das macht keinen Unterschied.
Okay. Ich habs jetzt mal einfach probiert erstmal mit 2 Stocks ... Leider hab ich anscheinend noch einen Fehler ... die Autos werden trotzdem nicht erstellt.
Ich weiß auch leider nicht woran es liegt. Ich kann mir zwar vorstellen, dass die zuweisung mit vInfo[i] ... nicht ganz stimmt... muss ich noch irgendwie beim enum MAX_VEHICLES oder so eintragen ?
PS: wegen dem Float hast du noch nix gesagt, kann man die iwie auf 2 Stellen hinterm Komma begrenzen ?


//EDIT Jeffry hat mir das mit dem Float nun schon gesagt (nicht reloaded gehabt)
-
Ich weiß auch leider nicht woran es liegt. Ich kann mir zwar vorstellen, dass die zuweisung mit vInfo ... nicht ganz stimmt... muss ich noch irgendwie beim enum MAX_VEHICLES oder so eintragen ?
Wie sieht dein Code jetzt aus, und wie sieht die Datenbank aus?
-
Wie sieht dein Code jetzt aus, und wie sieht die Datenbank aus?
Enum und new vInfo:
Code
Alles anzeigenenum vehData{ vehID, vehMID, vehOwner[64], vehFuel[64], Float:vehTank, vehLocked, vehColor1, vehColor2, Float:vehKMStand, Float:vehVoltage, Float:vehHealth, Float:vehLPKM, vehLoad, Float:vehX, Float:vehY, Float:vehZ, Float:vehA } new vInfo[][vehData];OnGameModeInit:
Code//LADEN new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM cars WHERE laden = '1'"); mysql_pquery(handle, query, "OnLoadCars");
stock OnLoadCarsCode
Alles anzeigenstock OnLoadCars(){ new rows; cache_get_row_count(rows); for(new i = 0; i < sizeof(rows); i++) { cache_get_value_name_int(i, "vehicleid", vInfo[i][vehMID]); cache_get_value_name_float(i, "posx", vInfo[i][vehX]); cache_get_value_name_float(i, "posy", vInfo[i][vehY]); cache_get_value_name_float(i, "posz", vInfo[i][vehZ]); cache_get_value_name_float(i, "posa", vInfo[i][vehA]); cache_get_value_name_int(i, "color1", vInfo[i][vehColor1]); cache_get_value_name_int(i, "color2", vInfo[i][vehColor1]); CreateVehicle(vInfo[i][vehMID], vInfo[i][vehX], vInfo[i][vehY], vInfo[i][vehZ], vInfo[i][vehA], vInfo[i][vehColor1], vInfo[i][vehColor2], -1); } return 1; }
Datenbank:SQL
Alles anzeigen-- Adminer 4.6.3 MySQL dump SET NAMES utf8; SET time_zone = '+00:00'; SET foreign_key_checks = 0; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; DROP TABLE IF EXISTS `cars`; CREATE TABLE `cars` ( `id` int(11) NOT NULL AUTO_INCREMENT, `vehicleid` int(11) NOT NULL, `owner` varchar(64) NOT NULL, `fuel` varchar(64) NOT NULL, `tank` float NOT NULL, `lock` int(11) NOT NULL, `color1` int(11) NOT NULL, `color2` int(11) NOT NULL, `kmstand` float NOT NULL, `voltage` float NOT NULL, `health` float NOT NULL, `lpkm` float NOT NULL, `laden` int(11) NOT NULL, `posx` float NOT NULL, `posy` float NOT NULL, `posz` float NOT NULL, `posa` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `cars` (`id`, `vehicleid`, `owner`, `fuel`, `tank`, `lock`, `color1`, `color2`, `kmstand`, `voltage`, `health`, `lpkm`, `laden`, `posx`, `posy`, `posz`, `posa`) VALUES (1, 401, 'niemand', 'Benzin', 5, 0, 5, 5, 0, 12, 1000, 0.1, 1, 1252.56, 339.167, 19.1865, 246.282), (2, 411, 'niemand', 'Benzin', 5, 0, 0, 0, 0, 12, 1000, 0.1, 1, 1241.02, 344.355, 19.1334, 70.2362); -- 2018-09-24 20:31:40Wusste jetzt nicht ganz wie ich sonst mysql einbinden sollte ... Halt Tabelle "cars" und gleich halt ein paar einträge^^
-
Nicht Stock OnLoadCars. Du musst dafür ein Public verwenden.
Also Public OnLoadCars -
new vInfo[][vehData];
zu:
new vInfo[50][vehData];Die Anzahl der Fahrzeuge musst du einmal definieren, sonst weiß der Code nicht, wie viel Speicher er reservieren soll.
Die ID des Fahrzeugs würde ich beim Erstellen noch speichern, die wirst du sicher brauchen:
vInfo[i][vehVID] = CreateVehicle(vInfo[i][vehMID], vInfo[i][vehX], vInfo[i][vehY], vInfo[i][vehZ], vInfo[i][vehA], vInfo[i][vehColor1], vInfo[i][vehColor2], -1);EDIT:
Plus das, was LeonMrBonnie sagte. Das über mysql_pquery aufgerufene Callback muss ein public sein, sprich auch mit forward Zeile.
stock OnLoadCars(){
zu:
forward OnLoadCars();
public OnLoadCars(){EDIT 2:
Und die ID ebenfalls auslesen:
cache_get_value_name_int(i, "id", vInfo[i][vehID]);
Die brauchst du später beim Speichern. -
Also alle änderungen getätigt. Leider keiner Wirkung...
vielleicht eine info von mir ... vInfo[i][vehID] soll die DBID sein, das vehMID soll das Model sein, damit ich besser abfragen kann welches Auto das ist um mit dem maximalen Tank (meinem anderem enum halt) zu vergleichen^^
-
Sollte so eigentlich klappen.
Kannst du den Code nochmal posten?Gibt dir der MySQL Log etwas aus?
-
Sollte so eigentlich klappen.
Kannst du den Code nochmal posten?Gibt dir der MySQL Log etwas aus?
ich habe zwar mysql_log(); drinne allerdings erstellt der keine mysql log^^
forwards (hab ich ganz oben im script)
Code//FORWARDS forward OnUserCheck(playerid); forward OnUserRegister(playerid); forward OnUserLogin(playerid); forward KickTimer(playerid); forward OnLoadCars(); forward checkVehHealth(vehicleid);Enum und new vInfo
Code
Alles anzeigenenum vehData{ vehID, vehMID, vehOwner[64], vehFuel[64], Float:vehTank, vehLocked, vehColor1, vehColor2, Float:vehKMStand, Float:vehVoltage, Float:vehHealth, Float:vehLPKM, vehLoad, Float:vehX, Float:vehY, Float:vehZ, Float:vehA } new vInfo[50][vehData];OnGameModeInit
Code//LADEN new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM cars WHERE laden = '1'"); mysql_pquery(handle, query, "OnLoadCars");
public OnloadCars():Code
Alles anzeigenpublic OnLoadCars(){ new rows; cache_get_row_count(rows); for(new i = 0; i < sizeof(rows); i++) { cache_get_value_name_int(i, "id", vInfo[i][vehID]); cache_get_value_name_int(i, "vehicleid", vInfo[i][vehMID]); cache_get_value_name_float(i, "posx", vInfo[i][vehX]); cache_get_value_name_float(i, "posy", vInfo[i][vehY]); cache_get_value_name_float(i, "posz", vInfo[i][vehZ]); cache_get_value_name_float(i, "posa", vInfo[i][vehA]); cache_get_value_name_int(i, "color1", vInfo[i][vehColor1]); cache_get_value_name_int(i, "color2", vInfo[i][vehColor1]); vInfo[i][vehID] = CreateVehicle(vInfo[i][vehMID], vInfo[i][vehX], vInfo[i][vehY], vInfo[i][vehZ], vInfo[i][vehA], vInfo[i][vehColor1], vInfo[i][vehColor2], -1); } return 1; } -
-
ich habe zwar mysql_log(); drinne allerdings erstellt der keine mysql log^^
Schau mal im Ordner /logs/plugins/mysql.txt
Der Code sieht gut aus.
-
Schau mal im Ordner /logs/plugins/mysql.txt
Der Code sieht gut aus.Okay...
Code[22:59:37] [ERROR] mysql_format: invalid connection handle '0' [22:59:37] [ERROR] mysql_pquery: invalid connection handle '0'das sind die zwei fehler, die nur durch den Start auftreten (ich denke mal halt wenn OnGameModeInit(); aufgerufen wird)
-
Das sieht so aus, als rufst du erst das Query zum Laden der Fahrzeuge auf und stellst danach erst die Verbindung zur MySQL Datenbank her.
Stelle die Verbindung ganz als erstes bei OnGameModeInit her. -
Das sieht so aus, als rufst du erst das Query zum Laden der Fahrzeuge auf und stellst danach erst die Verbindung zur MySQL Datenbank her.
Stelle die Verbindung ganz als erstes bei OnGameModeInit her.WoW man bin ich dumm ... ja das ist die Lösung... Allerdings muss ich sagen, dass er nur das erste Auto geladen hat, das zweite wurde nicht gespawnt.
-
Wenn du weitere Fahrzeuge hinzufügst, sodass es mindestens 4 Stück in der Datenbank sind, wie viele werden dann geladen? Und welches fehlt?
-
Wenn du weitere Fahrzeuge hinzufügst, sodass es mindestens 4 Stück in der Datenbank sind, wie viele werden dann geladen? Und welches fehlt?
Ich habe jetzt insgesamt 7 Autos drinne, davon wird nur das erste (DBID 1) geladen. die restlichen 6 (ID 2 - 7) werden nicht geladen.
-
for(new i = 0; i < sizeof(rows); i++)
zu:
for(new i = 0; i < rows; i++)Das hast du gut versteckt

-
for(new i = 0; i < sizeof(rows); i++)
zu:
for(new i = 0; i < rows; i++)Das hast du gut versteckt

Danke

Spaß haha ... Oh man ist eig. nicht ziel der sache aber nun draus gelernt.
Ich habe jetzt die Funktion aus dem Kopf geschrieben gehabt, naja son bisschen die SpielerInfo aus deinem Tutorial halt umgesetzt. Dafür, dass ich jetzt erst angefangen habe, doch bestimmt nicht schlecht oder?

haha gut jetzt gehts

Vielen Dank
-
Dafür, dass ich jetzt erst angefangen habe, doch bestimmt nicht schlecht oder?
Einwandfrei fürs erste Mal. So kleine Fehler wie das mit dem sizeof kommen auch später immer mal wieder vor. Das Tückische bei der Sache ist, sie sehen auf den ersten Blick richtig aus, weil man es ja oft so schreibt.
Die Hauptsache ist aber immer, dass man daraus lernt.Vielen Dank
Gerne!
-
-