Nabend.
Ich habe jetzt mal ein Fraktion System angefangen.
Habe es so Versucht umzusetzen:
Fraktion #Define
//Fratkionen//#define FRAKTION_NAME_1 "LSPD"#define FRAKTION_NAME_2 "Sanitäter"
Fraktion Enum
enum fDaten{f_ID,fLeader, ///Erstellt die Spielervariable pLeaderfMember,fAdmin,eingeladen}new fInfo[MAX_PLAYERS][fDaten]
Makeleader Befehl
CMD:makeleader(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin]>=1 && PlayerInfo[playerid][pFraktion]>=1)return SendClientMessage(playerid, 0x00FF00,"Du kannst diesen Befehl nicht ausführen");
{
new frakid, p_ID, name[MAX_PLAYER_NAME], string[128];
if(sscanf(params,"us", p_ID, frakid))return SendClientMessage(playerid, 0x00FF00, "[ Info ]Benutzung: /makeleader [id][frakid]");
GetPlayerName(playerid, string, MAX_PLAYER_NAME);
GetPlayerName(p_ID, name, MAX_PLAYER_NAME);
PlayerInfo[p_ID][pFraktion] = frakid;
format(string, sizeof(string), "[ ! ]Admin: %s hat %s zum Leader einer Fraktion: %d gemacht!", string, name, GetFraktionRang(p_ID));
mysql_format(handle, string, sizeof(string), "UPDATE `users` SET `fraktion` = '%d' WHERE `id` = '%d'", frakid, PlayerInfo[p_ID][p_id]);
mysql_pquery(handle, string);
SendClientMessage(playerid, -1, string);
}
return 1;
}
OnUserRegister(playerid)
forward OnUserRegister(playerid);
public OnUserRegister(playerid)
{
//Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen
PlayerInfo[playerid][p_id] = cache_insert_id();
PlayerInfo[playerid][pLoggedIn] = true;
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pKills] = 0;
PlayerInfo[playerid][pBan] = 0;
PlayerInfo[playerid][pMoney] = 10000;
GivePlayerMoney(playerid, 10000);
PlayerInfo[playerid][pLevel] = 1;
PlayerInfo[playerid][pDeaths] = 0;
//PlayerInfo[playerid][pFraktion] = 0;
fInfo[playerid][f_ID] = 0;
fInfo[playerid][fLeader] = 0;
fInfo[playerid][fMember] = 0;
fInfo[playerid][fAdmin] = 0;
fInfo[playerid][eingeladen] = 0;
SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
return 1;
}
OnUserLogin
public OnUserLogin(playerid)
{
//Query wurde ausgeführt und das Ergebnis im Cache gespeichert
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
//Der Spieler hat ein falsches Passwort eingegeben
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
}
else
{
//Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
//Wir lesen nun die erste Zeile des Caches aus (ID 0)
cache_get_value_name_int(0, "id", PlayerInfo[playerid][p_id]);
cache_get_value_name_int(0, "level", PlayerInfo[playerid][pLevel]);
cache_get_value_name_int(0, "money", PlayerInfo[playerid][pMoney]);
cache_get_value_name_int(0, "kills", PlayerInfo[playerid][pKills]);
cache_get_value_name_int(0, "deaths", PlayerInfo[playerid][pDeaths]);
cache_get_value_name_int(0, "ban", PlayerInfo[playerid][pBan]);
cache_get_value_name_int(0, "admin", PlayerInfo[playerid][pAdmin]);
//cache_get_value_name_int(0, "fraktion", PlayerInfo[playerid][pFraktion]);
cache_get_value_name_int(0, "ID", fInfo[playerid][f_ID]);
cache_get_value_name_int(0, "Leader", fInfo[playerid][fLeader]);
cache_get_value_name_int(0, "Admin", fInfo[playerid][fAdmin]);
cache_get_value_name_int(0, "Member", fInfo[playerid][fMember]);
cache_get_value_name_int(0, "eingeladen", fInfo[playerid][eingeladen]);
PlayerInfo[playerid][pLoggedIn] = true;
SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt.");
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
}
return 1;
}
SafeUserStats
stock SaveUserStats(playerid)
{
//Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
if(!PlayerInfo[playerid][pLoggedIn]) return 1;
//Ansonsten speichere sie
new query[1024];
mysql_format(handle, query, sizeof(query), "UPDATE `users` SET `level` = '%d', `money` = '%d', `kills` = '%d', `deaths` = '%d',`ban` = '%d', `admin` = '%d', `fraktion` = '%d' WHERE `id` = '%d'",
PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id], PlayerInfo[playerid][pBan], PlayerInfo[playerid][pAdmin], PlayerInfo[playerid][pFraktion]);
mysql_format(handle, query, sizeof(query), "UPDATE `fraktion` SET `Leader` = '%d', `Admin` = '%d', `Member` = '%d', `eingeladen` = '%d' WHERE `id` = '%d'",fInfo[playerid][fLeader], fInfo[playerid][fAdmin], fInfo[playerid][fMember], fInfo[playerid][eingeladen], fInfo[f_ID]);
//Das Query wird abgesendet
mysql_pquery(handle, query);
return 1;
}
Hab auch extra eine Datenbank für Fratkion erstellt
Leider wird dort nix Gespeichert und der Befehl CMD:makeleader scheint auch nicht richtig zu Funktioniere.
Findet ihr dort irgendwo einen Fehler?