Guten Abend Breadfish
Derzeit versuche ich Tank/Schaden und Kennzeichen in die Datenbank zu speichern und zu laden.
Mein Code dafür sieht bis jetzt nur so aus:
Datenbankbild:
http://imgur.com/a/7Z8lH
Hier weiß ich nicht ob die Einstellung dafür passend ist oder nicht.
So an sich geht es ja nur leider fehlt mir das Tank/Schaden/Kennzeichen System damit Fahrzeuge die gekauft werden auch davon betroffen sind mit dem Tank/Schaden/Kennzeichen-System.
Nun zum Scriptcode:
Forward:
fahrzeugEnum:
Code
enum fahrzeugEnum
{
faid,
besitzer[MAX_PLAYER_NAME],
model,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
Schaden,
kennzeichen,
tank
}
new cInfo[50][fahrzeugEnum];
Alles anzeigen
Public mit eigene Funktion:
Code
public spielerfahrzeug(carid)
{
cInfo[carid][faid]=cache_insert_id();
return 1;
}
carinDB(playerid,carid)
{
new query[128];
format(query,sizeof(query),"INSERT INTO spielerfahrzeuge(besitzer,model,x,y,z,r,Schaden,kennzeichen,tank) VALUES('%i','%i','%f','%f','%f','%f','%i' ,'%i' ,'%i')",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r],cInfo[carid][Schaden],cInfo[carid][kennzeichen],cInfo[carid][tank]);
mysql_pquery(handle,query, "spielerfahrzeug", "d", carid);
return 1;
}
Alles anzeigen
PlayerCar:
Code
PlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r,vschaden,vkenn,vtank)
{
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][faid]!=0)continue;
GetPlayerName(playerid,cInfo[i][besitzer],MAX_PLAYER_NAME);
cInfo[i][c_x] =x;
cInfo[i][c_y] =y;
cInfo[i][c_z] =z;
cInfo[i][c_r] =r;
cInfo[i][model]=modelid;
cInfo[i][faid] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
cInfo[i][Schaden] = vschaden;
cInfo[i][kennzeichen] =vkenn;
cInfo[i][tank] =vtank;
new string[128];
format(string,sizeof(string),"Das Fahrzeug cInfo[%i] wurde erstellt",i);
SendClientMessageToAll(rot,string);
carinDB(playerid,i);
return 1;
}
return 1;
}
Alles anzeigen
Befehl um Fahrzeuge zu erstellen:
Code
ocmd:createcar(playerid,params[])
{
if(!isAdmin(playerid,6))return SendClientMessage(playerid,rot,"Dein Admingrang ist zu niedrig.");
new mID,pID;
if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,rot,"INFO: /createcar[playerid][model]");
if(mID<400||mID>611)return SendClientMessage(playerid,rot,"Ungültiges Model");
new Float:xc,Float:yc,Float:zc,Float:rc;
GetPlayerPos(pID,xc,yc,zc);
GetPlayerFacingAngle(pID,rc);
PlayerCar(pID,mID,xc,yc,zc,rc,Schaden,kennzeichen,tank);
return 1;
}
Alles anzeigen
So sieht der Code für den abschnitt mit dem Autohaus:
new und enum:
Code
new autosOhneMotor[] = {
481,
509,
510
};
enum autohausEnum{
Float:v_x,
Float:v_y,
Float:v_z,
Float:v_r,
v_s,
v_k,
v_t
}
enum autohauscarEnum{
model,
Float:ah_x,
Float:ah_y,
Float:ah_z,
Float:ah_r,
c_preis,
ah_id,
id_x
}
new ahCars[][autohauscarEnum] ={
{411,2516.8420,1698.8502,10.7281,89.2039,60000000,0},
{560,2516.0205,1694.6085,10.7244,89.9459,50000000,0},
{470,2516.0212,1687.2047,10.7218,90.9615,999999999,0},
{415,2507.2310,1688.0667,10.7222,358.2454,60000,0},
{429,2492.5933,1688.0917,10.7217,359.9845,50000,0},
{451,2485.9338,1679.5812,10.7278,0.4211,30000,0}
};
new ahInfo[][autohausEnum]={
{2481.2991,1671.2750,16.3001,95.0682}
};
Alles anzeigen
OnGameModeInit:
Code
//autohausladen:
for(new i=0; i<sizeof(ahCars); i++)
{
ahCars[i][id_x]=AddStaticVehicle(ahCars[i][model],ahCars[i][ah_x],ahCars[i][ah_y],ahCars[i][ah_z],ahCars[i][ah_r],-1,-1);
}
OnPlayerStateChange:
Code
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate==PLAYER_STATE_DRIVER)
{
new vID=GetPlayerVehicleID(playerid);
new vModel=GetVehicleModel(vID);
for(new i=0; i<sizeof(autosOhneMotor); i++)
{
if(autosOhneMotor[i]!=vModel)continue;
new motor,
licht,
alarm,
tueren,
bonnet,
boot,
objective;
//Motor an/ausschalten:
GetVehicleParamsEx(vID,motor,licht,alarm,tueren,bonnet,boot,objective);
SetVehicleParamsEx(vID,1,licht,alarm,tueren,bonnet,boot,objective);
}
for(new i=0; i<sizeof(ahCars); i++)
{
if(ahCars[i][id_x] !=vID)continue;
//Verkaufsprozess:
SetPVarInt(playerid,"buyCarID",i);
new string[500];
format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Kaufen","Nicht kaufen");
break;
}
return 1;
}
return 1;
}
Alles anzeigen
DIALOG_AUTOHAUS:
Code
if(dialogid==DIALOG_AUTOHAUS)
{
if(response)
{
new id=GetPVarInt(playerid,"buyCarID");
if(GetPlayerMoney(playerid)<ahCars[id][c_preis])
{
SendClientMessage(playerid,orange,"Du besitzt nicht das benötige Geld für das Fahrzeug!");
RemovePlayerFromVehicle(playerid);
}
GivePlayerMoney(playerid,-ahCars[id][c_preis]);
PlayerCar(playerid,ahCars[id][model],ahInfo[ahCars[id][ah_id]][v_x],ahInfo[ahCars[id][ah_id]][v_y],ahInfo[ahCars[id][ah_id]][v_z],ahInfo[ahCars[id][ah_id]][v_r],ahInfo[ahCars[id][ah_id]][v_s],ahInfo[ahCars[id][ah_id]][v_k],ahInfo[ahCars[id][ah_id]][v_t]);
SendClientMessage(playerid,türkis,"Sie haben sich ein Autogekauft");
RemovePlayerFromVehicle(playerid);
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,türkis,"Du hast den Kaufvorgang abgebrochen!");
}
}
Alles anzeigen