[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
-
-
Wenn ich das mache, habe ich aber PlayerID noch nicht definiert, ich nehme an ich muss das auch "oben" machen, aber wie?
Das musst du dort machen, wo du dem Spieler das TextDraw anzeigen lassen willst. "playerid" sollte dort definiert sein, also zum Beispiel unter OnPlayerConnect oder so. Ansonsten musst du die playerid, wie du schon sagtest, selbst definieren, und es dann zum Beispiel über eine Schleife anzeigen lassen. Wenn du es aber immer zeigen willst, nutze OnPlayerConnect. -
Das musst du dort machen, wo du dem Spieler das TextDraw anzeigen lassen willst. "playerid" sollte dort definiert sein, also zum Beispiel unter OnPlayerConnect oder so. Ansonsten musst du die playerid, wie du schon sagtest, selbst definieren, und es dann zum Beispiel über eine Schleife anzeigen lassen. Wenn du es aber immer zeigen willst, nutze OnPlayerConnect.Ich habe meine Textdraw's unter GameModeInit, also dort definieren richtig?
Ich verstehe aber immer noch nicht das definieren, wie mach ich das denn?
#define playerid und dann :D?
-
#define playerid und dann :D?
Nein, nicht so.Angenommen du willst es bei OnFilterScriptInit (macht zwar keinen Sinn aber egal) für alle Spieler anzeigen lassen, die in Welt 0 sind:
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) if(GetPlayerVirtualWorld(playerid) == 0) TextDrawShowForPlayer(playerid, Textdraw);"new playerid" wäre die Deklaration.
-
Ich verstehe es an deinem Beispiel nicht, sorry..
public OnGameModeInit(){
TextDrawShowForPlayer(playerid, textid);
Textdraw0 = TextDrawCreate(609.599975, 41.322223, "usebox");
TextDrawLetterSize(Textdraw0, 0.000000, 0.000000);
TextDrawTextSize(Textdraw0, 609.599975, 0.000000);
TextDrawAlignment(Textdraw0, 1);
TextDrawColor(Textdraw0, 0);
TextDrawUseBox(Textdraw0, true);
TextDrawBoxColor(Textdraw0, 102);
TextDrawSetShadow(Textdraw0, 0);
TextDrawSetOutline(Textdraw0, 0);
TextDrawFont(Textdraw0, 0);Textdraw1 = TextDrawCreate(538.400390, 7.466648, "FPS:");
TextDrawLetterSize(Textdraw1, 0.180799, 0.778666);
TextDrawAlignment(Textdraw1, 1);
TextDrawColor(Textdraw1, 16777215);
TextDrawSetShadow(Textdraw1, 0);
TextDrawSetOutline(Textdraw1, 1);
TextDrawBackgroundColor(Textdraw1, 51);
TextDrawFont(Textdraw1, 1);
TextDrawSetProportional(Textdraw1, 1);Textdraw2 = TextDrawCreate(563.000732, 7.471092, "Ping:");
TextDrawLetterSize(Textdraw2, 0.180799, 0.778666);
TextDrawAlignment(Textdraw2, 1);
TextDrawColor(Textdraw2, 16777215);
TextDrawSetShadow(Textdraw2, 0);
TextDrawSetOutline(Textdraw2, 1);
TextDrawBackgroundColor(Textdraw2, 51);
TextDrawFont(Textdraw2, 1);
TextDrawSetProportional(Textdraw2, 1);Textdraw3 = TextDrawCreate(591.600769, 7.475535, "Time:");
TextDrawLetterSize(Textdraw3, 0.180799, 0.778666);
TextDrawAlignment(Textdraw3, 1);
TextDrawColor(Textdraw3, 16777215);
TextDrawSetShadow(Textdraw3, 0);
TextDrawSetOutline(Textdraw3, 1);
TextDrawBackgroundColor(Textdraw3, 51);
TextDrawFont(Textdraw3, 1);
TextDrawSetProportional(Textdraw3, 1);Meine Defines:
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;Und das sind meine Errors:
C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(59) : error 017: undefined symbol "playerid"
1 Error.
Wo, bei diesem Code, muss ich was eintragen?Kann das so besser verstehen.
Und wenn ich erstmal die Playerid definiert habe, kommt danach nicht noch textdraw?
-
TextDrawShowForPlayer(playerid, textid);
weg machen.Bei OnPlayerConnect:
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
TextDrawShowForPlayer(playerid, Textdraw3); -
TextDrawShowForPlayer(playerid, textid);
Playerid ist laut compiler immernoch nicht definiert

-
Wo hast du die vier Zeilen denn hingeschrieben?
Und welche Zeile hat den Error? Eine der vier oder eine andere? -
Wo hast du die vier Zeilen denn hingeschrieben?
Und welche Zeile hat den Error? Eine der vier oder eine andere?Ach hat sich doch erledigt, hatte TextDrawForPlayer 2 mal drin, werde das ganze mal Ingame ausprobieren, danke!
Echt lobenswert wie du diesen Thread hier dominierst
//Neues Problem
Habe nun das ganze hingekriegt und die Textdraw's sind auch Ingame, aber überhaupt nicht da wo sie sein sollten, habe an den Werten nix geändert, woran könnte das liegen?
So schaut's Ingame aus ...

-
Poste bitte die Textdraws, dann teste ich es kurz bei mir, ob es an den Textdraws liegt, oder an etwas anderem.
-
-
@Jeffty: Kann ich das bitte via. PM machen?
-
@Jeffty: Kann ich das bitte via. PM machen?
Jo. Geht in Ordnung.EDIT:
Problem behoben.Problem war, dass alles so aussah:
Textdraw4 = TextDrawCreate(537.599975, 416.639953, "L");
TextDrawLetterSize(Textdraw0, 0.449999, 1.600000);
Textdraw4 wird erstellt, und Textdraw 0 wird verändert. -
Danke hat geholfen

Stelle mich grad so dumm an, ich weiß das irgendwo ein Klammerfehler ist..
public OnPlayerCommandText(playerid, cmdtext[]) //Befehle{
if(strcmp("/clearchat",cmdtext,true,10 == 0)
{
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
SendClientMessageToAll(-1,"");
return 1;
}Error C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(307) : error 001: expected token: ")", but found "{"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
if(strcmp("/clearchat",cmdtext,true,10 == 0)
zu:
if(strcmp("/clearchat",cmdtext,true)== 0) -
if(strcmp("/clearchat",cmdtext,true)== 0)
Ja, es klappt :)!
Aber kannst du mir erklären wieso da keine 10 hinkommt?Habe mich an den anderen Befehlen orientiert und da war auch eine

-
Ja, das Beispiel im Wiki ist einfach schlecht.
Die 10 sagt aus, dass nur die ersten 10 Buchstaben überprüft werden.Also:
/clearchatdhafgjdgshdgsdgsjdhasjkd
würde erkannt werden als:
/clearchatZufällig sind es eben genau 10 Buchstaben.
Wäre der Befehl aber:
/cc
und du gibst
/ccjhdkasdhashdashd
ein, dann würde es nicht erkannt werden. Das ist nicht wirklich toll, da die Spieler es dann nicht mehr blicken.Das macht nur dann Sinn, wenn du es wirklich so haben willst.
10 = Es wird nur bis zum 10. Buchstabe auf Gleichheit geprüft.
-
Gibt es irgende bestimmten Menge an Datensätzen, bei der sich die Verwendung von MySQL lohnt?
Bei kleineren Datensätzen ist ja eigentlich SQL-Lite besser, oder? -
Gibt es irgende bestimmten Menge an Datensätzen, bei der sich die Verwendung von MySQL lohnt?
Bei kleineren Datensätzen ist ja eigentlich SQL-Lite besser, oder?
Das kommt auch auf die Operationen an. Generell ist aber SQLite (meistens) schneller: https://www.sqlite.org/speed.html
Kannst es ja selbst mal testen, aber ich schätze mal selbst bei 1 Million Datensätzen ist SQLite schneller. Und das wirst du nicht erreichen.Siehe auch: http://www.sqlite.org/whentouse.html
EDIT: @Raven^: Die Zeit-Tests sind zwar veraltet (steht ja ganz groß oben dran, hab ich erst mal knall hart überlesen), aber trotzdem dürften kleinere Datenbanken mit SQLite schneller sein, vor allem weil du nicht erst mit einem MySQL Server kommunizieren musst.
Hier nochmal ein Vergleich:
https://www.digitalocean.com/c…tabase-management-systems -
-
Noch ne Frage zu meinem Befehl da oben /clearchat, ich habe jetzt im Script ganz oft SendClientMessageToAll verwendet bis man den Chat nicht mehr lesen kann, das sind aber viele Zeilen im Script, kann man das nicht irgendwie verkürzen?
Für sich immer wiederholende Anweisungen kann man Schleifen verwenden:
for(new i=0; i<100; i++)
{
SendClientMessageToAll(-1,"");
}Das würde dir jetzt 100x eine Nachricht ausgeben, ohne Inhalt.
Hier noch ein Tutorial: http://forum.sa-mp.com/showthread.php?t=305770
