Nein, das gibt keinen Sinn.
In welchem Pfad sind denn deine Fraktionen gespeichert, und in welchem Dateiformat?
Und wie heißt die Variable (enum etc) für die Fraktionen?
Nein, das gibt keinen Sinn.
In welchem Pfad sind denn deine Fraktionen gespeichert, und in welchem Dateiformat?
Und wie heißt die Variable (enum etc) für die Fraktionen?
Die Fraktionen werden in den Accountdatein gespeichert:
format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
enum pInfo{
pEingeloggt,
pLevel,
pGeschlecht,
pAlter,
pSpawnhealth,
pBar,
pBank,
pAdminlevel,
pEhe,
pSpielstunden,
pJob,
pSkin,
pNummer,
pFisch,
pBiggestFisch,
pLevelupgrade,
pRespekt,
pHartz4,
pPremium,
pMorde,
pTode,
pVerbrechen,
pKnastbesuche,
pWantedtode,
pWantedlevel,
pWarn,
pDrogen,
pMaterialien,
pLeader, //Leader
pFraktion, //Fraktion
pMember,
pKrankheiten,
pRank,
pBanned,
pAutoschein,
pBikeschein,
pBootschein,
pLkwschein,
pAngelschein,
pFlugschein,
pK1schein,
pK2schein,
pTogwhisper,
pErlaubnis,
pLesson
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Mit der Variante ist es aber nur möglich die Leader die gerade online sind herauszufinden.
Außerdem kann man so den Name der Fraktion nicht ausgeben, wo wird denn der gespeichert?
Ich glaube du meinst das hier:
stock FraktionsNamen(playerid)
{
new rankname[32];
switch(PlayerInfo[playerid][pFraktion])
{
case 0: rankname="Zivilist";
case 1: rankname="LSPD";
case 2: rankname="FBI";
case 3: rankname="Army";
case 4: rankname="Medic";
case 5: rankname="News Reporter";
case 6: rankname="T-GmbH";
case 7: rankname="Abfallwirtschaft";
case 8: rankname="Hitman";
case 9: rankname="Grove Street";
case 10: rankname="Al-Qaida";
case 11: rankname="Ballas";
case 12: rankname="Fahrschule";
case 13: rankname="La Cosa Nostra";
case 14: rankname="Taxi";
case 15: rankname="Yakuza";
case 16: rankname="Staatsverwaltung";
case 17: rankname="SAPD";
case 18: rankname="Aztecas";
case 19: rankname="Rifas";
case 20: rankname="RS";
case 21: rankname="Cripz";
case 22: rankname="Russische Mafia";
case 23: rankname="SFBC";
case 24: rankname="Vagos";
case 25: rankname="Wheelmen";
}
return rankname;
}
stock LeaderRank(playerid)
{
new rankname[32];
switch(PlayerInfo[playerid][pLeader])
{
case 0: rankname="Zivilist";
case 1: rankname="LSPD";
case 2: rankname="FBI";
case 3: rankname="Army";
case 4: rankname="Medic";
case 5: rankname="News Reporter";
case 6: rankname="T-GmbH";
case 7: rankname="Abfallwirtschaft";
case 8: rankname="Hitman";
case 9: rankname="Grove Street";
case 10: rankname="Al-Qaida";
case 11: rankname="Ballas";
case 12: rankname="Fahrschule";
case 13: rankname="La Cosa Nostra";
case 14: rankname="Taxi";
case 15: rankname="Yakuza";
case 16: rankname="Staatsverwaltung";
case 17: rankname="SAPD";
case 18: rankname="Aztecas";
case 19: rankname="Rifas";
case 20: rankname="RS";
case 21: rankname="Cripz";
case 22: rankname="Russische Mafia";
case 23: rankname="SFBC";
case 24: rankname="Vagos";
case 25: rankname="Wheelmen";
}
return rankname;
}
Naja, dann so:
ocmd:leaderliste(playerid,params[])
{
if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
new string[1024];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[playerid][pLeader] == 0) continue;
format(string, sizeof(string), "%s%s: Leader: %s\n", string, LeaderRank(i), SpielerName(i));
}
ShowPlayerDialog(playerid,DIALOG_LEADERS,DIALOG_STYLE_MSGBOX,"Leader Liste",string,"Schliesen","");
return 1;
}
Jetzt bekomme ich nur noch einen Error:
error 017: undefined symbol "SpielerName"
Ganz unten im Gamemode einfügen:
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}
Hey,
etwas muss du schon mit denken
stock f_pName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
Das hast du nun? oder?
Das setzt du für SpielerName ein
f_pName(i) statt SpielerName(i)
Oder
Nach unten ins Script
stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
return name;
}
Mit freundlichen Grüßen
PermanenT
Jetzt steht da:
Ballas:Leader:TheTutoFreak
Und es steht auch nur der was Online ist. Nicht alle. Und wie mache ich das, dass da steht:
Ballas Leader: TheTutoFreak ({0x41FF00FF}Online)
oder
Ballas Leader: TheTutoFreak ({0xCD0000FF}Offline)
Hey TheTutoFreak:
genau lesen! Wenn du es nicht verstehst ließ es nochmal!
Dein Speicherungssystem ist für den Zweck den du es haben möchtest nicht geeignet.
Da du lediglich eine Account Datei anlegst.
Wenn du die Offline Leader angezeigt bekommen möchtest musst du eine Fraktions Datei anlegen.
Momentan kannst du nur die Online Leader anzeigen lassen da du das von mir oben genannte nicht hast.
Weshalb es dir Jeffry auch nicht gemacht hat
Wie löst du das Problem:
Du erstellst für jede Fraktion eine Datei.
Dort speicherst du den Leader.
Dann kannst du durch alle Datein loopen und den Leader auslesen lassen.
Achso. Und wie mach ich das ganze ? erstell ich die Datei bei /makeleader oder... ?
Hmm, am besten erstellst du eine solche Datei beim starten des Servers
Du fragst ab ob es die Fraktionsdatei schon gibt wenn nicht erstellen wenn schon auslesen wer Leader ist
Und was verwende ich als Parameter ?
new Fraktionsdatei[64];
format(Fraktionsdatei,sizeof(Fraktionsdatei),"/Fraktionen/%s.txt",);
if(dini_Exists(Fraktionsdatei))
{
}
else
{
}
Den Fraktionsnamen. Du musst dir erst mal die Variablen erstellen, mit dem enum.
So:
enum fNamen{
Zivilist,
LSPD,
FBI,
Army,
Medic,
News,
GmbH,
Abfallwirtschaft,
Hitman,
GroveStreet,
AlQaida,
Ballas,
Fahrschule,
LaCosaNostra,
Taxi,
Yakuza,
Staatsverwaltung,
SAPD,
Aztecas,
Rifas,
RS,
Cripz,
RussischeMafia,
SFBC,
Vagos,
Wheelman
}
new FraktNamen[26][fNamen];
Nein.
Schau mal wie es hier gemacht wurde: [ FILTERSCRIPT ] Dynamisches Fraktion System
Wie gesagt, du brauchst ein kompletten Fraktionssystem, du hast momentan gar nichts.
Ich rate dir erst mal die Grundlagen von so einem System zu lernen und aufzubauen, bevor du dich gleich da dran setzt, da du offensichtlich die Funktionsweise von enums und allem was dazugehört noch nicht kennst.
Aber ich will ja kein Dynamisches Fraktions system
Dann mach eben ein statisches Fraktionssystem, allerdings macht das wenig Sinn, da die Daten nach dem Neustart des Servers ja wieder weg wären.
Vom Aufbau wäre es identisch, außer dass du eben nichts aus Dateien lädst, sondern alles in den Code schreibst, was ja keinen Sinn macht.
Da ich das nicht so wirklich verstanden habe, habe ich mir jetzt ne MySQL Datenbank angelegt und in meinem Server eingebaut. Jetzt ist aber das Problem, dass ich schon beim Einloggen der Login Dialog nicht kommt.
Oben im Script:
//MySQL
#define db_host "127.0.0.1"
#define db_user "sampserver"
#define db_pass "samppasswort"
#define db_db "sampserver"
new dbhandle;
Bei OnGamemodeInit:
//MySQL
dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
Bei OnGamemodeExit:
mysql_close(dbhandle);
Nimm den root Benutzer ohne Passwort:
#define db_host "localhost" //Oder 127.0.0.01
#define db_user "root"
#define db_db "sampserver"
#define db_pass ""
Das ist in 99% aller Fälle standardmäßig so eingestellt.
Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.