So sieht das aus, alles klar.
if(GetPVarInt(playerid,"Adminlevel") != 1337 && GetPVarInt(playerid,"Adminlevel") != 2000) return SendClientMessage(playerid,GELB,"Du hast keine Rechte dazu!");
Müssen wir direkt abfragen, sonst tuts nicht.
So sieht das aus, alles klar.
if(GetPVarInt(playerid,"Adminlevel") != 1337 && GetPVarInt(playerid,"Adminlevel") != 2000) return SendClientMessage(playerid,GELB,"Du hast keine Rechte dazu!");
Müssen wir direkt abfragen, sonst tuts nicht.
Versuch mal das von ASS, das sollte tun. Es kann sein, dass dein "isPlayerAnAdmin" nicht false zurückgibt, daran hab ich nicht gedacht, weil es bei mir immer so ist. Sorry.
Falls das auch nicht tut, schilder mal was passiert.
Du kannst mehrere zehntausend Objekte mit einem Streamer im Server haben. Einzig und allein musst du das SA-MP Limit im Auge behalten, denn ein Streamer verändert nicht das SA-MP Limit, sondern er zeigt dir nur die Objekte die du auch sehen kannst. Daher kannst du jeden Meter ein Objekt setzen, zichtausend Meter lang, aber du kannst nicht 3000 Objekte an einen Platz setzen, da wirst du nur 1000 davon sehen.
Ich rate dir das Streamer Plugin von Incognito zu verwenden, das ist das beste, und das hat, soweit ich weiß auch kein Limit an der Anzahl der gestreamten Objekte (!nicht zu verwechseln mit dem SA-MP Limit!).
if(!isPlayerAnAdmin(playerid,1337) && !isPlayerAnAdmin(playerid,2000)) return SendClientMessage(playerid,"Du hast keine Rechte dazu!");
Wenn nicht und wenn nicht, dann auch nicht.
@GoldDeagle: Nicht dein Ernst, oder?
@Raphael.K: Könntest du mal die mysql Include öffnen, und mir zwei Linien geben, und zwar die "native mysql_GetInt" und die "native mysql_SetInt". Ich hab danach gesucht, aber nichts gefunden. Die Warnung bedeutet, dass zu zu viele/wenige Parameter angegeben hast. Dazu müsste ich wissen, wie die native Funktion aussieht.
edit : jz steht auf dem eigenen local server , nur connected to life of city ... und das einlogsystem undso geht nicht
Dann wird ein Array aufgerufen, aber mit einem Wert außerhalb des Wertebereichs, zum Beispiel so:
new Array[4];
new var = 5;
Array[var} = 1;
Zeig mal den Code den du hinzugefügt hast, sodass es nicht mehr tut.
Warum es nicht geht kann ich dir nicht sagen, ich kann dir aber sagen, wie du es zum laufen bekommst. In diesem Topic: MYSQL Lädt falsche werte war genau das selbe Problem vorhanden. Diese manuelle Methode benutzt kein sscanf (Ich verzichte ganz bewusst schon immer auf sscanf.) und funktioniert immer. Ich hatte damit noch nie Probleme die mir unerklärlich waren.
Du musst eben den Code an deinen anpassen, aber das wirst du hinbekommen, wenn nicht einfach Bescheid geben.
Zurück auf Anfang, so wie es war als du den Thread gestartet hast. Und dann ganz einfach:
new PlayerText:lebensanzeige[MAX_PLAYERS];
zu:
new Text:lebensanzeige[MAX_PLAYERS];
Das wars.
Von den Lichtern solltest du noch zeigen, wie du sie deklariert hast.
Problem 1:
for(new i = 0; i < MAX_CAR; i++)
{
loadcar(playerid,i);
CreateVehicle(Autos[playerid][i][modelid],Autos[playerid][i][posx],Autos[playerid][i][posy],Autos[playerid][i][posz],Autos[playerid][i][posa],Autos[playerid][i][Farbe1],Autos[playerid][i][Farbe2],-1);
}
Das reicht völlig aus.
Zudem fehlt bei deinem stock loadcar(playerid,autoid) das Modell (modelid) des Autos. Wenn du das hinzufügst, wird es funktionieren.
Problem 2:
if(GetVehicleTrailer(pbenzin[0]))
zu:
if(GetVehicleTrailer(GetPlayerVehicleID(playerid)) == pbenzin[0])
Und:
Zitat"Du hasst keinen Anhänger oder den Falschen"
Ich hasse meine Anhänger auch immer. Was ein "s" zu viel doch aus macht.
Um das ein für alle mal klar zu stellen, da ich das nun schon so oft gesehen hab, auch im Englischen Forum:
Es gibt keinen ID 0 Bug!
Nun, warum nicht?
Einen Bug als ID 0 Bug zu verallgemeinern ist schlichtweg falsch. Wenn, dann hat der Code einen Fehler, der sich eben nur auf die ID 0 bezieht, oder genau diese auslässt. Zu sagen, es gibt einen ID 0 Bug, der wie ein Geist sich durch unsere Codes schleicht und ab und an auftaucht, um Angst und Schrecken zu verbreiten, ist Quatsch.
Das bedeutet:
Wenn du einen Code hast, der nur für ID 0 funktioniert, oder nur nicht für ID 0, dann liegt das ganz einfach daran, dass du einen Fehler gemacht hast, und nicht daran, dass ein Bug durch den Code geistert. Kommt der Bug an mehreren Stellen vor, dann liegt der Fehler eben an mehreren Stellen vor.
Was sollte ich tun?
Angenommen ein Code funktioniert für ID 0 nicht, dann einfach verschiedene prints einbauen, die alle Werte ausgeben, die für den Code benötigt werden. Wir nehmen als den Code ganz genau unter die Lupe. So findet sich der Fehler, und der ist meistens doch recht simpel.
Was sollte ich auf keinen Fall tun?
Versuchen mit NPCs die ID 0 zu blockieren. Das ist auf deutsch gesagt: Käse. Warum?
Wir müssen nur den ganz einfach Fall annehmen, dass dein NPC ein Timeout bekommt (das passiert durchaus, selten aber kann passieren) und nun bekommt ein Spieler die ID 0. Bums, haben wir den Fehler wieder da, bzw. man sollte sagen, der Spieler ist nun von dem Fehler in dem Code betroffen, zuvor war es eben ein NPC.
Fazit:
Einen ID 0 Bug gibt es im allgemeinen Sinn nicht. Läuft was mit der ID 0 anders als mit den anderen IDs ist das ganz einfach ein Fehler im Code, einer Include oder einem Plugin, welcher immer behoben werden kann, ohne die ID zu blockieren.
Siehe hier, heute besprochen:
mySQL Error
PS: FC Bayern, Stern des Südens, du wirst niemals untergehn!!!
return 1;
Die ersten zwei davon müssen weg. Die haben in der Schleife nichts zu suchen.
Weiß ich nicht genau. Ich würde mal sagen, dass es keinen Unterschied in der Handhabung macht, weil so wie ich das bei mir in der Datenbank auf meinem PC sehe, ist "root" ja einfach ein Benutzername der alle Rechte hat. Wenn du dir einen eigenen Benutzer erstellst, dann muss der ja auch diese Rechte haben, würde also nur anders heißen. Allerdings wäre ein Password sicher nicht die schlechteste Idee.
Wenn du phpMyAdmin benutzt, dann schau mal bei "Users", dort stehen die Benutzer, vielleicht kannst du dem root ein Passwort zuweisen.
if(GetPVarInt(playerid,"RobZeit") < cTime)
zu:
if(GetPVarInt(playerid,"RobZeit") > cTime)
So hatte ich es einstweilen mal behoben:
#define db_host "127.0.0.1"
#define db_user "root"
#define db_password ""
#define db_db "samp"
Und/Oder 127.0.0.1 mal mit localhost ersetzen, das kam bei Linux schon vor, dass es daran lag.
Letzendlich liegt es daran, dass dein Benutzer nicht die richtigen und benötigten Rechte hat.
Sagte ich doch bereits:
mysql_fetch_field("Model",data);
zu:
mysql_fetch_field_row(data, "Model");
ändern.
Ebenso für die restlichen.
Das hat dein einfachen Grund, dass stock-Funktionen so lange vom Compiler ignoriert werden, bis sie benutzt werden, das heißt mindestens ein mal im Code aufgerufen werden.
Warum ist das so?
Wenn du eine fehlerhafte Funktion hast, die nie benutzt wird, ändert das am Verhalten deines Servers nichts, daher wird der Fehler einfach ignoriert, er stört ja nicht.
mysql_fetch_field_row(data, "Model");
Oder (laut wiki wenn du "macro" benutzt):
mysql_get_field("Model",data);
Also müsste er nun bei einem Serverrestart dort spawnen, wo er vor dem Restart war?
Und nach einem Tot wieder dort, wo man nach der Registration spawnt, richtig?
Nicht wirklich, außer du hast einen Timer, in dem das Selbe in einer Schleife steht wie bei OnPlayerDisconnect, wenn deinen Server neu startest wird OnPlayerDisconnect nicht mehr aufgerufen.
Nach dem Tod spawnt der Spieler an der gespeicherten Stelle, nicht an dem Platz wo er nach der Registrierung war, das hatten wir doch vorhin gemacht.