Generell erst mal, ja.
Wie sieht denn die momentane Abfrage aus, von der du sprichst?
Generell erst mal, ja.
Wie sieht denn die momentane Abfrage aus, von der du sprichst?
Schalte bitte mal den MySQL Debug Modus an und poste dann was im MySQL Log steht, wenn du den Server startest.
Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)
Daran kann es natürlich auch liegen, aber der Print sollte trotzdem kommen.
Hast du denn die Daten in der Datenbank? Wenn nicht, kann natürlich auch nichts geladen werden. Ansonsten schau dir mal den MySQL Log an.
Also wenn ein Spieler auf dem Server kommt, kriegt er immer nur die ID womit er sich registiert hat, aber ich speicher keine ID ab vom Spieler.
Was meinst du damit? ![]()
Zwecks des Neons:
Ich tippe mal darauf, dass du die Neonbalken nicht löschst, wenn ein Fahrzeug mit Neon gelöscht wird.
printf(">>>>> Create3DTexte Fertig <<<<<");
Der print fehlt in deinem Log. Hast du ihn vergessen, oder wird er nicht angezeigt?
Wenn er nicht angezeigt wird, poste bitte den zusammenhängenden Code von dem Laden der ganzen Sachen und dem Create3DTexte();.
Ich verstehe nicht was du meinst.
Kannst du das bitte nochmal ausführlich erklären, am besten mit einem Code?
Wie sieht der Server Log aus, wenn du den Server startest und das ganze Zeug erstellt wird? Du hast ja da überall prints drin, poste das mal.
Dann setzt du nach:
PutPlayerInVehicle(playerid,vID,0);
das:
SetPVarInt(playerid, "vID", vID);
Und bei OnPlayerExitVehicle:
if(/*Wenn Spieler im Event*/)
{
DestroyVehicle(GetPVarInt(playerid, "vID"));
}
Keines der Callbacks rufst du in dem Code im ersten Post auf. Hast du das dort vergessen, oder steht es woanders?
Du weist nur Variablen zu, erstellen tust du da nichts (Pickup oder sowas).
Entsprechend werden zwar die Variablen mit Werten versehen, sonst passiert aber nichts.
new vID = CreateVehicle(502,1156.4369,-897.5735,42.8511,183.1492,-1,-1,60);
PutPlayerInVehicle(playerid,vID,0);
new neuerCP = random(sizeof(Muellfuhr_Stationen));
SetPlayerCheckpoint(playerid,Muellfuhr_Stationen[neuerCP][M_fx],Muellfuhr_Stationen[neuerCP][M_fy],Muellfuhr_Stationen[neuerCP][M_fz],Muellfuhr_Stationen[neuerCP][M_fRad]);
In deinem Log steht auch nichts von einem INSERT oder einem UPDATE.
Poste bitte mal den Quellcode von der Registration.
Die Position hinter dem Fahrzeug musst du ja nicht in das Array packen, die kannst du ja berechnen (bzw. musst du sogar) wenn der Spieler in den Checkpoint fährt.
Sprich du kannst dann einfach in dein Array alle Checkpoints machen, und über random eben den nächsten Anzeigen lassen, irgendeinen.
Das ist klar, das hast du ja noch nicht gemacht.
Schau dir dazu mal diese beiden Tutorials an (sind ziemlich ähnlich):
Einfaches Login/Register System mit PVars ( basierend auf Dini)
http://forum.sa-mp.com/showthread.php?t=365542
Damit bekommst du dann das einloggen hin. ![]()
Ja, da war ein Klammerfehler drin. Du hast eine } vergessen.
Außerdem hast du das dcmd_register(...) in OnPlayerCommandText gepackt, das ist falsch. Du kannst das wie eine Funktion sehen, daher muss es außerhalb von Callbacks stehen, ich habe es dir mal ganz unten hingeschrieben.
Nur die Einzeiler (dcmd(register, 8, cmdtext);) müssen bei OnPlayerCommandText hin.
Code:
Das sieht mir stark nach einem Klammerfehler aus.
Poste ggf. mal die ersten 300 Zeilen deines Gamemodes.
stock CreatePlayerVehicle(playerid, vehmodel, Float:posx, Float:posy, Float:posz, Float:posa, numberplate[], preis, neon, color1, color2)
{
new mainQuery[1537], secondQuery[256];
for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
{
if(PrivateVehicle[playerid][slot][modelid] == 0)
{
format(PrivateVehicle[playerid][slot][vehBesitzer], 24, "%s", GetName(playerid));
PrivateVehicle[playerid][slot][modelid] = vehmodel;
PrivateVehicle[playerid][slot][vehPosX] = posx;
PrivateVehicle[playerid][slot][vehPosY] = posy;
PrivateVehicle[playerid][slot][vehPosZ] = posz;
PrivateVehicle[playerid][slot][vehPosA] = posa;
PrivateVehicle[playerid][slot][vehInterior] = GetPlayerInterior(playerid);
PrivateVehicle[playerid][slot][vehWorld] = GetPlayerVirtualWorld(playerid);
PrivateVehicle[playerid][slot][vehColor1] = color1;
PrivateVehicle[playerid][slot][vehColor2] = color2;
PrivateVehicle[playerid][slot][vehPaintjob] = -1;
PrivateVehicle[playerid][slot][vehSpoiler] = 0;
PrivateVehicle[playerid][slot][vehHood] = 0;
PrivateVehicle[playerid][slot][vehRoof] = 0;
PrivateVehicle[playerid][slot][vehSideskirt] = 0;
PrivateVehicle[playerid][slot][vehLamps] = 0;
PrivateVehicle[playerid][slot][vehNitro] = 0;
PrivateVehicle[playerid][slot][vehExhaust] = 0;
PrivateVehicle[playerid][slot][vehWheels] = 0;
PrivateVehicle[playerid][slot][vehStereo] = 0;
PrivateVehicle[playerid][slot][vehHydraulics] = 0;
PrivateVehicle[playerid][slot][vehFrontBumper] = 0;
PrivateVehicle[playerid][slot][vehRearBumper] = 0;
PrivateVehicle[playerid][slot][vehVentRight] = 0;
PrivateVehicle[playerid][slot][vehVentLeft] = 0;
PrivateVehicle[playerid][slot][vehPreis] = preis;
PrivateVehicle[playerid][slot][vehHealth] = 1000.0;
PrivateVehicle[playerid][slot][vehNeonID] = neon;
PrivateVehicle[playerid][slot][vehTankKM] = 0;
PrivateVehicle[playerid][slot][vehKMStandCount] = 0;
PrivateVehicle[playerid][slot][vehKMStand] = 0;
format(PrivateVehicle[playerid][slot][vehNumberPlate], 16, numberplate);
PrivateVehicle[playerid][slot][vehID] = CreateVehicleEx(PrivateVehicle[playerid][slot][modelid], PrivateVehicle[playerid][slot][vehPosX], PrivateVehicle[playerid][slot][vehPosY], PrivateVehicle[playerid][slot][vehPosZ], PrivateVehicle[playerid][slot][vehPosA], PrivateVehicle[playerid][slot][vehColor1], PrivateVehicle[playerid][slot][vehColor2], -1, false);
new playerName[MAX_PLAYER_NAME+1], nPlate[32], cutName[24+1];
GetPlayerName(playerid, playerName, sizeof(playerName));
strmid(cutName, playerName, 0, 1, sizeof(cutName));
format(nPlate, sizeof(nPlate), "%s",GetName(playerid));
SetVehicleNumberPlate(PrivateVehicle[playerid][slot][vehID], nPlate);
SetVehicleHealth(PrivateVehicle[playerid][slot][vehID], PrivateVehicle[playerid][slot][vehHealth]);
strdel(mainQuery, 0, sizeof(mainQuery));
strcat(mainQuery, "INSERT INTO `script_vehicles` (`vehBesitzer`, `slot`, `modelid`, `vehPosX`, `vehPosY`, `vehPosZ`, `vehPosA`, `vehHealth`, `vehColor1`, `vehColor2`, ");
strcat(mainQuery, "`vehPaintjob`, `vehSpoiler`, `vehHood`, `vehRoof`, `vehSideskirt`, `vehLamps`, `vehNitro`, `vehExhaust`, `vehWheels`, `vehStereo`, `vehHydraulics`, ");
strcat(mainQuery, "`vehFrontBumper`, `vehRearBumper`, `vehVentRight`, `vehVentLeft`, `vehPreis`, `vehNeonID`, `vehNumberPlate`, `vehFuel`, `vehKMStand`, `vehInterior`, ");
strcat(mainQuery, "`vehWorld`) VALUES (");
format(secondQuery, sizeof(secondQuery), "'%s', '%d', '%d', '%f', '%f', '%f', '%f', '%f', '%d', '%d', ",
PrivateVehicle[playerid][slot][vehBesitzer], slot, PrivateVehicle[playerid][slot][modelid], PrivateVehicle[playerid][slot][vehPosX],
PrivateVehicle[playerid][slot][vehPosY], PrivateVehicle[playerid][slot][vehPosZ], PrivateVehicle[playerid][slot][vehPosA],
PrivateVehicle[playerid][slot][vehHealth], PrivateVehicle[playerid][slot][vehColor1], PrivateVehicle[playerid][slot][vehColor2]);
strcat(mainQuery, secondQuery);
format(secondQuery, sizeof(secondQuery), "'%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', ",
PrivateVehicle[playerid][slot][vehPaintjob], PrivateVehicle[playerid][slot][vehSpoiler], PrivateVehicle[playerid][slot][vehHood],
PrivateVehicle[playerid][slot][vehRoof], PrivateVehicle[playerid][slot][vehSideskirt], PrivateVehicle[playerid][slot][vehLamps],
PrivateVehicle[playerid][slot][vehNitro], PrivateVehicle[playerid][slot][vehExhaust], PrivateVehicle[playerid][slot][vehWheels],
PrivateVehicle[playerid][slot][vehStereo], PrivateVehicle[playerid][slot][vehHydraulics]);
strcat(mainQuery, secondQuery);
format(secondQuery, sizeof(secondQuery), "'%d', '%d', '%d', '%d', '%d', '%d', '%s', '%f', '%f', '%d', '%d')",
PrivateVehicle[playerid][slot][vehFrontBumper], PrivateVehicle[playerid][slot][vehRearBumper], PrivateVehicle[playerid][slot][vehVentRight],
PrivateVehicle[playerid][slot][vehVentLeft], PrivateVehicle[playerid][slot][vehPreis], PrivateVehicle[playerid][slot][vehNeonID],
PrivateVehicle[playerid][slot][vehNumberPlate], PrivateVehicle[playerid][slot][vehFuel], PrivateVehicle[playerid][slot][vehKMStand],
PrivateVehicle[playerid][slot][vehInterior], PrivateVehicle[playerid][slot][vehWorld]);
strcat(mainQuery, secondQuery);
mysql_function_query(myCon, mainQuery, false, "", "");
SetVehicleToRespawn(PrivateVehicle[playerid][slot][vehID]);
Vehicle[PrivateVehicle[playerid][slot][vehID]][vehFuel] = VehicleData[vehmodel-400][vehMaxTank];
return slot;
}
}
return -1;
}
case DIALOG_GUTSCHEIN_UBB:
{
if(response)
{
new type = listitem+1, slot;
switch(type)
{
case 1: { slot = CreatePlayerVehicle(playerid, 560, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 2: { slot = CreatePlayerVehicle(playerid, 559, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 3: { slot = CreatePlayerVehicle(playerid, 411, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 4: { slot = CreatePlayerVehicle(playerid, 451, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 5: { slot = CreatePlayerVehicle(playerid, 541, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 6: { slot = CreatePlayerVehicle(playerid, 477, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 7: { slot = CreatePlayerVehicle(playerid, 429, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 8: { slot = CreatePlayerVehicle(playerid, 415, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
case 9: { slot = CreatePlayerVehicle(playerid, 506, -1706.9330,11.5702,3.2606,316.5364,GetName(playerid),0,0,0,0); }
}
if(slot == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Fahrzeug konnte nicht erstellt werden.");
SetPVarInt(playerid, "slotID", slot);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
ShowPlayerDialog(playerid, DIALOG_GUTSCHEIN_UBB2, DIALOG_STYLE_LIST, "Unterbodenbeleichtung", "Blau\nGrün\nWeiss\nPink\nGelb\nRot", "Auswählen", "");
return 1;
}
}
case DIALOG_GUTSCHEIN_UBB2:
{
if(response)
{
new vehSlot = GetPVarInt(playerid, "slotID");
new type = listitem+1;
switch(type)
{
case 1: // Blau
{
PrivateVehicle[playerid][vehSlot][vehNeon1] = CreateDynamicObject(18648, 0, 0, 0, 0, 0, 0, 0);
PrivateVehicle[playerid][vehSlot][vehNeon2] = CreateDynamicObject(18648, 0, 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon1], PrivateVehicle[playerid][vehSlot][vehID], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon2], PrivateVehicle[playerid][vehSlot][vehID], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 2: // Grün
{
PrivateVehicle[playerid][vehSlot][vehNeon1] = CreateDynamicObject(18649, 0, 0, 0, 0, 0, 0, 0);
PrivateVehicle[playerid][vehSlot][vehNeon2] = CreateDynamicObject(18649, 0, 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon1], PrivateVehicle[playerid][vehSlot][vehID], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon2], PrivateVehicle[playerid][vehSlot][vehID], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 3: // Weiß
{
PrivateVehicle[playerid][vehSlot][vehNeon1] = CreateDynamicObject(18652, 0, 0, 0, 0, 0, 0, 0);
PrivateVehicle[playerid][vehSlot][vehNeon2] = CreateDynamicObject(18652, 0, 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon1], PrivateVehicle[playerid][vehSlot][vehID], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon2], PrivateVehicle[playerid][vehSlot][vehID], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 4: // Pink
{
PrivateVehicle[playerid][vehSlot][vehNeon1] = CreateDynamicObject(18651, 0, 0, 0, 0, 0, 0, 0);
PrivateVehicle[playerid][vehSlot][vehNeon2] = CreateDynamicObject(18651, 0, 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon1], PrivateVehicle[playerid][vehSlot][vehID], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon2], PrivateVehicle[playerid][vehSlot][vehID], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 5: // Gelb
{
PrivateVehicle[playerid][vehSlot][vehNeon1] = CreateDynamicObject(18650, 0, 0, 0, 0, 0, 0, 0);
PrivateVehicle[playerid][vehSlot][vehNeon2] = CreateDynamicObject(18650, 0, 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon1], PrivateVehicle[playerid][vehSlot][vehID], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon2], PrivateVehicle[playerid][vehSlot][vehID], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 6: // Rot
{
PrivateVehicle[playerid][vehSlot][vehNeon1] = CreateDynamicObject(18647, 0, 0, 0, 0, 0, 0, 0);
PrivateVehicle[playerid][vehSlot][vehNeon2] = CreateDynamicObject(18647, 0, 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon1], PrivateVehicle[playerid][vehSlot][vehID], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(PrivateVehicle[playerid][vehSlot][vehNeon2], PrivateVehicle[playerid][vehSlot][vehID], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
}
new query[256];
PrivateVehicle[playerid][vehSlot][vehNeonID] = type;
format(query, sizeof(query), "UPDATE `script_vehicles` SET `vehNeonID` = '%d' WHERE `vehBesitzer` = '%s' AND `Slot` = '%d'",type,PrivateVehicle[playerid][vehSlot][vehBesitzer],vehSlot);
mysql_function_query(myCon, query, false, "", "");
SendClientMessage(playerid, COLOR_WHITE, "* Dein Gutschein wurde erfolgreich eingelöst.");
SendClientMessage(playerid, COLOR_WHITE, "* Das Fahrzeug wurde geliefert, Du findest es auf der Map.");
SetPlayerCheckpointEx(playerid, -1706.9330,11.5702,3.2606, 5.0, CP_UBBCAR, INVALID_CHECKPOINT_TYPE);
return 1;
}
}
So sollte es passen.
stock GetPosHinterFahrzeug(vehicleid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
{
if(GetVehicleModel(vehicleid) != 0)
{
new Float:a;
GetVehicleZAngle(vehicleid, a);
GetVehiclePos(vehicleid, x, y, z);
x -= (dist * floatsin(-a, degrees));
y -= (dist * floatcos(-a, degrees));
return true;
}
return false;
}
Zwecks den Random Checkpoints:
Kannst du schon machen, das wird dann aber etws komplizierter bei allen Abfragen. Ich würde dir raten, mach es erst mal ohne random, und wenn das geht kannst du es immernoch anpassen.
Du musst bei CreatePlayerVehicle den Slot returnen. Dann, bei der Auswahl des Fahrzeugs, wo es erstellt wird, speicherst du die Rückgabe von CreatePlayerVehicle in eine Spielervariable.
Und bei der Schleife beim Neon hinzufügen fragst du dann an ob vehSlot == Spielervariable ist.
Falls du mit dem Code nicht klar kommst poste bitte dein CreatePlayerVehicle noch, dann mache ich dir das heute Mittag kurz.