Library of Enlightenment Script

    • Library of Enlightenment Script

      Nach dem Vorschlag/Hilfegesuch bei Elrath.com von Neckie [hier: elrath.com/forums/index.php?s=…=550&view=findpost&p=3387]
      habe ich mal dieses Script geschrieben.

      Es wandelt ein normales Gebäude auf der Karte (getestet mit Hütte des Magiers) in eine "Library of Enlightenment"(Bibliothek der Erleuchtung) um.
      Wenn ein Held, der diese besucht, bestimmte Vorraussetzungen erfüllt, werden alle vier Grundattribute des Helden um 2 erhöht. Jeder Held kann sie natürlich nur einmal besuchen.

      In der Funktion isHeroWorthy() wird überprüft, ob der Held berechtigt ist, die Bibliothek zu besuchen.
      So wie es im Moment ist, darf der Held nur rein, wenn er
      -entweder diplomatie hat und Level 4 oder höher ist,
      -oder Führungskraft hat und Level 7 oder höher ist,
      -oder Level 10 oder höher ist.
      Das kann man aber nach Belieben anpassen. Wenn die Zeile "return 1" in der funktion ausgeführt wird, darf der Held rein, wenn die Zeile "return nil" ausgeführt wird, darf er nicht rein.

      Die Nachrichten, die mit ShowFlyingSign angezeigt werden sind Textdateien im Unicode-Format im Verzeichnis der Map, wobei der Pfad natürlich an den Map-Namen angepasst werden muss. Sie enthalten bei mir den selben Text wie in den print() funktionen darüber.

      Zur Installation:
      Einem normalen Gebäude auf der Karte den Namen "Libraryofenlightenment" geben und dieses Script unter MapProperties/Script/Edit Script einfügen.

      Achtung:
      - Es funktioniert natürlich nur auf Singleplayermaps
      - Es ist nicht vollständig getestet(also bitte Fehler, Bugs etc hier melden ;)
      - Ohne Veränderungen am Script funktioniert es nur mit einer Bibliothek.

      Achso, der Bonus kann natürlich auch frei angepasst werden, in einer neueren Version lagere ich das vielleicht auch noch in eine externe Funktion aus, damit es leichter anzupassen ist.

      Brainfuck-Quellcode

      1. ---------------------------
      2. --begin of library script--
      3. --Version 0.1beta english--
      4. --idea by Neckie[http://elrath.com/forums/index.php?showtopic=550]
      5. --edited and completed by makrise[www.drachenwald.net]
      6. --In my Testmap the ShowFlyingSign-messages contain the same text as in the print-function above them.
      7. -------------------------
      8. visitedHeroes={} --define table for heroes who already visited the library.
      9. -------------------------
      10. function isHeroWorthy(heroname)
      11. if HasHeroSkill(heroname, 30) == true and GetHeroLevel(heroname) >=4 then -- if the hero got diplomacy and its level is higher or equal to 4
      12. return 1 -- worthy
      13. elseif HasHeroSkill(heroname, 4) == true and GetHeroLevel(heroname) >=7 then -- if the hero got leadership and its level is higher or equal to 7
      14. return 1 -- worthy
      15. elseif GetHeroLevel(heroname) >=10 then
      16. return 1 -- worthy
      17. else
      18. return nil -- not worthy
      19. end;
      20. end;
      21. -------------------------
      22. function library(heroname)
      23. print("Welcome to the Library, "..heroname);
      24. if not isHeroWorthy(heroname)==nil then -- check by heroname, so hero can't reenter when hired by someone else
      25. if not visitedHeroes[heroname]==1 then --if the hero has not already visited
      26. print("You are worthy and you have not visited the Library before. You may enter now!");
      27. ChangeHeroStat(heroname, 1, 2);
      28. ChangeHeroStat(heroname, 2, 2);
      29. ChangeHeroStat(heroname, 3, 2);
      30. ChangeHeroStat(heroname, 4, 2);
      31. -- Set visited flag to hero (so hero should not be able to re-enter the library, even if another player hired the hero)
      32. visitedHeroes[heroname]=1;
      33. print("Your Attributes were increased by 2. Thank you for visiting our library.");
      34. ShowFlyingSign("/Maps/SingleMissions/libraryofenlightenment/library_visit_success.txt","Libraryofenlightenment",GetCurrentPlayer(),3);
      35. --MarkObjectAsVisited('Libraryofenlightenment', heroname);--Doesn't seem to work as it should
      36. else
      37. print("I'm Sorry, but I can't help you. You already visited the Library.")
      38. ShowFlyingSign("/Maps/SingleMissions/libraryofenlightenment/library_already_visited.txt","Libraryofenlightenment",GetCurrentPlayer(),2);
      39. end;
      40. else
      41. print("Go Away. You are not worthy!");
      42. --maybe add a MessageBox with requirements here
      43. ShowFlyingSign("/Maps/SingleMissions/libraryofenlightenment/library_not_worthy.txt","Libraryofenlightenment",GetCurrentPlayer(),2);
      44. end;
      45. end;
      46. ------------------------
      47. SetObjectEnabled('Libraryofenlightenment',nil);
      48. Trigger(OBJECT_TOUCH_TRIGGER, 'Libraryofenlightenment', 'library');
      49. --^^End of Library Script^^--
      50. -----------------------------
      Alles anzeigen
      "Well, things just got simpler. And a lot more complicated."
    • mrx4 is eigentlich simpelste Logik (obwohl ich in ner IT Schulung ne menge Leute getroffen habe dehnen sogar die abging, ka was die als ITler machen wollten). besorg die nen Simples Basic Buch oder besser eins über C dann steigst du da auch relativ schnell durch. diese langen Kolonen sehen zwar immer gefährlich aus aber wenn du erst mal weiss wofür bestimmte Befehle stehen kannste das auch.
      nette Idee Xanadu wieder aufleben zu lassen, leider gibts ja kein Gebäude was dem ansatzweise ähnlich sieht :(
      Die Sense gehört zwar nicht zu den wichtigsten und bedeutsamsten Kriegswaffen, aber wer sich auf der falschen Seite einer Bauernrevolte befindet macht rasch die Erfahrung daß sie in geübten Händen eine Menge Unheil anrichten kann.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Novarius ()