Es scheint mir als hast du noch ein Array, das du mit [211] instanziiert hast. Schau mal, ob du da noch eines findest und erhöhe dessen Größe ebenfalls.
Beiträge von Jeffry
-
-
Stelle es mal auf 500 oder 1000, ob das was ändert (möglicherweise Leere Zeilen am Ende der Datei? Oder nicht endende Schleife?).
Ansonsten poste den Code durch den der Fehler verursacht wird. -
Du hast das hier zwischen den Klammern entfernt:
pData[killerid][A_Double_Kill] = 1;
SendClientMessage(killerid, COLOR_GREEN, ">> You have completed a new Achievement{FF0000} Double Kill {33DD11}congrats <<");
Deshalb passiert nichts. -
Ah klar, jetzt macht es Sinn, mit einem Debug sieht man einfach mehr.

< gettime()
zu:
> gettime() -
Lasse es dir zuvor mal ausgeben:
if(Spree[killerid] >= 2 && DoubleKill[killerid] < gettime() && pData[killerid][A_Double_Kill] == 0) {
zu:
printf("killerid: %d", killerid);
printf("Spree: %d / DoubleKill: %d gettime: %d / Double_Kill: %d", Spree[killerid], DoubleKill[killerid], gettime(), pData[killerid][A_Double_Kill]);
if(Spree[killerid] >= 2 && DoubleKill[killerid] < gettime() && pData[killerid][A_Double_Kill] == 0) {
Was wird dann geprintet? -
Das kannst du so machen:
Unter den Includes:
new dekoVeh[10];Unter OnGameModeInit:
dekoVeh[0] = CreateVehicle(...);
dekoVeh[1] = CreateVehicle(...);
//...
dekoVeh[9] = CreateVehicle(...);Unter OnPlayerEnterVehicle:
for(new i = 0; i < sizeof(dekoVeh); i++)
{
if(vehicleid == dekoVeh[i])
{
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
break;
}
}Dann kann man die Fahrzeuge nicht mehr betreten.
-
Warum? Leidet die Performance so stark, wenn man auf andere Tabellen joint?
Wie viel es aus macht weiß ich nicht, aber es ist auf jeden Fall nicht so performant wie wenn man es in einer einzigen Tabelle hat.
Ich denke auch nicht, dass es seine Absicht war einen Join zu nutzen, sondern zwei Queries zu senden, und das macht es natürlich nur noch halb so performant.Außerdem würde ein Update Query auf zwei Tabellen wirklich nicht schön aussehen.
Im Endeffekt hat man selbst und die CPU nur mehr Arbeit damit. -
Du kannst die Userstats einfach in die gleiche Tabelle eintragen, in phpMyAdmin über "Struktur" kannst du die Spalten hinzufügen.
Wenn du es in eine zweite Tabelle einträgst, dann macht es meiner Meinung nach den ganzen Prozess - also auch den Code - nur umständlicher und damit schwieriger.Alternativ verweise ich dich an dieses Tutorial, da ist das genau erklärt:
[jTuT] MySQL R39-3 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System) -
Warum möchtest du das machen? Von der Performance her ist das nicht zu empfehlen.
-
-
-
Frakmember10 fehlt in der Liste.

EDIT: (Post unten)
@Brianski Kein Problem! Passiert jedem mal, dass man den Wald vor lauter Bäume nicht sieht.
-
Schau mal in die Datei:
/FraktionCars/LSPD/Info.txtSind da alle Einträge vorhanden?
-
Lasse es dir mal so ausgeben, was dann geprintet wird:
for(new i=0; i<sizeof(LSPD_Umkleide); i++)
{
printf("Starte Schleifendurchlauf: %d", i);
new member[24];
format(member,sizeof(member),"Frakmember%i",i+1);
printf("PosX: %f, PosY: %f, PosZ: %f / %s", LSPD_Umkleide_Pos[i][LSPD_Umkleide_X], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Y], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Z], member);
LSPD_Umkleide[i]=CreateDynamicObject(2685,LSPD_Umkleide_Pos[i][LSPD_Umkleide_X], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Y], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Z], LSPD_Umkleide_Pos[i][LSPD_Umkleide_rX], LSPD_Umkleide_Pos[i][LSPD_Umkleide_rY], LSPD_Umkleide_Pos[i][LSPD_Umkleide_rZ]);
SetDynamicObjectMaterialText(LSPD_Umkleide[i],0,dini_Get("/FraktionCars/LSPD/Info.txt",member),OBJECT_MATERIAL_SIZE_256x128,"Arial",18,1,0xFFFFFFFF,0);
printf("Habe Objekt %d für Umkleide %d erstellt.", LSPD_Umkleide[i], i);
} -
Laut Log funktioniert das ja jetzt so.
Dann versuche es jetzt bitte so:
if(dialogid==DIALOG_LOGIN)
{
if(response)
{
new name[MAX_PLAYER_NAME],query[256],passwort[35];
GetPlayerName(playerid,name,sizeof(name));
if(strlen(inputtext)>0)
{
mysql_escape_string(inputtext,passwort,dbhandle);
format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
}
else
{
//Keine Eingabe
SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
}
}
else
{
Kick(playerid);
}
}
if(dialogid==DIALOG_REGISTER)
{
if(response)
{
new name[MAX_PLAYER_NAME],query[256],passwort[35];
GetPlayerName(playerid,name,sizeof(name));
if(strlen(inputtext)>5)
{
//Registrierungsfunktion
mysql_escape_string(inputtext,passwort,dbhandle);
format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s', MD5('%s'), '1')",name,passwort);
mysql_function_query(dbhandle,query,false,"","d",playerid);
sInfo[playerid][level]=1;
SetPlayerScore(playerid,sInfo[playerid][level]);
}
else
{
//Kleiner als 4 Zeichen
SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
}
}
else
{
Kick(playerid);
}
}Kopiere und ersetze den Code bitte genau so.
-
Verstehe jetzt nicht ob dadurch der Zivilist raus geschmissen wird? Nein oder?
Willkommen auf Breadfish!
Nein, der Spieler wird nicht aus dem Fahrzeug geworfen, dazu fehlt RemovePlayerFromVehicle.
Das kannst du dazu noch einfügen bzw. die SendClientMessage dadurch ersetzen, allerdings muss ich dazu sagen, dass die angewendete Methode um die Fahrzeuge zu prüfen extrem schlecht ist, da dies mit ziemlicher Wahrscheinlichkeit zu Fehlern führt, spätestens dann, wenn man ein Medic-Fahrzeug entfernt und wieder erstellt, wenn zuvor ein Fahrzeug mit einer kleineren ID entfernt wurde. Das so zu machen empfehle ich nicht.Ich empfehle dir eines der beiden Tutorials anzuschauen:
[jTuT] Fraktions-Fahrzeug-System mit Dini 1.6
[jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2Die sind zum einen dynamisch aufgebaut und zum anderen komplett funktionsfähig.
-
Versuche es mit dieser All In One Package:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.htmlWenn das nicht hilft, dann lade dir die R39-2 Version herunter und versuche es mit dieser, die ist für den alltäglichen Gebrauch gleich wie die R39-4.
https://github.com/pBlueG/SA-MP-MySQL/releases/tag/R39-2 -
Jetzt hast du das MD5 da wieder stehen...
Nur beim DIALOG_LOGIN:
format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
Zu
format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort='%s'",name,passwort); -
Du hast beim DIALOG_REGISTER vor dem format das
mysql_escape_string(inputtext,passwort,dbhandle);
gelöscht, füge das wieder ein. -
new Text3D:Clanlabel[MAX_PLAYERS];
zu:
new Text3D:Clanlabel[MAX_PLAYERS] = {Text3D:-1,...};Und:
Delete3DTextLabel(Clanlabel[playerid]);
zu:
if(Clanlabel[playerid] != Text3D:-1) Delete3DTextLabel(Clanlabel[playerid]);
Clanlabel[playerid] = Text3D:-1;