if(!IsAnyDriverInVehicle(i)) continue;
zu:
if(IsAnyDriverInVehicle(i)) continue;
Dann sollte es passen, war ein Denkfehler von mir.
Habe es im Code auch angepasst.
if(!IsAnyDriverInVehicle(i)) continue;
zu:
if(IsAnyDriverInVehicle(i)) continue;
Dann sollte es passen, war ein Denkfehler von mir.
Habe es im Code auch angepasst.
Ja sagen wir es sind 7 Leute auf dem Server und an jeder Stelle wo ein Spieler jetzt ist natürlich an verschiedenen Orten sind z.b 300 Objekte dann sehen ja paar Spieler nichts.
Nicht direkt.
Es werden die 1000 Objekte angezeigt, die irgendeinem Spieler am nächsten sind.
Also für jedes Objekt wird die Distanz zum nächsten Spieler berechnet. Danach werden die 1000 angezeigt, die die geringste Distanz haben.
Kann man da was gegen machen außer weniger zu mappen?
Weniger Objekte in einen kleinen Umkreis setzen.
Leider ist das Limit so gering. Warum das so ist, ist fragwürdig.
Muss ich mir sorgen machen wenn ich jetzt woanders z.b noch 1000 Objekte habe, streamt der Streamer die Objekte nur für einen Spieler oder sozusagen für alle?
Wenn du zwei Spieler hast, und beide an unterschiedlichen Orten sind, dann sieht auf jeden Fall einer der Spieler nicht alles.
Es werden dann nur die 1000 Objekte angezeigt, die die geringste Distanz zu einem der beiden Spieler haben.
Maximal können 1000 Objekte angezeigt werden. Serverweit.
Habe eine Kurze frage warum wird nicht der Name gesetzt als kennzeichen der das Fahrzeug gespawnt hat?
Das Kennzeichen wird vor dem Erstellen des Fahrzeugs gesetzt. Es muss danach gesetzt werden, davor existiert das Fahrzeug ja noch nicht.
mysql_format(handle, secondQuery, sizeof(secondQuery), "`PayDayHad`='%d', `CDPlayer`='%d', `AlcoholPerk`='%d', `PainKillerPerk`='%d', `PistolSkill`='%d', `MaschinePistolSkill`='%d', `SturmgewehrPistolSkill`='%d', `ShotGunSkill`='%d', `DrugPerk`='%d', `MiserPerk`='%d', ",
PlayerInfo[playerid][pPayDayHad], PlayerInfo[playerid][pCDPlayer], PlayerInfo[playerid][pAlcoholPerk], PlayerInfo[playerid][pPainKillerPerk], PlayerInfo[playerid][pPistolSkill],
PlayerInfo[playerid][pMaschinePistolSkill], PlayerInfo[playerid][pSturmgewehrPistolSkill], PlayerInfo[playerid][pShotGunSkill], PlayerInfo[playerid][pDrugPerk], PlayerInfo[playerid][pMiserPerk]);
zu:
mysql_format(handle, secondQuery, sizeof(secondQuery), "%s`PayDayHad`='%d', `CDPlayer`='%d', `AlcoholPerk`='%d', `PainKillerPerk`='%d', `PistolSkill`='%d', `MaschinePistolSkill`='%d', `SturmgewehrPistolSkill`='%d', `ShotGunSkill`='%d', `DrugPerk`='%d', `MiserPerk`='%d', ", secondQuery
PlayerInfo[playerid][pPayDayHad], PlayerInfo[playerid][pCDPlayer], PlayerInfo[playerid][pAlcoholPerk], PlayerInfo[playerid][pPainKillerPerk], PlayerInfo[playerid][pPistolSkill],
PlayerInfo[playerid][pMaschinePistolSkill], PlayerInfo[playerid][pSturmgewehrPistolSkill], PlayerInfo[playerid][pShotGunSkill], PlayerInfo[playerid][pDrugPerk], PlayerInfo[playerid][pMiserPerk]);
Exakt den gleichen Fehler hattest du auch in Zeile 57 schon.
[ERROR] error #1064 while executing query "`PayDayHad`='0', `CDPlayer`='0', `AlcoholPerk`='0', `PainKillerPerk`='0', `PistolSkill`='0', `MaschinePistolSkill`='0', `SturmgewehrPistolSkill`='0', `ShotGunSkill`='0', `DrugPerk`='0', `MiserPerk`='0', `TraderPerk`='0', `Tutorial`='1', `Cptut`='1', `kh`='0', `Warnings`='0', `Fuel`='0', `Married`='0', `MarriedTo`='Niemand', `WantedLevel`='0', `Spawn`='0' WHERE `Name`='James.Gordon' ": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`PayDayHad`='0', `CDPlayer`='0', `AlcoholPerk`='0', `PainKillerPerk`='0', `Pisto' at line 1
Der Anfang des Queries fehlt, heißt der vorherige Teil wird nicht angefügt.
Der Code den du gepostet hast passt nicht zum Log.
Es sieht voll lange aus das Passwort irgendwie aber in der Datenbank ist das:
Dann ist vermutlich die Spalte für das Passwort zu klein angelegt. Erhöhe die Zeichenanzahl.
Ja. Wobei du den Code aus PlayerHaveMD5 auch bei LoadPlayerData eintragen kannst. Dann sparst du dir das zweite Query.
Ich sehe grade:
[14:39:09] [DEBUG] mysql_pquery(1, "SELECT COUNT(*) AS `count` FROM `users` WHERE `Name` = 'James.Gordon'", "LoadPlayerData", "dd")
Das Query muss geändert werden.
Zu:
SELECT * FROM `users` ...
Sprich:
COUNT(*) AS `count` zu: *
Dann gibt es wohl einen Eintrag für James.Gordon in der Tabelle users.
Beim LoadPlayerData:
new count = cache_get_row_count(count);
zu:
new count;
cache_get_row_count(count);
Alles klar, super!
Arbeite den Code bitte sorgfältig durch, dann bin ich mir sicher, dass auch so der Lerneffekt erzeugt wird, auch wenn du es dann vielleicht nicht komplett selbst geschrieben hast.
Das Wichtige ist eben, dass du den Ablauf und den Aufbau verstehst - vor allem von den Schleifen und den Arrays.
Wenn noch Fragen zu dem Code sind, gib einfach hier nochmal Bescheid.
Das wird so nicht kompilieren, da BanHammer und BanReason in SetConnectBan nicht deklariert sind.
Zeile 8 bis 12 müssen nach cache_get_value_name(0, "Hammer", BanHammer); eingefügt werden.
Du willst ja die Meldung nur ausgeben, wenn der Spieler gebannt ist, also wenn ein Eintrag in der Tabelle steht. Den jetziger Code würde den Spieler immer vom Server werfen.
Beides hättest du aber auch durch ausprobieren herausfinden können.
LoadBanData, oder wie auch immer du es nennen willst.
Auf jeden Fall nicht LoadPlayerData, das gibt es ja schon.
Den Cache musst du in einem separaten Callback auslesen, wie die allen anderen Queries auch.
http://wiki.sa-mp.com/wiki/MySQL/R40#mysql_pquery
Es ist immer das gleiche Prinzip.
mysql_pquery -> Callback angeben
Callback (public) -> Cache auslesen
Der Cache muss hier - wie bei den anderen Funktionen auch - über das in mysql_pquery angegebene Callback ausgelesen werden.
Gebe in mysql_pquery ein Callback mit Parametern an und füge den darunter stehenden Code in das Callback ein.
Der müsste dann aber weiter vorne im großen Debug Log stehen. Im obigen Block war der nämlich nicht drin.
Indemsinne habe ich das nun so getestet und natürlich den log dabei.
Dann passt es jetzt ja. Wenn du den Debug Modus wieder aus machst, sollte nichts mehr im Log auftauchen.
Es scheint dann wohl kein "James.Gordon" Eintrag in der Tabelle users zu existieren.
public PlayerHaveMD5(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows)
{
cache_get_value_name_int(0, "GotMD5", GotMD5[playerid]);
}
return 1;
}
Die heißt jetzt mysql_log.
Siehe hier: Tipps: Scripting-Probleme richtig erklären Kapitel 1.4