Kann man irgendwie abfragen wenn bsp Geld 10 Sekunden lang nur steigt oder sinkt das ne Message geschickt wird?
Und kann man ein AntiMoneyCheat als OnPlayerUpdate rein tun? Oder ist das schon zuviel?
Kann man irgendwie abfragen wenn bsp Geld 10 Sekunden lang nur steigt oder sinkt das ne Message geschickt wird?
Und kann man ein AntiMoneyCheat als OnPlayerUpdate rein tun? Oder ist das schon zuviel?
Ich kann dir gerne ein 100% sicheres AntiChat geben / einbauen.
Meld dich dann einfach per PM.
Ich habe ein Anticheatprogramm drin doch ich kann dir gerne bei deinem zeigen wie man es überlisten kann
Es gibt momentan einfach Tricks und genau die will ich umgehen...
Achso, naja, wenn du ein 100% sicheres AntiCheatSystem haben willst, wo auch keine Lücken da sind musst Du Bescheid geben.
Welche Tricks denn?
Das Anticheatprogramm reagiert zieht das Geld ab doch durch Befehle die das transferieren des Geldes auslösen können die es umgehen.
Sprich ich habe ein Programm das dauernd Geld drauf addiert und einer macht per Keybind ein Befehl der dauernd ausgeführt wird und irgendwann im genauen Zeitpunkt landet er genau in der Zeile wo das aktuell Geld gescannt und gesetzt wird.
>>> Er hat das ercheatete Geld...
Kannst mir gerne mal dein ACS vorstellen doch denke geht dort genauso
Dann bau doch einfach ein Anti Command-Spam System rein, wo der Befehl angezeigt wird, und wenn es der Befehl ist entscheidest du weiter?
Ja habe ich mir auch schon überlegt... Aber dann sind Keybinds fürn Arsch... wenn man sie oft betätigt bsp
Die Frage nochmal:
Kann man das auf OnPlayerUpdate drauftun? oder ist das schon zuviel für den Server? Weil ich mein schneller wie das kann ja net mal ein Keybind sein
Oder welche Ideen habt ihr? Hätte auch net gedacht das das klappt doch mit Geduld klappt dieser Cheat...
Dann versuch das Anti Command-Spam System für gezielt diesen Befehl zu verwenden.
Nein das geht bei jedem Befehl wo Gelder transferiert werden...
Also es muss ja eine Lösung dafür geben... Gib mir IP von deinem Server ich teste es gerne mal aus... Es dürfte auf jedem Server funken
Hat jemand sonst noch ne Idee?
forward MoneyDings();
new Mons1[MAX_PLAYERS];
new Mons2[MAX_PLAYERS];
new Mons3[MAX_PLAYERS];
new Mons4[MAX_PLAYERS];
new Mons5[MAX_PLAYERS];
new Mons6[MAX_PLAYERS];
new Mons7[MAX_PLAYERS];
new Mons8[MAX_PLAYERS];
new Mons9[MAX_PLAYERS];
new Mons10[MAX_PLAYERS];
SetTimer("MoneyDings", 1000, 1);
public MoneyDings()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Mons1[i] == 0)
{
Mons1[i] = GetPlayerMoney(i);
}
else if(Mons2[i] == 0)
{
if(GetPlayerMoney(i) != Mons1[i])
{
Mons2[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons3[i] == 0)
{
if(GetPlayerMoney(i) != Mons2[i])
{
Mons3[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons4[i] == 0)
{
if(GetPlayerMoney(i) != Mons3[i])
{
Mons4[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons5[i] == 0)
{
if(GetPlayerMoney(i) != Mons4[i])
{
Mons5[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons6[i] == 0)
{
if(GetPlayerMoney(i) != Mons5[i])
{
Mons6[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons7[playerid] == 0)
{
if(GetPlayerMoney(i) != Mons6[i])
{
Mons7[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons8[i] == 0)
{
if(GetPlayerMoney(i) != Mons7[i])
{
Mons8[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons9[i] == 0)
{
if(GetPlayerMoney(i) != Mons8[i])
{
Mons9[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else if(Mons10[i] == 0)
{
if(GetPlayerMoney(i) != Mons9[i])
{
Mons10[i] = GetPlayerMoney(i);
}
else
{
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
else
{
new string[200];
new sendername[200];
new maxmon = Mons1[i]+Mons2[i]+Mons3[i]+Mons4[i]+Mons5[i]+Mons6[i]+Mons7[i]+Mons8[i]+Mons9[i]+Mons10[i];
GetPlayerName(i, sendername, sizeof(sendername));
format(string, sizeof(string), "Geld von %s (ID %d) ist innerhalb der letzten 10 Sec ständig gesteigen (um insg $%d)", sendername, i, maxnon);
SendClientMessage(i, COLOR_DBLUE, string); // Gegen Admin message austauschen
Mons1[i] = 0;
Mons2[i] = 0;
Mons3[i] = 0;
Mons4[i] = 0;
Mons5[i] = 0;
Mons6[i] = 0;
Mons7[i] = 0;
Mons8[i] = 0;
Mons9[i] = 0;
Mons10[i] = 0;
}
}
}
}
Zu viel Ressourcen, das hättest aber auch anders lösen können
Hier mal meine Version eines Anti Money Hack
Nützliche Codeschnipsel
Habe es anders gelöst aber danke für die Hilfe
Bitte teile uns deine Lösung mit, so können alle daraus profitieren. Danke.
Ein 100% sicheres Anti-Cheat gibt es nie.
Mit CE kann man ziemlich viel anstellen Auch Serverside!
Gehn tut das schon, wenn du einfach alle Ausgaben und Einnahmen zählst die der Spieler hat und dann überprüfst ob er halt trotzdem mehr hat, und wenns so ist dann gibts ja nur eine Möglichkeit wo das "Mehrgeld" herkommt... nämlich von der dunklen Seite der Macht...
Ein 100% sicheres Anti-Cheat gibt es nie.
Mit CE kann man ziemlich viel anstellen Auch Serverside!
Doch das gibt es einfach eine eigene Währung einführen mit eigener Variable
Aber nicht zu 100%
Man kann immer noch den eigentlich Root hacken.
Source Code betrachten / .amx decompilieren.
Dann hat man die Var´s und dann ist mit CE ziemlich einfach.
Solange der Root nicht abgesichert ist
aber das bezweifle ich
Zudem wird das de kompilieren nicht so leicht wie einige sich das vorstellen.
Wobei die Variablen im Normalfall auch durch den Speicher editieren können sollte.
Meine Lösung taugt niemanden was da ich ein ganz anders Antimoneyhackschutz habe...
Musste einfach das Geld transferieren anders gestalten und eine bestimmte Zählvariable für Adminmail einbauen...
Somit geht der Hack nicht mehr und Admins + Logs kriegen ne Meldung.