OnPlayerRequestClass schätz ich mal.
Beiträge von BloodyEric
-
-
Vanilla Latte bei Starbucks

-
Lesen und verstehen: Klick
-
Ein Punkt könnte das Audio Plugin sein, was gerne mal User Dateien angreift...
-
public OnPlayerCommandText(playerid, cmdtext[])
{if(strcmp(cmdtext, "/openFsGate", true) == 0)
{
MoveObject(Gate, -2043.08911133,-87.85975647,38.26874542, 1);
SendClientMessage(playerid, 0xFFFFFFFF, "Das Fahrschulgate ist offen.");
return 1;
}if(strcmp(cmdtext, "/closeFsGate", true) == 0)
{
MoveObject(Gate, -2046.55981445,-87.80801392,34.87454224, 1);
SendClientMessage(playerid, 0xFFFFFFFF, "Das Fahrschulgate ist geschlossen.");
return 1;
}return 0;
}Müsste das meiste behoben haben.
-
Nein, das bringt keine Vorteile, kannst es soweit kürzen:
dcmd_cc(playerid, params[])
{
new c1, c2;
if(sscanf(params,"ii", c1, c2)) return SendClientMessage(playerid, FARBE, "Richtige Anwendung: /cc [Farbid1] [Farbid2]");
ChangeVehicleColor(GetPlayerVehicleID(playerid), c1, c2);
return 1;
}Hatte es jetzt nur auf die Schnelle kopiert, um den Fokus auf die "wichtige" Änderung zu legen

-
Ist die Tastatur beim Schreiben auch runtergefallen oder soll der letzte Satz so enden?
Garantie wird da jedenfalls nix nützen, ist Eigenverschulden. Versicherung schätz ich mal einfach auch nicht, kann ich mir jedenfalls nicht vorstellen. Du kannst ihn reparieren lassen, kommt evtl billiger als neu kaufen.
-
Nahezu.
dcmd_cc(playerid, params[])
{
new c1, c2;
if(sscanf(params,"ii", c1, c2))
{ return SendClientMessage(playerid, FARBE, "Richtige Anwendung: /cc [Farbid1] [Farbid2]"); }
ChangeVehicleColor(GetPlayerVehicleID(playerid), c1, c2);
return 1;
} -
-
Bei Sofuck hat es nur Tage, wenn nicht Stunden gedauert, bis der 0.3c Schutz mit einer neuen Version umgangen wurde...
Ich möchte nochmal zwei Zitate anbringen:
Zitat von KingJA fundamental concept in computer security is that you cannot trust the client. You have no way of telling if the client is telling the truth or not. Therefore, all validation must be done server-side, anything client side may work for a day or two and then i'll be broken again. An auto-updater would mean that we'd have to come up with a new anti-cheat mechanism every few days.
Summary: Client-side anticheat is useless for SA-MP. We don't do it.
Zitat von JernejLAlles anzeigenThe solution is that you start writing better server-side anticheat, this is the only sure way to get rid of cheaters.
There's a lot of things that a server can now detect with great precision if your script is done properly:
- armor cheats
- money cheats (make server-side money)
- weapons spawning (handle all weapon giving in script, script your own ammunations)
- vehicle healing (some cases)
- cleo mod actor / car healing
- healing of people beyond script limits (above 100 as long as script never does it aswell)
- Yes, it is possible to detect the cleo superman mod.You can also improve anti-evade methods
- Detect same nick, same isp, different ip = likely a evader
- Search for evaders by behavour, identical password hashes in accounts & person uses same isp as banned person+ Various..
-
Das große Problem ist, dass die Record Files nicht in dem Ordner beim recorden gespeichert werden, wo sie zum lesen benötigt werden. CNPC könnte das, wenn es funktionieren würde, tut es aber (noch) nicht. Eventuell gibt es ein Plugin um per Script Dateien zu kopieren/verschieben können, musst du mal schauen.
-
Nein, das geht nicht ohne altes zerstören, neues erstellen und Spieler ins neue zu setzen.
-
Zum ersten:
Bei return 1; wird die vom Spieler eingegebene Nachricht noch verschickt, bei return 0 nicht.
Zum zweiten:
Nen wirklich wichtigen Sinn hats nicht, kannst es auch weglassen.

