Setzte die Virtuelle Welt gleich der SpielerID oder hausID dann bist es los...
Beiträge von Opa_Schlumpf
-
-
Jetzt mal der ganze Code:
stock CheckPlayerBan(playerid)
{
SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
new serial[50],string[125];
printf("allg %i 01",playerid);
gpci(playerid,serial,sizeof(serial));
printf("allg %i 02",playerid);
printf("Serial: %s",serial);
new rightstate=MySQLCheckField("banlist","BanSerial",serial);
printf("State: %i",rightstate);
new time=strval(MySQLGetData("banlist","BanTime","BanSerial",serial));
printf("Time: %i",time);
new isip=strcmp(MySQLGetData("banlist","BanIP","BanSerial",serial),GetIPasRangeIP(playerid),true);
printf("IsIP: %i",isip);
if(rightstate==1 && time==0 && isip==0)
{
printf("perma");
SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
printf("perma 01");
SendClientMessage(playerid,COLOR_ROT,"Art: Permanenter Spielausschluss");
printf("perma 02");
format(string,sizeof(string),"Admin: %s",MySQLGetData("banlist","Banner","BanSerial",serial));
printf("perma 03");
SendClientMessage(playerid,COLOR_ROT,string);
printf("perma 04");
format(string,sizeof(string),"Grund: %s",MySQLGetData("banlist","BanReason","BanSerial",serial));
printf("perma 05");
SendClientMessage(playerid,COLOR_ROT,string);
printf("perma 06");
Kick(playerid);
return 1;
}
if(rightstate==1 && time!=0 && isip==0)
{
printf("time 01");
if(gettime()<time)
{
printf("time 02");
new year,month,day,hour,minute,second;
TimestampToDate(time, year, month, day, hour, minute, second, 0, 0);
SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
format(string,sizeof(string),"Art: Zeitlich begrenzter Ban (bis %02i.%02i.%04i %02i:%02i)",day,month,year,hour,minute);
SendClientMessage(playerid,COLOR_ROT,string);
format(string,sizeof(string),"Admin: %s",MySQLGetData("banlist","Banner","BanSerial",serial));
SendClientMessage(playerid,COLOR_ROT,string);
format(string,sizeof(string),"Grund: %s",MySQLGetData("banlist","BanReason","BanSerial",serial));
SendClientMessage(playerid,COLOR_ROT,string);
printf("time 03");
Kick(playerid);
printf("time 04");
return 1;
}
else MySQLDestroyDataField("banlist","BanSerial",serial);
}
return 1;
}Was habe ich probiert?
Wenn es mit den Texten mache braucht er ~6 Anläufe danach kommen alle Texte und man wird gekickt.
Ohne Texte braucht er ~3 Anläufe und wird gekickt..
Wenn ich dieses stock bei OnPlayerConnect ausklammere funktioniert das Script wie immer...
Daher kann es nur daran liegen..
Die Datenbank und die Abfragen haben keine Fehler da ich bereits jede Variable printe..Warum braucht er mehrere Connect versuche um es richtig zu machen?
Immerhin sind es ja nur paar Variablen,Abfragen und Befehle wie jedes andere System...Danke schonmal für eure Zeit.
-
Habs jetzt in einen eigene stock gepackt..
Hat wiedermal 3 Anläufe gebraucht und dann erst gekickt...
was ist da faul? -
So..
habe mal zwei kleine Tests gemacht und zwar.
Wenn ich den Text drinnen lasse muss er 3 mal neu connecten also 3 mal "Server is restarting" und wird danach gekickt.
Dann habe ich nurnoch Kick(playerid); übergelassen und er brauchte nur 2 Anläufe..Komisch..
Die Variablen waren bei beiden Verbindungsversuche komplett gleich.. -
Ich verwende printf oder print je nachdem welche Laune ich gerade habe
Melde mich gleich wieder..
-
Eben nicht.
Zuerst dauert es eine Zeit und dann kommt einfach..
The Server is restarting..Was scripte ich eig. immer für komplizierte Sachen
Ja aber ich sehe an den prints genau wie weit er es macht..
Und er macht die ganzen Commands durch..
Der Server crasht ja nicht irgendwie der Spieler..
Ich probier mal jede Zeile durch.. -
Guten Tag.
Auch ich brauche wiedermal einen Rat...
Gleich mal der Code:
printf("time 02");
new year,month,day,hour,minute,second;
//TimestampToDate(strval(time, year, month, day, hour, minute, second, 0, 0);
SendClientMessage(playerid,COLOR_ROT,"Sie wurden von diesen Server gebannt!");
format(string,sizeof(string),"Art: Zeitlich begrenzter Ban (bis %02i.%02i.%04i %02i:%02i)",day,month,year,hour,minute);
SendClientMessage(playerid,COLOR_ROT,string);
format(string,sizeof(string),"Admin: %s",MySQLGetData("banlist","Banner","BanSerial",serial));
SendClientMessage(playerid,COLOR_ROT,string);
format(string,sizeof(string),"Grund: %s",MySQLGetData("banlist","BanReason","BanSerial",serial));
SendClientMessage(playerid,COLOR_ROT,string);
printf("time 03");
Kick(playerid);
printf("time 04");
Es wird alles soweit ausgeführt und "time 04" ausgegeben.
Aber Ingame erscheint kein Text nichts und Ingame kommt nach gefühlten 10 Sekunden "The Server is restarting".
Obwohl er weiter läuft..Das ganze befindet sich unter OnPlayerConnect...
MySQL kann alles auslesen usw..
Hoffe ihr könnt mir diesmal helfen was nicht so oft der Fall war
EDIT//
Habe eine zweite Abfrage drinnen nur mit dem Perma Ban..
Sind andere MySQL Abfragen usw. aber es funktioniert wieder nicht.
Kann man eigentlich schon ab OnPlayerConnect Nachrichten etc. schreiben und einen Spieler kicken? -
Hast du auch den Interior gesetzt via SetPlayerInterior?
-
Sowas will Opa sehen
Sind wirklich schlicht aber schön. -
Schau dir MrMonat an..
Der erklärt alles.
Von der Server Installation und der ersten Zeile bishin zu komplexeren Sachen...Versuch am besten Anfangs die Arten der Variablen und die Anwendung zu lernen.
Wennst das raus hast brauchst nurnoch die Funktionen lernen und schon bist du mitten drinnen.. -
So wirst keinen finden ich würde es so machen:
Schau dir Tutorials an usw.
Denk logisch und schau immer warum diese Funktion im Tutorial verwendet wird.
Verwende dazu am besten das Wiki.Wenn was nicht klappt kannst ja immernoch hier einen Thread aufmachen und nachfragen was falsch ist.
Und somit lernst du wieder dazu..Eigeninitiative ist angesagt..
-
Naja aber dann seid ihr theoretisch daran Schuld, dass mehr schlechte Server gibt?
Woran erkennt man schlechte Server?
An der Webpräsents usw. und wenn man ein Auge darüber hat fällt das gleich auf.
Und ich denke wenn ein Projekt nicht gut läuft das sie das Sponsoring auflösen werden.Vill. komme ich später mal
Wenn mein Script soweit ist..mfg.
Stefan -
Ich glaube du findest hier relativ wenige User für dieses Forum..
Weil die meisten Schüler etc. sind... -
Guter Ansatz Prototype..
Werde mich gleich mal dran versuchen^^Denn ich glaub das man nur durch die Distanzberechnung auf einen grünen zweig kommt..
-
Ok klappt tatsächlich.
Danke euch.
#closereq
Wenn ihr fertig seit^^ -
Richtig gut gemacht!
Hut ab! -
Ich bleibe bei 7..
Gefällt mir genauso gut wie das alte XP wenn man sich auskennt und das 8er ist mir noch zu teuer^^ -
Ok werde wieder antworten wenn ich es mitbekomme^^
Sonst PN...Und printf gibt einen Text in der Konsole aus..
Nur das du weist was dann passieren soll..PS:
Macht euch die Anschuldigungen bitte per PN aus-.- -
Also ich werde mir das Spiel die nächsten Wochen sicher nicht kaufen.
Ich hasse Zombie Spiele wo die Zombies dumm sind und das sind sie.
In WarZ kann man einfach von denen davonlaufen denn sie können ja nicht sprinten oder ähnliches.
Daher braucht man auch nicht taktisch und leise vorgehen.Sonst gefällt mir das Konzept richtig gut.
-
Mach mal das speichern so:
Code
Alles anzeigenstock SaveAccount(playerid) { 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)); printf("Adminlevel: %i",GetPVarInt(playerid,"Adminlevel")); dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel")); printf("Fraktion: %i",GetPVarInt(playerid,"Fraktion")); dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion")); return 1; }