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
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?
da brauch ich nix zu beweisen und vor Kinder soweiso nicht
Kein Grund hier schnippisch zu werden. Wir wollten lediglich erfahren, was du alles für tolle Systeme meinst.
Die Seite als Beispiel hätte doch schon vollkommen gereicht.
Vielen Dank für das Teilen!
Wenn dann frag nach Open:MP, Nachfolger der sich immerhin noch behaupten kann.
Naja, technisch gesehen gehört OPEN:MP für mich zu SA:MP, da ja auch alle Gamemodes dafür kompatibel sind
Wollte mal hören, wer hier eig überhaupt noch SA:MP spielt
Dürft auch sagen, dass ihr SA:MP noch spielt, obwohl ihr es aktuell nicht spielt, aber wenn euch ein Server interessieren würde, dann würdet ihr spielen