Ne das ist auch nicht das richtige, irgentwo muss was mit
gLastCar[playerid] =
stehen
Ne das ist auch nicht das richtige, irgentwo muss was mit
gLastCar[playerid] =
stehen
new bool:anticheatan = true;
if(strcmp(cmd, "/toganticheat", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(anticheaton == true);
{
SendClientMessageToAll(COLO_YELLOW, "Das Anticheat System wurde deaktiviert");
anticheaton = false
}
else
{
SendClientMessageToAll(COLO_YELLOW, "Das Anticheat System wurde wieder aktiviert");
anticheaton = true;
}
}
return 1;
}
Also die Aktualisierung deines Textdraw funktioniert, nur bekommt dann jeder Spieler das gleiche zu sehen.
Mach es so:
new Text:statsdraw[MAX_PLAYERS]
Dann bei OnPlayerConnect erstellst du das Textdraw und bei OnPlayerDisconnect zerstörst du es wieder
statsdraw[playerid] = TextDrawCreate(.....
Dann unter der aktualisierung
public StatsUpdate()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
new sk[128];
new morde = pInfo[kills];
format(sk,sizeof(sk),"Kills: %d",morde);
TextDrawSetString(statsdraw,sk);
}
}
Du hast schon im Script OnPlayerUpdate drin, dann kannst du es kein zweites mal haben.
Such mal nach OnPlayerUpdate und du wirst das zweite finden.
Aber dein Textdraw kann nicht die Map unter Esc verdecken.
Daher braucht du umbedingt die riesige Gangzone
Da du per Script die Minimap nicht deaktivieren kannst, wäre das auch noch ein Problem.
Man könnte das mit einer riesigen schwarzen Gangzone ohne Transparenz für den Spieler lösen.
SetTimer("gpns1", 600000,wiederholung [0 nein | 1 ja]);
Anführungszeichen und weiteres Argument
Erstmal On Player update ist schlecht weil das viel zu oft wiederholt wird und dein Server nur unnötig auslastet.
Dann hast du hier eine Abfrage
if(geld + 100000)
Diese sagt aber nicht eindeutig mit was sie verglichen werden muss.
Du kannst z.B. eine Variable mit dem Alten und ein mit dem neuen geld machen
wäre dann die Abfrage so
if(neugeld + 100000 > altgeld)
Hast die Geschwindigkeit vergessen
MoveObject(TaxiTor,-2017.8112792969,47.752044677734,33.187118530273,2.0);
und der sagt er findet ein ; anstatt eines , weil er die geschwindigkeit sucht, aber nur das ; findet.
Also brauchst du, wenn du Geschwindigkeit drin hast am ende ein ;
So ich habe jetzt mal encrpyt ausm gff in mein selfmade dm eingebaut.
Habe nur ein Problem.
Wenn man sich einloggt und das falsche Password eingibt, kann man sich danach mit dem falschen Passwort einloggen, da, so vermute ich, durch das Fehlerhafte login der Password Key, ich benutzt dini, verändert wird.
Und zwar befindet sich auf einmal vor dem ersten Key in der ini das Symbol "ÿ". Allerdings verändere ich weder den Key noch schreibe ich irgentwas an den Anfang der Ini.
Woran könnte das liegen.
loginsystem
new string[128];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"%s.dini",playername);
new pass[128];
new laenge;
format(pass,sizeof(pass),"%s",inputtext);
laenge = strlen(pass);
Encrypt(pass);
printf("%s",pass);
if(strcmp(dini_Get(string,"Password"),pass,false)==0 && laenge != 0)
{
Alles anzeigenWas ist besser ?
In jedem Befehl und in jedem Callback immer neue strings erstellen und die dan auszugeben :
new string1[128];
new string2[128];
format(...
format(...
SendClientMessage(playerid...
SendClientMessage(playerid...
ODER
Einmalig einen string zu erstellen und diesen dann immer in den Commands zu benutzen?
new stringall[128];
Command 1: format(stringall....
Command 2: format(stringall...
Also ich hab jetzt ja schon eine Antwort auf die Frage bekommen. Doch was sagen die Profis dazu ? Weil ich wüsste es doch ganz gerne bevor ich das komplette Script umstelle und es dann, möglicherweise, sogar schlechter ist.
Was ist besser ?
In jedem Befehl und in jedem Callback immer neue strings erstellen und die dan auszugeben :
new string1[128];
new string2[128];
format(...
format(...
SendClientMessage(playerid...
SendClientMessage(playerid...
ODER
Einmalig einen string zu erstellen und diesen dann immer in den Commands zu benutzen?
new stringall[128];
Command 1: format(stringall....
Command 2: format(stringall...
Wenn du die Datei einmal über Pawno geöffnet hast, merkt sich dein Computer die Dateiendung mit dem Program.
D.h. du kannst die nächsten .pwn einfach durch doppelklick öffnen.
den dcmd define machst du am besten unter die anderen includes und define, also ganz oben ins Script
den sscanf stock macht ganz unten ins script
Die Funktion lautet
TextDrawSetString
new vehicleid = GetPlayerVehicleID(playerid);
Alle Pickups sind im Script festgelegt daher muss du dort einfach die entsprechenden zeilen
new pickx
pickx = CreatePickup ....
löschen
Die einfachste Methode wäre die Werte schon beim speichern als Integer zu speichern.
80 Meter ist ein guter Mittelwert für den Chatradius, da die Maße in GTA nicht ganz proportional sind.