Nein,
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DRINK_SPRUNK && health>=50)return GetPlayerHealth(playerid,health),SetPlayerHealth(playerid,health+15);
würden dann nicht das heal 100 aufwärts gehen?
Nein,
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DRINK_SPRUNK && health>=50)return GetPlayerHealth(playerid,health),SetPlayerHealth(playerid,health+15);
würden dann nicht das heal 100 aufwärts gehen?
oder würde es so besser sein?
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DRINK_SPRUNK && health>=50)return SetPlayerHealth(playerid,99);
Habe noch ein Problem, habe ja abfrage wenn 100 hp (S0beit) aber wenn man zu Healautomaten läuft gibt es dann halt zb:
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DRINK_SPRUNK && Health<=100)return 1;
wenn ja würde es so gehen?
Funktioniert alles, danke an alle. Wollte noch kurz Fragen wie sollte man am besten gegen Geldcheat vorgehen wollte das
Geld ausgeben und einnehmen mit einer Variable alles speichern oder gibt es eine leichtere Methode?
Aber du bist auch kein admin?
Ich habe mir Adminlevel 0 gegeben meine ich :O ich schaue mal nach.
jup: Adminlevel=0, war kein Admin funkt eben net
Tipp: Arbeite mit SetTimerEx anstatt OnPlayerUpdate, viel besser.
Ich setz mich gleich mal an deinen Code
meinst du zb:
SpielerUpdate(playerid);
würde ich dann später alles dort hinschreiben.
Guten Tag,
ich habe ein Anti-Cheat gescriptet, also jeder User hat 99 HP anstatt 100 und wenn einer 100HP hat wird er automatisch von system gebannt.
Problem ist wenn ich 100 hp habe funktioniert die anfrage nicht und mann wird nicht gebannt sowohl ist es auch beim Armour so. Jet-Pack wird vom Script gebannt.
Code:
public OnPlayerUpdate(playerid)
{
if(GetPVarInt(playerid,"loggedin")==0)return 1;
new string[125],Float:armour,Float:health,IP[25];
GetPlayerIp(playerid,IP,sizeof(IP));
if(GetPVarInt(playerid,"Adminlevel")==0)
{
if(GetPlayerHealth(playerid,health)==100)
{
format(string, sizeof(string), "[IPBAN] %s wurde gebannt. Grund: Health-Cheat", SpielerName(playerid));
SendClientMessageToAll(COLOR_LIGHTRED, string);
ShowTBox(playerid, "BAN" ,"~r~Du wurdest gebannt.",3);
format(string, sizeof(string),"banip %s",IP);
SendRconCommand(string);
SetPVarInt(playerid,"Baned",1);
TogglePlayerControllable(playerid,0);
Kick(playerid);
}
if(GetPlayerArmour(playerid,armour)==100)
{
format(string, sizeof(string), "[IPBAN] %s wurde gebannt. Grund: Armour-Cheat", SpielerName(playerid));
SendClientMessageToAll(COLOR_LIGHTRED, string);
ShowTBox(playerid, "BAN" ,"~r~Du wurdest gebannt.",3);
format(string, sizeof(string),"banip %s",IP);
SendRconCommand(string);
SetPVarInt(playerid,"Baned",1);
TogglePlayerControllable(playerid,0);
Kick(playerid);
}
}
return 1;
}
Danke im Voraus.
Korrekt. Funktioniert es? Speicherst du denn den Timestamp, mit welchem du anschließend vergleichst?
Alles klar, habe schon ausprobiert, funktioniert alles einwandfrei vielen dank.
also so? würdest du mir das bitte etwas deutlicher erklären bzw. zeigen?
ocmd:tban(playerid,params[])
{
new pID,grund[64],str[165],dauer;
new timestamp;
timestamp = gettime();
if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ERROR,""#NOTADMIN"");
if(sscanf(params, "uis", pID, dauer, grund))return SendClientMessage(playerid,ROT,"FEHLER: {FAFAFA}/tban [SpielerName] [Dauer(in Minuten)] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"FEHLER: {FAFAFA}Der Spieler ist nicht online.");
format(str,sizeof(str),"[TIMEBAN] %s (ID:%i) wurde von %s (ID:%i) für %d Minuten gebannt. Grund: %s",SpielerName(pID),pID,SpielerName(playerid),playerid,dauer,grund);
SendClientMessageToAll(COLOR_LIGHTRED,str);
new sekunden = dauer * 60;
timestamp += sekunden;
ShowTBox(playerid, "TIMEBAN" ,"~g~Spieler wurde gebannt.",3);
ShowTBox(pID, "TIMEBAN" ,"~r~Du wurdest gebannt.",3);
SetPVarInt(playerid,"tban",timestamp);
Kick(playerid);
return 1;
}
zuerst der Befehl, dort habe ich mit SetPVarInt gearbeitet da mein Accountsystem damit verknüpft ist:
ocmd:tban(playerid,params[])
{
new pID,grund[64],str[165],dauer;
new timestamp;
timestamp = gettime();
new sekunden = dauer * 60;
timestamp += sekunden;
if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ERROR,""#NOTADMIN"");
if(sscanf(params, "uis", pID, dauer, grund))return SendClientMessage(playerid,ROT,"FEHLER: {FAFAFA}/tban [SpielerName] [Dauer(in Minuten)] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"FEHLER: {FAFAFA}Der Spieler ist nicht online.");
format(str,sizeof(str),"[TIMEBAN] %s (ID:%i) wurde von %s (ID:%i) für %d Minuten gebannt. Grund: %s",SpielerName(pID),pID,SpielerName(playerid),playerid,dauer,grund);
SendClientMessageToAll(COLOR_LIGHTRED,str);
ShowTBox(playerid, "TIMEBAN" ,"~g~Spieler wurde gebannt.",3);
ShowTBox(pID, "TIMEBAN" ,"~r~Du wurdest gebannt.",3);
SetPVarInt(playerid,"tban",timestamp);
Kick(playerid);
return 1;
}
und die Speicherung funktioniert zumindest kommen da viel stellige Zahlen und wenn mann sich connectet wird es so abgefragt:
if(gettime() < GetPVarInt(playerid,"tban"))
{
new differenz = GetPVarInt(playerid,"tban") - gettime();
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Du bist noch %i Minuten gebannt,du wirst nun Automatisch gekickt.",minuten);
SendClientMessage(playerid,COLOR_LIGHTRED,str);
ShowTBox(playerid, "KICK" ,"~r~Du wurdest gekickt.",3);
Kick(playerid);
}
else
{
SetPVarInt(playerid,"tban",0);
}
Problem ist das ich mich normal einloggen kann und ich weiß nicht was ich da falsch gemacht habe, speichern tut es viele Zahlen.
Danke im Voraus für weitere hilfe (ist mein Erstes mal mit Timeban).
MFG
Mappst du mit MTA oder Map Editor?
Guten Tag,
ich wollte mal einen Thread eröffnen, wo Serverip's mit 60+ Spielern gepostet werden.
Hier könnt ihr jeden Reallife/Roleplay Selfmade/Godfather Server posten und dazu schreiben ob es einen Client hat oder nicht.
bsp:
Servername: XXX-Reallife/roleplay
Serverip: XXX.XXX.XXX:XXX
Anticheat-Client/Sonstiges: Ja|Nein
Tägliche Spieleranzahl: 60+
Freundliche Grüße
Guten Tag,
ich habe da von einem kumpel das Timebansystem bekommen und wollte wissen wie ich das abfragen kann (code):
if(PlayerInfo[playerid][pTimeBan] > gettime())
{
SendClientMessage(playerid,0xFF4F6AFF, "-------------------Du wurdest temporär gebannt!---------------------");
format(string2, sizeof(string2), "[BAN]: Du wurdest von %s gebannt, Grund: %s | Zeit: N.A.", PlayerInfo[playerid][pGebanntvon], PlayerInfo[playerid][pBangrund]); // die Zeit soll hier bei Zeit: abgefragt werden!
SendClientMessage(playerid,0xFF4600FF, string2);
SendClientMessage(playerid,0xFF4600FF, "Fühlst du dich ungerecht gebannt? Oder denkst du das war nur ein Fehlban?");
format(string2, sizeof(string2), "Dann schreibe bitte einen Thread ins Forum(%s) unter Entbann Anträge", forumip);
SendClientMessage(playerid,0xFF4600FF, string2);
SendClientMessage(playerid,0xFF4600FF, "Im falle das du eindeutig Cheatest und wenn es auch nur ausversehen ist, hast du keine");
SendClientMessage(playerid,0xFF4600FF, "Chance auf einen Entbann!");
Kick(playerid);
return 1;
}
vielen dank im Voraus!
1
format(string,sizeof(string),"Name: %s\nLevel: %d\nGeld: %d\nAdminlevel: %d\nKills: %d\nDeaths: %d\nKD-Rate: %.2f\n\nSollten Fehler vorliegen, melde dich bei einem Admin.",pname,Spieler[playerid][Level],GetPlayerMoney(playerid),Spieler[playerid][Admin],Spieler[playerid][Kills],Spieler[playerid][Deaths],kdrate);
Jz wird es die schon vorgekaut.
einfach oben
#define DIALOG_STATS 1
und bei dem Befehl:
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Stats",string,"OK","");
würde dir empfehlen
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
und abfrage SpielerName(playerid) bei Name %s
warum params[], wenn hierbei keine Parameter benutzt werden?
wenn dann so:
ocmd:stats(playerid,params[])
{
#pragma unused params
new pname[MAX_PLAYER_NAME], string1[50], string[250];
GetPlayerName(playerid, pname, sizeof(pname));
new Float:kdrate = Spieler[playerid][Kills]/Spieler[playerid][Deaths];
format(string1,sizeof(string1),"Stats von %s",pname);
format(string,sizeof(string),"Name: %s\nLevel: %d\nGeld: %d\nAdminlevel: %d\nKills: %d\nDeaths: %d\nKD-Rate: %.2f\n\nSollten Fehler vorliegen, melde dich bei einem Admin.","Okay","Abbrechen",pname,Spieler[playerid][Level],GetPlayerMoney(playerid),Spieler[playerid][Admin],Spieler[playerid][Kills],Spieler[playerid][Deaths],kdrate);
ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,string1,string,"Okay","Abbrechen");
return 1;
}
Du musst hier mit strcmp arbeiten..
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
if(strcmp(inputtext,name,false))return SendClientMessage(playerid,Rot,"Name ist falsch");
Greetz
danke habe es jetzt kappiert und funktioniert,ich hab's gespeichert.
Bitte closen ist erledigt.
Guten Tag,
wie die Überschrift schon sagt weiß ich leider nicht wie ich Abfragen soll ob er genau seinen Namen in das DIALOG_STYLE_INPUT schreibt.
Es soll dazu dienen das er einen Arbeitslosengeldantrag mit seinem Spielernamen unterschreiben soll.
if(dialogid==DIALOG_UNTERSCHREIBEN)
{
new string[250];
if(response==0)
{
SendClientMessage(playerid,KICKFARBE,"Du hast den Arbeitslosengeldantrag abgebrochen.");
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
format(string,sizeof(string),"- Das ist nicht deine Unterschrift.\n\nBitte Unterschreibe mit deinem Spielernamen.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Stadthalle / Arbeitslosengeld",string,"unterschreiben","Abbruch");
return 1;
}
else
if(inputtext==SpielerName(playerid)) // hier weiß ich nicht wie ich Abfragen soll ob er seinen Spielernamen 1zu1 in das Feld geschrieben hat
{
return 1;
}
}
}
ich habe so angefangen.
Vielen Dank im Voraus für schnelle und hilfreiche Antworten.,
Pr0x
if(sscanf(params,"ui",pID,rank))return InfoText(playerid,FARBE,"Verwende: /setadmin [playerid] [Adminlevel].");
oder so:
if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,FARBE,"Verwende: /setadmin [playerid] [Adminlevel].");
da schließe ich mich an , was mir auch auffiel ist (servername)RP xDDDD die klassische Bildung eines 08/15 servers wir es uns bei gebracht wurde xD
Ehm ja nur da ich gerade kein Projekt habe mache ich nur SERVERNAME da ich keinen Server monentan habe das heißt es könnte zb XXX Roleplay heißen.
Update v2.0: