[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
  • auf einen bestimmten string setzen (den ich noch nicht habe)

    Du bekommst doch einen Fehler, zeig uns doch einfach mal die Zeile, wie du es bis jetzt machst.
    und das new PlayerInfo würde ich gern noch sehen



    zu:

    Das mit dem strcat ist ein richtig schlechter Ratschlag, denn sobald das 2x aufgerufen werden sollte...hat der das 2x da drinnen stehen.


    und format ist ultra lahm, wieso nicht einfach durch eine direkte Zuweisung lösen.


    Nur in den seltensten Fällen ist format nötig.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Du bekommst doch einen Fehler, zeig uns doch einfach mal die Zeile, wie du es bis jetzt machst.und das new PlayerInfo würde ich gern noch sehen

    new PlayerInfo[MAX_PLAYERS][pInfo];


    Ja und das ist der error:
    error 047: array sizes do not match, or destination array is too small


    Fehlerzeile: PlayerInfo[playerid][pFunktionName] = "namebeispiel";




    zu:strcat(PlayerInfo[playerid][pFunktionName], "namebeispiel", MAX_PLAYER_NAME);
    oder:
    format(PlayerInfo[playerid][pFunktionName], MAX_PLAYER_NAME, "namebeispiel");


    Was dir lieber ist.


    Wird das Enum dann auch Global gesetzt im Script also kann ichs dann auch abspeichern und


    in nem anderen public verwenden ?

  • Das mit dem strcat ist ein richtig schlechter Ratschlag, denn sobald das 2x aufgerufen werden sollte...hat der das 2x da drinnen stehen.

    Natürlich muss man sich den Funktionen bewusst sein.
    In dem Fall, dass man es zweimal setzt, müsste man die Variable vorher leeren. Aber gut, habe es angepasst, damit keine Missverständnisse auftreten.



    und format ist ultra lahm, wieso nicht einfach durch eine direkte Zuweisung lösen.

    Weil es nicht geht, probiere es doch aus.
    Das geht nur, wenn deine direkte Zuweisung exakt die Länge MAX_PLAYER_NAME-1 (wegen EOS) hat.




    Wird das Enum dann auch Global gesetzt im Script also kann ichs dann auch abspeichern und


    in nem anderen public verwenden ?

    Ja.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Das geht nur, wenn deine direkte Zuweisung exakt die Länge MAX_PLAYER_NAME-1 (wegen EOS) hat.

    Nein, das geht solange das Array das du zuweisen willst kleiner ist, als das wo es rein soll.


    C
    new a[200], b[100];
    
    
    a = b; //No Problemo
    b = a; //Problem..weil 200 nicht in 100 reinpassen.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Nicht in dem Fall. Probiere es aus bevor du etwas behauptest.

    Ja ich weiß ja nicht mal genau, was er machen will, das hat er ja nicht gesagt, aber prinzipiell kann man das direkt zuweisen.



    C
    enum pInfo
    {
    	pFunktionName[MAX_PLAYER_NAME]
    };
    new Spieler[pInfo], b[MAX_PLAYER_NAME] = "Hallo";
    
    
    Spieler[pFunktionName]=b;

    Ist ja kein Problem.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ist wieder nicht das gleiche. In deinem Beispiel hat das Array keinen Index für die playerid.

    Das macht keinen Unterschied. Geht trotzdem, deshalb.


    Es kommt nur auf die Deklarations Größe an.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Natürlich macht es das.

    Ich sagte Deklarations Länge, schau auf mein Beispiel.


    Und dabei ist es unerheblich ob da noch n index zwischen ist oder nicht.


    Aber ist auch egal, er hat sich ja eh für format entschieden.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Und dabei ist es unerheblich ob da noch n index zwischen ist oder nicht.

    Der Code aus der Frage hat diesen Index, und das führt unweigerlich dazu, dass eine direkte Zuweisung nur dann geht, wenn die deklarierte Länge exakt der zugewiesenen Länge (plus EOS) entspricht, sonst nicht.


    Deine Beispiele sind alle schön, haben nur alle nichts mit der Frage zu tun. Ich habe bei deinen Beispielen auch nie behauptet, dass diese nicht funktionieren. Lediglich die direkte Zuweisung, wie sie im Code von JacLos verwendet wird und auch exakt so in meinem Beispiel wiedergegeben wird, funktioniert nicht. Darum ging es, nicht um sonst irgendwelche Zuweisungen, die du in deinen Beispielen bringst. Dass diese funktionieren tut nichts zur Sache, dass der explizit geforderte Anwendungsfall eben nicht mit einer direkten Zuweisung funktioniert.


    Damit ist diese - mal wieder - völlig sinnfreie Diskussion für mich beendet. Eine direkte Zuweisung ist in diesem expliziten Fall nicht möglich (außer bei exakter Länge). Das kannst du einsehen oder auch nicht. Fakt ist, es geht nicht.


    Ende.

  • Damit ist diese - mal wieder - völlig sinnfreie Diskussion für mich beendet. Eine direkte Zuweisung ist in diesem expliziten Fall nicht möglich (außer bei exakter Länge). Das kannst du einsehen oder auch nicht. Fakt ist, es geht nicht.

    Du weißt doch gar nicht was er zuweisen will, wtf.


    Er will sicher keinen statischen Wert zuweisen, sondern etwas aus einer Variable.


    Und da kann man das genau so machen:



    C
    enum tEnum {
    	e_Name[MAX_PLAYER_NAME] //24 Zeichen
    };
    new testArray[MAX_PLAYERS][tEnum];
    
    
    //Dann da wo er was zuweisen will, was du auch nicht weißt, deshalb hatte ich ihn gefragt...
    new name[MAX_PLAYER_NAME],x;
    if(sscanf(params,"sd",name,x)) return Bla(..);
    testArray[playerid][e_Name] = name; //Man kann das direkt so zuweisen

    Es kommt halt darauf an, was genau er vor hat.


    Da er aber darauf nicht geantwortet hat und du das nicht gefragt hast, kannst du es auch gar nicht wissen.


    Klar geht es mit format, strcat, strmid oder what ever. Gibt ja viele Möglichkeiten.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Du weißt doch gar nicht was er zuweisen will, wtf.
    Er will sicher keinen statischen Wert zuweisen, sondern etwas aus einer Variable.

    Meine Herrn.
    Natürlich hat er geantwortet. Wenn du dort irgendetwas anderes rein interpretierst, tut das nach wie vor nichts zu Sache.

    new PlayerInfo[MAX_PLAYERS][pInfo];

    PlayerInfo[playerid][pFunktionName] = "namebeispiel";


    Und jetzt ist gut. Kindergarten hier.



    ========


    super, danke

    Gerne.
    Bitte unterlasse zukünftig diese Vollzitate von gesamten Posts mit Unterzitaten. Das macht keinen Sinn und stellt einen Missbrauch der Zitat-Funktion dar, was zu Verwarnungen führen kann. Das wurde dir jetzt mehrfach gesagt.