Dir fehlt nach jedem fcInfo ein
[i] so wie ich das sehe.
Sprich
fcInfo[e_modelID]
Zu
fcInfo[i][e_modelID]
Dir fehlt nach jedem fcInfo ein
[i] so wie ich das sehe.
Sprich
fcInfo[e_modelID]
Zu
fcInfo[i][e_modelID]
Deine Zeilen sind zu lang, du musst sie kürzer machen.
Auf Anfrage in PN:
Wie setzt du es denn auf 1?
So sollte es passen:
strcat(query,"ALTER TABLE `"#SQLTAG"_account_inventar` ADD COLUMN (");
for(new i=0;i<MAX_ARCHIVMENTS;i++)
{
format(query,sizeof(query),"%s%s`pArchs%i` int(2) NOT NULL",query,(i!=0)?(","):(""),i);
}
strcat(query,")");
mysql_function_query(MySqlConnection,query,false,"","");
strdel(query,0,sizeof(query));
Wieso? Das heißt halt so, um es vom "normalen" nicht gestreamten zu unterscheiden.
Du müsstest eben alle deine Funktionen im Code abändern (STRG+H hilft da meistens).
Gibst du auch wirklich die vehicleid ein, und nicht die modelid? Also das was bei /dl bei "id" steht.
vehicleid=GetNearestVehicle(playerid,fcInfo[i][e_vID],true);
zu:
vehicleid=GetNearestVehicle(playerid,10.0,true);
Natürlich ![]()
native IsDynamicObjectMaterialUsed(objectid, materialindex);
native GetDynamicObjectMaterial(objectid, materialindex, &modelid, txdname[], texturename[], &materialcolor, maxtxdname = sizeof txdname, maxtexturename = sizeof texturename);
native SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0);
native IsDynamicObjectMaterialTextUsed(objectid, materialindex);
native GetDynamicObjectMaterialText(objectid, materialindex, text[], &materialsize, fontface[], &fontsize, &bold, &fontcolor, &backcolor, &textalignment, maxtext = sizeof text, maxfontface = sizeof fontface);
native SetDynamicObjectMaterialText(objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0);
Oh, das hab ich übersehen. Aber die Frage ist, was macht das da?
Kannst du bitte zum Verständnis die GetNearestVehicle Funktion posten? Weil für mich gibt das keinen Sinn.
Das Streamer Plugin: http://forum.sa-mp.com/showthread.php?t=102865
Damit könnte ihr ohne Probleme 20.000 Objekte und mehr streamen, solange sie nicht alle auf einem Platz sind.
Versuche es so:
ocmd:flock(playerid,params[])
{
new string[128];
new vehicleid;
if(!IsPlayerInAnyVehicle(playerid))
{
vehicleid=GetNearestVehicle(playerid,fcInfo[i][e_vID],true);
}
else
{
vehicleid=GetPlayerVehicleID(playerid);
}
if(vehicleid==INVALID_VEHICLE_ID)return 1;
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
if(fcInfo[i][e_vID] == vehicleid)
{
if(sInfo[playerid][fraktion] == fcInfo[i][e_fracID])
{
if(!isFVehicleLocked(vehicleid))
{
flockVehicle(vehicleid);
SetVehicleParamsForPlayer(fcInfo[i][e_vID],playerid,0,1);
format(string,sizeof(string),"~w~%s ~r~abgeschlossen","Roller");
GameTextForPlayer(playerid,string,2000,4);
PlayerPlaySound(playerid,1027,0.0,0.0,0.0);
}
else
{
funlockVehicle(vehicleid);
SetVehicleParamsForPlayer(fcInfo[i][e_vID],playerid,0,0);
format(string,sizeof(string),"~w~%s ~g~aufgeschlossen","Roller");
GameTextForPlayer(playerid,string,2000,4);
PlayerPlaySound(playerid,1027,0.0,0.0,0.0);
}
return 1;
}
}
}
return 1;
}
Der erste Teil sollte so aussehen:
strcat(mainquery,"UPDATE "#SQLTAG"_account_inventar SET ");
for(new i=0;i<MAX_ARCHIVMENTS;i++)
{
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s%spArchs%i='%d'",mainquery,(i!=0)?(","):(""),i,Spieler[playerid][pArchs][i]);
}
mysql_format(MySqlConnection,mainquery,sizeof(mainquery),"%s WHERE Name='%s'",mainquery,Spieler[playerid][pName]);
mysql_function_query(MySqlConnection,mainquery,false,"","");
strdel(mainquery,0,sizeof(mainquery));
Beim zweiten Teil kann ich es dir nicht sagen, da fehlt der Anfang.
Poste bitte mehr vom Code oder lass dir das mainquery mal mit einem Print ausgeben, und poste das dann.
Also am Login liegt es nicht. Er lädt Level 1 = Score 1 aus der Datenbank und setzt es auch so. Da stimmt alles.
Bist du sicher, dass du es nirgends anders veränderst?
foreach(Player, i)
{
SendClientMessage(i, -1, "Hallo Welt.");
}
GetPlayerPoolSize gibt dir die höchste ID aus, GetMaxPlayers die höchstmögliche ID+1 (also die Anzahl an Slots).
Mit der Nutzung von GetPlayerPoolSize sind Schleifen durch alle Spieler etwas schneller, allerdings gibt es bessere Möglichkeiten wie zum Beispiel foreach oder ähnliche.
format(query,sizeof(query),"INSERT INTO autos SET (CarModel,CarPos_x,CarPos_y,CarPos_z,CarRotate,CarPreis) VALUES ('%d','%f','%f','%f','%f','%d')",
zu:
format(query,sizeof(query),"INSERT INTO autos (CarModel,CarPos_x,CarPos_y,CarPos_z,CarRotate,CarPreis) VALUES ('%d','%f','%f','%f','%f','%d')",
Das SET war da falsch.
Was sagt denn der MySQL Log, wenn du das speichern lassen willst?
Du musst die vehicleid eingeben, nicht die modelid.
Sprich, du musst 41 eingeben.