Nach jedem format (bis auf das letzte) fehlt:
SendClientMessage(pID,COLOR_GRAD1,string);
Beiträge von Jeffry
-
-
pAllowNeon,
fehlt im Enum zu PlayerInfo.Der Befehl muss so aussehen:
if (strcmp("/opark", cmd, true, 10) == 0)
{
if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
{
if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
return 1;
}
new trail_car = GetVehicleTrailer(GetPlayerVehicleID(playerid));
new fcarid = IsAFrakCar(trail_car);
new Float:X,Float:Y,Float:Z,Float:z_rot;
GetVehiclePos(trail_car, X,Y,Z);
GetVehicleZAngle(trail_car, z_rot);
if(IsADtCar(trail_car))
{
new carowner = GetDtCarOwner(trail_car);
printf("carowner: %d", carowner);
new slot = GetDtCarOwnerSlot(carowner,trail_car);
printf("slot: %d", slot);
PlayerCar[carowner][slot][CarPos_x] = X;
PlayerCar[carowner][slot][CarPos_y] = Y;
PlayerCar[carowner][slot][CarPos_z] = Z;
PlayerCar[carowner][slot][CarArrest] = 1;
PlayerCar[carowner][slot][CarRotate] = z_rot;
printf("Abgeschleppt");
new fkasse = 2000 + random(2999);
FraktionsKasse[23] += fkasse;
if(carowner != 555)
{
OnPlayerCarUpdate(carowner);
SendClientMessage(carowner, COLOR_WHITE, " Ihr Fahrzeug wurde abgeschleppt, Fahren zu zur Ordnungsamt Base, um ihr auto wieder Freizukaufen.");
PlayerInfo[carowner][pRest] = 1;
SetTimerEx("PlayerCarSpawn",1000,0,"i",carowner);
}
DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
}
else if(fcarid != -1)
{
FactionCars[fcarid][fPos][0] = X;
FactionCars[fcarid][fPos][1] = Y;
FactionCars[fcarid][fPos][2] = Z;
FactionCars[fcarid][fPos][3] = z_rot;
DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
//Hier weitere Dinge...
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du hast kein oder kein erlaubtes Fahrzeug dabei!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
}
return 1;
} -
Naja, wenn du mehrere Fahrzeuge in einer Garage hast, dann ja. Ein enum für die geparkten Fahrzeuge, und eins für die Garagen. Dann gibst du den geparkten Fahrzeugen die Garagen-ID mit, damit du weißt, wo es drin ist.
-
begehbar es hat oben am Dach einen Pfeil der nach unten zeigt
Vielleicht das hier? 12843 -
Laut diesem Code weist du dem Spieler gar keinen Skin zu. Das sind nur NPCs.
Weist du dem Spieler den Skin beim Login zu, oder wo machst du das? -
Könnte daran gelegen haben, dass da ein strtok wohl fehlt.
Versuche es mal so:
Spoiler anzeigen if(strcmp(cmd, "/heal", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /heal [ID/NAME] [Preis]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /heal [ID/NAME] [Preis]");
return 1;
}
moneys = strval(tmp);
if(moneys < 1 || moneys > 1000)
{
SendClientMessage(playerid, COLOR_GREY, " Behandlungspreis nicht weniger als: 1€ und höher als 3000€ !"); return 1;
}
if (giveplayerid == playerid)
{
SendClientMessage(playerid, COLOR_GRAD1, " Du kannst dich leider nicht selber Heilen!");
return 1;
}
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new giveambu = GetPlayerVehicleID(giveplayerid);
new playambu = GetPlayerVehicleID(playerid);
if(gTeam[playerid] == TEAM_CYAN || PlayerInfo[playerid][pMember]== 4||PlayerInfo[playerid][pLeader] == 4 )//model
{
if (IsAnAmbulance(playambu) && playambu == giveambu)
{
new Float:tempheal;
GetPlayerHealth(giveplayerid,tempheal);
if(tempheal >= 160)
{
SendClientMessage(playerid, TEAM_GREEN_COLOR," Diese Person ist schon Geheilt.");
return 1;
}
format(string, sizeof(string), "~y~Du heilst: ~n~~w~%s~n~~g~€%d", giveplayer,moneys);
GameTextForPlayer(playerid, string, 5000, 1);
GivePlayerMoney(playerid,moneys);
GivePlayerMoney(giveplayerid,-moneys);
new hp = 0;
if(PlayerInfo[playerid][pPainPerk] > 0)
{
hp = 20 * PlayerInfo[playerid][pPainPerk];
hp += 100;
SetPlayerHealth(giveplayerid, hp);
}
else
{
hp = 100;
SetPlayerHealth(giveplayerid, 100);
}
PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
PlayerPlaySound(giveplayerid, 1150, 0.0, 0.0, 0.0);
format(string, sizeof(string), "Du wurdest für €%d geheilt.",moneys);
SendClientMessage(giveplayerid, TEAM_GREEN_COLOR,string);
if(STDPlayer[giveplayerid] > 0)
{
STDPlayer[giveplayerid] = 0;
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "* Du bist nun nicht mehr an STD erkrankt. Die Ärzte konnten dich retten! !");
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Nicht im Rettungswagen / Rettungshelikopter!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen !");
return 1;
}
}
}
else
{
format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
-
/parken zu machen als Befehl
mit ein Enum zu arbeiten
Die beiden Dinge sind zwei völlig unterschiedliche Teile, wenn du in einem enum die Werte speicherst, brauchst du trotzdem einen Befehl.Die Frage für dich ist nur: Mit oder ohne enum. An sich ist das egal, nur mit einem enum (und was dazu gehört) ist es sicherlich strukturierter und besser aufgebaut. Daher würde ich dir dazu raten.
-
Beim Laden:
VehicleInfo[index][vID] = index;
zu:
VehicleInfo[index][vID] = Auto;Und beim anderen Laden:
VehicleInfo[Auto][vID] = ID;
zu:
VehicleInfo[vehicleid][vID] = Auto;Das wird nicht viel ändern, aber dann passt der Teil schonmal.
Poste dann bitte mal den MySQL Log, der kommt, wenn du das Auto abholen willst. Mache dazu den mysql_debug an. -
(l == SPRACHE_GERMAN) ? (SendClientMessage(playerid, COLOR_RED, errmsg[0])) : (SendClientMessage(playerid, COLOR_RED, errmsg[1]));
Das ist keine Zulässige Anweisung. Das müsste in einem Parameter stehen, oder in einem return Wert (etc). Aber als Anweisung (expression) ist es nicht möglich.Nutze einfach:
if(!response)
{
if(l == SPRACHE_GERMAN) SendClientMessage(playerid, 1, errmsg[0]);
else SendClientMessage(playerid, 1, errmsg[1]);
Kick(playerid);
return false;
}
Das ist auch wesentlich leichter zu lesen. Du solltest dir nicht angewöhnen alles in eine Zeile zu schreiben, das ist ein ganz schlechter Programmierstil. -
Dann schreibe das Speichern so:
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new Spielerdatei[64];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
dini_IntSet(Spielerdatei,"Führerschein",GetPVarInt(playerid,"Führerschein"));
dini_IntSet(Spielerdatei,"WantedLevel",GetPlayerWantedLevel(playerid));
dini_IntSet(Spielerdatei,"Skin",GetPVarInt(playerid,"Skin"));
}
return 1;
}Und bei OnPlayerModelSelection fügst du nach SetPlayerSkin das ein:
SetPVarInt(playerid,"Skin",modelid); -
Ok, zu den obigen Änderungen, die ich dir bereits gegeben habe, kommt jetzt das hier (mach zuerst das vom ersten Post, falls noch nicht gemacht).
Spoiler anzeigen NeonObject[2],
Wieder aus dem enum entfernen.Spoiler anzeigen new PlayerCarNeon[MAX_PLAYERS][MaxVeh][4];
Nach dem enum irgendwo einfügen.Spoiler anzeigen Der Dialog:
if(dialogid == neondialog)
{
if(response)
{
new vID = GetPlayerVehicleID(playerid);
for(new slot = 0; slot < MaxVeh; slot++)
{
if(Dtc_PlayerHaveCar[playerid][slot])
{
if(PlayerCar[playerid][slot][CarId] == vID)
{
if(listitem != 12)
{
SendClientMessage(playerid, 0xFFFFFFAA, "Neonlichter installiert!");
SetupPlayerCarNeon(playerid, slot, 0); //Erst die alten entfernen, falls welche dran sind.
}
else SendClientMessage(playerid, 0xFFFFFFAA, "Neonlichter entfernt!");
SetupPlayerCarNeon(playerid, slot, listitem+1);
OnPlayerCarUpdate(playerid);
return 1;
}
}
}
}
return 1;
}Spoiler anzeigen Unten im Gamemode:
stock SetupPlayerCarNeon(playerid, slot, id)
{
new vID = GetPlayerVehicleID(playerid);
switch(id)
{
case 1:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18648,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18648,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], , -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 2:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18647,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18647,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 3:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18649,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18649,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 4:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18652,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18652,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 5:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18651,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18651,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 6:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18650,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18650,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 7:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18648,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18648,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][2] = CreateObject(18649,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][3] = CreateObject(18649,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][2], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][3], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 8:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18648,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18648,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][2] = CreateObject(18652,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][3] = CreateObject(18652,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][2], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][3], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 9:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18647,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18647,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][2] = CreateObject(18652,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][3] = CreateObject(18652,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][2], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][3], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 10:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18647,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18647,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][2] = CreateObject(18650,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][3] = CreateObject(18650,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][2], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][3], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 11:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18649,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18649,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][2] = CreateObject(18652,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][3] = CreateObject(18652,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][2], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][3], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
case 12:
{
PlayerCarNeon[playerid][slot][0] = CreateObject(18652,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][1] = CreateObject(18652,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][2] = CreateObject(18650,0,0,0,0,0,0);
PlayerCarNeon[playerid][slot][3] = CreateObject(18650,0,0,0,0,0,0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][0], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][1], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][2], vID, -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachObjectToVehicle(PlayerCarNeon[playerid][slot][3], vID, 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
default:
{
if(PlayerCar[playerid][slot][NeonID] > 0)
{
DestroyObject(PlayerCarNeon[playerid][slot][0]);
DestroyObject(PlayerCarNeon[playerid][slot][1]);
if(PlayerCar[playerid][slot][NeonID] > 6)
{
DestroyObject(PlayerCarNeon[playerid][slot][2]);
DestroyObject(PlayerCarNeon[playerid][slot][3]);
}
}
PlayerCar[playerid][slot][NeonID] = 0;
return 1;
}
}
PlayerCar[playerid][slot][NeonID] = id;
return 1;
}Spoiler anzeigen Und diese Funktionen so abändern:
Function PlayerCarSpawn(playerid,Slot)
{
if(IsPlayerConnected(playerid))
{
if(Dtc_PlayerHaveCar[playerid][Slot])
{
PlayerCar[playerid][Slot][CarId] = CreateVehicle(PlayerCar[playerid][Slot][CarModel],PlayerCar[playerid][Slot][CarPos_x],PlayerCar[playerid][Slot][CarPos_y],PlayerCar[playerid][Slot][CarPos_z],PlayerCar[playerid][Slot][CarRotate],PlayerCar[playerid][Slot][CarC1],PlayerCar[playerid][Slot][CarC2], 60000);/*vehicle spawn*/
CarTuning(playerid,Slot);
new strings[15];
new name[MAX_PLAYER_NAME], str[128];
GetPlayerName(playerid, name, sizeof name);
format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
//format(strings, sizeof(strings), "%s", dini_Get(str, "CarPlate"));
format(strings, sizeof(strings), "%s", dini_Get(str, "Plate"));
SetVehicleNumberPlate(PlayerCar[playerid][Slot][CarId], strings);
SetVehicleToRespawn(PlayerCar[playerid][Slot][CarId]);
format(PlayerCar[playerid][x][Plate], 64, strings);
SetupPlayerCarNeon(playerid, x, PlayerCar[playerid][Slot][NeonID]);
}
}
}Spoiler anzeigen Function OnPlayerBuyCar(playerid,Model,Preis,Autohaus)//CARSYS
{
if(IsPlayerConnected(playerid) && !Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
{
CallRemoteFunction("M_GivePlayerMoney","id",playerid,-Preis);
if(Autohaus == 2) //Billig Autohaus
{
SBizzInfo[1][sbTill] += Preis/4; //Billig Autohaus
}
if(Autohaus == 3) // luxus
{
SBizzInfo[0][sbTill] += Preis/4; // luxus
}
/*if(Autohaus == 7) // VIP-Autohaus
{
SBizzInfo[2][sbTill] += Preis/10; // VIP-Autohaus
}*/
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Du hast dir ein Auto gekauft.");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Gehe zu der KFZ Stelle und hole dir ein Kennzeichen.");
SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Fahre vorsichtig..Und denk an die StraßenVerkehrsOrdnung!");
SendClientMessage(playerid,COLOR_GRAD2,"Navigation gesetzt!");
SetParkPlatz(playerid,Autohaus);
new name[MAX_PLAYER_NAME], str[128];
GetPlayerName(playerid, name, sizeof name);
format(str, sizeof str, "/Autos/%s%d.dtcar", name,Dtc_PlayerKey[playerid]);
new File: hFile = fopen(str, io_write);
if (hFile)
{
new var[32];
format(var, 32, "CarId=0\n");fwrite(hFile, var);
format(var, 32, "CarModel=%d\n",Model);fwrite(hFile, var);
format(var, 32, "CarPos_x=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_x]);fwrite(hFile, var);
format(var, 32, "CarPos_y=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_y]);fwrite(hFile, var);
format(var, 32, "CarPos_z=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarPos_z]);fwrite(hFile, var);
format(var, 32, "CarRotate=%.3f\n",PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarRotate]);fwrite(hFile, var);
format(var, 32, "CarNitro=0\n");fwrite(hFile, var);
format(var, 32, "CarHyd=0\n");fwrite(hFile, var);
format(var, 32, "CarWheel=0\n");fwrite(hFile, var);
format(var, 32, "CarAusp=0\n");fwrite(hFile, var);
format(var, 32, "CarSideL=0\n");fwrite(hFile, var);
format(var, 32, "CarSideR=0\n");fwrite(hFile, var);
format(var, 32, "CarFB=0\n");fwrite(hFile, var);
format(var, 32, "CarRB=0\n");fwrite(hFile, var);
format(var, 32, "CarSpoiler=0\n");fwrite(hFile, var);
format(var, 32, "CarRoof=0\n");fwrite(hFile, var);
format(var, 32, "CarHood=0\n");fwrite(hFile, var);
format(var, 32, "CarVents=0\n");fwrite(hFile, var);
format(var, 32, "CarLamps=0\n");fwrite(hFile, var);
format(var, 32, "CarPJ=-1\n");fwrite(hFile, var);
format(var, 32, "CarC1=-1\n");fwrite(hFile, var);
format(var, 32, "CarC2=-1\n");fwrite(hFile, var);
format(var, 32, "Preis=%d\n",Preis);fwrite(hFile, var);
format(var, 32, "CarArrest=0\n");fwrite(hFile, var);
format(var, 32, "Plate=[GDG]\n");fwrite(hFile, var);
format(var, 32, "NeonID=0\n");fwrite(hFile, var);
fclose(hFile);
}
OnPlayerCarLogin(playerid);
}
}Ich hoffe, dass da keine Fehler drin sind, da ich es natürlich nicht kompilieren konnte. Falls welche drin sind, oder falls es nicht funktioniert, sag Bescheid.
-
Wenn du den Befehl eingibst, dann sollte der print eigentlich kommen, sonst würde SetPlayerPos nicht aufgerufen werden, somit würdest du auch nicht teleportiert werden.
Sicher, dass du den Code kompiliert hast, und den Server neu gestartet hast? -
Dann poste bitte mal was im Server Log steht, wenn du es so schreibst und den Befehl dann eingibst:
if(strcmp(cmd, "/exitgarage", true) == 0 || strcmp(cmd, "/exitga", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new Seat[MAX_PLAYERS], InCar[MAX_PLAYERS];
new i = GetPlayerVirtualWorld(playerid), vehicleid;
if(i == 0) return SendClientMessage(playerid, GREY, "You are not inside a garage.");
if(GarageInfo[i][GarageLocked]) return SendClientMessage(playerid, GREY, "You've been locked inside the garage, tough luck.");
if(IsPlayerInRangeOfPoint(playerid, 30.0, GarageInfo[i][GarageInsideX], GarageInfo[i][GarageInsideY], GarageInfo[i][GarageInsideZ]) && GetPlayerVirtualWorld(playerid) == i)
{
if(GetPlayerState(playerid) == 2)
{
vehicleid = GetPlayerVehicleID(playerid);
for(new j = 0; j < MAX_PLAYERS; j++)
{
if(IsPlayerInVehicle(j, vehicleid))
{
InCar[j] = vehicleid;
Seat[j] = GetPlayerVehicleSeat(playerid);
SetPlayerInterior(j, 0);
SetPlayerVirtualWorld(j, 0);
SetPVarInt(j, "InGarage", 0);
}
}
SetVehiclePos(vehicleid, GarageInfo[i][GarageExitX], GarageInfo[i][GarageExitY], GarageInfo[i][GarageExitZ]);
SetVehicleZAngle(vehicleid, GarageInfo[i][GarageExitA]);
SetVehicleWorld(vehicleid, 0);
SetVehicleInterior(vehicleid, 0);
}
printf("Position: %f / %f / %f / %f", GarageInfo[i][GarageExitX], GarageInfo[i][GarageExitY], GarageInfo[i][GarageExitZ], GarageInfo[i][GarageExitA]);
SetPlayerPosEx(playerid, GarageInfo[i][GarageExitX], GarageInfo[i][GarageExitY], GarageInfo[i][GarageExitZ]);
SetPlayerFacingAngle(playerid, GarageInfo[i][GarageExitA]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
if(vehicleid != 0)
{
for (new j = 0; j < MAX_PLAYERS; j++)
{
if (InCar[j] == 0) continue;
if (InCar[j] == vehicleid)
{
PutPlayerInVehicle(j, vehicleid, Seat[j]);
}
}
PutPlayerInVehicle(playerid, vehicleid, 0);
}
SetPVarInt(playerid, "InGarage", 0);
return 1;
}
else
{
SendClientMessage(playerid, GREY, "You are not near a garage exit.");
return 1;
}
}
return 1;
} -
Dann zeige bitte deinen Code von OnPlayerRequestSpawn und OnPlayerSpawn.
-
Map = Selbsterstellte Objekte?
Oder die GTA:SA Map, die bereits existiert? -
Ja, so in etwa.
i ist der Zähler über den Index von lspdcar, also dem Array. Der Zähler geht einfach von 0 bis sizeof davon.
Daher muss man auf den Index des Arrays zugreifen, da dort der Wert drin steht. -
Überall außer im Schleifen-Kopf (for...) musst du
i
zu:
lspdcar[i]
ändern. -
-
if(pickupid == skinChangePickup)
Zu
if(pickupid == pickup)Der Rest passt soweit.
-
Dann musst du das bei dem existierenden OnPlayerPickUpPickup einfügen:
if(pickupid == skinChangePickup)
{
ShowModelSelectionMenu(playerid, skinlist, "Select Skin");
return 1;
}Das Pickup musst du natürlich erstellen und mit new unter den Includes deklarieren, sonst geht es nicht.
Das Pickup erstellst du mit CreatePickup, Typ 1.
https://wiki.sa-mp.com/wiki/CreatePickup