also, hab in der SuFu nix passendes gefunden,
und zwar, ich hab ein meinem script ein login/registersystem. pWarns hab ich auch schon drinne, jedoch möchte ich das mann wenn man 3 warns hat gekickt wird, und ab 5 warns dann gebannt. jedesmal soll man wenn man gewarnt wird, da stehen, also bei warning 1 : "Du wurdest von admin so und so gewarnt1 (Warn 1)" und bei 2 dann "(warn 2) und so weiter, ihr wisst schon.
hab das warn script aus dem GF, ist eig. normal.
danke im vorraus!
mfg multivan
brauche Warn system --->
- Noneatme
- 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
-
-
Commands mit Parametern.
Mach doch einfach so
PlayerInfo[playerid][pWarns] += 1;ist doch ned schwer...
-
stimmt, versuch mal was ich bekomme.
-
if(strcmp(cmd, "/warn", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /warn [playerid/PartOfName] [reason]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /warn [playerid/PartOfName] [reason]");
return 1;
}
PlayerInfo[giveplayerid][pWarns] += 1;
if(PlayerInfo[giveplayerid][pWarns] >= 3)
{
new year, month,day;
getdate(year, month, day);
format(string, sizeof(string), "AdmCmd: %s was banned by %s, reason: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
BanLog(string);
format(string, sizeof(string), "AdmCmd: %s was banned by %s (had 3 Warnings), reason: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
PlayerInfo[giveplayerid][pAdmin] = PlayerInfo[giveplayerid][pLevel];
PlayerInfo[giveplayerid][pLevel] = -999;
Ban(giveplayerid);
return 1;
}
format(string, sizeof(string), "You warned %s, reason: %s", giveplayer, (result));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "You were warned by %s, reason: %s", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
}//not connected
}
else
{
format(string, sizeof(string), " %d is not an active player.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}Bitte sagen falls das ausm GFF ist habe nur irgendein GM von meinem Desktop genommen KEIN Direkt GFF sondern ieinen vllt ein Edit sieht ähnlich aus..
-
habs ejtztr so:
if(strcmp(cmd, "/warn", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /warn [spielerid/teildesnamens] [grund]");
return 1;
}
giveplayerid = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /warn [spielerid/teildesnamens] [grund]");
return 1;
}
PlayerInfo[giveplayerid][pWarns] += 1;
if(PlayerInfo[giveplayerid][pWarns] >= 5)
{
format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt (hatte 5 Warnungen), Grund: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Kick(giveplayerid);
return 1;
}
format(string, sizeof(string), "Du hast %s eine Warnung gegeben, Grund: %s", giveplayer, (result));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
if(PlayerInfo[giveplayerid][pWarns] >= 1)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt, Grund: %s (Verwarnung 1)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
if(PlayerInfo[giveplayerid][pWarns] >= 2)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt, Grund: %s (Verwarnung 2)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
if(PlayerInfo[giveplayerid][pWarns] >= 3)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt + Gekickt, Grund: %s (Verwarnung 3)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "AdmCmd: %s wurde von %s Gekickt, wegen 3 Verwarnungen, Grund: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Kick(giveplayerid);
return 1;
}
if(PlayerInfo[giveplayerid][pWarns] >= 4)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt, Grund: %s (Verwarnung 4 - Achtung, Noch 1 mal und du wurst Gebannt!)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
return 1;
}
}//not connected
}
}
}nur ledier gehts net, kommt immer nur (verwarnung 1) und das kick bei verwarnung 3 funtzt auf net
edit#: ich weiß iwas mit else und/oder case, aber so genau hab ich mich damit nicht beschäftigt -
Anstatt "Kick" einfach "Ban" denke ich...^^
So:
Ban(giveplayerid);Anstatt:
Kick(giveplayerid);
-
nein das ist nicht das problem, soll ja so sein! mann kann automatisch nicht vonnecten wenn man 5 warns hat, hab ich eingefügt.
-
mal mit Kick(playerid); anstadt mit
Kick(giveplayerid);
versucht ? -
nein nein nein, der kcikt ja auch, das ist nicht das problem! das problem ist, wenn ich 2 mal warn mache steht beim ersten mal "Du hast von ... eine verwarnung enthalten (verwarnung1)" und dann wenn ich nochmal mache steht dann da "Du hast von ... eine verwarnung enthalten (verwarnung1)" auch! aber da soll hin:
"Du hast von ... eine verwarnung enthalten (verwarnung2)" und das denke ich geht iwie mit else oder case. -
ne, das geht ja alles^^ - siehe den post zuvor.
-
Doch es heißt Giveplayerid! Ist Richtig so hier schon...
//Edit Gurke aka Josh hat seinene Post gelöscht (erledigt)Denke da musst du mit "else if" arbeiten oder mit "else" hätte ich blos ahnung wie genau
-
genau die ahnung brauch ich auch^^
edit: ich wette das leigt an pWarns, das das nicht iwie erkannt wird -
Aber gebannt wirst du trotzdem beim 5ten Warn oder? Wenn ja liegt es nicht mehr am Lesen von pWarn (s)
-
if(strcmp(cmd, "/warn", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /warn [spielerid/teildesnamens] [grund]");
return 1;
}
giveplayerid = strval(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Verwendung: /warn [spielerid/teildesnamens] [grund]");
return 1;
}
PlayerInfo[giveplayerid][pWarns] += 1;
if(PlayerInfo[giveplayerid][pWarns] >= 1)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt, Grund: %s (Verwarnung 1)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
format(string, sizeof(string), "Du hast %s eine Warnung gegeben, Grund: %s", giveplayer, (result));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
else if(PlayerInfo[giveplayerid][pWarns] >= 2)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt, Grund: %s (Verwarnung 2)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
else if(PlayerInfo[giveplayerid][pWarns] >= 3)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt + Gekickt, Grund: %s (Verwarnung 3)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
format(string, sizeof(string), "AdmCmd: %s wurde von %s Gekickt, wegen 3 Verwarnungen, Grund: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Kick(giveplayerid);
else if(PlayerInfo[giveplayerid][pWarns] >= 4)
{
format(string, sizeof(string), "Du wurdest von %s verwarnt, Grund: %s (Verwarnung 4)", sendername, (result));
SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
return 1;
}
format(string, sizeof(string), "Du hast %s eine Warnung gegeben, Grund: %s", giveplayer, (result));
SendClientMessage(playerid, COLOR_LIGHTRED, string);
else if(PlayerInfo[giveplayerid][pWarns] >= 5)
{
format(string, sizeof(string), "AdmCmd: %s wurde von %s gebannt (hatte 5 Warnungen), Grund: %s", giveplayer, sendername, (result));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Ban(giveplayerid);
return 1;
}
return 1;
}
}//not connected
}
}
}
sollte gehen -
ja also er schreibt die warns. also ist dann in der datei zu lesen also "Warns=5" steht dan in der datei. und wenn man conenctet sagt er ":Du wurdest gekickt weil dudie maximale anzahl an warns hast".
if(PlayerInfo[playerid][pWarns] >= 5)
{
SendClientMessage(playerid, COLOR_RED, "Du kannst derzeit nicht spielen da du soviele Warns hast!");
Kick(playerid);
}
edit: danke ich gug ma
edito2:
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6503) : error 029: invalid expression, assumed zero
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6503) : warning 215: expression has no effect
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6503) : error 001: expected token: ";", but found "if"
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6516) : error 029: invalid expression, assumed zero
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6516) : warning 215: expression has no effect
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6516) : error 001: expected token: ";", but found "if"
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6524) : error 029: invalid expression, assumed zero
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6524) : warning 215: expression has no effect
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6524) : error 001: expected token: ";", but found "if"
als ich eingefügt habe, kam klammerfehler, hab ich eine dazugemacht kam das -
poste die zeilen
-
6503:
else if(PlayerInfo[giveplayerid][pWarns] >= 2)
6516:
else if(PlayerInfo[giveplayerid][pWarns] >= 4)
65 ??
else if(PlayerInfo[giveplayerid][pWarns] >= 5)
(also anderer error) -
mach hinter jedes noch eine ) klammer
also
else if(PlayerInfo[giveplayerid][pWarns] >= 2))
usw -
k ich probiers
eidt:
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6504) : error 029: invalid expression, assumed zero
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6504) : warning 215: expression has no effect
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6504) : error 001: expected token: ";", but found "if"
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6504) : error 029: invalid expression, assumed zero
G:\Server\MULTISTUNT by Multivan\gamemodes\MULTISTUNT.pwn(6504) : fatal error 107: too many error messages on one line
ejtzt sinds 2 weniger auf der zeile:
else if(PlayerInfo[giveplayerid][pWarns] >= 2)) -
haste es bei jedem else if gemacht?