Warum funktioniert es mit Pickups nicht? Kannst du davon mal den Code zeigen?
Das geht nämlich, das Pickups mit dem Auto aufgenommen werden können. Und zwar ganz ohne OnPlayerUpdate.
Warum funktioniert es mit Pickups nicht? Kannst du davon mal den Code zeigen?
Das geht nämlich, das Pickups mit dem Auto aufgenommen werden können. Und zwar ganz ohne OnPlayerUpdate.
Also erst mal, nimm nicht "int" als Variable, das wird in PAWN blau markiert, mich wundert es dass du es überhaupt kompilieren kannst.
Dann probier mal in sscanf "ud" zu "dd" zu ändern.
Ich versuch das mal zu erklären:
Du nimmst die echte Zeit: EchtGesamt = EchteStunde * 60 + EchteMinute
SpielGesamt = EchtGesamt * 4
SpielMinute = SpielGesamt % 1440
SpielStunde = SpielMinute / 60
SpielMinute -= SpielStunde * 60
Somit:
19:01 Uhr sollte ja im Spiel 4:04 sein.
EchtGesamt = 19*60 + 1 = 1141
SpielGesamt = 1141*4 = 4564
SpielMinute = 4564 % 1440 = 244
SpielStunde = 244 / 60 = 4
SpielMinute -= 4*60 = 4
--> 4:04. Passt.
So funktioniert es also.
Probier mal, einfach eine Spalte in der DB hinzuzufügen, die "Irgendwas" heißt. Und dann versuch mal was in der zu setzen, also vom Server aus.
Vielleicht ist irgendeine Einstellung falsch, in der Spalte.
Einfach mal bissle mit der Datenbank rumspielen. Oder "Alter" löschen, und neu hinzufügen, mit anderem Name, z.B. AlterNeu.
Problem 1:
Es scheint als hast du doch einen Fehler in deiner Datenbank. Hast du Name und Alter wirklich so geschrieben? Groß/Kleinschreibung beachtet?
//EDIT: Hab das Bild grade erst gesehen.
Setz mal die Größe von Alter in deiner Datenbank auch zu 11 wie die anderen. Du brauchst kein Integer mit einer länge von 50. Es ist ja keiner 1.000.000.000.000.000.000.000.000.000.... Jahre alt.
Problem 2:
public IstPolizeiAuto(playerid)
{
new carid = GetPlayerVehicleID(playerid);
for(new i=0; i < sizeof(Polizeiauto); i++) if(carid == Polizeiauto[i]) return 1;
return 0;
}
Indentation ist das da:
new Variable;
new AndereVariable; //Hier die Warnung
if(Variable == 0)
{
Variable = 1;
AndereVariable = 4; //Hier die warnung
}
So ists richtig:
new Variable;
new AndereVariable;
if(Variable == 0)
{
Variable = 1;
AndereVariable = 4;
}
Strings, also auch Namen, werden mit strcmp verglichen:
if(!strcmp(SpielerDaten[playerid][pName], AutoDaten[i][aBesitzer]) && strlen(AutoDaten[i][aBesitzer]))
Bon Jovi - Because We Can
Text3D:
zu
PlayerText3D:
Es ist ja ein Player Label.
Und vor alle -1 musst du auch PlayerText3D: setzen.
Jetzt war meine erste Idee so:
Würde das funktionieren? Und vorallem: Funktioniert die Idee überhaupt, so wie ich denke?
Also erst mal grundsätzlich: Nein. Wie soll den der Server wissen welche Spieler ID gemeint ist?
Du kannst das ganz einfach machen, einfach in deinem enum z.B. ''pMaxVeh'' hinzufügen, und anstatt diesen defines schreibst du:
P_Data[playerid][pMaxVeh] = 2; //oder ne andere Zahl
Das ganze rufst du natürlich bei OnPlayerConnect bzw. dort wo der Spieler sich einloggt auf.
In sscanf aus "ud" mal "dd" machen. Das sollte dann funktionieren.
Ich weiß nicht, vielleicht mit dem ersten Aufruf von OnPlayerUpdate? Probieren kostet ja nix.
Oder vielleicht hast du es in einer andren Version hinbekommen, in der erst die Nachricht kam und dann OnPlayerConnect.
Ich gebe dir mal einen Tipp: Mach nur das was du auch kannst. Wenn du es heute nicht kannst, dann lass dir nicht ein ganzes System machen, sondern warte damit bis du es kannst. Ich sage das nicht zum Spaß, sondern weil ich genau so meinen Server gemacht habe. Und nur so kann man lernen, nicht wenn es andere machen. Fragen stellen ja, ganze Scripte fordern...Nein. Da ist nichts gelernt.
Soweit ich weiß kommt das Connected to... erst nach dem Aufruf von OnPlayerConnect. Ich würde einen kurzen Timer nehmen. Oder du versuchst es irgendwie über OnPlayerRequestClass zu machen, bzw. vielleicht geht auch was über OnPlayerUpdate.
Timer ist aber das einfachste.
new string[144];
format(string, sizeof(string), "Du bist %d Jahre alt!", age);
SendClientMessage(playerid, COLOR_RED, string);
Hast du die Tabelle überprüft? Alles richtig gesetzt und keine Schreibfehler?
Wenn da alles stimmt, setze mal SetPVarInt direkt unter das new age = ... und ersetze oben im format das "age" mit dem GetPVarInt, und schau mal was dir angezeigt wird.
Sieht ganz gut aus. Da kann ich nichts falsches sehen.
Bringt wohl nichts, aber ein Versuch ist es wert:
Setze mal das SetPVarInt über die SendClientMessage, und probiers dann. Wenn es immer noch nicht tut, dann setze anstatt "age" im string doch mal GetPVarInt ein, ob es dir das Alter richtig anzeigt.
Hat du eigentlich SendClientMessage verändert? So wie ich die Funktion kenne, hat die keine parameter für variablen.
Und ich will ja nicht nörgeln, aber deine Rechtschreibung lässt zu wünschen übrig. Das sind Details auf die du achten solltest. Willkommen schreibt man mit 2 L's.
Zum Einen das, und zum Anderen, musst du die Arraygröße in die du das von strtok zurückgegebene Zeugs speicherst auf 256 setzen.
Problem 1:
Es heißt Registriert, nicht Regestriert, nur mal so nebenbei.
Ich kann aber noch immer nichts MySQL-mäßiges sehen. Wo speicherst du denn das Alter in die Datenbank?
Problem 2:
"bool:" weg machen.
Problem 3:
In die Klammern "playerid" schreiben.
Du verteilst ja ganz schön harte Strafen.
Die Version von Hexler sollte eigentlich funktionieren, bis auf dass return 1, sollte return 0 sein aber das hat er ja gesagt.
Zeig doch mal das gesamte OnPlayerText, so wie es jetzt gerade ist.
Problem 1:
Ich kann gar kein MySQL sehen.
Problem 2:
Zeig mal wie du TutTimer deklariert hast.
Problem 3:
Wie sieht denn die "forward" Version aus? Die sollte gleich aussehen, ansonsten gibts Ärger mit dem Compiler.