Außerdem wo ist die healt-Variable initialisiert oder deklariert?
Mit GetPlayerHealth kannst du das Leben des Spielers abfragen. das solltest du benutzen.
Außerdem wo ist die healt-Variable initialisiert oder deklariert?
Mit GetPlayerHealth kannst du das Leben des Spielers abfragen. das solltest du benutzen.
Da ich gerade in der Schule bin und das bis 6. Kann ich dir leider nicht über Teamviewer helfen. Aber ich sag dir noch wie du Informationen aus Feldern ausliest.
Erstmal erstellst du einen neuen String um dort immer die Werte einzulesen.
new daten[128];
Hier die Abfrage.
format(query,sizeof(query),"SELECT * FROM `user` WHERE Name = '%s'",pName);
mysql_query(query);
Also mit der Select-Abfrage liefert er dir mal alle Werte aus der der Zeile wo der Name = pName. Das Limit 1 kannst du weglassen, ich weiß gar nicht ob das überhaupt hier funktioniert. Lass es mal weg, es sollte sowieso von der Registrierung her nicht gehen das es mehrere gleiche Namen gibt.
Nun speicherst du die Werte.
mysql_fetch_field("Adminlevel", daten);
PlayerInfo[playerid][pAdmin] = strval(daten);
mysql_fetch_field("Level", daten);
PlayerInfo[playerid][pLevel] = strval(daten);
Mit dem mysql_fetch_field holst du dir die Daten aus dem Feld und speicherst diese in den daten-String. Weiters machst du dann aus daten einen Int-Wert mit der strval-Methode und speicherst dies in dein enum.
Falls du noch Fragen hast melde dich.
Omg wie Kompliziert machst du das Hast du überhaupt eine Ahnung von MySQL
Du brauchst das nur einmal abfragen.
format(query,sizeof(query),"SELECT * FROM `user` WHERE Name = '%s' LIMIT 1",pName);
mysql_query(query);
Damit kannst du nun alle anderen Werte abfragen, weil es gibt eh nur einen einzigen User mit dem Namen oder gar keinen. Dies erspart die alle anderen Querys. Das * bedeutet das du alle Werte dann davon bekommst. Versuchs mal damit.
Und so speicherst du die Werte ab.
mysql_fetch_field("Adminlevel", daten);
PlayerInfo[playerid][pAdmin] = strval(daten);
if(IsPlayerInRangeOfPoint(playerid,10,1004.0812,-939.4362,42.1797) || IsPlayerInRangeOfPoint(playerid,50,1939.2225,-1772.7452,12.9431))
Dieses "||" bedeutet ein ODER. Diese Bedingung fragt also ab ob er in der Nähe von dem Ort ist ODER von dem Ort.
Hast du ein mysql_init() vor mysql_connect gemacht?
Ich finds eigentlich nice für den Anfang. Daraus kannst du jetzt vieles machen.
Impressum musst du aufjedenfall noch richtig verbessern
Habs gerade mit meinen Kollegen gemacht und haben uns gegenseitig unsere geilen Pizzen geschickt
Also nach dem Tut kommt in der Console, konnte keine Verbindung herstellen
Ja aber da muss es einen Error geben von MySQL warum es keine Verbindung herstellen konnte oder steht da bei dir nichts. Schreib mal die ganze Fehlermeldung in der Konsole hier rein bitte.
1. heißt es UsePlayerPedAnims und nicht User
2. Nein geht nicht, entweder für alle oder gar nicht
XAMPP funktioniert mittlerweile.
Anderes Problem, aber, so wie es im TuT erklärt ist, kann mein Server keine Verbindung zur Database herstellen.
Wieso nicht? Was kommt den für eine Error-Meldung in der Konsole oder in Pawn?
So ist es richtig.
format(string,sizeof(string),"[Name: %s] [Level: %i] [Fraktion: %s]",SpielerName(playerid),GetPlayerScore(playerid),fraktname);
fraktname ist ein String, jedoch hast du das so gemacht. das ist falsch.
GetPVarInt(playerid,"Adminlevel",fraktname)
Das sind schon 2 Fehler in einem. Erstens du brauchst nur zwei Parameter bei GetPVarInt und außerdem ist fraktname ein String.
Deswegen ist bei dir immer eine Zahl gekommen.
Mach mal ein paar Testausgaben wie
printf("Test");
Damit testest du ob diese Bedingung überhaupt ausgeführt wird oder ob der Befehl überhaupt ausgeführt wird usw.
Dann siehst du deine Probleme leichter. Und kannst uns dann sagen was ausgeführt wird und was nicht.
Unter OnGameModeInit.
Du versuchst einen String in eine Int-PVariable zu speichern. Das funktioniert nicht.
Grund ist ja ein String und keine Zahl
SetPVarString(pID,"tbanGrund",grund);
So funktioniert es.
Das hier beim Laden.
SetPVarString(playerid,"tbanGrund",dini_Get(Spielerdatei,"tbanGrund"));
Das hier beim Speichern.
new grund[128];
GetPVarString(playerid,"tbanGrund", grund, sizeof(grund));
dini_Set(Spielerdatei,"tbanGrund", grund);
Ich hoffe du verwendest jetzt nicht enum, sondern PVar. Falls du enum verwendet, einfach die PVars umändern auf enums
ocmd:punkt(playerid, params[]) {
if(!isPlayerInFrakt(playerid, FID)) return SendClientMessage(playerid, ROT, "Du gehörst nicht dem Ordnungsamt an"); // Für FID die Fraktionsid des Ordnungsamtes angeben, das ist meine Methode um zu testen ob der Spieler in der Fraktion ist. Falls du eine andere hast, ersetzen.
new pID, anzahl, grund[80], name[20], string[128];
if (sscanf(params, "uis", pID, anzahl, grund)) return SendClientMessage(playerid, GRUEN, "/punkt [ID] [Anzahl] [Grund]");
if (anzahl < 0 || anzahl > 15) return SendClientMessage(playerid, GRUEN, "Falsche Angabe für Punkte. (1-15)"); // Damit man nicht mehr Punkte als 15 setzen kann und nicht weniger als 0
SetPVarInt(pID, "Punkte", GetPVarInt(pID, "Punkte")+anzahl); // Fügt der aktuellen Punktezahl die Anzahl der Punkte hinzu und wird gespeichert
if (anzahl == 1) {
format(string, sizeof(string), "Du hast von %s %i Punkt bekommen. Grund: %s", name, anzahl, grund);
} else {
format(string, sizeof(string), "Du hast von %s %i Punkte bekommen. Grund: %s", name, anzahl, grund);
}
SendClientMessage(pID, ROT, string); // Text für den Spieler wieviele Punkte er bekommen hat
if (GetPVarInt(pID, "Punkte") >= 15) { // Wenn der Spieler mehr als oder gleich 15 hat, wird die Bedingung ausgeführt
SetPVarInt(pID, "Lizens", 0); // 0 bedeutet die Lizens ist weg, 1 bedeutet er hat sie
SetPVarInt(pID, "Punkte", 0); // Punkte wird wieder auf 0 gesetzt
SendClientMessage(pID, ROT, "Deine Lizens wurde dir entzogen");
}
GetPlayerName(playerid, name, sizeof(name));
return 1;
}
Habe es jetzt nicht ausprobiert, sollte aber funktionieren. Falls nicht melde dich bitte wieder über PN.
3. Für die gleiche Fraktionsid darfst du nicht die ID von playerid setzen sonst bekommt er ja die ID als Fraktion die der andere als Spieler hat.
SetPVarInt(pID,"Fraktion",GetPVarInt(playerid, "Fraktion"));
So ist es richtig und er kommt in die gleiche Fraktion.
Das Problem ist dabei, dass XAMPP bzw. MySQL nicht auf meinem PC läuft und ich keinen Server mit MySQL zur Verfügung habe.
Außerdem kann ich z.B. nicht die Datenbank meines FTP Servers nehmen
Das ist schlecht, du brauchst einen Server mit einer Datenbank. Wieso funktioniert XAMPP bei dir nicht?
Das IsPlayerConnected ist unnötig. Das kannst du weglassen.
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) {
Mach mal eine Testausgabe.
if(GetPVarInt(playerid,"Eingeloggt") == 1) { printf("Test");
}
Wenn es Test ausgibt auf deinem Server also in der RCON, dann wird die Bedingung ausgeführt. Wenn es nicht ausgegeben wird, dann ist der Fehler woanders.
Freeroam das höre ich zum ersten Mal, was ist das und wie funktioniert diese. Könnt ihr mir das bitte erklären.
Weil du die gleichen Koordinaten geschrieben hast bei beiden Exits
Du darfst es nicht bei Connect machen sondern bei OnPlayerSpawn