gpvp.txt 161 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816
  1. /* TODO before RELEASE
  2. //Todo: nur Skills anzeigen, die der Spieler auch aktiv hat
  3. //Herzpartikel
  4. //testphase
  5. //testphase --> u_gpvp
  6. */
  7. /* Erklärung für Codeverständnis
  8. DB-Table gilden
  9. - gilden_id GildenID
  10. - g_type Unterscheidung Gruppe/Gilde 0/1
  11. - gold_delay Anzahl der Tage, seit eine Gilde im Minus ist
  12. - gold Gold
  13. - name Name
  14. - block_world Location des Gildenblocks (Welt)
  15. - block_x Location des Gildenblocks (x)
  16. - block_y Location des Gildenblocks (y)
  17. - block_z Location des Gildenblocks (z)
  18. - safetime Wann die Gilde das nächste Mal angegriffen werden kann
  19. - plot_id Plotid der Gilde
  20. - share_xp <true/false>; Gruppe/Gilde XP-Teilung an/aus
  21. - share_gold <true/false>; Gruppe/Gilde Gold-Teilung an/aus
  22. DB-Table gildenplayer
  23. - player_id PlayerID
  24. - gilden_id GildenID
  25. - gold_atm Gold, das der Spieler bei sich trägt
  26. - gold_bank Gold, das der Spieler in der Bank aufbewahrt
  27. - next_join <time>; wann ein Spieler wieder einer Gilde beitreten kann
  28. - rang Rang eines Spielers innerhalb der Gilde/Gruppe
  29. - nick Nickname eines Spielers in der Gilde
  30. DB-Table guild_reward (monatsübersicht der täglichen belohnungen aller spieler)
  31. - player_id
  32. - day
  33. - opened 1 = kiste(geöffnet), null = nicht geöffnet oder zukunft
  34. CONFIGS
  35. gilden_data
  36. player_data/gpvp_data
  37. gvar gildencounter <"SERVER"> <id>; forlaufende ID, Anzahl aller Gilden und Gruppen
  38. map adcooldown <player_id>, <time>; 180 Sekunden Cooldown für "ad"-Weltnachrichten
  39. map bindingmenus <player_id>, <inv>; Enthält die Hotkey-Invs zum Skills casten
  40. map tempskilltosave <player_id>, <skill_name>; Enthält den zuletzt gewählten Skill zum Skills casten
  41. map fightplayers <plot_id>, <Set>; Set mit allen kämpfenden Spielern am Kampfgrundstück
  42. map clicks <gildenblockloc>, <0-200>; HP des Gildenblocks
  43. map blocktime <gilden_id>, <time.getMillis()>; Damit Gildenblock nur 1 Mal pro Sekunde geklickt werden kann
  44. map gstatus <plot_id>, <0/1>; gstatus: 0 = ersten 60 minuten angriffsphase; 1 = 30 minuten stehl phase
  45. list gfights <array>; Array: Defender_ID, Attacker_ID, Plot_ID (auf der gekämpft wird), Set(mit allen Spielern eines Kampfes)
  46. set forbiddenblocks <loc>; Block unter Gildenblock (von allen Gildenblocks)/Artefakt
  47. set forbiddenblocks2 <loc>; Berech 11x11x7 um den Gildenblock/bzw 17x17x8 um das Artefakt
  48. list invitations <array>; Liste mit offenen Gilden-Einladungen (Arrays)
  49. list groupinvitations <array>; Liste mit offenen Gruppen-Einladungen (Arrays)
  50. list gmoveids <array>; Liste mit player_move-ID's und den zugehörigen gilden_id's
  51. list checkwinlist <plot_id>; Liste mit Kampfgrundstücken zur Überprüfung, ob die Verteidigung erfolgreich war
  52. list stealends <plot_id>; Liste mit Kampfgrundstücken, zur Beendigung der Stehl-Phase
  53. list warned <player_id>; Liste mit allen Spielern auf fremden Grundstücken
  54. list scheduledtax <gilden_id>; Verzögerte Abrechnung der Steuer, weil Gilde im Kampf ist
  55. list stealers <array>; Liste mit Arrays mit Infos aller stehlenden Gilden (Name, Location, Stehl-Status)
  56. */
  57. //Databank-Statements
  58. guild.createTables();
  59. counter = 0;
  60. while(worker.hasWork()) {
  61. msg("dev", "Gpvp holded ", ++counter);
  62. waitfor(20);
  63. }
  64. //Events
  65. event.load("bucket_use");
  66. event.load("fishing");
  67. event.load("entity_click");
  68. event.load("living_death");
  69. event.load("custom_command");
  70. event.load("command");
  71. event.load("block_place");
  72. event.load("block_break");
  73. event.load("block_click");
  74. event.load("inv_click");
  75. event.load("player_move");
  76. event.load("player_login");
  77. event.load("player_logout");
  78. event.load("player_pre_respawn");
  79. event.load("player_post_respawn");
  80. event.load("player_pickup");
  81. event.load("portal");
  82. event.load("inv_close");
  83. event.load("item_air_click");
  84. event.load("living_drop");
  85. event.load("item_use_finish");
  86. event.load("entity_join");
  87. //Locations
  88. gamesworld = world.get("games");
  89. gpvpworld_name = "gpvp_spawn";
  90. gpvpworld = world.get(gpvpworld_name);
  91. config = getScriptVar("server_config");
  92. serverspawn = read.location(config.getString(config, "serverspawn", "games:0:0:0"));
  93. gildenspawnloc = read.location(config.getString(config, "gildenspawn", "games:0:0:0"));
  94. gildenvillagerloc = loc.new(gpvpworld, 960, 53, 918);
  95. answer42loc = loc.new(gpvpworld, 1030, 37, 964);
  96. grabbyloc = loc.new(gpvpworld, 103, 110, 473);
  97. grabbyprisonloc = loc.new(gpvpworld, 27.5, 110, 427.5);
  98. dailyreward_chest_loc = loc.new(gpvpworld, 1010, 37, 951);
  99. arte_main_loc = loc.new(gpvpworld, 1245, 69, 991);
  100. pvpsuedfromtploc = loc.new(gpvpworld, 73.5, 129, 511.5);
  101. pvpsuedtotploc = loc.new(gpvpworld, 82, 68, 536.5);
  102. //Sonstige Variablen
  103. goldpräfix = "§eGold";
  104. chestpräfix = "§8Schloss";
  105. quests_präfix = "§dQuests";
  106. arte_präfix = "§9Artefakt";
  107. fehlerpräfix = "§cFehler";
  108. commandspräfix = "§6Commands";
  109. gruppepräfix = "§9Gruppe";
  110. gildepräfix = "§6Gilde";
  111. try {
  112. spawn_plot = list.getIndex(plot.get(gildenspawnloc), 0);
  113. spawn_plot_id = plot.getId(spawn_plot);
  114. } catch {
  115. msg("dev", getSpacer());
  116. msg("dev", "§cKeine PlotID für Gildenspawn erkannt!");
  117. msg("dev", "§cLocation: §r", gildenspawnloc);
  118. msg("dev", "§cScript beendet!");
  119. msg("dev", getSpacer());
  120. term();
  121. }
  122. buypricegblock = 2000;
  123. gildenvillagername = "Gildenmeister";
  124. bankvillagername = "Bänker";
  125. skill_cast_inv_name = "Skill anklicken > Hotkey anklicken";
  126. level_up_sound = sound.get("minecraft:entity.experience_orb.pickup");
  127. sound_category_player = sound.getCategory("player");
  128. air_item = read.item("minecraft:air");
  129. scroll = read.item("km:scroll");
  130. belagerungsitem = read.item("{id:\"minecraft:obsidian\",Count:1b,tag:{HideFlags:1,Enchantments:[{lvl:1s,id:\"minecraft:unbreaking\"}],display:{Lore:['{\"text\":\"Belagerungsturm\"}'],Name:'{\"text\":\"Belagerungsturm\"}'}}}");
  131. artefact = read.item("km:artefact");
  132. guild_block = read.item("km:guild_block");
  133. leaves_tag = block.getTag("minecraft:leaves");
  134. signs_tag = block.getTag("minecraft:signs");
  135. age_property = block.getProperty("age_0_7");
  136. leather_type = "minecraft:leather";
  137. feather_type = "minecraft:feather";
  138. ink_sac_type = "minecraft:ink_sac";
  139. white_wool_type = "minecraft:white_wool";
  140. porkchop_type = "minecraft:porkchop";
  141. rabbit_foot_type = "minecraft:rabbit_foot";
  142. saddle_type = "minecraft:saddle";
  143. bone_type = "minecraft:bone";
  144. gunpowder_type = "minecraft:gunpowder";
  145. infested_cracked_stone_bricks_type = "minecraft:infested_cracked_stone_bricks";
  146. string_type = "minecraft:string";
  147. obsidian_type = "minecraft:obsidian";
  148. wheat_type = "minecraft:wheat";
  149. potato_type = "minecraft:potato";
  150. carrot_type = "minecraft:carrot";
  151. moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -414, 87, 120), loc.new(gamesworld, -410, 89, 121), 5, -1);
  152. x1 = plot.getMinX(spawn_plot);
  153. y1 = plot.getMinY(spawn_plot);
  154. z1 = plot.getMinZ(spawn_plot);
  155. x2 = plot.getMaxX(spawn_plot);
  156. y2 = plot.getMaxY(spawn_plot);
  157. z2 = plot.getMaxZ(spawn_plot);
  158. moveidspawn = event.addMoveData(loc.new(gpvpworld, x1, y1, z1), loc.new(gpvpworld, x2, y2, z2), 20, -1);
  159. //Nur Argumente von (Gilden-)Befehlen, für die man in einer Gilde sein muss
  160. set.new(gcommandsset);
  161. set.addAll(gcommandsset, "invite", "newpos", "fight", "leader", "nick", "gold", "xp");
  162. set.addAll(gcommandsset, "officer", "adel", "degrade", "kick", "leave", "deposit");
  163. set.addAll(gcommandsset, "steal", "search", "disband", "home", "msg", "mail", "withdraw");
  164. map.new(aliasmap);
  165. map.add(aliasmap, "pinfo", "playerinfo");
  166. map.add(aliasmap, "g", "gilde");
  167. map.add(aliasmap, "guild", "gilde");
  168. map.add(aliasmap, "bank", "money");
  169. map.add(aliasmap, "artefact", "arte");
  170. map.add(aliasmap, "artefakt", "arte");
  171. enchanting_menus = map.new();
  172. g_block_entities = map.new();
  173. chest_privat = map.new();
  174. chest_guild = map.new();
  175. chest_adel = map.new();
  176. chest_officer = map.new();
  177. gpvpquests = map.new();
  178. tempskilltosave = map.new();
  179. bindingmenus = map.new();
  180. gstatus = map.new();
  181. fightplayers = map.new();
  182. clicks = map.new();
  183. blocktime = map.new();
  184. adcooldown = map.new();
  185. gfights = list.new();
  186. setScriptVar("gfights", gfights);
  187. list.new(arte_ruin_forbidden_players);
  188. list.new(carry_arte_list);
  189. list.new(hunger1_list);
  190. list.new(gmoveids);
  191. list.new(checkwinlist);
  192. list.new(stealends);
  193. list.new(invitations);
  194. list.new(groupinvitations);
  195. list.new(movelist);
  196. list.new(warned);
  197. list.new(scheduledtax);
  198. list.new(stealers);
  199. list.new(text_ent_to_remove);
  200. set.new(forbiddenblocks);
  201. set.new(forbiddenblocks2);
  202. scepter_tag = item.getTag("km:scepter");
  203. dagger_tag = item.getTag("km:dagger");
  204. battleaxe_tag = item.getTag("km:battleaxe");
  205. stick_tag = item.getTag("km:stick");
  206. sword_tag = item.getTag("km:sword");
  207. axe_tag = item.getTag("km:axe");
  208. pickaxe_tag = item.getTag("km:pickaxe");
  209. shovel_tag = item.getTag("km:shovel");
  210. hoe_tag = item.getTag("km:hoe");
  211. boots_tag = item.getTag("km:boots");
  212. leggings_tag = item.getTag("km:leggings");
  213. chestplate_tag = item.getTag("km:chestplate");
  214. helmet_tag = item.getTag("km:helmet");
  215. bankmenu = inv.new("222222222");
  216. bankinvid = inv.getID(bankmenu);
  217. inv.setItem(bankmenu, 0, read.item("km:coin_gold", 1, "1 Gold einzahlen"));
  218. inv.setItem(bankmenu, 1, read.item("km:coin_gold", 1, "10 Gold einzahlen"));
  219. inv.setItem(bankmenu, 2, read.item("km:coin_gold", 1, "100 Gold einzahlen"));
  220. inv.setItem(bankmenu, 3, read.item("km:coin_gold", 1, "1000 Gold einzahlen"));
  221. inv.setItem(bankmenu, 5, read.item("km:coin_silver", 1, "1 Gold abheben"));
  222. inv.setItem(bankmenu, 6, read.item("km:coin_silver", 1, "10 Gold abheben"));
  223. inv.setItem(bankmenu, 7, read.item("km:coin_silver", 1, "100 Gold abheben"));
  224. inv.setItem(bankmenu, 8, read.item("km:coin_silver", 1, "1000 Gold abheben"));
  225. pvequests = inv.new("222000002");
  226. pvequestsinvid = inv.getID(pvequests);
  227. inv.setItem(pvequests, 0, read.item("minecraft:writable_book", 1, "§rFriedliche Mobs"));
  228. inv.setItem(pvequests, 1, read.item("minecraft:writable_book", 1, "§rFeindliche Mobs"));
  229. inv.setItem(pvequests, 2, read.item("minecraft:writable_book", 1, "§rBlöcke und Landwirtschaft"));
  230. inv.setItem(pvequests, 3, read.item("minecraft:writable_book", 1, "§rQuest beenden"));
  231. pvemenu1 = inv.new("222222222222222222222222222222200002");
  232. pvemenu1invid = inv.getID(pvemenu1);
  233. inv.setItem(pvemenu1, 0, read.item(leather_type, 1, "§rTöte 10 Kühe"));
  234. inv.setItem(pvemenu1, 1, read.item(leather_type, 1, "§rTöte 25 Kühe"));
  235. inv.setItem(pvemenu1, 2, read.item(leather_type, 1, "§rTöte 50 Kühe"));
  236. inv.setItem(pvemenu1, 3, read.item(leather_type, 1, "§rTöte 250 Kühe"));
  237. inv.setItem(pvemenu1, 5, read.item(white_wool_type, 1, "§rTöte 10 Schafe"));
  238. inv.setItem(pvemenu1, 6, read.item(white_wool_type, 1, "§rTöte 25 Schafe"));
  239. inv.setItem(pvemenu1, 7, read.item(white_wool_type, 1, "§rTöte 50 Schafe"));
  240. inv.setItem(pvemenu1, 8, read.item(white_wool_type, 1, "§rTöte 250 Schafe"));
  241. inv.setItem(pvemenu1, 9, read.item(porkchop_type, 1, "§rTöte 10 Schweine"));
  242. inv.setItem(pvemenu1, 10, read.item(porkchop_type, 1, "§rTöte 25 Schweine"));
  243. inv.setItem(pvemenu1, 11, read.item(porkchop_type, 1, "§rTöte 50 Schweine"));
  244. inv.setItem(pvemenu1, 12, read.item(porkchop_type, 1, "§rTöte 250 Schweine"));
  245. inv.setItem(pvemenu1, 14, read.item(feather_type, 1, "§rTöte 10 Hühner"));
  246. inv.setItem(pvemenu1, 15, read.item(feather_type, 1, "§rTöte 25 Hühner"));
  247. inv.setItem(pvemenu1, 16, read.item(feather_type, 1, "§rTöte 50 Hühner"));
  248. inv.setItem(pvemenu1, 17, read.item(feather_type, 1, "§rTöte 250 Hühner"));
  249. inv.setItem(pvemenu1, 18, read.item(rabbit_foot_type, 1, "§rTöte 10 Hasen"));
  250. inv.setItem(pvemenu1, 19, read.item(rabbit_foot_type, 1, "§rTöte 25 Hasen"));
  251. inv.setItem(pvemenu1, 20, read.item(rabbit_foot_type, 1, "§rTöte 50 Hasen"));
  252. inv.setItem(pvemenu1, 21, read.item(rabbit_foot_type, 1, "§rTöte 250 Hasen"));
  253. inv.setItem(pvemenu1, 23, read.item(saddle_type, 1, "§rTöte 10 Pferde"));
  254. inv.setItem(pvemenu1, 24, read.item(saddle_type, 1, "§rTöte 25 Pferde"));
  255. inv.setItem(pvemenu1, 25, read.item(saddle_type, 1, "§rTöte 50 Pferde"));
  256. inv.setItem(pvemenu1, 26, read.item(saddle_type, 1, "§rTöte 250 Pferde"));
  257. inv.setItem(pvemenu1, 27, read.item(ink_sac_type, 1, "§rTöte 10 Tintenfische"));
  258. inv.setItem(pvemenu1, 28, read.item(ink_sac_type, 1, "§rTöte 25 Tintenfische"));
  259. inv.setItem(pvemenu1, 29, read.item(ink_sac_type, 1, "§rTöte 50 Tintenfische"));
  260. inv.setItem(pvemenu1, 30, read.item(ink_sac_type, 1, "§rTöte 250 Tintenfische"));
  261. inv.setItem(pvemenu1, 31, read.item("minecraft:oak_door", 1, "§rZurück"));
  262. pvemenu2 = inv.new("222222222222222222222200002");
  263. pvemenu2invid = inv.getID(pvemenu2);
  264. inv.setItem(pvemenu2, 0, read.item("minecraft:rotten_flesh", 1, "§rTöte 25 Zombies"));
  265. inv.setItem(pvemenu2, 1, read.item("minecraft:rotten_flesh", 1, "§rTöte 50 Zombies"));
  266. inv.setItem(pvemenu2, 2, read.item("minecraft:rotten_flesh", 1, "§rTöte 100 Zombies"));
  267. inv.setItem(pvemenu2, 3, read.item("minecraft:rotten_flesh", 1, "§rTöte 1000 Zombies"));
  268. inv.setItem(pvemenu2, 5, read.item(bone_type, 1, "§rTöte 25 Skelette"));
  269. inv.setItem(pvemenu2, 6, read.item(bone_type, 1, "§rTöte 50 Skelette"));
  270. inv.setItem(pvemenu2, 7, read.item(bone_type, 1, "§rTöte 100 Skelette"));
  271. inv.setItem(pvemenu2, 8, read.item(bone_type, 1, "§rTöte 1000 Skelette"));
  272. inv.setItem(pvemenu2, 9, read.item(string_type, 1, "§rTöte 25 Spinnen"));
  273. inv.setItem(pvemenu2, 10, read.item(string_type, 1, "§rTöte 50 Spinnen"));
  274. inv.setItem(pvemenu2, 11, read.item(string_type, 1, "§rTöte 100 Spinnen"));
  275. inv.setItem(pvemenu2, 12, read.item(string_type, 1, "§rTöte 1000 Spinnen"));
  276. inv.setItem(pvemenu2, 14, read.item(infested_cracked_stone_bricks_type, 1, "§rTöte 25 Silberfische"));
  277. inv.setItem(pvemenu2, 15, read.item(infested_cracked_stone_bricks_type, 1, "§rTöte 50 Silberfische"));
  278. inv.setItem(pvemenu2, 16, read.item(infested_cracked_stone_bricks_type, 1, "§rTöte 100 Silberfische"));
  279. inv.setItem(pvemenu2, 17, read.item(infested_cracked_stone_bricks_type, 1, "§rTöte 1000 Silberfische"));
  280. inv.setItem(pvemenu2, 18, read.item(gunpowder_type, 1, "§rTöte 25 Creeper"));
  281. inv.setItem(pvemenu2, 19, read.item(gunpowder_type, 1, "§rTöte 50 Creeper"));
  282. inv.setItem(pvemenu2, 20, read.item(gunpowder_type, 1, "§rTöte 100 Creeper"));
  283. inv.setItem(pvemenu2, 21, read.item(gunpowder_type, 1, "§rTöte 1000 Creeper"));
  284. inv.setItem(pvemenu2, 22, read.item("minecraft:oak_door", 1, "§rZurück"));
  285. pvemenu3 = inv.new("222222222222222222000000002");
  286. pvemenu3invid = inv.getID(pvemenu3);
  287. inv.setItem(pvemenu3, 0, read.item(obsidian_type, 1, "§rSammle 100 Obsidian"));
  288. inv.setItem(pvemenu3, 1, read.item(obsidian_type, 1, "§rSammle 500 Obsidian"));
  289. inv.setItem(pvemenu3, 2, read.item(obsidian_type, 1, "§rSammle 1000 Obsidian"));
  290. inv.setItem(pvemenu3, 3, read.item(obsidian_type, 1, "§rSammle 10000 Obsidian"));
  291. inv.setItem(pvemenu3, 5, read.item(wheat_type, 1, "§rSammle 100 Weizen"));
  292. inv.setItem(pvemenu3, 6, read.item(wheat_type, 1, "§rSammle 500 Weizen"));
  293. inv.setItem(pvemenu3, 7, read.item(wheat_type, 1, "§rSammle 1000 Weizen"));
  294. inv.setItem(pvemenu3, 8, read.item(wheat_type, 1, "§rSammle 10000 Weizen"));
  295. inv.setItem(pvemenu3, 9, read.item(carrot_type, 1, "§rSammle 100 Karotten"));
  296. inv.setItem(pvemenu3, 10, read.item(carrot_type, 1, "§rSammle 500 Karotten"));
  297. inv.setItem(pvemenu3, 11, read.item(carrot_type, 1, "§rSammle 1000 Karotten"));
  298. inv.setItem(pvemenu3, 12, read.item(carrot_type, 1, "§rSammle 10000 Karotten"));
  299. inv.setItem(pvemenu3, 14, read.item(potato_type, 1, "§rSammle 100 Kartoffeln"));
  300. inv.setItem(pvemenu3, 15, read.item(potato_type, 1, "§rSammle 500 Kartoffeln"));
  301. inv.setItem(pvemenu3, 16, read.item(potato_type, 1, "§rSammle 1000 Kartoffeln"));
  302. inv.setItem(pvemenu3, 17, read.item(potato_type, 1, "§rSammle 10000 Kartoffeln"));
  303. inv.setItem(pvemenu3, 18, read.item("minecraft:oak_door", 1, "§rZurück"));
  304. smite = enchantment.get("smite");
  305. unbreaking = enchantment.get("unbreaking");
  306. bane_of_arthropods = enchantment.get("bane_of_arthropods");
  307. looting = enchantment.get("looting");
  308. knockback = enchantment.get("knockback");
  309. sharpness = enchantment.get("sharpness");
  310. punch = enchantment.get("punch");
  311. power = enchantment.get("power");
  312. infinity = enchantment.get("infinity");
  313. fire_aspect = enchantment.get("fire_aspect");
  314. flame = enchantment.get("flame");
  315. mending = enchantment.get("mending");
  316. silk_touch = enchantment.get("silk_touch");
  317. efficiency = enchantment.get("efficiency");
  318. fortune = enchantment.get("fortune");
  319. lure = enchantment.get("lure");
  320. luck_of_the_sea = enchantment.get("luck_of_the_sea");
  321. respiration = enchantment.get("respiration");
  322. thorns = enchantment.get("thorns");
  323. blast_protection = enchantment.get("blast_protection");
  324. fire_protection = enchantment.get("fire_protection");
  325. projectile_protection = enchantment.get("projectile_protection");
  326. protection = enchantment.get("protection");
  327. aqua_affinity = enchantment.get("aqua_affinity");
  328. depth_strider = enchantment.get("depth_strider");
  329. enchantings = map.new();
  330. weapon_map1 = map.new();
  331. map.add(weapon_map1, smite, 1);
  332. map.add(weapon_map1, unbreaking, 1);
  333. map.add(weapon_map1, bane_of_arthropods, 1);
  334. map.add(weapon_map1, looting, 1);
  335. map.add(weapon_map1, knockback, 1);
  336. map.add(weapon_map1, sharpness, 1);
  337. map.add(weapon_map1, punch, 1);
  338. map.add(weapon_map1, power, 1);
  339. map.add(weapon_map1, infinity, 1);
  340. map.add(weapon_map1, fire_aspect, 1);
  341. weapon_map2 = map.new();
  342. map.add(weapon_map2, smite, 3);
  343. map.add(weapon_map2, flame, 1);
  344. map.add(weapon_map2, unbreaking, 3);
  345. map.add(weapon_map2, bane_of_arthropods, 3);
  346. map.add(weapon_map2, looting, 2);
  347. map.add(weapon_map2, knockback, 2);
  348. map.add(weapon_map2, sharpness, 3);
  349. map.add(weapon_map2, punch, 2);
  350. map.add(weapon_map2, power, 3);
  351. map.add(weapon_map2, infinity, 1);
  352. map.add(weapon_map2, fire_aspect, 1);
  353. weapon_map3 = map.new();
  354. map.add(weapon_map3, smite, 5);
  355. map.add(weapon_map3, flame, 1);
  356. map.add(weapon_map3, unbreaking, 5);
  357. map.add(weapon_map3, bane_of_arthropods, 5);
  358. map.add(weapon_map3, looting, 3);
  359. map.add(weapon_map3, mending, 1);
  360. map.add(weapon_map3, knockback, 2);
  361. map.add(weapon_map3, sharpness, 5);
  362. map.add(weapon_map3, punch, 2);
  363. map.add(weapon_map3, power, 5);
  364. map.add(weapon_map3, infinity, 1);
  365. map.add(weapon_map3, fire_aspect, 2);
  366. tool_map1 = map.new();
  367. map.add(tool_map1, efficiency, 1);
  368. map.add(tool_map1, fortune, 1);
  369. map.add(tool_map1, luck_of_the_sea, 1);
  370. map.add(tool_map1, unbreaking, 1);
  371. map.add(tool_map1, lure, 1);
  372. tool_map2 = map.new();
  373. map.add(tool_map2, efficiency, 3);
  374. map.add(tool_map2, fortune, 2);
  375. map.add(tool_map2, luck_of_the_sea, 2);
  376. map.add(tool_map2, unbreaking, 2);
  377. map.add(tool_map2, lure, 2);
  378. tool_map3 = map.new();
  379. map.add(tool_map3, silk_touch, 1);
  380. map.add(tool_map3, efficiency, 5);
  381. map.add(tool_map3, fortune, 3);
  382. map.add(tool_map3, luck_of_the_sea, 3);
  383. map.add(tool_map3, unbreaking, 3);
  384. map.add(tool_map3, lure, 3);
  385. map.add(tool_map3, mending, 1);
  386. armor_map1 = map.new();
  387. map.add(armor_map1, respiration, 1);
  388. map.add(armor_map1, thorns, 1);
  389. map.add(armor_map1, blast_protection, 1);
  390. map.add(armor_map1, fire_protection, 1);
  391. map.add(armor_map1, unbreaking, 1);
  392. map.add(armor_map1, projectile_protection, 1);
  393. map.add(armor_map1, protection, 1);
  394. map.add(armor_map1, depth_strider, 1);
  395. armor_map2 = map.new();
  396. map.add(armor_map2, respiration, 2);
  397. map.add(armor_map2, thorns, 2);
  398. map.add(armor_map2, blast_protection, 2);
  399. map.add(armor_map2, fire_protection, 2);
  400. map.add(armor_map2, unbreaking, 2);
  401. map.add(armor_map2, projectile_protection, 2);
  402. map.add(armor_map2, protection, 2);
  403. map.add(armor_map2, depth_strider, 2);
  404. armor_map3 = map.new();
  405. map.add(armor_map3, respiration, 3);
  406. map.add(armor_map3, thorns, 3);
  407. map.add(armor_map3, blast_protection, 4);
  408. map.add(armor_map3, fire_protection, 4);
  409. map.add(armor_map3, unbreaking, 3);
  410. map.add(armor_map3, mending, 1);
  411. map.add(armor_map3, projectile_protection, 4);
  412. map.add(armor_map3, protection, 4);
  413. map.add(armor_map3, depth_strider, 3);
  414. enchantings_lvl1 = map.new();
  415. map.add(enchantings_lvl1, "weapon", weapon_map1);
  416. map.add(enchantings_lvl1, "tool", tool_map1);
  417. map.add(enchantings_lvl1, "armor", armor_map1);
  418. enchantings_lvl2 = map.new();
  419. map.add(enchantings_lvl2, "weapon", weapon_map2);
  420. map.add(enchantings_lvl2, "tool", tool_map2);
  421. map.add(enchantings_lvl2, "armor", armor_map2);
  422. enchantings_lvl3 = map.new();
  423. map.add(enchantings_lvl3, "weapon", weapon_map3);
  424. map.add(enchantings_lvl3, "tool", tool_map3);
  425. map.add(enchantings_lvl3, "armor", armor_map3);
  426. map.add(enchantings, 1, enchantings_lvl1);
  427. map.add(enchantings, 2, enchantings_lvl2);
  428. map.add(enchantings, 3, enchantings_lvl3);
  429. map.new(xpforentities); //math.random(xp * 0.7, xp * 1.3);
  430. map.add(xpforentities, "wither", 1000);
  431. map.add(xpforentities, "zombie", 110);
  432. map.add(xpforentities, "spider", 110);
  433. map.add(xpforentities, "skeleton", 110);
  434. map.add(xpforentities, "creeper", 110);
  435. map.add(xpforentities, "pigzombie", 110);
  436. map.add(xpforentities, "endermite", 110);
  437. map.add(xpforentities, "magmacube", 110);
  438. map.add(xpforentities, "slime", 110);
  439. map.add(xpforentities, "zomievillager", 110);
  440. map.add(xpforentities, "enderman", 185);
  441. map.add(xpforentities, "witch", 185);
  442. map.add(xpforentities, "silverfish", 185);
  443. map.add(xpforentities, "ghast", 185);
  444. map.add(xpforentities, "witherskeleton", 185);
  445. map.new(xpforblocks);
  446. map.add(xpforblocks, "minecraft:coal_ore", 3);
  447. map.add(xpforblocks, "minecraft:redstone_ore", 7);
  448. map.add(xpforblocks, "minecraft:lapis_ore", 12);
  449. map.add(xpforblocks, "minecraft:iron_ore", 15);
  450. map.add(xpforblocks, "minecraft:gold_ore", 18);
  451. map.add(xpforblocks, "minecraft:obsidian", 20);
  452. map.add(xpforblocks, "minecraft:diamond_ore", 25);
  453. map.add(xpforblocks, "minecraft:emerald_ore", 35);
  454. map.add(xpforblocks, "minecraft:oak_log", 2);
  455. map.add(xpforblocks, "minecraft:birch_log", 2);
  456. map.add(xpforblocks, "minecraft:spruce_log", 2);
  457. map.add(xpforblocks, "minecraft:jungle_log", 2);
  458. map.add(xpforblocks, "minecraft:acacia_log", 2);
  459. map.add(xpforblocks, "minecraft:dark_oak_log", 2);
  460. map.add(xpforblocks, "minecraft:oak_leaves", 2);
  461. map.add(xpforblocks, "minecraft:birch_leaves", 2);
  462. map.add(xpforblocks, "minecraft:jungle_leaves", 2);
  463. map.add(xpforblocks, "minecraft:acacia_leaves", 2);
  464. map.add(xpforblocks, "minecraft:dark_oak_leaves", 2);
  465. map.add(xpforblocks, "minecraft:spruce_leaves", 2);
  466. map.add(xpforblocks, "km:plum_leaves", 2);
  467. map.add(xpforblocks, "km:apricot_leaves", 2);
  468. map.add(xpforblocks, "km:pear_leaves", 2);
  469. map.add(xpforblocks, "km:cherry_leaves", 2);
  470. map.add(xpforblocks, "minecraft:cobweb", 2);
  471. map.add(xpforblocks, "minecraft:potatoes", 3);
  472. map.add(xpforblocks, "minecraft:carrots", 3);
  473. map.add(xpforblocks, "minecraft:beetroot", 3);
  474. map.add(xpforblocks, "minecraft:cocoa", 3);
  475. map.add(xpforblocks, "minecraft:sugar_cane", 3);
  476. map.add(xpforblocks, "minecraft:pumpkin", 15);
  477. map.add(xpforblocks, "minecraft:melon", 15);
  478. set.new(richblocks);
  479. set.add(richblocks, "minecraft:coal_block");
  480. set.add(richblocks, "minecraft:gold_block");
  481. set.add(richblocks, "minecraft:iron_block");
  482. set.add(richblocks, "minecraft:redstone_block");
  483. set.add(richblocks, "minecraft:lapis_block");
  484. set.add(richblocks, "minecraft:emerald_block");
  485. set.add(richblocks, "minecraft:diamond_block");
  486. set.add(richblocks, "minecraft:coal_ore");
  487. set.add(richblocks, "minecraft:gold_ore");
  488. set.add(richblocks, "minecraft:iron_ore");
  489. set.add(richblocks, "minecraft:redstone_ore");
  490. set.add(richblocks, "minecraft:lapis_ore");
  491. set.add(richblocks, "minecraft:emerald_ore");
  492. set.add(richblocks, "minecraft:diamond_ore");
  493. list.new(forbidden_items);
  494. list.add(forbidden_items, "minecraft:ender_pearl");
  495. list.add(forbidden_items, "minecraft:elytra");
  496. list.new(rewardlist1); //Diamanten
  497. list.add(rewardlist1, read.item("minecraft:diamond"));
  498. list.add(rewardlist1, read.item("minecraft:diamond", 2));
  499. list.add(rewardlist1, read.item("minecraft:diamond", 3));
  500. list.add(rewardlist1, read.item("minecraft:diamond", 4));
  501. list.add(rewardlist1, read.item("minecraft:diamond", 5));
  502. list.add(rewardlist1, read.item("minecraft:diamond", 6));
  503. list.add(rewardlist1, read.item("minecraft:diamond", 7));
  504. list.add(rewardlist1, read.item("minecraft:diamond_block"));
  505. list.new(rewardlist2); //Gold
  506. list.addAll(rewardlist2, 20, 50, 125, 175, 250, 300, 350, 500);
  507. list.new(rewardlist3); //KlassenXP
  508. list.addAll(rewardlist3, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000);
  509. list.new(rewardlist4); //Villager-Spawnei
  510. list.add(rewardlist4, read.item("minecraft:villager_spawn_egg"));
  511. list.new(allrewards);
  512. list.addAll(allrewards, rewardlist1, rewardlist2, rewardlist3, rewardlist4);
  513. map.new(rewardstext);
  514. map.add(rewardstext, rewardlist1, "Diamanten");
  515. map.add(rewardstext, rewardlist2, "Gold");
  516. map.add(rewardstext, rewardlist3, "KlassenXP");
  517. map.add(rewardstext, rewardlist4, "Villager-Spawnei");
  518. map.new(monthlist);
  519. map.add(monthlist, 1, "Januar");
  520. map.add(monthlist, 2, "Februar");
  521. map.add(monthlist, 3, "März");
  522. map.add(monthlist, 4, "April");
  523. map.add(monthlist, 5, "Mai");
  524. map.add(monthlist, 6, "Juni");
  525. map.add(monthlist, 7, "Juli");
  526. map.add(monthlist, 8, "August");
  527. map.add(monthlist, 9, "September");
  528. map.add(monthlist, 10, "Oktober");
  529. map.add(monthlist, 11, "November");
  530. map.add(monthlist, 12, "Dezember");
  531. map.new(monthdays);
  532. map.add(monthdays, 1, 31);
  533. map.add(monthdays, 2, 29);
  534. map.add(monthdays, 3, 31);
  535. map.add(monthdays, 4, 30);
  536. map.add(monthdays, 5, 31);
  537. map.add(monthdays, 6, 30);
  538. map.add(monthdays, 7, 31);
  539. map.add(monthdays, 8, 31);
  540. map.add(monthdays, 9, 30);
  541. map.add(monthdays, 10, 31);
  542. map.add(monthdays, 11, 30);
  543. map.add(monthdays, 12, 31);
  544. gosub("init_daily_reward");
  545. gosub("setreward");
  546. now_time = time.getMillis();
  547. now_cal = time.new(now_time);
  548. now_day = time.getDay(now_cal);
  549. now_hour = time.getHour(now_cal);
  550. now_min = time.getMinute(now_cal);
  551. diff = 8 * 60 - now_hour * 60 + now_min; //in minuten
  552. if(diff < 0) {
  553. diff = 24 * 60 - now_hour * 60 + now_min + 8 * 60; //in minuten
  554. }
  555. tax_time = now_time + diff * 60 * 1000; //8 Uhr
  556. diff = 19 * 60 + 30 - now_hour * 60 + now_min; //in minuten
  557. if(diff < 0) {
  558. diff = 24 * 60 - now_hour * 60 + now_min + 19 * 60 + 30; //in minuten
  559. }
  560. arte_announcer_time = now_time + diff * 60 * 1000; //19:30 Uhr
  561. diff = 20 * 60 - now_hour * 60 + now_min; //in minuten
  562. if(diff < 0) {
  563. diff = 24 * 60 - now_hour * 60 + now_min + 20 * 60; //in minuten
  564. }
  565. arte_reset_time = now_time + diff * 60 * 1000; //20:00 Uhr
  566. arte_time = now_time; //Variable, damit das Artefakt nur einmal pro Sekunde angeklickt werden kann
  567. actualday = now_day; //Variable, um Tageswechsel zu erkennen
  568. initSkills();
  569. //Alle Gilden durchlaufen
  570. id_list = getAllGuildIds();
  571. for(i = 0; i < list.getSize(id_list); i++) {
  572. gilden_id = list.getIndex(id_list, i);
  573. g_block = getGuildBlock(gilden_id);
  574. //11x11x7 Bereich und Block darunter
  575. setGuildBlockArea(g_block);
  576. //Move-Gebiete erstellen
  577. createMoveArea(gilden_id, g_block);
  578. text_ent = entity.get(g_block, 3, "me.km.entities.EntityNobody");
  579. if(text_ent == null) {
  580. text_ent = entity.spawn("km:nobody", loc.mod(g_block, 0.5, 1.5, 0.5), "{NoGravity:true}");
  581. if(text_ent != null) {
  582. //Chunk ist geladen
  583. entity.setName(text_ent, concat("200/200 §c❤\n§r[§6", getGuildName(gilden_id), "§r]"));
  584. }
  585. }
  586. map.add(g_block_entities, g_block, text_ent);
  587. }
  588. //Alle Online-Spieler, egal in welcher Welt im Gpvp registrieren
  589. onlinelist = players.toList();
  590. for(i = 0; i < list.getSize(onlinelist); i++) {
  591. player = list.getIndex(onlinelist, i);
  592. registerGpvpPlayer(player);
  593. }
  594. while(worker.hasWork()) {
  595. msg("dev", "Gpvp holded ", ++counter);
  596. waitfor(20);
  597. }
  598. //Alle Spieler in der Gpvp-Welt "joinen" dem Gildenpvp
  599. gpvpworld = world.get(gpvpworld_name);
  600. worldlist = players.toWorldList(gpvpworld);
  601. for(i = 0; i < list.getSize(worldlist); i++) {
  602. player = list.getIndex(worldlist, i);
  603. joinGpvpWorld(player);
  604. }
  605. if(ggv("SERVER", "gildencounter") == null) {
  606. sgv("SERVER", "gildencounter", 0);
  607. }
  608. if(ggv("SERVER", "artedaycounter") == null) {
  609. sgv("SERVER", "artedaycounter", 2);
  610. }
  611. //Artefakt
  612. arte_ruin_radius = 25;
  613. arte_hp = 250;
  614. arte_yet_loc = ggv("SERVER", "arte_yet_loc");
  615. if(arte_yet_loc == null) {
  616. //Erstmalige Initialisierung
  617. sgv("SERVER", "arte_yet_loc", text.location(arte_main_loc));
  618. arte_yet_loc = arte_main_loc;
  619. } else {
  620. arte_yet_loc = read.location(arte_yet_loc);
  621. arte_loc_type = "placed";
  622. //Ist das Artefakt noch an der zuletzt platzierten Position? Wenn nicht, dann hatte es ein Spieler --> Artereset
  623. if(block.getType(arte_yet_loc) != "km:artefact") {
  624. arteresetcore();
  625. } else {
  626. //Artefakt ist an der richtigen Stelle. Blöcke rundherum schützen
  627. if(arte_yet_loc != arte_main_loc) {
  628. arte_hp = 10;
  629. setArteBlockArea(arte_yet_loc);
  630. }
  631. }
  632. }
  633. //Kistensicherungen aus Datenbank einlesen
  634. loadChestDB1();
  635. loadChestDB2();
  636. sgoto(200, "witherloop");
  637. sgoto(20, "manaloop");
  638. sgoto(100, "arte_ruin_loop");
  639. sgoto(1200, "timerloop");
  640. sgoto(1200, "arte_drops_loop");
  641. msg("dev", "§bGildenpvp §rwurde geladen");
  642. @wait
  643. wait();
  644. if(event == "portal") { //Wird zum Teil aus anderer Welt ausgelöst
  645. if(from == gpvpworld_name) {
  646. if(arte_loc_type == "player") {
  647. if(arte_yet_uuid == player.getUuid(player)) {
  648. arteresetcore();
  649. }
  650. }
  651. display.reset(player);
  652. stacks.setActive(player, false);
  653. entity.setName(player, player_name);
  654. goto("wait");
  655. }
  656. if(to == gpvpworld_name) {
  657. if(!registerGpvpPlayer(player)) {
  658. joinGpvpWorld(player);
  659. }
  660. goto("wait");
  661. }
  662. goto("wait");
  663. }
  664. if(event == "player_move") {
  665. player_loc = entity.getLocation(player);
  666. if(id == moveidfromworldspawn) {
  667. if(perm.has(player, "isTeam")) {
  668. teleportPlayer(player, gildenspawnloc, false);
  669. if(!registerGpvpPlayer(player)) {
  670. joinGpvpWorld(player);
  671. }
  672. }
  673. goto("wait");
  674. }
  675. if(id == moveidspawn) {
  676. display.add(player, 39, "§6Spawn");
  677. list.add(movelist, player_name);
  678. sgoto(160, "checkifwildnis");
  679. goto("wait");
  680. }
  681. //Gilden-Move-Gebiete
  682. displayMovePlot(player, id);
  683. list.add(movelist, player_name);
  684. sgoto(160, "checkifwildnis");
  685. goto("wait");
  686. }
  687. //Wenn Event aus Gpvp-Welt, dann wird er verarbeitet
  688. if(event == "living_death") {
  689. entity_loc = entity.getLocation(living_entity);
  690. if(world.getName(loc.getWorld(entity_loc)) == gpvpworld_name) {
  691. ignoreGoto(event);
  692. }
  693. goto("wait");
  694. }
  695. if(player == null) {
  696. goto("wait");
  697. }
  698. player_loc = entity.getLocation(player);
  699. //Wenn Event aus Gpvp-Welt, dann wird er verarbeitet
  700. if(world.getName(loc.getWorld(player_loc)) == gpvpworld_name) {
  701. ignoreGoto(event);
  702. }
  703. goto("wait");
  704. @custom_command
  705. origin = map.get(aliasmap, command);
  706. if(origin != null) {
  707. command = origin;
  708. }
  709. size = list.getSize(args);
  710. if(command == "droptables") {
  711. if(!isGameAdmin(player)) {
  712. speakPrefix(player, fehlerpräfix, "Keine Permissions");
  713. goto("wait");
  714. }
  715. droptables();
  716. speakPrefix(player, commandspräfix, "Datanbank Tables gelöscht");
  717. goto("wait");
  718. }
  719. if(command == "arte") {
  720. if(arte_loc_type == "player") {
  721. p_name = player.getName(arte_yet_uuid);
  722. p = player.get(arte_yet_uuid);
  723. p_loc = entity.getLocation(p);
  724. bx = loc.getCoord(p_loc, "bx");
  725. by = loc.getCoord(p_loc, "by");
  726. bz = loc.getCoord(p_loc, "bz");
  727. speakPrefix(player, arte_präfix, concat("§x", p_name, "§r trägt das Artefakt: ", text.number(bx), ":", text.number(by), ":", text.number(bz)));
  728. } elseif(arte_loc_type == "placed") {
  729. bx = loc.getCoord(arte_yet_loc, "bx");
  730. by = loc.getCoord(arte_yet_loc, "by");
  731. bz = loc.getCoord(arte_yet_loc, "bz");
  732. plot_id = getPlotId(arte_yet_loc);
  733. if(plot_id == null) {
  734. speakPrefix(player, arte_präfix, "Artefakt steht auf keinem Grundstück. marvinius informieren.");
  735. goto("wait");
  736. }
  737. if(arte_yet_loc == arte_main_loc) {
  738. speakPrefix(player, arte_präfix, concat("Das Artefakt steht in der Artefaktruine: ", text.number(bx), ":", text.number(by), ":", text.number(bz)));
  739. } else {
  740. gilden_id = getGuildIdFromPlotId(plot_id);
  741. speakPrefix(player, arte_präfix, concat("Das Artefakt steht am Gildengebiet von §6", getGuildName(gilden_id), "§r: ", text.number(bx), ":", text.number(by), ":", text.number(bz)));
  742. }
  743. } else {
  744. speakPrefix(player, arte_präfix, "Unbestimmte Position des Artefakts. marvinius informieren.");
  745. }
  746. goto("wait");
  747. }
  748. if(command == "playerinfo") {
  749. if(size > 1) {
  750. speakPrefix(player, commandspräfix, "/playerinfo [player]");
  751. goto("wait");
  752. }
  753. if(size == 0) {
  754. p_name = player.getName(player);
  755. } else {
  756. p_name = list.getIndex(args, 0);
  757. if(!checkIfEverOnline(p_name)) {
  758. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  759. goto("wait");
  760. }
  761. }
  762. p_id = player.getId(player.getUuid(p_name));
  763. p_name = player.getNameFromId(p_id);
  764. gilden_id = guild.getIdFromDatabase(p_id);
  765. speakPrefix(player, commandspräfix, concat(p_name, " (ID:", text.number(p_id), ")"));
  766. if(isGroup(gilden_id)) {
  767. msg(player, "Gruppe: ", text.number(gilden_id));
  768. } elseif(isGuild(gilden_id)) {
  769. msg(player, "Gilde: ", text.number(gilden_id), " ", getGuildName(gilden_id));
  770. }
  771. if(isOnline(p_name)) {
  772. p = read.player(p_name);
  773. msg(player, "Leben: ", text.number(entity.getHealth(p)));
  774. msg(player, "Hunger: ", text.number(player.getHunger(p)));
  775. class = guild.getClass(p);
  776. if(class != "none") {
  777. msg(player, "Klasse: ", class);
  778. msg(player, "Level: ", text.number(guild.getLevel(p)));
  779. msg(player, "XP: ", text.number(guild.getXp(p)));
  780. msg(player, "Mana: ", text.number(getManaAtm(p)), "/", text.number(getManaMax(p)));
  781. }
  782. }
  783. msg(player, "Gold atm: ", text.number(getGoldAtm(p_name)));
  784. goto("wait");
  785. }
  786. if(command == "slots") {
  787. plot_id = getPlotId(player_loc);
  788. if(!isGuildSpawnId(plot_id)) {
  789. speakPrefix(player, fehlerpräfix, "§rSkillbinding geht nur am Spawn");
  790. goto("wait");
  791. }
  792. class = guild.getClass(player);
  793. if(class == "none") {
  794. speakPrefix(player, fehlerpräfix, "§rDu besitzt keine Klasse");
  795. goto("wait");
  796. }
  797. //Für jeden Spieler ein neues Inventar erstellen, weil es sich um ein veränderndes Inventar handelt
  798. new_bind_inv = inv.new("222222222222222222000000000222222220222222220222222220");
  799. for(i = 0; i <= 8; i++) {
  800. hotkey_item = read.item("minecraft:name_tag");
  801. item.setName(hotkey_item, concat("§rHotkey", text.number(i + 1)));
  802. inv.setItem(new_bind_inv, i, hotkey_item);
  803. tempskill = hotkey.get(player, class, i);
  804. if(tempskill != null) {
  805. inv.setItem(new_bind_inv, i + 9, skill.getItem(tempskill));
  806. } else {
  807. inv.setItem(new_bind_inv, i + 9, air_item);
  808. }
  809. }
  810. skills_list = getSkillsFromJob(class);
  811. for(i = 0; i < list.getSize(skills_list); i++) {
  812. //Todo: nur Skills anzeigen, die der Spieler auch aktiv hat
  813. skill_name = list.getIndex(skills_list, i);
  814. item = skill.getItem(skill_name);
  815. description = skill.getDescription(skill_name);
  816. item.setName(item, concat("§r", skill_name));
  817. list.new(lore_list);
  818. list.add(lore_list, concat("§r§5", description));
  819. item.setLore(item, lore_list);
  820. inv.setItem(new_bind_inv, 18 + i, item);
  821. }
  822. inv.open(new_bind_inv, player, skill_cast_inv_name);
  823. map.add(bindingmenus, player.getID(player), new_bind_inv);
  824. goto("wait");
  825. }
  826. if(command == "money") {
  827. if(size > 1) {
  828. speakPrefix(player, commandspräfix, "/bank <player>");
  829. speakPrefix(player, commandspräfix, "/money <player>");
  830. goto("wait");
  831. } elseif(size == 0) {
  832. gold = getGoldBank(player);
  833. } else {
  834. p = list.getIndex(args, 0);
  835. gold = getGoldBank(p);
  836. }
  837. speakPrefix(player, goldpräfix, concat("Bank: ", text.number(gold)));
  838. goto("wait");
  839. }
  840. if(command == "placearte") {
  841. //Check ob Spieler Arte-Träger ist
  842. if(arte_loc_type == "placed") {
  843. speakPrefix(player, fehlerpräfix, "§rDu trägst das Artefakt nicht");
  844. goto("wait");
  845. }
  846. if(arte_yet_uuid != player.getUuid(player)) {
  847. speakPrefix(player, fehlerpräfix, "§rDu trägst das Artefakt nicht");
  848. goto("wait");
  849. }
  850. //Check ob eigenes Gilden GS
  851. temploc = entity.getLocation(player);
  852. temploc = getBlockLocation(temploc);
  853. if(!isAPlot(temploc)) {
  854. speakPrefix(player, chestpräfix, "Du bist nicht auf deinem Gildengebiet");
  855. goto("wait");
  856. }
  857. gilden_id = guild.getId(player);
  858. if(!isOnGuildPlot(gilden_id, temploc)) {
  859. speakPrefix(player, chestpräfix, "Du bist nicht auf deinem Gildengebiet");
  860. goto("wait");
  861. }
  862. if(!checkArteArea(temploc)) {
  863. speakPrefix(player, fehlerpräfix, "§rIm Bereich von 8 Blöcken seitlich und nach oben dürfen sich keine anderen Blöcke befinden");
  864. cancel = true;
  865. goto("wait");
  866. }
  867. y_guild_bloc = getGuildBlockY(gilden_id);
  868. y = loc.getY(temploc);
  869. if(y < 35 || y > 150) {
  870. speakPrefix(player, fehlerpräfix, "§rDas Artefakt muss zwischen 35 bis 150 Blöcke Höhe platziert werden");
  871. goto("wait");
  872. }
  873. y_diff = math.abs(y - y_guild_bloc);
  874. if(y_diff < 20) {
  875. speakPrefix(player, fehlerpräfix, "§rDas Artefakt muss mindestens 20 Blöcke Y-Abstand zum Gildenblock haben");
  876. goto("wait");
  877. }
  878. lowerblock = loc.mod(temploc, 0, -1, 0);
  879. if(!block.isSolid(lowerblock)) {
  880. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Artefakt muss ein solider Block sein");
  881. goto("wait");
  882. }
  883. btype = block.getType(lowerblock);
  884. if(block.hasTag(leaves_tag, block.get(lowerblock))) {
  885. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Artefakt darf kein Laub sein");
  886. cancel = true;
  887. goto("wait");
  888. }
  889. if(set.contains(richblocks, btype)) {
  890. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Artefakt darf kein wertvoller Block sein");
  891. cancel = true;
  892. goto("wait");
  893. }
  894. arte_hp = 10;
  895. arte_loc_type = "placed";
  896. arte_yet_loc = temploc;
  897. setArteBlockArea(arte_yet_loc);
  898. sgv("SERVER", "arte_yet_loc", text.location(arte_yet_loc));
  899. block.set(arte_yet_loc, "km:artefact");
  900. arte_ent = entity.spawn("km:nobody", loc.mod(arte_yet_loc, 0.5, 1.5, 0.5), "{NoGravity:true}");
  901. entity.setName(arte_ent, concat("10/10 §c❤\n§r[§9Artefakt§r]"));
  902. sendWorldMessage(arte_präfix, concat("§rDas Artefakt wurde von §6", getGuildName(gilden_id), "§r platziert"));
  903. goto("wait");
  904. }
  905. if(command == "pay") {
  906. if(size != 2) {
  907. speakPrefix(player, commandspräfix, "/pay <player> <gold>");
  908. } else {
  909. p_name = list.getIndex(args, 0);
  910. betrag = list.getIndex(args, 1);
  911. if(!isDouble(betrag)) {
  912. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  913. goto("wait");
  914. }
  915. if(betrag < 0) {
  916. speakPrefix(player, fehlerpräfix, "Positive Zahl erwartet");
  917. goto("wait");
  918. }
  919. if(!checkIfEverOnline(p_name)) {
  920. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  921. goto("wait");
  922. }
  923. if(!isOnline(p_name)) {
  924. speakPrefix(player, fehlerpräfix, "§rDer Empfänger muss online sein");
  925. goto("wait");
  926. }
  927. p = read.player(p_name);
  928. if(!isInGpvpWorld(p)) {
  929. speakPrefix(player, fehlerpräfix, "§rDer Empfänger muss sich bei einer Überweisung in der Gildenpvp-Welt aufhalten");
  930. goto("wait");
  931. }
  932. gold_atm = getGoldAtm(player);
  933. if(!isDouble(gold_atm)) {
  934. speakPrefix(player, fehlerpräfix, "Transaktion zu schnell");
  935. goto("wait");
  936. }
  937. if(betrag > gold_atm) {
  938. speakPrefix(player, fehlerpräfix, "§rDu kannst nicht mehr überweisen, als du in deinem Geldbeutel hast");
  939. goto("wait");
  940. }
  941. speakPrefix(player, goldpräfix, "§rTransaktion erfolgreich");
  942. speakPrefix(p, goldpräfix, concat("§r", player_name, " hat dir ", text.number(betrag), " Gold überwiesen"));
  943. subGoldAtm(player, betrag);
  944. addGoldAtm(p, betrag);
  945. }
  946. goto("wait");
  947. }
  948. if(command == "group") {
  949. if(size == 0) {
  950. speakPrefix(player, gruppepräfix, "§r/group ...");
  951. msg(player, "§9 - info §rZeigt Infos über deine Gruppe");
  952. msg(player, "§9 - leave §rVerlasst die Gruppe");
  953. msg(player, "§9 - accept <Spieler-Name> §rAkzeptiert die Einladung einer Gruppe");
  954. gilden_id = guild.getId(player);
  955. if(isLeader(player_name)) {
  956. msg(player, "§9 - invite <Name> §rLädt einen Spieler in die Gruppe ein");
  957. msg(player, "§9 - kick <Name> §rKickt einen Spieler aus der Gruppe");
  958. msg(player, "§9 - disband §rLöst die Gruppe auf");
  959. msg(player, "§9 - gold §rAktiviert/deaktiviert die Gold-Teilung");
  960. msg(player, "§9 - xp §rAktiviert/deaktiviert die XP-Teilung");
  961. }
  962. goto("wait");
  963. }
  964. arg0 = toLowerCase(list.getIndex(args, 0));
  965. if(arg0 == "gold" || arg0 == "xp") {
  966. if(!isLeader(player)) {
  967. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gruppe");
  968. goto("wait");
  969. }
  970. gilden_id = guild.getId(player);
  971. toggleGoldOrXp(gilden_id);
  972. goto("wait");
  973. }
  974. if(arg0 == "info") {
  975. if(size != 1) {
  976. speakPrefix(player, commandspräfix, "/group info");
  977. } else {
  978. gilden_id = guild.getId(player);
  979. if(!isPlayerInGroup(player)) {
  980. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  981. goto("wait");
  982. }
  983. templist = getGuildPlayers(gilden_id);
  984. list.new(memberslist);
  985. for(i = 0; i < list.getSize(templist); i++) {
  986. p_id = list.getIndex(templist, i);
  987. p_name = player.getNameFromId(p_id);
  988. if(isLeader(p_name)) {
  989. leader = p_name;
  990. } else {
  991. list.add(memberslist, p_name);
  992. }
  993. }
  994. members = text.concatList(memberslist, ", ", 0, list.getSize(memberslist) - 1);
  995. msg(player, "§lGruppe");
  996. msg(player, "§lLeiter");
  997. msg(player, "§r", leader);
  998. msg(player, "§lMitglieder");
  999. msg(player, "§r", members);
  1000. }
  1001. goto("wait");
  1002. }
  1003. if(arg0 == "disband") {
  1004. if(size != 1) {
  1005. speakPrefix(player, commandspräfix, "/group disband");
  1006. } else {
  1007. if(!isPlayerInGroup(player)) {
  1008. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  1009. goto("wait");
  1010. }
  1011. gilden_id = guild.getId(player);
  1012. if(!isLeader(player)) {
  1013. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gruppe");
  1014. goto("wait");
  1015. }
  1016. msg(player, "[", gruppepräfix, "§r] Möchtest du die Gruppe wirklich auflösen? ", text.click("§r[§cAuflösen§r]", concat("/group disband2")));
  1017. }
  1018. goto("wait");
  1019. }
  1020. if(arg0 == "disband2") {
  1021. if(size == 1) {
  1022. if(!isPlayerInGroup(player)) {
  1023. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  1024. goto("wait");
  1025. }
  1026. gilden_id = guild.getId(player);
  1027. if(!isLeader(player)) {
  1028. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gruppe");
  1029. goto("wait");
  1030. }
  1031. templist = getGuildPlayers(gilden_id);
  1032. for(i = 0; i < list.getSize(templist); i++) {
  1033. p_id = list.getIndex(templist, i);
  1034. guild.setId(p_id, 0);
  1035. }
  1036. deleteGuildFromData(gilden_id);
  1037. speakPrefix(player, gruppepräfix, "§rDu hast die Gruppe aufgelöst");
  1038. }
  1039. goto("wait");
  1040. }
  1041. if(arg0 == "invite") {
  1042. if(size != 2) {
  1043. speakPrefix(player, commandspräfix, "/group invite <player>");
  1044. } else {
  1045. if(isPlayerInGuild(player)) {
  1046. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in einer Gilde");
  1047. goto("wait");
  1048. }
  1049. //Beim Einladen muss nicht zwingend eine Gruppe bestehen
  1050. if(isPlayerInGroup(player)) {
  1051. gilden_id = guild.getId(player);
  1052. if(!isLeader(player)) {
  1053. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gruppe");
  1054. goto("wait");
  1055. }
  1056. if(getGuildSize(gilden_id) >= 7) {
  1057. speakPrefix(player, fehlerpräfix, "§rEine Gruppe ist auf sieben Spieler begrenzt");
  1058. goto("wait");
  1059. }
  1060. }
  1061. player_id = player.getId(player);
  1062. if(hasGroupInvitation(player_id)) {
  1063. speakPrefix(player, fehlerpräfix, "§rWarte bis die offene Einladung abläuft oder angenommen wird");
  1064. goto("wait");
  1065. }
  1066. p_name = list.getIndex(args, 1);
  1067. if(player_name == p_name) {
  1068. speakPrefix(player, fehlerpräfix, "§rDu kannst dich nicht selbst einladen");
  1069. goto("wait");
  1070. }
  1071. if(!checkIfEverOnline(p_name)) {
  1072. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  1073. goto("wait");
  1074. }
  1075. if(!isOnline(p_name)) {
  1076. speakPrefix(player, fehlerpräfix, "§rEs können nur Online-Spieler eingeladen werden");
  1077. goto("wait");
  1078. }
  1079. p = read.player(p_name);
  1080. if(isPlayerInGroup(p)) {
  1081. speakPrefix(player, fehlerpräfix, "§rDieser Spieler befindet sich bereits in einer Gruppe");
  1082. goto("wait");
  1083. }
  1084. if(isPlayerInGuild(p)) {
  1085. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist in einer Gilde");
  1086. goto("wait");
  1087. }
  1088. p_id = player.getId(player.getUuid(p_name));
  1089. if(hasGroupInvitationFromThisPlayer(p_id, player_id)) {
  1090. speakPrefix(player, fehlerpräfix, "§rDu hast diesen Spieler bereits eingeladen");
  1091. goto("wait");
  1092. }
  1093. addGroupInvitation(p_id, player_id);
  1094. sgoto(1200, "removeGroupInvitation"); //1 Minute
  1095. speakPrefix(player, gruppepräfix, "§rEinladung gesendet");
  1096. speakPrefix(p, gruppepräfix, concat("§7", player_name, "§r hat dich in seine Gruppe eingeladen"));
  1097. }
  1098. goto("wait");
  1099. }
  1100. if(arg0 == "accept") {
  1101. if(size != 2) {
  1102. speakPrefix(player, commandspräfix, "/group accept <player>");
  1103. } else {
  1104. if(isPlayerInGroup(player)) {
  1105. speakPrefix(player, fehlerpräfix, "§rDu befindest dich bereits in einer Gruppe");
  1106. goto("wait");
  1107. }
  1108. if(isPlayerInGuild(player)) {
  1109. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in einer Gilde");
  1110. goto("wait");
  1111. }
  1112. p_name = list.getIndex(args, 1);
  1113. if(!checkIfEverOnline(p_name)) {
  1114. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  1115. goto("wait");
  1116. }
  1117. p_id = player.getId(player.getUuid(p_name));
  1118. player_id = player.getUuid(player_name);
  1119. if(!hasGroupInvitationFromThisPlayer(player_id, p_id)) {
  1120. speakPrefix(player, fehlerpräfix, "§rDu hast keine Einladung dieses Spielers");
  1121. goto("wait");
  1122. }
  1123. if(!isOnline(p_name)) {
  1124. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist nicht mehr online");
  1125. goto("wait");
  1126. }
  1127. p = read.player(p_name);
  1128. if(!isPlayerInGroup(p)) { //Überprüfung ob Einlader in Gruppe. Wenn Nein: Gruppe erstellen
  1129. //Gruppe erstellen
  1130. gilden_id = getNewGuildId();
  1131. g_type = 0;
  1132. gold_delay = 0;
  1133. gold = 0;
  1134. block_world = gpvpworld_name;
  1135. block_x = 0;
  1136. block_y = 0;
  1137. block_z = 0;
  1138. safetime = 0;
  1139. plot_id = 0;
  1140. share_xp = 1;
  1141. share_gold = 1;
  1142. elo = 0;
  1143. addNewGuild(gilden_id, g_type, gold_delay, gold, gilden_name, block_world, block_x, block_y, block_z, safetime, plot_id, share_xp, share_gold, elo);
  1144. //Einlader zur Gruppe hinzufügen
  1145. guild.setId(p_id, gilden_id);
  1146. setLeader(p_id);
  1147. } else {
  1148. //Gruppe existiert
  1149. P_id = player.getId(player.getUuid(p_name));
  1150. gilden_id = guild.getIdFromDatabase(p_id);
  1151. if(getGuildSize(gilden_id) >= 7) {
  1152. speakPrefix(player, fehlerpräfix, "§rEine Gruppe ist auf sieben Spieler begrenzt");
  1153. goto("wait");
  1154. }
  1155. }
  1156. //Spieler hinzufügen
  1157. list.add(list, player);
  1158. setMember(player_id);
  1159. guild.setId(player, gilden_id);
  1160. speakPrefix(player, gruppepräfix, "§rEinladung angenommen");
  1161. sendmessage(p_name, gruppepräfix, concat("§7", player_name, " §rhat die Einladung angenommen"), true);
  1162. }
  1163. goto("wait");
  1164. }
  1165. if(arg0 == "leave") {
  1166. if(size != 1) {
  1167. speakPrefix(player, commandspräfix, "/group leave");
  1168. } else {
  1169. gilden_id = guild.getId(player);
  1170. if(!isPlayerInGroup(player)) {
  1171. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  1172. goto("wait");
  1173. }
  1174. guild.setId(player, 0);
  1175. removeRang(player);
  1176. speakPrefix(player, gruppepräfix, "§rDu hast die Gruppe verlassen");
  1177. checkGroupSize(gilden_id);
  1178. }
  1179. goto("wait");
  1180. }
  1181. if(arg0 == "kick") {
  1182. if(size != 1) {
  1183. speakPrefix(player, commandspräfix, "/group kick <player>");
  1184. } else {
  1185. if(!isPlayerInGroup(player)) {
  1186. speakPrefix(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  1187. goto("wait");
  1188. }
  1189. gilden_id = guild.getId(player);
  1190. if(!isLeader(player)) {
  1191. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gruppe");
  1192. goto("wait");
  1193. }
  1194. p_name = list.getIndex(args, 1);
  1195. if(!checkIfEverOnline(p_name)) {
  1196. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  1197. goto("wait");
  1198. }
  1199. p_id = player.getId(player.getUuid(p_name));
  1200. if(!guild.isSame(p_name, player_name)) {
  1201. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gruppe");
  1202. goto("wait");
  1203. }
  1204. guild.setId(p_id, 0);
  1205. removeRang(p_id);
  1206. speakPrefix(player, gruppepräfix, "§rSpieler aus der Gruppe entfernt");
  1207. sendmessage(p_name, gruppepräfix, concat("§rDu bist aus der Gruppe entfernt worden"), false);
  1208. goto("checkgroupsize");
  1209. }
  1210. goto("wait");
  1211. }
  1212. goto("wait");
  1213. }
  1214. if(command == "gilde") {
  1215. if(size == 0) {
  1216. speakPrefix(player, commandspräfix, "§r/gilde... (/g, /guild)");
  1217. msg(player, "§6 - invite <name> §rLädt einen Spieler in deine Gilde ein");
  1218. msg(player, "§6 - accept <name> §rNimmt eine Einladung an");
  1219. msg(player, "§6 - info [gildenid/-name] §rGibt Infos über eine Gilde");
  1220. msg(player, "§6 - create <name> <tag> §rRegistriert eine Gilde");
  1221. msg(player, "§6 - kick <name> §rKickt einen Spieler aus deiner Gilde");
  1222. msg(player, "§6 - leader <name> §rBefördert einen Spieler zum einzigen Leiter");
  1223. msg(player, "§6 - officer <name> §rBefördert einen Spieler zum Offizier");
  1224. msg(player, "§6 - adel <name> §rBefördert einen Spieler zum Adel");
  1225. msg(player, "§6 - degrade <name> §rDegradiert einen Spieler");
  1226. msg(player, "§6 - leave §rDu verlässt die Gilde");
  1227. msg(player, "§6 - disband §rDer Leiter löst die Gilde auf");
  1228. msg(player, "§6 - newpos §rDer Gildenblock wird umgesetzt");
  1229. msg(player, "§6 - rename <gname> §rDie Gilde wird umbenannt");
  1230. msg(player, "§6 - fight §rGreift eine andere Gilde an");
  1231. msg(player, "§6 - steal §rStiehlt Gold");
  1232. msg(player, "§6 - search §rOrtet Gegner am Gildengebiet");
  1233. msg(player, "§6 - spawn §rTeleportiert dich zum Gildenspawn");
  1234. msg(player, "§6 - home §rTeleportiert dich zum Gildenblock");
  1235. msg(player, "§6 - msg <nachricht> §rNachricht an alle Gildenmitglieder");
  1236. msg(player, "§6 - mail <nachricht> §rMail an alle Gildenmitglieder");
  1237. msg(player, "§6 - nick <name> <nickname> §rWeist Nicknamen zu");
  1238. msg(player, "§6 - deposit <zahl> §rLegt Gold aufs Gildenkonto");
  1239. msg(player, "§6 - withdraw <zahl> §rHebt Gold vom Gildenkonto ab");
  1240. msg(player, "§6 - gold §rAktiviert/deaktiviert die Gold-Teilung (nur Leader)");
  1241. msg(player, "§6 - xp §rAktiviert/deaktiviert die XP-Teilung (nur Leader)");
  1242. msg(player, "§6 - ad <nachricht> §rNachricht an alle Spieler in der Welt");
  1243. msg(player, "§6 - class <class> §7[player] §rWählt eine Klasse");
  1244. if(isGameAdmin(player)) {
  1245. msg(player, "§6 - reset §rResettet Gildenpvp");
  1246. }
  1247. if(isGameMod(player)) {
  1248. msg(player, "§6 - resetsafetime <gildenid/-name> §rSchutzzeit einer Gilde");
  1249. msg(player, "§6 - resetnextjoin <player> §rSetzt die Wartezeit auf 0");
  1250. msg(player, "§6 - setxp <name> <level> <xp> §rFür die aktuelle Klasse eines Spielers");
  1251. msg(player, "§6 - setgoldatm <gold> [player] §rSetzt das Gold eines Spielers");
  1252. msg(player, "§6 - setgoldbank <gold> [player] §rSetzt das Gold eines Spielers");
  1253. msg(player, "§6 - setguildgold <gildenid> <gold> §rSetzt das Gold einer Gilde");
  1254. msg(player, "§6 - setguildelo <gildenid> <elo> §rSetzt den Einfluss einer Gilde");
  1255. msg(player, "§6 - setguildname <gildenid> <name> §rSetzt den Namen neu");
  1256. msg(player, "§6 - tp <gildenid> §rTp zum Gildenblock der Gilde");
  1257. }
  1258. goto("wait");
  1259. }
  1260. arg0 = text.toLowerCase(list.getIndex(args, 0));
  1261. if(set.contains(gcommandsset, arg0)) {
  1262. if(!isPlayerInGuild(player)) {
  1263. speakPrefix(player, fehlerpräfix, "§rFür diesen Befehl musst du einer Gilde angehören");
  1264. goto("wait");
  1265. }
  1266. }
  1267. if(arg0 == "create") {
  1268. if(loc.distance(player_loc, gildenvillagerloc) > 8) {
  1269. speakPrefix(player, fehlerpräfix, "§rDieser Befehl geht nur neben dem Gildenvillager");
  1270. goto("wait");
  1271. }
  1272. if(size != 3) {
  1273. speakPrefix(player, commandspräfix, "§r/gilde create <name> <tag>");
  1274. goto("wait");
  1275. }
  1276. if(isPlayerInGuild(player)) {
  1277. speakPrefix(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  1278. goto("wait");
  1279. }
  1280. gildenname = list.getIndex(args, 1);
  1281. if(text.length(gildenname) > 20) {
  1282. speakPrefix(player, fehlerpräfix, "§rDer Gildenname darf maximal 20 Zeichen lang sein");
  1283. goto("wait");
  1284. }
  1285. if(!text.onlyletters(gildenname)) {
  1286. speakPrefix(player, fehlerpräfix, "§rDer Gildenname darf nur Buchstaben enthalten");
  1287. goto("wait");
  1288. }
  1289. if(isExistingGuildName(gildenname)) {
  1290. speakPrefix(player, fehlerpräfix, "§rDieser Gildenname existiert bereits");
  1291. goto("wait");
  1292. }
  1293. gold_atm = getGoldAtm(player);
  1294. if(gold_atm < buypricegblock) {
  1295. speakPrefix(player, fehlerpräfix, "§rDu besitzt nicht genug Gold");
  1296. goto("wait");
  1297. }
  1298. gilden_tag = list.getIndex(args, 2);
  1299. if(text.length(gilden_tag) > 3) {
  1300. speakPrefix(player, fehlerpräfix, "§rDer Gildentag darf maximal 3 Zeichen lang sein");
  1301. goto("wait");
  1302. }
  1303. if(!text.onlyletters(gilden_tag)) {
  1304. speakPrefix(player, fehlerpräfix, "§rDer Gildentag darf nur Buchstaben enthalten");
  1305. goto("wait");
  1306. }
  1307. subGoldAtm(player, buypricegblock);
  1308. nextid = getNewGuildId();
  1309. g_block = read.item("km:guild_block");
  1310. lore_list = list.new();
  1311. list.add(lore_list, gildenname);
  1312. list.add(lore_list, gilden_tag);
  1313. list.add(lore_list, text.number(nextid));
  1314. item.setLore(g_block, lore_list);
  1315. player.giveItem(player, g_block);
  1316. speakPrefix(player, gildepräfix, "§rGilde erfolgreich erstellt");
  1317. goto("wait");
  1318. }
  1319. if(arg0 == "rename") {
  1320. if(size != 3) {
  1321. speakPrefix(player, commandspräfix, "§r/gilde rename <name> <tag>");
  1322. goto("wait");
  1323. }
  1324. gildenname = list.getIndex(args, 1);
  1325. if(text.length(gildenname) > 20) {
  1326. speakPrefix(player, fehlerpräfix, "§rDer Gildenname darf maximal 20 Zeichen lang sein");
  1327. goto("wait");
  1328. }
  1329. if(!text.onlyletters(gildenname)) {
  1330. speakPrefix(player, fehlerpräfix, "§rDer Gildenname darf nur Buchstaben enthalten");
  1331. goto("wait");
  1332. }
  1333. if(isExistingGuildName(gildenname)) {
  1334. speakPrefix(player, fehlerpräfix, "§rDieser Gildenname existiert bereits");
  1335. goto("wait");
  1336. }
  1337. gilden_tag = list.getIndex(args, 2);
  1338. if(text.length(gilden_tag) > 3) {
  1339. speakPrefix(player, fehlerpräfix, "§rDer Gildentag darf maximal 3 Zeichen lang sein");
  1340. goto("wait");
  1341. }
  1342. if(!text.onlyletters(gilden_tag)) {
  1343. speakPrefix(player, fehlerpräfix, "§rDer Gildentag darf nur Buchstaben enthalten");
  1344. goto("wait");
  1345. }
  1346. if(isPlayerInGuild(player)) {
  1347. gilden_id = guild.getId(player);
  1348. gildenkonto = getGuildGold(gilden_id);
  1349. if(gildenkonto < 1000) {
  1350. speakPrefix(player, fehlerpräfix, concat("§rDeine Gilde hat nur ", text.number(gildenkonto), " von 1000 Gold"));
  1351. goto("wait");
  1352. }
  1353. setGuildGold(gilden_id, gildenkonto - 1000);
  1354. setGuildName(gilden_id, gildenname);
  1355. plot = getGuildPlot(gilden_id);
  1356. setPlotName(plot, gildenname);
  1357. nachricht = concat("§rDie Gilde wurde in §7", gildenname, "§r umbenannt");
  1358. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  1359. //Gilden-Tag bei Spielern ändern
  1360. guild_list = getOnlineGuildPlayers(gilden_id);
  1361. for(i = 0; i < list.getSize(guild_list); i++) {
  1362. p = list.getIndex(guild_list, i);
  1363. class = guild.getClass(p);
  1364. if(class != "none") {
  1365. level = guild.getLevel(p);
  1366. } else {
  1367. level = null;
  1368. }
  1369. setHeadName(p);
  1370. }
  1371. } else {
  1372. item = entity.getEquip(player, "hand");
  1373. if(item.getType(item) != "km:guild_block") {
  1374. speakPrefix(player, fehlerpräfix, "§rHalte den Gildenblock in der Hand");
  1375. goto("wait");
  1376. }
  1377. lore_list = item.getLore(item);
  1378. list.setIndex(lore_list, 0, gildenname);
  1379. list.setIndex(lore_list, 1, gilden_tag);
  1380. item.setLore(item, lore_list);
  1381. speakPrefix(player, fehlerpräfix, "§rName erfolgreich geändert");
  1382. }
  1383. goto("wait");
  1384. }
  1385. if(arg0 == "newpos") {
  1386. if(!isPlayerInGuild(player)) {
  1387. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  1388. goto("wait");
  1389. }
  1390. if(!isLeader(player)) {
  1391. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gilde");
  1392. goto("wait");
  1393. }
  1394. gilden_id = guild.getId(player);
  1395. if(checkIfGuildInFight(gilden_id)) {
  1396. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  1397. cancel = true;
  1398. goto("wait");
  1399. }
  1400. gildenkonto = getGuildGold(gilden_id);
  1401. if(gildenkonto < 500) {
  1402. speakPrefix(player, fehlerpräfix, concat("§rDeine Gilde hat nur ", text.number(gildenkonto), " Gold. Es werden aber 500 benötigt"));
  1403. cancel = true;
  1404. goto("wait");
  1405. }
  1406. player_loc = entity.getLocation(player);
  1407. block_list = getAllGuildBlocks();
  1408. oldpos = getGuildBlock(gilden_id);
  1409. list.remove(block_list, oldpos); //Eigener bestehender Block wird nicht berücksichtigt
  1410. for(i = 0; i < list.getSize(block_list); i++) {
  1411. distance = loc.distance(list.getIndex(block_list, i), player_loc);
  1412. if(distance < 1100) {
  1413. speakPrefix(player, fehlerpräfix, concat("§rGildenblöcke müssen mindestens 1100 Blöcke voneinander entfernt sein (Aktuell: ", text.number(math.roundUp(distance)), ")"));
  1414. cancel = true;
  1415. goto("wait");
  1416. }
  1417. }
  1418. if(!checkGuildBlockArea(player_loc)) {
  1419. speakPrefix(player, fehlerpräfix, "§rIm Bereich von 5 Blöcken seitlich und 7 Blöcken nach oben dürfen sich keine anderen Blöcke befinden");
  1420. cancel = true;
  1421. goto("wait");
  1422. }
  1423. bloc = loc.mod(player_loc, 0, -1, 0);
  1424. if(!block.isSolid(bloc)) {
  1425. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Gildenblock muss ein solider Block sein");
  1426. cancel = true;
  1427. goto("wait");
  1428. }
  1429. btype = block.getType(bloc);
  1430. if(block.hasTag(leaves_tag, block.get(bloc))) {
  1431. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein Laub sein");
  1432. cancel = true;
  1433. goto("wait");
  1434. }
  1435. if(set.contains(richblocks, btype)) {
  1436. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein wertvoller Block sein");
  1437. cancel = true;
  1438. goto("wait");
  1439. }
  1440. //Neue Location setzen
  1441. w = loc.getCoord(player_loc, "w");
  1442. x = loc.getCoord(player_loc, "bx");
  1443. y = loc.getCoord(player_loc, "by");
  1444. z = loc.getCoord(player_loc, "bz");
  1445. newpos = loc.new(gpvpworld, x, y, z);
  1446. x1 = x - 150;
  1447. x2 = x + 150;
  1448. z1 = z - 150;
  1449. z2 = z + 150;
  1450. gs_edge1 = loc.new(gpvpworld, x1, 0, z1);
  1451. gs_edge2 = loc.new(gpvpworld, x2, 255, z2);
  1452. //Überschneidungen suchen
  1453. if(doesPlotIntersect(gs_edge1, gs_edge2)) {
  1454. speakPrefix(player, fehlerpräfix, "§rIm Gebiet herrscht bereits eine andere Gilde");
  1455. cancel = true;
  1456. goto("wait");
  1457. }
  1458. //Plot anpassen
  1459. plot = getGuildPlot(gilden_id);
  1460. changePlotEdges(plot, gs_edge1, gs_edge2);
  1461. removeMoveArea(gilden_id);
  1462. //Move-Gebiet erstellen
  1463. createMoveArea(gilden_id, newpos);
  1464. //Aktion bezahlen
  1465. setGuildGold(gilden_id, gildenkonto - 500);
  1466. //Alten Block entfernen
  1467. block.set(oldpos, "minecraft:air");
  1468. removeGuildBlockArea(oldpos);
  1469. map.remove(g_block_entities, oldpos);
  1470. text_ent = entity.get(oldpos, 3, "me.km.entities.EntityNobody");
  1471. if(text_ent == null) {
  1472. list.add(text_ent_to_remove, loc.mod(oldpos, 0.5, 1.5, 0.5));
  1473. } else {
  1474. entity.remove(text_ent);
  1475. }
  1476. //Obsidian-Plattform entfernen
  1477. y = loc.getY(oldpos) - 1;
  1478. x1 = loc.getX(oldpos) - 5;
  1479. z1 = loc.getZ(oldpos) - 5;
  1480. x2 = loc.getX(oldpos) + 5;
  1481. z2 = loc.getZ(oldpos) + 5;
  1482. iter = loc.iterator(loc.getWorld(oldpos), x1, y, z1, x2, y, z2);
  1483. while(hasNext(iter)) {
  1484. block.set(next(iter), "minecraft:air");
  1485. }
  1486. //Neuen Block setzen
  1487. block.set(newpos, "km:guild_block");
  1488. setGuildBlock(gilden_id, block_loc);
  1489. setGuildBlockArea(newpos);
  1490. text_ent = entity.spawn("km:nobody", loc.mod(newpos, 0.5, 1.5, 0.5), "{NoGravity:true}");
  1491. entity.setName(text_ent, concat("200/200 §c❤\n§r[§6", getGuildName(gilden_id), "§r]"));
  1492. map.add(g_block_entities, newpos, text_ent);
  1493. speakPrefix(player, gildepräfix, "§rDer Gildenblock wurde erfolgreich umgesetzt");
  1494. goto("wait");
  1495. }
  1496. if(arg0 == "home") {
  1497. gilden_id = guild.getId(player);
  1498. if(!isPlayerInGuild(player)) {
  1499. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  1500. goto("wait");
  1501. }
  1502. if(arte_loc_type == "player") {
  1503. if(arte_yet_uuid == player.getUuid(player)) {
  1504. speakPrefix(player, fehlerpräfix, "Als Artefakt-Träger darfst du dich nicht teleportieren");
  1505. goto("wait");
  1506. }
  1507. }
  1508. if(checkForEnimies(player)) {
  1509. cancelCauseEnimy();
  1510. goto("wait");
  1511. }
  1512. location = getGuildBlock(gilden_id);
  1513. teleportPlayer(player, loc.mod(location, 0.5, 1.1, 0.5), true);
  1514. elo = getGuildElo(gilden_id);
  1515. gold = getGuildGold(gilden_id);
  1516. //Gildenextra: Siedlung
  1517. if(elo >= 1000 && gold >= 5000) {
  1518. player.setHunger(player, 20);
  1519. player.setSaturation(player, 5);
  1520. }
  1521. //Gildenextra: Schnellstart
  1522. if(elo >= 3000 && gold >= 20000) {
  1523. entity.addEffect(player, "speed", 200, 3);
  1524. }
  1525. goto("wait");
  1526. }
  1527. if(arg0 == "setxp") {
  1528. if(!isGameMod(player)) {
  1529. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  1530. goto("wait");
  1531. }
  1532. if(size != 4) {
  1533. speakPrefix(player, commandspräfix, "/g setxp <spieler> <level> <xp>");
  1534. goto("wait");
  1535. }
  1536. p = read.player(list.getIndex(args, 1));
  1537. if(p == null) {
  1538. speakPrefix(player, fehlerpräfix, "§rDer angegebene Spieler muss online sein");
  1539. goto("wait");
  1540. }
  1541. level = list.getIndex(args, 2);
  1542. if(!isDouble(level)) {
  1543. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  1544. goto("wait");
  1545. }
  1546. if(level <= 0) {
  1547. level = 1;
  1548. }
  1549. xp = list.getIndex(args, 3);
  1550. if(!isDouble(xp)) {
  1551. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  1552. goto("wait");
  1553. }
  1554. class = guild.getClass(p);
  1555. if(class != "none") {
  1556. guild.setLevel(p, level);
  1557. guild.setXp(p, xp);
  1558. displayclass(p, class);
  1559. displaylevel(p, level);
  1560. displayxp(p, level, xp);
  1561. setManaMax(p, calcManaMax(class, level));
  1562. displaymana(p);
  1563. setHeadName(p);
  1564. }
  1565. speakPrefix(player, commandspräfix, "§rÄnderungen durchgeführt");
  1566. goto("wait");
  1567. }
  1568. if(arg0 == "setgoldatm") {
  1569. if(!isGameMod(player)) {
  1570. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  1571. goto("wait");
  1572. }
  1573. if(size < 2 || size > 3) {
  1574. speakPrefix(player, commandspräfix, "/g setgoldatm <gold> [player]");
  1575. goto("wait");
  1576. }
  1577. gold = list.getIndex(args, 1);
  1578. if(!isDouble(gold)) {
  1579. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  1580. goto("wait");
  1581. }
  1582. p = player;
  1583. p_name = player_name;
  1584. if(size == 3) {
  1585. p_name = list.getIndex(args, 2);
  1586. if(!checkIfEverOnline(p_name)) {
  1587. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  1588. goto("wait");
  1589. }
  1590. p = read.player(p_name);
  1591. p_name = player.getName(p);
  1592. }
  1593. setGoldAtm(p, gold);
  1594. if(p != null) {
  1595. displaygold(p, gold);
  1596. }
  1597. speakPrefix(player, gildepräfix, concat("Gold für ", p_name, " auf ", text.number(gold), " gesetzt"));
  1598. goto("wait");
  1599. }
  1600. if(arg0 == "setgoldbank") {
  1601. if(!isGameMod(player)) {
  1602. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  1603. goto("wait");
  1604. }
  1605. if(size < 2 || size > 3) {
  1606. speakPrefix(player, commandspräfix, "/g setgoldbank <gold> [player]");
  1607. goto("wait");
  1608. }
  1609. gold = list.getIndex(args, 1);
  1610. if(!isDouble(gold)) {
  1611. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  1612. goto("wait");
  1613. }
  1614. if(size == 3) {
  1615. p_name = list.getIndex(args, 2);
  1616. if(!checkIfEverOnline(p_name)) {
  1617. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  1618. goto("wait");
  1619. }
  1620. }
  1621. setGoldBank(p_name, gold);
  1622. speakPrefix(player, gildepräfix, concat("Gold für ", p_name, " auf ", text.number(gold), " gesetzt"));
  1623. goto("wait");
  1624. }
  1625. if(arg0 == "ad") {
  1626. if(size < 2) {
  1627. speakPrefix(player, commandspräfix, "/g ad <nachricht>");
  1628. } else {
  1629. //Check auf 2 Gold
  1630. coinsnow = getGoldAtm(player);
  1631. if(coinsnow < 2) {
  1632. speakPrefix(player, fehlerpräfix, "§rDu besitzt nicht genug Gold dafür");
  1633. goto("wait");
  1634. }
  1635. //Cooldown 180 Sek Check
  1636. player_id = player.getId(player);
  1637. lasttime = map.get(adcooldown, player_id);
  1638. nowtime = time.getMillis();
  1639. if(lasttime != null) {
  1640. difftime = nowtime - lasttime;
  1641. if(difftime < 180000) { //180 Sekunden
  1642. speakPrefix(player, fehlerpräfix, text.number(math.roundDown(difftime / 1000)), " von 180 Sekunden vergangen");
  1643. goto("wait");
  1644. }
  1645. }
  1646. //endgültige Bearbeitung
  1647. map.add(adcooldown, player_id, nowtime);
  1648. subGoldAtm(player, 2);
  1649. nachricht = text.concatList(args, " ", 1, size - 1);
  1650. sendWorldMessage("§6Handel", concat("§6", nachricht));
  1651. }
  1652. goto("wait");
  1653. }
  1654. if(arg0 == "mail") {
  1655. gilden_id = guild.getId(player);
  1656. if(!isLeaderOrOfficer(player)) {
  1657. speakPrefix(player, fehlerpräfix, "§rNur für Gildenleiter bzw. Offiziere");
  1658. goto("wait");
  1659. }
  1660. sendGuildMail(player.getName(player), gilden_id, text.concatList(args, " ", 1, size - 1));
  1661. goto("wait");
  1662. }
  1663. if(arg0 == "msg") {
  1664. gilden_id = guild.getId(player);
  1665. nachricht = concat("§e", player_name, "§r ", text.concatList(args, " ", 1, size - 1));
  1666. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  1667. goto("wait");
  1668. }
  1669. if(arg0 == "fight") {
  1670. if(!isPlayerInGuild(player)) {
  1671. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  1672. goto("wait");
  1673. }
  1674. if(!isLeaderOrOfficer(player)) {
  1675. speakPrefix(player, fehlerpräfix, "§rDu bist kein Leiter oder Offizier deiner Gilde");
  1676. goto("wait");
  1677. }
  1678. list = plot.get(entity.getLocation(player));
  1679. plot = list.getIndex(list, 0);
  1680. plot_id = plot.getId(plot);
  1681. gilden_id = getGuildIdFromPlotId(plot_id);
  1682. if(gilden_id == null) {
  1683. speakPrefix(player, fehlerpräfix, "§rDu befindest dich auf keinem Gildengebiet");
  1684. goto("wait");
  1685. }
  1686. own_gilden_id = guild.getId(player);
  1687. if(gilden_id == own_gilden_id) {
  1688. speakPrefix(player, fehlerpräfix, "§rDu kannst dich nicht selbst angreifen");
  1689. goto("wait");
  1690. }
  1691. if(checkIfGuildInFight(own_gilden_id)) {
  1692. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  1693. goto("wait");
  1694. }
  1695. if(checkIfGuildInFight(gilden_id)) {
  1696. speakPrefix(player, fehlerpräfix, "§rDiese Gilde befindet sich gerade in einem Kampf");
  1697. goto("wait");
  1698. }
  1699. nextattacktime = getGuildSafetime(gilden_id);
  1700. if(time.getMillis() < nextattacktime) {
  1701. minutes = math.round((nextattacktime - time.getMillis()) / 60000);
  1702. if(minutes < 60) {
  1703. speakPrefix(player, fehlerpräfix, "§rDiese Gilde kann erst in ", minutes, " min angegriffen werden");
  1704. } else {
  1705. hours = text.number(math.roundDown(minutes / 60));
  1706. minutes = text.number(minutes % 60);
  1707. speakPrefix(player, fehlerpräfix, "§rDiese Gilde kann erst in ", hours, " h und ", minutes, " min angegriffen werden");
  1708. }
  1709. goto("wait");
  1710. }
  1711. own_list = getOnlineGuildPlayerIds(own_gilden_id);
  1712. enimies_list = getOnlineGuildPlayerIds(gilden_id);
  1713. own_online = list.getSize(own_list);
  1714. enimies_online = list.getSize(enimies_list);
  1715. set.new(fightset);
  1716. for(i = 0; i < list.getSize(own_list); i++) {
  1717. player_id = list.getIndex(own_list, i);
  1718. set.add(fightset, player_id);
  1719. }
  1720. for(i = 0; i < list.getSize(enimies_list); i++) {
  1721. player_id = list.getIndex(enimies_list, i);
  1722. set.add(fightset, player_id);
  1723. }
  1724. //testphase anfang
  1725. if(enimies_online < 1 && own_online < 1) {
  1726. speakPrefix(player, fehlerpräfix, "§rFür die Testphase muss je Gilde 1 Spieler online sein.");
  1727. goto("wait");
  1728. }
  1729. /*if(enimies_online < 3) {
  1730. speakPrefix(player, fehlerpräfix, "§rEs müssen mindestens drei Mitglieder der anzugreifenden Gilde online sein");
  1731. goto("wait");
  1732. }
  1733. if(enimies_online / own_online < 0.8) {
  1734. speakPrefix(player, fehlerpräfix, "§rDas Verteidiger/Angreifer-Verhältnis muss mindestens 0,8 betragen");
  1735. goto("wait");
  1736. }*/
  1737. //testphase ende
  1738. gfights = getScriptVar("gfights");
  1739. array = array.new(4);
  1740. array[0] = gilden_id;
  1741. array[1] = own_gilden_id;
  1742. array[2] = plot_id;
  1743. array[3] = fightset;
  1744. list.add(gfights, array);
  1745. setScriptVar("gfights", gfights);
  1746. map.add(fightplayers, plot_id, fightset);
  1747. map.add(gstatus, plot_id, 0);
  1748. //testphase
  1749. //map.add(clicks, getGuildBlock(gilden_id), 200);
  1750. map.add(clicks, getGuildBlock(gilden_id), 10);
  1751. map.add(blocktime, gilden_id, time.getMillis());
  1752. name = getGuildName(gilden_id);
  1753. own_name = getGuildName(own_gilden_id);
  1754. setGuildSafetime(own_gilden_id, time.getMillis()); //Schutzzeit der Angreifer-Gilde aufheben
  1755. nachricht = concat("§cDeine Gilde befindet sich nun im Kampf mit ", name);
  1756. sendGuildMessage(own_gilden_id, gildepräfix, nachricht, false);
  1757. subtitle = concat("§cIhr greift ", getGuildName(gilden_id), " an");
  1758. sendGuildTitle(own_gilden_id, "§4Kampf", subtitle);
  1759. nachricht = concat("§cDie Gilde ", own_name, " hat euch soeben den Krieg erklärt!");
  1760. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  1761. subtitle = concat("§cIhr werdet von ", own_name, " angegriffen");
  1762. sendGuildTitle(gilden_id, "§4Kampf", subtitle);
  1763. list.add(checkwinlist, plot_id);
  1764. sgoto(72000, "checkdefendwin"); //60 Minuten
  1765. goto("wait");
  1766. }
  1767. if(arg0 == "steal") {
  1768. own_gilden_id = guild.getId(player);
  1769. if(!isPlayerInGuild(player)) {
  1770. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  1771. goto("wait");
  1772. }
  1773. if(!checkIfAttacker(own_gilden_id)) {
  1774. speakPrefix(player, fehlerpräfix, "§rDeine Gilde greift niemanden an (§6/g fight§r)!");
  1775. goto("wait");
  1776. }
  1777. gilden_id = getOppFighter(own_gilden_id);
  1778. plot_id = getFightPlot(own_gilden_id);
  1779. if(map.contains(fightplayers, plot_id)) {
  1780. fightset = map.get(fightplayers, plot_id);
  1781. if(!set.contains(fightset, player.getId(player))) {
  1782. speakPrefix(player, fehlerpräfix, "§rDu nimmmst nicht am Kampf deiner Gilde teil");
  1783. goto("wait");
  1784. }
  1785. }
  1786. if(map.get(gstatus, plot_id) == 0) {
  1787. speakPrefix(player, fehlerpräfix, "§rDu kannst diesen Befehl erst verwenden, wenn der Gildenblock zerstört wurde");
  1788. goto("wait");
  1789. }
  1790. for(i = 0; i < list.getSize(stealers); i++) {
  1791. temparray = list.getIndex(stealers, i);
  1792. p_name = temparray[0];
  1793. if(player_name == p_name) {
  1794. speakPrefix(player, fehlerpräfix, "§rDu stiehlst bereits!");
  1795. goto("wait");
  1796. }
  1797. }
  1798. ploc = entity.getLocation(player);
  1799. x = text.number(loc.getCoord(ploc, "bx"));
  1800. y = text.number(loc.getCoord(ploc, "by"));
  1801. z = text.number(loc.getCoord(ploc, "bz"));
  1802. nachricht = concat("§cAus der Schatzkammer wird Gold gestohlen!");
  1803. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  1804. nachricht = concat("§7", player_name, "§r ", x, " / ", y, " / ", z);
  1805. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  1806. entity.addEffect(player, "weakness", 600, 4);
  1807. entity.addEffect(player, "slowness", 600, 5);
  1808. temparray = array.new(5);
  1809. temparray[0] = player_name;
  1810. temparray[1] = ploc;
  1811. temparray[2] = 0;
  1812. temparray[3] = own_gilden_id;
  1813. temparray[4] = gilden_id;
  1814. list.add(stealers, temparray);
  1815. sgoto(100, "stealchecker"); //5 Sekunden
  1816. speakPrefix(player, fehlerpräfix, "§rDu versuchst Gold zu stehlen!");
  1817. speakPrefix(player, fehlerpräfix, "§rBewege dich nicht vom Fleck!");
  1818. goto("wait");
  1819. }
  1820. if(arg0 == "search") {
  1821. if(!isLeaderOrOfficer(player)) {
  1822. speakPrefix(player, fehlerpräfix, "§rDu bist kein Leiter oder Offizier deiner Gilde");
  1823. goto("wait");
  1824. }
  1825. own_gilden_id = guild.getId(player);
  1826. gildenkonto = getGuildGold(own_gilden_id);
  1827. if(gildenkonto < 100) {
  1828. speakPrefix(player, fehlerpräfix, concat("§rDeine Gilde hat nur ", text.number(gildenkonto), " von 100 Gold"));
  1829. goto("wait");
  1830. }
  1831. setGuildGold(own_gilden_id, gildenkonto - 100);
  1832. nachricht = concat(player_name, " hat eine Suche gestartet");
  1833. sendGuildMessage(own_gilden_id, gildepräfix, nachricht, false);
  1834. plot = getGuildPlot(own_gilden_id);
  1835. gpvpworld = world.get(gpvpworld_name);
  1836. world_list = players.toWorldList(gpvpworld);
  1837. counter = 0;
  1838. for(i = 0; i < list.getSize(world_list); i++) {
  1839. p = list.getIndex(world_list, i);
  1840. g_id = guild.getId(p);
  1841. if(g_id != own_gilden_id) {
  1842. ploc = entity.getLocation(p);
  1843. list = plot.get(ploc);
  1844. if(list.contains(list, plot)) {
  1845. counter++;
  1846. x = text.number(loc.getCoord(ploc, "bx"));
  1847. y = text.number(loc.getCoord(ploc, "by"));
  1848. z = text.number(loc.getCoord(ploc, "bz"));
  1849. nachricht = concat("§7", player.getName(p), "§r ", x, " / ", y, " / ", z);
  1850. sendGuildMessage(own_gilden_id, gildepräfix, nachricht, false);
  1851. }
  1852. }
  1853. }
  1854. if(counter == 0) {
  1855. nachricht = concat("Keine Gegner am eigenen Gildengebiet erkannt");
  1856. sendGuildMessage(own_gilden_id, gildepräfix, nachricht, false);
  1857. }
  1858. goto("wait");
  1859. }
  1860. if(arg0 == "nick") {
  1861. if(size < 3) {
  1862. speakPrefix(player, commandspräfix, "/g nick <player> <nickname>");
  1863. goto("wait");
  1864. }
  1865. gilden_id = guild.getId(player);
  1866. p_name = list.getIndex(args, 1);
  1867. nickname = text.concatList(args, " ", 2, size - 1);
  1868. if(!checkIfEverOnline(p_name)) {
  1869. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  1870. goto("wait");
  1871. }
  1872. if(!isLeaderOrOfficer(player)) {
  1873. speakPrefix(player, fehlerpräfix, "§rNur für Gildenleiter bzw. Offiziere");
  1874. goto("wait");
  1875. }
  1876. if(!guild.isSame(p_name, player_name)) {
  1877. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  1878. goto("wait");
  1879. }
  1880. if(text.length(nickname) > 15) {
  1881. speakPrefix(player, fehlerpräfix, "§rDer Nickname darf maximal 15 Zeichen lang sein");
  1882. goto("wait");
  1883. }
  1884. setNick(p_name, nickname);
  1885. speakPrefix(player, gildepräfix, concat("§rNickname §7", nickname, "§r für §7", p_name, "§r gesetzt"));
  1886. goto("wait");
  1887. }
  1888. if(arg0 == "info") {
  1889. if(size == 1) {
  1890. if(!isPlayerInGuild(player)) {
  1891. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  1892. goto("wait");
  1893. }
  1894. gilden_id = guild.getId(player);
  1895. gilden_name = getGuildName(gilden_id);
  1896. }
  1897. if(size == 2) {
  1898. arg1 = list.getIndex(args, 1);
  1899. //Gilden-ID
  1900. if(text.class(arg1) == "Double") {
  1901. gilden_id = arg1;
  1902. gilden_name = getGuildName(gilden_id);
  1903. if(!isExistingGuildName(gilden_name)) {
  1904. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  1905. goto("wait");
  1906. }
  1907. }
  1908. //Gilden-Name
  1909. else {
  1910. gilden_name = arg1;
  1911. gilden_id = getGuildIdFromName(gilden_name);
  1912. if(gilden_id == null) {
  1913. speakPrefix(player, fehlerpräfix, "§rDieser Gildenname existiert nicht");
  1914. goto("wait");
  1915. }
  1916. }
  1917. }
  1918. templist = getGuildPlayers(gilden_id);
  1919. list.new(adellist);
  1920. list.new(officerslist);
  1921. list.new(memberslist);
  1922. for(i = 0; i < list.getSize(templist); i++) {
  1923. p_id = list.getIndex(templist, i);
  1924. p_name = player.getNameFromId(p_id);
  1925. //Leiter ?
  1926. if(isLeader(p_name)) {
  1927. nick = getNick(p_name);
  1928. if(nick == null) {
  1929. leader = p_name;
  1930. } else {
  1931. leader = concat(nick, " ", p_name);
  1932. }
  1933. }
  1934. //Offizier ?
  1935. else {
  1936. if(isOfficer(p_name)) {
  1937. nick = getNick(p_name);
  1938. if(nick == null) {
  1939. list.add(officerslist, p_name);
  1940. } else {
  1941. list.add(officerslist, concat(nick, " ", p_name));
  1942. }
  1943. }
  1944. //Adel ?
  1945. else {
  1946. if(isAdel(p_name)) {
  1947. nick = getNick(p_name);
  1948. if(nick == null) {
  1949. list.add(adellist, p_name);
  1950. } else {
  1951. list.add(adellist, concat(nick, " ", p_name));
  1952. }
  1953. }
  1954. //restliche Mitglieder
  1955. else {
  1956. nick = getNick(p_name);
  1957. if(nick == null) {
  1958. list.add(memberslist, p_name);
  1959. } else {
  1960. list.add(memberslist, concat(nick, " ", p_name));
  1961. }
  1962. }
  1963. }
  1964. }
  1965. }
  1966. if(list.getSize(officerslist) == 0) {
  1967. officers = "-";
  1968. } else {
  1969. officers = text.concatList(officerslist, ", ", 0, list.getSize(officerslist) - 1);
  1970. }
  1971. if(list.getSize(adellist) == 0) {
  1972. adel = "-";
  1973. } else {
  1974. adel = text.concatList(adellist, ", ", 0, list.getSize(adellist) - 1);
  1975. }
  1976. if(list.getSize(memberslist) == 0) {
  1977. members = "-";
  1978. } else {
  1979. members = text.concatList(memberslist, ", ", 0, list.getSize(memberslist) - 1);
  1980. }
  1981. msg(player, concat("§6§lGilde §r", gilden_name, " (", getGuildTag(gilden_id), " #ID:", text.number(gilden_id), ")"));
  1982. msg(player, "§6Leiter");
  1983. msg(player, "§r", leader);
  1984. msg(player, "§6Offiziere");
  1985. msg(player, "§r", officers);
  1986. msg(player, "§6Adlige");
  1987. msg(player, "§r", adel);
  1988. msg(player, "§6Mitglieder");
  1989. msg(player, "§r", members);
  1990. msg(player, "§6Einfluss");
  1991. msg(player, "§r", text.number(getGuildElo(gilden_id)));
  1992. if(size == 1) {
  1993. msg(player, "§6Schatzkammer");
  1994. msg(player, text.number(getGuildGold(gilden_id)));
  1995. }
  1996. if(perm.has(player, "isSnuviMaster")) {
  1997. if(size == 2) {
  1998. msg(player, "§6Schatzkammer");
  1999. msg(player, text.number(getGuildGold(gilden_id)));
  2000. }
  2001. msg(player, "§6PlotId");
  2002. msg(player, "§r", text.number(getGuildPlotId(gilden_id)));
  2003. msg(player, "§6Gildenblock");
  2004. msg(player, "§r", getGuildBlock(gilden_id));
  2005. }
  2006. goto("wait");
  2007. }
  2008. if(arg0 == "tp") {
  2009. if(!isGameMod(player)) {
  2010. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  2011. goto("wait");
  2012. }
  2013. if(size != 2) {
  2014. speakPrefix(player, commandspräfix, "/g tp <gildenid>");
  2015. goto("wait");
  2016. }
  2017. gilden_id = list.getIndex(args, 1);
  2018. if(!isDouble(gilden_id)) {
  2019. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2020. goto("wait");
  2021. }
  2022. gilden_name = getGuildName(gilden_id);
  2023. if(gilden_name == null) {
  2024. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2025. goto("wait");
  2026. }
  2027. player.setGamemode(player, "spectator");
  2028. teleportPlayer(player, loc.mod(getGuildBlock(gilden_id), 0, 1, 0), true);
  2029. speakPrefix(player, gildepräfix, concat("§rDu wurdest zur Gilde §7", gilden_name, " §rteleportiert"));
  2030. goto("wait");
  2031. }
  2032. if(arg0 == "setguildgold") {
  2033. if(!isGameMod(player)) {
  2034. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  2035. goto("wait");
  2036. }
  2037. if(size != 3) {
  2038. speakPrefix(player, commandspräfix, "/g setguildgold <gildenid> <gold>");
  2039. goto("wait");
  2040. }
  2041. gilden_id = list.getIndex(args, 1);
  2042. if(!isDouble(gilden_id)) {
  2043. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2044. goto("wait");
  2045. }
  2046. gold = list.getIndex(args, 2);
  2047. if(!isDouble(gold)) {
  2048. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2049. goto("wait");
  2050. }
  2051. gilden_name = getGuildName(gilden_id);
  2052. if(gilden_name == null) {
  2053. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2054. goto("wait");
  2055. }
  2056. setGuildGold(gilden_id, gold);
  2057. speakPrefix(player, gildepräfix, "§rSchatzkammer der Gilde wurde verändert");
  2058. goto("wait");
  2059. }
  2060. if(arg0 == "setguildelo") {
  2061. if(!isGameMod(player)) {
  2062. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  2063. goto("wait");
  2064. }
  2065. if(size != 3) {
  2066. speakPrefix(player, commandspräfix, "/g setguildelo <gildenid> <elo>");
  2067. goto("wait");
  2068. }
  2069. gilden_id = list.getIndex(args, 1);
  2070. if(!isDouble(gilden_id)) {
  2071. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2072. goto("wait");
  2073. }
  2074. elo = list.getIndex(args, 2);
  2075. if(!isDouble(elo)) {
  2076. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2077. goto("wait");
  2078. }
  2079. if(elo < 0) {
  2080. speakPrefix(player, fehlerpräfix, "Positive Zahl erwartet");
  2081. goto("wait");
  2082. }
  2083. gilden_name = getGuildName(gilden_id);
  2084. if(gilden_name == null) {
  2085. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2086. goto("wait");
  2087. }
  2088. setGuildElo(gilden_id, elo);
  2089. speakPrefix(player, gildepräfix, "§rEinfluss der Gilde wurde verändert");
  2090. goto("wait");
  2091. }
  2092. if(arg0 == "setguildname") {
  2093. if(!isGameMod(player)) {
  2094. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  2095. goto("wait");
  2096. }
  2097. if(size != 3) {
  2098. speakPrefix(player, commandspräfix, "/g setguildname <gildenid> <name>");
  2099. goto("wait");
  2100. }
  2101. gilden_id = list.getIndex(args, 1);
  2102. if(!isDouble(gilden_id)) {
  2103. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2104. goto("wait");
  2105. }
  2106. gilden_name = getGuildName(gilden_id);
  2107. if(gilden_name == null) {
  2108. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2109. goto("wait");
  2110. }
  2111. gildenname = list.getIndex(args, 2);
  2112. if(text.length(gildenname) > 20) {
  2113. speakPrefix(player, fehlerpräfix, "§rDer Gildenname darf maximal 20 Zeichen lang sein");
  2114. goto("wait");
  2115. }
  2116. if(!text.onlyletters(gildenname)) {
  2117. speakPrefix(player, fehlerpräfix, "§rDer Gildenname darf nur Buchstaben enthalten");
  2118. goto("wait");
  2119. }
  2120. if(isExistingGuildName(gildenname)) {
  2121. speakPrefix(player, fehlerpräfix, "§rDieser Gildenname existiert bereits");
  2122. goto("wait");
  2123. }
  2124. setGuildName(gilden_id, gildenname);
  2125. speakPrefix(player, gildepräfix, "§rDer Name wurde geändert");
  2126. goto("wait");
  2127. }
  2128. if(arg0 == "spawn") {
  2129. if(arte_loc_type == "player") {
  2130. if(arte_yet_uuid == player.getUuid(player)) {
  2131. speakPrefix(player, fehlerpräfix, "Als Artefakt-Träger darfst du dich nicht teleportieren");
  2132. goto("wait");
  2133. }
  2134. }
  2135. if(checkForEnimies(player)) {
  2136. cancelCauseEnimy();
  2137. goto("wait");
  2138. }
  2139. teleportPlayer(player, gildenspawnloc, true);
  2140. goto("wait");
  2141. }
  2142. if(arg0 == "gold" || arg0 == "xp") {
  2143. gilden_id = guild.getId(player);
  2144. toggleGoldOrXp(gilden_id);
  2145. goto("wait");
  2146. }
  2147. if(arg0 == "class") {
  2148. if(size != 2) {
  2149. speakPrefix(player, commandspräfix, "/g class <class>");
  2150. goto("wait");
  2151. }
  2152. class = list.getIndex(args, 1);
  2153. classes = getScriptVar("gpvp_classes");
  2154. if(!list.contains(classes, class)) {
  2155. speakPrefix(player, fehlerpräfix, "Klasse nicht vorhanden");
  2156. goto("wait");
  2157. }
  2158. //Hat der Spieler die Klasse bereits gewählt?
  2159. if(guild.isActiveClass(player, class)) {
  2160. speakPrefix(player, fehlerpräfix, "Klasse bereits gewählt");
  2161. goto("wait");
  2162. }
  2163. //Neue Klasse aktivieren
  2164. guild.setClass(player, class);
  2165. displayclass(player, class);
  2166. level = guild.getLevel(player);
  2167. xp = guild.getXp(player);
  2168. displaylevel(player, level);
  2169. displayxp(player, level, xp);
  2170. setManaAtm(player, 0);
  2171. setManaMax(player, calcManaMax(class, level));
  2172. displaymana(player);
  2173. fillStacksBar(player, class);
  2174. speakPrefix(player, gildepräfix, concat("Du bist nun ", class));
  2175. gilden_id = guild.getId(player);
  2176. gilden_tag = getGuildTag(gilden_id);
  2177. setHeadName(player);
  2178. goto("wait");
  2179. }
  2180. if(arg0 == "leave") {
  2181. gilden_id = guild.getId(player);
  2182. if(!isPlayerInGuild(player)) {
  2183. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2184. goto("wait");
  2185. }
  2186. if(checkIfGuildInFight(gilden_id)) {
  2187. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  2188. goto("wait");
  2189. }
  2190. if(isLeader(player)) {
  2191. speakPrefix(player, fehlerpräfix, "§rDu musst zuerst jemand anderen mit /leader zum Leiter ernennen");
  2192. goto("wait");
  2193. }
  2194. removePlayerFromGuild(player, false);
  2195. //Spieler vom Gildengrundstück entfernen
  2196. plot = getGuildPlot(gilden_id);
  2197. removePlotPlayer(plot, player_name);
  2198. speakPrefix(player, gildepräfix, "§rDu hast die Gilde verlassen");
  2199. nachricht = concat("§7", player_name, "§r hat die Gilde verlassen");
  2200. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2201. goto("wait");
  2202. }
  2203. if(arg0 == "kick") {
  2204. if(size != 2) {
  2205. speakPrefix(player, commandspräfix, "/g kick <name>");
  2206. goto("wait");
  2207. }
  2208. p_name = list.getIndex(args, 1);
  2209. if(!isPlayerInGuild(player)) {
  2210. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2211. goto("wait");
  2212. }
  2213. if(!checkIfEverOnline(p_name)) {
  2214. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2215. goto("wait");
  2216. }
  2217. gilden_id = guild.getId(player);
  2218. if(!isLeaderOrOfficer(player)) {
  2219. speakPrefix(player, fehlerpräfix, "§rDu bist kein Leiter oder Offizier deiner Gilde");
  2220. goto("wait");
  2221. }
  2222. if(!guild.isSame(p_name, player_name)) {
  2223. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  2224. goto("wait");
  2225. }
  2226. if(checkIfGuildInFight(gilden_id)) {
  2227. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  2228. goto("wait");
  2229. }
  2230. if(isLeader(p_name)) {
  2231. speakPrefix(player, fehlerpräfix, "§rDer Leiter kann nicht entlassen werden");
  2232. goto("wait");
  2233. }
  2234. if(isOfficer(player_name) && isOfficer(p_name)) {
  2235. speakPrefix(player, fehlerpräfix, "§rDu kannst einen anderen Offizier nicht entlassen");
  2236. goto("wait");
  2237. }
  2238. //Spieler vom Grundstück entfernen
  2239. plot = getGuildPlot(gilden_id);
  2240. removePlotPlayer(plot, p_name);
  2241. //Spieler aus Gilde entfernen
  2242. removePlayerFromGuild(p_name, true);
  2243. sendmessage(p_name, gildepräfix, concat("§rDu wurdest aus der Gilde entlassen"), true);
  2244. nachricht = concat("§7", p_name, "§r wurde aus der Gilde entlassen");
  2245. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2246. goto("wait");
  2247. }
  2248. if(arg0 == "disband") {
  2249. gilden_id = guild.getId(player);
  2250. if(!isPlayerInGuild(player)) {
  2251. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2252. goto("wait");
  2253. }
  2254. if(!isLeader(player)) {
  2255. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gilde");
  2256. goto("wait");
  2257. }
  2258. if(checkIfGuildInFight(gilden_id)) {
  2259. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  2260. goto("wait");
  2261. }
  2262. if(getGuildGold(gilden_id) != 0) {
  2263. speakPrefix(player, fehlerpräfix, "§rDer Kontostand der Gilde muss 0 sein");
  2264. goto("wait");
  2265. }
  2266. msg(player, "[", gildepräfix, "§r] Möchtest du die Gilde wirklich auflösen? ", text.click("§r[§cAuflösen§r]", concat("/gilde disband2")));
  2267. goto("wait");
  2268. }
  2269. if(arg0 == "disband2") {
  2270. gilden_id = guild.getId(player);
  2271. if(!isPlayerInGuild(player)) {
  2272. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2273. goto("wait");
  2274. }
  2275. if(!isLeader(player)) {
  2276. speakPrefix(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gilde");
  2277. goto("wait");
  2278. }
  2279. if(checkIfGuildInFight(gilden_id)) {
  2280. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  2281. goto("wait");
  2282. }
  2283. if(getGuildGold(gilden_id) != 0) {
  2284. speakPrefix(player, fehlerpräfix, "§rDer Kontostand der Gilde muss 0 sein");
  2285. goto("wait");
  2286. }
  2287. //Artefakt zurücksetzen, falls die Gilde das Artefakt besitzt
  2288. if(arte_loc_type == "placed") {
  2289. if(isOnGuildPlot(gilden_id, arte_yet_loc)) {
  2290. arteresetcore();
  2291. }
  2292. }
  2293. //Spieler entfernen
  2294. templist = getGuildPlayers(gilden_id);
  2295. for(i = 0; i < list.getSize(templist); i++) {
  2296. p_id = list.getIndex(templist, i);
  2297. removePlayerFromGuild(p_id, true);
  2298. }
  2299. //Gilde löschen
  2300. deleteGuild(gilden_id);
  2301. g_block = getGuildBlock(gilden_id);
  2302. map.remove(g_block_entities, g_block);
  2303. text_ent = entity.get(g_block, 3, "me.km.entities.EntityNobody");
  2304. if(text_ent == null) {
  2305. list.add(text_ent_to_remove, loc.mod(g_block, 0.5, 1.5, 0.5));
  2306. } else {
  2307. entity.remove(text_ent);
  2308. }
  2309. speakPrefix(player, gildepräfix, "§rDu hast die Gilde gelöscht");
  2310. goto("wait");
  2311. }
  2312. if(arg0 == "reset") {
  2313. if(!isGameAdmin(player)) {
  2314. speakPrefix(player, fehlerpräfix, "§rNur §6DER EINE §rkann diesen Befehl ausführen");
  2315. goto("wait");
  2316. }
  2317. //Alle Spieler in der Gildenpvp-Welt zum Spawn teleportieren
  2318. gpvpworld = world.get(gpvpworld_name);
  2319. worldlist = players.toWorldList(gpvpworld);
  2320. for(i = 0; i < list.getSize(worldlist); i++) {
  2321. p = list.getIndex(worldlist, i);
  2322. player.clearInventory(p);
  2323. display.reset(p);
  2324. stacks.setActive(p, false);
  2325. entity.setName(p, player.getName(p));
  2326. teleportPlayer(p, serverspawn, true);
  2327. }
  2328. //Artefakt
  2329. arte_yet_loc = read.location(ggv("SERVER", "arte_yet_loc"));
  2330. if(arte_loc_type == "placed") {
  2331. block.set(arte_yet_loc, "minecraft:air");
  2332. }
  2333. //Gildenblöcke und Grundstücke entfernen
  2334. list = getAllGuildIds();
  2335. list_size = list.getSize(list);
  2336. for(i = 0; i < list_size; i++) {
  2337. gilden_id = list.getIndex(list, i);
  2338. location = getGuildBlock(gilden_id);
  2339. block.set(location, "minecraft:air");
  2340. plot = getGuildPlot(gilden_id);
  2341. removePlot(plot, gpvpworld);
  2342. }
  2343. msg("dev", "§7Debug: ", text.number(list_size), " Gilden entfernt");
  2344. //Datenbank leeren
  2345. dropTables();
  2346. dgv("SERVER", "gildencounter");
  2347. dgv("SERVER", "artedaycounter");
  2348. dgv("SERVER", "arte_yet_loc");
  2349. msg("online", "Loading .");
  2350. waitfor(20);
  2351. msg("online", "14% Hässliche Gildenbasen abreißen");
  2352. waitfor(20);
  2353. msg("online", "Loading ..");
  2354. msg("online", "45% Hässliche Gildenbasen abreißen");
  2355. waitfor(20);
  2356. msg("online", "Loading ...");
  2357. msg("online", "79% Hässliche Gildenbasen abreißen");
  2358. waitfor(20);
  2359. msg("online", "Loading .");
  2360. msg("online", "FINISHED Hässliche Gildenbasen abreißen");
  2361. waitfor(20);
  2362. msg("online", "Loading ..");
  2363. msg("online", "8% Spawn neu konzipieren");
  2364. waitfor(20);
  2365. msg("online", "Loading ...");
  2366. msg("online", "36% Spawn neu konzipieren");
  2367. waitfor(20);
  2368. msg("online", "Loading .");
  2369. msg("online", "68% Spawn neu konzipieren");
  2370. waitfor(20);
  2371. msg("online", "Loading ..");
  2372. msg("online", "99% Spawn neu konzipieren");
  2373. waitfor(20);
  2374. msg("online", "Loading completed");
  2375. msg("online", "Wir behalten doch den alten :^)");
  2376. waitfor(20);
  2377. msg("online", "§6Gildenpvp §rwurde resettet. Ein neues §6Zeitalter §rbeginnt!");
  2378. msg("dev", "§cScript neu starten");
  2379. gpvpworld = world.get(gpvpworld_name);
  2380. worldlist = players.toWorldList(gpvpworld);
  2381. size = list.getSize(worldlist);
  2382. if(size > 0) {
  2383. msg("dev", "§7Debug: §cNoch ", text.number(size), " Spieler in der Welt!");
  2384. }
  2385. term();
  2386. }
  2387. if(arg0 == "resetnextjoin") {
  2388. if(!isGameMod(player)) {
  2389. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  2390. goto("wait");
  2391. }
  2392. if(size != 2) {
  2393. speakPrefix(player, commandspräfix, "§r/gilde resetnextjoin <gildenid/gildenname>");
  2394. goto("wait");
  2395. }
  2396. p_name = list.getIndex(args, 1);
  2397. if(!checkIfEverOnline(p_name)) {
  2398. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2399. goto("wait");
  2400. }
  2401. setNextJoin(p_name, time.getMillis());
  2402. speakPrefix(player, commandspräfix, "§rDer Spieler kann jetzt sofort einer Gilde beitreten");
  2403. goto("wait");
  2404. }
  2405. if(arg0 == "resetsafetime") {
  2406. if(!isGameMod(player)) {
  2407. speakPrefix(player, fehlerpräfix, "§rNur für Gamemaster");
  2408. goto("wait");
  2409. }
  2410. if(size != 2) {
  2411. speakPrefix(player, commandspräfix, "§r/gilde resetsafetime <gildenid/gildenname>");
  2412. goto("wait");
  2413. }
  2414. gilden_name = list.getIndex(args, 1);
  2415. if(isDouble(gilden_name)) {
  2416. gilden_name = getGuildName(gilden_name);
  2417. }
  2418. if(!isExistingGuildName(gilden_name)) {
  2419. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2420. goto("wait");
  2421. }
  2422. gilden_id = getGuildIdFromName(gilden_name);
  2423. setGuildSafetime(gilden_id, time.getMillis());
  2424. speakPrefix(player, commandspräfix, "§rDie Schutzzeit der Gilde wurde entfernt");
  2425. goto("wait");
  2426. }
  2427. if(arg0 == "invite") {
  2428. if(size != 2) {
  2429. speakPrefix(player, commandspräfix, "/g invite <name>");
  2430. goto("wait");
  2431. }
  2432. gilden_id = guild.getId(player);
  2433. player_id = player.getId(player);
  2434. if(!isPlayerInGuild(player)) {
  2435. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2436. goto("wait");
  2437. }
  2438. if(!isLeaderOrOfficer(player)) {
  2439. speakPrefix(player, fehlerpräfix, "§rDu bist kein Leiter oder Offizier deiner Gilde");
  2440. goto("wait");
  2441. }
  2442. p_name = list.getIndex(args, 1);
  2443. if(player_name == p_name) {
  2444. speakPrefix(player, fehlerpräfix, "§rDu kannst dich nicht selbst einladen");
  2445. goto("wait");
  2446. }
  2447. if(!checkIfEverOnline(p_name)) {
  2448. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2449. goto("wait");
  2450. }
  2451. if(!isOnline(p_name)) {
  2452. speakPrefix(player, fehlerpräfix, "§rDer Eingeladene muss online sein");
  2453. goto("wait");
  2454. }
  2455. p = read.player(p_name);
  2456. if(isPlayerInGuild(p)) {
  2457. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist bereits in einer Gilde");
  2458. goto("wait");
  2459. }
  2460. if(isPlayerInGroup(p)) {
  2461. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist in einer Gruppe");
  2462. goto("wait");
  2463. }
  2464. p_id = player.getId(player.getUuid(p_name));
  2465. if(hasInvitationFromThisGuild(p_id, gilden_id)) {
  2466. speakPrefix(player, fehlerpräfix, "§rDieser Spieler hat bereits eine Einladung deiner Gilde erhalten");
  2467. goto("wait");
  2468. }
  2469. gilden_name = getGuildName(gilden_id);
  2470. addGuildInvitation(p_id, gilden_id, player_id);
  2471. nachricht = concat("§r", p_name, " hat eine Einladung von deiner Gilde erhalten. Sie ist für 5 Minuten aktiv");
  2472. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2473. sendmessage(p_name, gildepräfix, concat("Du wurdest eingeladen, der Gilde ", gilden_name, " beizutreten"), true);
  2474. msg(p_name, text.click("§r[§aAnnehmen§r]", concat("/gilde accept ", gilden_name)));
  2475. sgoto(6000, "removeGuildInvitation"); //5 Minuten
  2476. goto("wait");
  2477. }
  2478. if(arg0 == "accept") {
  2479. if(size != 2) {
  2480. speakPrefix(player, commandspräfix, "/g accept <name>");
  2481. goto("wait");
  2482. }
  2483. if(isPlayerInGuild(player)) {
  2484. speakPrefix(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  2485. goto("wait");
  2486. }
  2487. if(isPlayerInGroup(player)) {
  2488. speakPrefix(player, fehlerpräfix, "§rDu bist in einer Gruppe");
  2489. goto("wait");
  2490. }
  2491. gilden_name = list.getIndex(args, 1);
  2492. if(!isExistingGuildName(gilden_name)) {
  2493. speakPrefix(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2494. goto("wait");
  2495. }
  2496. player_id = player.getId(player);
  2497. gilden_id = getGuildIdFromName(gilden_name);
  2498. if(!hasInvitationFromThisGuild(player_id, gilden_id)) {
  2499. speakPrefix(player, fehlerpräfix, "§rDu hast keine Einladung von dieser Gilde erhalten");
  2500. goto("wait");
  2501. }
  2502. jointime = getNextJoin(player);
  2503. if(time.getMillis() < jointime) {
  2504. speakPrefix(player, fehlerpräfix, "§rDu musst insgesamt 12 Stunden warten, bis du wieder einer Gilde beitreten darfst");
  2505. goto("wait");
  2506. }
  2507. if(getGuildSize(gilden_id) >= getGuildSizeMax(gilden_id)) {
  2508. speakPrefix(player, fehlerpräfix, "§rDiese Gilde ist bereits voll");
  2509. goto("wait");
  2510. }
  2511. //Spieler zum Grundstück hinzufügen
  2512. plot = getGuildPlot(gilden_id);
  2513. addPlotPlayer(plot, player_name);
  2514. //Rang und Gildenid setzen
  2515. guild.setId(player, gilden_id);
  2516. setMember(player);
  2517. setHeadName(player);
  2518. nachricht = concat("§7", concat(player_name, "§r ist der Gilde beigetreten"));
  2519. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2520. speakPrefix(player, commandspräfix, "§rDu bist der Gilde beigetreten");
  2521. goto("wait");
  2522. }
  2523. if(arg0 == "deposit") {
  2524. if(size != 2) {
  2525. speakPrefix(player, commandspräfix, "/g deposit <zahl>");
  2526. goto("wait");
  2527. }
  2528. if(!isPlayerInGuild(player)) {
  2529. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2530. goto("wait");
  2531. }
  2532. gilden_id = guild.getId(player);
  2533. player_loc = entity.getLocation(player);
  2534. if(!isOnGuildPlot(gilden_id, player_loc)) {
  2535. speakPrefix(player, fehlerpräfix, "Dafür musst du dich am Gildengebiet befinden");
  2536. goto("wait");
  2537. }
  2538. betrag = list.getIndex(args, 1);
  2539. if(!isDouble(betrag)) {
  2540. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2541. goto("wait");
  2542. }
  2543. if(betrag < 0) {
  2544. speakPrefix(player, fehlerpräfix, "Positive Zahl erwartet");
  2545. goto("wait");
  2546. }
  2547. gold_atm = getGoldAtm(player);
  2548. gildenkonto = getGuildGold(gilden_id);
  2549. if(betrag > gold_atm) {
  2550. speakPrefix(player, fehlerpräfix, "§rDu kannst nicht mehr überweisen, als du in deinem Geldbeutel hast");
  2551. goto("wait");
  2552. }
  2553. subGoldAtm(player, betrag);
  2554. setGuildGold(gilden_id, gildenkonto + betrag);
  2555. nachricht = concat("§7", player_name, "§r hat §7", text.number(betrag), " Gold §rins Gildenkonto eingezahlt");
  2556. sendGuildMessage(gilden_id, goldpräfix, nachricht, false);
  2557. goto("wait");
  2558. }
  2559. if(arg0 == "withdraw") {
  2560. if(size != 2) {
  2561. speakPrefix(player, commandspräfix, "/g withdraw <zahl>");
  2562. goto("wait");
  2563. }
  2564. if(!isPlayerInGuild(player)) {
  2565. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2566. goto("wait");
  2567. }
  2568. gilden_id = guild.getId(player);
  2569. if(isMember(player_name)) {
  2570. speakPrefix(player, fehlerpräfix, "§rNur der Leiter, die Offiziere und der Adel können Gold vom Gildenkonto abheben");
  2571. goto("wait");
  2572. }
  2573. player_loc = entity.getLocation(player);
  2574. if(!isOnGuildPlot(gilden_id, player_loc)) {
  2575. speakPrefix(player, fehlerpräfix, "Dafür musst du dich am Gildengebiet befinden");
  2576. goto("wait");
  2577. }
  2578. betrag = list.getIndex(args, 1);
  2579. if(!isDouble(betrag)) {
  2580. speakPrefix(player, fehlerpräfix, "Zahl erwartet");
  2581. goto("wait");
  2582. }
  2583. if(betrag < 0) {
  2584. speakPrefix(player, fehlerpräfix, "Positive Zahl erwartet");
  2585. goto("wait");
  2586. }
  2587. gildenkonto = getGuildGold(gilden_id);
  2588. if(!isDouble(gildenkonto)) {
  2589. speakPrefix(player, fehlerpräfix, "Transaktion zu schnell");
  2590. goto("wait");
  2591. }
  2592. if(betrag > gildenkonto) {
  2593. speakPrefix(player, fehlerpräfix, "§rDu kannst nicht mehr abheben, als auf dem Gildenkonto ist");
  2594. goto("wait");
  2595. }
  2596. if(checkIfGuildInFight(gilden_id)) {
  2597. speakPrefix(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  2598. goto("wait");
  2599. }
  2600. addGoldAtm(player, betrag);
  2601. setGuildGold(gilden_id, gildenkonto - betrag);
  2602. speakPrefix(player, goldpräfix, "§rTransaktion erfolgreich");
  2603. goto("wait");
  2604. }
  2605. if(arg0 == "degrade") {
  2606. if(size != 2) {
  2607. speakPrefix(player, commandspräfix, "/g degrade <name>");
  2608. goto("wait");
  2609. }
  2610. p_name = list.getIndex(args, 1);
  2611. gilden_id = guild.getId(player);
  2612. if(!isPlayerInGuild(player)) {
  2613. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2614. goto("wait");
  2615. }
  2616. if(!isLeaderOrOfficer(player)) {
  2617. speakPrefix(player, fehlerpräfix, "§rDu bist weder Leiter der Gilde noch ein Offizier");
  2618. goto("wait");
  2619. }
  2620. if(!checkIfEverOnline(p_name)) {
  2621. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2622. goto("wait");
  2623. }
  2624. if(!guild.isSame(p_name, player_name)) {
  2625. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  2626. goto("wait");
  2627. }
  2628. if(player_name == p_name) {
  2629. speakPrefix(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht auf dich selbst anwenden");
  2630. goto("wait");
  2631. }
  2632. own_rang = getRang(player);
  2633. p_rang = getRang(p_name);
  2634. if(own_rang == "Offizier") {
  2635. if(p_rang != "Adel") {
  2636. speakPrefix(player, fehlerpräfix, "§rDu kannst nur Adel degradieren");
  2637. goto("wait");
  2638. }
  2639. }
  2640. setMember(p_name);
  2641. nachricht = concat("§r", p_name, " wurde degradiert");
  2642. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2643. goto("wait");
  2644. }
  2645. if(arg0 == "officer" || arg0 == "adel" || arg0 == "leader") {
  2646. if(size != 2) {
  2647. goto("wait");
  2648. }
  2649. p_name = list.getIndex(args, 1);
  2650. gilden_id = guild.getId(player);
  2651. if(!isPlayerInGuild(player)) {
  2652. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2653. goto("wait");
  2654. }
  2655. if(arg0 == "officer" || arg0 == "leader") {
  2656. if(!isLeader(player)) {
  2657. speakPrefix(player, fehlerpräfix, "§rDu bist nicht Leiter der Gilde");
  2658. goto("wait");
  2659. }
  2660. }
  2661. if(arg0 == "adel") {
  2662. if(!isLeaderOrOfficer(player)) {
  2663. speakPrefix(player, fehlerpräfix, "§rDu bist weder Leiter der Gilde noch ein Offizier");
  2664. goto("wait");
  2665. }
  2666. }
  2667. if(!checkIfEverOnline(p_name)) {
  2668. speakPrefix(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2669. goto("wait");
  2670. }
  2671. if(!guild.isSame(p_name, player_name)) {
  2672. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  2673. goto("wait");
  2674. }
  2675. if(player_name == p_name) {
  2676. speakPrefix(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht auf dich selbst anwenden");
  2677. goto("wait");
  2678. }
  2679. if(arg0 == "leader") {
  2680. setLeader(p_name);
  2681. nachricht = concat("§7", pname, "§r wurde zum Leiter der Gilde ernannt");
  2682. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2683. officers = getOfficersAmount(gilden_id);
  2684. if(officers == getOfficersMax(gilden_id)) {
  2685. setMember(player);
  2686. speakPrefix(player, gildepräfix, "§rMaximale Anzahl an Offizieren bereits erreicht, daher bist du nun Mitglied");
  2687. } else {
  2688. setOfficer(player);
  2689. speakPrefix(player, gildepräfix, "§rDu bist nun Offizier");
  2690. }
  2691. goto("wait");
  2692. }
  2693. if(arg0 == "adel") {
  2694. if(isAdel(p_name)) {
  2695. speakPrefix(player, fehlerpräfix, "§rDieser Spieler gehört bereits dem Adel an");
  2696. goto("wait");
  2697. }
  2698. if(isLeaderOrOfficer(p_name)) {
  2699. speakPrefix(player, fehlerpräfix, "§rDieser Spieler befindet sich bereits in einem höheren Rang");
  2700. goto("wait");
  2701. }
  2702. adel = getAdelAmount(gilden_id);
  2703. max_adel = getAdelMax(gilden_id);
  2704. if(adel >= max_adel) {
  2705. speakPrefix(player, fehlerpräfix, "§rEs können im Moment nicht mehr Adelige ernannt werden");
  2706. goto("wait");
  2707. }
  2708. setAdel(p_name);
  2709. nachricht = concat("§r", p_name, " ist nun ein Adeliger");
  2710. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2711. goto("wait");
  2712. }
  2713. if(arg0 == "officer") {
  2714. if(isOfficer(p_name)) {
  2715. speakPrefix(player, fehlerpräfix, "§rDieser Spieler ist bereits Offizier");
  2716. goto("wait");
  2717. }
  2718. officers = getOfficersAmount(gilden_id);
  2719. if(officers == getOfficersMax(gilden_id)) {
  2720. speakPrefix(player, fehlerpräfix, "§rMaximale Anzahl an Offizieren bereits erreicht");
  2721. goto("wait");
  2722. }
  2723. setOfficer(p_name);
  2724. nachricht = concat("§7", p_name, "§r wurde zum Offizier ernannt");
  2725. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2726. }
  2727. goto("wait");
  2728. }
  2729. speakPrefix(player, commandspräfix, "Command nicht erkannt. /gilde");
  2730. }
  2731. goto("wait");
  2732. @checkdefendwin
  2733. //Überprüfung, ob die Verteidigung erfolgreich war
  2734. plot_id = list.getIndex(checkwinlist, 0);
  2735. list.removeIndex(checkwinlist, 0);
  2736. //Ist der Status noch immer 0 (Angriffsphase)? Dann haben die Verteiger gewonnen
  2737. status = map.get(gstatus, plot_id);
  2738. if(status == 0) {
  2739. array = getFightArray(plot_id);
  2740. defenderid = array[0];
  2741. attackerid = array[1];
  2742. nachricht = concat("§6", getGuildName(defenderid), "§r hat den Angriff von §6", getGuildName(attackerid), "§r erfolgreich verteidigt");
  2743. sendGuildMessage(defenderid, gildepräfix, nachricht, false);
  2744. sendGuildMessage(attackerid, gildepräfix, nachricht, false);
  2745. //Schutzzeit für Verteiger setzen
  2746. minutes = 450;
  2747. setGuildSafetime(defenderid, time.getMillis() + minutes * 60000); //ms
  2748. //Kampf aus Datenstruktur entfernen
  2749. gfights = getScriptVar("gfights");
  2750. list.remove(gfights, array);
  2751. setScriptVar("gfights", gfights);
  2752. map.remove(gstatus, plot_id);
  2753. map.remove(fightplayers, plot_id);
  2754. map.remove(clicks, getGuildBlock(defenderid));
  2755. map.remove(blocktime, defenderid);
  2756. }
  2757. goto("wait");
  2758. @stealends
  2759. plot_id = list.getIndex(stealends, 0);
  2760. list.removeIndex(stealends, 0);
  2761. array = getFightArray(plot_id);
  2762. defenderid = array[0];
  2763. attackerid = array[1];
  2764. nachricht = concat("§6", getGuildName(attackerid), "§r hat den Angriff gegen §6", getGuildName(defenderid), "§r gewonnen");
  2765. sendGuildMessage(defenderid, gildepräfix, nachricht, false);
  2766. nachricht = concat("§rVerlasst sofort das Gildengebiet, sonst ereilt euch der Tod");
  2767. sendGuildMessage(attackerid, gildepräfix, nachricht, false);
  2768. //Kampf aus Datenstruktur entfernen
  2769. gfights = getScriptVar("gfights");
  2770. list.remove(gfights, array);
  2771. setScriptVar("gfights", gfights);
  2772. map.remove(gstatus, plot_id);
  2773. map.remove(fightplayers, plot_id);
  2774. map.remove(clicks, getGuildBlock(defenderid));
  2775. map.remove(blocktime, defenderid);
  2776. //Verzögerte Steuerabrechnung, falls die Gilde im Kampf war
  2777. if(list.contains(scheduledtax, defenderid)) {
  2778. calculateTax(defenderid);
  2779. list.remove(scheduledtax, defenderid);
  2780. }
  2781. goto("wait");
  2782. @stealchecker
  2783. temparray = list.getIndex(stealers, 0);
  2784. list.removeIndex(stealers, 0);
  2785. p_name = temparray[0];
  2786. p_loc = temparray[1];
  2787. status = temparray[2];
  2788. own_gilden_id = temparray[3];
  2789. gilden_id = temparray[4];
  2790. p = read.player(p_name);
  2791. if(p == null) {
  2792. goto("wait");
  2793. }
  2794. if(loc.distance(p_loc, entity.getLocation(p)) < 1) {
  2795. if(++status == 6) {
  2796. //Distanz zum Gildenblock
  2797. distance = loc.distance(p_loc, getGuildBlock(gilden_id));
  2798. if(distance <= 25) {
  2799. //Stehlrate: 2%
  2800. steal_rate = 0.02;
  2801. } elseif(distance > 25 && distance <= 50) {
  2802. //Stehlrate: 1,5%
  2803. steal_rate = 0.015;
  2804. } else {
  2805. //Stehlrate: 1%
  2806. steal_rate = 0.01;
  2807. }
  2808. gildenkonto = getGuildGold(gilden_id);
  2809. stolen_gold = gildenkonto * steal_rate;
  2810. if(stolen_gold > 200) {
  2811. stolen_gold = 200;
  2812. } elseif(stolen_gold < 10) {
  2813. stolen_gold = 10;
  2814. }
  2815. speakPrefix(p, gildepräfix, "§rDu hast §7", text.number(stolen_gold), " Gold §rgestohlen!");
  2816. nachricht = concat("§7", p_name, "§r hat §7", text.number(stolen_gold), " Gold §rgestohlen!");
  2817. sendGuildMessage(gilden_id, gildepräfix, nachricht, false);
  2818. setGuildGold(gilden_id, gildenkonto - stolen_gold);
  2819. setGuildGold(own_gilden_id, gildenkonto + stolen_gold);
  2820. goto("wait");
  2821. }
  2822. temparray[2] = status;
  2823. list.add(stealers, temparray);
  2824. sgoto(100, "stealchecker"); //5 Sekunden
  2825. } else {
  2826. speakPrefix(p, gildepräfix, "§rStehlversuch gescheitert!");
  2827. }
  2828. goto("wait");
  2829. @fishing
  2830. class = guild.getClass(player);
  2831. if(class != "none") {
  2832. addXp(player, 150, true, false);
  2833. xp = 150;
  2834. goto("wait");
  2835. }
  2836. goto("wait");
  2837. @inv_close
  2838. if(inv_name == skill_cast_inv_name) {
  2839. class = guild.getClass(player);
  2840. fillStacksBar(player, class);
  2841. speakPrefix(player, "§2Skills", "§rVeränderungen wurden gespeichert");
  2842. goto("wait");
  2843. }
  2844. if(inv_name == "Verzaubern") {
  2845. item = inv.getItem(inv, 0);
  2846. item.drop(entity.getLocation(player), item);
  2847. goto("wait");
  2848. }
  2849. goto("wait");
  2850. @block_click
  2851. if(block_type == "minecraft:chest") {
  2852. //Daily Reward
  2853. if(block_loc == dailyreward_chest_loc) {
  2854. cancel = true;
  2855. list = guild.getRewardList(player);
  2856. for(i = 0; i < daysofmonth; i++) { //inv befüllen
  2857. if(list.contains(list, i)) {
  2858. type = "minecraft:minecart";
  2859. } elseif(i + 1 >= actualday) {
  2860. type = "minecraft:chest_minecart";
  2861. } else {
  2862. type = "minecraft:black_concrete";
  2863. }
  2864. inv.setItem(dailyrewardinv, i, read.item(type, 1, concat("§rTag ", text.number(i + 1))));
  2865. }
  2866. inv.open(dailyrewardinv, player, monthname);
  2867. goto("wait");
  2868. }
  2869. //Kistensicherungen erstellen
  2870. item = entity.getEquip(player, "hand");
  2871. item_type = item.getType(item);
  2872. if(item_type == "km:golden_key" || item_type == "km:silver_key" || item_type == "km:bronze_key" || item_type == "km:copper_key") {
  2873. cancel = true;
  2874. if(!isAPlot(block_loc)) {
  2875. speakPrefix(player, chestpräfix, "Du bist nicht auf deinem Gildengebiet");
  2876. goto("wait");
  2877. }
  2878. own_gilden_id = guild.getId(player);
  2879. if(!isOnGuildPlot(own_gilden_id, block_loc)) {
  2880. speakPrefix(player, chestpräfix, "Du bist nicht auf deinem Gildengebiet");
  2881. goto("wait");
  2882. }
  2883. if(isALockedChest(block_loc)) {
  2884. speakPrefix(player, chestpräfix, "Diese Kiste ist bereits gesichert");
  2885. goto("wait");
  2886. }
  2887. chestloc2 = block.getSecChest(block_loc);
  2888. if(item_type == "km:golden_key") {
  2889. lockGuildChest(block_loc, own_gilden_id);
  2890. if(chestloc2 != null) {
  2891. lockGuildChest(chestloc2, own_gilden_id);
  2892. }
  2893. speakPrefix(player, chestpräfix, "Gildenkiste gesichert");
  2894. } elseif(item_type == "km:silver_key") {
  2895. lockOfficerChest(block_loc, own_gilden_id);
  2896. if(chestloc2 != null) {
  2897. lockOfficerChest(chestloc2, own_gilden_id);
  2898. }
  2899. speakPrefix(player, chestpräfix, "Offizierskiste gesichert");
  2900. } elseif(item_type == "km:bronze_key") {
  2901. lockAdelChest(block_loc, own_gilden_id);
  2902. if(chestloc2 != null) {
  2903. lockAdelChest(chestloc2, own_gilden_id);
  2904. }
  2905. speakPrefix(player, chestpräfix, "Adelskiste gesichert");
  2906. } elseif(item_type == "km:copper_key") {
  2907. lockPrivatChest(block_loc, player.getUuid(player));
  2908. if(chestloc2 != null) {
  2909. lockPrivatChest(chestloc2, player.getUuid(player));
  2910. }
  2911. speakPrefix(player, chestpräfix, "Privatkiste gesichert");
  2912. }
  2913. goto("wait");
  2914. }
  2915. //Kistensicherungen entfernen
  2916. if(item_type == "minecraft:shears") {
  2917. chestloc2 = block_loc;
  2918. chestloc1 = block.getSecChest(chestloc2);
  2919. own_gilden_id = guild.getId(player);
  2920. if(map.contains(chest_guild, chestloc2)) {
  2921. cancel = true;
  2922. gilden_id = map.get(chest_guild, chestloc2);
  2923. if(gilden_id != own_gilden_id) {
  2924. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Gildenschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  2925. goto("wait");
  2926. }
  2927. if(isLeaderOrOfficer(player)) {
  2928. if(chestloc1 != null) {
  2929. unlockGuildChest(chestloc1);
  2930. }
  2931. unlockGuildChest(chestloc2);
  2932. speakPrefix(player, chestpräfix, "Gildenschloss entfernt");
  2933. }
  2934. goto("wait");
  2935. }
  2936. if(map.contains(chest_officer, chestloc2)) {
  2937. cancel = true;
  2938. gilden_id = map.get(chest_officer, chestloc2);
  2939. if(gilden_id != own_gilden_id) {
  2940. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Offiziersschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  2941. goto("wait");
  2942. }
  2943. if(isLeaderOrOfficer(player)) {
  2944. if(chestloc1 != null) {
  2945. unlockOfficerChest(chestloc1);
  2946. }
  2947. unlockOfficerChest(chestloc2);
  2948. speakPrefix(player, chestpräfix, "Offiziersschloss entfernt");
  2949. }
  2950. goto("wait");
  2951. }
  2952. if(map.contains(chest_adel, chestloc2)) {
  2953. cancel = true;
  2954. gilden_id = map.get(chest_adel, chestloc2);
  2955. if(gilden_id != own_gilden_id) {
  2956. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Adelsschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  2957. goto("wait");
  2958. }
  2959. if(isLeaderOrOfficer(player)) {
  2960. if(chestloc1 != null) {
  2961. unlockAdelChest(chestloc1);
  2962. }
  2963. unlockAdelChest(chestloc2);
  2964. speakPrefix(player, chestpräfix, "Adelsschloss entfernt");
  2965. }
  2966. goto("wait");
  2967. }
  2968. if(map.contains(chest_privat, chestloc2)) {
  2969. cancel = true;
  2970. uuid = map.get(chest_privat, chestloc2);
  2971. //Gehört dem Spieler die Kiste?
  2972. if(uuid == player.getUuid(player)) {
  2973. if(chestloc1 != null) {
  2974. unlockPrivatChest(chestloc1);
  2975. }
  2976. unlockPrivatChest(chestloc2);
  2977. speakPrefix(player, chestpräfix, "Privatschloss entfernt");
  2978. goto("wait");
  2979. }
  2980. //Ist der Spieler in derselben Gilde?
  2981. if(guild.isSame(player_name, player.getName(uuid))) {
  2982. //Ist der Spieler der Gildenleiter?
  2983. if(isLeader(player)) {
  2984. if(chestloc1 != null) {
  2985. unlockPrivatChest(chestloc1);
  2986. }
  2987. unlockPrivatChest(chestloc2);
  2988. speakPrefix(player, chestpräfix, "Privatschloss entfernt");
  2989. goto("wait");
  2990. }
  2991. }
  2992. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Privatschloss von ", player.getName(uuid), " versehen!"));
  2993. goto("wait");
  2994. }
  2995. goto("wait");
  2996. }
  2997. //Kistensicherungen kontrollieren
  2998. own_gilden_id = guild.getId(player);
  2999. if(map.contains(chest_guild, block_loc)) {
  3000. gilden_id = map.get(chest_guild, block_loc);
  3001. if(gilden_id != own_gilden_id) {
  3002. cancel = true;
  3003. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Gildenschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  3004. }
  3005. goto("wait");
  3006. }
  3007. if(map.contains(chest_officer, block_loc)) {
  3008. gilden_id = map.get(chest_officer, block_loc);
  3009. if(gilden_id != own_gilden_id) {
  3010. cancel = true;
  3011. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Offiziersschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  3012. goto("wait");
  3013. }
  3014. if(!isLeaderOrOfficer(player)) {
  3015. cancel = true;
  3016. speakPrefix(player, chestpräfix, "Die Kiste ist mit einem Offiziersschloss versehen!");
  3017. goto("wait");
  3018. }
  3019. goto("wait");
  3020. }
  3021. if(map.contains(chest_adel, block_loc)) {
  3022. gilden_id = map.get(chest_adel, block_loc);
  3023. if(gilden_id != own_gilden_id) {
  3024. cancel = true;
  3025. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Adelsschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  3026. }
  3027. if(!isLeaderOrOfficer(player) && !isAdel(player)) {
  3028. cancel = true;
  3029. speakPrefix(player, chestpräfix, "Die Kiste ist mit einem Adelsschloss versehen!");
  3030. goto("wait");
  3031. }
  3032. goto("wait");
  3033. }
  3034. if(map.contains(chest_privat, block_loc)) {
  3035. uuid = map.get(chest_privat, block_loc);
  3036. if(uuid != player.getUuid(player)) {
  3037. cancel = true;
  3038. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Privatschloss von ", player.getName(uuid), " versehen!"));
  3039. }
  3040. goto("wait");
  3041. }
  3042. goto("wait");
  3043. }
  3044. /*if(block_type == "minecraft:enchanting_table" && action == "right") {
  3045. //Verzauberungsmenü
  3046. cancel = true;
  3047. lvl = player.getLevel(player);
  3048. enchanting_menu = inv.new("000012000020000020000020000");
  3049. inv.setItem(enchanting_menu, 1, read.item("km:arrow_right", 1, "§rAuswerten"));
  3050. if(lvl >= 1) {
  3051. inv.setItem(enchanting_menu, 2, read.item("minecraft:experience_bottle", 1, "§rLvl. 1"));
  3052. } else {
  3053. inv.setItem(enchanting_menu, 2, read.item("minecraft:gray_dye", 1, "§rLvl. 1"));
  3054. }
  3055. if(lvl >= 30) {
  3056. inv.setItem(enchanting_menu, 3, read.item("minecraft:experience_bottle", 30, "§rLvl. 30"));
  3057. } else {
  3058. inv.setItem(enchanting_menu, 3, read.item("minecraft:gray_dye", 30, "§rLvl. 30"));
  3059. }
  3060. if(lvl >= 15) {
  3061. inv.setItem(enchanting_menu, 4, read.item("minecraft:experience_bottle", 15, "§rLvl. 15"));
  3062. } else {
  3063. inv.setItem(enchanting_menu, 4, read.item("minecraft:gray_dye", 15, "§rLvl. 15"));
  3064. }
  3065. inv.open(enchanting_menu, player, "Verzaubern");
  3066. map.add(enchanting_menus, player.getUuid(player), inv.getId(enchanting_menu));
  3067. goto("wait");
  3068. }*/
  3069. if(block.hasTag(signs_tag, block)) {
  3070. if(block_loc == answer42loc) {
  3071. msg(player, "...the right answer is always 42");
  3072. goto("wait");
  3073. }
  3074. if(block_loc == grabbyloc) {
  3075. teleportPlayer(player, grabbyprisonloc, true);
  3076. sendWorldMessage("§cGalgen", concat("§r", player_name, " hat sich als gierig erwiesen"));
  3077. goto("wait");
  3078. }
  3079. goto("wait");
  3080. }
  3081. if(item.getType(entity.getEquip(player, "hand")) == "minecraft:diamond_pickaxe") {
  3082. if(block_type == "km:guild_block") {
  3083. plot_id = getPlotId(block_loc);
  3084. if(!isAFightPlot(plot_id)) {
  3085. goto("wait"); //Grundstück ist nicht in Gildenkampf verwickelt
  3086. }
  3087. defender_id = getGuildIdFromPlotId(plot_id);
  3088. attacker_id = getOppFighter(defender_id);
  3089. blockstatus = map.get(clicks, block_loc) - 1;
  3090. if(blockstatus >= 0) {
  3091. nowtime = time.getMillis();
  3092. if(nowtime - map.get(blocktime, defender_id) >= 1000) {
  3093. map.add(blocktime, defender_id, nowtime);
  3094. nachricht = concat("§rDer Gildenblock hat noch §6", text.number(blockstatus), "§r/§6200 §rHaltbarkeit!");
  3095. sendGuildMessage(attacker_id, gildepräfix, nachricht, false);
  3096. //Gildenextra: Schatzwachen
  3097. elo = getGuildElo(defender_id);
  3098. gold = getGuildGold(defender_id);
  3099. if(elo >= 250 && gold >= 1000) {
  3100. sendGuildMessage(defender_id, gildepräfix, nachricht, false);
  3101. }
  3102. map.add(clicks, block_loc, blockstatus);
  3103. text_ent = map.get(g_block_entities, oldpos);
  3104. if(text_ent == null) {
  3105. text_ent = entity.spawn("km:nobody", loc.mod(newpos, 0.5, 1.5, 0.5), "{NoGravity:true}");
  3106. map.add(g_block_entities, block_loc, text_ent);
  3107. }
  3108. entity.setName(text_ent, concat(text.number(blockstatus), "/200 §c❤\n§r[§6", getGuildName(defender_id), "§r]"));
  3109. if(blockstatus == 0) {
  3110. nachricht = concat("§rDer Gildenblock wurde zerstört");
  3111. sendGuildMessage(attacker_id, gildepräfix, nachricht, false);
  3112. sendGuildMessage(defender_id, gildepräfix, nachricht, false);
  3113. nachricht = concat("§rDie Angreifer haben nun 30 Minuten Zeit, Gold zu stehlen und Kisten zu knacken");
  3114. sendGuildMessage(attacker_id, gildepräfix, nachricht, false);
  3115. sendGuildMessage(defender_id, gildepräfix, nachricht, false);
  3116. title = "§4Stehlphase";
  3117. subtitle = concat("§rAuf die Kisten, fertig - stehlt!");
  3118. sendGuildTitle(defender_id, title, subtitle);
  3119. sendGuildTitle(attacker_id, title, subtitle);
  3120. //Status des Gfights ändern
  3121. map.add(gstatus, plot_id, 1);
  3122. list.add(stealends, plot_id);
  3123. sgoto(36000, "stealends"); //30 Minuten
  3124. //Schutzzeit der Verteidiger-Gilde setzen
  3125. minutes = 450;
  3126. attacker_elo = getGuildElo(attacker_id);
  3127. ratio = attacker_elo / elo;
  3128. if(ratio < 0.5) {
  3129. minutes += 120;
  3130. } elseif(ratio < 0.8) {
  3131. minutes += 180;
  3132. } elseif(ratio < 1) {
  3133. minutes += 240;
  3134. } elseif(ratio < 1.2) {
  3135. minutes += 300;
  3136. } elseif(ratio < 1.4) {
  3137. minutes += 420;
  3138. } elseif(ratio < 1.7) {
  3139. minutes += 540;
  3140. } elseif(ratio < 2) {
  3141. minutes += 600;
  3142. } else {
  3143. minutes += 720;
  3144. }
  3145. setGuildSafetime(defender_id, time.getMillis() + minutes * 60000); //ms
  3146. }
  3147. }
  3148. }
  3149. goto("wait");
  3150. }
  3151. if(block_type == "km:artefact") {
  3152. nowtime = time.getMillis();
  3153. if(nowtime - arte_time >= 1000) {
  3154. arte_time = nowtime;
  3155. arte_hp--;
  3156. //Ist das Artefakt in der Ruine?
  3157. arte_ent = entity.get(block_loc, 3, "me.km.entities.EntityNobody");
  3158. if(block_loc == arte_main_loc) {
  3159. if(arte_hp == 0) {
  3160. sendWorldMessage(arte_präfix, concat("§x", player_name, "§r trägt nun das Artefakt"));
  3161. arte_loc_type = "player";
  3162. arte_yet_uuid = player.getUuid(player);
  3163. block.set(block_loc, "minecraft:air");
  3164. if(arte_ent != null) {
  3165. entity.remove(arte_ent);
  3166. }
  3167. entity.remove(arte_ent);
  3168. player.setHunger(player, 2);
  3169. //Herzpartikel
  3170. list.add(carry_arte_list, arte_yet_uuid);
  3171. speakPrefix(player, arte_präfix, "Platziere das Artefakt auf deinem Gildengebiet mit /placearte");
  3172. sgoto(72000, "checkcarryarte"); //60 Minuten
  3173. } else {
  3174. sendRadiusMessage(arte_präfix, concat("§rDas Artefakt hat noch §6", text.number(arte_hp), "§r/§6250 §rHaltbarkeit!"), block_loc, 200);
  3175. if(arte_ent == null) {
  3176. arte_ent = entity.spawn("km:nobody", loc.mod(block_loc, 0.5, 1.5, 0.5), "{NoGravity:true}");
  3177. }
  3178. entity.setName(arte_ent, concat(text.number(arte_hp), "/250 §c❤\n§r[§9Artefakt§r]"));
  3179. }
  3180. } else {
  3181. //Wenn Artefakt in einem Gildengebiet ist
  3182. own_gilden_id = guild.getId(player);
  3183. list = plot.get(entity.getLocation(player));
  3184. if(list.getSize(list) == 0) {
  3185. msg(player, "Melde an marvinius: Artefakt steht auf keinem Grundstück");
  3186. goto("wait");
  3187. }
  3188. plot = list.getIndex(list, 0);
  3189. plot_id = plot.getId(plot);
  3190. plot_gilden_id = getGuildIdFromPlotId(plot_id);
  3191. if(own_gilden_id == plot_gilden_id) {
  3192. if(!isLeader(player)) {
  3193. goto("wait"); //Spieler der eigenen Gilde können den ArteBlock nicht zerstören, außer der Leiter
  3194. }
  3195. }
  3196. if(arte_hp == 0) { //Direkter Reset in Arte-Ruine
  3197. arteresetcore();
  3198. } else {
  3199. sendRadiusMessage(arte_präfix, concat("§rDas Artefakt hat noch §6", text.number(arte_hp), "§r/§610 §rHaltbarkeit!"), block_loc, 200);
  3200. if(arte_ent == null) {
  3201. arte_ent = entity.spawn("km:nobody", loc.mod(block_loc, 0.5, 1.5, 0.5), "{NoGravity:true}");
  3202. }
  3203. entity.setName(arte_ent, concat(text.number(arte_hp), "/10 §c❤\n§r[§9Artefakt§r]"));
  3204. }
  3205. }
  3206. }
  3207. }
  3208. }
  3209. goto("wait");
  3210. @checkcarryarte
  3211. uuid = list.getIndex(carry_arte_list, 0);
  3212. list.removeIndex(carry_arte_list, 0);
  3213. if(arte_loc_type == "player") {
  3214. if(uuid == arte_yet_uuid) {
  3215. //Spieler hat das Artefakt nach einer Stunde noch immer bei sich
  3216. arteresetcore();
  3217. }
  3218. }
  3219. goto("wait");
  3220. @bucket_use
  3221. player_loc = entity.getLocation(player);
  3222. //Eimer können im Gildenblock-/Artefaktbereich nicht verwendet werden
  3223. if(block_loc != null) {
  3224. bucket_loc = block_loc;
  3225. radius = loc.distance(block_loc, player_loc);
  3226. while(block_loc == bucket_loc) {
  3227. bucket_loc = getBlockLocation(player.getTarget(player, radius, false));
  3228. radius -= 0.1;
  3229. }
  3230. if(set.contains(forbiddenblocks2, bucket_loc)) {
  3231. speakPrefix(player, fehlerpräfix, "§rHier kannst du keine Eimer verwenden");
  3232. cancel = true;
  3233. goto("wait");
  3234. }
  3235. }
  3236. //Während eines Gildenkampfes können Eimer am Kampfgrundstück nicht benutzt werden
  3237. plot_id = getPlotId(player_loc);
  3238. if(isAFightPlot(plot_id)) {
  3239. speakPrefix(player, fehlerpräfix, "§rGildenkampf in Gange. Eimer nicht benutzbar");
  3240. cancel = true;
  3241. }
  3242. goto("wait");
  3243. @block_break
  3244. //Quest
  3245. player_uuid = player.getUuid(player);
  3246. if(map.contains(gpvpquests, player_uuid)) {
  3247. array = map.get(gpvpquests, player_uuid);
  3248. quest_type = removeFormat(array[4]);
  3249. if(quest_type == "Sammle") {
  3250. age = block.getState(block_loc, age_property);
  3251. if(age == null || age == 7) {
  3252. type = array[0];
  3253. if(block_type == type) {
  3254. wort = array[1];
  3255. amount = array[2];
  3256. progress = ++array[3];
  3257. speakPrefix(player, quests_präfix, concat(wort, " gesammelt: ", text.number(progress), "/", text.number(amount)));
  3258. if(progress >= amount) {
  3259. speakPrefix(player, quests_präfix, "Quest abgeschlossen");
  3260. }
  3261. }
  3262. }
  3263. }
  3264. }
  3265. //Überprüfung, ob ein Gildenblock/Artefakt abgebaut wird
  3266. if(block_type == "km:guild_block" || block_type == "km:artefact") {
  3267. speakPrefix(player, fehlerpräfix, "Artefakt und Gildenblock lassen sich nicht einfach so abbauen");
  3268. cancel = true;
  3269. goto("wait");
  3270. }
  3271. plot_id = getPlotId(block_loc);
  3272. //Am Spawn wird nicht durch Code reingepfuscht, es gelten die normalen Baugegebenheiten
  3273. if(isGuildSpawnId(plot_id)) {
  3274. goto("wait");
  3275. }
  3276. //Wertvolle Blöcke/Erze können trotz Plot-Protection von fremden Grundstücken abgebaut werden
  3277. if(set.contains(richblocks, block_type)) {
  3278. cancel = false; //Aktiv erlauben
  3279. }
  3280. //XP-Vergabe für das Abbauen von Blöcken
  3281. xp = map.getOrDefault(xpforblocks, block_type, 1);
  3282. addXp(player, xp, false, false);
  3283. //Überprüfung, ob ein Block unter einem der Gildenblöcke/dem Artefakt abgebaut wird
  3284. if(set.contains(forbiddenblocks, block_loc)) {
  3285. speakPrefix(player, fehlerpräfix, "§rBlock unter Artefakt/Gildenblock darf nicht abgebaut werden");
  3286. cancel = true;
  3287. goto("wait");
  3288. }
  3289. //Kistensicherungen
  3290. if(block_type == "minecraft:chest") {
  3291. own_gilden_id = guild.getId(player);
  3292. if(map.contains(chest_guild, block_loc)) {
  3293. cancel = true;
  3294. gilden_id = map.get(chest_guild, block_loc);
  3295. if(gilden_id != own_gilden_id) {
  3296. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Gildenschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  3297. goto("wait");
  3298. }
  3299. if(isLeaderOrOfficer(player)) {
  3300. player.removeItem(player, item);
  3301. speakPrefix(player, chestpräfix, "Entferne die Sicherung zuerst mit einer Schere");
  3302. }
  3303. goto("wait");
  3304. }
  3305. if(map.contains(chest_officer, block_loc)) {
  3306. cancel = true;
  3307. gilden_id = map.get(chest_officer, block_loc);
  3308. if(gilden_id != own_gilden_id) {
  3309. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Offiziersschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  3310. goto("wait");
  3311. }
  3312. if(isLeaderOrOfficer(player)) {
  3313. speakPrefix(player, chestpräfix, "Entferne die Sicherung zuerst mit einer Schere");
  3314. }
  3315. goto("wait");
  3316. }
  3317. if(map.contains(chest_adel, block_loc)) {
  3318. cancel = true;
  3319. gilden_id = map.get(chest_adel, block_loc);
  3320. if(gilden_id != own_gilden_id) {
  3321. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Adelsschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  3322. goto("wait");
  3323. }
  3324. if(isLeaderOrOfficer(player)) {
  3325. speakPrefix(player, chestpräfix, "Entferne die Sicherung zuerst mit einer Schere");
  3326. }
  3327. goto("wait");
  3328. }
  3329. if(map.contains(chest_privat, block_loc)) {
  3330. cancel = true;
  3331. uuid = map.get(chest_privat, block_loc);
  3332. //Gehört dem Spieler die Kiste?
  3333. if(uuid == player.getUuid(player)) {
  3334. speakPrefix(player, chestpräfix, "Entferne die Sicherung zuerst mit einer Schere");
  3335. goto("wait");
  3336. }
  3337. //Ist der Spieler in derselben Gilde?
  3338. if(guild.isSame(player_name, player.getName(uuid))) {
  3339. //Ist der Spieler der Gildenleiter?
  3340. if(isLeader(player)) {
  3341. speakPrefix(player, chestpräfix, "Entferne die Sicherung zuerst mit einer Schere");
  3342. goto("wait");
  3343. }
  3344. }
  3345. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Privatschloss von ", player.getName(uuid), " versehen!"));
  3346. goto("wait");
  3347. }
  3348. }
  3349. //Absicherung, damit angreifende Teamler während eines Kampfes auch am fremden GS nichts abbauen können
  3350. if(plot_id != null) {
  3351. gfights = getScriptVar("gfights");
  3352. if(list.contains(gfights, plot_id)) {
  3353. gilden_id = guild.getId(player);
  3354. if(checkIfAttacker(gilden_id)) {
  3355. speakPrefix(player, fehlerpräfix, "§rGildenkampf im Gange. Blöcke nicht abbaubar");
  3356. cancel = true;
  3357. }
  3358. }
  3359. goto("wait");
  3360. }
  3361. goto("wait");
  3362. @inv_click
  3363. cancel = true;
  3364. if(item.getType(item) == "minecraft:air") {
  3365. goto("wait");
  3366. }
  3367. if(inv_id == bankinvid) { //Bankmenü
  3368. if(inv_slot == 0 || inv_slot == 5) {
  3369. betrag = 1;
  3370. }
  3371. elseif(inv_slot == 1 || inv_slot == 6) {
  3372. betrag = 10;
  3373. }
  3374. elseif(inv_slot == 2 || inv_slot == 7) {
  3375. betrag = 100;
  3376. }
  3377. elseif(inv_slot == 3 || inv_slot == 8) {
  3378. betrag = 1000;
  3379. }
  3380. gold_atm = getGoldAtm(player);
  3381. gold_bank = getGoldBank(player);
  3382. if(!isDouble(gold_atm)) {
  3383. speakPrefix(player, fehlerpräfix, "Transaktion zu schnell");
  3384. goto("wait");
  3385. }
  3386. if(!isDouble(gold_bank)) {
  3387. speakPrefix(player, fehlerpräfix, "Transaktion zu schnell");
  3388. goto("wait");
  3389. }
  3390. if(inv_slot < 4) {
  3391. //einzahlen
  3392. if(betrag > gold_atm) {
  3393. //Abbruch der Transaktion. Keine genaue Abrechnung (Anweisung von Luca)
  3394. speakPrefix(player, fehlerpräfix, "§rSoviel Geld trägst du nicht mit dir");
  3395. goto("wait");
  3396. }
  3397. if(gold_bank + betrag > 2000) {
  3398. betrag2 = 2000 - gold_bank;
  3399. subGoldAtm(player, betrag2);
  3400. setGoldBank(player, gold_bank + betrag2);
  3401. speakPrefix(player, goldpräfix, "§rKonto auf 2000 Gold aufgestockt");
  3402. } else {
  3403. subGoldAtm(player, betrag);
  3404. setGoldBank(player, gold_bank + betrag);
  3405. speakPrefix(player, goldpräfix, "§rTransaktion erfolgreich");
  3406. }
  3407. goto("wait");
  3408. }
  3409. //auszahlen
  3410. if(betrag > gold_bank) {
  3411. speakPrefix(player, fehlerpräfix, "§rZu wenig Gold am Konto");
  3412. goto("wait");
  3413. }
  3414. setGoldBank(player, gold_bank - betrag);
  3415. addGoldAtm(player, betrag);
  3416. speakPrefix(player, goldpräfix, "§rTransaktion erfolgreich");
  3417. goto("wait");
  3418. }
  3419. if(inv_id == dailyrewardinvid) { //Daily Reward
  3420. if(inv_slot + 1 == actualday) {
  3421. if(guild.hasRewardOpened(player, actualday)) {
  3422. speakPrefix(player, "§6Belohnung", "§rTägliche Belohnung bereits abgeholt");
  3423. goto("wait");
  3424. }
  3425. guild.openedReward(player, actualday);
  3426. text = map.get(rewardstext, dailyrewardlist);
  3427. if(text == "Diamanten") {
  3428. speakPrefix(player, "§6Belohnung", concat("§rDu bekommst ", text.number(item.getAmount(dailyreward)), " ", text));
  3429. player.giveItem(player, dailyreward);
  3430. } elseif(text == "Villager-Spawnei") {
  3431. player.giveItem(player, dailyreward);
  3432. speakPrefix(player, "§6Belohnung", concat("§rDu bekommst 1 ", text));
  3433. } elseif(text == "Gold") {
  3434. gold = getGoldAtm(player) + dailyreward;
  3435. setGoldAtm(player, gold);
  3436. displaygold(player, gold);
  3437. speakPrefix(player, "§6Belohnung", concat("§rDu bekommst ", text.number(dailyreward), " ", text));
  3438. } elseif(text == "KlassenXP") {
  3439. addXp(player, dailyreward, true, false);
  3440. speakPrefix(player, "§6Belohnung", concat("§rDu bekommst ", text.number(dailyreward), " ", text));
  3441. }
  3442. inv.setItem(inv, inv_slot, read.item("minecraft:minecart", 1, item.getName(item)));
  3443. inv.update(player);
  3444. }
  3445. goto("wait");
  3446. }
  3447. if(inv_id == pvequestsinvid) {
  3448. if(inv_slot == 0) {
  3449. inv.open(pvemenu1, player, "§rFriedliche Mobs");
  3450. } elseif(inv_slot == 1) {
  3451. inv.open(pvemenu2, player, "§rFeindliche Mobs");
  3452. } elseif(inv_slot == 2) {
  3453. inv.open(pvemenu3, player, "§rBlöcke und Landwirtschaft");
  3454. } elseif(inv_slot == 3) {
  3455. player_uuid = player.getUuid(player);
  3456. if(map.contains(gpvpquests, player_uuid)) {
  3457. map.remove(gpvpquests, player_uuid);
  3458. speakPrefix(player, quests_präfix, "Deine Quest wurde beendet");
  3459. }
  3460. }
  3461. goto("wait");
  3462. }
  3463. if(inv_id == pvemenu1invid) {
  3464. if(inv_slot == 31) {
  3465. inv.open(pvequests, player, "§rPvE Quests");
  3466. goto("wait");
  3467. }
  3468. player_uuid = player.getUuid(player);
  3469. if(map.contains(gpvpquests, player_uuid)) {
  3470. speakPrefix(player, "§dQuests", "§rDu arbeitest gerade an einer Quest");
  3471. goto("wait");
  3472. }
  3473. item_name = item.getName(item);
  3474. split_list = text.split(" ", item_name);
  3475. array = array.new(5);
  3476. array[1] = list.getIndex(split_list, 2);
  3477. array[2] = list.getIndex(split_list, 1);
  3478. array[3] = 0;
  3479. array[4] = list.getIndex(split_list, 0);
  3480. if(item.getType(item) == leather_type) {
  3481. array[0] = "cow";
  3482. } elseif(item.getType(item) == white_wool_type) {
  3483. array[0] = "sheep";
  3484. } elseif(item.getType(item) == porkchop_type) {
  3485. array[0] = "pig";
  3486. } elseif(item.getType(item) == feather_type) {
  3487. array[0] = "chicken";
  3488. } elseif(item.getType(item) == rabbit_foot_type) {
  3489. array[0] = "rabbit";
  3490. } elseif(item.getType(item) == saddle_type) {
  3491. array[0] = "horse";
  3492. } elseif(item.getType(item) == ink_sac_type) {
  3493. array[0] = "squid";
  3494. }
  3495. map.add(gpvpquests, player_uuid, array);
  3496. speakPrefix(player, quests_präfix, item_name);
  3497. goto("wait");
  3498. }
  3499. if(inv_id == pvemenu2invid) {
  3500. if(inv_slot == 22) {
  3501. inv.open(pvequests, player, "§rPvE Quests");
  3502. goto("wait");
  3503. }
  3504. player_uuid = player.getUuid(player);
  3505. if(map.contains(gpvpquests, player_uuid)) {
  3506. speakPrefix(player, "§dQuests", "§rDu arbeitest gerade an einer Quest");
  3507. goto("wait");
  3508. }
  3509. item_name = item.getName(item);
  3510. split_list = text.split(" ", item_name);
  3511. array = array.new(5);
  3512. array[1] = list.getIndex(split_list, 2);
  3513. array[2] = list.getIndex(split_list, 1);
  3514. array[3] = 0;
  3515. array[4] = list.getIndex(split_list, 0);
  3516. if(item.getType(item) == "minecraft:rotten_flesh") {
  3517. array[0] = "zombie";
  3518. } elseif(item.getType(item) == bone_type) {
  3519. array[0] = "skeleton";
  3520. } elseif(item.getType(item) == string_type) {
  3521. array[0] = "spider";
  3522. } elseif(item.getType(item) == infested_cracked_stone_bricks_type) {
  3523. array[0] = "silverfish";
  3524. } elseif(item.getType(item) == gunpowder_type) {
  3525. array[0] = "creeper";
  3526. }
  3527. map.add(gpvpquests, player_uuid, array);
  3528. speakPrefix(player, quests_präfix, item_name);
  3529. goto("wait");
  3530. }
  3531. if(inv_id == pvemenu3invid) {
  3532. if(inv_slot == 18) {
  3533. inv.open(pvequests, player, "§rPvE Quests");
  3534. goto("wait");
  3535. }
  3536. player_uuid = player.getUuid(player);
  3537. if(map.contains(gpvpquests, player_uuid)) {
  3538. speakPrefix(player, "§dQuests", "§rDu arbeitest gerade an einer Quest");
  3539. goto("wait");
  3540. }
  3541. item_name = item.getName(item);
  3542. split_list = text.split(" ", item_name);
  3543. array = array.new(5);
  3544. array[1] = list.getIndex(split_list, 2);
  3545. array[2] = list.getIndex(split_list, 1);
  3546. array[3] = 0;
  3547. array[4] = list.getIndex(split_list, 0);
  3548. if(item.getType(item) == obsidian_type) {
  3549. array[0] = obsidian_type;
  3550. } elseif(item.getType(item) == wheat_type) {
  3551. array[0] = wheat_type;
  3552. } elseif(item.getType(item) == carrot_type) {
  3553. array[0] = carrot_type;
  3554. } elseif(item.getType(item) == potato_type) {
  3555. array[0] = potato_type;
  3556. }
  3557. map.add(gpvpquests, player_uuid, array);
  3558. speakPrefix(player, quests_präfix, item_name);
  3559. goto("wait");
  3560. }
  3561. if(inv_name == "Verzaubern") {
  3562. tool_item = inv.getItem(inv, 0);
  3563. map = enchantment.readFromItem(tool_item);
  3564. if(map.getSize(map) > 0) {
  3565. //Item bereits verzaubert
  3566. goto("wait");
  3567. }
  3568. if(inv_slot == 1) {
  3569. tool_type = null;
  3570. //Waffen
  3571. if(item.hasTag(scepter_tag, tool_item) || item.hasTag(dagger_tag, tool_item) || item.hasTag(battleaxe_tag, tool_item) || item.hasTag(stick_tag, tool_item) || item.hasTag(sword_tag, tool_item) || item.getType(tool_item) == "minecraft:bow") {
  3572. tool_type = "weapon";
  3573. }
  3574. //Werkzeuge
  3575. if(item.hasTag(axe_tag, tool_item) || item.hasTag(pickaxe_tag, tool_item) || item.hasTag(hoe_tag, tool_item) || item.hasTag(shovel_tag, tool_item)) {
  3576. tool_type = "tool";
  3577. }
  3578. //Rüstung
  3579. if(item.hasTag(helmet_tag, tool_item) || item.hasTag(chestplate_tag, tool_item) || item.hasTag(leggings_tag, tool_item) || item.hasTag(boots_tag, tool_item)) {
  3580. tool_type = "armor";
  3581. }
  3582. //Zufällige Verzauberungen auswählen und auf Exp-Flaschen im Inventory anzeigen
  3583. lvl = player.getLevel(player);
  3584. if(lvl >= 1) {
  3585. map = map.get(map.get(enchantings, 1), tool_type);
  3586. if(map == null) {
  3587. goto("wait");
  3588. }
  3589. map_size = map.getSize(map);
  3590. index1 = math.random(0, map_size - 1);
  3591. index2 = math.random(0, map_size - 1);
  3592. iter = map.iterator(map);
  3593. counter = 0;
  3594. map_new = map.new();
  3595. while(hasNext(iter)) {
  3596. element = next(iter);
  3597. if(counter == index1 || counter == index2) {
  3598. key = map.getKey(element);
  3599. value = map.getValue(element);
  3600. value_new = math.random(1, value);
  3601. map.add(map_new, key, value_new);
  3602. }
  3603. counter++;
  3604. }
  3605. item = read.item("minecraft:experience_bottle", 1, concat("§rLvl. 1"));
  3606. enchantment.writeToItem(map_new, item);
  3607. inv.setItem(inv, 2, item);
  3608. }
  3609. if(lvl >= 15) {
  3610. map = map.get(map.get(enchantings, 2), tool_type);
  3611. if(map == null) {
  3612. goto("wait");
  3613. }
  3614. map_size = map.getSize(map);
  3615. index1 = math.random(0, map_size - 1);
  3616. index2 = math.random(0, map_size - 1);
  3617. iter = map.iterator(map);
  3618. counter = 0;
  3619. map_new = map.new();
  3620. while(hasNext(iter)) {
  3621. element = next(iter);
  3622. if(counter == index1 || counter == index2) {
  3623. key = map.getKey(element);
  3624. value = map.getValue(element);
  3625. value_new = math.random(1, value);
  3626. map.add(map_new, key, value_new);
  3627. }
  3628. counter++;
  3629. }
  3630. item = read.item("minecraft:experience_bottle", 15, concat("§rLvl. 15"));
  3631. enchantment.writeToItem(map_new, item);
  3632. inv.setItem(inv, 4, item);
  3633. }
  3634. if(lvl >= 30) {
  3635. map = map.get(map.get(enchantings, 3), tool_type);
  3636. if(map == null) {
  3637. goto("wait");
  3638. }
  3639. map_size = map.getSize(map);
  3640. index1 = math.random(0, map_size - 1);
  3641. index2 = math.random(0, map_size - 1);
  3642. iter = map.iterator(map);
  3643. counter = 0;
  3644. map_new = map.new();
  3645. while(hasNext(iter)) {
  3646. element = next(iter);
  3647. if(counter == index1 || counter == index2) {
  3648. key = map.getKey(element);
  3649. value = map.getValue(element);
  3650. value_new = math.random(1, value);
  3651. map.add(map_new, key, value_new);
  3652. }
  3653. counter++;
  3654. }
  3655. item = read.item("minecraft:experience_bottle", 30, concat("§rLvl. 30"));
  3656. enchantment.writeToItem(map_new, item);
  3657. inv.setItem(inv, 3, item);
  3658. }
  3659. inv.update(player);
  3660. goto("wait");
  3661. }
  3662. if(inv_slot > 1) {
  3663. ench_lvl = inv_slot - 1;
  3664. //Item verzaubern
  3665. //...
  3666. //
  3667. //...
  3668. }
  3669. goto("wait");
  3670. }
  3671. if(inv_name == skill_cast_inv_name) {
  3672. player_id = player.getId(player);
  3673. //Skill einem Hotkey zuweisen
  3674. if(inv_slot >= 0 && inv_slot <= 8) {
  3675. skill_name = map.get(tempskilltosave, player_id);
  3676. if(skill_name != null) {
  3677. belagerungsskills_set = getScriptVar("belagerungsskills_set");
  3678. if(set.contains(belagerungsskills_set, skill_name)) {
  3679. if(inv_slot != 8) {
  3680. //Belagerungsskill nur auf letztem Hotkey zuweisbar
  3681. goto("wait");
  3682. }
  3683. } else {
  3684. if(inv_slot == 8) {
  3685. //Auf dem letztem Hotkey sind nur Belagerungsskill zuweisbar
  3686. goto("wait");
  3687. }
  3688. }
  3689. class = guild.getClass(player);
  3690. hotkey.set(player, class, inv_slot, skill_name);
  3691. temp_inv = map.get(bindingmenus, player_id);
  3692. temp_item = skill.getItem(skill_name);
  3693. description = skill.getDescription(skill_name);
  3694. item.setName(temp_item, concat("§r", skill_name));
  3695. list.new(lore_list);
  3696. list.add(lore_list, concat("§r§5", description));
  3697. item.setLore(temp_item, lore_list);
  3698. inv.setItem(temp_inv, 9 + inv_slot, temp_item);
  3699. map.remove(tempskilltosave, player_id);
  3700. inv.update(player);
  3701. }
  3702. goto("wait");
  3703. }
  3704. //Skillbinding entfernen
  3705. if(inv_slot >= 9 && inv_slot <= 17) {
  3706. class = guild.getClass(player);
  3707. hotkey.del(player, class, inv_slot - 9);
  3708. temp_inv = map.get(bindingmenus, player_id);
  3709. inv.setItem(temp_inv, inv_slot, air_item);
  3710. inv.update(player);
  3711. goto("wait");
  3712. }
  3713. //Skill auswählen
  3714. if(inv_slot >= 18 && inv_slot <= 41) {
  3715. if(item.getType(item) != "minecraft:air") {
  3716. item_name = item.getName(item);
  3717. skill_name = removeFormat(item_name);
  3718. map.add(tempskilltosave, player_id, skill_name);
  3719. }
  3720. goto("wait");
  3721. }
  3722. }
  3723. goto("wait");
  3724. @entity_click
  3725. if(hand == "OFF_HAND") {
  3726. goto("wait");
  3727. }
  3728. entity_name = entity.getName(entity);
  3729. first_new_line = text.indexOf(entity_name, "\n", 0);
  3730. entity_name = removeFormat(text.subString(entity_name, first_new_line + 1, text.length(entity_name)));
  3731. if(entity_name == "Tutorial") {
  3732. msg(player, "§rHallo, ich werde vllt ein Tutorial sein");
  3733. goto("wait");
  3734. }
  3735. if(entity_name == "PvE") {
  3736. inv.open(pvequests, player, "§rPvE Quests");
  3737. goto("wait");
  3738. }
  3739. class = entity_name;
  3740. classes = getScriptVar("gpvp_classes");
  3741. if(list.contains(classes, class)) {
  3742. msg(player, concat("§rKlasse ", entity_name, " §rwählen? "), text.click("§r[§aJa§r]", concat("/gilde class ", class)));
  3743. goto("wait");
  3744. }
  3745. if(entity_name == bankvillagername) {
  3746. inv.open(bankmenu, player, "§rBank");
  3747. goto("wait");
  3748. }
  3749. if(entity_name == gildenvillagername) {
  3750. if(isPlayerInGuild(player)) {
  3751. speakPrefix(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  3752. goto("wait");
  3753. }
  3754. plot_id = getPlotId(player_loc);
  3755. if(!isGuildSpawnId(plot_id)) {
  3756. speakPrefix(player, fehlerpräfix, "§rDu bist nicht am Gildenpvp-Spawn");
  3757. goto("wait");
  3758. }
  3759. if(getGoldAtm(player) < buypricegblock) {
  3760. speakPrefix(player, fehlerpräfix, "§rDu besitzt nicht genug Gold");
  3761. } else {
  3762. speakPrefix(player, gildepräfix, "§rGib den gewünschten Gildennamen folgendermaßen ein:");
  3763. msg(player, "/gilde create <name> <tag>");
  3764. msg(player, " - nur 1 Wort");
  3765. msg(player, " - nur Buchstaben");
  3766. msg(player, " - Name: max 20 Zeichen");
  3767. msg(player, " - Tag: max 3 Zeichen");
  3768. }
  3769. }
  3770. goto("wait");
  3771. @player_login
  3772. if(!registerGpvpPlayer(player)) {
  3773. joinGpvpWorld(player);
  3774. }
  3775. goto("wait");
  3776. @player_logout
  3777. player_uuid = player.getUuid(player);
  3778. map.remove(gpvpquests, player_uuid);
  3779. //Falls der Spieler Artefakt-Träger ist, Artefakt resetten
  3780. if(arte_loc_type == "player") {
  3781. if(arte_yet_uuid == player_uuid) {
  3782. arteresetcore();
  3783. }
  3784. }
  3785. goto("wait");
  3786. @player_post_respawn
  3787. class = guild.getClass(player);
  3788. if(class != "none") {
  3789. level = guild.getLevel(player);
  3790. mana = 0;
  3791. gilden_id = guild.getId(player);
  3792. if(isGuild(gilden_id)) {
  3793. elo = getGuildElo(gilden_id);
  3794. gold = getGuildGold(gilden_id);
  3795. //Gildenextra: Kampfgeist
  3796. if(elo >= 2000 && gold >= 12500) {
  3797. mana = getManaMax(player);
  3798. }
  3799. }
  3800. setManaAtm(player, mana);
  3801. displaymana(player);
  3802. }
  3803. gold = getGoldAtm(player);
  3804. setGoldAtm(player, 0);
  3805. displaygold(player, 0);
  3806. displayHealth(player);
  3807. goto("wait");
  3808. @player_pre_respawn
  3809. player.setSpawn(player, gildenspawnloc);
  3810. goto("wait");
  3811. @entity_join
  3812. //(Text-)Entities nachträglich entfernen, weil der Chunk eventuell nicht geladen war
  3813. entity_loc = entity.getLocation(entity);
  3814. if(list.contains(text_ent_to_remove, entity_loc)) {
  3815. cancel = true;
  3816. list.remove(text_ent_to_remove, entity_loc);
  3817. }
  3818. goto("wait");
  3819. @item_use_finish
  3820. if(isPlayer(living_entity)) {
  3821. player = living_entity;
  3822. if(arte_loc_type == "player") {
  3823. player_uuid = player.getUuid(player);
  3824. if(arte_yet_uuid == player_uuid) {
  3825. list.add(hunger1_list, player_uuid);
  3826. sgoto(1, "setHunger1");
  3827. }
  3828. }
  3829. }
  3830. goto("wait");
  3831. @setHunger1
  3832. p_uuid = list.getIndex(list, 0);
  3833. list.removeIndex(list, 0);
  3834. p = player.get(p_uuid);
  3835. player.setHunger(p, 2);
  3836. goto("wait");
  3837. @living_drop
  3838. if(entity.getType(living_entity) == "enderman") {
  3839. list.clear(drops);
  3840. }
  3841. goto("wait");
  3842. @item_air_click
  3843. if(hand == "MAIN_HAND") {
  3844. item = entity.getEquip(player, "hand");
  3845. } else {
  3846. item = entity.getEquip(player, "offhand");
  3847. }
  3848. if(item.getType(item) == "km:scroll") {
  3849. if(!isPlayerInGuild(player)) {
  3850. speakPrefix(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  3851. goto("wait");
  3852. }
  3853. gilden_id = guild.getId(player);
  3854. addGuildElo(gilden_id, 100);
  3855. player.removeItem(player, scroll);
  3856. speakPrefix(player, gildepräfix, "+100 Gildeneinfluss");
  3857. goto("wait");
  3858. }
  3859. if(item.getType(item) == "minecraft:ender_pearl") {
  3860. cancel = true;
  3861. class = guild.getClass(player);
  3862. if(class != "none") {
  3863. guild.setLevel(player, 1);
  3864. guild.setXp(player, 0);
  3865. displaylevel(player, 1);
  3866. displayxp(player, level, 0);
  3867. }
  3868. entity.damage(player, 100);
  3869. nachricht = concat(player_name, " starb beim Experimentieren. Enderperlen sind tödlich!");
  3870. mail.send("marvinius", "eropster", nachricht);
  3871. goto("wait");
  3872. }
  3873. goto("wait");
  3874. @player_pickup
  3875. item_type = item.getType(item);
  3876. if(list.contains(forbidden_items, item_type)) {
  3877. cancel = true;
  3878. entity.remove(entity);
  3879. item_type = text.replace(item_type, "minecraft:", "");
  3880. nachricht = concat(player_name, " war ein böser Bube und hat ", item_type, " aufgesammelt.");
  3881. mail.send("marvinius", "eropster", nachricht);
  3882. goto("wait");
  3883. }
  3884. if(removeFormat(item.getName(item)) == "Golddrop") {
  3885. cancel = true;
  3886. entity.remove(entity);
  3887. if(item_type == "minecraft:gold_ingot" || item_type == "minecraft:gold_nugget") {
  3888. lore_list = item.getLore(item);
  3889. if(list.getSize(lore_list) != 0) {
  3890. gold = read.number(list.getIndex(lore_list, 0));
  3891. gilden_id = guild.getId(player);
  3892. if(getGuildType(gilden_id) != null) {
  3893. if(getShareGold(gilden_id) == 1) {
  3894. addSharedGold(gilden_id, gold);
  3895. } else {
  3896. addGoldAtm(player, gold);
  3897. if(gold > 0) {
  3898. speakPrefix(player, goldpräfix, concat("§rDu hast §6", text.number(gold), " §rGold erhalten"));
  3899. }
  3900. }
  3901. } else {
  3902. addGoldAtm(player, gold);
  3903. if(gold > 0) {
  3904. speakPrefix(player, goldpräfix, concat("§rDu hast §6", text.number(gold), " §rGold erhalten"));
  3905. }
  3906. }
  3907. }
  3908. }
  3909. }
  3910. goto("wait");
  3911. @living_death
  3912. killer = getPlayerFromDamageSource(damage_source);
  3913. if(isPlayer(killer)) {
  3914. entity_type = entity.getType(living_entity);
  3915. //XP und Golddrop
  3916. prexp = map.get(xpforentities, entity_type);
  3917. if(prexp != null) {
  3918. xp = math.random(prexp * 7, prexp * 13);
  3919. xp = math.round(xp / 10);
  3920. gold = math.random(1, 14);
  3921. gold /= 10;
  3922. gilden_id = guild.getId(killer);
  3923. if(getGuildType(gilden_id) != null) {
  3924. if(getShareXp(gilden_id) == 1) {
  3925. addSharedXp(gilden_id, xp);
  3926. } else {
  3927. addXp(killer, xp, true, false);
  3928. }
  3929. } else {
  3930. addXp(killer, xp, true, false);
  3931. }
  3932. entity_loc = entity.getLocation(living_entity);
  3933. gold_item1 = read.item("minecraft:gold_nugget");
  3934. gold_item2 = read.item("minecraft:gold_nugget");
  3935. item.setName(gold_item1, "§rGolddrop");
  3936. item.setName(gold_item2, "§rGolddrop");
  3937. list.new(lore_list);
  3938. list.add(lore_list, gold);
  3939. item.setLore(gold_item1, lore_list);
  3940. item.drop(entity_loc, gold_item1);
  3941. item.drop(entity_loc, gold_item2);
  3942. }
  3943. //Belagerungsturm
  3944. if(entity_type == "zombie") {
  3945. if(math.random(0, 9) == 0) {
  3946. entity_loc = entity.getLocation(living_entity);
  3947. item.drop(entity_loc, belagerungsitem);
  3948. }
  3949. }
  3950. //Quest
  3951. player_uuid = player.getUuid(killer);
  3952. if(map.contains(gpvpquests, player_uuid)) {
  3953. array = map.get(gpvpquests, player_uuid);
  3954. quest_type = removeFormat(array[4]);
  3955. if(quest_type == "Töte") {
  3956. type = array[0];
  3957. if(entity.getType(living_entity) == type) {
  3958. wort = array[1];
  3959. amount = array[2];
  3960. progress = ++array[3];
  3961. speakPrefix(killer, quests_präfix, concat(wort, " getötet: ", text.number(progress), "/", text.number(amount)));
  3962. if(progress >= amount) {
  3963. speakPrefix(killer, quests_präfix, "Quest abgeschlossen");
  3964. }
  3965. }
  3966. }
  3967. }
  3968. }
  3969. if(isPlayer(living_entity)) {
  3970. loc = entity.getLocation(living_entity);
  3971. uuid = player.getUuid(living_entity);
  3972. player.dropInventory(living_entity, loc);
  3973. //Falls der Spieler Artefakt-Träger ist, Artefakt resetten
  3974. if(arte_loc_type == "player") {
  3975. if(arte_yet_uuid == uuid) {
  3976. arteresetcore();
  3977. }
  3978. }
  3979. //Gold und Items droppen
  3980. gold = getGoldAtm(living_entity);
  3981. if(gold > 0) {
  3982. gold_item1 = read.item("minecraft:gold_ingot");
  3983. gold_item2 = read.item("minecraft:gold_nugget");
  3984. item.setName(gold_item1, "§rGolddrop");
  3985. item.setName(gold_item2, "§rGolddrop");
  3986. item.setAmount(gold_item1, 3);
  3987. list.new(lore_list);
  3988. list.add(lore_list, gold);
  3989. item.setLore(gold_item1, lore_list);
  3990. item.drop(loc, gold_item1);
  3991. item.drop(loc, gold_item2);
  3992. }
  3993. if(killer != null) {
  3994. killer_id = player.getId(killer);
  3995. class = guild.getClass(killer_id);
  3996. if(class != "none") {
  3997. addXp(killer, 400, true, false);
  3998. }
  3999. }
  4000. //Wenn der Spieler in der Arte-Ruine gestorben ist, darf er dort 5 Minuten lang nicht mehr hinein
  4001. if(loc.distance(loc, arte_main_loc) <= arte_ruin_radius) {
  4002. list.add(arte_ruin_forbidden_players, uuid);
  4003. sgoto(6000, "removeArteRuinForbiddenPlayer"); //5 Minuten
  4004. }
  4005. }
  4006. goto("wait");
  4007. @removeArteRuinForbiddenPlayer
  4008. list.removeIndex(arte_ruin_forbidden_players, 0);
  4009. goto("wait");
  4010. @block_place
  4011. plot_id = getPlotId(block_loc);
  4012. //Wertvolle Blöcke/Erze dürfen nicht gesetzt werden
  4013. //testphase
  4014. /*if(set.contains(richblocks, block_type)) {
  4015. cancel = true;
  4016. speakPrefix(player, fehlerpräfix, "§rWertvolle Blöcke/Erze dürfen nicht gesetzt werden");
  4017. goto("wait");
  4018. }*/
  4019. if(block_type == "km:artefact") {
  4020. //Illegales Artefakt im Umlauf. Bewusst zulassen und eropster informieren
  4021. nachricht = concat(player_name, " hat ein illegales Artefakt platziert: ", block_loc);
  4022. mail.send("marvinius", "eropster", nachricht);
  4023. goto("wait");
  4024. }
  4025. //Platzieren von Blöcken am Kampfgrundstück
  4026. if(plot_id != null) {
  4027. if(isAFightPlot(plot_id)) {
  4028. if(block_type == obsidian_type) {
  4029. item = entity.getEquip(player, "hand");
  4030. if(item.getType(item) != block_type) {
  4031. item = entity.getEquip(player, "off_hand");
  4032. }
  4033. lore_list = item.getLore(item);
  4034. if(list.getSize(lore_list) == 1 && list.getIndex(lore_list == "Belagerungsturm")) {
  4035. setTurmGround();
  4036. goto("wait");
  4037. }
  4038. }
  4039. speakPrefix(player, fehlerpräfix, "§rGildenkampf im Gange. Blöcke nicht platzierbar");
  4040. cancel = true;
  4041. goto("wait");
  4042. }
  4043. }
  4044. //Platzieren von Blöcken im Bereich 11x11x7 um den Gildenblock/das Artefakt
  4045. if(set.contains(forbiddenblocks2, block_loc)) {
  4046. speakPrefix(player, fehlerpräfix, "§rHier kannst du nicht bauen");
  4047. cancel = true;
  4048. goto("wait");
  4049. }
  4050. if(block_type == "km:guild_block") {
  4051. if(isPlayerInGuild(player)) {
  4052. speakPrefix(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  4053. cancel = true;
  4054. goto("wait");
  4055. }
  4056. if(isPlayerInGroup(player)) {
  4057. speakPrefix(player, fehlerpräfix, "§rDu bist in einer Gruppe");
  4058. cancel = true;
  4059. goto("wait");
  4060. }
  4061. item = entity.getEquip(player, "hand");
  4062. if(item.getType(item) != block_type) {
  4063. item = entity.getEquip(player, "off_hand");
  4064. }
  4065. lore_list = item.getLore(item);
  4066. if(list.getSize(lore_list) != 3) {
  4067. cancel = true;
  4068. speakPrefix(player, fehlerpräfix, "§rDieser Gildenblock wurde nicht vom Gildenvillager ausgehändigt");
  4069. goto("wait");
  4070. }
  4071. gilden_name = list.getIndex(lore_list, 0);
  4072. gilden_tag = list.getIndex(lore_list, 1);
  4073. gilden_id = read.number(list.getIndex(lore_list, 2));
  4074. if(isExistingGuildName(gilden_name)) {
  4075. speakPrefix(player, fehlerpräfix, "§rDieser Gildenname existiert bereits, verwende /g rename");
  4076. goto("wait");
  4077. }
  4078. if(isAPlot(block_loc)) {
  4079. speakPrefix(player, fehlerpräfix, "§rAuf dieser Position befindet sich bereits ein Grundstück");
  4080. cancel = true;
  4081. goto("wait");
  4082. }
  4083. bloc = loc.mod(block_loc, 0, -1, 0);
  4084. if(!block.isSolid(bloc)) {
  4085. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Gildenblock muss ein solider Block sein");
  4086. cancel = true;
  4087. goto("wait");
  4088. }
  4089. btype = block.getType(bloc);
  4090. if(block.hasTag(leaves_tag, block.get(bloc))) {
  4091. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein Laub sein");
  4092. cancel = true;
  4093. goto("wait");
  4094. }
  4095. if(set.contains(richblocks, btype)) {
  4096. speakPrefix(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein wertvoller Block sein");
  4097. cancel = true;
  4098. goto("wait");
  4099. }
  4100. y = loc.getY(block_loc);
  4101. if(y < 35 || y > 150) {
  4102. speakPrefix(player, fehlerpräfix, "§rDer Gildenblock muss zwischen 35 bis 150 Blöcke Höhe platziert werden");
  4103. cancel = true;
  4104. goto("wait");
  4105. }
  4106. block_list = getAllGuildBlocks();
  4107. for(i = 0; i < list.getSize(block_list); i++) {
  4108. distance = loc.distance(list.getIndex(block_list, i), block_loc);
  4109. if(distance < 1100) {
  4110. speakPrefix(player, fehlerpräfix, concat("§rGildenblöcke müssen mindestens 1100 Blöcke voneinander entfernt sein (Aktuell: ", text.number(math.roundUp(distance)), ")"));
  4111. cancel = true;
  4112. goto("wait");
  4113. }
  4114. }
  4115. if(!checkGuildBlockArea(block_loc)) {
  4116. speakPrefix(player, fehlerpräfix, "§rIm Bereich von 5 Blöcken seitlich und 7 Blöcken nach oben dürfen sich keine anderen Blöcke befinden");
  4117. cancel = true;
  4118. goto("wait");
  4119. }
  4120. x = loc.getX(block_loc);
  4121. x1 = x - 150;
  4122. x2 = x + 150;
  4123. z = loc.getZ(block_loc);
  4124. z1 = z - 150;
  4125. z2 = z + 150;
  4126. gs_edge1 = loc.new(gpvpworld, x1, 0, z1);
  4127. gs_edge2 = loc.new(gpvpworld, x2, 255, z2);
  4128. //Überschneidungen suchen
  4129. if(doesPlotIntersect(gs_edge1, gs_edge2)) {
  4130. speakPrefix(player, fehlerpräfix, "§rIm Gebiet herrscht bereits eine andere Gilde");
  4131. cancel = true;
  4132. goto("wait");
  4133. }
  4134. //Move-Gebiet erstellen
  4135. createMoveArea(gilden_id, block_loc);
  4136. //Plot erstellen
  4137. player.removeItem(player, item);
  4138. plot = addPlot(gs_edge1, gs_edge2);
  4139. setPlotName(plot, gilden_name);
  4140. addPlotPlayer(plot, player_name);
  4141. plot_id = plot.getId(plot);
  4142. //Gilde erstellen
  4143. g_type = 1;
  4144. gold_delay = 0;
  4145. gold = 0;
  4146. block_world = loc.getCoord(block_loc, "w");
  4147. block_x = loc.getCoord(block_loc, "bx");
  4148. block_y = loc.getCoord(block_loc, "by");
  4149. block_z = loc.getCoord(block_loc, "bz");
  4150. safetime = time.getMillis() + 259200000;
  4151. share_xp = 1;
  4152. share_gold = 1;
  4153. elo = 100;
  4154. addNewGuild(gilden_id, g_type, gold_delay, gold, gilden_name, block_world, block_x, block_y, block_z, safetime, plot_id, share_xp, share_gold, elo, gilden_tag);
  4155. //Leiter festlegen
  4156. setLeader(player);
  4157. guild.setId(player, gilden_id);
  4158. class = guild.getClass(player);
  4159. if(class != "none") {
  4160. level = guild.getLevel(player);
  4161. }
  4162. setHeadName(player);
  4163. setGuildBlock(gilden_id, block_loc);
  4164. setGuildBlockArea(block_loc);
  4165. text_ent = entity.spawn("km:nobody", loc.mod(block_loc, 0.5, 1.5, 0.5), "{NoGravity:true}");
  4166. entity.setName(text_ent, concat("200/200 §c❤\n§r[§6", gilden_name, "§r]"));
  4167. map.add(g_block_entities, block_loc, text_ent);
  4168. sendWorldMessage(gildepräfix, concat("§rDie Gilde §6", gilden_name, "§r wurde von §6", player_name, "§r gegründet"));
  4169. goto("wait");
  4170. }
  4171. //Hopper unter gesichertern Kisten sind verboten
  4172. if(block_type == "minecraft:hopper") {
  4173. b_loc = loc.mod(block_loc, 0, 1, 0);
  4174. b_type = block.getType(b_loc);
  4175. if(b_type == "minecraft:chest") {
  4176. if(isALockedChest(b_loc)) {
  4177. cancel = true;
  4178. speakPrefix(player, chestpräfix, "Trichter unter gesicherter Kiste nicht platzierbar");
  4179. goto("wait");
  4180. }
  4181. }
  4182. }
  4183. //Kistensicherungen
  4184. if(block_type == "minecraft:chest") {
  4185. chestloc2 = block_loc;
  4186. chestloc1 = block.getSecChest(chestloc2);
  4187. if(chestloc1 != null) {
  4188. own_gilden_id = guild.getId(player);
  4189. if(map.contains(chest_guild, chestloc1)) {
  4190. gilden_id = map.get(chest_guild, chestloc1);
  4191. if(gilden_id != own_gilden_id) {
  4192. cancel = true;
  4193. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Gildenschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  4194. goto("wait");
  4195. }
  4196. if(isLeaderOrOfficer(player)) {
  4197. player.removeItem(player, item);
  4198. lockGuildChest(chestloc2, own_gilden_id);
  4199. speakPrefix(player, chestpräfix, "§rSicherung erweitert");
  4200. }
  4201. goto("wait");
  4202. }
  4203. if(map.contains(chest_officer, chestloc1)) {
  4204. gilden_id = map.get(chest_officer, chestloc1);
  4205. if(gilden_id != own_gilden_id) {
  4206. cancel = true;
  4207. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Offiziersschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  4208. goto("wait");
  4209. }
  4210. if(isLeaderOrOfficer(player)) {
  4211. lockOfficerChest(chestloc2, own_gilden_id);
  4212. speakPrefix(player, chestpräfix, "§rSicherung erweitert");
  4213. }
  4214. goto("wait");
  4215. }
  4216. if(map.contains(chest_adel, chestloc1)) {
  4217. gilden_id = map.get(chest_adel, chestloc1);
  4218. if(gilden_id != own_gilden_id) {
  4219. cancel = true;
  4220. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Adelsschloss der Gilde ", getGuildName(gilden_id), " versehen!"));
  4221. goto("wait");
  4222. }
  4223. if(isLeaderOrOfficer(player)) {
  4224. lockAdelChest(chestloc2, own_gilden_id);
  4225. speakPrefix(player, chestpräfix, "§rSicherung erweitert");
  4226. }
  4227. goto("wait");
  4228. }
  4229. if(map.contains(chest_privat, chestloc1)) {
  4230. uuid = map.get(chest_privat, chestloc1);
  4231. //Gehört dem Spieler die Kiste?
  4232. if(uuid == player.getUuid(player)) {
  4233. lockPrivatChest(chestloc2, player.getUuid(player));
  4234. speakPrefix(player, chestpräfix, "§rSicherung erweitert");
  4235. goto("wait");
  4236. }
  4237. //Ist der Spieler in derselben Gilde?
  4238. if(guild.isSame(player_name, player.getName(uuid))) {
  4239. //Ist der Spieler der Gildenleiter?
  4240. if(isLeader(player)) {
  4241. lockPrivatChest(chestloc2, player.getUuid(player));
  4242. speakPrefix(player, chestpräfix, "§rSicherung erweitert");
  4243. goto("wait");
  4244. }
  4245. }
  4246. cancel = true;
  4247. speakPrefix(player, chestpräfix, concat("Die Kiste ist mit einem Privatschloss von ", player.getName(uuid), " versehen!"));
  4248. goto("wait");
  4249. }
  4250. }
  4251. }
  4252. if(checkForEnimies(player)) {
  4253. cancelCauseEnimy();
  4254. goto("wait");
  4255. }
  4256. goto("wait");
  4257. @removeGroupInvitation
  4258. list.removeIndex(groupinvitations, 0);
  4259. goto("wait");
  4260. @removeGuildInvitation
  4261. list.removeIndex(invitations, 0);
  4262. goto("wait");
  4263. @checkifwildnis
  4264. p_name = list.getIndex(movelist, 0);
  4265. list.removeIndex(movelist, 0);
  4266. if(!isOnline(p_name)) {
  4267. goto("wait");
  4268. }
  4269. p = read.player(p_name);
  4270. player_loc = entity.getLocation(p);
  4271. gpvpworld = world.get(gpvpworld_name);
  4272. if(loc.getWorld(player_loc) == gpvpworld) {
  4273. plot_id = getPlotId(player_loc);
  4274. if(plot_id == null) {
  4275. display.add(p, 39, "§6Wildnis");
  4276. }
  4277. }
  4278. goto("wait");
  4279. @witherloop
  4280. gpvpworld = world.get(gpvpworld_name);
  4281. world_list = players.toWorldList(gpvpworld);
  4282. for(i = 0; i < list.getSize(world_list); i++) {
  4283. p = list.getIndex(world_list, i);
  4284. p_id = player.getId(p);
  4285. p_name = player.getName(p);
  4286. gilden_id = guild.getId(p);
  4287. list = plot.get(entity.getLocation(p));
  4288. if(list.getSize(list) > 0) { //Wenn der Spieler auf einem Grundstück ist...
  4289. plot = list.getIndex(list, 0);
  4290. plot_id = plot.getId(plot);
  4291. if(isAGuildPlot(plot_id)) { //...und dieses GS ein Gildengrundstück ist...
  4292. own_plot_id = getGuildPlotId(gilden_id);
  4293. if(map.contains(fightplayers, plot_id)) { //...und auf dem Grundstück gekämpft wird...
  4294. fightset = map.get(fightplayers, plot_id);
  4295. if(!set.contains(fightset, p_id)) { //...und der Spieler nicht Teil des Kampfes ist...
  4296. //...dann hat er dort nichts verloren und wird zum Spawn teleportiert.
  4297. teleportPlayer(p, gildenspawnloc, false);
  4298. speakPrefix(p, gildepräfix, "§rAuf diesem Grundstück wird gerade gekämpft und du bist kein Kampfteilnehmer");
  4299. }
  4300. } elseif(own_plot_id == null || plot_id != own_plot_id) { //Wenn auf diesem GS nicht gekämpft wird und es nicht das eigene ist, bekommt man eine Warnung und irgendwann den Withereffekt
  4301. title.clear(p);
  4302. title.reset(p);
  4303. title.setSub(p, "§rFremdes Grundstück");
  4304. title.send(p, "§cAchtung");
  4305. if(!list.contains(warned, p_id)) { //Überprüfung, ob Spieler bereits auf Warnliste
  4306. list.add(warned, p_id);
  4307. sgoto(600, "checkifaway");
  4308. }
  4309. }
  4310. }
  4311. }
  4312. }
  4313. sgoto(200, "witherloop");
  4314. goto("wait");
  4315. @checkifaway
  4316. p_id = list.getIndex(warned, 0);
  4317. list.removeIndex(warned, 0);
  4318. p_name = player.getNameFromId(p_id);
  4319. p = read.player(p_name);
  4320. if(p == null) {
  4321. goto("wait");
  4322. }
  4323. //Überprüfung, ob sich Spieler noch immer auf fremdem GS befindet
  4324. list = plot.get(entity.getLocation(p));
  4325. if(list.getSize(list) > 0) { //Wenn der Spieler auf einem Grundstück ist...
  4326. plot_id = plot.getId(list.getIndex(list, 0));
  4327. if(isAGuildPlot(plot_id)) { //...und dieses GS ein Gildengrundstück ist.
  4328. if(map.contains(fightplayers, plot_id)) { //Wenn auf dem Grundstück gekämpft wird...
  4329. fightset = map.get(fightplayers, plot_id);
  4330. if(set.contains(fightset, p_id)) { //...und der Spieler Teil des Kampfes ist.
  4331. goto("wait");
  4332. }
  4333. } else {
  4334. own_gilden_id = guild.getId(p);
  4335. own_plot_id = getGuildPlotId(own_gilden_id);
  4336. if(plot_id != own_plot_id) { //Wenn das GS nicht das eigene ist, bekommt man den Withereffekt.
  4337. entity.addEffect(p, "wither", 200, 5);
  4338. }
  4339. }
  4340. }
  4341. }
  4342. goto("wait");
  4343. function arteresetcore() {
  4344. if($arte_loc_type == "placed") {
  4345. arte_ent = entity.get($arte_yet_loc, 3, "me.km.entities.EntityNobody");
  4346. if(arte_ent == null) {
  4347. list.add($text_ent_to_remove, loc.mod($arte_yet_loc, 0.5, 1.5, 0.5));
  4348. } else {
  4349. entity.remove(arte_ent);
  4350. }
  4351. block.set($arte_yet_loc, "minecraft:air");
  4352. removeArteBlockArea($arte_yet_loc);
  4353. }
  4354. block.set($arte_main_loc, "km:artefact");
  4355. sendWorldMessage($arte_präfix, "Das Artefakt ist in die Ruine zurückgekehrt");
  4356. sgv("SERVER", "arte_yet_loc", text.location($arte_main_loc));
  4357. $arte_yet_loc = $arte_main_loc;
  4358. $arte_loc_type = "placed";
  4359. $arte_hp = 250;
  4360. arte_ent = entity.spawn("km:nobody", loc.mod($arte_yet_loc, 0.5, 1.5, 0.5), "{NoGravity:true}");
  4361. entity.setName(arte_ent, concat("250/250 §c❤\n§r[§9Artefakt§r]"));
  4362. return;
  4363. }
  4364. @manaloop
  4365. gpvpworld = world.get(gpvpworld_name);
  4366. worldlist = players.toWorldList(gpvpworld);
  4367. for(i = 0; i < list.getSize(worldlist); i++) {
  4368. player = list.getIndex(worldlist, i);
  4369. class = guild.getClass(player);
  4370. if(class != "none") {
  4371. mana_atm = getManaAtm(player);
  4372. mana_max = getManaMax(player);
  4373. if(mana_atm < mana_max) {
  4374. new_mana = mana_atm + getManaRegenerationForClass(class);
  4375. if(new_mana > mana_max) {
  4376. setManaAtm(player, mana_max);
  4377. } else {
  4378. setManaAtm(player, new_mana);
  4379. }
  4380. displaymana(player);
  4381. }
  4382. }
  4383. }
  4384. sgoto(20, "manaloop");
  4385. goto("wait");
  4386. @arte_drops_loop
  4387. if(arte_loc_type == "placed") {
  4388. if(arte_yet_loc != arte_main_loc) {
  4389. drop_chance = math.random(1, 100);
  4390. if(drop_chance <= 55) {
  4391. item = read.item("minecraft:gold_ingot");
  4392. item.setName(item, "§rGolddrop");
  4393. list.new(lore_list);
  4394. list.add(lore_list, 0.25);
  4395. item.setLore(item, lore_list);
  4396. item.drop(arte_yet_loc, item);
  4397. }
  4398. if(drop_chance <= 21) {
  4399. item = read.item("minecraft:gold_ingot");
  4400. item.setName(item, "§rGolddrop");
  4401. list.new(lore_list);
  4402. list.add(lore_list, 0.5);
  4403. item.setLore(item, lore_list);
  4404. item.drop(arte_yet_loc, item);
  4405. }
  4406. if(drop_chance <= 10) {
  4407. item = read.item("minecraft:gold_ingot");
  4408. item.setName(item, "§rGolddrop");
  4409. list.new(lore_list);
  4410. list.add(lore_list, 0.75);
  4411. item.setLore(item, lore_list);
  4412. item.drop(arte_yet_loc, item);
  4413. }
  4414. if(drop_chance <= 3) {
  4415. item = read.item("minecraft:diamond");
  4416. item.drop(arte_yet_loc, item);
  4417. }
  4418. if(drop_chance <= 2) {
  4419. item = read.item("minecraft:iron_block");
  4420. item.drop(arte_yet_loc, item);
  4421. }
  4422. }
  4423. }
  4424. sgoto(1200, "arte_drops_loop");
  4425. goto("wait");
  4426. @arte_ruin_loop
  4427. //Wenn der Spieler in der Arte-Ruine gestorben ist, darf er dort 5 Minuten lang nicht mehr hinein
  4428. size = list.getSize(arte_ruin_forbidden_players);
  4429. for(i = 0; i < size; i++) {
  4430. uuid = list.getIndex(arte_ruin_forbidden_players, i);
  4431. p = player.get(uuid);
  4432. if(p != null) {
  4433. loc = entity.getLocation(p);
  4434. if(loc.distance(loc, arte_main_loc) <= arte_ruin_radius) {
  4435. //Teleport zum Spawn
  4436. teleportPlayer(p, gildenspawnloc, false);
  4437. speakPrefix(p, arte_präfix, "Warte nach deinem Tod insgesamt 5 Minuten, bis du wieder in die Artefaktruine darfst");
  4438. }
  4439. }
  4440. }
  4441. sgoto(100, "arte_ruin_loop");
  4442. goto("wait");
  4443. @timerloop //Minutentakt. Code ausführen, wenn eine bestimmte Uhrzeit überschritten wurde
  4444. now_time = time.getMillis();
  4445. now_cal = time.new(now_time);
  4446. now_day = time.getDay(now_cal);
  4447. now_sec = time.getSecond(now_cal);
  4448. //Daily Reward
  4449. if(now_day != actualday) {
  4450. //nächster Tag
  4451. actualday = now_day;
  4452. if(actualday == 1) {
  4453. //nächster Monat
  4454. gosub("init_daily_reward");
  4455. guild.clearRewards();
  4456. }
  4457. gosub("setreward");
  4458. }
  4459. //Artefakt-Reset-Announce
  4460. if(now_time > arte_announcer_time) {
  4461. arte_announcer_time += 86400000; //19:30 Uhr (+24 Stunden)
  4462. counter = ggv("SERVER", "artedaycounter");
  4463. if(counter == 0) {
  4464. if(arte_loc_type == "placed") {
  4465. if(arte_yet_loc == arte_main_loc) {
  4466. goto("wait");
  4467. }
  4468. }
  4469. sendWorldMessage(arte_präfix, "Das Artefakt kehrt bald in die Ruine zurück");
  4470. }
  4471. }
  4472. //3 Tages-Reset des Artefakts
  4473. if(now_time > arte_reset_time) {
  4474. arte_reset_time += 86400000; //20:00 Uhr (+24 Stunden)
  4475. counter = ggv("SERVER", "artedaycounter");
  4476. if(counter == 0) {
  4477. sgv("SERVER", "artedaycounter", 2);
  4478. if(arte_loc_type == "placed") {
  4479. if(arte_yet_loc == arte_main_loc) {
  4480. goto("wait");
  4481. }
  4482. }
  4483. arteresetcore();
  4484. } else {
  4485. sgv("SERVER", "artedaycounter", counter - 1);
  4486. }
  4487. }
  4488. //Steuer
  4489. if(now_time > tax_time) {
  4490. tax_time += 86400000; //8 Uhr (+24 Stunden)
  4491. id_list = getAllGuildIds();
  4492. for(i = 0; i < list.getSize(id_list); i++) {
  4493. gilden_id = list.getIndex(id_list, i);
  4494. if(checkIfGuildInFight(gilden_id)) {
  4495. list.add(scheduledtax, gilden_id);
  4496. } else {
  4497. calculateTax(gilden_id);
  4498. }
  4499. }
  4500. }
  4501. //Timer auf volle Minuten synchronisieren
  4502. time = (60 - now_sec) * 20;
  4503. sgoto(time, "timerloop");
  4504. goto("wait");
  4505. @init_daily_reward
  4506. //Initialisierung des Daily Reward Invs
  4507. nowtime = time.new(time.getMillis());
  4508. monthnumber = time.getMonth(nowtime); //Welcher Monat ist jetzt?
  4509. monthname = map.get(monthlist, monthnumber); //Wie heißt der Monat?
  4510. daysofmonth = map.get(monthdays, monthnumber); //Wieviele Tage hat der Monat?
  4511. //Anzahl der Slots festlegen (Ergebnis: invstring = "222222222...")
  4512. invstring = "";
  4513. for(i = 0; i < daysofmonth; i++) {
  4514. invstring = concat(invstring, "2");
  4515. }
  4516. dailyrewardinv = inv.new(invstring); //Inv erstellen
  4517. dailyrewardinvid = inv.getID(dailyrewardinv);
  4518. return;
  4519. @setreward
  4520. dailyrewardlist = list.getIndex(allrewards, math.random(0, list.getSize(allrewards) - 1));
  4521. dailyreward = list.getIndex(dailyrewardlist, math.random(0, list.getSize(dailyrewardlist) - 1));
  4522. return;
  4523. function isGuildSpawnId(plot_id) {
  4524. return plot_id == $spawn_plot_id;
  4525. }
  4526. function setTurmGround() {
  4527. }
  4528. //Kistensicherungen
  4529. function isALockedChest(location) {
  4530. if(map.contains($chest_guild, location)) {
  4531. return true;
  4532. }
  4533. if(map.contains($chest_officer, location)) {
  4534. return true;
  4535. }
  4536. if(map.contains($chest_adel, location)) {
  4537. return true;
  4538. }
  4539. if(map.contains($chest_privat, location)) {
  4540. return true;
  4541. }
  4542. return false;
  4543. }
  4544. function lockGuildChest(location, gilden_id) {
  4545. map.add($chest_guild, location, gilden_id);
  4546. lockChestDB_1(gilden_id, "guild", location);
  4547. return;
  4548. }
  4549. function lockOfficerChest(location, gilden_id) {
  4550. map.add($chest_officer, location, gilden_id);
  4551. lockChestDB_1(gilden_id, "officer", location);
  4552. return;
  4553. }
  4554. function lockAdelChest(location, gilden_id) {
  4555. map.add($chest_adel, location, gilden_id);
  4556. lockChestDB_1(gilden_id, "adel", location);
  4557. return;
  4558. }
  4559. function lockPrivatChest(location, uuid) {
  4560. map.add($chest_privat, location, uuid);
  4561. lockChestDB_2(uuid, location);
  4562. return;
  4563. }
  4564. function unlockGuildChest(location) {
  4565. map.remove($chest_guild, location);
  4566. unlockChestDB_1(location);
  4567. return;
  4568. }
  4569. function unlockOfficerChest(location) {
  4570. map.remove($chest_officer, location);
  4571. unlockChestDB_1(location);
  4572. return;
  4573. }
  4574. function unlockAdelChest(location) {
  4575. map.remove($chest_adel, location);
  4576. unlockChestDB_1(location);
  4577. return;
  4578. }
  4579. function unlockPrivatChest(location) {
  4580. map.remove($chest_privat, location);
  4581. unlockChestDB_2(location);
  4582. return;
  4583. }
  4584. function lockChestDB_1(gilden_id, type, location) {
  4585. stmt = databank.prepare("INSERT INTO gilden_chests_1 (gilden_id, block_world, block_x, block_y, block_z, type) VALUES (?, ?, ?, ?, ?, ?);");
  4586. databank.setInt(stmt, 1, gilden_id);
  4587. databank.setString(stmt, 2, world.getName(loc.getWorld(location)));
  4588. databank.setInt(stmt, 3, loc.getX(location));
  4589. databank.setInt(stmt, 4, loc.getY(location));
  4590. databank.setInt(stmt, 5, loc.getZ(location));
  4591. databank.setString(stmt, 6, type);
  4592. databank.workerExecute(stmt);
  4593. return;
  4594. }
  4595. function lockChestDB_2(uuid, location) {
  4596. stmt = databank.prepare("INSERT INTO gilden_chests_2 (player_id, block_world, block_x, block_y, block_z) VALUES (?, ?, ?, ?, ?);");
  4597. databank.setInt(stmt, 1, player.getId(uuid));
  4598. databank.setString(stmt, 2, world.getName(loc.getWorld(location)));
  4599. databank.setInt(stmt, 3, loc.getX(location));
  4600. databank.setInt(stmt, 4, loc.getY(location));
  4601. databank.setInt(stmt, 5, loc.getZ(location));
  4602. databank.workerExecute(stmt);
  4603. return;
  4604. }
  4605. function unlockChestDB_1(location) {
  4606. world_name = world.getName(loc.getWorld(location));
  4607. x = loc.getX(location);
  4608. y = loc.getY(location);
  4609. z = loc.getZ(location);
  4610. stmt = databank.prepare("DELETE FROM gilden_chests_1 WHERE block_world = ? AND block_x = ? AND block_y = ? AND block_z = ?;");
  4611. databank.setString(stmt, 1, world_name);
  4612. databank.setInt(stmt, 2, x);
  4613. databank.setInt(stmt, 3, y);
  4614. databank.setInt(stmt, 4, z);
  4615. databank.workerExecute(stmt);
  4616. return;
  4617. }
  4618. function unlockChestDB_2(location) {
  4619. world_name = world.getName(loc.getWorld(location));
  4620. x = loc.getX(location);
  4621. y = loc.getY(location);
  4622. z = loc.getZ(location);
  4623. stmt = databank.prepare("DELETE FROM gilden_chests_2 WHERE block_world = ? AND block_x = ? AND block_y = ? AND block_z = ?;");
  4624. databank.setString(stmt, 1, world_name);
  4625. databank.setInt(stmt, 2, x);
  4626. databank.setInt(stmt, 3, y);
  4627. databank.setInt(stmt, 4, z);
  4628. databank.workerExecute(stmt);
  4629. return;
  4630. }
  4631. function loadChestDB1() {
  4632. stmt = databank.prepare("SELECT gilden_id, block_world, block_x, block_y, block_z, type FROM gilden_chests_1;");
  4633. result = databank.execute(stmt);
  4634. while(databank.next(result)) {
  4635. gilden_id = databank.getInt(result, 1);
  4636. world_name = databank.getString(result, 2);
  4637. x = databank.getInt(result, 3);
  4638. y = databank.getInt(result, 4);
  4639. z = databank.getInt(result, 5);
  4640. type = databank.getString(result, 6);
  4641. world = world.get(world_name);
  4642. location = loc.new(world, x, y, z);
  4643. if(type == "guild") {
  4644. map.add($chest_guild, location, gilden_id);
  4645. } elseif(type == "officer") {
  4646. map.add($chest_officer, location, gilden_id);
  4647. } elseif(type == "adel") {
  4648. map.add($chest_adel, location, gilden_id);
  4649. }
  4650. }
  4651. databank.close(result);
  4652. databank.close(stmt);
  4653. return;
  4654. }
  4655. function loadChestDB2() {
  4656. stmt = databank.prepare("SELECT player_id, block_world, block_x, block_y, block_z FROM gilden_chests_2;");
  4657. result = databank.execute(stmt);
  4658. while(databank.next(result)) {
  4659. player_id = databank.getInt(result, 1);
  4660. world_name = databank.getString(result, 2);
  4661. x = databank.getInt(result, 3);
  4662. y = databank.getInt(result, 4);
  4663. z = databank.getInt(result, 5);
  4664. world = world.get(world_name);
  4665. location = loc.new(world, x, y, z);
  4666. uuid = player.getUuidFromId(player_id);
  4667. map.add($chest_privat, location, uuid);
  4668. }
  4669. databank.close(result);
  4670. databank.close(stmt);
  4671. return;
  4672. }