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
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
Alternativ könnte man den Spieler auch einfach kicken
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
Und wenn man den Befehl einfach doppelt. Heißt Serverseitigen /dl befehl ?
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
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
Ne andere frage ich habe nun einen waffenshop in dem man halt Waffen kaufen kann momentan ist es noch so mit giveplayerweapon und dort auch gleich eine gewissen Anzahl an Munition
Möchte es aber gerne so das man nur 1 Schuss bekommt und dann die Munition einzeln kaufen muss wie kann ich nun nur Munition setzten
Ne andere frage ich habe nun einen waffenshop in dem man halt Waffen kaufen kann momentan ist es noch so mit giveplayerweapon und dort auch gleich eine gewissen Anzahl an Munition
Möchte es aber gerne so das man nur 1 Schuss bekommt und dann die Munition einzeln kaufen muss wie kann ich nun nur Munition setzten
Einfach die selbe Waffe beim Munitionskauf nochmal per GivePlayerWeapon, dann mit der hinzuzufügenden Munition geben.
Wenn der spieler nur munition hat aber keine waffe, dann musst du die Munition wohl vorerst in einer variable speichern.
Eine alternative Munitionsanzeige lässt sich in deinem Fall ja ggf. mit einem Textdraw gut umsetzen.
//EDIT: SetPlayerAmmo
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?
Danke im Voraus
Kaliber ne Idee ?
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.
Also es sind genau genommen alle SkinIDs, die ich dann in einem Enum o.ä, speichere und für die einzelnen User nur teilweise speichern will.
Heißt z.B. 5 spezielle Skins für User A und 10 bei User B
Im Nachhinein will ich überprüfen können welche Skins ein Spieler bereits hat oder nicht
macht ja kaum einen sinn bei 200+ skins für jeden eine spalte in sql zu haben.
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
Alles anzeigenAh 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
Naja mein eigentlicher Gedanke wär, dass man beinahe jeden Skin (außer einige reservierte) einmalig kaufen kann.
Weiß nicht ob das ganze dann sinnvoll wäre so umzusetzen, wenn man erstmal ein paar User hat und die alle um die 100Skins kaufen können.
Vielleicht fällt mir ja noch was anderes ein, wie ich das am besten mache. Vllt speichere ich einfach max. 10 skins in jedem haus oderso kp
Moin ist es möglich Audio Datein z.b. im scriptfiles ordner zu speichern und diese dann ingame abzuspielen oder geht es nur mit PlayAudioStreamForPlayer und eine URL?
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
Ich habe jetzt eine mp3 datei wenn ich diese jetzt bei dropbox hochlade wird das damit funktionien?
Ich habe jetzt eine mp3 datei wenn ich diese jetzt bei dropbox hochlade wird das damit funktionien?
Mit dieser Funktion ja!
PlayerDropBoxAudioStream(playerid,FileHash[],file[],Float:posX = 0.0, Float:posY = 0.0, Float:posZ = 0.0, Float:distance = 50.0, usepos = 0)
{
new stream[300] = "https://dl.dropboxusercontent.com/s/";
strcat(stream,FileHash);
new i = strlen(stream),x;
stream[i++] = '/';
for(;;++i,++x)
{
switch(file[x])
{
case '\32;':stream[i] = '%',stream[++i] = '2',stream[++i] = '0';
case EOS:break;
default:stream[i] = file[x];
}
}
return PlayAudioStreamForPlayer(playerid, stream, posX, posY, posZ, distance, usepos);
}
Alles anzeigen
Sitze gerade an einem Dialog. Wenn ich den Befehl zum öffnen des Dialogs eingebe, crasht er den Client (NICHT SERVER).
Vielleicht kennt ja jemand das Problem.
Im Discord meinte jemand zu mir es liegt wohl am format ?
new caption[64], info[1024];
format(caption, sizeof(caption), "Spieler-Einstellungen");
if(pInfo[playerid][TogPhone]) { format(info, sizeof(info), "{00FF00}Handy: angeschaltet"); } else { format(info, sizeof(info), "{FF0000}Handy: ausgeschaltet"); }
if(pInfo[playerid][TogRingtone]) { format(info, sizeof(info), "%s{00FF00}Klingelton aktiviert", info); } else { format(info, sizeof(info), "%s{FF0000}Klingelton deaktiviert", info); }
if(pInfo[playerid][TogAds]) { format(info, sizeof(info), "%s{00FF00}Werbe-Chat aktiviert", info); } else { format(info, sizeof(info), "%s{FF0000}Werbe-Chat deaktiviert", info); }
if(pInfo[playerid][TogOOC]) { format(info, sizeof(info), "%s{00FF00}OOC-Chat aktiviert", info); } else { format(info, sizeof(info), "%s{FF0000}OOC-Chat deaktiviert", info); }
if(pInfo[playerid][TogGov]) { format(info, sizeof(info), "%s{00FF00}Regierungsmeldungen aktiviert", info); } else { format(info, sizeof(info), "%s{FF0000}Regierungsmeldungen deaktiviert", info); }
if(pInfo[playerid][TogNews]) { format(info, sizeof(info), "%s{00FF00}Newsmeldungen aktiviert", info); } else { format(info, sizeof(info), "%s{FF0000}Newsmeldungen deaktiviert", info); }
if(pInfo[playerid][TogHitsound]) { format(info, sizeof(info), "%s{00FF00}Hitsound: angeschaltet", info); } else { format(info, sizeof(info), "%s{FF0000}Hitsound: ausgeschaltet", info); }
if(pInfo[playerid][TogKillsound]) { format(info, sizeof(info), "%s{00FF00}Killsound: angeschaltet", info); } else { format(info, sizeof(info), "%s{FF0000}Killsound: ausgeschaltet", info); }
//Add TogMusic
if(pInfo[playerid][TogJoinmsg]) { format(info, sizeof(info), "%s{00FF00}Join/Leave Nachrichten: angeschaltet", info); }
else { format(info, sizeof(info), "%s{FF0000}Join/Leave Nachrichten: ausgeschaltet", info); }
if(pInfo[playerid][pAdmin]) { format(info, sizeof(info), "%s{00FF00}Servereinstellungen", info); }
ShowPlayerDialog(playerid, DIALOG_SETTINGS, DIALOG_STYLE_LIST, caption, info, "Wählen", "Abbruch");
return 1;
Alles anzeigen
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
Hänge auch mal wieder bei was kleinem fest.
Ich wollte das man als Leader mit /ramfa die Fraktion's Fahrzeuge Respawnen kann, keine großse sache eigentlich aber prob ist, dass FCar-System ist dynamisch... wie kann ich das anstellen, dass der Leader auch nur seine Freaktion Respawnt ?
So habe ich das bis jetzt angestellt,
cmd:ramfa(playerid,params[])
{
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
//if(fracVehicle[i][e_vID] == vehicleid)
//{
if(SpielerInfo[playerid][pFraktion] != fracVehicle[i][e_fracID])
{
SetVehicleToRespawn(i);
}
//}
}
return true;
}
Alles anzeigen
Aber so ergibt es für mich noch keinen sinn, da ich ja auch irgendwie die id's ermitteln muss von den Fraktion's Fahrzeugen die respawnen sollen..
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?