dann das hier noch ins Befehl:
SaveUserStats(pID)
Danke, habs.
Jetzt versuche ich den Skin in Mysql zu speichern wenn man sich registriert. wie mache ich das?
dann das hier noch ins Befehl:
SaveUserStats(pID)
Danke, habs.
Jetzt versuche ich den Skin in Mysql zu speichern wenn man sich registriert. wie mache ich das?
wie mache ich das?
Genauso wie alles andere
Eine Variable anlegen, wie pSkin und dann entweder manuell setzten oder GetPlayerSkin(playerid); verwenden.
Skin setzrn hab ich bereits aber wo muss ich da was schreiben das es in Mysql abgespeichert wird?
Edit: Die Skin ID beim Registrieren ist immer 0 obwohl esn andererSkin ist.
Skin setzrn hab ich bereits aber wo muss ich da was schreiben das es in Mysql abgespeichert wird?
Edit: Die Skin ID beim Registrieren ist immer 0 obwohl esn andererSkin ist
Mysql Log schon geschaut?
Hast du dir die Daten ausgeben die eingetragen werden inder DB bei der Regestrierung?
Wäre mal eine Option uns das mal zu zeigen und den Log dazu.
[12/13/18 18:32:32] [DEBUG] created new resultset '0x5a4e50'
[12/13/18 18:32:32] [DEBUG] fetched MySQL result '0x0'
[12/13/18 18:32:32] [DEBUG] CCallback::Execute(amx=0x275ac88, index=14, num_params=1)
[12/13/18 18:32:32] [INFO] Executing callback 'OnUserRegister' with 1 parameter...
[12/13/18 18:32:32] [DEBUG] processing internal specifier 'c'
[12/13/18 18:32:32] [DEBUG] pushed value '0' onto AMX stack
[12/13/18 18:32:32] [DEBUG] executing AMX callback with index '14'
[12/13/18 18:32:32] [DEBUG] cache_insert_id() (C:\Users\...\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:74)
[12/13/18 18:32:32] [DEBUG] cache_insert_id: return value: '34' (C:\Users\...\Documents\meinserver\ARP2.0\pawno\include\../include/core/publics.inc:74)
[12/13/18 18:32:32] [DEBUG] AMX callback executed with error '0'
[12/13/18 18:32:32] [INFO] Callback successfully executed.
Dasist ein Teil des Logs.
Wie meinst du mit ausgeben?
aber wo muss ich da was schreiben das es in Mysql abgespeichert wird?
In dein Query unter SaveUserStats. Einfach neben das Level usw setzen.
Wenn GetPlayerSkin 0 ist, dann wurde der Skin noch nicht gesetzt.
Versuchs dann unter OnPlayerSpawn o.ä.
aveUserStats sieht so aus.
stock SaveUserStats(playerid){ if(!SpielerDaten[playerid][pEingeloggt]) return 1; Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Skin = '%d' WHERE id = '%d'", SpielerDaten[playerid][pLevel],SpielerDaten[playerid][pGeld],SpielerDaten[playerid][pSkin],SpielerDaten[playerid][p_id]); /*mysql_format(handle, query, sizeof(query), "UPDATE users SET Admin = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);*/ Das Query wird abgesendet mysql_pquery(handle, query); return 1;}
GetPlayerskin wohin?
Onplayerspawn sieht so aus
public OnPlayerSpawn(playerid)
{
SetPlayerColor(playerid, WEISS);
SetPlayerSkin(playerid, 187);
return 1;
}
Mein FS speichert irgendwie nichts in der MySQL Datenbank ab ^
Der Stock der die Sachen ladet
mysql_format(handle, query, sizeof(query), "SELECT * FROM `clothes` WHERE `holder` = '%s'", GetName(playerid));
mysql_pquery(handle, query, "OnClothesLoad", "i", playerid);
Nachdem kaufen
mysql_format(handle, query, sizeof(query), "INSERT INTO `clothes` (`holder`, `model`, `bone, `offestx, `offesty, `offestz, `rotx, `roty, `rotz, `scalex, `scaley, `scalez) VALUES ('%s', %d, %d, %f, %f, %f, %f, %f, %f, %f, %f, %f)", PlayerName[playerid], model, bone, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ, fScaleX, fScaleY, fScaleZ);
mysql_pquery(handle, query, "OnFinishPurchase", "id", playerid, index);
ClothesInfo[playerid][index][cID] = cache_insert_id();
Hier noch beim Laden ist glaube Fehlerfrei ^
cache_get_value_name_int(i, "0", ClothesInfo[playerid][i][cID]);
cache_get_value_name_int(i, "2", ClothesInfo[playerid][i][cModelID]);
cache_get_value_name_int(i, "3", ClothesInfo[playerid][i][cBoneID]);
cache_get_value_name_float(i, "4", ClothesInfo[playerid][i][cOffsetX]);
cache_get_value_name_float(i, "5", ClothesInfo[playerid][i][cOffsetY]);
cache_get_value_name_float(i, "6", ClothesInfo[playerid][i][cOffsetZ]);
cache_get_value_name_float(i, "7", ClothesInfo[playerid][i][cRotX]);
cache_get_value_name_float(i, "8", ClothesInfo[playerid][i][cRotY]);
cache_get_value_name_float(i, "9", ClothesInfo[playerid][i][cRotZ]);
cache_get_value_name_float(i, "10", ClothesInfo[playerid][i][cScaleX]);
cache_get_value_name_float(i, "11", ClothesInfo[playerid][i][cScaleY]);
cache_get_value_name_float(i, "12", ClothesInfo[playerid][i][cScaleZ]);
ClothesInfo[playerid][i][cOn] = true;
Mein FS speichert irgendwie nichts in der MySQL Datenbank ab ^
1. Was sagt der MySQL Log?
2.
cache_get_value_name_int(i, "2", ClothesInfo[playerid][i][cModelID]);
Das ist falsch in die Mitte muss der Name der Spalte.
Also so schreiben:
cache_get_value_name_int(i, "model", ClothesInfo[playerid][i][cModelID]);
Also musste bei allen ändern
Alles anzeigen1. Was sagt der MySQL Log?
2.Das ist falsch in die Mitte muss der Name der Spalte.
Also so schreiben:
cache_get_value_name_int(i, "model", ClothesInfo[playerid][i][cModelID]);
Also musste bei allen ändern
[20:05:05] [ERROR] CConnection::CConnection - establishing connection to MySQL database failed: #1045 'Access denied for user 'MAKAROV68'@'94.134.xx.xxx' (using password: YES)'
[20:05:05] [ERROR] CConnection::CConnection - establishing connection to MySQL database failed: #1045 'Access denied for user 'MAKAROV68'@'94.134.xx.xxx' (using password: YES)'
[20:05:05] [ERROR] CConnection::CConnection - establishing connection to MySQL database failed: #1045 'Access denied for user 'MAKAROV68'@'94.134.xx.xxx' (using password: YES)'
[20:05:05] [ERROR] CConnection::CConnection - establishing connection to MySQL database failed: #1045 'Access denied for user 'MAKAROV68'@'94.134.xx.xxx' (using password: YES)'
der nimmt komischerweise meine ip adresse als host obwohl ich meine mysql server adresse angegeben hab
@Allrounder18
stock SaveUserStats(playerid){ if(!SpielerDaten[playerid][pEingeloggt]) return 1; Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Skin = '%d' WHERE id = '%d'", SpielerDaten[playerid][pLevel],SpielerDaten[playerid][pGeld],GetPlayerSkin(playerid),SpielerDaten[playerid][p_id]); /*mysql_format(handle, query, sizeof(query), "UPDATE users SET Admin = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);*/ Das Query wird abgesendet mysql_pquery(handle, query); return 1;}
Access denied for user 'MAKAROV68'@'94.134.xx.xxx' (using password: YES)'
Das sieht danach aus, als ob der Benutzername oder das Passwort falsch sei
Das sieht danach aus, als ob der Benutzername oder das Passwort falsch sei
Das habe ich aber auch obwohl ich kein Passwort eingestellt habe?
Das habe ich aber auch obwohl ich kein Passwort eingestellt habe?
Es kann auch sein, dass der Nutzer zu wenige Rechte hat, um auf die Datenbank zuzugreifen.
ocmd:system(playerid,params[])
{
new string[1200], formatstr[128], oldtime[10], Header[64];
if(Spieler[playerid][pAdmin] < 6)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMIN);
oldtime[4] = GetTickCount();
oldtime[0] = GetTickCount();
OnServerTimer();
format(formatstr,sizeof(formatstr),"{9B2736}Timer:{D9CCD9} ServerTimer benötigt für durchlauf %i ms\n", GetTickCount() - oldtime[0]);
strcat(string,formatstr);
oldtime[1] = GetTickCount();
UpdateUhr();
format(formatstr,sizeof(formatstr),"{9B2736}Timer:{D9CCD9} Uhrzeit benötigt für durchlauf %i ms\n",GetTickCount() - oldtime[1]);
strcat(string,formatstr);
oldtime[2] = GetTickCount();
PayDay(playerid);
format(formatstr,sizeof(formatstr),"{9B2736}Timer:{D9CCD9} PayDay benötigt für durchlauf %i ms\n", GetTickCount() - oldtime[2]);
strcat(string,formatstr);
oldtime[3] = GetTickCount();
OnBlitzerTimer();
format(formatstr,sizeof(formatstr),"{9B2736}Timer:{D9CCD9} Blitzer benötigt für durchlauf %i ms\n", GetTickCount() - oldtime[3]);
strcat(string,formatstr);
format(formatstr,sizeof(formatstr),"{9B2736}System:{D9CCD9} Das System (Timer, Funktionen) benötigt für durchlauf %i ms", playerid, GetTickCount() - oldtime[4]);
strcat(string,formatstr);
strcat(string,"\n\n {9B2736}ServerName{FFFFFF}");
format(Header,sizeof(Header),"{9B2736}System (%02d.%02d.%04d - %02d:%02d:%02d)", tag, monat, jahr, stunde, minute, sekunde);
ShowPlayerDialog(playerid,DIALOG_4ALL_SONSTIGES, DIALOG_STYLE_MSGBOX, Header, string, "Verlassen","");
return 1;
}
Alles anzeigen
Kurze Frage was mache ich falsch es wird alles mit 0 ms ausgegeben?
Wen ich den Server Hochfahre werden mir die ms angezeigt wielange er braucht?
@Allrounder18
stock SaveUserStats(playerid){ if(!SpielerDaten[playerid][pEingeloggt]) return 1; Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Skin = '%d' WHERE id = '%d'", SpielerDaten[playerid][pLevel],SpielerDaten[playerid][pGeld],GetPlayerSkin(playerid),SpielerDaten[playerid][p_id]); /*mysql_format(handle, query, sizeof(query), "UPDATE users SET Admin = '%d' WHERE id = '%d'", PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][p_id]);*/ Das Query wird abgesendet mysql_pquery(handle, query); return 1;}
Danke, habs.
Jedoch hab ich n weiteres Problem.
Wenn ich Rang 5bin kann ich niemandmehr Aen Rang geben obwohl es doch so eingestellt ist. Woran kann das liegen?
ocmd:makeadmin(playerid, params[])
{
//if(SpielerDaten[playerid][pEingeloggt] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
new pID, adminid, string[128];
if(IsPlayerAdmin(playerid) || SpielerDaten[playerid][pAdmin] >= 5 && SpielerDaten[playerid][pAdmin] == 7)
{
if(sscanf(params, "ui", pID, adminid))return SendClientMessage(playerid, GRAU, "Benutze /makeadmin [SpielerID/Name] [Teamrang]");
if(adminid < 2)return SendClientMessage(playerid, GRAU, "Du kannst nur ab Rang 2 vergeben.");
if(adminid < 2)return SendClientMessage(playerid, GRAU, "Du kannst nur ab Rang 2 vergeben.");
if(IsPlayerNPC(pID))return 1;
if(IsPlayerNPC(pID))return 1;
//if(!Eingeloggt[pID])return SendClientMessage(playerid, GRAU, "Dieser Spieler ist nicht eingeloggt!");
//if(SpielerDaten[pID][pIntro] < 1)return SendClientMessage(playerid, GRAU, "Der Spieler ist noch im Tutorial.");
if(adminid == 0){
format(string, sizeof(string), "Du hast %s aus dem Teamposten %s entlassen", SpielerDaten[pID][pName], GetAdminRangName(pID));
SendClientMessage(playerid, BLAU, string);
format(string, sizeof(string), "%s hat dich aus dem Team entlassen!", SpielerDaten[playerid][pName]);
SendClientMessage(pID, BLAU, string);
//format(string, sizeof(string), "AdmCMD: %s hat %s aus dem Team entlassen!", SpielerDaten[playerid][pName], SpielerDaten[pID][pName]);
//SendClientMessage(pID, string);
SpielerDaten[pID][pAdmin] = 0;
SaveUserStats(pID);
return 1;
}
if(adminid < 1 || adminid > 7)return SendClientMessage(playerid, GRAU, "Dieser Adminrang existriert nicht!");
SpielerDaten[pID][pAdmin] = adminid;
format(string, sizeof(string), "Du hast %s den Teamrang %s gegeben", SpielerDaten[pID][pName], GetAdminRangName(pID));
SendClientMessage(playerid, BLAU, string);
format(string, sizeof(string), "* %s %s hat dir den Teamrang %s gegeben",SpielerDaten[playerid][pName], GetAdminRangName(pID));
SendClientMessage(pID, BLAU, string);
//format(string, sizeof(string), "AdmCMD: %s hat %s zum %s ernannt.", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], GetAdminRangName(pID));
//SendClientMessage(pID, string);
//SpawnPlayerEx(pID);
SaveUserStats(pID);
return 1;
}
else {SendClientMessage(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
return 1;
}
SpielerDaten[playerid][pAdmin] >= 5 && SpielerDaten[playerid][pAdmin] == 7
Wie soll jemand einen Rang größer 5 aber gleich 7 haben? Das geht nur, wenn er 7 ist
Lösche das mit dem == 7
Kurze Frage was mache ich falsch es wird alles mit 0 ms ausgegeben?
Da machst du nix falsch...das ist so, dir werden nur Millisekunden angezeigt, aber dein Server brauch für das Ausführen nur Mikrosekunden
DEBUG » Server brauchte für das Hochfahren 34 ms.
Aber wen ich /system angebe bleibt alles auf 0 hm verstehe ich nicht :o
Danke, hat geklappt.
Was muss hier einbauen damit man den Chat mit $ und § nicht nutzen kann wenn man kein Admin ist?
Wenn ich kein Admin bin kommt ich hab zu enig rechte und es wird zB. $Text ausgegeben.
public OnPlayerText(playerid, text[]){ new message[128]; if(text[0] == '$') { if(IsPlayerAdmin(playerid) || SpielerDaten[playerid][pAdmin] < 2)return SendClientMessage(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl."); if(!text[1]) return SendClientMessage(playerid, ROT,"$ [Text]"),0; format(message, sizeof(message), "(([Adminchat] %s: %s ))", SpielerDaten[playerid][pName],text[1]); return SendClientMessageToAll(ROT,message),0; } new message1[128]; if(text[0] == '§') { if(IsPlayerAdmin(playerid) || SpielerDaten[playerid][pAdmin] < 1)return SendClientMessage(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl."); if(!text[1]) return SendClientMessage(playerid, ROT,"§ [Text]"),0; format(message1, sizeof(message1), "(([Helferchat] %s: %s ))", SpielerDaten[playerid][pName],text[1]); return SendClientMessageToAll(HGREEN,message1),0; } format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", SpielerDaten[playerid][pName], text); return ProxDetector(7.0, playerid, message, WEISS,WEISS,WEISS,WEISS,WEISS),0;}
Das sieht danach aus, als ob der Benutzername oder das Passwort falsch sei
Der Server denkt der MySQL Host läuft intern, hab bei MySQL mein MySQL Server angegeben da nur der Server SA-MP drauf hat.