Äh sorry hier fehlt ne )
if(PremiumFahrzeug(GetPlayerVehicleID(playerid)))
Äh sorry hier fehlt ne )
if(PremiumFahrzeug(GetPlayerVehicleID(playerid)))
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)//Ob er in ein Polizei Fahrzeug einsteigt und dies NICHT als Beifahrer sondern als Fahrer
{
if(PremiumFahrzeug(GetPlayerVehicleID(playerid))//Falls das Fahrzeug indem der Spieler eingestiegen ist ein Polizeifahrzeug ist...
{
if(isPlayerPremium(playerid))
{
SendClientMessage(playerid,HELLROT,"Du bist kein Premium Mitglied!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
An sich ist es in der Funktion schon deklariert.
Zeig mal genau den Bereich, auf den sich der Error bezieht. Ist das die Funktion public PremiumFahrzeuge(vehicleid)?
dementsprechend dann auch den forward anpassen
Nein, wenn du eine Variable zum zwischenspeichern nutzt und die beim Laden initialisierst, dann nicht. Du verwendest in Abfragen dann nur noch die Variable.
Cool. Ich bekomm auch immer 5 Errors , aber wenn ich die nicht poste kann mir nicht geholfen werden.
Da Sprache ein Integer ist, nein dini_Int
Moin,
Ich habe eine Logitech G15 und die reagiert (also das Display) nach dem Energiesparmodus von Windows 7 nicht mehr. Das Problem ist auch allseits bekannt, es gibt wohl aber noch keinen Patch für die Logitech Gaming Software.
Man kann das Problem wohl aber mit einer bat. Datei beheben (zumindest elegant umgehen), welche man per Aufgabenplanung von Windows nach Reaktivierung aus dem Energiesparmodus ausführen lässt. Soweit funktioniert auch alles.
Meine Bat Datei:
Die Bat Datei wird korrekt ausgeführt, jedoch startet das Programm nicht minimiert. Das möchte ich aber.
Kennt jemand die Lösung für das Problem?
Mal ehrlich, wenn ich nen paar Funktionen wie sscanf o.Ä benutze, welche ich nicht selber geschrieben habe, kann ich es doch noch Selfmade nennen?
Ma so nebenbei? Hast du die z Taste bei dir belegt? Denn man kann nicht einfach irgendwelche Keys auslesen.
An sich erstmal garnicht. Aber du kannst z.B. beim Connecten abfragen, ob die Zeit schon vorüber ist und dann alle Werte bezüglich Premium aus null oder 0 setzen.
Da das ja anscheinend übersehen wurde
Ja klar, denn du kannst alle Objecte (Zeile) deines Arrays via For Schleife durchlaufen.
enum MuellEnum
{
MuellID,
Float:XPos,
Float:YPos,
Float:ZPos
};
#define maxmuellobjects 3
new Muell[maxmuellobjects][MuellEnum]=
{
{2677, 1529.6143,-1439.0948,13.3828},
{2677, 1506.7222,-1443.4045,13.3828},
{2677, 1485.4395,-1438.5841,13.3828}
};
new muellobject[maxmuellobjects];
for(new i = 0;i<sizeof(Muell);i++)
{
muellobject[i] = CreateObject(Muell[i][MuellID], Muell[i][XPos],.....);
}
Dann kannst du bei OnPlayerPickupPickup überprüfen ob die pickupid der gleich ist, welche in einem der muellobject[] zellen gespeichert ist.
edit: Das geht natürlich so nur bei Pickups und nicht bei Objekten.
Genau so ist es:
2 Min = 120 Sekunden
An sich erstmal garnicht. Aber du kannst z.B. beim Connecten abfragen, ob die Zeit schon vorüber ist und dann alle Werte bezüglich Premium aus null oder 0 setzen.
edit: Prototype: Jo hast recht, der Code war nicht nicht optimiert.
ocmd:premium(playerid,params[])
{
new pID,dauer;
new timestamp,str[128];
if(sscanf(params,"ud",pID,dauer)) return SendClientMessage(playerid,GRAU,"Benutze: /premium [SpielerName/ID] [Wochen]");
timestamp = gettime();
new sekunden= dauer * 7*24*60*60;
timestamp += sekunden;
format(str,sizeof(str),"Blabla hat %d Wochen Premium",dauer);
SendClientMessageToAll(ROT,str);
mysql_SetInt("accounts", "Premium", timestamp, "Name", SpielerName(pID));
SavePlayer(pID);
return 1;
}
Sie Sequenz war falsch.
edit:
new sekunden= dauer * 7*24*60*60;
macht aus den angegebenen Wochen (dauer)
z.B.
1 Woche = 7 Tage = 168 Stunden = 10080 Minuten = 604800 Sekunden
Und wir brauchen ja Sekunden für den Timestamp
Wenn du das machst
new sekunden = dauer * 60;
timestamp += sekunden;
Bevor dauer überhaupt initialisiert ist, kann das auch nix werden (0*60)
edit: und für Wochen musst du aus Sekunden noch Minuten,Stunden,Tage und Wochen machen.
Kann sein, dass das jetzt off-Topic ist, aber bist du sicher, dass ein Premiumsystem mit Datei jetzt schon das richtige ist?
Wenn du das einfach irgendwo einfügst und dann nichts funktioniert, weil es in keinem Zusammenhang steht, dann solltest du eventull mit etwas leichterem anfangen.
Dir fehlt im Update eine WHERE Bedingung
Der Timestamp (auch Unix Timestamp) ist die vergangene Zeit in Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC.
In Pawn kann man den Timestamp als Integer über den native gettime() auslesen.
Beim erhalten des Premiums:
Du holst den Timestamp und speicherst diesen in einer Datei (z.B. Flag = "Premzeit")(Integer).
Du speicherst die Dauer des Premium in der Datei (z.B. Flag = "Premdauer")(Integer)(z.B. in Tagen).
Abfragen des Premiums
Wenn der Spieler sich einloggt fragst du ab:
Ist aktueller Timestamp kleiner gleich des gespeicherten Timestamp plus der Dauer * 24*60*60.
if(gettime() < savedtime+dauer*24*60*60)
savedtime und dauer liest du aus der oben erstellten Datei aus.