so nach langem rummachen hab ich einen arrest befehl hinbekommen...
aber irgendwie funktioniert noch einiges nicht...
ich werde alles posten, und mit // komentieren was nicht funktioniert.. dann könnt ihr mir ja vielleicht helfen:
über ongamemodeinit:
new Jailtimer;
bei onplayerspawn
if(GetPVarInt(playerid,"Jailtimer") == 0)
{
}
else
{
Jailtimer = SetTimer("Jailtimer2",2000,1); ((funktioniert nicht richtig)
}
if(GetPVarInt(playerid,"Jail") == 1)
{
new Float:RandomSpawnJail[][4] =
{
{193.2786, 174.6594, 1003.0234, 3.4033},
{197.5484, 174.7399, 1003.0234, 1.2100},
{198.3096, 161.9169, 1003.0300, 181.9817}
};
new rand = random(sizeof(RandomSpawnJail));
SetPlayerPos(playerid, RandomSpawnJail[rand][0], RandomSpawnJail[rand][1],RandomSpawnJail[rand][2]);
SetPlayerFacingAngle(playerid, RandomSpawnJail[rand][3]);
SetPlayerInterior(playerid, 3);
}
hier der hauptcommand:
ocmd:arrest(playerid,params[])
{
if(Fraktion(playerid,1)||Fraktion(playerid,2))//ist er in Fraktion 1 oder 2
if(IsPlayerInRangeOfPoint(playerid,2,200.6969,168.2510,1003.0234))
{
new pID,string[128];
if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid,ROT,"Spieler nicht gefunden");
if(pID == playerid)return SendClientMessage(playerid,ROT,"Du kannst dich nicht selber einsperren!");
if (ProxDetectorS(3.0, playerid, pID)) //funktioniert nicht, er zeigt mir immer an : Der Spieler ist nicht in der Nähe
{
if(GetPVarInt(pID,"Wanteds") <= 0)return SendClientMessage(playerid,ROT,"Der Spieler hat keine Wanteds!");
if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"Benutze: /arrest [ID]");
{
SetTimer("Jailtimer1",GetPVarInt(pID,"Wanteds")*60000,0); // er soll einen Timer setzen, welcher pro Wanted 1ne Minute einsperrt
Jailtimer = SetTimer("Jailtimer2",2000,1); //timer, welcher alle 2 Sekunden: SetPVarInt(playerid,"Jailtimer",-2000) macht... //funktioniert nicht
SetPVarInt(pID,"Jailtime",GetPVarInt(pID,"Wanteds")*60000); //setzt jailtime auf Wantedlevel * 60000 //funktioniert
SetPlayerWorldBounds(pID,203.9931,188.1784,180.7820,156.5854);
format(string, sizeof string,"Du hast %s verhaftet!",Spielername(pID));
SendClientMessage(playerid,BLAU,string);
format(string, sizeof string,"Du wurdest von %s verhaftet!",Spielername(playerid));
SendClientMessage(pID,BLAU,string);
new Float:RandomSpawnJail[][4] =
{
{193.2786, 174.6594, 1003.0234, 3.4033},
{197.5484, 174.7399, 1003.0234, 1.2100},
{198.3096, 161.9169, 1003.0300, 181.9817}
};
new rand = random(sizeof(RandomSpawnJail));
SetPlayerPos(pID, RandomSpawnJail[rand][0], RandomSpawnJail[rand][1],RandomSpawnJail[rand][2]);
SetPlayerFacingAngle(pID, RandomSpawnJail[rand][3]);
SetPVarInt(pID,"Wanteds",0);
SetPlayerWantedLevel(pID, 0);
SetPVarInt(pID,"Jail",1);
SpielerSpeichern(pID);
}
}
else
{
SendClientMessage(playerid, ROT, "Der Spieler ist nicht in der Nähe");
}
}
else
{
SendClientMessage(playerid,ROT,"Du kannst hier niemanden verhaften!");
}
return 1;
}
und hier die beiden timer:(funktionieren beide nicht)
forward Jailtimer1(playerid);
public Jailtimer1(playerid)
{
SetPlayerPos(playerid,200.6969,168.2510,1003.0234); //Spielerposition wird wieder auserhalb der Zelle gesetzt
SendClientMessage(playerid,BLAU, "Du hast deine Haftstrafe erfolgreich abgesessen!");
SetPVarInt(playerid,"Jail",0); //Jail wird wieder auf 0 gesetzt
SetPlayerWorldBounds(playerid,20000,-20000,20000,-20000);
}
forward Jailtimer2(playerid);
public Jailtimer2(playerid)
{
if(GetPVarInt(playerid,"Jailtimer") == 0) //wenn "Jailtime" auf 0 angekommen ist, soll der Timer gestoppt werden.
{
KillTimer(Jailtimer);
}
else //ansonsten werden alle 2 Sekunden 2000 von "Jailtime" abgezogen und gespeichert, falls sich der spieler ausloggt, jailtime noch vorhanden ist
{
SetPVarInt(playerid,"Jailtime",-2000);
SpielerSpeichern(playerid);
}
}
/e rechtschreibfehler