Du brauchst eine zweite Spalte, du musst in dem Query ja irgendwo angeben, welche Zeile aktualisiert werden soll.
1=Steuern
2=Staatskasse
...
Sonst weiß die Datenbank ja nicht, welcher Wert zu aktualisieren ist.
Du brauchst eine zweite Spalte, du musst in dem Query ja irgendwo angeben, welche Zeile aktualisiert werden soll.
1=Steuern
2=Staatskasse
...
Sonst weiß die Datenbank ja nicht, welcher Wert zu aktualisieren ist.
Ist die Reichensteuer korrekt, wenn du sie in dem Code oben eingibst?
Wenn ja, wie speicherst du sie beim Beenden des Servers, und wie lädst du sie (Code)?
=> Ist sie nach dem Speichern schon falsch (wenn der Server beendet wird), oder wird sie erst durch das Laden falsch?
Um welchen Editor geht es überhaupt? Hast du einen Link dazu?
Ok, versuche bitte mal folgenden Code, ob es dann klappt:
public OnVehicleStreamIn(vehicleid, forplayerid)
{
if(Trailerid[vehicleid] != -1)
{
AttachTrailer(Trailerid[vehicleid],vehicleid);
}
else if(Tractorid[vehicleid] != -1)
{
AttachTrailer(vehicleid, Tractorid[vehicleid]);
}
return 1;
}
Versuche ob es so klappt.
Wenn es so klappt, dann baue ich dir noch die Positionsprüfung ein.
Welches ist denn der letzte Print der dir im Server Log angezeigt wird?
Ok, dann liegt es daran, dass es bei AddPlayerClass drin steht. Das ist auch vollkommen normal so.
Ablauf beim Spawn:
Tot -> Spawn bei Position von AddPlayerClass/SetSpawnInfo -> OnPlayerSpawn -> Dortiges SetPlayerPos.
Wenn du verhindern willst, dass der Spieler bei der AddPlayerClass Position spawnt, dann musst du wie bereits gesagt [wiki]SetSpawnInfo[/wiki] nutzen, und zwar dort, wo der Spieler dem DM beitritt musst du es zu der DM-Spawn Koordinate setzen, und dort wo er es verlässt, da musst du es wieder zur AddPlayerClass Koordinate setzen.
Jetzt eben das Problem, dass du ja mehrere DM Spawns hast.
Du kannst folgendes mal versuchen:
1) Beim Betreten der Arena setzt du die Position und setzt direkt danach über eine random-Funktion wie in DmSpawn das SetSpawnInfo (anstatt SetPlayerPos) des Spielers. Das wäre dann der nächste Spawn-Punkt nach dem Tod.
2) Bei OnPlayerSpawn machst du das ebenfalls so, anstatt DmSpawn rufst du dort die neue Funktion DmSpawnInfo (z.B. so genannt) auf, dann wird direkt nach dem Spawn die nächste Spawn-Koordinate schon gesetzt.
Wenn der Spieler die Arena verlässt, dann setzt du SetSpawnInfo wieder zur AddPlayerClass Koordinate.
Versuche es mal so.
Gibst für die SFPD Garagen Einfahrt ein passendes Gate oder muss man sich eins selbst mappen?
Schau mal hier:
http://forum.sa-mp.com/showthread.php?t=44492
Ich habe zwar von WBB im Allgemeinen keine Ahnung, aber vielleicht hilft dir dieser Thread, und die darin verlinkten Threads, weiter:
https://community.woltlab.com/…wortverschl%C3%BCsselung/
Hm, dann dürfte eigentlich alles passen.
Füge mal diesen Print bei beiden Create3DTextLabel's ein:
HausInfo[ho][hLabel]=Create3DTextLabel(str,COLOR_AO,HausInfo[ho][hPosX],HausInfo[ho][hPosY],HausInfo[ho][hPosZ],0,1);
printf("ho: %d / Erstellte Label ID: %d", ho, _:HausInfo[ho][hLabel]);
Was wird dir dann im Server Log ausgegeben, wenn du es so laufen lässt?
Nicht dass er die Labels gar nicht erstellen kann, weil du schon am Limit bist, dann können wir ewig danach suchen.
Du musst die Position etwas verschieben, damit sich die Türe flüssig rotieren kann.
Nimm die zweite Koordinate und rechne sie -0.06, dann hast du die gleiche Geschwindigkeit.
Du kannst es auch einfach so hinschreiben, dann ist es vielleicht besser ersichtlich:
MoveObject(SFPDINTDOOR[1], -1596.85254, 692.64398 - 0.06, 0.02, 0.00000, 0.00000, 173.29387);
Analog für die anderen Türen.
Ah, gut dass du das Video gemacht hast.
Das liegt daran, dass du die Position nicht änderst, sondern nur die Rotation. In dem Fall muss die Position minimal geändert werden (habe den Y Wert um 0.06 kleiner gemacht) und die Geschwindigkeit extrem klein sein.
Versuche es so:
MoveObject(SFPDINTDOOR[0], -1597.89685, 704.30829, 12.79330, 0.02, 0.00000, 0.00000, 324.67960);
Passe gegebenenfalls die 0.02 etwas an, je größer desto schneller, je kleiner desto langsamer die Türe.
welche FilterScripts geladen sind?
Da müsstest du beim Laden jedes Filterscripts (jeweils bei OnFilterScriptInit/-Exit) einen Eintrag in eine Datei/Datenbank machen, damit du es daraus auslesen kannst, ob geladen oder nicht. Direkt abfragen kann man das nicht.
auflisten welche FilterScripts sich im FilterScripts Ordner befinden?
Hiermit sollte das gehen: http://forum.sa-mp.com/showthread.php?t=92246
Prüfen ob die Eingabe eine korrekte E-Mail ist? Das ist ziemlich komplex, aber mit sscanf kann man es grob machen:
http://forum.sa-mp.com/showthread.php?t=547789
Ist das alles was du unter OnPlayerSpawn stehen hast? Wie setzt du dann die Position zurück auf die Map/Arena? Hast du das in einem Filterscript?
Unter den Includes:
new pStep[MAX_PLAYERS];
Beim Textdraw:
if(clickedid == SkinTD[1]) // Kleidungs Auswahl: Weiter
{
if(PlayerInfo[playerid][p_PolizeiUmkleiden] == true && PlayerInfo[playerid][p_ZivUmkleiden] == false)
{
if(pStep[playerid] < sizeof(PolizeiSkins)-1)
{
pStep[playerid]++;
SetPlayerSkin(playerid, PolizeiSkins[pStep[playerid]][SkinID]);
}
}
return 1;
}
if(clickedid == SkinTD[2]) // Kleidungs Auswahl: Zurück
{
if(PlayerInfo[playerid][p_PolizeiUmkleiden] == true && PlayerInfo[playerid][p_ZivUmkleiden] == false)
{
if(pStep[playerid] > 0)
{
pStep[playerid]--;
SetPlayerSkin(playerid, PolizeiSkins[pStep[playerid]][SkinID]);
}
}
return 1;
}
Bei der Auswahl:
if(PolizeiSkins[pStep[playerid]][PolizeiEXP] > PlayerInfo[playerid][EXP]) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nicht genug Experience.");
Dort wo der SPieler in die Selektion gesetzt wird:
pStep[playerid] = 0;
Ok. Setzt du die Position des Spielers zu diesem Hauptspawn bei OnPlayerSpawn, oder wo nutzt du die überall?
Poste bitte die Codes, die die Koordinaten des Hauptspawns nutzen.
Also der einzige Fehler liegt hier:
UPDATE pRP_account_main SET Online='0',Tutorial='1',Admin='7',Verwarnungen='0',EventMotor='0',FLeaderRechte='0',Fraktion='0',FraktionsRang='0',FraktionsURang='0',FraktionsSperre='0',FraktionsGehalt='0',Job='0',JobWarns='0',JobSperre='0',ArbeitslosenGeld='0',Geschlecht='1',SpielerAlter='0',Level='0',Geld='10000',GWD='0',ZiviNote='0',FAbteilung='0',Bankguthaben='0',BankPin='0',WantedSterne='0',WantedPunkte='0',Suspects='0',Wanted_Grund1='',Wanted_Grund2='',Wanted_Grund3='',Wanted_Grund4='',Wanted_Grund5='',Crimes='0',STVOcrimes='0',KampfStyle='4',Handy='0',Handycoins='0',HandyStatus='0',HandyAkku='0.000000',HandyNummer='0',Handyflat='0',Handyflatbuyinbiz='0',Letzte_X='1128.671264',Letzte_Y='-1599.754760',Letzte_Z='22.855937',Letzte_Interior='0',Letzte_VirtualWorld='0',pSelectHome='0',HausMieter='0',Spawn='0',Hotel='0',Tod='0',Tot_X='0.000000',Tot_Y='0.000000',Tot_Z='0.000000',Tot_Interior='0',Tot_VirtualWorld='0',TotZeit='0',Friedhof='0',FriedhofZeit='0',ImKnast='0',KnastZeit='0',KnastKaution='0' WHERE Name='Taylor_Swift'
Allerdings ist die Syntax korrekt.
Füge diesen Code mal in deiner Datenbank im phpMyAdmin-SQL-Fenster ein, und schaue, was dir für ein Fehler ausgegeben wird. Möglicherweise fehlt eine der angegebenen Spalten in der Datenbank.
Das ist so minimal kurz, ich würde behaupten, dass das "normal" ist, zumindest wenn bei OnPlayerSpawn die Position gesetzt wird, da der Spieler logischerweise kurzzeitig am Spawn steht.
Mir ist es erst aufgefallen, als ich es ganz langsam angeschaut habe.
Kommt dir die Position denn irgendwoher bekannt vor, also hast du dort deine Class Selection, oder nutzt du die Position irgendwo?
Das ist natürlich schlecht, denn ohne diese Info kann ich dir nicht sagen warum der Server abstürzt.
Dann musst du es manuell herausfinden, und zwar indem du zwischen die Zeilen prints einfügst, und schaust, bis zu welcher Zeile der Server kommt, bis der Server abstürzt.
Beispiel:
public OnPlayerSpawn(playerid)
{
SendClientMessage(playerid, -1, "Hallo.");
GivePlayerWeapon(playerid, 46);
return 1;
}
Wird zu:
public OnPlayerSpawn(playerid)
{
printf("Starte OnPlayerSpawn für %d", playerid);
SendClientMessage(playerid, -1, "Hallo.");
printf("1");
GivePlayerWeapon(playerid, 46);
printf("2");
return 1;
}
Zu Anfangs musst du es ja nicht zwischen jede Zeile setzen, sondern kannst es in Blöcken machen, du musst dich dann eben an die Zeile, die als letztes ausgeführt wird, hinarbeiten, dann weißt du, dass die nächste Zeile den Crash verursacht.
Würde als im Beispiel als letztes die "1" im Server Log stehen, dann wüsstest du, dass GivePlayerWeapon den Crash verursacht.
Schau mal, ob du so etwas herausfinden kannst.
Kannst du nochmal posten was im MySQL Log jetzt steht?