[SAMMELTHREAD] Kleine Scripting Fragen

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 ;)

  • 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??

    Einmal editiert, zuletzt von Winnetou ()

  • 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.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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! ;)

  • 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 CompuPhase



    1 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);


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • 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;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen