Hallo,
ich habe ein simples Jail System für mein TDM/Gangwar/Strategy Gamemode.
Leider kann man jeder Zeit als Cop jemanden einjailen, kann man irgendwie machen, dass man nur jemanden einbuchten kann, wenn man ihn vor mindestens 15 Sekunden getötet hat?
Jail nur nach Kill möglich
- Tillmann-ger
- Geschlossen
- Erledigt
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
-
-
Klar, poste doch mal deinen /jail CMD.
-
if(strcmp(cmd, "/jail", true) == 0) // Jails a player
{
if (gTeam[playerid] == 4 || IsACP(playerid) || AccountInfo[playerid][AdminLevel] >= 2)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, ORANGE, "USAGE: /jail [playerid/PartOfName] [reason]");
return 1;
}
new targetid = ReturnUser(tmp);
if(IsPlayerConnected(targetid))
{
if(targetid != INVALID_PLAYER_ID)
{
if(AccountInfo[giveplayerid][Jail] == 0)
{
GetPlayerName(targetid, giveplayername, sizeof(giveplayername));
GetPlayerName(playerid, sendername, sizeof(sendername));
new reason[128];
reason = bigstrtok(cmdtext, idx);
if(!strlen(reason)) return SendClientMessage(playerid, ORANGE, "USAGE: /jail [playerid/PartOfName] [reason]");
format(string, sizeof(string), "You got jailed by Officer %s. Reason: %s", sendername, reason);
SendClientMessage(targetid, ADMIN_RED, string);
format(string, sizeof(string), "Want to be free? Than ask a Black Hunter or relog!");
SendClientMessage(targetid, ADMIN_RED, string);
format(string, sizeof(string), "-| Officer %s jailed %s. [ Reason: %s ] |-",sendername,giveplayername, reason);
SendClientMessageToAll(ADMIN_RED,string);
AccountInfo[targetid][Jail] = 1;
OnPlayerJailed(targetid);
return 1;
}
else SendClientMessage(playerid, RED, "Player is already jailed!");
}
else
{
format(string, sizeof(string), "%d is not an active player.", targetid);
SendClientMessage(playerid, RED, string);
}
}
else
{
format(string, sizeof(string), "%d is not an active player.", targetid);
SendClientMessage(playerid, RED, string);
}
}
else SendClientMessage(playerid, RED, "You are not an admin with the required level or a cop.");
return 1;
}Bidde
-
Ähm, bitte nächstes mal Frage lesen ... :O
Ich möchte, dass das Einbuchten nur funktioniert, wenn man vor ca. 15 Sekunden die Person umgebracht hat. -
aso sorry
-
Ähm, bitte nächstes mal Frage lesen ... :O
Ich möchte, dass das Einbuchten nur funktioniert, wenn man vor ca. 15 Sekunden die Person umgebracht hat.Bau einen Timer ein!
Ps: Der Jail Command hätte um 30 Zeilen kürzer sein ;P.
Pps: dcmd & Sccanf.. -
Ich würds einfach so machen.
Bei OnPlayerDeath:
If(gTeam[killerid] == 4 || IsACP(killerid) || AccountInfo[killerid][AdminLevel] >= 2)
{
iJailID[killerid] = playerid;
}Und dann einfach in deinem Befehl eine Abfrage einbauen:
if(iJailID[playerid] == targetid)
Dann fehlt nurnoch ein Timer der nach den 15 Sek. iJailID[killerid] auf -1 oder ähnliches setzt. (Dieser muss auch unter OnPlayerDeath)
//Edit: [ pwn ] eingefügt
//Edit2: Fehler behoben.
//Edit3: nochn fehler.. sollte mal durchlesen bevor ichs abschicke^^ -
Also ich würde einen Timer von 15 Sekunden unter OnPlayerDeath schmeißen, der Timer aktiviert eine Variable... dan fragst du in deinem CMD ab ob die Variable auf 1 ist.
Ganz Easy -
in solchen fällen würde ich von timern abraten, geht ressourcenschonender
//oben
#define KILL_JAIL_SECONDS (15)
new KillTime[MAX_PLAYERS];
//OnPlayerDeath
KillTime[killerid]=GetTickCount();
//bei deinem "jail" command
if(GetTickCount() - KillTime[targetid] < (KILL_JAIL_SECONDS*1000))
return SendClientMessage(playerid, COLOR, "Kein Mord in den letzten 15 Sekunden!"); -
Danke DarkFire, sowas hab ich gesucht!
Leider kommt immer 1 Error.
C:\Documents and Settings\...\Desktop\gmlevel.pwn(2883) : error 029: invalid expression, assumed zero
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
-
bitte zeile posten...
-
breadfish.de
Hat das Thema geschlossen.