Beiträge von Kaliber
-
-
Das sieht für mich schon fast nach einem Syncro Problem aus...
Kannst ja mal aus Spaß einen Leeren Gamemode schreiben, wo du das so verwendest und dann mal testest, wenn es da funktioniert, impliziert das ein Syncro Problem.
Das kann entstehen, wenn zu viel unter OnPlayerUpdate ist oder wenn da return 0; zurückgegeben wird.
//Edit:
Evtl kannst sogar über das Profiler Plugin mal ermitteln, wie das bei deinem Server so ist.
-
Sind identisch.
Ja, dann klappt es doch.
ist dass denn dann die richtige Position, wo der Spieler war?!
-
Eventuell in ein paar Includes?
Ansonsten printe es dir einfach mal bei OnPlayerDeath und OnPlayerSpawn die Variablen

-
Nur irgendwie wird er immer an die Stelle gesetzt, wo er bei OnPlayerRequest standartmäßig steht.
Verwendest du evtl DeadPosX noch irgendwo anders? Bzw, dass sich das dann evtl überschreibt?
-
Das reicht leider nicht, da 4 Charactere pro Account erstellt werden sollen.
Achsooo, das hast du da vor.
Ufff, dann kannst du das nicht so machen, da ja accountid immer gleich wäre pro Spieler (also hätten 4 Charaktere die selbe accountid jeweils).
Bei character_pos beziehst du dich auf die accountid, was ja aber nicht mehr funktioniert, da wir nun 4x die Gleiche accountid hätten.
Da muss der Primary Key z.B. aus 2 Spalten wie accountid & slot bestehen, damit das eindeutig referenzierbar wäre.
-
Was zur Hölle machst du da?
Kommt es dir nicht merkwürdig vor 80x das Selbe Query zu schicken für nix?
Und das eine SELECT Query verläuft im Sande...
C
Alles anzeigenFUNCTION AccountRegister(playerid) { new string[512]; AccountInfo[playerid][account_ID] = cache_insert_id(); AccountInfo[playerid][account_Eingeloggt] = true; /*AccountInfo[playerid][account_MaxChars] = 1; AccountInfo[playerid][account_Admin] = 0; AccountInfo[playerid][account_Verwalter][0] = 0; AccountInfo[playerid][account_Verwalter][1] = 0; AccountInfo[playerid][account_Verwalter][2] = 0; AccountInfo[playerid][account_Verwalter][3] = 0; AccountInfo[playerid][account_Slot][0] = 0; AccountInfo[playerid][account_Slot][1] = 0; AccountInfo[playerid][account_Slot][2] = 0; AccountInfo[playerid][account_Slot][3] = 0;*/ mysql_format(handle, string, sizeof(string), "SELECT * FROM `account_team` WHERE `accountid` = '%d'", AccountInfo[playerid][account_ID]); mysql_tquery(handle, string, "OnTeamCheck", "d", playerid); mysql_format(handle, string, sizeof(string), "INSERT INTO `character_pos` (`accountid`,`x`,`y`,`z`,`r`,`interior`,`world`) VALUES ('%d','1480.5341','-1770.5804','18.7958','0.3109','0','0')",AccountInfo[playerid][account_ID]); mysql_tquery(handle, string); mysql_format(handle, string, sizeof(string), "INSERT INTO `character` (`accountid`,`name`,`slot`, `skin`,`gender`,`register`,`lastlogin`) VALUES ('%d','Keiner','2','0','0','00.00.0000 | 00:00:00','00.00.0000 | 00:00:00')",AccountInfo[playerid][account_ID]); mysql_tquery(handle, string); mysql_format(handle, string, sizeof(string), "SELECT * FROM `character` WHERE `accountid` = '%d'", AccountInfo[playerid][account_ID]); mysql_tquery(handle, string, "ShowCharacter", "d", playerid); //mysql_format(handle, string, sizeof(string), "UPDATE `accounts` SET `maxchars` = '%d' WHERE `id` = '%d'",1,AccountInfo[playerid][account_ID]); //mysql_tquery(handle, string); return 1; }Das würde als Querys vollkommen reichen.
Allerdings wieso nutzt du da schon cache_insert_id? Wird das alles etwa schon über ein mysql query aufgerufen?
Vielleicht eröffnest du auch mal einen separaten Thread dafür, da immer 1000x hin und her Antworten im Sammelthread echt nervig ist, vor allem, wenn jemand nochmal so ein Problem hat, kann man ihn nicht auf etwas konkretes verweisen.
Und vllt solltest du wie gesagt dir nochmal die Basics o.ä. erklären lassen, vllt bietet sich ja einer hier an dir ein wenig Nachhilfe zu geben oder so.
Dieses tausendfache ausprobieren was du hier tust, bringt dir nur sehr sehr schleppend voran, zumal du dann meist vermutlich gar nicht weißt, wieso es überhaupt geklappt hat.
-
In meinem gezeigten insert sind Werte aus zwei verschiedenen Tabellen.
Dann solltest du daraus 2 Querys machen...
1x Insert in die eine Tabelle
und 1x insert in die andere Tabelle...
-
Wie muss ich das hier schreiben, damit er in die Tabellen accounts und account_pos insertet?
Hä?
Na, anstatt INSERT INTO `character` verwendest du INSERT INTO `character_pos`...
Falls es bei den Basics Unklarheiten gibt, schau dir doch ein paar Tutorial an: https://www.w3schools.com/sql/sql_insert.asp
-
UPDATE `character` SET
Hier updatest du character und alles Andere ist doch immer character_pos? Du kommst glaube bei den Tabellen etwas durcheinander.
-
und es kamen immer wieder neue verkackte Fehler, wie der hier jetzt wieder
Zeex hat Compiler-Erweiterungen gemacht: https://github.com/pawn-lang/compiler/releases
Den musst du anstatt des Pawno Compilers nutzen, damit YSI all seine krassen Funktionalitäten entfalten kann.
Kannst dir ja auf der Github Page mal paar Vorteile davon anschauen, ist ein krasses Ding, sollte eig standardmäßig für Pawn & SA:MP eingesetzt werden.
Vielleicht mache ich mal eine Tutorial Reihe für YSI & den Zeex Compiler

-
Danke, jetzt brauche ich das xD :
Nix für ungut, aaaber google das doch einfach

Downloade dir am Besten die ganzen Ordner: https://github.com/Misiur/YSI-Includes/tree/YSI.tl
-
...
kannst du die Zeilen davor zeigen...
wie ist diese Funktion/Makro definiert?
-
Nix für ungut, aber du hast nichtmal die Fehlerzeile markiert...und der Code ist super unordentlich.
Der Fehler besagt, dass du eine Klammer vergessen hast...such halt selbst

-
dann bekomme ich jedes Mal folgende Meldung:
Dann brauchst noch diese Include: https://github.com/Southclaws/samp-logger
-
Aber wieso kommt an jeden ATM
Tatsächlich nicht bei Allen, nur bei allen Anderen, als dem Ersten

Das liegt daran, dass du das Else in der Schleife hat und er somit beim ersten falschen darein geht, anstatt den Rest zu prüfen.
Kannst es z.B. so lösen:
Cfor (new i; i < sizeof(ATMInfo); i++) { if(IsPlayerInRangeOfPoint(playerid,3.0, ATMInfo[i][atm_x], ATMInfo[i][atm_y], ATMInfo[i][atm_z])) { ShowPlayerDialog(playerid,DIALOG_ATMROB,DIALOG_STYLE_LIST,"ATM-Rob-Methoden","Gas einleiten & sprengen\nAufknacken","Auswählen","Abbrechen"); return 1; } } return SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe eines Geldautomaten!"); -
bin seit längerem auf der Suche nach dem Progressbar Include
Das ist doch auf Github: https://github.com/Southclaws/progress2
-
ist irgendwie falsch
Ja, weil format mit % Zeichen anders umgeht, da das ein Placeholder ist.
Musst du so schreiben (sieht zwar absolut bescheuert aus, aber ja xD):
LIKE '%%%e%%'
-
Nutze ruhig LIKE '%dollar%'.
Sonst bekommst du nur Resultate, wenn die Spalte wirklich nur "dollar" beinhaltet.
-
Also mal ein paar Tipps:
- Arbeite nicht mit GOTO. Dadurch erzeugst du nur Spaghetticode und es ist eine Qual das zu lesen (und es kommt leicht zu Fehlern).
- Lass SQL für dich die Arbeit machen und nutze LIKE.
- Dann kannst du über den MySQL Callback direkt den Dialog erstellen.
Der Vorteil der neuen MySQL Versionen ist ja, dass sie asynchron arbeiten, da brauchst dir keine Sorgen mehr um Server-Delays machen etc.