Kannst es mit MyPhoneExplorer versuchen. Der hat glaub ich ne Backup Funktion für so ziemlich alles.
Beiträge von root
-
-
Naja es wäre wirklich gut zu wissen woher das kommt. Denke mal das dass end of string Fehlt und er dann Random Memory ließt.
Ist nämlich nervig//Edit: Jep End of String hat gefehlt
-
Da mehrere Messages gleichzeitig Nacheinander kommen können hab ich es nun so:
Von C# Testweiser aus:
In C++
Cchar *line = strtok(buffer, "\n"); while (line != NULL) { cout << "[OK] Line: " << line << endl; line = strtok(NULL, "\n"); }
Nur leider kommt am ende einfach noch ein ☺ raus:
Hat das jetzt einen Speziellen Grund?
Ist es sinnvoller nach jedem WriteLine direkt zu Flushen? @Kaliber -
Ab und zu sollte man doch noch das Hirn einschalten. Danke Kaliber
-
-
Jemand Erfahrung mit Daten über Pipes von C# nach C++ zu senden?
Will bei mir irgendwie nicht so.
Wenn ich zb. in C# "Test" in die Pipe schreibe und dann mittels ReadFile in C++ auslese, dann kommt wenn ich es als wchar_t lasse nur HEX raus und wenn ich es mittelsin eine char umwandle wird aus dem Test (bzw dem HEX) ein "&"
-
Lad bitte die dump file(s) irgendwo hoch, damit ich mir diese ansehen kann.
-
Bluescreen Error Code? (oder die .dmp Datei)
Treiber Up-to-date? -
Du kannst die Query schneller machen:
Es ist nicht sinnvoll einen Count auf * zu machen. Schaue eher in der Datenbank nach zb. der ID Zeile und mache nur darauf einen Count. Auch ist ein Limit 1 hier passend da es hierbei sowieso nur darum geht ob 0 oder mehr. -
Es geht hier lediglich darum das OnObjectMoved hier das Problem nicht löst.
Wenn ich ein Tor sagen wir mit einer Zeit von 1 Sekunde aufmache, dann wird nach 1 Sekunde OnObjectMoved aufgerufen und das Tor wieder geschlossen. Welchen Zweck hat das nun? Genau, keinen.Ich werfe dir hier nicht vor. Das ist lediglich für Leute die später vielleicht über diesen Beitrag stolpern.
Aber wir müssen hier nun wirklich nicht lange darüber Diskutieren.
-
Du kannst auch mit OnObjectMoved arbeiten um dir den Timer zu ersparen.
Um das Objekt instant wieder zuzumachen wenn es auf ist?
Auch wenn du in OnObjectMoved musst du noch eine warte Zeit haben sonst musst du ziemlich fix sein beim reinfahren. -
-
-
Entweder machst du einen Befehl zum schliessen oder wie du schon Vorgeschlagen hast einen Timer, wo du dann die ID übergibst womit du dann das Tor wieder schliesst.
-
Die for schleife soll dir ersparen das du jedes mal selber Tor[0][TorID] = BundeswehrTor[0]; machen musst.
Das setzt aber wie gesagt voraus das sich die Reihenfolge des Objekt erstellen sich mit den Koordinaten übereinstimmen. Wenn das der Fall ist kannst du alle Tor[0][TorID] = BundeswehrTor[0]; weglassen und nur die Schleife am Ende, wenn alle Objekte erstellt sind, durchlaufen lassen; -
Zum Zeitpunkt des Compilen hat BundeswehrTor[0] noch keinen Wert.
Musst es zb. wie folgt abändern:Code
Alles anzeigennew Tor[][Toree] = { {2, 0, 193.41330, 1923.53125, 19.92830, 193.41330, 1923.53125, 16.64330}, {2, 0, 202.39410, 1923.53088, 19.85580, 202.39410, 1923.53088, 16.64330}, {2, 0, 211.42378, 1923.54504, 19.85580, 211.42378, 1923.54504, 16.64330}, {2, 0, 220.40250, 1923.50122, 19.85580, 220.40250, 1923.5012, 16.64330}, {2, 0, 174.81837, 1826.89746, 19.85580, 174.81837, 1826.89746, 16.64330}, {2, 0, 183.79898, 1826.90100, 19.85580, 183.79898, 1826.90100, 16.64330}, {2, 0, 192.81992, 1826.91675, 19.85580, 192.81992, 1826.91675, 16.64330}, {2, 0, 201.81436, 1826.91016, 19.85580, 201.81436, 1826.91016, 16.64330}, {2, 0, 216.98787, 1826.88000, 19.85580, 216.98787, 1826.88000, 16.64330}, {2, 0, 225.98384, 1826.91248, 19.85580, 225.98384, 1826.91248, 16.64330}, {2, 0, 234.98415, 1826.89368, 19.85580, 234.98415, 1826.89368, 16.64330}, {2, 0, 243.96420, 1826.90649, 19.85580, 243.96420, 1826.90649, 16.64330}, {2, 0, 143.52200, 1911.17798, 20.25760, 138.18201, 1911.17798, 20.25760}, {2, 0, 148.88490, 1911.15796, 20.25760, 154.26489, 1911.17798, 20.25760} }; //0 als Standardwert, heisst soviel wie kein Objekt erstellt
Dann beim Objekt erstellen:
CodeBundeswehrTor[0] = CreateObject(19906, 193.41330, 1923.53125, 19.92830, 0.00000, 0.00000, 360.21191); Tor[0][TorID] = BundeswehrTor[0]; //Das setzt vorrraus das sich die reihenfolge der Positionen der tore und die erstellung der Object übereinstimmen for(new i = 0; i < sizeof(Tor); i++) { Tor[i][TorID] = BundeswehrTor[i]; }
-
Du solltest uns schon die Fehlerzeilen (+- 5 darüber) auch zeigen
-
MoveObject will die Objekt ID, nicht einen String.
Versuch es folgendermaßen:Definitionen:
Code
Alles anzeigenenum Toree { Tor_Fraktion, Tor, Float:Tor_X, Float:Tor_Y, Float:Tor_Z, Float:Tor_AufX, Float:Tor_AufY, Float:Tor_AufZ } new Tor[][Toree] = { {2, BundeswehrTor[0], 193.41330, 1923.53125, 19.92830, 193.41330, 1923.53125, 16.64330}, {2, BundeswehrTor[1], 202.39410, 1923.53088, 19.85580, 202.39410, 1923.53088, 16.64330}, {2, BundeswehrTor[2], 211.42378, 1923.54504, 19.85580, 211.42378, 1923.54504, 16.64330}, {2, BundeswehrTor[3], 220.40250, 1923.50122, 19.85580, 220.40250, 1923.5012, 16.64330}, {2, BundeswehrTor[4], 174.81837, 1826.89746, 19.85580, 174.81837, 1826.89746, 16.64330}, {2, BundeswehrTor[5], 183.79898, 1826.90100, 19.85580, 183.79898, 1826.90100, 16.64330}, {2, BundeswehrTor[6], 192.81992, 1826.91675, 19.85580, 192.81992, 1826.91675, 16.64330}, {2, BundeswehrTor[7], 201.81436, 1826.91016, 19.85580, 201.81436, 1826.91016, 16.64330}, {2, BundeswehrTor[8], 216.98787, 1826.88000, 19.85580, 216.98787, 1826.88000, 16.64330}, {2, BundeswehrTor[9], 225.98384, 1826.91248, 19.85580, 225.98384, 1826.91248, 16.64330}, {2, BundeswehrTor[10], 234.98415, 1826.89368, 19.85580, 234.98415, 1826.89368, 16.64330}, {2, BundeswehrTor[11], 243.96420, 1826.90649, 19.85580, 243.96420, 1826.90649, 16.64330}, {2, BundeswehrTor[12], 143.52200, 1911.17798, 20.25760, 138.18201, 1911.17798, 20.25760}, {2, BundeswehrTor[13], 148.88490, 1911.15796, 20.25760, 154.26489, 1911.17798, 20.25760} };
Befehl:
Code
Alles anzeigenif (strcmp("/auf", cmdtext, true, 10) == 0) { if(IsPlayerConnected(playerid)) { for(new i = 0; i<sizeof(Tor); i++) { if(SpielerInfo[playerid][Fraktion] == Tor[i][Tor_Fraktion]) { printf("SpielerFrak: %d und Tor[i][Tor_Fraktion]: %d", SpielerInfo[playerid][Fraktion], Tor[i][Tor_Fraktion]); //new Float:Get_X, Float:Get_Y, Float:Get_Z; if(IsPlayerInRangeOfPoint(playerid, 5, Tor[i][Tor_X], Tor[i][Tor_Y], Tor[i][Tor_Z])) { printf(" Tor_X: %f, Tor_Y: %f, Tor_Z: %f",Tor[i][Tor_X], Tor[i][Tor_Y], Tor[i][Tor_Z]); MoveObject(Tor[i][Tor], Tor[i][Tor_AufX], Tor[i][Tor_AufY], Tor[i][Tor_AufZ]-3, Tor[i][Tor_Speed], 0.0,0,.0); printf("Tor_Bezeichnung: %i", Tor[i][Tor]); } } } } return 1; }
Du könntest es auch noch Intelligenter machen, denn im Moment Speicherst du die ID immer Doppelt. Und zwar direkt so: -
Funktioniert bei mir Problemlos. Zeig deinen jetzigen Code.
//Edit:
Versuchs mal mit der vollen Zahl 2017 hinten anstatt 17. Es kann sein das das PHP sonst falsch interpretiert. -
Alle Tore ( & Koordinaten) in ein Array Packen und dann mit einer for-schleife durch loopen und in der Schleife das IsPlayerInRangeOfPoint ausführen um das Tor das am nächsten ist zu ermitteln.