Mit new KTime[128];
definierst du einen String, wenn es eine Zahl darstellen soll musst du [128] entfernen
new KTime; also so
KTime macht aber auch keinen Sinn da es durchgehend 0 ist!
Mit new KTime[128];
definierst du einen String, wenn es eine Zahl darstellen soll musst du [128] entfernen
new KTime; also so
KTime macht aber auch keinen Sinn da es durchgehend 0 ist!
Mit new KTime[128];
definierst du einen String, wenn es eine Zahl darstellen soll musst du [128] entfernen
new KTime; also so
KTime macht aber auch keinen Sinn da es durchgehend 0 ist!
Jetzt hab ich folgende Fehler
15479) : error 028: invalid subscript (not an array or too many subscripts): "KTime"
(15479) : warning 215: expression has no effect
(15479) : error 001: expected token: ";", but found "]"
(15479) : error 029: invalid expression, assumed zero
(15479) : fatal error 107: too many error messages on one line
Fehlerzeile:
WantedLevel[pid] = KTime[playerid];
Warte mal was möchtest du mit KTime bewirken?
kTime ist 0
WantedLevel[pid] = KTime[playerid];
Du gibst nun als WantedLevel den Wert den KTime hat also 0
Also ist nun WantedLevel 0.
Das heißt das dein KTime keinen Sinn hat in deinem Gesamten Code ergibt es keinen Sinn und bringt nichts
Alles anzeigenWarte mal was möchtest du mit KTime bewirken?
kTime ist 0
WantedLevel[pid] = KTime[playerid];
Du gibst nun als WantedLevel den Wert den KTime hat also 0
Also ist nun WantedLevel 0.
Das heißt das dein KTime keinen Sinn hat in deinem Gesamten Code ergibt es keinen Sinn und bringt nichts
Und wie kann ich es umschreiben das es sinn macht ?
Was soll es denn machen?
pID ist 0
playerid ist der Spieler der ihn festnimmt.
Weil du pID auch nicht definierst dafür nutzt man sscanf
Was soll es denn machen?
pID ist 0
playerid ist der Spieler der ihn festnimmt.
Weil du pID auch nicht definierst dafür nutzt man sscanf
Es ist ein arrest befehl.
Was genau ich bewirken möchte: Die Wantedanzahl mal *60 Sekunden = JailTime
ocmd:arrestpl(playerid,params[])
{
new pID,string[128];
if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
{
if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_GREY,"BENUTZE: /Arrestpl [playerid/Name]");
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)return SendClientMessage(playerid, COLOR_GREY, " Du bist nicht im Dienst!");
if(!IsPlayerInRangeOfPoint(playerid,3.0, 198.0591,159.2369,1003.0234))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht in der Nähe der Zellen.");
if(IsACop(pID))return SendClientMessage(playerid, COLOR_GRAD2, " Du kannst keinen Beamten einsperren!");
if(GetDistanceBetweenPlayers(playerid,pID) > 5)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler befindet sich nicht in deiner Nähe.");
if(WantedLevel[pID] < 1)return SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist nicht gesucht!");
format(string, sizeof(string), "* Du hast %s eingesperrt für $%d Sekunden.!", GetName(pID),PlayerInfo[pID][pJailTime]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
format(string, sizeof(string), "Eingesperrt von %s ~n~ fuer $%d Sekunden", GetName(playerid), PlayerInfo[pID][pJailTime]);
GameTextForPlayer(pID, string, 5000, 5);
ResetPlayerWeapons(pID);
PlayerInfo[pID][pJailTime] = WantedLevel[playerid] * 60;
SetTimerEx("UnPrison",PlayerInfo[pID][pJailTime],0,"i",playerid);
if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
{
format(string, sizeof(string), "<< LS Officer %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID));
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
{
format(string, sizeof(string), "<< SF Officer %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID));
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
{
format(string, sizeof(string), "<< Soldat %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID));
OOCNews(COLOR_LIGHTRED, string);
}
else if(PlayerInfo[playerid][pMember]==21||PlayerInfo[playerid][pLeader]==21)
{
format(string, sizeof(string), "<< FBI-Agent %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID));
OOCNews(COLOR_LIGHTRED, string);
}
PlayerInfo[pID][pJailed] = 1;
PlayerInfo[pID][pArrested] += 1;
SetPlayerInterior(pID, 3);
SetPlayerFree(pID,playerid, "Verhaftet");
WantedPoints[pID] = 0;
WantedLevel[pID] = 0;
SetPlayerWantedLevel(pID,0);
WantLawyer[pID] = 1;
}
else
{
SendClientMessage(playerid,-1,"Du bist kein Beamter.");
}
return 1;
}
Alles anzeigen
CodeAlles anzeigenocmd:arrestpl(playerid,params[]) { new pID,string[128]; if(gTeam[playerid] == 2 || IsACop(playerid) || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3) { if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_GREY,"BENUTZE: /Arrestpl [playerid/Name]"); if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)return SendClientMessage(playerid, COLOR_GREY, " Du bist nicht im Dienst!"); if(!IsPlayerInRangeOfPoint(playerid,3.0, 198.0591,159.2369,1003.0234))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht in der Nähe der Zellen."); if(IsACop(pID))return SendClientMessage(playerid, COLOR_GRAD2, " Du kannst keinen Beamten einsperren!"); if(GetDistanceBetweenPlayers(playerid,pID) > 5)return SendClientMessage(playerid, COLOR_GREY, "Der Spieler befindet sich nicht in deiner Nähe."); if(WantedLevel[pID] < 1)return SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist nicht gesucht!"); format(string, sizeof(string), "* Du hast %s eingesperrt für $%d Sekunden.!", GetName(pID),PlayerInfo[pID][pJailTime]); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); format(string, sizeof(string), "Eingesperrt von %s ~n~ fuer $%d Sekunden", GetName(playerid), PlayerInfo[pID][pJailTime]); GameTextForPlayer(pID, string, 5000, 5); ResetPlayerWeapons(pID); PlayerInfo[pID][pJailTime] = WantedLevel[playerid] * 60; SetTimerEx("UnPrison",PlayerInfo[pID][pJailTime],0,"i",playerid); if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1) { format(string, sizeof(string), "<< LS Officer %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID)); OOCNews(COLOR_LIGHTRED, string); } else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2) { format(string, sizeof(string), "<< SF Officer %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID)); OOCNews(COLOR_LIGHTRED, string); } else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3) { format(string, sizeof(string), "<< Soldat %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID)); OOCNews(COLOR_LIGHTRED, string); } else if(PlayerInfo[playerid][pMember]==21||PlayerInfo[playerid][pLeader]==21) { format(string, sizeof(string), "<< FBI-Agent %s hat den Verdächtigen %s eingesperrt >>", GetName(playerid), GetName(pID)); OOCNews(COLOR_LIGHTRED, string); } PlayerInfo[pID][pJailed] = 1; PlayerInfo[pID][pArrested] += 1; SetPlayerInterior(pID, 3); SetPlayerFree(pID,playerid, "Verhaftet"); WantedPoints[pID] = 0; WantedLevel[pID] = 0; SetPlayerWantedLevel(pID,0); WantLawyer[pID] = 1; } else { SendClientMessage(playerid,-1,"Du bist kein Beamter."); } return 1; }
Danke schonmal, das mit der Zeit klappt ,
nur der Timer nicht, werde direkt nach nichtmal einer sekunde aus dem Gefängnis entlassen
SetTimerEx("UnPrisons", PlayerInfo[pid][pJailTime], false, "i", pid);
etTimerEx("UnPrisons", PlayerInfo[pid][pJailTime], 0, "i", pid);
SetTimerEx("UnPrisons", PlayerInfo[pid][pJailTime], false, "i", pID);
zeig mal den Public davon
SetTimerEx("UnPrisons", PlayerInfo[pid][pJailTime], false, "i", pID);
zeig mal den Public davon
forward UnPrisons(playerid);
public UnPrisons(playerid)
{
SendClientMessage(playerid,-1,"DU bist frei!");
return 1;
}
Hab da noch nix geschrieben, aber die nachricht sollte dann auch erst nach (in dem Fall) einer minute kommen
PlayerInfo[pID][pJailTime] = WantedLevel[playerid] * 60;
zu:
PlayerInfo[pID][pJailTime] = WantedLevel[playerid] * 60 * 1000;
Die Angabe erfolgt in Millisekunden.
PlayerInfo[pID][pJailTime] = WantedLevel[playerid] * 60;
zu:
PlayerInfo[pID][pJailTime] = WantedLevel[playerid] * 60 * 1000;
Die Angabe erfolgt in Millisekunden.
super danke jetzt klappts!
Kurze Frage noch:
Wie könnte man das in Sekunden anzeigen lassen?
Als z.B Du wurdest für 60 sekunden eingesperrt
Das kannst du mit format machen:
format(string, sizeof(string), "Du wurdest für %d Sekunden eingesperrt.", WantedLevel[pID] * 60);
SendClientMessage(pID, COLOR_RED, string);
Edit:
Müsste doch auch eigentlich
WantedLevel[pID]
sein (habe es geändert), wenn ich den Ablauf richtig verstanden habe. Es bezieht sich ja auf das WantedLevel des Spielers, der eingesperrt wird. Also ändere das auch beim Timer.
Alles anzeigenDas kannst du mit format machen:
format(string, sizeof(string), "Du wurdest für %d Sekunden eingesperrt.", WantedLevel[pID] * 60);SendClientMessage(pID, COLOR_RED, string);
Edit:
Müsste doch auch eigentlich
WantedLevel[pID]
sein (habe es geändert), wenn ich den Ablauf richtig verstanden habe. Es bezieht sich ja auf das WantedLevel des Spielers, der eingesperrt wird. Also ändere das auch beim Timer
Danke, ja hab ich schon vorher editiert
http://forum.sa-mp.com/showthread.php?t=467261
So ne kleine Anzeige oben Rechts wo Knastzeit: x Sekunden steht und dann immer runterzählt bis 0.
Wie genau kann ich das dann noch machen?
Hast du einen Timer im Script der sekündlich läuft?
Hast du einen Timer im Script der sekündlich läuft?
nein, habe ich nicht
Wie genau kann ich das dann noch machen?
Du erstellst ein PlayerTextDraw für den Spieler bei OnPlayerConnect, und wenn er eingesperrt wird, zeigst du es ihm an.
Mit PlayerTextDrawSetString setzt du dann die verbleibende Zeit in das Textdraw.
Zusätzlich erstellst du einen Timer bei OnGameModeInit, der jede Sekunde läuft (1000ms). Dort machst du eine Schleife durch alle Spieler, und ziehst eine Sekunde von der Jail Zeit des Spielers ab, wenn er eingesperrt ist. Dann zeigst du das Textdraw wieder aktualisiert über PlayerTextDrawSetString an.
Dadurch kannst du dann auch den Timer weg lassen, den du beim Einsperren startest. Das Unjail Event kann exakt dann starten, wenn die Jail Zeit 0 ist. Das *1000 kannst du dann auch wieder weg machen.
ocmd@2:f,funk(playerid,params[])
{
#pragma unused params
if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
if(SpielerDaten[playerid][pTot] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
if(SpielerDaten[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
new text[96], string[128], string2[128], fv = IsAFraktionsVeh(playerid);
if(sscanf(params, "s[96]", text))return SendClientMessage(playerid, GRAU, "Benutze: /funk [Nachricht]");
if(SpielerDaten[playerid][pFunkgeraet] == 0 || fv != -1 && fVehicle[fv][vehFraktion] == SpielerDaten[playerid][pFraktion])return SendClientMessage(playerid, GRAU, "Du hast kein Funkgerät mit oder sitzt in keinem Fraktionsfahrzeug!");
if(!(SpielerDaten[playerid][pFraktion] == 1 || SpielerDaten[playerid][pFraktion] == 2 || SpielerDaten[playerid][pFraktion] == 3))return SendClientMessage(playerid, GRAU, "Diesen Befehl kannst du nicht nutzen!");
//if(!(SpielerDaten[playerid][pFraktion] == 1 || SpielerDaten[playerid][pFraktion] == 2))return SendClientMessage(playerid, GRAU, "Diesen Befehl kannst du nicht nutzen!");
format(string ,sizeof(string), "[Funk] %s [%s]: %s", GetRoleplayName(playerid), GetRankName(SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRank]), text);
format(string2, sizeof(string2), "[Walki Talki] %s [%s]: %s", GetRoleplayName(playerid), GetRankName(SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRank]), text);
for(new i=0;i<GetMaxPlayers();i++)
{
if(Eingeloggt[i] == 1)
{
if(SpielerDaten[i][pFraktion] == 1 || SpielerDaten[i][pFraktion] == 2)
{
SendClientMessage(i, HELLBLAU, string);
}
else if(SpielerDaten[i][pFraktion] == 3)
{
SendClientMessage(i, HELLBLAU, string2);
}
}
}
return 1;
}
Hab es jetzt so geschrieben.
Wenn man aber in der jeweiligen Fraktion ist, kann nur die ID: 0 schreiben. Wenn man bspw. ID 1 ist, steht dort, dass man ein Funkgerät braucht.
Kannst du bitte mal die Funktion IsAFraktionsVeh posten?
Hi!
Stellvertretend für @_Max
stock IsAFraktionsVeh(vehicleid)
{
for(new fV;fV<MAX_FVEHS;fV++)
{
if(vehicleid == fVehicle[fV][vehID])return fV;
}
return INVALID_VEHICLE_ID;
}
stock IsAPrivateVeh(playerid, vehicleid)
{
for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
{
if(vehicleid == PrivateVehicle[playerid][slot][vehID])
{
return 1;
}
}
return 0;
}
MfG