-
Ich versteh nur Chaos.
Wenn du einen Spieler freezen willst bevor du ihn kickst macht das mMn keinen Sinn, weil er, nachdem er gekickt wurde sowieso wieder frei rumlaufen kann. Deine Anti-Bot-Abfrage kannst du aber auch einfach als if(IsPlayerNPC(i)) umschreiben...
-
-
public SpeedChecker()
{
for(new i=0; i < MAX_PLAYERS ;i++)
{
if(IsPlayerConnected(i))
{
if(!IsPlayerInAnyVehicle(i))
{
TextDrawHideForPlayer(i,Textdraw0);
TextDrawHideForPlayer(i,Textdraw2);
TextDrawHideForPlayer(i,Textdraw4);
TextDrawHideForPlayer(i,Textdraw6);
TextDrawHideForPlayer(i,Textdraw8);
TextDrawHideForPlayer(i,Textdraw7);
TextDrawHideForPlayer(i,Textdraw1[i]);
TextDrawHideForPlayer(i,Textdraw3[i]);
TextDrawHideForPlayer(i,Textdraw5[i]);
TextDrawHideForPlayer(i,Textdraw11[i]);
continue;
}
new str[10];
new Float:Velocity[3];
GetVehicleVelocity(GetPlayerVehicleID(i), Velocity[0], Velocity[1], Velocity[2]);
new Float:geschwindigkeit = floatsqroot(Velocity[0]*Velocity[0] + Velocity[1]*Velocity[1] + Velocity[2]*Velocity[2]) * 140;
format(str,sizeof str,"%d KM/H",floatround(geschwindigkeit));
if(autofs[i] == 1 && floatround(geschwindigkeit) > 80)
{
swarnungen[i] += 1;
if(swarnungen[i] == 20)
{
zuschnell[i] += 1;
swarnungen[i] = 0;
new strx[70];
format(strx,sizeof strx,"Du bist zu schnell gefahren! (Max 70KM/H) | Verwarnung %d/10",zuschnell[i]);
SendClientMessage(i,HELLROT,strx);
if(zuschnell[i] == 10)
{
autofs[i] = 0;
SendClientMessage(i,HELLROT,"Durchgefallen!");
SetVehicleToRespawn(GetPlayerVehicleID(i));
DisablePlayerCheckpoint(i);
zuschnell[i] = 0;
CP[i] = 0;
}
}
}
TextDrawSetString(Textdraw3[i],str);
new Float:Health;
GetVehicleHealth(GetPlayerVehicleID(i),Health);
new str1[20];
format(str1,sizeof str1,"%d/1000",floatround(Health));
TextDrawSetString(Textdraw5[i],str1);
new str2[20];
format(str2,sizeof str2,"%d/100",Tank[GetPlayerVehicleID(i)]);
TextDrawSetString(Textdraw11[i],str2);
}
}
return 1;
}Das Return in der Schleife musst du durch ein Continue ersetzen, da return die ganze Funktion beendet. Continue hingegen überspringt nur diesen Spieler, was ja auch dein Ziel ist.

-
Nimm mal die 0.3c final.
Außerdem mal die server.cfg zeigen.
-
26 Erros bedeuted nicht immer, das es ein Klammerfehler ist, das ist Quatsch. Pawno hört ledigllich nach 26 Fehlern auf zu Compilen.
"is not implemented" und "undefined symbol" von Funktionen deutet aber dennoch auf einen Klammerfehler hin. Überprüf die Stellen, die du zuletzt bearbeitet hast, rück richtig ein und hoffe, dass du den Klammerfehler schnell findest. -
Nein, hast du nicht. Zeig die ShowPlayerDialog Zeile, zeig OnPlayerPickUpPickup und zeig das Define von jobmenu....
-
Von OCMD hab ich keine Ahnung, aber das OnPlayerCommandText Callback muss auf jeden Fall so aussehen:
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}