Kannst du den cmd, welchen du nur noch als Beifahrer nutzen kannst auch posten?
#Handy
Kannst du den cmd, welchen du nur noch als Beifahrer nutzen kannst auch posten?
#Handy
Naja, wieso nutzt du VehicleComponentName[], also das [] bezieht sich ja auf die zweite Dimension eines Arrays.
Denke du willst es ohne das [].
Wie ist den ComponentName definiert...bzw wie viele Einträge sind da drinnen?
Tendenziell geht das schon
oder kann die liste unendlich lang sein?
Wir sind hier bei SA:MP, alles hat Limits
Die maximale Länge ist auf die String-Größe von 4096 begrenzt.
Da du minimal 2 Zeichen pro Zeile benötigst, also einen char + \n und einen EOS abziehen musst, landen wir bei max 2047 Rows
Falls du bis Montag niemanden gefunden hast bzw. das Problem noch besteht, dann schau ich gerne drüber, bin leider nur das gesamte WE unterwegs
#Handy
Oder nutz einfach den ZeeX Compiler: https://github.com/pawn-lang/compiler/releases
In Kombination mit YSI ist das eigtl Pflicht!
Ich vermute das es etwas mit den YSI Includes zu tun hat
So ist es
YSI nutzt auch ein Makro für SCM.
Also musst es entweder zu SCN oder wie du magst umbenennen.
Bin mir aber gerade nicht mehr sicher wofür genau, dafür müsst ich nochmal in die Lib schauen, aber bin unterwegs...geht also schlecht xD
Kannst ja mal testen ob #undef SCM und dann drunter #define SCM hilft...ansonsten wie gesagt einfach was anderes nehmen xD
#Handy
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.