...
 
Commits (4)
  • Whice's avatar
    README angepasst · 36e74f9e
    Whice authored
    Anleitung wie man das Script compiled hinzugefügt
    36e74f9e
  • Whice's avatar
    Befehl '/stats' hinzugefügt · faac3628
    Whice authored
    Stats Befehl zum Einsehen der Spieler Statstiken hinzugefügt
    faac3628
  • Whice's avatar
    Update charge-reallife.pwn · 1a5bee8c
    Whice authored
    - Fehler im /stats Befehl gefixt
    - Beim Login werden nun die Spielervariablen gesetzt
    1a5bee8c
  • Whice's avatar
    Befehl GetPos & ah erstellt · 315b7e2c
    Whice authored
    - GetPos um aktuelle Position des Spielers auszugeben
    - ah gibt eine Liste aller Adminbefehle zurück
    315b7e2c
......@@ -5,16 +5,26 @@ Charge-Reallife ist ein SAMP (San Andreas Multiplayer) Gamemode, der durch mich
Der Start jener Entwicklung ist der 08.06.2020, in Zukunft werde ich hier den Entwicklungsstand veröffentlichen.
# Installation
# Benötigte Dateien
- Clone dieses Git-Repo in einen lokalen Ordner
- Lade dir folgende Dateien herunter und füge sie in die jeweiligen Verzeichnisse ein:
- [SA-MP Server](https://www.sa-mp.com/download.php) (Empfohlende Version: 0.3.7-R2 Windows/Linux Server)
- (Hierbei sind alle *nicht* Ordner relevant!)
- (Dabei darauf achten das nichts ersetzt wird!)
- [sscanf-Plugin](https://github.com/maddinat0r/sscanf/releases) (Empfohlende Version: 2.8.2)
- [MySQL-Plugin](https://github.com/pBlueG/SA-MP-MySQL/releases) (Empfohlende Version: R41-4)
- [Streamer-Plugin](https://github.com/samp-incognito/samp-streamer-plugin/releases) (Empfohlende Version: 2.9.4)
- [Nativechecker-Plugin](https://forum.sa-mp.com/showthread.php?t=249226)
- [CrashDetect-Plugin](https://github.com/Zeex/samp-plugin-crashdetect/releases) (Empfohlende Version: 4.19.4)
- [bcrypt-Plugin](https://github.com/lassir/bcrypt-samp/releases) (Empfohlende Version: 2.2.4)
# Das Script compilen
- Nun mit der Pawno öffnen (HAUPTVERZEICHNIS/pawno/pawno.exe)
- Gamemode in Pawno öffnen:
- STRG + O oder File -> Open
- In den Ordner (HAUPTVERZEICHNIS/gamemodes) navigieren
- Die Datei charge-reallife.pwn auswählen
- F5 oder Compile zum Erstellen der .amx drücken
- Danach kann der Server über die von SA-MP mitgelieferte samp-server.exe (Bei Windows) gestartet werden
......@@ -46,7 +46,8 @@ new adminRang[8][45];
// Fr Dialoge
enum {
D_LOGIN = 1,
D_REGISTER
D_REGISTER,
D_STATS
};
// Defines die das Leben erleichtern
......@@ -57,8 +58,12 @@ enum {
#define SCM SendClientMessage
#define GetVehicleName(%0) VehicleNames[GetVehicleModel(%0) - 400]
#define GetAdminRang(%0) adminRang[pInfo[%0][pAdmin]]
#define GetAdminRangById(%0) adminRang[%0]
#define GetAdmin(%0) pInfo[%0][pAdmin]
#define IsPlayerLogged(%0) (IsPlayerConnected(%0) && pInfo[%0][pLogged])
#define SetMoney(%0,%1) ResetPlayerMoney(%0); GivePlayerMoney(%0,%1)
#define GiveMoney(%0,%1) pInfo[%0][pCash] += %1; SetMoney(%0,floatround(pInfo[%0][pCash], floatround_floor));
#define GetMoney() floatround(pInfo[playerid][pCash],floatround_floor)
// Farb Defines
#define COLOR_FAIL 0xFF0000FF
......@@ -71,6 +76,7 @@ enum {
#define COLOR_GREEN 0x00FF00FF
#define D_WHITE "{FFFFFF}"
#define D_GREEN "{00FF00}"
// Server Defines
#define SERVER_NAME "Charge-Reallife"
......@@ -202,7 +208,7 @@ function CheckUserOnLogin(playerid) {
if(cache_num_rows()) {
// Hat bereits einen Account
cache_get_value_name(0, "password", pInfo[playerid][pPassword], 61);
cache_get_value_name(0, "id", pInfo[playerid][pID]);
cache_get_value_name_int(0, "id", pInfo[playerid][pID]);
ShowPlayerDialog(playerid, D_LOGIN, DIALOG_STYLE_PASSWORD, D_WHITE"Einloggen", D_WHITE"Willkommen zurck auf "SERVER_NAME"!\nBitte logge dich ein damit wir dich deinem Account zuordnen knnen:", D_WHITE"Login", "Verlassen");
} else {
// Hat keinen Account
......@@ -350,12 +356,34 @@ public OnPlayerCommandPerformed(playerid, cmdtext[], success) {
else return 1;
}
function LoadPlayer(playerid) {
if(!cache_num_rows()) {
SendErrorMessage(playerid, "Es gab Probleme beim Laden deiner Spielerdaten! Bitte reconnecten.");
KickPlayer(playerid);
printf("[FEHLER] Das Laden des Spielers %s (%d) war nicht erfolgreich!", GetName(playerid), playerid);
return 1;
}
cache_get_value_name_int(0, "level", pInfo[playerid][pLevel]);
cache_get_value_name_int(0, "admin", pInfo[playerid][pAdmin]);
cache_get_value_name_int(0, "job", pInfo[playerid][pJob]);
cache_get_value_name_int(0, "inventory_id", pInfo[playerid][pInventory]);
cache_get_value_name_int(0, "skin", pInfo[playerid][pSkin]);
cache_get_value_name_float(0, "cash", pInfo[playerid][pCash]);
SetPlayerSkin(playerid, pInfo[playerid][pSkin]);
SetMoney(playerid, floatround(pInfo[playerid][pCash], floatround_floor));
SetPlayerScore(playerid, pInfo[playerid][pLevel]);
return 1;
}
function OnPasswordChecked(playerid) {
if(bcrypt_is_equal()) {
// Wenn die Passwrter bereinstimmen
SendClientMessage(playerid, COLOR_WHITE, "Erfolgreich eingeloggt!");
TogglePlayerSpectating(playerid, false);
pInfo[playerid][pLogged] = true;
new string[65];
mysql_format(dbhandle, string, sizeof(string), "SELECT * FROM `users` WHERE `id` = '%d' LIMIT 1", pInfo[playerid][pID]);
mysql_tquery(dbhandle, string, "LoadPlayer", "d", playerid);
} else {
// Wenn das Passwort nicht bereinstimmt
new string[128];
......@@ -385,7 +413,11 @@ stock SendErrorMessage(playerid, message[]) {
}
CMD:stats(playerid, params[]) {
// Zeigt Spielerstatistiken
new string[256];
format(string, sizeof(string), D_WHITE"Name: %s (ID: %d)\nLevel: %d\nBargeld: $%.2f\nSkin-ID: %d\nStatus: %s (%d)\nJob-ID: %d\nInventar-ID: %d",
GetName(playerid), playerid, pInfo[playerid][pLevel], pInfo[playerid][pCash], pInfo[playerid][pSkin], GetAdminRang(playerid), pInfo[playerid][pAdmin], pInfo[playerid][pJob], pInfo[playerid][pInventory]);
ShowPlayerDialog(playerid, D_STATS, DIALOG_STYLE_MSGBOX, D_WHITE"Deine Statistiken", string, D_WHITE"Schlieen", "");
return 1;
}
......@@ -411,7 +443,7 @@ CMD:veh(playerid, params[]) {
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Pos[3]);
new veh = CreateVehicle(vehicleID, Pos[0], Pos[1], Pos[2], Pos[3], 211, 211, -1, true);
SendClientMessage(playerid, COLOR_GREEN, "=> Admin-Fahrzeug gespawnt");
SendClientMessage(playerid, COLOR_WHITE, "=> Admin-Fahrzeug gespawnt");
PutPlayerInVehicle(playerid, veh, 0);
return 1;
}
......@@ -421,6 +453,51 @@ CMD:vehicle(playerid, params[]) {
return cmd_veh(playerid, params);
}
CMD:getpos(playerid, params[]) {
// Gibt die aktuelle Position in Koordinaten an
if(GetAdmin(playerid) < 4) return NO_PERM;
new Float:Pos[4];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Pos[3]);
new string[144];
format(string, sizeof(string), "=> Deine Position: [X: %4.2f | Y: %4.2f | Z: %4.2f | R: %4.2f]",
Pos[0], Pos[1], Pos[2], Pos[3]);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}
CMD:ah(playerid, params[]) {
// Zeigt eine Liste aller Admin Befehle
new adm = GetAdmin(playerid);
if(adm < 1) return NO_PERM;
new string[128];
if(adm >= 1) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(1));
SendClientMessage(playerid, COLOR_WHITE, string);
} if(adm >= 2) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(2));
SendClientMessage(playerid, COLOR_WHITE, string);
} if(adm >= 3) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(3));
SendClientMessage(playerid, COLOR_WHITE, string);
} if(adm >= 4) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(4));
SendClientMessage(playerid, COLOR_WHITE, string);
SendClientMessage(playerid, COLOR_WHITE, "=> /getpos - Gibt die Position des Spielers zurck");
} if(adm >= 5) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(5));
SendClientMessage(playerid, COLOR_WHITE, string);
SendClientMessage(playerid, COLOR_WHITE, "=> /vehicle [Fahrzeug-Name] - Spawnt das angegebene Fahrzeug");
} if(adm >= 6) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(6));
SendClientMessage(playerid, COLOR_WHITE, string);
} if(adm >= 7) {
format(string, sizeof(string), "========== [ "D_GREEN"%s"D_WHITE" ] ==========", GetAdminRangById(7));
SendClientMessage(playerid, COLOR_WHITE, string);
}
return 1;
}
......