Hallo Ihr Lieben,
ich versuche momentan ein Problem in meinem Script zu lösen was momentan aber nicht einfach ist da ich beim Compailen mehrere Warnings bekomme
versuche ich das Script auf dem Server auszuführen gelingt dies auch beim ersten Mal beim ich kann auch ein FraktionsAuto in erstellen sobald ich ein zweites Auto erstelle restartet der Server
Die Autos werden aber auch nicht in der Datenbank gespeichert.
Ich sende euch hier mal das Script rein sowie die Codes nach dem Compilen und die MySQL Log.
Ich hoffe Ihr könnt mir helfen das ich diese Fehler behebe.
MfG
Chris Jewels
//Includes
#include <a_samp>
#include <ocmd>
#include <sscanf2>
#include <a_mysql>
//MySQL
#define db_host "127.0.0.1"
#define db_user "ni1113669_1_DB"
#define db_pass "password"
#define db_db "ni1113669_1_DB"
//farben
#define Color_Blue 0x0000FFFF
#define Color_Green 0x00FF00FF
#define Color_Red 0xFF0000FF
#define Color_Orange 0xFFB400FF
#define Color_Black 0x0F0000FF
#define Color_White 0xFFFFFFFF
//Dialoge
#define Dialog_Register 50
#define Dialog_Login 51
#define Dialog_Teles 100
#define Dialog_Hilfe 101
#define MAX_FRAC_VEHICLES 10
//enums
enum PlayerInfos{
eingeloggt,
level,
db_id,
alevel,
fraktion,
frang,
spawnchange
}
enum buildingsEnum{
Float:b_x,
Float:b_y,
Float:b_z,
Float:bi_x,
Float:bi_y,
Float:bi_z,
b_interior
}
enum SpielerAutos{
sa_vID,
sa_model,
besitzer,
Float:sa_x,
Float:sa_y,
Float:sa_z,
Float:sa_r,
db_id
}
enum FrakEnum{
f_name[128],
Float:f_x,
Float:f_y,
Float:f_z,
Float:f_r,
f_inter,
f_world,
f_color
}
enum playerEnum {
pFraction
};
enum fracVehEnum {
e_modelID,
Float:e_x,
Float:e_y,
Float:e_z,
Float:e_a,
e_color1,
e_color2,
e_fracID,
e_vID
};
//Globale Variable
new sqlverbindung;
new PlayerInfo[MAX_PLAYERS][playerEnum];
new fracVehicle[MAX_FRAC_VEHICLES][fracVehEnum];
new sInfo[MAX_PLAYERS][PlayerInfos];
new cInfo[300][SpielerAutos];
new fInfo[][FrakEnum] = {
{"Zivilist", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"Polizei", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"LKA", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"OAmt", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"Rettungsdienst", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"Bundeswehr", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"Regierung", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White},
{"Reporter", 0.0, 0.0, 0.0, 0.0, 0, 0, Color_White}
};
new ShopsInfo[][buildingsEnum]={
{1481.1730,-1771.6017,18.7958,1727.0382,-1637.8347,20.2229,18},//Stadthalle
{1369.0007,-1279.6278,13.5469,316.1964,-170.2960,999.5938,6}//AmuuNation Hauptstraße
};
//Forwards
forward OnUserCheck(playerid);
forward OnPasswordResponse(playerid);
forward carSavedToDB(carid);
forward OnPlayerCarsLoad(playerid);
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
mysql_log(LOG_ERROR | LOG_WARNING);
sqlverbindung = mysql_connect("127.0.0.1", "ni1113669_1_DB", "SEgugm83", "ni1113669_1_DB");
LoadFracVehicles();
SetTimer("SaveAllFracVehs", 60000, true); //Timer wird alle 60 Sekunden ausgeführt
return 1;
}
public OnFilterScriptExit()
{
SaveAllFracVehs();
mysql_close(sqlverbindung);
return 1;
}
#else
main()
{
print("Dieses Script ist erstellt worden von GamerJewels");
}
#endif
public OnGameModeInit()
{
SetGameModeText("GJ Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
DisableInteriorEnterExits();
EnableStuntBonusForAll(0);
ShowPlayerMarkers(0);
//Öffentliche Gebäude
for(new i=0; i<sizeof(ShopsInfo); i++)
{
CreatePickup(1239,1,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z]);
Create3DTextLabel("Zum Betreten N drücken",Color_Black,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z],10,0,1);
}
//MySQL
sqlverbindung = mysql_connect(db_host,db_user,db_db,db_pass);
return 1;
}
public OnGameModeExit()
{
mysql_close(sqlverbindung);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1449.5422,-807.5038,84.2773);
SetPlayerCameraPos(playerid, 1449.4301,-805.4034,84.2471);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnUserCheck (playerid)
{
new num_rows,num_fields;
cache_get_data(num_rows,num_fields,sqlverbindung);
if(num_rows==0)
{
//Registrierung
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"Registrierung","Dein Account wurde nicht in der Datenbank gefunden!\nGib bitte dein gewünschtes Passwort ein:","Okay","Abbrechen");
}
else
{
//Login
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden!\nBitte gebe dein Passwort nun ein:","Okay","Abbrechen");
}
return 1;
}
public OnPlayerConnect(playerid)
{
//Login/Register
new name[MAX_PLAYER_NAME],query[128];
GetPlayerName(playerid,name,sizeof(name));
format(query,sizeof(query),"SELECT id FROM user WHERE username='%s'",name);
mysql_function_query(sqlverbindung,query,true,"OnUserCheck","i",playerid);
return 1;
//Spielerfarben setzen
SetPlayerColor(playerid,Color_White);
return 1;
}
savePlayer(playerid)
{
if(sInfo[playerid][eingeloggt]==0)return 1;
//Speichern level,money
new query[256];
format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',frang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][frang],sInfo[playerid][spawnchange],sInfo[playerid][db_id]);
mysql_function_query(sqlverbindung,query,false,"","");
return 1;
}
resetPlayer(playerid)
{
for(new i=0; i<sizeof(sInfo[]);i++)
{
sInfo[playerid][PlayerInfos:i]=0;
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
for(new i=0; i<sizeof(cInfo);i++)
{
if(cInfo[i][sa_vID]==0)continue;
if(cInfo[i][besitzer]!=sInfo[playerid][db_id])continue;
GetVehiclePos(cInfo[i][sa_vID],cInfo[i][sa_x],cInfo[i][sa_y],cInfo[i][sa_z]);
GetVehicleZAngle(cInfo[i][sa_vID],cInfo[i][sa_r]);
new query[128];
format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][sa_x],cInfo[i][sa_y],cInfo[i][sa_z],cInfo[i][sa_r],cInfo[i][db_id]);
mysql_function_query(sqlverbindung,query,false,"","");
DestroyVehicle (cInfo[i][sa_vID]=0);
}
savePlayer(playerid);
resetPlayer(playerid);
return 1;
}
isPlayerInFrak(playerid, f_id){
if(sInfo[playerid][fraktion]==f_id)return 1;
return 0;
}
public OnPlayerSpawn(playerid)
{
if(!isPlayerInFrak(playerid,0)){
if(sInfo[playerid][spawnchange]==1)
{
new fID;
fID = sInfo[playerid][fraktion];
SetPlayerPos(playerid,fInfo[fID][f_x],fInfo[fID][f_y],fInfo[fID][f_z]);
SetPlayerFacingAngle(playerid,fInfo[fID][f_r]);
SetPlayerInterior(playerid,fInfo[fID][f_inter]);
SetPlayerVirtualWorld(playerid,fInfo[fID][f_world]);
SetPlayerColor(playerid,fInfo[fID][f_color]);
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public carSavedToDB(carid)
{
cInfo[carid][db_id]=cache_insert_id(sqlverbindung);
return 1;
}
saveCarToDB(playerid,carid)
{
new query[123];
format(query,sizeof(query),"Insert Into autos (besitzer,model,x,y,z,r)VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][db_id],cInfo[carid][sa_model],cInfo[carid][sa_x],cInfo[carid][sa_y],cInfo[carid][sa_z],cInfo[carid][sa_r]);
mysql_function_query(sqlverbindung,query,true,"carSavedToDB","i",carid);
return 1;
}
createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
{
for(new i=0; i<sizeof(cInfo);i++)
{
if(cInfo[i][sa_vID]!=0)continue;
cInfo[i][besitzer]=sInfo[playerid][db_id];
cInfo[i][sa_x]=x;
cInfo[i][sa_y]=y;
cInfo[i][sa_z]=z;
cInfo[i][sa_r]=r;
cInfo[i][sa_model]=modelid;
cInfo[i][sa_vID] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
new pID,string[128];
format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.Und gehört nun dem Spieler)",i);
SendClientMessage(pID,Color_Green,string);
SendClientMessage(playerid,Color_Green,"Das Auto wurde für dich erstellt");
saveCarToDB(playerid,i);
return 1;
}
return 1;
}
getPlayerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
//Adminbefehle
isAdmin(playerid,a_level) //Hiermit überprüfen wir das Adminlevel der Spieler!
{
if(sInfo[playerid][alevel]>=a_level)return 1;
return 0;
}
ocmd:fferstellen(playerid, params[])
{
if(!isAdmin(playerid,5))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
//Zuerst fragen wir ab, ob wir noch Fahrzeuge erstellen können
if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SendClientMessage(playerid, 0xFF0000FF, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_VEHICLES) erreicht.");
//Wir deklarieren die benötigten temporären Variablen.
new tmp[20], idx, model, fID, color1 = -1, color2 = -1;
//Anschließend teilen wir mit strtok die eingegebenen Paramater auf und wandeln sie in eine Zahl um.
//Falls etwas falsches eingegeben wurde, geben wir eine entsprechende Meldung zurück.
tmp = strtok(params, idx);
if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]");
model = strval(tmp);
//Eine solche Abfrage kann man auch für nachfolgende FraktionsID (fID) machen, falls gewünscht.
if(model < 400 || model > 611) return SendClientMessage(playerid, 0xFF0000FF, "Error: Model ID existiert nicht.");
tmp = strtok(params, idx);
if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]");
fID = strval(tmp);
tmp = strtok(params, idx);
if(strlen(tmp) && IsNumeric(tmp)) color1 = strval(tmp);
tmp = strtok(params, idx);
if(strlen(tmp) && IsNumeric(tmp)) color2 = strval(tmp);
//Sind alle Parameter korrekt übergeben worden, dann suchen wir uns einen freien Index in den wir das Fraktions-Fahrzeug speichern können.
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Frei:
if(fracVehicle[i][e_vID] == 0)
{
//Daten werden übergeben
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
fracVehicle[i][e_modelID] = model;
fracVehicle[i][e_x] = x;
fracVehicle[i][e_y] = y;
fracVehicle[i][e_z] = z;
fracVehicle[i][e_a] = a;
fracVehicle[i][e_color1] = color1;
fracVehicle[i][e_color2] = color2;
fracVehicle[i][e_fracID] = fID;
//und anschließend in die Datenbank geschrieben.
new query[256];
format(query, sizeof(query), "INSERT INTO FracVehicles (ID, ModelID, x, y, z, a, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
i, fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID]);
mysql_tquery(sqlverbindung,query);
//Zuletzt wird dann noch das Fahrzeug erstellt und der Spieler in das Fahrzeug gesetzt.
fracVehicle[i][e_vID] = CreateVehicle(fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], -1);
PutPlayerInVehicle(playerid, fracVehicle[i][e_vID], 0);
return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug gespeichert.");
}
}
return SendClientMessage(playerid, 0xFF0000FF, "Error: Limit für Fraktions-Fahrzeuge erreicht.");
}
ocmd:ffloeschen(playerid, params[])
{
//Wir deklarieren die benötigte temporäre Variable.
new vid;
if(!isAdmin(playerid,5))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
//Wenn der Spieler keine Vehicle-ID eingibt wird die gelöscht, in der sich der Spieler befindet,
//ansonsten die eingegebene ID.
if(!IsNumeric(params) || !strlen(params)) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nutze: /ffloeschen [Vehicle ID]");
vid = strval(params);
if(vid <= 0) return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Eingegebene ID und die des Fraktions-Fahrzeugs stimmen überein.
if(fracVehicle[i][e_vID] == vid)
{
//Daten werden entfernt
fracVehicle[i][e_modelID] = 0;
fracVehicle[i][e_x] = 0.0;
fracVehicle[i][e_y] = 0.0;
fracVehicle[i][e_z] = 0.0;
fracVehicle[i][e_a] = 0.0;
fracVehicle[i][e_color1] = 0;
fracVehicle[i][e_color2] = 0;
fracVehicle[i][e_fracID] = -1;
//und anschließend in der Datenbank gelöscht.
new query[128];
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = '%d'", i);
mysql_tquery(sqlverbindung, query);
DestroyVehicle(fracVehicle[i][e_vID]);
fracVehicle[i][e_vID] = 0;
return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug gelöscht.");
}
}
return SendClientMessage(playerid, 0xFF0000FF, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
}
ocmd:parken(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Du bist in keinem Fahrzeug.");
new vehicleid = GetPlayerVehicleID(playerid);
if(SaveFracVehCheck(vehicleid)) return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug geparkt.");
else return SendClientMessage(playerid, 0xFF0000FF, "Dieses Fahrzeug kann nicht geparkt werden.");
}
ocmd:makeleader(playerid,params[])
{
if(!isAdmin(playerid,5))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
new pID, fID;
if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,Color_Red,"INFO:/makeleader [playerid][fraktionsid]");
if(fID >= sizeof(fInfo))return SendClientMessage(playerid,Color_Red,"FEHLER:Fraktion existiert nicht.");
sInfo[pID][fraktion] = fID;
sInfo[pID][alevel] = 6;
new string[128];
format(string,sizeof(string),"%s hat dich zum Leader der Fraktion %s gemacht",getPlayerName(playerid),fInfo[fID][f_name]);
SendClientMessage(pID,Color_Green,string);
SendClientMessage(playerid,Color_Green,"Du hast ein Spieler zum Leader einer Fraktion gemacht!");
return 1;
}
ocmd:setadmin(playerid,params[])
{
if(!isAdmin(playerid,6))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
new pID,a_level;
if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,Color_Red,"INFO: /setadmin [playerid] [adminlevel]");
sInfo[pID][alevel]=a_level;
savePlayer (pID);
SendClientMessage(pID,Color_Orange,"Dein Adminrang wurde von Spieler... geändert");
SendClientMessage(playerid,Color_Orange,"Du hast den Adminrang von Spieler... geändert");
return 1;
}
ocmd:pvehicle (playerid, params[])
{
if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
new mID,pID;
if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,Color_Red,"Info: /playercar [playerid][Wähle eine ID zwischen 400-611]");
if(mID<400||mID>611)return SendClientMessage(playerid,Color_Red,"Info: /playercar [playerid] [Wähle eine ID zwischen 400-611]");
new Float:x,Float:y,Float:z,Float:r;
GetPlayerPos(pID,x,y,z);
GetPlayerFacingAngle(pID,r);
createPlayerCar(pID,mID,x,y,z,r);
return 1;
}
ocmd:vehicle (playerid, params[])
{
if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
new mID;
if(sscanf(params,"i",mID))return SendClientMessage(playerid,Color_Red,"Info: /vehicle [Wähle eine ID zwischen 400-611]");
if(mID<400||mID>611)return SendClientMessage(playerid,Color_Red,"Info: /vehicle [Wähle eine ID zwischen 400-611]");
new Float:x,Float:y,Float:z,Float:r;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,r);
CreateVehicle(mID,x,y,z,r,-1,-1,-1);
return 1;
}
ocmd:deletecar(playerid,params[])
{
if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Color_Red,"INFO: Du bist in keinem Fahrzeug");
DestroyVehicle(GetPlayerVehicleID(playerid));
return 1;
}
/*
ocmd:deletecar(playerid,params[])
{
if(!isAdmin(playerid,2))return SendClientMessage(playerid,Color_Red,"Du bist kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Color_Red,"INFO: Du bist in keinem Fahrzeug");
DestroyVehicle(GetPlayerVehicleID(playerid));
return 1;
}
*/
ocmd:restart(playerid,params[])
{
if(!isAdmin(playerid,3))return SendClientMessage(playerid,Color_Red,"Du bis kein GJ Teammitglied oder dein Admin Level ist zu niedrig");
SendRconCommand("gmx");
return 1;
}
//Spielerbefehle
ocmd:spawnchange(playerid,params[])
{
if(isPlayerInFrak(playerid,0))return SendClientMessage(playerid,Color_Red,"FEHLER:Du bist in keiner Fraktion!");
if(sInfo[playerid][spawnchange]==0)
{
sInfo[playerid][spawnchange]=1;
}
if(sInfo[playerid][spawnchange]==1)
{
sInfo[playerid][spawnchange]=0;
}
SendClientMessage(playerid,Color_Green,"Dein Spawn wurde erfolgreich geändert");
return 1;
}
ocmd:enter(playerid,params[])
{
for (new i=0; i<sizeof(ShopsInfo);i++)
{
if(!IsPlayerInRangeOfPoint(playerid,2,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z]))continue;
SetPlayerPos(playerid,ShopsInfo[i][bi_x],ShopsInfo[i][bi_y],ShopsInfo[i][bi_z]);
SetPlayerInterior(playerid,ShopsInfo[i][b_interior]);
SetPlayerVirtualWorld(playerid,i);
return 1;
}
return 1;
}
ocmd:exit(playerid,params[])
{
for (new i=0; i<sizeof(ShopsInfo);i++)
{
if(GetPlayerVirtualWorld(playerid)!=i)continue;
if(!IsPlayerInRangeOfPoint(playerid,2,ShopsInfo[i][bi_x],ShopsInfo[i][bi_y],ShopsInfo[i][bi_z]))continue;
SetPlayerPos(playerid,ShopsInfo[i][b_x],ShopsInfo[i][b_y],ShopsInfo[i][b_z]);
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,0);
return 1;
}
return 1;
}
//Dialogbefehle
ocmd:teles(playerid, params[])
{
ShowPlayerDialog(playerid,Dialog_Teles,DIALOG_STYLE_LIST,"Teleportpunkte","Spawn\nStadthalle\nHauptAmmunation","Ausführen","Abbrechen");
return 1;
}
ocmd:help (playerid, params[])
{
ShowPlayerDialog(playerid,Dialog_Hilfe,DIALOG_STYLE_MSGBOX,"Hilfe","Das ist eine Hilfe\nHilfe","Schließen","");
return 1;
}
ocmd:pn(playerid,params[])
{
new pID,text[128];
if(sscanf(params,"us[128]",pID,text))return SendClientMessage(playerid,Color_Red,"Info: /pn [Spielername oder ID] [text]");
SendClientMessage (pID,Color_Green,text);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
//Eine Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
if(fracVehicle[i][e_vID] == vehicleid)
{
//Jetzt brauchen wir die Variable, mit der Dein vorher bereits existierendes Fraktions-System arbeitet.
//Ich nehme jetzt einfach eine Beispiel-Variable, diese musst Du selbst mit der ersetzen,
//die Dein System verwendet.
//Es geht um diese Variable: PlayerInfo[playerid][pFraction]
if(PlayerInfo[playerid][pFraction] != fracVehicle[i][e_fracID])
{
//Wenn der Spieler nicht in der Fraktion ist, die das Fahrzeug verwenden darf,
//dann darf er es nicht betreten.
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
SendClientMessage(playerid, 0xFF0000FF, "Du bist nicht in der Fraktion, die dieses Fahrzeug verwenden darf.");
}
break; //Es gibt ja keine zwei gleichen Fahrzeuge
}
}
return 1;
}
CreateFVTable()
{
new query[512];
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `FracVehicles` (");
format(query, sizeof(query), "%s`ID` int(11) NOT NULL PRIMARY KEY,", query);
format(query, sizeof(query), "%s `ModelID` int(11) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `x` float NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `y` float NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `z` float NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `r` float NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Color1` int(11) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0',", query);
format(query, sizeof(query), "%s `FracID` int(11) NOT NULL DEFAULT '-1'", query);
format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);
//handle = die Connection Handle ID die vor mysql_connect steht.
mysql_tquery(sqlverbindung, query);
return 1;
}
LoadFracVehicles()
{
CreateFVTable();
//handle = die Connection Handle ID die vor mysql_connect steht.
//Es wird ein SELECT Query an die Datenbank gesendet, diese gibt über das Callback LoadFracVehicles_Data
//die Daten im Cache zurück.
mysql_tquery(sqlverbindung, "SELECT * FROM FracVehicles ORDER BY ID ASC", "LoadFracVehicles_Data");
return 1;
}
forward LoadFracVehicles_Data();
public LoadFracVehicles_Data()
{
//Deklaration neuer temporärer Variablen:
new rows, id, createdVehs;
//Anzahl der gelesenen Datensätze abfragen:
rows = cache_num_rows();
//Schleife durch alle Datensätze:
for(new i=0; i<rows; i++)
{
//Fahrzeug existiert in der Datenbank, wir laden die Daten jetzt aus dem Cache.
id = cache_get_field_content_int(i, "ID");
//Um Fehler bei der Verarbeitung zu vermeiden:
if(id < 0 || id >= MAX_FRAC_VEHICLES) continue;
//Danach die restlichen Daten laden. Unser Index (der Wert mit dem wir auf das
//Fahrzeug in der Datenbank zugreifen) ist die "ID".
fracVehicle[id][e_modelID] = cache_get_field_content_int(i, "ModelID");
fracVehicle[id][e_x] = cache_get_field_content_float(i, "x");
fracVehicle[id][e_y] = cache_get_field_content_float(i, "y");
fracVehicle[id][e_z] = cache_get_field_content_float(i, "z");
fracVehicle[id][e_a] = cache_get_field_content_float(i, "r");
fracVehicle[id][e_color1] = cache_get_field_content_int(i, "Color1");
fracVehicle[id][e_color2] = cache_get_field_content_int(i, "Color2");
fracVehicle[id][e_fracID] = cache_get_field_content_int(i, "FracID");
//Zur Sicherheit fragen wir hier nun ab, ob das angegebene Modell auch existiert,
//sollte das nicht der Fall sein, dann wird das Fahrzeug nicht erstellt.
if(fracVehicle[id][e_modelID] >= 400 && fracVehicle[id][e_modelID] <= 611)
{
//Nachdem das Fahrzeug geladen wurde, wird es erstellt.
fracVehicle[id][e_vID] = CreateVehicle(fracVehicle[id][e_modelID], fracVehicle[id][e_x], fracVehicle[id][e_y], fracVehicle[id][e_z], fracVehicle[id][e_a], fracVehicle[id][e_color1], fracVehicle[id][e_color2], -1);
}
else
{
//Falls eine nicht existierende Model-ID angegeben wurde, geben wir eine Information aus.
printf("[Error] Model-ID %d existiert nicht (ID: %d).", fracVehicle[id][e_modelID], id);
}
//Zur Sicherheit fragen wir noch ab, ob das Fahrzeug-Limit noch nicht überschritten wurde.
//Existiert ein Fahrzeug mit der höchsten ID, dann kann kein weiteres mehr erstellt werden.
if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht.");
//Zur weiteren Sicherheit prüfen wir noch, ob die maximale Anzahl an Fraktions-Fahrzeugen erreicht ist.
createdVehs++;
if(createdVehs == MAX_FRAC_VEHICLES) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_FRAC_VEHICLES) erreicht.");
}
return 1;
}
forward SaveAllFracVehs();
public SaveAllFracVehs()
{
//Deklaration neuer temporärer Variablen:
new query[256];
//Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn das Fahrzeug existiert
if(fracVehicle[i][e_modelID] >= 400 && fracVehicle[i][e_modelID] <= 611)
{
//Wir fragen die Position des Fahrzeugs ab:
GetVehiclePos(fracVehicle[i][e_vID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z]);
GetVehicleZAngle(fracVehicle[i][e_vID], fracVehicle[i][e_a]);
//Und wir erstellen das Query:
format(query, sizeof(query), "UPDATE FracVehicles SET ModelID = '%d', x = '%f', y = '%f', z = '%f', r = '%f', Color1 = '%d', Color2 = '%d', FracID = '%d' WHERE ID = '%d'",
fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID], i);
//handle = die Connection Handle ID die vor mysql_connect steht.
mysql_tquery(sqlverbindung, query);
}
}
return 1;
}
stock SaveFracVehCheck(vehicleid)
{
//Deklaration neuer temporärer Variablen:
new query[256];
//Schleife durch alle Fraktions-Fahrzeuge
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//Wenn die vehicleid die gleiche ist, wie die des Fraktions-Fahrzeugs
if(fracVehicle[i][e_vID] == vehicleid)
{
//Wir fragen die Position des Fahrzeugs ab:
GetVehiclePos(fracVehicle[i][e_vID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z]);
GetVehicleZAngle(fracVehicle[i][e_vID], fracVehicle[i][e_a]);
//Und wir erstellen das Query:
format(query, sizeof(query), "UPDATE FracVehicles SET ModelID = '%d', x = '%f', y = '%f', z = '%f', r = '%f', Color1 = '%d', Color2 = '%d', FracID = '%d' WHERE ID = '%d'",
fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID], i);
//handle = die Connection Handle ID die vor mysql_connect steht.
mysql_tquery(sqlverbindung, query);
return 1; //Es gibt ja keine zwei gleichen Fahrzeuge
}
}
return 0; //Fahrzeug ist kein Fraktions-Fahrzeug
}
stock strtok(const string[], &index) //©Jeffry
{
new result[20], length = strlen(string), i = index;
while ((i < length) && (string[i] == ' ')) i++;
strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
index++;
return result;
}
stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if ((string[i] > '9' || string[i] < '0')) return 0;
}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
SaveFracVehCheck(vehicleid);
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_NO)
{
//enterbefehl
ocmd_enter(playerid,"");
return 1;
}
if(newkeys & KEY_NO)
{
//exitbefehl
ocmd_exit(playerid,"");
return 1;
}
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
SetPlayerMoney(playerid,money)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,money);
return 1;
}
getFreeCarID()
{
for(new i=0;i<sizeof(cInfo);i++)
{
if(cInfo[i][sa_vID]==0)return i;
}
return 0;
}
public OnPlayerCarsLoad(playerid)
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,sqlverbindung);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new id=getFreeCarID();
cInfo[id][sa_model]=cache_get_field_content_int(i,"model",sqlverbindung);
cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",sqlverbindung);
cInfo[id][sa_x]=cache_get_field_content_float(i,"x",sqlverbindung);
cInfo[id][sa_y]=cache_get_field_content_float(i,"y",sqlverbindung);
cInfo[id][sa_z]=cache_get_field_content_float(i,"z",sqlverbindung);
cInfo[id][sa_r]=cache_get_field_content_float(i,"r",sqlverbindung);
cInfo[id][db_id]=cache_get_field_content_int(i,"id",sqlverbindung);
CreateVehicle(cInfo[id][sa_model],cInfo[id][sa_x],cInfo[id][sa_y],cInfo[id][sa_z],cInfo[id][sa_r],-1,-1,-1);
}
return 1;
}
loadPlayerCars(playerid)
{
new query[128];
format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][db_id]);
mysql_function_query(sqlverbindung,query,true,"OnPlayerCarsLoad","i",playerid);
return 1;
}
public OnPasswordResponse(playerid)
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,sqlverbindung);
if(num_rows==1)
{
//Passwort richtig; Spieler suchen
sInfo[playerid][eingeloggt]=1;
sInfo[playerid][level] = cache_get_field_content_int(0,"level",sqlverbindung);
SetPlayerScore(playerid,sInfo[playerid][level]);
sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",sqlverbindung);
SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",sqlverbindung));
sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",sqlverbindung);
sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",sqlverbindung);
sInfo[playerid][frang] = cache_get_field_content_int(0,"frang",sqlverbindung);
sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",sqlverbindung);
loadPlayerCars(playerid);
}
else
{
//Passwort falsch
SendClientMessage(playerid,Color_Red,"Das eingegebene Passwort ist falsch oder fehlerhaft eingegeben worden");
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Dein Account wurde in der Datenbank gefunden!\nBitte gebe dein Passwort nun ein:","Okay","Abbrechen");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid==Dialog_Login)
{
if(response)
{
new name[MAX_PLAYER_NAME],query[128],passwort[35];
GetPlayerName(playerid,name,sizeof(name));
if(strlen(inputtext)>0)
{
mysql_escape_string(inputtext,passwort,sqlverbindung);
format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",name,passwort);
mysql_function_query(sqlverbindung,query,true,"OnPasswordResponse","i",playerid);
}
else
{
//Kein Passwort
SendClientMessage(playerid,Color_Red,"Server:Bitte gib dein Passwort ein");
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_PASSWORD,"Login","Dein account wurde in der Datenbank gefunden!\nBitte gebe dein Passwort nun ein:","Okay","Abbrechen");
}
}
else
{
Kick(playerid);
}
return 1;
}
if (dialogid==Dialog_Register)
{
if(response)
{
new name[MAX_PLAYER_NAME],query[128],passwort[35];
GetPlayerName(playerid,name,sizeof(name));
if(strlen(inputtext)>3)
{
//Regestrierungsfunktion
mysql_escape_string(inputtext,passwort,sqlverbindung);
format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s'))",name,passwort);
mysql_function_query(sqlverbindung,query,false,"","");
}
else
{
//Kleiner als 4 Zeichen
SendClientMessage (playerid,Color_Red,"Server:Dein Zeichen muss mindestens 4 Zeichen lang sein");
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"Registrierung","Gib bitte dein gewünschtes Passwort ein;","Okay","Abbrechen");
}
}
else
{
SendClientMessage(playerid,Color_Red,"Registrierungvorgang abgebrochen");
Kick(playerid);
}
return 1;
}
if (dialogid==Dialog_Teles)
{
if(response)
{
if (listitem==0)
{
//Spawn
SetPlayerPos(playerid,1958.3783, 1343.1572, 15.3746);
SetPlayerVirtualWorld(playerid,0);
SetPlayerInterior(playerid,0);
}
if (listitem==1)
{
//Stadthalle
SetPlayerPos(playerid,1480.1730,-1771.6017,18.7958);
SetPlayerVirtualWorld(playerid,0);
SetPlayerInterior(playerid,0);
}
if (listitem==2)
{
//HauptAmmuNation
SetPlayerPos(playerid,1363.5820,-1280.3978,13.5469);
SetPlayerVirtualWorld(playerid,0);
SetPlayerInterior(playerid,0);
}
}
else
{
SendClientMessage(playerid,Color_Red,"Vorgang abgebrochen");
}
return 1;
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
Alles anzeigen
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(207) : warning 225: unreachable code
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(386) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(386) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(427) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(427) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(722) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(722) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(747) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(747) : warning 202: number of arguments does not match definition
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(1070) : warning 203: symbol is never used: "CreateFVTable"
C:\Users\Chris\Desktop\samp server\gamemodes\script.pwn(1070) : warning 203: symbol is never used: "LoadFracVehicles"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
11 Warnings.
[18:13:39] [ERROR] CMySQLQuery::Execute[P()] - (error #1054) Unknown column 'a' in 'field list'
[18:16:39] [ERROR] mysql_tquery - callback parameter count does not match format specifier length
[18:17:28] [ERROR] CMySQLQuery::Execute[P()] - (error #1054) Unknown column 'a' in 'field list'
[18:17:59] [ERROR] mysql_tquery - callback parameter count does not match format specifier length
[18:18:04] [ERROR] CMySQLQuery::Execute[P()] - (error #1054) Unknown column 'a' in 'field list'
[18:18:06] [ERROR] mysql_tquery - callback parameter count does not match format specifier length