u_quest.txt 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. function stage.increase(player) {
  2. $stage++;
  3. quest.display(player, $quest_name, $stage, $all_stages);
  4. sound = sound.get("entity.experience_orb.pickup");
  5. category = sound.getCategory("master");
  6. sound.spawnForPlayer(player, sound, category);
  7. }
  8. function quest.start(player, path) {
  9. script = script.start(path, "utils/u_quest", "utils/u_general");
  10. if(script == null) {
  11. msg("dev", "quest not started");
  12. return;
  13. }
  14. quest.addPlayer(script, player);
  15. script.setVar(script, "player", player);
  16. script.setVar(script, "script", script);
  17. script.callEvent("quest_start", script);
  18. inv.close(player);
  19. }
  20. function player.getShipProgress(player_or_id) {
  21. config = playerdata.getStory(player_or_id);
  22. return config.getDouble(config, "ship.progress", 0);
  23. }
  24. function player.setShipProgress(player_or_id, progress) {
  25. config = playerdata.getStory(player_or_id);
  26. old_progress = config.getDouble(config, "ship.progress", 0);
  27. if(progress > old_progress) {
  28. config.set(config, "ship.progress", progress);
  29. config.saveAsync(config);
  30. }
  31. }
  32. function human.giveItem(human_name, player, needed_type_or_tag, needed_amount) {
  33. if(needed_amount == 0) {
  34. return -1;
  35. }
  36. item = living.getEquip(player, "hand");
  37. item_type = item.getType(item);
  38. if(item_type == "minecraft:air") {
  39. return needed_amount;
  40. }
  41. human_name = concat("§d", human_name);
  42. needed = false;
  43. tag_check = false;
  44. if(text.class(needed_type_or_tag) == "String") {
  45. if(item_type == needed_type_or_tag) {
  46. needed = true;
  47. }
  48. } else {
  49. if(item.hasTag(needed_type_or_tag, item)) {
  50. needed = true;
  51. tag_check = true;
  52. }
  53. }
  54. if(needed) {
  55. rest_item = player.removeItem(player, read.item(item_type, needed_amount));
  56. rest_item_amount = item.getAmount(rest_item);
  57. if(rest_item_amount > 0) {
  58. rest_item = player.removeItemNbt(player, rest_item);
  59. rest_item_amount = item.getAmount(rest_item);
  60. if(rest_item_amount > 0) {
  61. if(tag_check) {
  62. rest_item = player.removeItemTag(player, needed_type_or_tag, rest_item_amount);
  63. rest_item_amount = item.getAmount(rest_item);
  64. if(rest_item_amount > 0) {
  65. msg.prefix(player, human_name, concat("Ich brauche bitte noch ", text.number(rest_item_amount), " Stück davon."));
  66. }
  67. } else {
  68. msg.prefix(player, human_name, concat("Ich brauche bitte noch ", text.number(rest_item_amount), " Stück davon."));
  69. }
  70. }
  71. }
  72. return rest_item_amount;
  73. }
  74. msg.prefix(player, human_name, "Das kann ich nicht gebrauchen.");
  75. return needed_amount;
  76. }
  77. function quest.callShowShop(player, shop_type) {
  78. setScriptVar("player", player);
  79. setScriptVar("shop_type", shop_type);
  80. script.callEvent("skill_showshop");
  81. }