Danke.
Wenn ich es jetzt mit mein Register/Login System verbinden will das wenn ein Spieler neu drauf kommt kein Haus hat einfach nur neue Spalte in der Account tabele machen und da Haus 0 machen und wenn er eins hat Haus auf 1 setzen oder?
Danke.
Wenn ich es jetzt mit mein Register/Login System verbinden will das wenn ein Spieler neu drauf kommt kein Haus hat einfach nur neue Spalte in der Account tabele machen und da Haus 0 machen und wenn er eins hat Haus auf 1 setzen oder?
Mein Haussystem sieht wie folgt aus:
enum Hauserenum
{
ID,
IntID,
Besitzer,
Float:H_X,
Float:H_Y,
Float:H_Z,
Float:H_R,
Mieter,
Mietpreis,
Hauskasse
}
new Hauser[MAX_PLAYER_HAUS][Hauserenum];
Alles anzeigen
CreateHVTable();
HausLaden();
SetTimer("AlleHauserSpeichern",60000,true);
die sachen stehen da drin.
Haussystem:
//-----------------------------------HAUSSYSTEM-------------------
CreateHVTable()
{
new query[512];
format(query,sizeof(query),"CREATE TABLE IF NOT EXISTS `HAUSER` (");
format(query,sizeof(query)," %s `ID` int(12) NOT NULL PRIMARY KEY, ",query);
format(query,sizeof(query), " %s `IntID` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), "%s `Besitzer` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), " %s `H_X` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_Y` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_Z` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_R` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), "%s `Mieter` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), "%s `Mietpreis` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query)," %s `Hauskasse` int(11) NOT NULL DEFAULT '0')",query);
mysql_tquery(handle,query);
return 1;
}
Alles anzeigen
Hausladen Hausdata und der Timer Public:
HausLaden()
{
CreateHVTable();
mysql_tquery(handle, "SELECT * FROM Hauser ODER BY ID ASC", "Hausladen_Data");
return 1;
}
public Hausladen_Data()
{
//temporäre variablen:
new rows,id,createdHaus;
rows = cache_num_rows();
//schleife:
for(new i=0; i<rows; i++)
{
id = cache_get_field_content_int(i,"ID");
if(id < 0 || id >= MAX_PLAYER_HAUS)continue;
Hauser[id][IntID] = cache_get_field_content_int(i, "IntID");
Hauser[id][Besitzer] = cache_get_field_content_int(i, "Besitzer");
Hauser[id][H_X] = cache_get_field_content_float(i, "H_X");
Hauser[id][H_Y] = cache_get_field_content_float(i, "H_Y");
Hauser[id][H_Z] = cache_get_field_content_float(i, "H_Z");
Hauser[id][H_R] = cache_get_field_content_float(i,"H_R");
if(Hauser[id][IntID] >= 1 && Hauser[id][IntID] <= 19)
{
Hauser[id][ID] = CreatePickup(Hauser[id][IntID],1273,Hauser[id][H_X],Hauser[id][H_Y],Hauser[id][H_Z],0);
}
else
{
printf("[ERROR] Interior '%d' existiert nicht (ID: %d).",Hauser[id][IntID], ID);
}
createdHaus++;
if(createdHaus == MAX_PLAYER_HAUS) return print("Es können keine weiteren Häuser geladen werden, Limit (MAX_PLAYER_HAUS) erreicht.");
}
return 1;
}
public AlleHauserSpeichern()
{
new query[256];
for(new i=0; i<MAX_PLAYER_HAUS; i++)
{
if(Hauser[i][IntID] >= 1 && Hauser[i][IntID] <= 19)
{
//Und wir erstellen das Query:
format(query, sizeof(query), "UPDATE Hauser SET IntID = '%d', H_X = '%f', H_Y = '%f', H_Z = '%f', H_R = '%f', Besitzer = '%d' WHERE ID = '%d'",
Hauser[i][IntID], Hauser[i][H_X], Hauser[i][H_Y], Hauser[i][H_Z], Hauser[i][H_R], Hauser[i][Besitzer], i);
//handle = die Connection Handle ID die vor mysql_connect steht.
mysql_tquery(handle, query);
}
}
return 1;
}
Alles anzeigen
nur leider kommt nach dem else das nicht da steht immer nur:
reallife.p(439) : warning 213: tag mismatch
Ich habe mich an das Tutorial von @Jeffry gehalten also ist es richtig gewesen aber auch egal.
Hier das Public:
public Hausladen_Data()
{
//temporäre variablen:
new rows,id,createdHaus;
rows = cache_num_rows();
//schleife:
for(new i=0; i<rows; i++)
{
id = cache_get_field_content_int(i,"ID");
if(id < 0 || id >= MAX_PLAYER_HAUS)continue;
Hauser[id][IntID] = cache_get_field_content_int(i, "IntID");
Hauser[id][Besitzer] = cache_get_field_content_int(i, "Besitzer");
Hauser[id][H_X] = cache_get_field_content_float(i, "H_X");
Hauser[id][H_Y] = cache_get_field_content_float(i, "H_Y");
Hauser[id][H_Z] = cache_get_field_content_float(i, "H_Z");
Hauser[id][H_R] = cache_get_field_content_float(i,"H_R");
if(Hauser[id][IntID] >= 1 && Hauser[id][IntID] <= 19)
{
Hauser[id][ID] = CreatePickup(Hauser[id][IntID],1273,Hauser[id][H_X],Hauser[id][H_Y],Hauser[id][H_Z],0);
}
else
{
printf("[ERROR] Interior '%d' existiert nicht (ID: %d).",Hauser[id][IntID], ID);
}
createdHaus++;
if(createdHaus == MAX_PLAYER_HAUS) return print("Es können keine weiteren Häuser geladen werden, Limit (MAX_PLAYER_HAUS) erreicht.");
}
return 1;
}
Alles anzeigen
In mein Public für Hausladen_Data gibt er mir fehler aus und ich weiß einfach nicht wieso.
Hier Der Publicc:
Die Fehler sind nach dem else klammer:
reallife.p(439) : warning 213: tag mismatch
reallife.p(441) : warning 202: number of arguments does not match definition
reallife.p(441) : warning 202: number of arguments does not match definition
reallife.p(441) : warning 202: number of arguments does not match definition
reallife.p(441) : warning 202: number of arguments does not match definition
public Hausladen_Data()
{
//temporäre variablen:
new rows,id,createdHaus;
rows = cache_num_rows();
//schleife:
for(new i=0; i<rows; i++)
{
id = cache_get_field_content_int(i,"ID");
if(id < 0 || id >= MAX_PLAYER_HAUS)continue;
Hauser[id][IntID] = cache_get_field_content_int(i, "IntID");
Hauser[id][Besitzer] = cache_get_field_content_int(i, "Besitzer");
Hauser[id][H_X] = cache_get_field_content_int(i, "H_X");
Hauser[id][H_Y] = cache_get_field_content_int(i, "H_Y");
Hauser[id][H_Z] = cache_get_field_content_int(i, "H_Z");
Hauser[id][H_R] = cache_get_field_content_int(i,"H_R");
if(Hauser[id][IntID] >= 1 && Hauser[id][IntID] <= 19)
{
Hauser[id][ID] = CreatePickup(Hauser[id][IntID],1273,Hauser[id][H_X],Hauser[id][H_Y],Hauser[id][H_Z],0);
}
else
{
printf("[ERROR] Interior %d esistiert nicht (ID: %d).",Hauser[id][IntID], ID);
}
if(CreatePickup(MAX_PLAYER_HAUS ) !=0) return print("Es Können keine Weiteren Häuser erstellt werden,Limit (MAX_PLAYER_Haus)erreicht.");
createdHaus++;
if(createdHaus == MAX_PLAYER_HAUS) return print("Es können keine weiteren Häuser geladen werden, Limit (MAX_PLAYER_HAUS) erreicht.");
}
return 1;
}
Alles anzeigen
das einfach nur bei dem public AlleHauserSpeichern packen?
So wie Sie mir es gemacht haben @Jeffry klappt nun alles ohne Probleme, aber komme nun beim Speichern meiner Häuser nicht weiter.
Wäre auch sehr nett wenn Sie auch ein Auge auf die anderen Sachen vom Script schauen könnten.
Pawn_Code:
/* ---------------Credits----------------------------------------------------------
Die Inhalte die in diesem Script vorkommen sind eigentum von und dürfen
ohne Seine Zustimmung nicht benutzt werder oder weiter gegeben werden.
Sollte das Script veröffentlicht werden dürfen die Credits nicht geändert werden.
Jegliche Art der veränderungen an den Credits wird mit einer Anzeige gefandet.
Dieses Script wird ein Reallife-Script[Selfmade]
Mysql wird verwendet.
----------------------------------------------------------------------------------------*/
//--------------------------------------Includes------------------------------------------
#include <a_samp>
#include<a_mysql>
#include<ocmd.inc>
//-------------------------------------------------------------------------------------------
//--------------------------Farben---------------------------------
#define rot 0xFF0000FF
#define blau 0x0000DDFF
#define grün 0x09C500FF
#define gelb 0xFFFF00FF
//---------------------------------------------------------------------
//----------------------------------MYSQL--------------------------
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "samp_server"
#define MYSQL_PASS "logros"
#define MYSQL_DB "samp"
new handle;
//-----------------------------------------------------------------------
//-------------------------------Forwards---------------------------
forward OnUserCheck(playerid);
forward OnUserLogin(playerid);
forward OnUserRegister(playerid);
forward Hausladen_Data();
forward AlleHauserSpeichern();
//-----------------------------------------------------------------------
#define MAX_PLAYER_HAUS 999
//----------------------------Enums----------------------------------
enum pDataEnum
{
p_id,
bool:pLoggedIn,
pName[MAX_PLAYER_NAME],
pLevel,
pAlevel,
pMoney
}
new PlayerInfo[MAX_PLAYER_NAME][pDataEnum];
enum Hauserenum
{
ID,
IntID,
Besitzer,
H_X,
H_Y,
H_z,
H_R,
Mieter,
Mietpreis,
Hauskasse
}
new Hauser[MAX_PLAYER_HAUS][Hauserenum];
//------------------------------------------------------------------------
//----------------------------DIALOGE-------------------------------
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
//------------------------------------------------------------------------
main()
{
print("\n----------------------------------");
print(" Life of Real Version 0.1");
print("----------------------------------\n");
}
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Life of Real Version 0.1");
AddPlayerClass(115, 2400.9517,-2688.3296,13.6494,178.2475,0,0,0,0,0,0);
AddPlayerClass(93, 2400.9517,-2688.3296,13.6494,178.2475,0,0,0,0,0,0);
MySQL_SetupConnection();
CreateHVTable();
HausLaden();
SetTimer("AlleHauserSpeichern",60000,true);
mysql_log(LOG_ERROR);
return 1;
}
public OnGameModeExit()
{
mysql_close(handle);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
new query[128];
mysql_format(handle,query,sizeof(query), "SELECT id FROM Accounts WHERE name = '%e' ",PlayerInfo[playerid][pName]);
mysql_pquery(handle,query,"OnUserCheck","d",playerid);
SetPlayerPos(playerid, 2401.0645,-2691.9045,13.6451);
SetPlayerCameraPos(playerid, 2401.0645,-2691.9045,13.6451);
SetPlayerCameraLookAt(playerid, 2401.0645,-2691.9045,13.6451);
return 1;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,rot,"Willkommen auf Life of Real. Wir hoffen euch ein angenehmen aufenhalt zu bieten. Wenn ihr Hilfe braucht sprecht uns an!");
PlayerInfo[playerid][p_id] =0;
PlayerInfo[playerid][pLoggedIn] =false;
PlayerInfo[playerid][pLevel] =0;
PlayerInfo[playerid][pAlevel] =0;
PlayerInfo[playerid][pMoney] =0;
GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SaveUserStats(playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[playerid][pMoney] += 10;
if(PlayerInfo[playerid][pMoney] >3)
{
PlayerInfo[playerid][pLevel] = 1;
}
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
//-----------------------------------HAUSSYSTEM-------------------
CreateHVTable()
{
new query[512];
format(query,sizeof(query),"CREATE TABLE IF NOT EXISTS `HAUSER` (");
format(query,sizeof(query)," %s `ID` int(12) NOT NULL PRIMARY KEY, ",query);
format(query,sizeof(query), " %s `IntID` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), "%s `Besitzer` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), " %s `H_X` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_Y` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_Z` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_R` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), "%s `Mieter` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), "%s `Mietpreis` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query)," %s `Hauskasse` int(11) NOT NULL DEFAULT '0')",query);
mysql_tquery(handle,query);
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)
{
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;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_REGISTER)
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <3)return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Account Erstellung","Bitte Erstelle dir ein Account\n{0x00A598FF}Mindestens 6 Zeichen!","Erstellen","Verlassen");
new query[256];
mysql_format(handle,query,sizeof(query), "INSERT INTO Accounts (name,password) VALUES ('%e',MD5('%e'))",PlayerInfo[playerid][pName],inputtext);
mysql_pquery(handle,query,"OnUserRegister","d",playerid);
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <3)return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein.\n{0x00A598FF}Mindestens 6 Zeichen!","Anmelden","Verlassen");
new query[256];
mysql_format(handle,query,sizeof(query), "SELECT * FROM Accounts WHERE name = '%e' AND password = MD5('%e')",PlayerInfo[playerid][pName],inputtext);
mysql_pquery(handle,query,"OnUserLogin","d",playerid);
return 1;
}
return 0;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock MySQL_SetupConnection(ttl =3)
{
print("[MYSQL] Verbindungsaufbau..........");
handle = mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_DB,MYSQL_PASS);
if(mysql_errno(handle) !=0)
{
if(ttl > 1)
{
print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
printf("[MYSQL] Starte neuen Verbindungsversuch (TTL: %d).",ttl-1);
return MySQL_SetupConnection(ttl-1);
}
else
{
//Abbrechen und Server ausschalten:
print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
print("[MYSQL] Bitte überprüfen Sie die Verbindungsdaten");
print("[MYSQL] Der Server wird automatisch Heruntergefahren");
return SendRconCommand("exit");
}
}
printf("[MYSQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d",handle);
return 1;
}
public OnUserCheck(playerid)
{
if(cache_get_row_count() ==0)
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Account Erstellung","Bitte Erstelle dir ein Account","Erstellen","Verlassen");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein","Einloggen","Verlassen");
}
return 1;
}
public OnUserRegister(playerid)
{
PlayerInfo[playerid][p_id] = cache_insert_id();
SendClientMessage(playerid,grün,"[Konto] Account Erstellung erfolgreich");
return 1;
}
public OnUserLogin(playerid)
{
if(cache_get_row_count() == 0)
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein.\n{0x0000DDFF}Passwort falsch eingetippt.","Anmelden","Verlassen");
}
else
{
PlayerInfo[playerid][p_id] = cache_get_field_content_int(0,"id",handle);
PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",handle);
PlayerInfo[playerid][pAlevel] = cache_get_field_content_int(0,"alevel",handle);
PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0,"money",handle);
PlayerInfo[playerid][pLoggedIn] =true;
SendClientMessage(playerid,blau, "[Konto] Eingeloggt.");
GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
}
return 1;
}
stock SaveUserStats(playerid)
{
if(!PlayerInfo[playerid][pLoggedIn])return 1;
new query[256];
mysql_format(handle,query,sizeof(query), "UPDATE Accounts SET level = '%d', alevel ='%d', money'%d' WHERE id = '%d' ",PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAlevel],PlayerInfo[playerid][pMoney]);
mysql_pquery(handle,query);
return 1;
}
HausLaden()
{
CreateHVTable();
mysql_tquery(handle, "SELECT * FROM Hauser ODER BY ID ASC", "Hausladen_Data");
return 1;
}
public Hausladen_Data()
{
//temporäre variablen:
new rows,id,createdHaus;
rows = cache_num_rows();
//schleife:
for(new i=o; i<rows; i++)
{
id = cache_get_field_content_int(i,"ID");
if(id < 0 || id >= MAX_PLAYER_HAUS)continue;
Hauser[id][IntID] = cache_get_field_content_int(i, "IntID");
Hauser[id][Besitzer] = cache_get_field_content_int(i, "Besitzer");
Hauser[id][H_X] = cache_get_field_content_int(i, "H_X");
Hauser[id][H_y] = cache_get_field_content_int(i, "H_Y");
Hauser[id][H_Z] = cache_get_field_content_int(i, "H_Z");
Hauser[id][H_R] = cache_get_field_content_int(i,"H_R");
if(Hauser[id][IntID] >= 1 && Hauser[id][IntID] <= 19)
{
frakvehicle[id][ID] = CreatePickup(Hauser[id][IntID],1273,Hauser[id][H_X],Hauser[id][H_Y],Hauser[id][H_Z],0);
}
else
{
printf("[ERROR] Interior %d esistiert nicht (ID: %d).",Hauser[id][IntID], ID);
}
if(CreatePickup(MAX_PLAYER_HAUS 0) !=0) return print("Es Können keine Weiteren Häuser erstellt werden,Limit (MAX_PLAYER_Haus)erreicht.");
createdHaus++;
if(createdHaus == MAX_PLAYER_HAUS) return print("Es können keine weiteren Häuser geladen werden, Limit (MAX_PLAYER_HAUS) erreicht.");
}
return 1;
}
public AlleHauserSpeichern()
{
new query[256];
for(new i=0; i<MAX_PLAYER_HAUS; i++)
{
if(Hauser[id][IntID] >= 1 && Hauser[id][IntID] <= 19)
{
}
}
}
Alles anzeigen
PS: @Jeffry Bin da wo Sie den Timer erstellt haben und dann aufrufen.
SetTimer("SaveAllFracVehs", 60000, true); //Timer wird alle 60 Sekunden ausgeführt
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', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%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(handle, query);
}
}
return 1;
}
Alles anzeigen
Leider wird immer noch keine Tabelle erstellt @Jeffry Geschweige noch Mysql.log datei
@Jeffry Leider geht das alles nicht
Da gegen hilft nur ein Anticheat-system
Guten Morgen.
Versuche ein Haussystem zu schreiben aber habe schon am Anfang folgendes Problem:
MYSQL-PWN-CODE
CreateHVTable()
{
new quer[512];
format(query,sizeof(query),"CREATE TABLE IF NOT EXISTS 'HAUSER' (");
format(query,sizeof(query)," %s 'ID' int(12) NOT NULL PRIMARY KEY",query);
format(query,sizeof(query), " %s 'IntID' int(11) NOT NULL DEFAULT '0' ,",query);
format(query,sizeof(query), " %s 'H_X' float Not NULL Deafult '0' ," ,query);
format(query,sizeof(query), " %s 'H_Y' float Not NULL Deafult '0' ," ,query);
format(query,sizeof(query), " %s 'H_Z' float Not NULL Deafult '0' ," ,query);
format(query,sizeof(query), " %s ' H_R' float Not NULL Deafult '0' ," ,query);
format(query,sizeof(query), "%s 'Mieter' int(11) NOT NUL DEAFULT '0' ,",query);
format(query,sizeof(query), "%s 'Mietpreis' int(11) NOT NULL DEAFAULT '0' ,",query);
format(query,sizeof(query)," %s 'Hauskasse' int(11) NOT NULL DEFAULT '0' ,",query);
mysql_tquery(handle,query);
return 1;
}
Alles anzeigen
Die Table wird nicht selbst erstellt.
Kann wer bitte helfen.
Guten Morgen
Habe nun im Script ein Register/Login. Was sollte ich mit ocmd befehle machen oder mich an ein Adminsystem begeben?
Nur weil man es nicht kann wird man hier so zu gehated peinlich
/* ---------------Credits----------------------------------------------------------
Die Inhalte die in diesem Script vorkommen sind eigentum von und dürfen
ohne Seine Zustimmung nicht benutzt werder oder weiter gegeben werden.
Sollte das Script veröffentlicht werden dürfen die Credits nicht geändert werden.
Jegliche Art der veränderungen an den Credits wird mit einer Anzeige gefandet.
Dieses Script wird ein Reallife-Script[Selfmade]
Mysql wird verwendet.
----------------------------------------------------------------------------------------*/
//--------------------------------------Includes------------------------------------------
#include <a_samp>
#include<a_mysql>
#include<ocmd.inc>
//-------------------------------------------------------------------------------------------
//--------------------------Farben---------------------------------
#define rot 0xFF0000FF
#define blau 0x0000DDFF
#define grün 0x09C500FF
#define gelb 0xFFFF00FF
//---------------------------------------------------------------------
//----------------------------------MYSQL--------------------------
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "samp_server"
#define MYSQL_PASS "logros"
#define MYSQL_DB "samp"
new handle;
//-----------------------------------------------------------------------
//-------------------------------Forwards---------------------------
forward OnUserCheck(playerid);
forward OnUserLogin(playerid);
forward OnUserRegister(playerid);
//-----------------------------------------------------------------------
//----------------------------Enums----------------------------------
enum pDataEnum
{
p_id,
bool:pLoggedIn,
pName[MAX_PLAYER_NAME],
pLevel,
pAlevel,
pMoney
}
new PlayerInfo[MAX_PLAYER_NAME][pDataEnum];
//------------------------------------------------------------------------
//----------------------------DIALOGE-------------------------------
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
//------------------------------------------------------------------------
main()
{
print("\n----------------------------------");
print(" Life of Real Version 0.1");
print("----------------------------------\n");
}
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Life of Real Version 0.1");
AddPlayerClass(115, 2400.9517,-2688.3296,13.6494,178.2475,0,0,0,0,0,0);
AddPlayerClass(93, 2400.9517,-2688.3296,13.6494,178.2475,0,0,0,0,0,0);
MySQL_SetupConnection();
mysql_log(LOG_ERROR);
return 1;
}
public OnGameModeExit()
{
mysql_close(handle);
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
new query[128];
mysql_format(handle,query,sizeof(query), "SELECT id FROM Accounts WHERE name = '%e' ",PlayerInfo[playerid][pName]);
mysql_pquery(handle,query,"OnUserCheck","d",playerid);
SetPlayerPos(playerid, 2401.0645,-2691.9045,13.6451);
SetPlayerCameraPos(playerid, 2401.0645,-2691.9045,13.6451);
SetPlayerCameraLookAt(playerid, 2401.0645,-2691.9045,13.6451);
return 1;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,rot,"Willkommen auf Life of Real. Wir hoffen euch ein angenehmen aufenhalt zu bieten. Wenn ihr Hilfe braucht sprecht uns an!");
PlayerInfo[playerid][p_id] =0;
PlayerInfo[playerid][pLoggedIn] =false;
PlayerInfo[playerid][pLevel] =0;
PlayerInfo[playerid][pAlevel] =0;
PlayerInfo[playerid][pMoney] =0;
GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SaveUserStats(playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
PlayerInfo[playerid][pMoney] += 10;
if(PlayerInfo[playerid][pMoney] >3)
{
PlayerInfo[playerid][pLevel] = 1;
}
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, 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)
{
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;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_REGISTER)
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <3)return ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Account Erstellung","Bitte Erstelle dir ein Account\n{0x00A598FF}Mindestens 6 Zeichen!","Erstellen","Verlassen");
new query[256];
mysql_format(handle,query,sizeof(query), "INSERT INTO Accounts (name,password) VALUES ('%e',MD5('%e'))",PlayerInfo[playerid][pName],inputtext);
mysql_pquery(handle,query,"OnUserRegister","d",playerid);
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
if(!response) return Kick(playerid);
if(strlen(inputtext) <3)return ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein.\n{0x00A598FF}Mindestens 6 Zeichen!","Anmelden","Verlassen");
new query[256];
mysql_format(handle,query,sizeof(query), "SELECT * FROM Accounts WHERE name = '%e' AND password = MD5('%e')",PlayerInfo[playerid][pName],inputtext);
mysql_pquery(handle,query,"OnUserLogin","d",playerid);
return 1;
}
return 0;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock MySQL_SetupConnection(ttl =3)
{
print("[MYSQL] Verbindungsaufbau..........");
handle = mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_DB,MYSQL_PASS);
if(mysql_errno(handle) !=0)
{
if(ttl > 1)
{
print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
printf("[MYSQL] Starte neuen Verbindungsversuch (TTL: %d).",ttl-1);
return MySQL_SetupConnection(ttl-1);
}
else
{
//Abbrechen und Server ausschalten:
print("[MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
print("[MYSQL] Bitte überprüfen Sie die Verbindungsdaten");
print("[MYSQL] Der Server wird automatisch Heruntergefahren");
return SendRconCommand("exit");
}
}
printf("[MYSQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d",handle);
return 1;
}
public OnUserCheck(playerid)
{
if(cache_get_row_count() ==0)
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Account Erstellung","Bitte Erstelle dir ein Account","Erstellen","Verlassen");
}
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein","Einloggen","Verlassen");
}
return 1;
}
public OnUserRegister(playerid)
{
PlayerInfo[playerid][p_id] = cache_insert_id();
SendClientMessage(playerid,grün,"[Konto] Account Erstellung erfolgreich");
return 1;
}
public OnUserLogin(playerid)
{
if(cache_get_row_count() == 0)
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung","Bitte Logge dich mit dein Password ein.\n{0x0000DDFF}Passwort falsch eingetippt.","Anmelden","Verlassen");
}
else
{
PlayerInfo[playerid][p_id] = cache_get_field_content_int(0,"id",handle);
PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",handle);
PlayerInfo[playerid][pAlevel] = cache_get_field_content_int(0,"alevel",handle);
PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0,"money",handle);
PlayerInfo[playerid][pLoggedIn] =true;
SendClientMessage(playerid,blau, "[Konto] Eingeloggt.");
GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
}
return 1;
}
stock SaveUserStats(playerid)
{
if(!PlayerInfo[playerid][pLoggedIn])return 1;
new query[256];
mysql_format(handle,query,sizeof(query), "UPDATE Accounts SET level = '%d', alevel ='%d', money'%d' WHERE id = '%d' ",PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAlevel],PlayerInfo[playerid][pMoney]);
mysql_pquery(handle,query);
return 1;
}
Alles anzeigen
Wenn das Login/Register von @Jeffry geschrieben ist? Ich es will einfach nicht warum auch immer.
@Jeffry da sie der Entwickler davon sind bitte ihre Hilfe.
Komme nur ins Login-Feld und nicht ins Register-Feld wenn ich noch kein Account habe
PAWN-CODE
ich habe kein plan von TextDrawns
Guten Morgen
Habe das Login/Register-System von @Jeffry
Mein Problem ist folgendes laut der Server.log Datei:
----------
Loaded log file: "server_log.txt".
----------
SA-MP Dedicated Server
----------------------
v0.3.7-R2, (C)2005-2015 SA-MP Team
[00:17:03] filterscripts = "" (string)
[00:17:03] password = "" (string)
[00:17:03]
[00:17:03] Server Plugins
[00:17:03] --------------
[00:17:03] Loading plugin: mysql.so
[00:17:03] Failed (libmysqlclient_r.so.16: cannot open shared object file: No such file or directory)
[00:17:03] Loading plugin: mysql_static.so
[00:17:03] >> plugin.mysql: R39-4 successfully loaded.
[00:17:03] Loaded.
[00:17:03] Loading plugin: sscanf.so
[00:17:03]
[00:17:03] ===============================
[00:17:03] sscanf plugin loaded.
[00:17:03] Version: 2.8.1
[00:17:03] (c) 2012 Alex "Y_Less" Cole
[00:17:03] ===============================
[00:17:03] Loaded.
[00:17:03] Loading plugin: streamer.so
[00:17:03]
*** Streamer Plugin v2.6.1 by Incognito loaded ***
[00:17:03] Loaded.
[00:17:03] Loaded 3 plugins.
[00:17:03]
[00:17:03] Filterscripts
[00:17:03] ---------------
[00:17:03] Loaded 0 filterscripts.
[00:17:03] [MYSQL] Verbindungsaufbau..........
[00:17:03] [MYSQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: 1
[00:17:03]
----------------------------------
[00:17:03] Life of Real Version 0.1
[00:17:03] ----------------------------------
[00:17:03] Number of vehicle models: 0
Alles anzeigen
Ich habe keine ahnung wieso es nicht geht. Es ist ein Linux-Server
Guten Morgen Community
Bin auf der Suche nach so einer Art Logindesktop für mein Script.
Also das heißt:
"Spieler Joint den Server und sieht das Loginfenster wo er dann auf Folgende Menüpunkte drücken kann:
Serverinformation
Script-Changelogs
Register[Erstellen]
Login[Account vorhanden]
TS3: und dann die IP
Forum: wo das forum drin steht
Nach sowas suche ich da ich sowas nicht kann.