Was kommt jetzt hiernach?
GetPlayerName(playerid, plname, sizeof(plname));
format(string, sizeof(string), "%s.ini", plname);
Beiträge von KeksOfDeath
-
-
Nur so, wies Blackfox gesagt hat, dies wäre aber sehr ruckelig und man würde die 70 nicht halten
Die konstanten 70 km/h zu halten geht nicht -
Das Forum hat oben rechts eine Forensuche, damit kann man Sachen suchen ( wer hätte das gedacht )
http://forum.sa-mp.de/wbb/inde…848&highlight=anti++cheat
Sollte der Link nicht funktionieren ,dann tippe mal "anticheat" in die SuFu (Suchfunktion) ein -
Bekommst du immernoch die Nachricht "Server: Unkown command" oder löscht der dei Datei einfach nicht?
Wenn er sie einfach nicht löscht, dann achte auf die Dateiendugnen, manche heißen z.b. Kicklog.txt -
Wenn du Google verwendet hättest, wärst damit in 10 sekunden durch gewesen
Klick mich -
Um nochmal auf das /hi zurückzukommen:
if(strcmp(cmdtext,"/hi",true)==0) {
new name[MAX_PLAYER_NAME], s[100];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s sagt hi zu allen",name);
SendClientMessageToAll(FARBE,s);
return 1;
}
Zum Autospawn ohne andere Funktionen:
Du darfst den cmdnamen hier nicht ändern, sofern du die übrigen Komponenten nicht mitänderst, weil er sonst nicht mehr funktioniert
if(strcmp(cmdtext,"/auto",true,5)==0) {
if(!strlen(cmdtext[6])) return SendClientMessage(playerid,FARBE,"/auto ID");
new mid=strval(cmdtext[6]);
if(mid>=400 && mid<=611) {
new Float:x, Float:y, Float:z, Float:za, gla;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,za);
gla=CreateVehicle(mid,x+2,y,z,za,-1,-1,-1);
LinkVehicleToInterior(gla,GetPlayerInterior(playerid)); }
else { SendClientMessage(playerid,FARBE,"ID muss zwischen 400 und 611 liegen"); }
return 1;
}
Es ist zwar auch ohne Funktionen wie strtok, strget, dcmd, sscanf möglich, dennoch empfehle ich dir solche Funktionen zu verwenden, da es viel einfacher ist -
if (strcmp("/joindm", cmdtext, true, 10*) == 0)
* Mit der 10 gibst du an, dass der cmdtexct 10 Zeichen lang ist, "/joindm" ist aber nur 7 Zeichen lang, mein Tipp: Wenn du nicht mit Parametern arbeitest, dann lass die Zahl einfach weg --->
if (strcmp("/joindm", cmdtext, true) == 0) -
Du meinst so, dass auf dem Server Autos rumstehen? Dann AddStaticVehicle
-
Dann grenz ma den Fehler ein, kommentier mal zum Anfang alle deine Autos und probs nochmal, danach alle Pickups und wieder probieren, wenn dann immernoch exe Crash kommt, dann nehm mal alle Objekte raus und probiers nochmal, wenn keins davon hilft, dann guck mal, was bei OnPlayerConnect steht
-
Was hast bei OnPlayerConnect stehen?
//EDIT: Crasht der Player oder der Server? -
new Float:x=5.0564;
printf("%d",floatround(x)); -
Wär nett, wenn du den trotzdem mal postest... weil der public nicht falsch ist
-
Zum Carrespawn: Du musst den ja i-wie auslösen, hast dazu auch nen cmd? Denn an em public ist nix falsch
-
Oder man machts anders:
//ganz nach unten:
stock PolizeiAuto(aid) {
new mids[]= { hier trägst du die modelids von den copautos sein, beispiel: "296,297,298,300" };//die " " natürlich weglassen
for(new i=0; j=sizeof(mids); i<j; i++) {
if(GetVehicleModel(aid)==mids[i]) { return 1; }}
return 0;
}
//onplayerstatechange:
new aid=GetPlayerVehicleID(playerid);
if(PolizeiAuto(aid)) {
if(wenn erk ein cop ist) {
RemovePlayerFromVehicle...
//ja, er darf halt nicht rein -
-
Wie a muss s sein?
Und printf wird bei dem samp-server.exe reingeschrieben und auch in der server.log gespiechert -
Du meinst das in etwa so?
new a=5, s[20];
format(s,sizeof(s),"a ist zurzeit %d",a);
SendClientMessage(playerid,FARBE,s);
//EDIT: Bright war schneller
PS: @ Bright:
str hätt nicht not getan:
printf("%d",somevar); -
Ja, ist es, hast du strtok oder strget oder sscanf?
Falls ja, dann schreib bitte, welches du davon hast -
dcmd_register(playerid,params[]) {
if(!strlen(params)) return SendClientMessage(playerid,FARBE,"/register Passwort");
new name[MAX_PLAYER_NAME], s[20];//sollte die variable "s" zu klein sein, dann mach aus der 20 ne 256
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s.ini",name);
if(!dini_Exists(s)) {
dini_Create(s);
new ip[15];
GetPlayerIp(playerid,ip,sizeof(ip));
dini_Set(s,"ip",ip);
dini_IntSet(s,"passwort",udb_hash(params));
dini_IntSet(s,"kills",0);
//...
dcmd_login(playerid,params[]) {
if(!strlen(params)) return SendClientMessage(playerid,FARBE,"/login Passwort");
new name[MAX_PLAYER_NAME], s[20], s2[256];//hier ei "s[20]" gilt das gleiche, wie oben
GetPlayerNmae(playerid,name,sizeof(name));
format(s,sizeof(s),"%s.ini",name);
if(dini_Exists(s)) {
s2=dini_Get(s,"passwort");
if(strval(s2)==udb_hash(params)) {
//als beispiel
kills[playerid]=dini_Int(s,"kills");
//...
Du braucsht dafür die Includes "dini" und "dudb"
Bei diesem System könnt man sich auch des öfteren einloggen, müsstest du dann noch selbst ausbauen -
Beim register:
new s[15];
GetPlayerIp(playerid,s,sizeof(s));
dini_Set(filename"ip",s);
beim login:
new s[15];
GetPlayerIp(playerid,s,sizeof(s));
dini_Set(filename"ip",s);
bei onplayerconnect:
new name[MAX_PLAYER_NAME], s[20], s2[15];
GetPlayerName(playerid,name,sizeof(name));
format(s,sizeof(s),"%s.ini",name);//falls du die dateiendung ini verwendest
if(dini_Exists(s)) {
GetPlayerIp(playerid,s2,sizeof(s2));
if(strcmp(dini_Get(s,"ip"),s2,true)==0) {
eingeloggt[playerid]=1;//hab ich ma so genannt
SendClientMessage(playerid,FARBE,"Du wurdest automatisch eingloggt");
//....