Ist jetzt nur geraten, da ich mit FiveM noch nie was gemacht habe.
Wenn das mit CSS erstellt wird, dann musst du den z-Index anpassen.
Ist es ein internes Framework, dann zeige die Notification einfach erst nach der Login Box an.
Ist jetzt nur geraten, da ich mit FiveM noch nie was gemacht habe.
Wenn das mit CSS erstellt wird, dann musst du den z-Index anpassen.
Ist es ein internes Framework, dann zeige die Notification einfach erst nach der Login Box an.
Welche Bedeutung hat das %d in der scanf Funktion?
Schau mal hier: http://www2.hs-esslingen.de/~z…ref/FUNCTIONS/format.html
Für was steht das CLS in system?
cls steht für clear screen und cleart quasi das Konsolenfenster
Welcher Vorteil hat der switch gegenüber scanf?
switch hat nichts mit scanf zu tun, scanf musst du weiterhin verwenden.
Das hat nur was mit dem if und else if zu tun. Siehe: https://www.c-howto.de/tutorial/verzweigungen/switch-case/
Es hat den Vorteil, dass es deutlich schneller ist als if und else if. Und in deinem Fall auch übersichtlicher
allerdings kam da dieser Fehler
Achso, ja in diesem Fall musst natürlich scanf und nicht sscanf nutzen
PS: Kannst auch anstatt if und else if einfach einen Switch nutzen:
sscanf ("" ,&option);
Musst schon den Typ angeben:
und immer () um den Funktionsaufruf machen, sonst wird das als Funktionspointer interpretiert.
zwei; zu zwei();
Klar, kannst du so machen Lässt sich ja auch schnell testen, ob es funktioniert oder nicht
Hey, aktuell hätte ich tatsächlich bisschen Zeit und können uns gerne zusammen dransetzen
Schreibe dir später eine PN
//Edit: Kann dir gar keine PN schreiben, schreib mir gerne
Na, dann kannst du einfach so was machen:
cmd:ramfa(playerid,params[])
{
if(SpielerInfo[playerid][pRang] != 6) return SCM(playerid,rot,"Du bist kein Leader einer Fraktion!");
for(new i; i<MAX_FRAC_VEHICLES; i++)
{
if(SpielerInfo[playerid][pFraktion] == fracVehicle[i][e_fracID] && !IsVehicleOccupied(fracVehicle[i][e_vID]))
{
SetVehicleToRespawn(fracVehicle[i][e_vID]);
}
}
return 1;
}
stock IsVehicleOccupied(vehicleid) //Ob sich bereits ein Spieler im Fahrzeug befindet
{
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(IsPlayerInVehicle(i,vehicleid)) return 1;
}
return 0;
}
Alles anzeigen
Sollen ja schließlich nur leere Fahrzeuge gerespawnt werden.
PS: Die Implementation von IsVehicleOccupied ist nicht sehr effizient. Es gibt hier bessere Methoden, wie z.B. einfach ein bool flag o.ä. in der Variable und anschließend Callbacks zum Aktualisieren nutzen.
wie kann ich das anstellen, dass der Leader auch nur seine Freaktion Respawnt ?
Wir kennen dein System ja nicht...
Kannst du etwas erklären, wie du Dinge abspeicherst, wie entsprechende Variablen heißen bzw du es lädst.
Die Array Strukturen wären hier entscheidend
Worauf bezieht sich MAX_FRAC_VEHICLES?
was für einen Fehler übersehe ich?
Da hilft dir Debugging, entweder mit einem Breakpoint oder einfach ein printf über entsprechende Zeile schreiben und einfach mal dir ausgeben lassen, was so in username und l.username steht und ob das eben identisch ist
Vermutlich wird es nicht richtig aus der Datei ausgelesen und in das struct übertragen.
Können auch Probleme mit der Kodierung herrschen, aus diesem (und vielen weiteren Gründen), sollte man auch eine Datenbank nutzen und keine einfache Text Datei um Passwörter etc zu speichern.
Passwörter sollten grundsätzlich auch gehasht werden (hatte damals ein kleines Tutorial dazu verfasst: Hash Verfahren genauer erklärt ) und nicht im Klartext abgelegt werden (ist rechtlich sogar untersagt, siehe DSGVO)
Also format ist sehr langsam und sollte tunlichst vermieden werden.
In diesem Fall kannst du komplett darauf verzichten.
Und wenn du direkt einen String zuweisen kannst (in diesem Fall den Dialog-Titel), dann tue dies, dann brauchst du keinen extra Speicher für eine Variable reservieren.
Der Crash entsteht hier, da kein \n verwendet wird und somit alles in eine Zeile geschrieben wird und diese überläuft.
Der Code kann aber deutlich schöner geschrieben werden, z.B. mit einem Makro:
//Also strcat ist was du nutzen willst, anstatt format ;)
#define AddActiveSetting(%0,%1) strcat(info,(pInfo[playerid][%0])?("{00FF00}"#%1#": aktiviert\n"):("{FF0000}"#%1#": deaktiviert\n"))
#define AddOnlineSetting(%0,%1) strcat(info,(pInfo[playerid][%0])?("{00FF00}"#%1#": angeschaltet\n"):("{FF0000}"#%1#": ausgeschaltet\n"))
new info[800];
AddOnlineSetting(TogPhone,"Handy");
AddActiveSetting(TogRingtone,"Klingelton");
AddActiveSetting(TogAds,"Werbe-Chat");
AddActiveSetting(TogOOC,"OOC-Chat");
AddActiveSetting(TogGov,"Regierungsmeldungen");
AddActiveSetting(TogNews,"Newsmeldungen");
AddOnlineSetting(TogHitsound,"Hitsound");
AddOnlineSetting(TogKillsound,"Killsound");
AddOnlineSetting(TogJoinmsg,"Join/Leave Nachrichten");
if(pInfo[playerid][pAdmin]) strcat(info,"{00FF00}Servereinstellungen\n");
ShowPlayerDialog(playerid, DIALOG_SETTINGS, DIALOG_STYLE_LIST, !"Spieler-Einstellungen", info, !"Wählen", !"Abbruch");
Alles anzeigen
Musst es mit PlayAudioStreamForPlayer machen, aber wenn du eine url eh zum server hast, kannst ja die files einfach aufn Server packen und spielen
Gibt auch n youtube include womit du direkt youtube links spielen kannst
Paar Sachen gibt es noch hier im SHOW Teil: https://open.mp/discussion und hier: https://www.burgershot.gg/
Aber so wirklich alles auf einmal nicht. Nur halt viele Überreste auf Github etc
Ah okay ich verstehe.
Was man da normalerweise macht ist eine extra Tabelle anlegen.
Die sieht dann z.B. so aus:
id|userid|skinid
id = PRIMARY_KEY AUTO_INCREMENT
userid = Fremdschlüssel der user Tabelle
skinid = Die Id, die für die entsprechende userid verfügbar ist.
Dann kannst du in die Tabelle einfach die entsprechenden Skins für den User hinzufügen und auslesen.
So wäre es zumindest, wenn das System max. dynamisch ist. Also wenn nichts zusammengefasst werden kann. Bei deinem System weiß ich jetzt nicht, ob z.B. User alle die selben 5 Skins bzw 10 Skins bekommen können. Oder ob diese frei wählbar sind.
Sind sie frei wählbar muss so ein dynamischer Ansatz gewählt werden
Moin. Ich habe vor mehrere Integer Werte(max. könnten es 200stk werden) in einem Value in meiner DB zu speichern, da 200 columns ja irgendwie etwas blöde wären.
Wie setze ich das am besten um, sodass ich das möglichst effizient mache aber zeitgleich auch die Integer Werte einzeln prüfen bzw. Getten kann?
Um dir dazu einen akkuraten Vorschlag zu machen, benötigt man mehr Informationen.
Was sind das für Werte, wofür brauchst du die, in welchem Kontext werden sie benötigt, sind sie dynamisch oder fix.
Müssen sie überhaupt in eine Datenbank.
Über #include kann ich ja nur Bibliotheken einbinden oder?
Nein, du kannst eigentlich alles an Quellcode inkludieren. Diese Präprozessor-Anweisung sorgt nur dafür, dass der Code aus der Datei quasi mit in die main Datei kopiert und kompiliert wird.
Das normale vorgehen ist so, dass es immer Header Dateien (.h) und Quellcode Dateien (.c (oder in C++ .cpp)) gibt.
Nun inkludierst du die Header Datei und kannst dann entsprechende Funktionen nutzen.
Durch die Header Datei wird dann automatisch auf die entsprechende .c Datei zugegriffen. (Wobei das in C nicht wirklich getrennt wird, meist steht der Quellcode direkt in der .h Datei, was aber eigentlich kein good practice ist)
Siehe: https://www.tutorialspoint.com…amming/c_header_files.htm
Allerdings gibt es in C keine wirklichen Klassen oder ähnliche Konstrukte, weshalb C++ zu empfehlen ist.
PS: In deinem Code gibt es einige Makel, nur um mal ein Beispiel zu nennen, lässt du das pw leer, gibt strcmp immer 0 zurück (So könnte man sich in einen beliebigen Account "hacken")
Deswegen mag ich FiveM so, keine Mühen um einen Server zu erstellen
Naja, bei SA:MP war das ja nicht anders mit den GF-Skripten
Und wenn man den Befehl einfach doppelt. Heißt Serverseitigen /dl befehl ?
Trotzdem, das würde nie aufgerufen werden, da das nicht an den Server übermittelt werden kann
Alternativ könnte man den Spieler auch einfach kicken
Nein, tatsächlich nicht, da das an den Server nicht übermittelt wird, wenn der Client diese Befehle eingibt.
Sprich, am Server kann man das nicht überprüfen
Nein, das sind sog. ClientCommands: https://team.sa-mp.com/wiki/Client_Commands.html
Diese können nicht deaktiviert werden o.ä.
Wobei das ziemlich witzig wäre, /q zu verbieten
Ich habe mir immer den gui editor von mta in samp gewünscht, leider nie passiert
Um nur mal einen von vielen zu nennen: https://github.com/Nickk888SAMP/TextDraw-Editor
Gibt sehr viele TextDraw Editoren...
Ich fände es ja mal cool, wenn sich mehr von den Kleinen Projekten zusammenschließen würden.
Ich sehe immer mal vereinzelt Leute oder kleine Teams die an Projekten arbeiten, aber dann keine Lust mehr haben, weil ja keiner da ist.
Würden sich diese kleinen Teams zusammenschließen und man hätte eine feste Community von 10-20 Leuten, welche sich gegenseitig unterstützen und zusammenarbeiten, auch im Bereich der Entwicklung und des Mappings, das wäre ziemlich cool.
Ich glaube die Meisten Server scheitern weniger an den Konzepten, als vielmehr am Team
Die Idee von einem Breadfish Server fand ich auch sehr interessant. Was ist aus diesem Konzept eigentlich geworden seegras?