versuchs mit
new string[128];
bei deinem Befehl oder was auch immer..
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Hi.
Wie kann ich mehere Arrays zu einem zusammenfassen?Bespiel:
Ich habe eine Schleife in der bei jeder Wiederholung ein Wort in einem string gespeichert. Ich will nun alle diese ausgelesenen Wörter zu einem string zusammenfassen, damit ich ein TextDraw oder whatever erstellen kann.Wie mache ich das am besten?
-
Wenn wir ausschließlich von Strings reden:
new ultrastr[1024]; //Je nach Bedarf kleiner/größer machen, aber 1024 ist das maximale, was ein Textdraw anzeigen kann.
format(ultrastr,sizeof(ultrastr),"%s %s %s %s %s %s", str1, str2, str3, str4, str5,str6); // Halt so oft machen, wie viele Strings du zusammenfügen willst ;)EDIT: Wenn du es in einer Schleife machst, wobei der String immer überschrieben wird, mit dem Format einfach den String, der ausgelesen wurde an den Gesamtstring anhängen, das dann in jeder Schleifenprozedur
-
wie hänge ich das an den Gesamtstring an?
Mit "+=" ? -
Nein nein, auch mit format
format(ultrastr, sizeof(ultrastr),"%s %s", ultrastr,deinstr); //Ultrastr ist dabei der String, wo am Ende alles drin steht, deinstr der String, der in jeder Prozedur ausgelesen wird ;)
-
Rafelder: Schneller und ressourcenschonender ist es natürlich alles in eine Datei zu speichern. Aber wegen der ganzen Übersicht rate ich dir für jedes Haus eine eigene Datei zu nehmen, das dauert zwar länger aber erleichtert dir das arbeiten an Variablen erheblich (man findet sie besser usw.). Aber jeder, wie er es möchte...
-
Komischerweise wird jetzt eine Zahl ausgegeben anstatt eines Textes
stock GetWantedPlayers()
{
new
wantedname[MAX_PLAYER_NAME],
wantedplayers[1024],
i=0;
for(; i<MAX_PLAYERS; i++)
{
if(GetPlayerWantedLevel(i)>0)
{
GetPlayerName(i,wantedname,sizeof(wantedname));
format(wantedplayers,sizeof(wantedplayers)," %s, %s",wantedplayers, wantedname);
}
}
return wantedplayers;
}Was ist daran jetzt falsch??
-
Probiers mal so:
stock GetWantedPlayers()
{
new
wantedname[MAX_PLAYER_NAME];
wantedplayers[1024];
i=0;
for(; i<MAX_PLAYERS; i++)
{
if(GetPlayerWantedLevel(i)>0)
{
GetPlayerName(i,wantedname,sizeof(wantedname));
format(wantedplayers,sizeof(wantedplayers)," %s, %s",wantedplayers, wantedname);
}
}
return wantedplayers;
} -
Rafelder: Schneller und ressourcenschonender ist es natürlich alles in eine Datei zu speichern. Aber wegen der ganzen Übersicht rate ich dir für jedes Haus eine eigene Datei zu nehmen, das dauert zwar länger aber erleichtert dir das arbeiten an Variablen erheblich (man findet sie besser usw.). Aber jeder, wie er es möchte...
Ich würde gerne wissen, was genau Ressourcenschonender ist. Bin nämlich der Meinung, dass es sowohl Resourcenschonender + Übersichtlicher ist, es in einzelnen Datein zu speichern.
Darfst mich gerne eine besseren belehren, vllt dann auch im Thread der sich um Resourcenschonendes scripten dreht . -
Hö?
Was hast du jetzt geändert?
Für mich sieht das genau wie meine Version aus.Probiers mal so:
stock GetWantedPlayers()
{
new
wantedname[MAX_PLAYER_NAME];
wantedplayers[1024];
i=0;
for(; i<MAX_PLAYERS; i++)
{
if(GetPlayerWantedLevel(i)>0)
{
GetPlayerName(i,wantedname,sizeof(wantedname));
format(wantedplayers,sizeof(wantedplayers)," %s, %s",wantedplayers, wantedname);
}
}
return wantedplayers;
} -
-
Semikolons statt Kommas bei den new gemacht
-
aber dann müsste man von i=0; auch noch ein "new" hinschreiben, weil das obere gilt ja nur so lange bis ein Simikolon kommt
-
Ups, stimmt, bin auch schon etwas müde
stock GetWantedPlayers()
{
new wantedname[MAX_PLAYER_NAME];
new wantedplayers[1024];
new i=0;for(; i<MAX_PLAYERS; i++)
{
if(GetPlayerWantedLevel(i)>0)
{
GetPlayerName(i,wantedname,sizeof(wantedname));
format(wantedplayers,sizeof(wantedplayers)," %s, %s",wantedplayers, wantedname);
}
}
return wantedplayers;
}So also!
-
Es wird aber immer noch eine Zahl ausgegeben: die 32 immer
Edit: Problem gelöst, einmal aus versehen %d angegeben
-
Goldkiller: Naja ich muss auch mal gucken, so ganz sicher bin ich mir nicht. Ich werd mich morgen nochmal genauer informieren. Also splitet man die Variablenmengen ind einzelne Kategorien und speichert diese einzeln in verschiedenen Dateien, erfolgen ja viele Dateizugriffe. Speichert man alles in eine, erfolgt nur ein Dateizugriff.
BloodyEric: for i<MAX_PLAYERS; i++) hehe geh dich mal ausschlafen^^
-
Wie rechne ich mehrere Werte zu einem zusammen und weise diesen Wert eine Variable zu?
Habs so gemacht:
speed = X+Y+Z;Kriege aber folgenden Error:
H:\Projekte\Server\SA-MP Server\filterscripts\test.pwn(18) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Warning.
-
Sollte so richtig sein...Hast du speed auch als Float defininiert?
Wenn du's gerundet ham willst, mach einfach:
speed = floatround(X + Y + Z); -
Wieso geht dieser Dialog überall=?
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!IsPlayerInRangeOfPoint(playerid, 1.0,-49.9836,-296.1992,5.4297))
{
if(strcmp("/test", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,1,0,"Aufträge"," Auftrag:\n Burgershot\n\n Aufgabe:\n Bringe Pattys zu den Burgershot läden\n\n Vergütung:\n 5.000$","Ok","Weiter");
}
else
{
ShowPlayerDialog(playerid,1,0,"Aufträge"," Ok, wen du den Auftrag annehmen willst\n klick auf Annehmen und geht zu Roten Showme.\n Um die Tour zu starten gebe im LKW /BS ein.\n Viel Spaß beim Fahren.","Annehmen","Zurück");
}
}
return 1;
} -
Wegen dem !
public OnPlayerCommandText(playerid, cmdtext[])
{
if(IsPlayerInRangeOfPoint(playerid, 1.0,-49.9836,-296.1992,5.4297))
{
if(strcmp("/test", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,1,0,"Aufträge"," Auftrag:\n Burgershot\n\n Aufgabe:\n Bringe Pattys zu den Burgershot läden\n\n Vergütung:\n 5.000$","Ok","Weiter");
}
else
{
ShowPlayerDialog(playerid,1,0,"Aufträge"," Ok, wen du den Auftrag annehmen willst\n klick auf Annehmen und geht zu Roten Showme.\n Um die Tour zu starten gebe im LKW /BS ein.\n Viel Spaß beim Fahren.","Annehmen","Zurück");
}
}
return 1;
} -
Wegen dem OnPlayerCommandText?
//Edit sry habs gesehen bitte Beitrag löschen