Ich könnte heulen....;( Hier mein Server
Beiträge von Derakar
-
-
Informationen in dem Sinne von:
CPU, RAM, Festplattenspeicher etc.
-
Was für ein Spielmodus?
Wer ist bereits im Team?
Wer seid ihr?
-
Bitte benutz doch den PAWN BB-Code
Der Code nochmal übersichtlich:
forward saveCar();
public saveCar()
{
for (new i=0; i< MAX_VEHICLES; i++)
{
new vehicle;
vehicle = GetPlayerVehicleID(i);
new autos[255];
format(autos, sizeof(autos), "/Autos/%i.ini", vehicle);
if ( !dini_Exists(autos) ) { dini_Create(autos); }
dini_FloatSet(autos,"Gefahrene KM", vehicles[vehicle][vehicleKm]);
}
return 1;
}und natürlich das laden:
forward loadCar();
public loadCar()
{
for (new j=0; j< MAX_VEHICLES; j++)
{
new vehicle;
vehicle = GetPlayerVehicleID(j);
new autos[255];
format(autos, sizeof(autos), "/Autos/%i.ini", vehicle);
if ( !dini_Exists(autos) ) { dini_Create(autos); }
vehicles[vehicle][vehicleKm] = dini_Float(autos,"Gefahrene KM");
}
return 1;
} -
Ich hab danach ja noch 2 Dialoge wo ich das geschlecht (für den Skin) und das Alter anfrage hab das einfach unter den RegisterSpieler gemacht. Jetzt klappt es! Danke!
-
Direkt nach dem Klicken auf Registrieren.
public AfterRegister(playerid)
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,mysql);
if(num_rows == 1){
sInfo[playerid][pDBID] = cache_get_field_content_int(0,"ID",mysql);
}
return 1;
}da ist der Registerbutton auch nochmal:
if(playertextid == SB_REGISTER){
new str[50],query[1024],query2[1024],passwort[35];
GetPVarString(playerid,"PasswortText", str,sizeof(str));
mysql_escape_string(str,passwort,mysql);
format(query,sizeof(query),"INSERT INTO accounts (Name,Passwort) VALUES ('%s',MD5('%s')) ",SpielerName(playerid),passwort);
mysql_function_query(mysql,query,false,"","");
format(query2,sizeof(query2),"SELECT ID FROM accounts WHERE Name='%s'",SpielerName(playerid));
mysql_function_query(mysql,query2,true,"AfterRegister","i",playerid);
ShowPlayerDialog(playerid,DIALOG_GESCHLECHT,0,"{FF9E00}Wähle dein Geschlecht","Wähle nun dein Geschlecht, mit welchem du auf dem Server spielen möchtest.\nDu kannst natürlich auch dein echtes bentzen.", "Männlich", "Weiblich");
} -
Okay, jetzt geht es ^^.
ABER Ich möchte, dass das Script nach dem Registrieren den Spieler einmal speichert. Macht er aber nicht....
RegisterSpieler: (Das Speichern hab ich wieder rausgenommen)
stock RegisterSpieler(playerid){
PlayerTextDrawHide(playerid, SB_BG);
PlayerTextDrawHide(playerid, SB_NICK);
PlayerTextDrawHide(playerid, SB_PASS);
PlayerTextDrawHide(playerid, SB_NICKFELD);
PlayerTextDrawHide(playerid, SB_PASSFELD);
PlayerTextDrawHide(playerid, SB_SN);
PlayerTextDrawHide(playerid, SB_REGISTER);
PlayerTextDrawHide(playerid, SB_LOGIN);
CancelSelectTextDraw(playerid);
TextDrawShowForPlayer(playerid,Datum);
TextDrawShowForPlayer(playerid,Uhr);
SetPlayerScore(playerid,sInfo[playerid][pLevel]);
GivePlayerMoney(playerid,150);
SetPlayerColor(playerid, WEISS);
new randM = random(sizeof(SkinM)), randW = random(sizeof(SkinW));
new Skin1 = SkinM[randM];
new Skin2 = SkinW[randW];
if(sInfo[playerid][pGeschlecht] == 1){
SetSpawnInfo( playerid, 0, Skin1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
sInfo[playerid][pSkin] = Skin1;
} else if(sInfo[playerid][pGeschlecht] == 2){
SetSpawnInfo( playerid, 0, Skin2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
sInfo[playerid][pSkin] = Skin2;
}
sInfo[playerid][pGeld] = GetPlayerMoney(playerid);
sInfo[playerid][pEingeloggt] = 1;
sInfo[playerid][pLevel] = 1;
SpawnPlayer(playerid);
SetPlayerPos(playerid,1511.8359, -1713.5916, 14.0469);
return 1;
} -
Heyho! Ich habe einiges zu meinem "SpielerSpeichern" hinzugefügt und nun gibt er mir diesen Error. Ich habe schon mehrmals drüber geschaut und weiß nicht wo der Fehler ist. Ausserdem will ich, dass der Spieler nach dem Registrieren gespeichert wird, damit es zu keinen Bugs führt aber ich hab es jetzt schon oft versucht und verschiedene Dinge ausprobiert aber er will einfach nicht den stock ausführen...
Das ist in der Console:
Code[01:39:34] <<< UPDATE accounts SETLevel='1',Geld='150',Skin='21',Alter='0',Geschlecht='1',Admin='0',Gebannt='0',Fraktion='0',Rank='0',Wanteds='0'WHERE ID='24' >>>
und das in der mysql_log.log
Code[01:44:14] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Alter='0', Geschlecht='1', Admin='0', Gebannt='0', Fraktion='0', Rank='0', Wante' at line 1
Hier ist mein SpielerSpeichern stock
stock SpielerSpeichern(playerid){
if(sInfo[playerid][pEingeloggt] == 0) return 1;
new query[1024];
format(query,sizeof(query),"UPDATE accounts SET Level='%i', Geld='%i', Skin='%i', Alter='%i', Geschlecht='%i', Admin='%i', Gebannt='%i', Fraktion='%i', Rank='%i', Wanteds='%i' WHERE ID='%i'", sInfo[playerid][pLevel], sInfo[playerid][pGeld], sInfo[playerid][pSkin], sInfo[playerid][pAlter], sInfo[playerid][pGeschlecht], sInfo[playerid][pAdmin], sInfo[playerid][pBan], sInfo[playerid][pFrak], sInfo[playerid][pRank], sInfo[playerid][pWanted], sInfo[playerid][pDBID]);
mysql_function_query(mysql,query,false,"","");
printf("<<< %s >>>",query); // Speicher Debug
return 1;
} -
-
Oh Vergessen
Danke !
-
[16:15:59] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1' WHERE ID='8'' at line 1
-
Heyho,
Mein Permban Befehl sperrt den Spieler nicht nach dem Bann.Ich habe das Speichern schon mal Debugt und er UPDATET es auch aber es wird nicht in die Datenbank übernommen, was etwas komisch ist.
ocmd:permban(playerid,params[])
{
new pID,Grund[128],kickstr[128];
if(sInfo[playerid][pEingeloggt] == 0) return SendClientMessage(playerid, GRAU, LOGINERROR);
if(sInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, GRAU, ADMERROR);
if(sscanf(params, "is[128]",pID,Grund)) return SendClientMessage(playerid, GRAU, "Verwende: /permban {FF9E00}<Spieler-ID> <Grund>");
format(kickstr,sizeof(kickstr), "%s wurde von %s vom dauerhaft Server gebannt! Grund: %s", SpielerName(pID), SpielerName(playerid), Grund);
SendClientMessageToAll(DROT, kickstr);
SetTimer("KickTimer2", 1000, false);
sInfo[playerid][pBan] = 1;
SpielerSpeichern(playerid);
SpielerReset(playerid);
return 1;
}stock SpielerSpeichern(playerid){
if(sInfo[playerid][pEingeloggt] == 0) return 1;
new query[1024];
format(query,sizeof(query),"UPDATE accounts SET Level='%i',Geld='%i', Admin='%i',Gebannt'%i' WHERE ID='%i'",sInfo[playerid][pLevel],GetPlayerMoney(playerid),sInfo[playerid][pAdmin],sInfo[playerid][pBan], sInfo[playerid][pDBID]);
mysql_function_query(mysql,query,false,"","");
printf("%s",query);
return 1;
} -
Ah ok ich werd's mal probieren Danke!
-
Ne ich glaub ich werde das dann so machen, dass der dann schon eingeloggt/registriert ist und wenn der dann auf Login oder Register klickt dann spawnt der halt.
-
Oke dann muss ich mir etwas anderes überlegen...
@xCurry
Das ist die DrawFont 0 -
Nicht ganz so hab ich das ja auch schon aber ich möchte das ja machen, dass man auf Passwort eingeben klickt da dann das passwort eingeben und dann auf Registieren oder Login klickt
Hier ein Bild habs vergessen!
-
Heyho
ich möchte folgendes wissen. Un zwar wenn ich auf "Passwort eingeben" klicke soll ein Dialog kommen wo der Spieler sein oder bisher gewähltes Passwort reinschreiben muss. Wenn er dann auf Registrieren oder Login ( auf dem Bild nicht vorhanden) klickt soll er halt entweder Registriert werden oder Eingeloggt werden.Bisher habe ich, dass der wenigstens schonmal das Richtige Textdraw hinbastelt. Aber wie mach ich das nun mit dem Extra Textdraw (das Passwort was "gespeichert" wird und dann beim klicken auf Register/Login abgerufen wird und er eingeloggt oder registiert wirs)?
Hier der Code:
Nach abfrage ob er schon einen Account besitzt:
public CheckUser(playerid)
{
new num_rows, num_fields;
cache_get_data(num_rows, num_fields, mysql);
if(num_rows == 0){
//Registrierung
PlayerTextDrawShow(playerid, SB_REGISTER);
}
else
{
//Login
// new input[200];
// format(input,sizeof(input),"{908B8E}Willkommen zurück auf {FF9E00}%s{908B8E}!\nDein Account wurde in der Datenbank gefunden.\nGebe hier bitte dein Passwort ein, welches du bei der Registrierung gewählt hast.",SERVERNAME);
// ShowPlayerDialog(playerid,DIALOG_LOGIN,3,"{FF9E00}Login",input,"Absenden","Verlassen");PlayerTextDrawShow(playerid, SB_LOGIN);
}
return 1;
}Hier die Dialoge die ich bisher hatte:
if(dialogid == DIALOG_REGISTER){
if(response){
new query[1024],query2[1024],passwort[35];
if(strlen(inputtext) >= 6){
mysql_escape_string(inputtext,passwort,mysql);
format(query,sizeof(query),"INSERT INTO accounts (Name,Passwort) VALUES ('%s',MD5('%s')) ",SpielerName(playerid),passwort);
mysql_function_query(mysql,query,false,"","");
format(query2,sizeof(query2),"SELECT ID FROM accounts WHERE Name='%s'",SpielerName(playerid));
mysql_function_query(mysql,query2,true,"AfterRegister","i",playerid);
sInfo[playerid][pEingeloggt] = 1;
sInfo[playerid][pLevel] = 1;
SetSpawnInfo( playerid, 0, 289, 1511.8359, -1713.5916, 14.0469, 222.1692, 0, 0, 0, 0, 0, 0 );
SpawnPlayer(playerid);
SetPlayerScore(playerid,sInfo[playerid][pLevel]);
GivePlayerMoney(playerid,150);
} else {
new input[200];
format(input,sizeof(input),"{908B8E}Das Passwort ist nicht lang genug. (min. {FF9E00}6{908B8E} Zeichen)\nGebe hier dein gewünschtes Passwort ein, mit welchem du dich registrieren möchtest!");
ShowPlayerDialog(playerid,DIALOG_REGISTER,3,"{FF9E00}Registrierung",input,"Absenden","Verlassen");
}
} else {
Kick(playerid);
}
return 1;
}
//##########################################################################################################################################################################if(dialogid == DIALOG_LOGIN){
if(response){
new query[1024],passwort[35];
if(strlen(inputtext) > 0){
mysql_escape_string(inputtext,passwort,mysql);
format(query,sizeof(query),"SELECT * FROM accounts WHERE Name='%s' AND Passwort=MD5('%s')",SpielerName(playerid),passwort);
mysql_function_query(mysql,query,true,"OnPasswortResponse","i",playerid);
} else {
new input[200];
format(input,sizeof(input),"{908B8E}Du hast kein Passwort angegeben.\nGebe hier bitte dein Passwort ein, welches du bei der Registrierung gewählt hast.",SERVERNAME);
ShowPlayerDialog(playerid,DIALOG_LOGIN,3,"{FF9E00}Login",input,"Absenden","Verlassen");
}
} else {
Kick(playerid);
}
return 1;
}Hier wenn er auf den Register Button klickt was aber auch bisher noch Falsch ist:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(playertextid == SB_REGISTER){
CancelSelectTextDraw(playerid);
new input[200];
format(input,sizeof(input),"{908B8E}Herzlich Willkommen auf {FF9E00}%s{908B8E}!\nDein Account wurde nicht in der Datenbank gefunden.\nGebe hier dein gewünschtes Passwort ein, mit welchem du dich registrieren möchtest!",SERVERNAME);
ShowPlayerDialog(playerid,DIALOG_REGISTER,3,"{FF9E00}Registrierung",input,"Absenden","Verlassen");
}
return 1;
} -
achso Okay
-
@K3Ksii:
wie machst du die Durchgehende linie im Chat ?btw Thread
so habe ich das versuch das so zu machen einfach durch dein Texwdraw zu ersetzen :DD
//oben im Script
new Text:connect6;//OnGameModeInit
connect6 = TextDrawCreate(-40.000000, 296.000000, ".");
TextDrawBackgroundColor(connect6, 255);
TextDrawFont(connect6, 1);
TextDrawLetterSize(connect6, 0.500000, -0.299999);
TextDrawColor(connect6, -1);
TextDrawSetOutline(connect6, 0);
TextDrawSetProportional(connect6, 1);
TextDrawSetShadow(connect6, 1);
TextDrawUseBox(connect6, 1);
TextDrawBoxColor(connect6, -16776961);
TextDrawTextSize(connect6, 670.000000, 0.000000);
TextDrawSetSelectable(connect6, 0);//OnPlayerConnect
TextDrawShowForPlayer(playerid,connect6);Ja aber ich würde das gerne mit PlayerTextDraws machen um Bugs zu vermeiden.
-
Ich habe das Mittig gemacht siehe :
PlayerTextDrawAlignment(playerid,SB_PASSFELD[playerid], 2);
Ist das der Fehler? Muss ich das Links machen oder was.