Ich habe ein Problem undzwar setzt sich das Level in der Datenbank, aber ingame ändert sich nichts?
//OnPlayerDeath
++SpielerInfo[killerid][pLevel];
beim stock loadplayer
SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
Beiträge von Weihnachtsmann
-
-
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Job",GetPVarInt(playerid,"Job"));
dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
dini_IntSet(Spielerdatei,"Rank",GetPVarInt(playerid,"Fraktionsrang"));
dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
dini_IntSet(Spielerdatei,"Paytime",GetPVarInt(playerid,"Paytime"));
}
return 1;
}
Beim Speichern würde es ungefähr so aus sehen!
dini_IntSet(Spielerdatei,"Warn",GetPVarInt(playerid,"Warn"));Nicht vergessen, du musst den Warn auch unter LoadPlayer oder wie es bei dir ist laden!
-
Wenn man mehr als 3 Warn bekommt ist man Gebannt..
Mit welcher Speicherart arbeitest du? -
Im chat kommt wird gebannt, aber werde nicht gekickt, die Banndatei wird erstellt.
Wenn ich mich auslogge und dann einlogge bin ich gebant -
Guten zusammen
Hiermit veröffentliche ich mein Altes Anticheat system.
Da ich mir ein neues und besseres erstellt habe, brauch ich dieses nicht mehr und gebe es weiter.Man kann es Ingame komplett verwalten indem man einfach /anticheat eingibt.
Dann könnt ihr per Dialogauswahl die vorgehensweise auswählen bzw änden (Kick/Ban/Safe Ban/Nichts)
Das Safe Ban ist nicht mit dabei daher braucht ich das eigendlich nicht auswählen.Es erkennt:
- Geld
- Heal
- Waffen
- Tuning
- Paintshop
- C-Bug
- Spam
- Jetpack
- Teleport
- AFK System mit eingebaut (Sekundenanzeige bei AFK über den Spieler)Es hat bei mir zuverlässige arbeit geleistet aber es hat ausgedient.
Ihr müsst nur in den Scriptfiles Ordner einen Ordner namens " B_AC " erstellen.
Dann die Include unter pawno/includes einfügen und das Filterscript in den Filterscripts ordner rein.
zum schluss nurnoch die include includieren und das Filterscript in die serverconfig eintragen.Dann ist die installation auch schon abgeschlossen
Den Download findet ihr im Anhang
Pastebin ist hier zu finden: http://pastebin.com/raw.php?i=wa83qCebfalls ihr den Namen des Anticheats ändern wollt, dazu einfach im Filterscript das abändern
#define AC_BOT_NAME "Relaxo"
Ich hab den erstmal Relaxo genanntViel spaß damit
Richtig nice
Ich habe nur ein Problem, er wird nicht gebannt aber die Narricht das er cheatet etc komm im Chat.Edit: Mir fehlt das Banfix include
-
COMMAND:Checkpointlaufen(playerid,params[])
{
if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
new pID,cps,string[356],reason[31];
if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
if(sscanf(params,"uis[31]",pID,cps,reason))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /prison [playerid/Name][Checkpoints][Grund]");
if(strlen(reason) > 30)return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /prison [playerid/Name][Checkpoints][Grund darf maximal 30 Zeichen beinhalten]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
if(GetPVarInt(pID,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
if(playerid != pID)
{
if(Spieler[pID][pAdmin] > Spieler[playerid][pAdmin])return SendClientMessage(playerid,GRAU,"Du kannst keine Ranghöherern Admins in Prison stecken!");
}
if(cps<1||cps>3000)return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /prison [playerid/Name][Checkpoints 1-3000][Grund]");
if(Spieler[pID][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Spieler ist bereits im Prison.");
format(string,sizeof(string),"AdminBefehl: Der Admin %s (ID:%i) hat den Spieler %s (ID:%i) für %i CP´s ins Prison geschickt. Grund: %s",Spieler[playerid][pName],playerid,Spieler[pID][pName],pID,cps,reason);
SendClientMessageToAll(LEUCHTENDESROT,string);
format(string,sizeof(string),"%s du wurdest für %i CP´s ins Prison gesteckt.\nDer Grund für das Prison von dem Admin %s war: %s.\nFalls du zu unrecht ins Prison gesteckt wurdest,\nmelde dich im Teamspeak³ oder schreibe uns im Forum.\n\n"#SERVERFARBE""#SERVERNAME"{FFFFFF} Adminteam",Spieler[pID][pName],cps,Spieler[playerid][pName],reason);
ShowPlayerDialog(pID,DIALOG_4ALL_SONSTIGES,DIALOG_STYLE_MSGBOX,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Prison",string,"Verlassen","");
Spieler[pID][pPrisonCPsgegeben] = cps;
Spieler[pID][pPrisonCPsgelaufen] = cps;
Spieler[pID][pInPrison] = 1;
Spieler[pID][pHandystate] = 0;
PlayerTextDrawHide(pID,HandyInfodraw[pID]);
KillTimer(AkkuTimer[pID]);
if(Spieler[pID][pCallHim] == 1)
{
new pID2 = Spieler[pID][pCall];
Spieler[pID][pCallHim] = 0;
Spieler[pID2][pCallHim] = 0;
Spieler[pID2][pCall] = -1;
Spieler[pID][pCall] = -1;
SetPlayerSpecialAction(pID,SPECIAL_ACTION_STOPUSECELLPHONE);
SetPlayerSpecialAction(pID2,SPECIAL_ACTION_STOPUSECELLPHONE);
SendClientMessage(pID2,GELB,"Der Gesprächspartner hat aufgelegt.");
PlayerTextDrawHide(pID,HandyCalldraw[pID]);
PlayerTextDrawHide(pID2,HandyCalldraw[pID2]);
PlayerPlaySound(pID,1077,0.0,0.0,0.0);
PlayerPlaySound(pID2,1077,0.0,0.0,0.0);
RemovePlayerAttachedObject(pID,8);
RemovePlayerAttachedObject(pID2,8);
}
SpawnPlayerEx(pID);
GameTextForPlayer(pID,"~w~Im ~r~Prison",1500,3);
format(string,sizeof(string),"Admin %s * Zielperson: %s * Checkpoints: %i * Grund: %s",Spieler[playerid][pName],Spieler[pID][pName],cps,reason);
Log("Prisonsqllog",string);
return 1;
}
Das ist das vom pRP Script, was bist du denn für einer? -.-" kind -
Wenn du zum Beispiel einen Befehl machst... /spawnchange.
Und der Spieler mit der ID 0 macht /spawnchange, spawnt nun statt in SF in LV. (SF = 0; LV = 1)
Loggt sich nun der User mit der ID 0 aus, spawnt der nächste User, der mit der ID 0
den Server betritt, automatisch in LV, solange die Variable nicht auf 0 gesetzt wird.Jetzt ist die Frage ob dir das egal ist
Dafür habe ich dies
stock Resetcount(playerid)
{
if(dm[0][playerid] ==1)
{
if(dmcount[0] >0)
{
dmcount[0] --;
}
}
if(dm[1][playerid] ==1)
{
if(dmcount[1] >0)
{
dmcount[1] --;
}
}
if(dm[2][playerid] ==1)
{
if(dmcount[2] >0)
{
dmcount[2] --;
}
}
dm[0][playerid] = 0;
dm[1][playerid] = 0;
dm[2][playerid] = 0;
Killstreak[playerid] = 0;
Map[playerid] = 0;
return 1;
} Sollte gehen oder? -
Wie lautet die Money Variable in der Enum Struktur ?
DIese beim DIsconnect halt auch auf 0 setzen aber ich würde es beim jeden Connecten machen damit es nicht zu fehlern kommt.LG RFT
Würde das so gehen? ohne Buggs etc.
stock ResetPlayer(playerid)
{
SpielerInfo[playerid][pGeld] = 0;
SpielerInfo[playerid][pLevel] = 0;
SpielerInfo[playerid][pKills] = 0;
SpielerInfo[playerid][pTode] = 0;
return 1;
}//COnnect
public OnPlayerConnect(playerid)
{
new text[264];
ResetPlayer(playerid);
if(GetPVarInt(playerid,"Eingeloggt") == 0)
{
if(mysql_CheckAccount(playerid) == 0)
{
format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen auf Pure Deathmatch, {00B700}%s {FFFFFF}!\nEs wurde kein Account in der Datenbank mit deinem Namen gefunden.\nAccount legst du an, indem du ein Accountpasswort eingibst und auf Registrieren drückst.",PlayerName(playerid));
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Pure Deathmatch || Erstanmeldung",text,"Registrieren","Schließen");
ClearChat(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"[SERVER] Erstanmeldung: Bitte gib ein Accountpasswort ein.");
}
else if(mysql_CheckAccount(playerid) == 1)
{
format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen zurück auf Pure Gaming, {00B700}%s {FFFFFF}!\nBitte gib unten in das Eingabefeld dein Accountpasswort ein,\num dich einzuloggen. Anschließend werden deine Accountdaten geladen.",PlayerName(playerid));
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Pure Gaming || Authenfifizierung",text,"Login","Schließen");
ClearChat(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"[SERVER] Authentifizierung: Bitte gib dein Passwort ein!");
}
}
return 1;
} -
Ja, solange du sie bei OnPlayerConnect richtig lädst..
So?public OnPlayerConnect(playerid)
{
new text[264];
ResetPlayer(playerid);
if(GetPVarInt(playerid,"Eingeloggt") == 0)
{
if(mysql_CheckAccount(playerid) == 0)
{
format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen auf Pure Deathmatch, {00B700}%s {FFFFFF}!\nEs wurde kein Account in der Datenbank mit deinem Namen gefunden.\nAccount legst du an, indem du ein Accountpasswort eingibst und auf Registrieren drückst.",PlayerName(playerid));
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Pure Deathmatch || Erstanmeldung",text,"Registrieren","Schließen");
ClearChat(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"[SERVER] Erstanmeldung: Bitte gib ein Accountpasswort ein.");
}
else if(mysql_CheckAccount(playerid) == 1)
{
format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen zurück auf Pure Gaming, {00B700}%s {FFFFFF}!\nBitte gib unten in das Eingabefeld dein Accountpasswort ein,\num dich einzuloggen. Anschließend werden deine Accountdaten geladen.",PlayerName(playerid));
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Pure Gaming || Authenfifizierung",text,"Login","Schließen");
ClearChat(playerid);
SendClientMessage(playerid,COLOR_YELLOW,"[SERVER] Authentifizierung: Bitte gib dein Passwort ein!");
}
}
return 1;
}Stock ResetPlayer sind halt SpielerInfo[playerid][pKills] = 0 etc
-
Soll ich unter dem Callback OnPlayerConnect eine Funktion einbauen das die Werte Geld etc auf 0 gesetzt werden, da ich das Problem habe dass sich Accounts überschneiden
mfg
-
Da Widerspreche ich. Gut zum Pumpen....
Kollegahs Zitat: "Ey yo alter neben mir sieht THE ROCK aus wie ne m...." Da würde ich das Gewicht fallen lassen und beten, dass ich kein Anabolika Opfer werde... Da Hör ich lieber Lieder die traurig sind, denn wenn du traurig bist und dich da hinein versetzt, drückst du das Gewicht viel besser.Oder wenn du dir vorstellst das du die Gewichte drücken musst, es geht um leben oder Tod, glaub mir, dann drückst du ordentlich. Bei JBG musst du wohl eher träumen das du Pumpen tust? ..
Haha gerade so einen Lachflash da gebe ich dir Recht.
-
Was man aber sagen muss, JBG ist gut zum pumpen das motiviert, aber sonst höre ich halt so IloveRadio mucke.
Dubstep kann ich garnicht leiden, da bekomme einfach nur Kopfschmerzen
-
Dein ganzes Leben vor dir? - sei dir da nicht so sicher.
Du kannst jetzt auch einfach umfallen und bist tot oder gehst auf die Straße und einer überfährt dich. -
Das heißt, du würdest deine Mutter / deinen Vater / deine Schwester / dein Bruder / deine Oma / deinen Opa überfahren, damit du weiterleben kannst?
....
Ich könnte dann garnicht mehr weiter leben, da mich das dann mein ganzes Leben verfolgt. -
Ja, tatsächlich auch bei meiner Familie. Im Endeffekt sind wir alle Tiere und wir wollen alle so lang wie möglich überleben.
Wir stellen die Frage etwas um: jemand drückt dir eine Desert Eagle in die Hand und sagt "Du oder deine Mutter". Was tust du? Und ich möchte eine ganz ehrliche Antwort.
Ich, da ich ohne meine Mutter nicht auf der Welt wäre.
Außerdem habe ich einen Glauben, wir sehen uns eh bald im Himmel wieder.
Früher oder später sterben wir alle. -
Gelten hier wieder die alten Faktoren? Also nasse Straße und kaputte Bremsen? Wenn ja, dann würde ich erstmal versuchen auszuweichen, wenn die Straße nicht nur 1 m breit ist.
Aber wenn nur die Optionen "ich weiche aus und sterbe" und "ich halte drauf und überlebe unverletzt" zur Verfügung stehen und man wieder in einem fiktiven Szenario ist, wo man Zeit zum Nachdenken hat, würde ich auch hier wieder draufhalten. Denn wie sagt man immer so schön? "Jeder ist sich selbst der Nächste". Das eigene Überleben ist für jeden Menschen wichtiger als das anderer Personen, auch wenn man es abstreitet.
Bei deiner Familie ? die haben dich auf die Welt gebracht, ich würde alles tun das den nix passiert. -
//forschleife () if(dm[i] > 0)return DM = 0;
So sollte es ungefähr gehen.
Verstehe ich nicht ganz -
Wozu brauchst du da ne schleife?
//l Befehl..
{
//Variablen einzeln zurück setzen..
}
Das habe ich immer gemachtaber will bisschen Zeilen sparren
-
Wie kanne ich das machen, wenn man /l eingibt das ein Schleife für den Spieler alle Arenen durch geht und die Variabel auf 0 setzt?
bis jetzt habe ich es so:
new dm[2][MAX_PLAYERS]Dann halt in der Arena auf =1 stellen und wenn man /l eingibt sollen alle DM Variabeln für den Spieler auf = 0
Mfg
-
forward LOG_banlog(logtext[]);
public LOG_banlog(logtext[])
{
new File:banlog;
new hour, minute, second;
new day, month, year;
banlog = fopen("Logs/Ban-log.txt", io_append);
gettime(hour, minute, second);
getdate(day, month, year);
new string[256];
format(string, sizeof(string), "[%02d/%02d/%02d | %02d:%02d:%02d] %s\n", year, month, day, hour, minute, second, logtext);
fwrite(banlog, string);
fclose(banlog);
return 1;
}Tut mir Leid, aber bei Chrome funktioniert die PWN-Funktion nicht so gut.
Du musst einfach die LOG_banlog benutzen und damit einen string etc. loggen.
Jetzt kannst du jegliche Art von Text loggen...//EDIT: einrücken, Text erweitern
//EDIT2: Dateipfad geändert
Danke erstmal es klappt, aber wenn ich jetzt z.b den Adminchat loggen will, will ich es nicht alles in einer Datei haben.
Z.b Bans in den Banlogs, Adminchat in der Datei Adminchat etc.
Dafür muss ich doch ein neues public machen oder mit dem gleichen Code ausser die Datei zu ändern