Befehlstimer nur aktiveren wenn bedingung erfüllt

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey Leute also ich möchte das leute mit dem Beruf "Farmer" nur alle 60 minuten /ernten eingeben können und so Geld verdienen
    Das hab ich so gelöst

    Code
    if(strcmp(cmd, "/ernten", true) == 0){	if(PlayerInfo[playerid][pJob] != 6)	{		SendClientMessage(playerid, COLOR_GRAD1, "Das können nur Farmer!");		return 1;	}	if(erntetimer[playerid] != 0) //Der spieler hat den Befehl vorher schonmal nicht ausgeführt, denn sonst wäre die variable ja 0	{		if( (gettime() - erntetimer[playerid]) < 3600)		{			// gettime() gibt den aktuellen Timestamp zurück. Das sind die Sekunden vom 1. Januar 1970 00:00 bis jetzt.			// erntetimer[playerid] beinhaltet ja den Timestamp des letzten males als der Spieler den befehl erfolgreich genutzt hat.			// also ist die Differenz der beiden, die Anzahl an Sekunden zwischen dem letzten ausführen des Befehls und jetzt.			// Jetzt kannst du abfragen, ob die zeit lang genug war, oder ob er noch nicht lange genug gewartet hat um den befehl erneut nutzen zu können.			// in dem Fall hier habe ich 600 Sekunden (=10 Minuten) genommen. Das musst du nach deinen wünschen ändern.			SendClientMessage(playerid, COLOR_GRAD1, "Du musst 60 Minuten zwischen dem Farmen warten");			return 1;		}	}	erntetimer[playerid] = gettime(); // Wir speichern den aktuellen Timestamp in der Variable	new vehicle = GetPlayerVehicleID(playerid);	if(AktuellerCP[playerid] != INVALID_FARMER_CP)return SendClientMessage(playerid,COLOR_GRAD1, "Du hast kein Mähdrescher!");	if(!FarmerFahrzeug(vehicle))return SendClientMessage(playerid,COLOR_GRAD1, "Du bist in keinem Mähdrescher");	if(PlayerInfo[playerid][pFarmTime] > 0)return SendClientMessage(playerid, COLOR_GRAD1, "Die Pflanzen sind noch nicht gewachsen!");	AktuellerCP[playerid]++;	SetPlayerCheckpoint(playerid,FarmerCPS[AktuellerCP[playerid]][0],FarmerCPS[AktuellerCP[playerid]][1],FarmerCPS[AktuellerCP[playerid]][2], 8.0);	SendClientMessage(playerid,COLOR_LIGHTBLUE, "*Fahre nun die Checkpoints ab, um das Feld abzuernten.");	return 1;}


    Nur leider hab ich jetzt keine Ahnung wie ich das anstellen soll das man erst den erntetimer aktiviert wenn man im Mähdrescher sitzt


    Man soll also /ernten so oft wie möglich eingeben können(solang man nicht im mähdrescher ist) und wenn man im Mähdrescher drin hockt und /ernten eingibt soll der 60 Minuten timer starten und dem zeitpunkt aus soll man erst wieder nach 60 minuten ernten können

  • überprüf ob der spieler in einem Fahrzeug mit dem Model Mähdrescher sitzt (welche modelid ist der den dann kann ich dir nochmehr helfen.)
    Wenn er nicht drine sitz gib ne meldung aus, dass der Befehl nur in einem Mähdrescher nutzbar ist.
    Am besten lässt du dann beim aussteigen auch den Job abrechen, sonst kommen Leute auf die idee den Befehl im Mähdrescher zu machen und dann auszusteigen um die Checkpoints im Infernus abzufahren.