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 ![]()
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 ![]()
ich habe einige Scripte bekommen wo zeug drin ist das man hier noch nie gesehen hat
Proof? Zeig doch mal im Showroom paar Systeme ![]()
Was genau ist das denn ist das für ein neuen Compeiler habe ich was verpasst ?
Die Rede ist vom Zeex Compiler: https://github.com/pawn-lang/compiler/releases
Das ermöglicht viele neue Möglichkeiten, gerade in Kombination mit YSI ![]()
ursprünglich war diese mit weggelöscht aber ich habe die removeobject zeile wieder entfernt
Geh in den MapEditor lösch nochmal diese Straße und schau, dass du keinen der RemoveObject Codes mehr verwendest, vermutlich sind es einfach mehrere und einige sind noch bei dir vorhanden ![]()
Eine Idee wie ich auf den "Packer" Fahrzeuge mehr oder weniger attachen kann.
AttachVehicleToVehicle gibts ja nicht. Ich habe überlegt, ob man das vllt mit einem Timer und setposition hinbekommt oder mit Objects die die Fahrzeuge festhalten.
Kp ob dafür eine Lösung existiert.
Tatsächlich existiert keine sehr schöne Lösung dafür.
Natürlich könnte man das mit den Positionen so machen..ist aber auch etwas unschön, gerade da man mit mehreren Rotationsachsen arbeiten müsste, diese aber nicht gesetzt, nur abgefragt (https://team.sa-mp.com/wiki/GetVehicleRotationQuat.html) werden können.
Alternativ einfach Objekte nehmen, die aussehen wie Fahrzeuge (mit entsprechender Textur o.ä.) und diese attachen.
Oder einfach Fahrzeuge drauffahren und dann per Objekt "einklemmen". ![]()
Aber wenn du näher ran gehst, wird dir der Boden angezeigt? 😅
Okay, also in diesem Fall hast du wohl ein nicht so gutes Modell Objekt erwischt, darf man fragen welche modelid das Objekt hat? ![]()
PS: Gerne auch mal von einem Boden Objekt den CreateDynamicObject Code posten ![]()
von etwa 10m gestreamt, weshalb ich nichtmal sehe was direkt vor meiner Nase steht.
Gerne mal dahin stellen und F5 drücken und den screen hier posten, dann kann ich dir da mehr zu sagen ![]()
Aber grundsätzlich gibt es sowohl die stream, als auch die draw-distance, beide könnten erhöht werden für diesen Zweck.
Allerdings könnte es noch an etwas anderem liegen.
Achso, ja dann geht es noch einfacher:
Wäre dann halt wieder die Frage ob man format texte auch in ein define setzen kann oder wie man das am besten macht.
Für format, kannst du den Text quasi als Template nutzten:
#define MSG(%0,%1) gMessages[%1][PlayerInfo[%1][pLang]]
stock const gMessages[][][] =
{
{"Hallo","Hello","Hola"},
{"Hallo %s (%d), wie geht es dir?", "Hello %s (%d), how are you?", "Hola %s (%d), cómo estás?"}
};
//Und dann für die erste Nachricht ohne format:
SCM(playerid,-1,MSG(playerid, 0));
//Und mit format:
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
format(string,sizeof(string),MSG(playerid,1),name,playerid);
SCM(playerid,rot,string);
//Noch einfacher mit einer SCME Funktion:
#define SCME(%0,%1,%2,%3) format(string,sizeof(string),%2,%3),SCM(%0,%1,string)
//Und dann nur:
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
SCME(playerid,rot,MSG(playerid,1),name,playerid);
Alles anzeigen
Und noch ein Profi Tipp:
Wenn du Speicher sparen willst, kannst du konstante Texte (also Texte die nicht in ein format kommen) mit einem ! davor schreiben, in meinem Beispiel dann so:
stock const gMessages[][][] =
{
{!"Hallo",!"Hello",!"Hola"},
{"Hallo %s (%d), wie geht es dir?", "Hello %s (%d), how are you?", "Hola %s (%d), cómo estás?"}
};
Nutzen lässt es sich exakt gleich, aber diese Strings verbrauchen jetzt nur noch ein Viertel an Speicher! ![]()
Nun zu meinem Anliegen.
Ich habe vor alle vom Script ausgehenden Texte in mehreren Sprachen anzubieten, also mit Übersetzung.
Hatte die Idee das ganze per DEFINES zu machen und dann halt eine sprachabfrage zu machen, sodass ich die texte beispielsweise in einem include übersetzen kann.Wie würdet ihr das ganze umsetzen. Für mich klingt das nicht nach der besten Lösung.
Gibt eine heftige YSI-Lib dazu: https://github.com/pawn-lang/YSI-Includes
Leider ist sie nicht (mehr) gut dokumentiert und schwer sich reinzuarbeiten.
Spontan würde mir sowas einfallen:
enum
{
LANG_GERMAN,
LANG_ENGLISH,
LANG_SPAIN
};
//Weist dem Spieler dann eine Sprache zu:
PlayerInfo[playerid][pLang] = LANG_GERMAN;
stock SCML(playerid, color, const ger[], const eng[], const spain[])
{
switch(PlayerInfo[playerid][pLang])
{
case LANG_GERMAN: SCM(playerid,color,ger);
case LANG_ENGLISH: SCM(playerid,color,eng);
case LANG_SPAIN: SCM(playerid,color,spain);
}
return 1;
}
//Und dann einfach so nutzen:
SCML(playerid,-1,"Hallo","Hello","Hola");
Alles anzeigen
Wenn du öfters den Selben Satz verwendest, sowas wie z.B. "Du bist kein Admin!"
Leg dir dafür konstanten an:
stock const NO_ADMIN_MSG_GER[] = "Du bist kein Admin!";
stock const NO_ADMIN_MSG_ENG[] = "You're not an admin!";
stock const NO_ADMIN_MSG_SPN[] = "No eres un admin!";
//Und dann an entsprechender Stelle einfach:
if(!IsAdmin(playerid,5)) return SCML(playerid,rot,NO_ADMIN_MSG_GER,NO_ADMIN_MSG_ENG,NO_ADMIN_MSG_SPN);
Dadurch wird nämlich nur 1x der Speicher reserviert ![]()
Was passiert denn?
Was gibst du ein?
Was siehst du?
Hast du mal ein paar prints gesetzt...einfach nur zu sagen "es geht nicht", bringt niemandem etwas ![]()
CMD:warn(playerid,params[])
{
new pID, grund[64], string[128];
if(sscanf(params,"us[64]", pID, grund)) return SCM(playerid, GELB, "[ Verwendung ] /warn [playerid] [Grund]");
if(!IsPlayerConnected(pID)) return SCM(playerid,GRAU,"Dieser Spieler ist nicht online!");
SCME(playerid, ORANGE,"Du hast den Spieler %s verwarnt Grund: %s", PlayerInfo[pID][pName], grund);
SCME(pID, LROT,"Du wurdest von %s verwarnt Grund: %s", PlayerInfo[playerid][pName], grund);
PlayerInfo[pID][pWarns]++;
new query[256];
mysql_format(handle, query, sizeof(query),"UPDATE users_warns SET name='%s', grund='%s' WHERE id = '%i'", PlayerInfo[playerid][pName], grund, PlayerInfo[playerid][p_id]);
mysql_pquery(handle, query);
if(PlayerInfo[pID][pWarns] == 3)
{
Dialog_Show(playerid, DIALOG_MAXWARNS, DIALOG_STYLE_MSGBOX,"{FF0000}Maximale Anzahl an Warns erreicht", "Du wurdest gebannt da du die Maximale Anzahl an Warns erhalten hast\nSolltest du weitere Fragen haben oder es nicht korrekt sein, bitte melde dich bei einem Head-Adminstrator!", "Okay", "");
}
return 1;
}
Alles anzeigen
Der Error/Warning Text ist schon sehr präzise was das angeht "invalid expression - expression has no effect".
Das ist wie, wenn du im Mathe Unterricht anstatt x = 5 nur = 5 schreibst...da fragt man sich doch, was ist 5?!?!
stock FraktionsRangName(playerid)
{
new fraktion = PlayerInfo[playerid][pFraktion], string[64];
switch(PlayerInfo[playerid][pFRang])
{
case 1: strcat(string, FrakInfo[fraktion][_rang1]);
case 2: strcat(string, FrakInfo[fraktion][_rang2]);
case 3: strcat(string, FrakInfo[fraktion][_rang3]);
case 4: strcat(string, FrakInfo[fraktion][_rang4]);
case 5: strcat(string, FrakInfo[fraktion][_rang5]);
case 6: strcat(string, FrakInfo[fraktion][_rang6]);
default: string = "Kein Rang";
}
return string;
}
Alles anzeigen
Neu bauen hat nicht geholfen?