Random

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
  • Hallo,


    ich würde gerne, basierend auf die Sprachauswahl des Spielers, einen Array, bzw. eine entsprechende Spalte eines Arrays durchgehen und random etwas dort auswählen lassen.


    new TrashCan_Items[][][] =
    {
    {"ein Medikit", "a Medikit"},
    {"eine Rüstung", "an Armor"},
    {"ein halbes Brot", "half a bread"},
    {"ein Stück Brot", "a piece of bread"},
    {"eine halbvolle Flasche Wasser", "a half-full bottle of water"},
    {"eine volle Flasche Wasser", "a full bottle of water"},
    {"eine halbe Gurke", "half a cucumber"},
    {"eine Gurke", "a cucumber"},
    {"eine halbe Karotte", "half a carrot"},
    {"eine Karotte", "a carrot"},
    {"eine Ratte", "a rat"},
    {"eine Schlange", "a snake"},
    {"eine Granate", "a grenade"},
    {"ein bisschen Geld", "a little money"},
    {"sehr viel Geld", "very much money"},
    {"einen Baseballschläger", "a baseball bat"},
    {"eine Katana", "a Katana"},
    {"einen Golfschläger", "a golf club"},
    {"einen schleimigen Dildo", "a slimey dildo"}
    };


    Also, wenn der Spieler Deutsch ist, dann soll "random" zufällig NUR von der ersten Spalte die Einträge auswählen, nicht von der zweiten.
    Wie stelle ich das am besten an?

  • Was man aber auch noch machen kann ist, die Sprache in einer Int-var zuspeichern (also als Zahl).
    Dann sieht es nur noch so aus.


    PlayerSprache[playerid] = 0; //Deutsch
    PlayerSprache[playerid] = 1; //Englisch
    new rand = random(sizeof(TrashCan_Items));
    format(str, sizeof(str), "%s", TrashCan_Items[rand][PlayerSprache[playerid]]);


    P.s. seit wann geht das so 'if(language == "en")' wir sind in PAWN nicht PHP also mit strcmp :D

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • @NicoWiss:
    "Meine Meinung": Aber wenn man Hilft, sollte dies schon Ordentlich sein und nicht mit Platzhaltern überschüttet, wo sich der sogenannte Nobie beim Scripten garnicht mehr klar kommt.
    Das kann man Höchstens mal machen, wenn Jemand schon erfahren ist und gerade nur "Brain AFK" ist.


    Z.b. Wenn du neuling wärst und brauchst Hilfe bei ein Haussystem, nützt es dir und anderen nichts, wenn ich was vom Bizsystem schreibe

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Der Threadersteller hat sich nichtmal ueber die Funktion informiert, also kaue ich dem sicher nichts vor.
    Ich war schon so kulant und habe, trotz Beispiel auf der verlinkten Seite, ein Beispiel fuer seinen Code angefertigt. Den Rest sollte man selbst hinbekommen.
    Den Fehler habe ich absichtlich eingebaut, da ich im Threadersteller eine gewisse Affinitaet zum Copy and Paste erkenne und keine Eigeninitiative erkenne.


    Dein Vergleich ist uebrigens mal total out of context.

  • jedoch bei ANfängern in sachen Scripting, halte ich dies für nicht Fördernd.
    Nemmen wir mal das Beispiel, wenn man dir was falsches beibringt, bekommst du da auch irgendswann das Heulen, weil du es dir angewöhnt hast(ich hätte es auch lieber so wie in PHP also ohne strcmp).

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • jedoch bei ANfängern in sachen Scripting, halte ich dies für nicht Fördernd.


    Jeder Anfänger sollte in der Lage sein wenn alle stricke reißen bei Google einzugeben "pawn strings vergleichen"


    Ist man dazu nicht in der Lage sollte man möglicherweise das scripten unterlassen.
    Denn das ist entweder Dummheit oder Faulheit.


    Beides sollte man beim Scripten und auch beim Programmieren nicht sein.


    Da kann es keine zwei Meinungen geben - denn einem Anfänger etwas vorzukauen war noch nie hilfreich(siehe Youtube Tutorials)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • War schon zu spät für meine Konzentration. -.-'


    Ich hätte allerdings eine neue Frage. Und zwar, wie ich ein Intervall bei random angeben kann.
    Das ganze erstreckt sich ja immer bis zu einem Maximalwert, den man selbst festlegen kann. Wie kann man nun den Minimalwert beeinflussen?

  • War schon zu spät für meine Konzentration. -.-'


    Ich hätte allerdings eine neue Frage. Und zwar, wie ich ein Intervall bei random angeben kann.
    Das ganze erstreckt sich ja immer bis zu einem Maximalwert, den man selbst festlegen kann. Wie kann man nun den Minimalwert beeinflussen?


    Beispiel:
    Du willst 100-400 als Random haben, dann machst du (random(301)+100) dann hast du eine random Zahl zwischen 100 und 400

  • Auch wenn der Thread bereits erledigt ist, aber bei dem was hier zum Teil gesagt wurde muss man erst mal eine Wand aufsuchen gegen die man rennen kann. :dash:


    Hier der Grund:

    P.s. seit wann geht das so 'if(language == "en")' wir sind in PAWN nicht PHP also mit strcmp :D
    (...)
    "Meine Meinung": Aber wenn man Hilft, sollte dies schon Ordentlich sein und nicht mit Platzhaltern überschüttet, wo sich der sogenannte Nobie beim Scripten garnicht mehr klar kommt.
    Nemmen wir mal das Beispiel, wenn man dir was falsches beibringt, bekommst du da auch irgendswann das Heulen, weil du es dir angewöhnt hast


    Du hast absolut Recht! Es bringt rein gar nichts wenn man falsche Informationen verteilt, nur damit der andere nachdenkt.
    Strings vergleicht man mit strcmp.
    if(!strcmp(sprache, "en"))


    Jeder Anfänger sollte in der Lage sein wenn alle stricke reißen bei Google einzugeben "pawn strings vergleichen"


    Und genau da haben wir das Problem, wenn die Leute hier anfangen, falsche Informationen bzw. Codes zu posten, die nicht gehen, nur damit man nachdenkt. Jetzt kommt ein Anfänger und ergoogelt sich genau diesen Thread, kopiert die Zeilen und fügt sie ein. Dann wird er/sie mit Errors zugemüllt, weil es nicht geht. Was macht er/sie also? Einen neuen Thread erstellen, und die gleiche Frage stellen. Wo ist denn da der Sinn bitte? Postet man es gleich richtig, muss erst gar kein zweiter Thread erstellt werden.
    Um eine Lösung finden zu können muss die Lösung auch korrekt dastehen. :thumbdown:


    Den Fehler habe ich absichtlich eingebaut, da ich im Threadersteller eine gewisse Affinitaet zum Copy and Paste erkenne und keine Eigeninitiative erkenne.


    :dash:
    Es sollte klar sein, dass auch andere, die nicht unbedingt hier posten diese Codes sehen und vielleicht ausprobieren. Dann geht der Code nicht, tolle Sache! Also absichtlich Fehler in den Code zu hauen ist sicher nicht der Sinn eines Forums in dem einem geholfen wird.




    Wenn euch jemand nach dem Weg fragt sagt ihr doch auch nicht absichtlich Links anstatt Rechts, nur damit der-/diejenige lernt sein/ihr Navi zu bedienen.

  • Es sollte klar sein, dass auch andere, die nicht unbedingt hier posten diese Codes sehen und vielleicht ausprobieren. Dann geht der Code nicht, tolle Sache! Also absichtlich Fehler in den Code zu hauen ist sicher nicht der Sinn eines Forums in dem einem geholfen wird.

    Dann werde ich ab sofort garnicht mehr helfen, wenn davon auszugehen ist, dass der Threadersteller sowieso alles nur kopiert. Wäre das besser, als wenn man vielleicht eine kleine Angelegenheit falsch angeht, die man eigentlich mit den Grundkenntnissen erworben haben sollte?

    Wenn euch jemand nach dem Weg fragt sagt ihr doch auch nicht absichtlich Links anstatt Rechts, nur damit der-/diejenige lernt sein/ihr Navi zu bedienen.

    Dieser Vergleich ist totaler nonsense, denn da würde man eine komplett falsche Lösung angehen, was bei mir allerdings nicht so war.


    Ich sehe es ehrlich gesagt nicht ein, jemandem eine komplette Lösung zu senden, nur weil andere eventuell den Fehler ebenfalls machen könnten.
    Wer sich ernsthaft mit der Materie auseinandersetzt, der wird den richtigen Weg finden, wer allerdings nur auf C&P setzt, der eben nicht.
    Das sind verdammte Grundkenntnisse, wer die nicht beherrscht, der sollte sie eben nochmal verinnerlichen.


    //E: Was mir bei Dir bspw. immer auffällt ist, dass Du jedem alles vorkaust. Das hilft dem Threadersteller genauso wenig, als wenn man einen winzigen Fehler einbaut, damit man nachdenkt.


    Jeffry:

  • falsche Informationen bzw. Codes zu posten, die nicht gehen


    Falsche Information sind eine Sache und Codes die nicht "gehen" eine völlig andere Sache.


    Jemanden etwas vorkauen in dem er den Code kopieren kann, wird niemanden helfen.
    Denn wir wissen ja nicht was er genau möchte, also hat man das gleiche Problem wieder.


    Wie umgeht man das Problem ?
    Richtig, in dem man ihm Denkanstöße gibt und ihm damit hilft - so wird das auch in richtigen Programmierforen vorgegangen und nicht dieses - ey jo ich schreib dir das mal.
    Der User lernt ist den meisten Fällen rein gar nichts und fragt beim nächst ähnlich Problem das gleiche.


    Postet er jetzt allerdings Code der Errors o.ä. enthällt und diese korrigiert man - ist das völlig i.O. der User sieht dann auch direkt seinen Fehler und lernt womöglich auch gleich daraus :thumbup:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Falsche Information sind eine Sache und Codes die nicht "gehen" eine völlig andere Sache.


    Ein nicht funktionierender Code ist nunmal eine falsche Information. Ich weiß nicht was du daran siehst.
    Zu dem zu kopierenden Code: Siehe etwas weiter unten, das Beispiel mit dem SAP Forum. Dort findest du komplette, funktionsfähige, ABAPs. Und ja, das hilft mehr als ein Code der nicht geht, wenn man sich damit beschäftigt.


    Ich sehe es ehrlich gesagt nicht ein, jemandem eine komplette Lösung zu senden, nur weil andere eventuell den Fehler ebenfalls machen könnten.


    Bei allem Respekt, dann bis du hier einfach nur falsch am Platz. Wenn du es nicht einsiehst, jemandem korrekt zu helfen, dann helfe lieber gar nicht, das hilft mehr, da dadurch weniger falsche Informationen im Umlauf sind.
    Werfe doch nur mal einen Blick in andere Foren, die größer sind (zum Beispiel stackoverflow, oder eines welches ich geschäftlich oft zur Recherche und zum Lernen von neuen Dingen nutze, sap.scn.com. Dort wirst du weit und breit niemanden finden, der im wahrsten Sinne des Wortes "keinen Bock hat zu helfen", nur weil der Code kopiert werden könnte. Im Gegenteil! Dort findest du zum Teil komplette, funktionsfähige, Reports (Programme) die von Helfern gepostet worden sind.
    Es ist wesentlich leichter eine Sprache anhand von Beispielen zu lernen, als wenn man sich tot-googelt und nur auf falsche Informationen stößt. Und wenn man dann auch noch einen Thread eröffnet kommt einem einer daher der nicht einsieht eine funktionsfähige Lösung zu posten. Als Hilfesuchender gibt es nichts nervigeres als Leute die einem nicht gescheit helfen.



    Und zu meinem Beispiel: Dein Code ist syntaktisch falsch, das ist genau das Gegenteil von syntaktisch richtig, eben wie Links und Rechts. Wenn jemand nicht weiß wie es geht, hilft es ihm nichts, dass er sich den Rest ja denken kann.


    => Entweder man hilft richtig, oder man lässt es ganz.



    In diesem Sinne...

  • Siehe etwas weiter unten, das Beispiel mit dem SAP Forum. Dort findest du komplette, funktionsfähige, ABAPs. Und ja, das hilft mehr als ein Code der nicht geht, wenn man sich damit beschäftigt.


    Das aber nicht immer und überall.


    Zumeist findest du dort eher Ansätze - und wenn "komplette" Lösungen dann nur solche die sich an dem Problem orientieren.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Wenn du es nicht einsiehst, jemandem korrekt zu helfen

    Das sehe ich ein, allerdings sehe ich es nicht ein, den Nutzern alles vorzukauen, wenn davon auszugehen ist, dass der Nutzer es sowieso nur kopiert und es sich nicht ansieht.
    Warum ich im aktuellen Fall davon ausgehe? Er hätte nur einmal in das Wiki der random() Funktion schauen müssen und dort ist genau seine Angelegenheit auch noch an einem Beispiel beschrieben.
    Wer das nicht tut, hat keine Lust, etwas selbst zu machen und erhofft sich hier nur fertigen Code.
    Und den bin ich ehrlich gesagt nicht bereit, zu liefern.
    Ich beispielsweise habe vieles selber recherchiert, habe Threads erst erstellt, wenn wirklich keine Information aus google oder eigenes Überlegen mehr geholfen hat.
    Und bei ihm war es eben so, dass der nur das Beispiel in der Wiki hätte kopieren müsste.
    Wer das nicht tut, hat einen vollständig funktionierenden Code nicht funktioniert.


    wenn man sich damit beschäftigt.

    Richtig, "wenn". Ist aber im aktuellen Fall (siehe oben) nicht von auszugehen und in solchen Fällen baue ich gerne mal kleine Fehler ein.

  • Zumeist findest du dort eher Ansätze - und wenn "komplette" Lösungen dann nur solche die sich an dem Problem orientieren.


    Das ist schon klar, es hat auch niemand behauptet, dass das immer der Fall ist (und warum sollte jemand ein Programm posten das nichts mit dem Problem zu tun hat??). Ein Ansatz reicht meistens völlig aus, aber nur dann wenn der auch funktioniert. Er muss ihm ja nicht gleich den ganzen Server scripten.
    Aber hier Random, das ist nicht der ganze Code, das ist ein Ansatz, nur, dass der Ansatz syntaktisch falsch ist und somit einem Hilfesuchenden nicht helfen wird. Wie gesagt, es braucht kein ganzes Programm, aber das was man postet sollte schon stimmen. Es geht nicht darum, wie viel man postet, sondern um die Korrektheit. Und ein syntaktisch falscher Code bleibt ein falscher Code, ob es jetzt ein Ansatz ist, oder ein ganzes Programm. Und wenn schon der Ansatz, das Fundament, falsch gelegt wird, dann wird der ganze Rest auch nichts. Der Ansatz ist das Wichtigste, wenn auch der falsch ist, wie im Beispiel hier, dann bringt es rein gar nichts, sondern schadet eher.


    @Mr.Reese: Du hast wohl noch immer nicht verstanden, dass es nicht darum geht demjenigen alles vorzukauen, sondern den hunderten, die den Thread danach sehen eine gescheite Lösung zu bieten, damit diese nicht jeder einzeln wieder einen Thread erstellt, nur weil sie immer wieder auf falsche, fehlerhafte oder komplett danebene Codes stoßen.
    Außerdem unterstellst du dem Threadstarter gerade, dass er keine Lust hat etwas selbst zu machen. Mit solchen Unterstellungen solltest du vorsichtig umgehen.



    Ein Code hat korrekt zu sein, ob es drei Zeilen sind, oder 300. Sonst bringt es nichts, weder für den Threadersteller, noch für alle anderen die den Thread irgendwann mal sehen.

  • Aber hier Random, das ist nicht der ganze Code, das ist ein Ansatz, nur, dass der Ansatz syntaktisch falsch ist und somit einem Hilfesuchenden nicht helfen wird.


    Okay - langsam reden wir an einander vorbei.


    Es ging nie um (syntaxisch) falschen Code sondern um vorgekauten Code - Code korrigieren OK.
    Aber nicht - "ich hab Problem XY" -> Antwort "Da haste *hier code einfügen*.


    Das bringt im Grunde nichts, weil der Gedankengang zur Problemlösung nicht vorhanden ist.
    Wie soll bspw. der Threadsteller wissen das man strings mit strcmp vergleicht, ja gibt auch andere wege aber seis drum, und nicht anders, wenn ihm jedesmal bei einem Problem der Code einfach hingeworfen wird ?
    Dann wird er sich jedesmal auf neue Fragen "wie ging das nochmal ?"


    Gehr man in diesem Thread jetzt hin und sagt.
    1. Du speicherst dir den Randomwert. In die Funktion schreibst du dann die größe des Arrays (bspw. mit sizeof)
    2. Du prüfst mit strcmp deinen gewünschten String (Anmerkung strcmp = 0 -> wert identisch)
    3. Nach der Prüfung lässt du deinen Code ausführen.


    Das wird in sovielen Foren gemacht, warum muss man denn hier wirklich alles vorkauen - damit sich noch mehr leute "Programmierer / Scripter" nennen dürfen ?
    Eh - das ist nicht Sinn und Zweck des ganzen :sleeping:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski