gildenpvp.txt 148 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248
  1. /* TODO
  2. wirkt unvollständig: function resetplayer(uuid) {
  3. *) Display. HP als Prozent anzeigen
  4. read.number
  5. //artefakt platzieren. wo erlaubt?
  6. //fiktionalen schaden austeilen
  7. kampfwaffen
  8. 0...20 --> reales leben
  9. 0...xyz --> fiktives leben
  10. fiktive schadenszahl durch 2 = xp
  11. mit nicht kampfwaffen
  12. fiktive schadenszahl mal 2 = xp
  13. //schaden einstecken
  14. nur wenn man komplette rüstung anhat, erlittener schaden durch 3 = xp
  15. Eropster, [22.11.17 07:59]
  16. Notiz an mich: Reparatur level einbauen, Elo und Einfluss, Gold- und Itemdrops
  17. Magier Zepter
  18. Jäger Bogen
  19. Krieger Schwert
  20. Barbar Axt
  21. Schurke Dolch
  22. Mönch Kampfstab
  23. TODO before release
  24. *) //cancel = true; Auskommentiert: Um Bauarbeiten zu ermöglichen, während andere Spieler in der Nähe sind
  25. *) bei seasonreset auskommentierung des teleports entfernen
  26. */
  27. /* Erklärung für Codeverständnis
  28. Art Name Inhalt und Erklärung
  29. gdmap gilden <id>, <gtype/membersatm/membersmax/adelatm/adelmax/golddelay/gold/name/
  30. - gtype Unterscheidung Gruppe/Gilde
  31. - membersatm momentane Mitgliederzahl
  32. - membersmax maximale Mitgliederzahl
  33. - adelatm momentane Adelanzahl
  34. - adelmax maximale Adelanzahl
  35. - golddelay Anzahl der Tage, seit eine Gilde im Minus ist
  36. - gold Gold
  37. - name Name
  38. gmap gildenblock <id>, <loc>; Loc des Gildenblocks
  39. gmap gildentime <id>, <time>; Wann die Gilde das nächste Mal angegriffen werden kann
  40. gmap gildenplot <id>, <plotid>; Liefert die Plotid zur Gildenid
  41. gmap gsharexp <id>, <true/false>; Gruppe/Gilde XP-Teilung an/aus
  42. gmap gsharegold <id>, <true/false>; Gruppe/Gilde Gold-Teilung an/aus
  43. gdmap gildenplayer <uuid>, <joined/
  44. gvar gpvpjoined Boolean, ob Spieler in gpvpwelt war
  45. gmap gpvpplayers <uuid>, "wusi"; Alle Spieler im Gildenpvp
  46. gvar gcoinsatm Gold, das der Spieler bei sich trägt
  47. gvar gcoinsbank <anzahl>; Gold, das der Spieler in der Bank aufbewahrt
  48. gvar nextjoin <time>; wann ein Spieler wieder einer Gilde beitreten kann
  49. gdmap gmembers <id> <uuid>, <rang>; Rang eines Spielers innerhalb der Gilde/Gruppe
  50. gmap gnicknames <uuid>, <nickname>; Nickname eines Spielers in der Gilde
  51. sgvar gildencounter forlaufende ID, Anzahl aller Gilden und Gruppen
  52. sgvar artedaycounter jeden 3.Tag wird der arteblock in die ruine gesetzt
  53. sgvar arteyetloc die momentane position des arteblocks, falls platziert, ansonsten uuid des trägers
  54. sgvar artehitpoints 250 in ruine/10 auf gilden gs
  55. gdmap gildeninvite <uuid> <gname>, <senderuuid>; Gildeneinladungen für einen Spieler. senderuuid ist der Einlader
  56. gdmap dailyrewardplayers <uuid>, <day>, <1/null>; 1 = kiste(geöffnet), null = zukunft/blackconcrete; monatsübersicht der täglichen belohnungen aller spieler
  57. gdmap gfriends <uuid>, <uuid(Freund)>, true;
  58. map newfriends <uuid(Einlader)>, <uuid(Eingeladener)>
  59. map blocktime <id>, <time.getMillis()>; Damit Gildenblock nur 1 Mal pro Sekunde geklickt werden kann
  60. map gmoveids <moveid>, <gildenid>;
  61. var artetime time.getMillis(); Damit Artefakt nur 1 Mal pro Sekunde geklickt werden kann
  62. table onothergs UUID, plotid; Zur Überprüfung, ob Spieler noch immer auf fremden Gildengs
  63. list scheduledtax <id>; Verzögerte Abrechnung der Steuer, weil Gilde im Kampf
  64. map gstatus <plotid>, <0/1>; 0 = kampfphase (60 minuten), 1 = stehl phase (30 minuten)
  65. table gstatustable <plotid>, <0/1>; 0 = kampfphase (60 minuten), 1 = stehl phase (30 minuten)
  66. map gattackers <attacker-id>, <defender-id>;
  67. map gdefenders <defender-id>, <attacker-id>;
  68. set forbiddenblocks <loc>; Block unter Gildenblock (von allen Gildenblocks)
  69. set forbiddenblocks2 <loc>; Berech 11x11x7 um den Gildenblock
  70. map gfights <plotid>, <set>; Plot-ID der verteidigenden Gilde, mit allen Spielern eines Kampfes im Set
  71. map clicks <gildenblockloc>, <0-200>; HP des Gildenblocks
  72. table invitations <uuid(Eingeladener)>, <id>; Hier ist jede Gilden-Einladung vorhanden. Nach 5 Min wird Index 0 gelöscht.
  73. gmap gildenplot2 <plotid>, <id>; Liefert die Gildenid zur Plotid
  74. set gameadmins <uuid>; Spieler mit absoluten Verwaltungsrechten (im Normalfall nur der Snuvimaster, also marvinius)
  75. set gamemasters <uuid>; Spieler mit mehr Team-Berechtigungen
  76. map bindingmenus <uuid>, <inv>; Enthält die Hotkey-Invs zum Skills casten
  77. map onlinelists <id>, <list>; Enthält die Listen der Online-Spieler der Gilden/Gruppen
  78. map gclassvi <uuid>, <entity_name>; Den Namen des Entities, bei dem man gerade im Menü ist.
  79. list gcreaterlist <uuid>; Alle Spieler, die den Gildenvillager anklicken. Werden nach einer gewissen Zeit gelöscht (5 Min)
  80. map adcooldown <player>, <time>; 180 Sekunden Cooldown für "ad"-Weltnachrichten
  81. */
  82. msg("dev", "§bGildenpvp §rwurde geladen.");
  83. event.load("bucket_fill");
  84. event.load("entity_click");
  85. event.load("entity_death");
  86. event.load("custom_command");
  87. event.load("command");
  88. event.load("block_place");
  89. event.load("block_break");
  90. event.load("block_click");
  91. event.load("inv_click");
  92. event.load("player_move");
  93. event.load("player_login");
  94. event.load("player_logout");
  95. event.load("player_pre_respawn");
  96. event.load("player_hurt");
  97. event.load("player_heal");
  98. event.load("player_pickup");
  99. event.load("portal");
  100. event.load("player_death");
  101. event.load("function_key");
  102. event.load("inv_close");
  103. command.add("gilde");
  104. command.add("g");
  105. command.add("guild");
  106. command.add("pay");
  107. command.add("group");
  108. command.add("friend");
  109. command.add("placearte");
  110. command.add("slots");
  111. command.add("skill");
  112. command.add("pinfo");
  113. command.add("playerinfo");
  114. command.add("bank");
  115. command.add("money");
  116. map.new(xpforblocks);
  117. map.add(xpforblocks, "minecraft:coal_ore", 3);
  118. map.add(xpforblocks, "minecraft:redstone_ore", 7);
  119. map.add(xpforblocks, "minecraft:lapis_ore", 12);
  120. map.add(xpforblocks, "minecraft:iron_ore", 15);
  121. map.add(xpforblocks, "minecraft:gold_ore", 18);
  122. map.add(xpforblocks, "minecraft:obsidian", 20);
  123. map.add(xpforblocks, "minecraft:diamond_ore", 25);
  124. map.add(xpforblocks, "minecraft:emerald_ore", 35);
  125. map.add(xpforblocks, "minecraft:log", 2);
  126. map.add(xpforblocks, "minecraft:log2", 2);
  127. map.add(xpforblocks, "minecraft:leaves", 2);
  128. map.add(xpforblocks, "minecraft:leaves2", 2);
  129. map.add(xpforblocks, "minecraft:web", 2);
  130. map.add(xpforblocks, "minecraft:potatoes", 3);
  131. map.add(xpforblocks, "minecraft:carrots", 3);
  132. map.add(xpforblocks, "minecraft:beetroot", 3);
  133. map.add(xpforblocks, "minecraft:cacao", 3);
  134. map.add(xpforblocks, "minecraft:reeds", 3);
  135. map.add(xpforblocks, "minecraft:pumpkin", 15);
  136. map.add(xpforblocks, "minecraft:melon_block", 15);
  137. set.new(richblocks);
  138. set.add(richblocks, "minecraft:coal_block");
  139. set.add(richblocks, "minecraft:gold_block");
  140. set.add(richblocks, "minecraft:iron_block");
  141. set.add(richblocks, "minecraft:redstone_block");
  142. set.add(richblocks, "minecraft:lapis_block");
  143. set.add(richblocks, "minecraft:emerald_block");
  144. set.add(richblocks, "minecraft:diamond_block");
  145. set.add(richblocks, "minecraft:coal_ore");
  146. set.add(richblocks, "minecraft:gold_ore");
  147. set.add(richblocks, "minecraft:iron_ore");
  148. set.add(richblocks, "minecraft:redstone_ore");
  149. set.add(richblocks, "minecraft:lapis_ore");
  150. set.add(richblocks, "minecraft:emerald_ore");
  151. set.add(richblocks, "minecraft:diamond_ore");
  152. map.new(xpforentities); //math.random(xp * 0.7, xp * 1.3);
  153. map.add(xpforentities, "EntityWither", 1000);
  154. map.add(xpforentities, "EntityZombie", 110);
  155. map.add(xpforentities, "EntitySpider", 110);
  156. map.add(xpforentities, "EntitySkeleton", 110);
  157. map.add(xpforentities, "EntityCreeper", 110);
  158. map.add(xpforentities, "EntityPigZombie", 110);
  159. map.add(xpforentities, "EntityEndermite", 110);
  160. map.add(xpforentities, "EntityMagmaCube", 110);
  161. map.add(xpforentities, "EntitySlime", 110);
  162. map.add(xpforentities, "EntityZomieVillager", 110);
  163. map.add(xpforentities, "EntityEnderman", 185);
  164. map.add(xpforentities, "EntityWitch", 185);
  165. map.add(xpforentities, "EntitySilverfish", 185);
  166. map.add(xpforentities, "EntityGhast", 185);
  167. map.add(xpforentities, "EntityWitherSkeleton", 185);
  168. map.new(skillnametoid);
  169. //Jäger
  170. map.add(skillnametoid, "Splitterbombe", 56);
  171. map.add(skillnametoid, "Schnellschuss", 57);
  172. map.add(skillnametoid, "Trollsalbe", 58);
  173. map.add(skillnametoid, "Stachelpfeil", 59);
  174. map.add(skillnametoid, "Sprung", 60);
  175. map.add(skillnametoid, "Magentritt", 61);
  176. map.add(skillnametoid, "Trägheitspfeil", 62);
  177. map.add(skillnametoid, "Netzfalle", 63);
  178. map.add(skillnametoid, "Arkaner Schuss", 64);
  179. map.add(skillnametoid, "Brandpfeil", 65);
  180. map.add(skillnametoid, "Waldhorn", 66);
  181. map.add(skillnametoid, "Giftslave", 67);
  182. map.add(skillnametoid, "Blendpfeil", 68);
  183. map.add(skillnametoid, "Schnellfeuer", 69);
  184. map.add(skillnametoid, "Dornenranken", 70);
  185. map.add(skillnametoid, "Blätterkokon", 71);
  186. //Schurke
  187. map.add(skillnametoid, "Dolchangriff", 72);
  188. map.add(skillnametoid, "Bandagieren", 73);
  189. map.add(skillnametoid, "Schattenhieb", 74);
  190. map.add(skillnametoid, "Trittnägel", 75);
  191. map.add(skillnametoid, "Rauchbombe", 76);
  192. map.add(skillnametoid, "Schattenform", 77);
  193. map.add(skillnametoid, "Festnageln", 78);
  194. map.add(skillnametoid, "Dietrich", 79);
  195. map.add(skillnametoid, "Giftklinge", 80);
  196. map.add(skillnametoid, "Schattenschritt", 81);
  197. map.add(skillnametoid, "Herzsucher", 82);
  198. map.add(skillnametoid, "Rückruf", 83);
  199. map.add(skillnametoid, "Assassinensiegel", 84);
  200. map.add(skillnametoid, "Kehlschnitt", 85);
  201. map.add(skillnametoid, "Widerhaken", 86);
  202. map.add(skillnametoid, "Todgeweiht", 87);
  203. //Barbar
  204. map.add(skillnametoid, "Axthieb", 88);
  205. map.add(skillnametoid, "Blutrausch", 89);
  206. map.add(skillnametoid, "Wuchtschlag", 90);
  207. map.add(skillnametoid, "Aggressiver Ausbruch", 91);
  208. map.add(skillnametoid, "Axtwurf", 92);
  209. map.add(skillnametoid, "Zertrümmern", 93);
  210. map.add(skillnametoid, "Innere Wut", 94);
  211. map.add(skillnametoid, "Verkrüppeln", 95);
  212. map.add(skillnametoid, "Aufstampfen", 96);
  213. map.add(skillnametoid, "Lebensbrecher", 97);
  214. map.add(skillnametoid, "Ausweiden", 98);
  215. map.add(skillnametoid, "Kampfeslust", 99);
  216. map.add(skillnametoid, "Knochenbrecher", 100);
  217. map.add(skillnametoid, "Schlachtruf", 101);
  218. map.add(skillnametoid, "Pfad der Narben", 102);
  219. map.add(skillnametoid, "Hungernde Klinge", 103);
  220. //Krieger
  221. map.add(skillnametoid, "Schwerthieb", 104);
  222. map.add(skillnametoid, "Schmerz ertragen", 105);
  223. map.add(skillnametoid, "Schildstoß", 106);
  224. map.add(skillnametoid, "Klingenwirbel", 107);
  225. map.add(skillnametoid, "Eiserner Wille", 108);
  226. map.add(skillnametoid, "Kniezerschmetterer", 109);
  227. map.add(skillnametoid, "Stürmen", 110);
  228. map.add(skillnametoid, "Kriegsruf", 111);
  229. map.add(skillnametoid, "Drachenhaut", 112);
  230. map.add(skillnametoid, "Wütender Schlag", 113);
  231. map.add(skillnametoid, "Schildwall", 114);
  232. map.add(skillnametoid, "Schwertknaufschlag", 115);
  233. map.add(skillnametoid, "Entwaffnen", 116);
  234. map.add(skillnametoid, "Dornenpanzer", 117);
  235. map.add(skillnametoid, "Unbeugsam", 118);
  236. map.add(skillnametoid, "Verspotten", 119);
  237. gamesworld = world.get("games");
  238. gpvpworld = world.get("gpvpnew");
  239. spawnislandtoloc = loc.new(gamesworld, -323, 143, 7, -90, 0);
  240. gildenvillagerloc = loc.new(gpvpworld, 134, 142, 490);
  241. gildenspawnloc = loc.new(gpvpworld, 27.5, 106, 414.5);
  242. serverspawn = read.location(ggv("SERVER", "serverspawn")); //Hauptspawn
  243. artefaktfixloc = loc.new(gpvpworld, -139, 72, 477);
  244. magierbuttontploc = loc.new(gpvpworld, -4, 204, 519);
  245. magierreturntploc = loc.new(gpvpworld, 22, 141, 518);
  246. magierturmtploc = loc.new(gpvpworld, -2, 190, 511);
  247. pvpsuedfromtploc = loc.new(gpvpworld, 73.5, 129, 511.5);
  248. pvpsuedtotploc = loc.new(gpvpworld, 82, 68, 536.5);
  249. artefaktitem = read.item("{id:'km:artefact',Count:1b,Damage:0s}");
  250. guildblockitem = read.item("{id:'km:guild_block',Count:1b,Damage:0s}");
  251. airitem = read.item("{id:'minecraft:air',Count:1b,Damage:0s}");
  252. time.new(artetime, time.getMillis() - 60000);
  253. spawnplotid = 87;
  254. artefaktplotid = 87;
  255. time.new(actualdaycal, time.getMillis());
  256. actualday = time.getDay(actualdaycal);
  257. pinvolved = false;
  258. sharing = false;
  259. moveidfromworldspawn = event.addMoveData(loc.new(gamesworld, -414, 87, 120), loc.new(gamesworld, -410, 89, 121), 5, -1);
  260. moveidfromspawnisland = event.addMoveData(loc.new(gamesworld, -268, 168, 23), loc.new(gamesworld, -264, 163, 19), 5, -1);
  261. moveidmagier = event.addMoveData(loc.new(gpvpworld, 15, 133, 519), loc.new(gpvpworld, 18, 138, 516), 5, -1);
  262. moveidspawn = event.addMoveData(loc.new(gpvpworld, 187, 0, 605), loc.new(gpvpworld, -74, 255, 330), 5, -1);
  263. moveidtopvpsued = event.addMoveData(loc.new(gpvpworld, 73, 121, 514), loc.new(gpvpworld, 76, 127, 517), 7, -1);
  264. moveidfrompvpsued = event.addMoveData(loc.new(gpvpworld, 80, 69, 532), loc.new(gpvpworld, 84, 73, 533), 7, -1);
  265. fehlerpräfix = "§cFehler";
  266. commandspräfix = "§6Commands";
  267. freundepräfix = "§5Freunde";
  268. gruppepräfix = "§9Gruppe";
  269. gildepräfix = "§6Gilde";
  270. //Nur Argumente von (Gilden-)Befehlen, für die man in einer Gilde sein muss
  271. set.new(gcommandsset);
  272. set.addAll(gcommandsset, "invite", "newpos", "rename", "fight", "leader", "nick");
  273. set.addAll(gcommandsset, "officer", "adel", "degrade", "kick", "leave", "deposit");
  274. set.addAll(gcommandsset, "steal", "disband", "home", "spawn", "msg", "mail", "withdraw");
  275. set.new(gameadmins);
  276. set.add(gameadmins, "e41b5335-3c74-46e9-a6c5-dafc6334a477"); //marvinius
  277. set.new(gamemasters);
  278. set.add(gamemasters, "e41b5335-3c74-46e9-a6c5-dafc6334a477"); //marvinius
  279. set.add(gamemasters, "9a3d753d-2283-4c21-98a3-313f52859fc6"); //eropster
  280. set.add(gamemasters, "51e240f9-ab10-4ea6-8a5d-779319f51257"); //kajetanjohannes
  281. map.new(adcooldown);
  282. map.new(gclassvi);
  283. map.new(bindingmenus);
  284. map.new(onlinelists);
  285. map.new(gfights);
  286. map.new(gstatus); //gstatus: 0 = ersten 60 minuten angriffsphase; 1 = 30 minuten stehl phase
  287. table.new(gstatustable, 2);
  288. table.new(onothergs, 2);
  289. table.new(invitations, 2);
  290. map.new(gattackers);
  291. map.new(gdefenders);
  292. map.new(clicks);
  293. map.new(blocktime);
  294. map.new(newfriends);
  295. map.new(newfriends2);
  296. map.new(gmoveids);
  297. map.new(gmoveids2);
  298. set.new(warned);
  299. list.new(gstealername);
  300. list.new(gstealerloc);
  301. list.new(gstealerstate);
  302. list.new(scheduledtax);
  303. list.new(gcreaterlist);
  304. list.new(movelist);
  305. map.new(groupinvitations);
  306. table.new(groupinvitations2, 2);
  307. //Einmalige Initialisierung bei Seasonstart
  308. if(ggv("SERVER", "artedaycounter") == null) {
  309. sgv("SERVER", "artedaycounter", 0);
  310. }
  311. if(ggv("SERVER", "arteyetloc") == null) {
  312. sgv("SERVER", "arteyetloc", text.location(artefaktfixloc));
  313. }
  314. //Falls Server down oder Script terminiert war, Arte resetten
  315. artefaktyetloc = read.location(ggv("SERVER", "arteyetloc"));
  316. if(artefaktyetloc == null) { //Keine Location erkannt --> Ein Spieler hat Artefakt noch
  317. gosub("arteresetcore");
  318. }
  319. if(artefaktyetloc == artefaktfixloc) { //Arte bekommt nach Neustart fulllife
  320. sgv("SERVER", "artehitpoints", 250);
  321. } else {
  322. sgv("SERVER", "artehitpoints", 10);
  323. }
  324. time.new(midnight, time.getMillis());
  325. time.nextDay(midnight);
  326. halftwentyoclock = time.from(midnight) + 70200000;
  327. sgoto(halftwentyoclock - time.getMillis(), "checkartereset");
  328. //Alle Einladungen löschen
  329. gdmap.removeAll("gildeninvite");
  330. //Move-Gebiete erstellen
  331. //Blöcke unter Gildenblock und 11x11x7 Bereich um den Gildenblock einem Set hinzufügen (dürfen nicht abgebaut werden)
  332. gmap.toTable(gildenblocktable, "gildenblock");
  333. set.new(forbiddenblocks);
  334. set.new(forbiddenblocks2);
  335. for(i = 0; i <= table.getSize(gildenblocktable) - 1; i++) {
  336. //11x11x7 Bereich
  337. gildenblockloc = read.location(table.get(gildenblocktable, i, 1));
  338. set.add(forbiddenblocks, loc.mod(gildenblockloc, 0, -1, 0));
  339. for(y = 0; y <= 7; y++) {
  340. for(z = -5; z <= 5; z++) {
  341. for(x = -5; x <= 5; x++) {
  342. set.add(forbiddenblocks2, loc.mod(gildenblockloc, x, y, z));
  343. }
  344. }
  345. }
  346. //Move-Gebiete erstellen
  347. x = loc.getX(gildenblockloc);
  348. x1 = x - 150;
  349. x2 = x + 150;
  350. z = loc.getZ(gildenblockloc);
  351. z1 = z -150;
  352. z2 = z + 150;
  353. gsedge1 = read.location(concat("gpvpnew:", x1, ":0:", z1));
  354. gsedge2 = read.location(concat("gpvpnew:", x2, ":255:", z2));
  355. moveid = event.addMoveData(gsedge1, gsedge2, 100, -1);
  356. map.add(gmoveids, moveid, gildenid);
  357. map.add(gmoveids2, gildenid, moveid);
  358. }
  359. //Block unter Artefakt darf auch nicht abgebaut werden
  360. set.add(forbiddenblocks, loc.mod(artefaktyetloc, 0, -1, 0));
  361. buypricegblock = 2000;
  362. gildenvillagername = "Gildenvillager";
  363. bankvillagername = "§rBänker";
  364. if(ggv("SERVER", "gildencounter") == null) {
  365. sgv("SERVER", "gildencounter", 0);
  366. }
  367. for(id = 1; id <= ggv("SERVER", "gildencounter"); id++) {
  368. map.add(onlinelists, id, list.new());
  369. }
  370. time.new(midnight, time.getMillis());
  371. time.nextDay(midnight);
  372. taxtime = time.from(midnight) + 28800000;
  373. sgoto(taxtime - time.getMillis(), "gettax");
  374. list.new(xplist);
  375. //Um von Lvl1 auf Lvl2 zu kommen braucht man 300 Xp
  376. list.addAll(xplist, 300, 315, 331, 347, 365, 383, 402, 422, 443, 465);
  377. list.addAll(xplist, 489, 513, 539, 566, 594, 624, 655, 688, 722, 758);
  378. list.addAll(xplist, 796, 836, 878, 921, 968, 1016, 1067, 1120, 1176, 1235);
  379. list.addAll(xplist, 1297, 1361, 1429, 1501, 1576, 1655, 1738, 1824, 1916, 2011);
  380. list.addAll(xplist, 2112, 2218, 2328, 2445, 2567, 2696, 2830, 2972, 3120, 3276);
  381. list.addAll(xplist, 3440, 3612, 3793, 3982, 4182, 4391, 4610, 4841, 5083, 5337);
  382. list.addAll(xplist, 5604, 5884, 6178, 6487, 6811, 7152, 7510, 7885, 8279, 8693);
  383. list.addAll(xplist, 9128, 9584, 10064, 10567, 11095, 11650, 12232, 12844, 13486, 14160);
  384. list.addAll(xplist, 14868, 15612, 16392, 17212, 18073, 18976, 19925, 20921, 21967, 23066);
  385. list.addAll(xplist, 24219, 25430, 26702, 28037, 29438, 30910, 32456, 34079, 35783);
  386. list.new(classvillagers);
  387. list.add(classvillagers, "§2Jäger");
  388. list.add(classvillagers, "§2Barbar");
  389. list.add(classvillagers, "§2Schurke");
  390. list.add(classvillagers, "§2Krieger");
  391. list.add(classvillagers, "§2Magier");
  392. list.add(classvillagers, "§2Mönch");
  393. map.new(classids);
  394. map.add(classids, "§2Jäger", 2);
  395. map.add(classids, "§2Schurke", 3);
  396. map.add(classids, "§2Barbar", 4);
  397. map.add(classids, "§2Krieger", 5);
  398. map.add(classids, "§2Magier", 6);
  399. map.add(classids, "§2Mönch", 7);
  400. inv.newdynamic(choosejäger, "222222222", concat("§rKlasse §2Jäger §rwählen?"));
  401. inv.newdynamic(choosebarbar, "222222222", concat("§rKlasse §2Barbar §rwählen?"));
  402. inv.newdynamic(chooseschurke, "222222222", concat("§rKlasse §2Schurke §rwählen?"));
  403. inv.newdynamic(choosekrieger, "222222222", concat("§rKlasse §2Krieger §rwählen?"));
  404. inv.newdynamic(choosemagier, "222222222", concat("§rKlasse §2Magier §rwählen?"));
  405. inv.newdynamic(choosemönch, "222222222", concat("§rKlasse §2Mönch §rwählen?"));
  406. jägerinvid = inv.getID(choosejäger);
  407. barbarinvid = inv.getID(choosebarbar);
  408. schurkeinvid = inv.getID(chooseschurke);
  409. kriegerinvid = inv.getID(choosekrieger);
  410. magierinvid = inv.getID(choosemagier);
  411. mönchinvid = inv.getID(choosemönch);
  412. map.new(classinvs);
  413. map.add(classinvs, "§2Jäger", choosejäger);
  414. map.add(classinvs, "§2Barbar", choosebarbar);
  415. map.add(classinvs, "§2Schurke", chooseschurke);
  416. map.add(classinvs, "§2Krieger", choosekrieger);
  417. map.add(classinvs, "§2Magier", choosemagier);
  418. map.add(classinvs, "§2Mönch", choosemönch);
  419. yes = read.item("{id:'minecraft:wool',Count:1b,tag:{display:{Name:'§rJa'}},Damage:5s}");
  420. no = read.item("{id:'minecraft:wool',Count:1b,tag:{display:{Name:'§rNein'}},Damage:14s}");
  421. for(i = 0; i <= list.getSize(classvillagers) - 1; i++) {
  422. class = list.getIndex(classvillagers, i);
  423. inv = map.get(classinvs, class);
  424. inv.setItem(inv, 0, yes);
  425. inv.setItem(inv, 1, no);
  426. }
  427. sgoto(200, "witherloop");
  428. inv.newdynamic(pvequests, "222222222", "§rPvE Quests");
  429. pvequestsinvid = inv.getID(pvequests);
  430. inv.setItem(pvequests, 0, read.item("WRITABLE_BOOK", 1, 0, "§rFriedliche Mobs"));
  431. inv.setItem(pvequests, 1, read.item("WRITABLE_BOOK", 1, 0, "§rFeindliche Mobs"));
  432. inv.setItem(pvequests, 2, read.item("WRITABLE_BOOK", 1, 0, "§rBlöcke und Landwirtschaft"));
  433. inv.newdynamic(pvemenu1, "222222222222222222222222222222222222", "§rFriedliche Mobs");
  434. pvemenu1invid = inv.getID(pvemenu1);
  435. inv.setItem(pvemenu1, 0, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Kühe"));
  436. inv.setItem(pvemenu1, 1, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Kühe"));
  437. inv.setItem(pvemenu1, 2, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Kühe"));
  438. inv.setItem(pvemenu1, 3, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Kühe"));
  439. inv.setItem(pvemenu1, 5, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Schafe"));
  440. inv.setItem(pvemenu1, 6, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Schafe"));
  441. inv.setItem(pvemenu1, 7, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Schafe"));
  442. inv.setItem(pvemenu1, 8, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Schafe"));
  443. inv.setItem(pvemenu1, 9, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Schweine"));
  444. inv.setItem(pvemenu1, 10, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Schweine"));
  445. inv.setItem(pvemenu1, 11, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Schweine"));
  446. inv.setItem(pvemenu1, 12, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Schweine"));
  447. inv.setItem(pvemenu1, 14, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Hühner"));
  448. inv.setItem(pvemenu1, 15, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Hühner"));
  449. inv.setItem(pvemenu1, 16, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Hühner"));
  450. inv.setItem(pvemenu1, 17, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Hühner"));
  451. inv.setItem(pvemenu1, 18, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Hasen"));
  452. inv.setItem(pvemenu1, 19, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Hasen"));
  453. inv.setItem(pvemenu1, 20, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Hasen"));
  454. inv.setItem(pvemenu1, 21, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Hasen"));
  455. inv.setItem(pvemenu1, 23, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Pferde"));
  456. inv.setItem(pvemenu1, 24, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Pferde"));
  457. inv.setItem(pvemenu1, 25, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Pferde"));
  458. inv.setItem(pvemenu1, 26, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Pferde"));
  459. inv.setItem(pvemenu1, 27, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 10 Tintenfische"));
  460. inv.setItem(pvemenu1, 28, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Tintenfische"));
  461. inv.setItem(pvemenu1, 29, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Tintenfische"));
  462. inv.setItem(pvemenu1, 30, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 250 Tintenfische"));
  463. inv.setItem(pvemenu1, 35, read.item("WOODEN_DOOR", 1, 0, "§rZurück"));
  464. inv.newdynamic(pvemenu2, "222222222222222222222222222", "§rFeindliche Mobs");
  465. pvemenu2invid = inv.getID(pvemenu2);
  466. inv.setItem(pvemenu2, 0, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Zombies"));
  467. inv.setItem(pvemenu2, 1, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Zombies"));
  468. inv.setItem(pvemenu2, 2, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 100 Zombies"));
  469. inv.setItem(pvemenu2, 3, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 1000 Zombies"));
  470. inv.setItem(pvemenu2, 5, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Skelette"));
  471. inv.setItem(pvemenu2, 6, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Skelette"));
  472. inv.setItem(pvemenu2, 7, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 100 Skelette"));
  473. inv.setItem(pvemenu2, 8, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 1000 Skelette"));
  474. inv.setItem(pvemenu2, 9, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Spinnen"));
  475. inv.setItem(pvemenu2, 10, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Spinnen"));
  476. inv.setItem(pvemenu2, 11, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 100 Spinnen"));
  477. inv.setItem(pvemenu2, 12, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 1000 Spinnen"));
  478. inv.setItem(pvemenu2, 14, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Silberfische"));
  479. inv.setItem(pvemenu2, 15, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Silberfische"));
  480. inv.setItem(pvemenu2, 16, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 100 Silberfische"));
  481. inv.setItem(pvemenu2, 17, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 1000 Silberfische"));
  482. inv.setItem(pvemenu2, 18, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 25 Creeper"));
  483. inv.setItem(pvemenu2, 19, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 50 Creeper"));
  484. inv.setItem(pvemenu2, 20, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 100 Creeper"));
  485. inv.setItem(pvemenu2, 21, read.item("WRITABLE_BOOK", 1, 0, "§rTöte 1000 Creeper"));
  486. inv.setItem(pvemenu2, 26, read.item("WOODEN_DOOR", 1, 0, "§rZurück"));
  487. inv.newdynamic(pvemenu3, "222222222222222222222222222222222222", "§rBlöcke und Landwirtschaft");
  488. pvemenu3invid = inv.getID(pvemenu3);
  489. inv.setItem(pvemenu3, 0, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 100 Obsidian"));
  490. inv.setItem(pvemenu3, 1, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 500 Obsidian"));
  491. inv.setItem(pvemenu3, 2, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 1000 Obsidian"));
  492. inv.setItem(pvemenu3, 3, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 10000 Obsidian"));
  493. inv.setItem(pvemenu3, 5, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 100 Weizen"));
  494. inv.setItem(pvemenu3, 6, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 500 Weizen"));
  495. inv.setItem(pvemenu3, 7, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 1000 Weizen"));
  496. inv.setItem(pvemenu3, 8, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 10000 Weizen"));
  497. inv.setItem(pvemenu3, 9, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 100 Karotten"));
  498. inv.setItem(pvemenu3, 10, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 500 Karotten"));
  499. inv.setItem(pvemenu3, 11, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 1000 Karotten"));
  500. inv.setItem(pvemenu3, 12, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 10000 Karotten"));
  501. inv.setItem(pvemenu3, 14, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 100 Kartoffeln"));
  502. inv.setItem(pvemenu3, 15, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 500 Kartoffeln"));
  503. inv.setItem(pvemenu3, 16, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 1000 Kartoffeln"));
  504. inv.setItem(pvemenu3, 17, read.item("WRITABLE_BOOK", 1, 0, "§rSammle 10000 Kartoffeln"));
  505. inv.setItem(pvemenu3, 35, read.item("WOODEN_DOOR", 1, 0, "§rZurück"));
  506. inv.newdynamic(bankmenu, "222222222", "§rBank");
  507. bankinvid = inv.getID(bankmenu);
  508. inv.setItem(bankmenu, 0, read.item("{id:'km:coin_gold',Count:1b,tag:{display:{Name:'§r1 Gold einzahlen'}},Damage:0s}"));
  509. inv.setItem(bankmenu, 1, read.item("{id:'km:coin_gold',Count:1b,tag:{display:{Name:'§r10 Gold einzahlen'}},Damage:0s}"));
  510. inv.setItem(bankmenu, 2, read.item("{id:'km:coin_gold',Count:1b,tag:{display:{Name:'§r100 Gold einzahlen'}},Damage:0s}"));
  511. inv.setItem(bankmenu, 3, read.item("{id:'km:coin_gold',Count:1b,tag:{display:{Name:'§r1000 Gold einzahlen'}},Damage:0s}"));
  512. inv.setItem(bankmenu, 5, read.item("{id:'km:coin_silver',Count:1b,tag:{display:{Name:'§r1 Gold abheben'}},Damage:0s}"));
  513. inv.setItem(bankmenu, 6, read.item("{id:'km:coin_silver',Count:1b,tag:{display:{Name:'§r10 Gold abheben'}},Damage:0s}"));
  514. inv.setItem(bankmenu, 7, read.item("{id:'km:coin_silver',Count:1b,tag:{display:{Name:'§r100 Gold abheben'}},Damage:0s}"));
  515. inv.setItem(bankmenu, 8, read.item("{id:'km:coin_silver',Count:1b,tag:{display:{Name:'§r1000 Gold abheben'}},Damage:0s}"));
  516. list.new(rewardlist1); //Diamanten
  517. list.add(rewardlist1, read.item("DIAMOND"));
  518. list.add(rewardlist1, read.item("DIAMOND", 2));
  519. list.add(rewardlist1, read.item("DIAMOND", 3));
  520. list.add(rewardlist1, read.item("DIAMOND", 4));
  521. list.add(rewardlist1, read.item("DIAMOND", 5));
  522. list.add(rewardlist1, read.item("DIAMOND", 6));
  523. list.add(rewardlist1, read.item("DIAMOND", 7));
  524. list.add(rewardlist1, read.item("DIAMOND_BLOCK"));
  525. list.new(rewardlist2); //Gold
  526. list.addAll(rewardlist2, 20, 50, 125, 175, 250, 300, 350, 500);
  527. list.new(rewardlist3); //KlassenXP
  528. list.addAll(rewardlist3, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000);
  529. list.new(rewardlist4); //Seelenpunkt
  530. list.add(rewardlist4, 1);
  531. list.new(rewardlist5); //Villager-Spawnei
  532. list.add(rewardlist5, read.item("{id:'minecraft:spawn_egg',Count:1b,tag:{EntityTag:{id:'minecraft:villager'}},Damage:0s}"));
  533. list.new(allrewards);
  534. list.addAll(allrewards, rewardlist1, rewardlist2, rewardlist3, rewardlist4, rewardlist5);
  535. map.new(rewardstext);
  536. map.add(rewardstext, rewardlist1, "Diamanten");
  537. map.add(rewardstext, rewardlist2, "Gold");
  538. map.add(rewardstext, rewardlist3, "KlassenXP");
  539. map.add(rewardstext, rewardlist4, "Seelenpunkt");
  540. map.add(rewardstext, rewardlist5, "Villager-Spawnei");
  541. map.new(monthlist);
  542. map.add(monthlist, 1, "Januar");
  543. map.add(monthlist, 2, "Februar");
  544. map.add(monthlist, 3, "März");
  545. map.add(monthlist, 4, "April");
  546. map.add(monthlist, 5, "Mai");
  547. map.add(monthlist, 6, "Juni");
  548. map.add(monthlist, 7, "Juli");
  549. map.add(monthlist, 8, "August");
  550. map.add(monthlist, 9, "September");
  551. map.add(monthlist, 10, "Oktober");
  552. map.add(monthlist, 11, "November");
  553. map.add(monthlist, 12, "Dezember");
  554. map.new(monthdays);
  555. map.add(monthdays, 1, 31);
  556. map.add(monthdays, 2, 28);
  557. map.add(monthdays, 3, 31);
  558. map.add(monthdays, 4, 30);
  559. map.add(monthdays, 5, 31);
  560. map.add(monthdays, 6, 30);
  561. map.add(monthdays, 7, 31);
  562. map.add(monthdays, 8, 31);
  563. map.add(monthdays, 9, 30);
  564. map.add(monthdays, 10, 31);
  565. map.add(monthdays, 11, 30);
  566. map.add(monthdays, 12, 31);
  567. gosub("initdreward");
  568. gosub("setreward");
  569. players.toWorldList(world, gpvpworld);
  570. for(i = 0; i <= list.getSize(world) - 1; i++) {
  571. player = list.getIndex(world, i);
  572. //Spieler noch nicht initialisiert (Neuer Spieler, der in die Welt geht, bevor Gildenpvp-Script gestartet ist)
  573. if(ggv(player, "gpvpjoined") == null) {
  574. sgv(player, "gpvpjoined", true);
  575. sgv(player, "gcoinsatm", 0);
  576. sgv(player, "gcoinsbank", 0);
  577. gmap.add("gpvpplayers", player.getUuid(player), "wusi");
  578. }
  579. display.reset(player);
  580. displaygold(player, ggv(player, "gcoinsatm"));
  581. displayhealth(player, math.roundDown(entity.getHealth(player)));
  582. displaymana(player);
  583. jobid = getgpvpjob(player);
  584. if(jobid != null) {
  585. level = job.getLevel(player, jobid);
  586. display.add(player, 44, "#26-1- ", text.number(job.getXp(player, jobid)), "/", text.number(list.getIndex(xplist, level - 1)));
  587. display.add(player, 41, "Stufe §a", text.number(level));
  588. }
  589. gid = player.getGuild(player);
  590. if(gid > 0) {
  591. list = map.get(onlinelists, gid);
  592. list.add(list, player);
  593. }
  594. }
  595. @wait
  596. wait();
  597. if(event == "entity_death") { //Dieser Event muss bereits vorher überprüft werden, da nicht immer PlayerVars gesetzt werden.
  598. if(player_involved) {
  599. if(loc.getCoord(entity.getLocation(player), "w") == "gpvpnew") {
  600. entity_type = text.class(entity);
  601. prexp = map.get(xpforentities, entity_type);
  602. if(prexp == null) {
  603. goto("wait");
  604. }
  605. xp = math.random(prexp * 0.7, prexp * 1.3);
  606. gold = math.random(0.1, 1.4);
  607. p = player;
  608. gid = player.getGuild(p);
  609. if(gmap.get("gtype", gid) != null) {
  610. if(gmap.get("gsharexp", gid)) {
  611. gosub("addsharedxp");
  612. }
  613. if(gmap.get("gsharegold", gid)) {
  614. gosub("addsharedgold");
  615. }
  616. goto("wait");
  617. }
  618. sendmsg = true;
  619. gosub("addxp");
  620. goldnew = ggv(p, "gcoinsatm") + gold;
  621. sgv(p, "gcoinsatm", goldnew);
  622. displaygold(p, goldnew);
  623. }
  624. }
  625. goto("wait");
  626. }
  627. if(event == "player_move") { //Andere Welt
  628. if(id == moveidfromworldspawn) {
  629. entity.teleport(player, spawnislandtoloc);
  630. }
  631. elseif(id == moveidfromspawnisland) {
  632. entity.teleport(player, gildenspawnloc);
  633. gildenid = map.get(gmoveids, id);
  634. if(gildenid != null) {
  635. gname = gmap.get("gildennamen", gildenid);
  636. display.add(player, 39, "§6", gname);
  637. list.add(movelist, player_name);
  638. sgoto(160, "checkifwildnis");
  639. }
  640. goto("player_login");
  641. }
  642. elseif(id == moveidspawn) {
  643. display.add(player, 39, "§6Spawn");
  644. list.add(movelist, player_name);
  645. sgoto(160, "checkifwildnis");
  646. goto("wait");
  647. }
  648. elseif(id == moveidtopvpsued) {
  649. entity.teleport(player, pvpsuedtotploc);
  650. goto("wait");
  651. }
  652. elseif(id == moveidfrompvpsued) {
  653. entity.teleport(player, pvpsuedfromtploc);
  654. goto("wait");
  655. }
  656. elseif(id == moveidmagier) {
  657. entity.teleport(player, magierturmtploc);
  658. goto("wait");
  659. }
  660. gildenid = map.get(gmoveids, id);
  661. if(gildenid != null) {
  662. gname = gmap.get("gildennamen", gildenid);
  663. display.add(player, 39, "§6", gname);
  664. list.add(movelist, player_name);
  665. sgoto(160, "checkifwildnis");
  666. }
  667. goto("wait");
  668. }
  669. if(event == "portal") { //Die Var 'from' würde weiter nicht mehr verarbeitet werden (weil außerhalb der Gpvpwelt)
  670. if(from == "gpvpnew") {
  671. if(ggv("SERVER", "arteyetloc") == player.getUuid(player)) {
  672. gosub("arteresetcore");
  673. }
  674. id = player.getGuild(player);
  675. if(id > 0) {
  676. list = map.get(onlinelists, id);
  677. list.remove(list, player);
  678. }
  679. display.reset(player);
  680. goto("wait");
  681. }
  682. if(to == "gpvpnew") {
  683. goto("player_login");
  684. }
  685. goto("wait");
  686. }
  687. player_loc = entity.getLocation(player);
  688. if(loc.getCoord(player_loc, "w") != "gpvpnew") {
  689. goto("wait");
  690. }
  691. ignoreGoto(event);
  692. goto("wait");
  693. @player_pre_respawn
  694. player.setSpawn(player, gildenspawnloc);
  695. displayhealth(player, 20);
  696. goto("wait");
  697. @checkifwildnis
  698. pname = list.getIndex(movelist, 0);
  699. list.removeIndex(movelist, 0);
  700. p = read.player(pname);
  701. if(p == null) {
  702. goto("wait");
  703. }
  704. player_loc = entity.getLocation(p);
  705. if(loc.getCoord(player_loc, "w") == "gpvpnew") {
  706. plotid = getplotid(player_loc);
  707. if(plotid == null) {
  708. display.add(player, 39, "§6Wildnis");
  709. }
  710. }
  711. goto("wait");
  712. @bucket_fill
  713. //Überprüfung, ob während eines Gildenkampfes Eimer am Kampfgrundstück benutzt werden. Cancelt Events beider Gilden
  714. if(map.contains(gfights, plotid)) {
  715. player.speak(player, fehlerpräfix, "§rGildenkampf im Gange. Eimer nicht benutzbar");
  716. cancel = true;
  717. }
  718. goto("wait");
  719. @entity_click
  720. entity_name = entity.getName(entity);
  721. if(entity_name == "Tutorial") {
  722. msg(player, "§rHallo, ich werde vllt ein Tutorial sein");
  723. goto("wait");
  724. }
  725. if(entity_name == "PvE") {
  726. inv.open(pvequests, player);
  727. goto("wait");
  728. }
  729. if(list.contains(classvillagers, entity_name)) {
  730. map.add(gclassvi, player.getUuid(player), entity_name);
  731. inv = map.get(classinvs, entity_name);
  732. inv.open(inv, player);
  733. goto("wait");
  734. }
  735. if(entity_name == bankvillagername) {
  736. inv.open(bankmenu, player);
  737. goto("wait");
  738. }
  739. if(entity_name == gildenvillagername) {
  740. if(isinguild(player_name)) {
  741. player.speak(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  742. goto("wait");
  743. }
  744. if(getplotid(player_loc) != spawnplotid) {
  745. player.speak(player, fehlerpräfix, "§rDu bist nicht am Gildenpvp-Spawn");
  746. goto("wait");
  747. }
  748. if(ggv(player, "gcoinsatm") == null) {
  749. sgv(player, "gcoinsatm", 0);
  750. displaygold(player, 0);
  751. }
  752. if(ggv(player, "gcoinsatm") < buypricegblock) {
  753. player.speak(player, fehlerpräfix, "§rDu besitzt nicht genug Gold um eine Gilde zu gründen");
  754. } else {
  755. player.speak(player, gildepräfix, "§rGib deinen gewünschten Gildennamen folgendermaßen ein: /gilde create <name>");
  756. list.add(gcreaterlist, player.getUuid(player));
  757. sgoto(6000, "removegcreater"); //Der Spieler hat 5 Minuten Zeit, eine Gilde per Befehl zu gründen
  758. }
  759. }
  760. goto("wait");
  761. @block_place
  762. plotid = getplotid(block_loc);
  763. //Wertvoller Blöcke/Erze dürfen nicht gesetzt werden
  764. if(set.contains(richblocks, block_type)) {
  765. cancel = true;
  766. player.speak(player, fehlerpräfix, "§rWertvoller Blöcke/Erze dürfen nicht gesetzt werden");
  767. goto("wait");
  768. }
  769. if(block_type == "km:artefact") {
  770. cancel = true;
  771. player.speak(player, fehlerpräfix, "§rBenutze /placearte, sofern du der Artefaktträger bist");
  772. goto("wait");
  773. }
  774. if(block_type == "km:guild_block") {
  775. if(isinguild(player_name)) {
  776. player.speak(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  777. cancel = true;
  778. goto("wait");
  779. }
  780. if(isingroup(player_name)) {
  781. player.speak(player, fehlerpräfix, "§rDu bist in einer Gruppe");
  782. cancel = true;
  783. goto("wait");
  784. }
  785. item.getLore(lorelist, entity.getEquip(player, "hand"));
  786. if(list.getSize(lorelist) == 0) {
  787. player.speak(player, fehlerpräfix, "§rDieser Gildenblock wurde nicht vom Gildenvillager ausgehändigt");
  788. cancel = true;
  789. goto("wait");
  790. }
  791. text.split(splitlist, " ", list.getIndex(lorelist, 0));
  792. if(list.getSize(splitlist) != 2) {
  793. player.speak(player, fehlerpräfix, "§rDieser Gildenblock wurde nicht vom Gildenvillager ausgehändigt");
  794. cancel = true;
  795. goto("wait");
  796. }
  797. elseif(list.getIndex(splitlist, 0) == "ID:") {
  798. gildenid = list.getIndex(splitlist, 1);
  799. } else {
  800. player.speak(player, fehlerpräfix, "§rDieser Gildenblock wurde nicht vom Gildenvillager ausgehändigt");
  801. cancel = true;
  802. goto("wait");
  803. }
  804. if(plotid != null) {
  805. player.speak(player, fehlerpräfix, "§rAuf dieser Position befindet sich bereits ein Grundstück.");
  806. cancel = true;
  807. goto("wait");
  808. }
  809. if(!block.isSolid(loc.mod(block_loc, 0, -1, 0))) {
  810. player.speak(player, fehlerpräfix, "§rDer Block unter dem Gildenblock muss ein solider Block sein");
  811. cancel = true;
  812. goto("wait");
  813. }
  814. btype = block.getType(loc.mod(block_loc, 0, -1, 0));
  815. if(btype == "minecraft:leaves" || btype == "minecraft:leaves2") {
  816. player.speak(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein Laub sein");
  817. cancel = true;
  818. goto("wait");
  819. }
  820. if(set.contains(richblocks, btype)) {
  821. player.speak(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein wertvoller Block sein");
  822. cancel = true;
  823. goto("wait");
  824. }
  825. if(loc.getCoord(block_loc, "y") < 35 || loc.getCoord(block_loc, "y") > 150) {
  826. player.speak(player, fehlerpräfix, "§rDer Gildenblock muss zwischen 35 bis 150 Blöcke Höhe platziert werden");
  827. cancel = true;
  828. goto("wait");
  829. }
  830. gmap.toTable(gildenblocktable, "gildenblock");
  831. for(i = 0; i <= table.getSize(gildenblocktable) - 1; i++) {
  832. distance = loc.distance(read.location(table.get(gildenblocktable, i, 1)), block_loc);
  833. if(distance < 1100) {
  834. player.speak(player, fehlerpräfix, "§rGildenblöcke müssen mindestens 1100 Blöcke voneinander entfernt sein (Aktuell: ", text.number(math.roundUp(distance)), ")");
  835. cancel = true;
  836. goto("wait");
  837. }
  838. }
  839. for(y = 0; y <= 7; y++) {
  840. for(z = -5; z <= 5; z++) {
  841. for(x = -5; x <= 5; x++) {
  842. moddedloc = loc.mod(block_loc, x, y, z);
  843. if(block.getType(moddedloc) != "minecraft:air") {
  844. if(block_loc != moddedloc) {
  845. player.speak(player, fehlerpräfix, "§rIm Bereich von 5 Blöcken seitlich und 7 Blöcken nach oben dürfen sich keine anderen Blöcke befinden");
  846. cancel = true;
  847. goto("wait");
  848. }
  849. }
  850. }
  851. }
  852. }
  853. x = loc.getX(block_loc);
  854. x1 = x - 150;
  855. x2 = x + 150;
  856. z = loc.getZ(block_loc);
  857. z1 = z -150;
  858. z2 = z + 150;
  859. gsedge1 = read.location(concat("gpvpnew:", x1, ":0:", z1));
  860. gsedge2 = read.location(concat("gpvpnew:", x2, ":255:", z2));
  861. if(plot.doesIntersect(gsedge1, gsedge2)) {
  862. player.speak(player, fehlerpräfix, "§rIm Gebiet herrscht bereits eine andere Gilde");
  863. cancel = true;
  864. goto("wait");
  865. }
  866. moveid = event.addMoveData(gsedge1, gsedge2, 100, -1);
  867. map.add(gmoveids, moveid, gildenid);
  868. map.add(gmoveids2, gildenid, moveid);
  869. plot.add(gsedge1, gsedge2, player_name);
  870. player.speak("online", gildepräfix, concat("§rDie Gilde §6", item.getName(entity.getEquip(player, "hand")), "§r wurde von §6", player_name, "§r gegründet"));
  871. player.setGuild(player, gildenid);
  872. gmap.add("membersmax", gildenid, 15);
  873. gmap.add("gmembersatm", gildenid, 1);
  874. gmap.add("adelmax", gildenid, 1);
  875. gmap.add("adelatm", gildenid, 0);
  876. gdmap.add("gmembers", gildenid, player.getUuid(player), "Leiter");
  877. gmap.add("gildenblock", gildenid, text.location(block_loc));
  878. plotid = getplotid(entity.getLocation(player));
  879. gmap.add("gildenplot", gildenid, plotid);
  880. gmap.add("gildenplot2", plotid, gildenid);
  881. gmap.add("gildencoins", gildenid, 0);
  882. gmap.add("gsharegold", gildenid, true);
  883. gmap.add("gsharexp", gildenid, true);
  884. gmap.add("gildentime", gildenid, time.getMillis() + 259200000);
  885. gmap.add("gtype", gildenid, "guild");
  886. plotid = getplotid(block_loc);
  887. itemname = item.getName(entity.getEquip(player, "hand"));
  888. command("plot name ", plotid, " ", itemname);
  889. player.removeItem(player, entity.getEquip(player, "hand"));
  890. set.add(forbiddenblocks, loc.mod(block_loc, 0, -1, 0));
  891. for(y = 0; y <= 7; y++) {
  892. for(z = -5; z <= 5; z++) {
  893. for(x = -5; x <= 5; x++) {
  894. set.add(forbiddenblocks2, loc.mod(block_loc, x, y, z));
  895. }
  896. }
  897. }
  898. goto("wait");
  899. }
  900. if(checkforenimies(player, player_name)) {
  901. //player.speak(player, fehlerpräfix, "§rGegner in der Nähe");
  902. //cancel = true; Auskommentiert: Um Bauarbeiten zu ermöglichen, während andere Spieler in der Nähe sind
  903. goto("wait");
  904. }
  905. //Darunterliegende Checks benötigen ein Plot
  906. if(plotid == null) {
  907. goto("wait");
  908. }
  909. //Überprüfung, ob während eines Gildenkampfes Blöcke am Kampfgrundstück platziert werden. Cancelt places beider Gilden
  910. if(map.contains(gfights, plotid)) {
  911. player.speak(player, fehlerpräfix, "§rGildenkampf im Gange. Blöcke nicht platzierbar");
  912. cancel = true;
  913. goto("wait");
  914. }
  915. //Überprüfung, ob der Bereich 11x11x7 um den Gildenblock herum bebaut wird
  916. if(set.contains(forbiddenblocks2, block_loc)) {
  917. player.speak(player, fehlerpräfix, "§rHier kannst du nicht bauen");
  918. cancel = true;
  919. }
  920. goto("wait");
  921. @block_break
  922. plotid = getplotid(block_loc);
  923. //Am Spawn wird nicht durch Code reingepfuscht, es gelten die normalen Baugegebenheiten
  924. if(plotid == spawnplotid) {
  925. goto("wait");
  926. }
  927. //Wertvolle Blöcke/Erze können trotz Plot-Protection von fremden GS (außer am Spawn) abgebaut werden
  928. if(set.contains(richblocks, block_type)) {
  929. cancel = false; //Aktiv erlauben
  930. }
  931. //XP-Vergabe für das Abbauen von Blöcken
  932. p = player;
  933. xp = map.getOrDefault(xpforblocks, block_type, 1);
  934. sendmsg = false;
  935. gosub("addxp");
  936. //Überprüfung, ob ein Gildenblock/Artefakt abgebaut wird
  937. if(block_type == "km:guild_block" || block_type == "km:artefact") {
  938. player.speak(player, fehlerpräfix, "Artefakt und Gildenblock lassen sich nicht einfach so abbauen");
  939. cancel = true;
  940. goto("wait");
  941. }
  942. //Überprüfung, ob ein Block unter einem der Gildenblöcke/dem Artefakt abgebaut wird
  943. if(set.contains(forbiddenblocks, block_loc)) {
  944. player.speak(player, fehlerpräfix, "§rBlock unter Artefakt/Gildenblock darf nicht abgebaut werden");
  945. cancel = true;
  946. goto("wait");
  947. }
  948. //Absicherung, damit Teamler während eines Kampfes auch am fremden GS nichts abbauen können
  949. if(plotid != null) {
  950. if(map.contains(gfights, plotid)) {
  951. if(map.contains(gattackers, player.getGuild(player))) {
  952. player.speak(player, fehlerpräfix, "§rGildenkampf im Gange. Blöcke nicht abbaubar");
  953. cancel = true;
  954. }
  955. }
  956. }
  957. goto("wait");
  958. @player_login
  959. //auch die Events portal mit var 'to' und player_move leiten hier her
  960. player_loc = entity.getLocation(player);
  961. if(ggv(player, "gpvpjoined") == null) {
  962. sgv(player, "gpvpjoined", true);
  963. sgv(player, "gcoinsatm", 0);
  964. sgv(player, "gcoinsbank", 0);
  965. gmap.add("gpvpplayers", player.getUuid(player), "wusi");
  966. }
  967. displaygold(player, ggv(player, "gcoinsatm"));
  968. displayhealth(player, math.roundDown(entity.getHealth(player)));
  969. displaymana(player);
  970. jobid = getgpvpjob(player);
  971. if(jobid != null) {
  972. level = job.getLevel(player, jobid);
  973. display.add(player, 44, "#26-1- ", text.number(job.getXp(player, jobid)), "/", text.number(list.getIndex(xplist, level - 1)));
  974. display.add(player, 41, "Stufe §a", text.number(level));
  975. }
  976. id = player.getGuild(player);
  977. if(id > 0) {
  978. list = map.get(onlinelists, id);
  979. list.add(list, player);
  980. }
  981. goto("wait");
  982. @player_logout
  983. id = player.getGuild(player);
  984. if(id > 0) {
  985. list = map.get(onlinelists, id);
  986. list.remove(list, player);
  987. }
  988. //Alle Gildeneinladungen löschen
  989. puuid = player.getUuid(player);
  990. gdmap.removeAll("gildeninvite", puuid);
  991. //Falls Spieler Arte-Träger ist, Arte resetten
  992. if(ggv("SERVER", "arteyetloc") == puuid) {
  993. gosub("arteresetcore");
  994. }
  995. goto("wait");
  996. @player_heal
  997. newhp = entity.getHealth(player) + math.roundComma(heal, 3);
  998. if(newhp > 20) {
  999. displayhealth(player, 20);
  1000. } else {
  1001. displayhealth(player, math.roundDown(newhp));
  1002. }
  1003. goto("wait");
  1004. @player_hurt
  1005. newhp = entity.getHealth(player) - player_damage;
  1006. displayhealth(player, math.roundDown(newhp));
  1007. loc = entity.getLocation(player);
  1008. if(player_killed) {
  1009. player.dropInventory(player, loc);
  1010. }
  1011. if(player_involved) {
  1012. pinvolved = true;
  1013. secp = sec_player;
  1014. gildenid = player.getGuild(secp);
  1015. owngildenid = player.getGuild(player);
  1016. if(gildenid > 0) {
  1017. if(gildenid == owngildenid) { //Schaden innerhalb der Gilde/Gruppe wird gecancelt
  1018. cancel = true;
  1019. goto("wait");
  1020. }
  1021. }
  1022. plotid = getplotid(loc);
  1023. //Ein Spieler außerhalb des Gildenkampfs kann Spielern im Gildenkampf keinen Schaden hinzufügen, vorausgesetzt die Spieler der sich bekämpfenden Gilden befinden sich am GS der angegriffenen Gilde
  1024. set = map.get(gfights, plotid);
  1025. if(plotid != null) {
  1026. if(set.contains(set, player) && !set.contains(set, sec_player)) {
  1027. cancel = true;
  1028. goto("wait");
  1029. }
  1030. }
  1031. //todo: fiktionalen schaden austeilen
  1032. if(getgpvpjob(player) != null) {
  1033. //addxp(secp, player_damage / 3);
  1034. //xp = fiktionalen schaden durch 3
  1035. nothing();
  1036. }
  1037. }
  1038. goto("wait");
  1039. @function_key
  1040. id = getgpvpjob(player);
  1041. if(id == null) {
  1042. player.speak(player, fehlerpräfix, "§rDu besitzt keine Klasse");
  1043. goto("wait");
  1044. }
  1045. plotid = getplotid(entity.getLocation(player));
  1046. if(plotid != spawnplotid) {
  1047. tempid = ggv(player, concat(id, "gpvphotkey", key));
  1048. if(tempid != null) {
  1049. tempskill = skill.fromID(tempid, player);
  1050. skill.use(tempskill, player);
  1051. skillspeak(player, player_name, tempskill);
  1052. }
  1053. }
  1054. goto("wait");
  1055. @inv_close
  1056. if(inv_name == "Slots") {
  1057. player.speak(player, "§2Skills", "§rVeränderungen wurden gespeichert");
  1058. }
  1059. goto("wait");
  1060. @player_pickup
  1061. item_type = item.getType(item);
  1062. if(item_type == "minecraft:gold_nugget") {
  1063. if(item.getName(item) == "Golddrop") {
  1064. cancel = true;
  1065. entity.remove(entity);
  1066. }
  1067. }
  1068. elseif(item_type == "minecraft:gold_ingot") {
  1069. if(item.getName(item) == "Golddrop") {
  1070. cancel = true;
  1071. entity.remove(entity);
  1072. item.getLore(lorelist, item);
  1073. gold = read.number(list.getIndex(lorelist, 0));
  1074. sgv(player, "gcoinsatm", ggv(player, "gcoinsatm") + gold);
  1075. displaygold(player, ggv(player, "gcoinsatm"));
  1076. }
  1077. }
  1078. goto("wait");
  1079. @player_death
  1080. //artereset
  1081. if(ggv("SERVER", "arteyetloc") == player.getUuid(player)) {
  1082. gosub("arteresetcore");
  1083. }
  1084. //gold und items droppen
  1085. gold = ggv(player, "gcoinsatm");
  1086. sgv(player, "gcoinsatm", 0);
  1087. displaygold(player, 0);
  1088. loc = entity.getLocation(player);
  1089. item.drop(loc, read.item("minecraft:gold_ingot", 1, 0, "Golddrop", gold));
  1090. item.drop(loc, read.item("minecraft:gold_nugget", 1, 0, "Golddrop", 0));
  1091. item.drop(loc, read.item("minecraft:gold_nugget", 1, 0, "Golddrop", 0));
  1092. if(getgpvpjob(player) != null) {
  1093. if(pinvolved) {
  1094. p = secp;
  1095. xp = 400;
  1096. sendmsg = true;
  1097. gosub("addxp");
  1098. goto("wait");
  1099. }
  1100. }
  1101. goto("wait");
  1102. @fishing
  1103. if(getgpvpjob(player) != null) {
  1104. p = player;
  1105. xp = 150;
  1106. sendmsg = true;
  1107. gosub("addxp");
  1108. goto("wait");
  1109. }
  1110. goto("wait");
  1111. @checkartereset
  1112. if(ggv("SERVER", "artedaycounter") == 3) {
  1113. if(block.getType(artefaktfixloc) != "km:artefact") {
  1114. sendworldmessage("§9Info", concat("§rDas Artefakt kehrt bald in die Ruine zurück"));
  1115. sgoto(1800, "artereset");
  1116. }
  1117. } else {
  1118. sgv("SERVER", "artedaycounter", add(ggv("SERVER", "artedaycounter"), 1));
  1119. sgoto(86400000, "checkartereset");
  1120. }
  1121. goto("wait");
  1122. @artereset //nur für 3 tagesreset
  1123. if(block.getType(artefaktfixloc) != "km:artefact") {
  1124. sgv("SERVER", "artedaycounter", 0);
  1125. block.set(artefaktyetloc, airitem);
  1126. gosub("arteresetcore");
  1127. }
  1128. goto("wait");
  1129. @arteresetcore
  1130. block.set(artefaktfixloc, artefaktitem);
  1131. sendworldmessage("§9Info", "§rDas Artefakt ist in die Ruine zurückgekehrt");
  1132. sgv("SERVER", "arteyetloc", text.location(artefaktfixloc));
  1133. set.remove(forbiddenblocks, artefaktyetloc);
  1134. artefaktyetloc = artefaktfixloc;
  1135. set.add(forbiddenblocks, artefaktyetloc);
  1136. sgv("SERVER", "artehitpoints", 250);
  1137. return();
  1138. @witherloop
  1139. players.toWorldList(world, gpvpworld);
  1140. for(i = 0; i <= list.getSize(world) - 1; i++) {
  1141. p = list.getIndex(world, i);
  1142. pname = player.getName(p);
  1143. gildenid = player.getGuild(p);
  1144. plotid = getplotid(entity.getLocation(p));
  1145. if(plotid != null) { //Überprüfung, ob überhaupt auf GS
  1146. //auf einem GS
  1147. if(plotid != spawnplotid) { //Überprüfung, ob auf GildenGS
  1148. //Nicht am SpawnGS
  1149. if(map.contains(gfights, plotid)) { //Überprüfung, ob Spieler auf GS, auf dem gekämpft wird
  1150. //Auf GS wird gekämpft
  1151. if(!set.contains(map.get(gfights, plotid), pname)) { //Überprüfung, ob Spieler zu den kämpfenden Spielern des GS gehört
  1152. //Spieler gehört nicht zu kämpfenden Spielern (kann auch Spieler der eigenen Gilde sein)
  1153. entity.teleport(p, gildenspawnloc);
  1154. player.speak(p, gildepräfix, "§rAuf diesem Grundstück wird gerade gekämpft");
  1155. }
  1156. }
  1157. elseif(plotid != gmap.get("gildenplot", gildenid)) { //Überprüfung, ob auf eigenem GS
  1158. //Nicht auf eigenem GS
  1159. puuid = player.getUuid(pname);
  1160. if(!set.contains(warned, puuid)) { //Überprüfung, ob Spieler bereits gewarnt
  1161. title.clear(p);
  1162. title.reset(p);
  1163. title.setSub(p, "§rFremdes Grundstück");
  1164. title.send(p, "§cAchtung");
  1165. table.addRow(onothergs, puuid, plotid);
  1166. set.add(warned, puuid);
  1167. sgoto(600, "checkifaway");
  1168. }
  1169. }
  1170. }
  1171. }
  1172. }
  1173. sgoto(200, "witherloop");
  1174. goto("wait");
  1175. @checkifaway
  1176. puuid = table.get(onothergs, 0, 0);
  1177. pname = player.getName(puuid);
  1178. id = table.get(onothergs, 0, 1);
  1179. table.removeRow(onothergs, 0);
  1180. set.remove(warned, puuid);
  1181. p = read.player(pname);
  1182. if(p == null) {
  1183. goto("wait");
  1184. }
  1185. plotid = getplotid(entity.getLocation(p));
  1186. if(plotid == id) { //Überprüfung, ob sich Spieler noch immer auf fremdem GS befindet
  1187. entity.addEffect(p, "WITHER", 200, 3);
  1188. }
  1189. goto("wait");
  1190. @inv_click
  1191. cancel = true;
  1192. if(item.getType(item) == "minecraft:air") {
  1193. goto("wait");
  1194. }
  1195. //if(inv_id >= jägerinvid && inv_id <= mönchinvid) { Wenn alle Klassen eingeführt
  1196. if(inv_id >= jägerinvid && inv_id <= kriegerinvid) {
  1197. if(inv_slot == 0) {
  1198. inv.close(player);
  1199. entity_name = map.get(gclassvi, player.getUuid(player));
  1200. jobid = getgpvpjob(player);
  1201. if(jobid != null) {
  1202. if(job.hasJob(player, map.get(classids, entity_name))) {
  1203. player.speak(player, fehlerpräfix, "§rDu besitzt diese Klasse bereits");
  1204. goto("wait");
  1205. }
  1206. job.setJob(player, jobid, false);
  1207. }
  1208. job.setJob(player, map.get(classids, entity_name), true);
  1209. player.speak(player, "§2Klasse", "§rDu bist nun ", entity_name);
  1210. goto("wait");
  1211. }
  1212. if(inv_slot == 1) {
  1213. inv.close(player);
  1214. goto("wait");
  1215. }
  1216. }
  1217. if(inv_id == pvequestsinvid) {
  1218. if(inv_slot == 0) {
  1219. inv.open(pvemenu1, player);
  1220. }
  1221. if(inv_slot == 1) {
  1222. inv.open(pvemenu2, player);
  1223. }
  1224. if(inv_slot == 2) {
  1225. inv.open(pvemenu3, player);
  1226. }
  1227. goto("wait");
  1228. }
  1229. if(inv_id == pvemenu1invid) {
  1230. if(inv_slot == 35) {
  1231. inv.open(pvequests, player);
  1232. goto("wait");
  1233. }
  1234. if(player.hasQuest(player)) {
  1235. player.speak(player, "§dQuests", "§rDu arbeitest gerade an einer Quest");
  1236. goto("wait");
  1237. }
  1238. if(inv_slot < 4) {
  1239. sgv(player, "gpvpquest_type", "EntityCow");
  1240. sgv(player, "gpvpquest_wort", "Kühe");
  1241. if(inv_slot == 0) {
  1242. sgv(player, "gpvpquest_amount", 10);
  1243. }
  1244. elseif(inv_slot == 1) {
  1245. sgv(player, "gpvpquest_amount", 25);
  1246. }
  1247. elseif(inv_slot == 2) {
  1248. sgv(player, "gpvpquest_amount", 50);
  1249. }
  1250. elseif(inv_slot == 3) {
  1251. sgv(player, "gpvpquest_amount", 250);
  1252. }
  1253. goto("givemobquest");
  1254. }
  1255. if(inv_slot < 9) {
  1256. sgv(player, "gpvpquest_type", "EntitySheep");
  1257. sgv(player, "gpvpquest_wort", "Schafe");
  1258. if(inv_slot == 5) {
  1259. sgv(player, "gpvpquest_amount", 10);
  1260. }
  1261. elseif(inv_slot == 6) {
  1262. sgv(player, "gpvpquest_amount", 25);
  1263. }
  1264. elseif(inv_slot == 7) {
  1265. sgv(player, "gpvpquest_amount", 50);
  1266. }
  1267. elseif(inv_slot == 8) {
  1268. sgv(player, "gpvpquest_amount", 250);
  1269. }
  1270. goto("givemobquest");
  1271. }
  1272. if(inv_slot < 13) {
  1273. sgv(player, "gpvpquest_type", "EntityPig");
  1274. sgv(player, "gpvpquest_wort", "Schweine");
  1275. if(inv_slot == 9) {
  1276. sgv(player, "gpvpquest_amount", 10);
  1277. }
  1278. elseif(inv_slot == 10) {
  1279. sgv(player, "gpvpquest_amount", 25);
  1280. }
  1281. elseif(inv_slot == 11) {
  1282. sgv(player, "gpvpquest_amount", 50);
  1283. }
  1284. elseif(inv_slot == 12) {
  1285. sgv(player, "gpvpquest_amount", 250);
  1286. }
  1287. goto("givemobquest");
  1288. }
  1289. if(inv_slot < 18) {
  1290. sgv(player, "gpvpquest_type", "EntityChicken");
  1291. sgv(player, "gpvpquest_wort", "Hühner");
  1292. if(inv_slot == 14) {
  1293. sgv(player, "gpvpquest_amount", 10);
  1294. }
  1295. elseif(inv_slot == 15) {
  1296. sgv(player, "gpvpquest_amount", 25);
  1297. }
  1298. elseif(inv_slot == 16) {
  1299. sgv(player, "gpvpquest_amount", 50);
  1300. }
  1301. elseif(inv_slot == 17) {
  1302. sgv(player, "gpvpquest_amount", 250);
  1303. }
  1304. goto("givemobquest");
  1305. }
  1306. if(inv_slot < 22) {
  1307. sgv(player, "gpvpquest_type", "EntityRabbit");
  1308. sgv(player, "gpvpquest_wort", "Hasen");
  1309. if(inv_slot == 18) {
  1310. sgv(player, "gpvpquest_amount", 10);
  1311. }
  1312. elseif(inv_slot == 19) {
  1313. sgv(player, "gpvpquest_amount", 25);
  1314. }
  1315. elseif(inv_slot == 20) {
  1316. sgv(player, "gpvpquest_amount", 50);
  1317. }
  1318. elseif(inv_slot == 21) {
  1319. sgv(player, "gpvpquest_amount", 250);
  1320. }
  1321. goto("givemobquest");
  1322. }
  1323. if(inv_slot < 27) {
  1324. sgv(player, "gpvpquest_type", "HORSE");
  1325. sgv(player, "gpvpquest_wort", "Pferde");
  1326. if(inv_slot == 23) {
  1327. sgv(player, "gpvpquest_amount", 10);
  1328. }
  1329. elseif(inv_slot == 24) {
  1330. sgv(player, "gpvpquest_amount", 25);
  1331. }
  1332. elseif(inv_slot == 25) {
  1333. sgv(player, "gpvpquest_amount", 50);
  1334. }
  1335. elseif(inv_slot == 26) {
  1336. sgv(player, "gpvpquest_amount", 250);
  1337. }
  1338. goto("givemobquest");
  1339. }
  1340. if(inv_slot < 31) {
  1341. sgv(player, "gpvpquest_type", "EntitySquid");
  1342. sgv(player, "gpvpquest_wort", "Tintenfische");
  1343. if(inv_slot == 27) {
  1344. sgv(player, "gpvpquest_amount", 10);
  1345. }
  1346. elseif(inv_slot == 28) {
  1347. sgv(player, "gpvpquest_amount", 25);
  1348. }
  1349. elseif(inv_slot == 29) {
  1350. sgv(player, "gpvpquest_amount", 50);
  1351. }
  1352. elseif(inv_slot == 30) {
  1353. sgv(player, "gpvpquest_amount", 250);
  1354. }
  1355. goto("givemobquest");
  1356. }
  1357. goto("wait");
  1358. }
  1359. if(inv_id == pvemenu2invid) {
  1360. if(inv_slot == 26) {
  1361. inv.open(pvequests, player);
  1362. goto("wait");
  1363. }
  1364. if(player.hasQuest(player)) {
  1365. player.speak(player, "§dQuests", "§rDu arbeitest gerade an einer Quest");
  1366. goto("wait");
  1367. }
  1368. if(inv_slot < 4) {
  1369. sgv(player, "gpvpquest_type", "EntityZombie");
  1370. sgv(player, "gpvpquest_wort", "Zombies"); //Zombiefleisch
  1371. if(inv_slot == 0) {
  1372. sgv(player, "gpvpquest_amount", 25);
  1373. }
  1374. elseif(inv_slot == 1) {
  1375. sgv(player, "gpvpquest_amount", 50);
  1376. }
  1377. elseif(inv_slot == 2) {
  1378. sgv(player, "gpvpquest_amount", 100);
  1379. }
  1380. elseif(inv_slot == 3) {
  1381. sgv(player, "gpvpquest_amount", 1000);
  1382. }
  1383. goto("givemobquest");
  1384. }
  1385. if(inv_slot < 9) {
  1386. sgv(player, "gpvpquest_type", "EntitySkeleton");
  1387. sgv(player, "gpvpquest_wort", "Skelette"); //Knochen
  1388. if(inv_slot == 5) {
  1389. sgv(player, "gpvpquest_amount", 25);
  1390. }
  1391. elseif(inv_slot == 6) {
  1392. sgv(player, "gpvpquest_amount", 50);
  1393. }
  1394. elseif(inv_slot == 7) {
  1395. sgv(player, "gpvpquest_amount", 100);
  1396. }
  1397. elseif(inv_slot == 8) {
  1398. sgv(player, "gpvpquest_amount", 1000);
  1399. }
  1400. goto("givemobquest");
  1401. }
  1402. if(inv_slot < 13) {
  1403. sgv(player, "gpvpquest_type", "EntitySpider");
  1404. sgv(player, "gpvpquest_wort", "Spinnen"); //Faden
  1405. if(inv_slot == 9) {
  1406. sgv(player, "gpvpquest_amount", 25);
  1407. }
  1408. elseif(inv_slot == 10) {
  1409. sgv(player, "gpvpquest_amount", 50);
  1410. }
  1411. elseif(inv_slot == 11) {
  1412. sgv(player, "gpvpquest_amount", 100);
  1413. }
  1414. elseif(inv_slot == 12) {
  1415. sgv(player, "gpvpquest_amount", 1000);
  1416. }
  1417. goto("givemobquest");
  1418. }
  1419. if(inv_slot < 18) {
  1420. sgv(player, "gpvpquest_type", "EntitySilverfish");
  1421. sgv(player, "gpvpquest_wort", "Silberfische"); //Befallene rissige Steinziegel
  1422. if(inv_slot == 14) {
  1423. sgv(player, "gpvpquest_amount", 25);
  1424. }
  1425. elseif(inv_slot == 15) {
  1426. sgv(player, "gpvpquest_amount", 50);
  1427. }
  1428. elseif(inv_slot == 16) {
  1429. sgv(player, "gpvpquest_amount", 100);
  1430. }
  1431. elseif(inv_slot == 17) {
  1432. sgv(player, "gpvpquest_amount", 1000);
  1433. }
  1434. goto("givemobquest");
  1435. }
  1436. if(inv_slot < 22) {
  1437. sgv(player, "gpvpquest_type", "EntityCreeper");
  1438. sgv(player, "gpvpquest_wort", "Creeper"); //Gunpowder
  1439. if(inv_slot == 18) {
  1440. sgv(player, "gpvpquest_amount", 25);
  1441. }
  1442. elseif(inv_slot == 19) {
  1443. sgv(player, "gpvpquest_amount", 50);
  1444. }
  1445. elseif(inv_slot == 20) {
  1446. sgv(player, "gpvpquest_amount", 100);
  1447. }
  1448. elseif(inv_slot == 21) {
  1449. sgv(player, "gpvpquest_amount", 1000);
  1450. }
  1451. goto("givemobquest");
  1452. }
  1453. goto("wait");
  1454. }
  1455. if(inv_id == pvemenu3invid) {
  1456. if(inv_slot == 35) {
  1457. inv.open(pvequests, player);
  1458. goto("wait");
  1459. }
  1460. if(player.hasQuest(player)) {
  1461. player.speak(player, "§dQuests", "§rDu arbeitest gerade an einer Quest");
  1462. goto("wait");
  1463. }
  1464. if(inv_slot < 4) {
  1465. sgv(player, "gpvpquest_type", "minecraft:obsidian");
  1466. sgv(player, "gpvpquest_wort", "Obsidian");
  1467. if(inv_slot == 0) {
  1468. sgv(player, "gpvpquest_amount", 100);
  1469. }
  1470. elseif(inv_slot == 1) {
  1471. sgv(player, "gpvpquest_amount", 500);
  1472. }
  1473. elseif(inv_slot == 2) {
  1474. sgv(player, "gpvpquest_amount", 1000);
  1475. }
  1476. elseif(inv_slot == 3) {
  1477. sgv(player, "gpvpquest_amount", 10000);
  1478. }
  1479. goto("givesammelquest");
  1480. }
  1481. if(inv_slot < 9) {
  1482. sgv(player, "gpvpquest_type", "minecraft:wheat");
  1483. sgv(player, "gpvpquest_wort", "Weizen");
  1484. if(inv_slot == 5) {
  1485. sgv(player, "gpvpquest_amount", 100);
  1486. }
  1487. elseif(inv_slot == 6) {
  1488. sgv(player, "gpvpquest_amount", 500);
  1489. }
  1490. elseif(inv_slot == 7) {
  1491. sgv(player, "gpvpquest_amount", 1000);
  1492. }
  1493. elseif(inv_slot == 8) {
  1494. sgv(player, "gpvpquest_amount", 10000);
  1495. }
  1496. goto("givesammelquest");
  1497. }
  1498. if(inv_slot < 13) {
  1499. sgv(player, "gpvpquest_type", "minecraft:carrots");
  1500. sgv(player, "gpvpquest_wort", "Karotten");
  1501. if(inv_slot == 9) {
  1502. sgv(player, "gpvpquest_amount", 100);
  1503. }
  1504. elseif(inv_slot == 10) {
  1505. sgv(player, "gpvpquest_amount", 500);
  1506. }
  1507. elseif(inv_slot == 11) {
  1508. sgv(player, "gpvpquest_amount", 1000);
  1509. }
  1510. elseif(inv_slot == 12) {
  1511. sgv(player, "gpvpquest_amount", 10000);
  1512. }
  1513. goto("givesammelquest");
  1514. }
  1515. if(inv_slot < 18) {
  1516. sgv(player, "gpvpquest_type", "minecraft:potatoes");
  1517. sgv(player, "gpvpquest_wort", "Kartoffeln");
  1518. if(inv_slot == 14) {
  1519. sgv(player, "gpvpquest_amount", 100);
  1520. }
  1521. elseif(inv_slot == 15) {
  1522. sgv(player, "gpvpquest_amount", 500);
  1523. }
  1524. elseif(inv_slot == 16) {
  1525. sgv(player, "gpvpquest_amount", 1000);
  1526. }
  1527. elseif(inv_slot == 17) {
  1528. sgv(player, "gpvpquest_amount", 10000);
  1529. }
  1530. goto("givesammelquest");
  1531. }
  1532. goto("wait");
  1533. }
  1534. if(inv_id == bankinvid) { //Bankmenü
  1535. if(inv_slot == 0 || inv_slot == 5) {
  1536. betrag = 1;
  1537. }
  1538. elseif(inv_slot == 1 || inv_slot == 6) {
  1539. betrag = 10;
  1540. }
  1541. elseif(inv_slot == 2 || inv_slot == 7) {
  1542. betrag = 100;
  1543. }
  1544. elseif(inv_slot == 3 || inv_slot == 8) {
  1545. betrag = 1000;
  1546. }
  1547. geldbeutel = ggv(player, "gcoinsatm");
  1548. bankkonto = ggv(player, "gcoinsbank");
  1549. if(inv_slot < 4) {
  1550. //einzahlen
  1551. if(betrag > geldbeutel) {
  1552. //Abbruch der Transaktion. Keine genaue Abrechnung (Anweisung von Luca)
  1553. player.speak(player, fehlerpräfix, "§rSoviel Geld trägst du nicht mit dir");
  1554. goto("wait");
  1555. }
  1556. if(bankkonto + betrag > 2000) {
  1557. betrag2 = 2000 - bankkonto;
  1558. sgv(player, "gcoinsatm", geldbeutel - betrag2);
  1559. sgv(player, "gcoinsbank", bankkonto + betrag2);
  1560. player.speak(player, "§eGold", "§rKonto auf 2000 Gold aufgestockt, Rest verbleibt im Geldbeutel");
  1561. } else {
  1562. sgv(player, "gcoinsatm", geldbeutel - betrag);
  1563. sgv(player, "gcoinsbank", bankkonto + betrag);
  1564. player.speak(player, "§eGold", "§rTransaktion erfolgreich");
  1565. }
  1566. displaygold(player, ggv(player, "gcoinsatm"));
  1567. goto("wait");
  1568. }
  1569. //auszahlen
  1570. if(betrag > bankkonto) {
  1571. player.speak(player, fehlerpräfix, "§rSoviel Geld hast du nicht auf deinem Konto");
  1572. goto("wait");
  1573. }
  1574. sgv(player, "gcoinsatm", geldbeutel + betrag);
  1575. sgv(player, "gcoinsbank", bankkonto - betrag);
  1576. displaygold(player, ggv(player, "gcoinsatm"));
  1577. player.speak(player, "§eGold", "§rTransaktion erfolgreich");
  1578. goto("wait");
  1579. }
  1580. if(inv_id == dailyrewardinvid) { //Daily Reward
  1581. if(inv_slot + 1 == actualday) {
  1582. uuid = player.getUuid(player);
  1583. if(gdmap.get("dailyrewardplayers", uuid, actualday) == 1) {
  1584. player.speak(player, "§6Belohnung", "§rTägliche Belohnung bereits abgeholt");
  1585. goto("wait");
  1586. }
  1587. gdmap.add("dailyrewardplayers", uuid, actualday, 1);
  1588. text = map.get(rewardstext, dailyrewardlist);
  1589. if(text == "Diamanten") {
  1590. player.speak(player, "§6Belohnung", "§rDu bekommst ", item.getAmount(dailyreward), " ", text);
  1591. player.giveItem(player, dailyreward);
  1592. goto("wait");
  1593. }
  1594. elseif(text == "Villager-Spawnei") {
  1595. player.giveItem(player, dailyreward);
  1596. player.speak(player, "§6Belohnung", "§rDu bekommst 1 ", text);
  1597. goto("wait");
  1598. }
  1599. elseif(text == "Gold") {
  1600. sgv(player, "gcoinsatm", ggv(player, "gcoinsatm") + dailyreward);
  1601. displaygold(player, ggv(player, "gcoinsatm"));
  1602. player.speak(player, "§6Belohnung", "§rDu bekommst ", dailyreward, " ", text);
  1603. goto("wait");
  1604. }
  1605. elseif(text == "KlassenXP") {
  1606. p = player;
  1607. xp = dailyreward;
  1608. sendmsg = true;
  1609. gosub("addxp");
  1610. player.speak(player, "§6Belohnung", "§rDu bekommst ", dailyreward, " ", text);
  1611. goto("wait");
  1612. }
  1613. elseif(text == "Seelenpunkt") {
  1614. //missing
  1615. player.speak(player, "§6Belohnung", "§rDu bekommst ", dailyreward, " ", text);
  1616. goto("wait");
  1617. }
  1618. }
  1619. goto("wait");
  1620. }
  1621. if(inv_name == "Slots") {
  1622. if(inv_slot > 15 && inv_slot < 40) {
  1623. if(item != airitem) {
  1624. skillid = map.get(skillnametoid, removeFormat(item.getName(item)));
  1625. sgv(player, "tempidtosave", skillid);
  1626. }
  1627. goto("wait");
  1628. }
  1629. if(inv_slot >= 0 && inv_slot <= 7) {
  1630. skillid = ggv(player, "tempidtosave");
  1631. if(skillid != null) {
  1632. jobid = getgpvpjob(player);
  1633. sgv(player, concat(jobid, "gpvphotkey", inv_slot + 1), skillid);
  1634. tempinv = map.get(bindingmenus, player.getUuid(player));
  1635. inv.setItem(tempinv, inv_slot + 8, skill.getStack(skill.fromID(skillid, player)));
  1636. sgv(player, "tempidtosave", null);
  1637. inv.update(player);
  1638. }
  1639. }
  1640. }
  1641. goto("wait");
  1642. @givemobquest
  1643. script.start(player, "gildenpvp/gpvpquest");
  1644. goto("wait");
  1645. @givesammelquest
  1646. script.start(player, "gildenpvp/gpvpquest2");
  1647. goto("wait");
  1648. @gettax
  1649. gmap.toTable(gildencoinstable, "gildencoins");
  1650. for(i = 0; i <= table.getSize(gildencoinstable) - 1; i++) {
  1651. gildenid = table.get(gildencoinstable, i, 0);
  1652. if(map.contains(gfights, gmap.get("gildenplot", gildenid))) {
  1653. list.add("scheduledtax", gildenid);
  1654. } else {
  1655. gosub("calculatetax");
  1656. }
  1657. }
  1658. goto("wait");
  1659. function calculatetax(gildenid) {
  1660. if(scheduled) {
  1661. scheduled = false;
  1662. list.remove(scheduledtax, gildenid);
  1663. }
  1664. gildencoins = gmap.get("gildencoins", gildenid);
  1665. gildenblockloc = gmap.get("gildenblock", gildenid);
  1666. gsedge1 = loc.mod(gildenblockloc, -50, 0, -50);
  1667. obstax = 0;
  1668. for(z = 0; z <= 100; z++) {
  1669. for(x = 0; x <= 100; x++) {
  1670. for(y = 0; y <= 255; y++) {
  1671. if(block.getType(loc.mod(gsedge1, x, y, z)) == "minecraft:obsidian") {
  1672. ++obstax;
  1673. }
  1674. }
  1675. }
  1676. }
  1677. taxtopay = obstax * 0.1;
  1678. gmap.add("gildencoins", gildenid, gildencoins - obstax);
  1679. if(taxtopay < gildencoins) {
  1680. gmap.add("golddelay", gildenid, 0);
  1681. sendguildmessage(gildenid, gildepräfix, concat("Deine Gilde hat ", taxtopay, " Gold Steuern gezahlt"), false);
  1682. } else {
  1683. days = gmap.get("golddelay", gildenid) + 1;
  1684. gmap.add("golddelay", gildenid, days);
  1685. if(days < 6) {
  1686. nachricht = concat("Deine Gilde konnte seit ", days, " Tagen ihre Steuern nicht begleichen!");
  1687. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  1688. }
  1689. elseif(days == 6) {
  1690. nachricht = concat("Wenn ihr morgen eure Steuern nicht zahlen könnt, wird die Gilde aufgelöst!");
  1691. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  1692. } else {
  1693. gdmap.toTable(table, "gmembers", gildenid);
  1694. for(i = 0; i <= table.getSize(table) - 1; i++) {
  1695. puuid = table.get(table, i, 0);
  1696. player.setGuild(puuid, 0);
  1697. gmap.remove("gnicknames", puuid);
  1698. }
  1699. nachricht = concat("Ihr konntet seit 7 Tagen eure Steuern nicht bezahlen! Die Gilde wurde automatisch aufgelöst!");
  1700. sendguildmessage(gildenid, gildepräfix, nachricht, true);
  1701. gdmap.removeAll("gmembers", gildenid);
  1702. gmap.remove("gildencoins", gildenid);
  1703. gildenblockloc = read.location(gmap.get("gildenblock", gildenid));
  1704. block.set(gildenblockloc, airitem);
  1705. plotid = getplotid(gildenblockloc);
  1706. command("plot remove ", plotid);
  1707. gmap.remove("gildenblock", gildenid);
  1708. gmap.remove("membersmax", gildenid);
  1709. gmap.remove("gmembersatm", gildenid);
  1710. gmap.remove("adelmax", gildenid);
  1711. gmap.remove("adelatm", gildenid);
  1712. gmap.remove("gildennamen", gildenid);
  1713. gmap.remove("gildentime", gildenid);
  1714. gmap.remove("gildenplot2", gmap.get("gildenplot", gildenid));
  1715. gmap.remove("gildenplot", gildenid);
  1716. moveid = map.get(gmoveids2, gildenid);
  1717. event.removeMoveData(moveid);
  1718. map.remove(gmoveids, moveid);
  1719. map.remove(gmoveids2, gildenid);
  1720. }
  1721. }
  1722. }
  1723. return;
  1724. @block_click
  1725. if(block_type == "minecraft:stone_button") {
  1726. if(block_loc == magierbuttontploc) {
  1727. entity.teleport(player, magierreturntploc);
  1728. }
  1729. goto("wait");
  1730. }
  1731. if(block_type == "minecraft:chest") {
  1732. if(block_loc == read.location("gpvpnew:40:105:385")) {
  1733. gosub("checkfornextday");
  1734. uuid = player.getUuid(player);
  1735. for(i = 0; i <= daysofmonth - 1; i++) { //inv befüllen
  1736. temp = gdmap.get("dailyrewardplayers", uuid, i + 1);
  1737. if(temp == null) {
  1738. if(i + 1 < actualday) {
  1739. inv.setItem(dailyrewardinv, i, read.item("minecraft:concrete", 1, 15, concat("§rTag ", i + 1)));
  1740. } else {
  1741. inv.setItem(dailyrewardinv, i, read.item("minecraft:chest", 1, 0, concat("§rTag ", i + 1)));
  1742. }
  1743. } else {
  1744. inv.setItem(dailyrewardinv, i, read.item("minecraft:chest", 1, 0, concat("§rTag ", i + 1)));
  1745. }
  1746. }
  1747. inv.open(dailyrewardinv, player);
  1748. }
  1749. goto("wait");
  1750. }
  1751. if(block_type == "minecraft:wall_sign") {
  1752. if(block_loc == read.location("gpvpnew:135:142:495")) {
  1753. if(set.contains(gamemasters, player.getUuid(player_name))) {
  1754. sgv(player, "gcoinsatm", ggv(player, "gcoinsatm") + 2000);
  1755. displaygold(player, ggv(player, "gcoinsatm"));
  1756. msg(player, "2000 Gold hinzugefügt");
  1757. }
  1758. goto("wait");
  1759. }
  1760. if(block_loc == read.location("gpvpnew:28:105:395")) {
  1761. msg(player, "...the right answer is always 42");
  1762. goto("wait");
  1763. }
  1764. if(block_loc == read.location("gpvpnew:103:110:473")) {
  1765. entity.teleport(player, read.location("gpvpnew:27.5:110:427.5"));
  1766. sendworldmessage("§cGalgen", concat("§r", player_name, " hat sich als gierig erwiesen"));
  1767. }
  1768. goto("wait");
  1769. }
  1770. if(item.getType(entity.getEquip(player, "hand")) == "minecraft:diamond_pickaxe") {
  1771. if(block_type == "km:guild_block") {
  1772. plotid = getplotid(block_loc);
  1773. if(!map.contains(gfights, plotid)) {
  1774. goto("wait"); //Grundstück ist nicht in Gildenkampf verwickelt
  1775. }
  1776. defenderid = gmap.get("gildenplot2", plotid);
  1777. attackerid = player.getGuild(player.getUuid(player_name));
  1778. if(checkifsameguild(defenderid, attackerid)) {
  1779. goto("wait"); //Spieler der eigenen Gilde können ihren Gildenblock nicht zerstören
  1780. }
  1781. blockstatus = map.get(clicks, block_loc) - 1;
  1782. if(blockstatus >= 0) {
  1783. if(time.getMillis() - map.get(blocktime, defenderid) >= 1000) {
  1784. map.add(blocktime, defenderid, time.getMillis());
  1785. nachricht = concat("§rDer Gildenblock hat noch §6", blockstatus, "§r/§6200 §rHaltbarkeit!");
  1786. sendguildmessage(defenderid, gildepräfix, nachricht, false);
  1787. sendguildmessage(attackerid, gildepräfix, nachricht, false);
  1788. map.add(clicks, block_loc, blockstatus);
  1789. if(blockstatus == 190) {
  1790. nachricht = concat("§rDer Gildenblock wurde zerstört");
  1791. sendguildmessage(attackerid, gildepräfix, nachricht, false);
  1792. sendguildmessage(defenderid, gildepräfix, nachricht, false);
  1793. nachricht = concat("§rDie Angreifer haben nun 30 Minuten Zeit, Gold zu stehlen und Kisten zu knacken");
  1794. sendguildmessage(attackerid, gildepräfix, nachricht, false);
  1795. sendguildmessage(defenderid, gildepräfix, nachricht, false);
  1796. title = "§4Stehlphase";
  1797. subtitle = concat("§rAuf die Kisten, fertig - stehlt!");
  1798. sendguildtitle(defenderid, title, subtitle);
  1799. sendguildtitle(attackerid, title, subtitle);
  1800. //Status des Gfights ändern
  1801. map.add(gstatus, plotid, 1);
  1802. table.setSortColumn(gstatustable, 0);
  1803. table.removeRow(gstatustable, table.getIndexOf(gstatustable, plotid));
  1804. table.addRow(gstatustable, plotid, 1);
  1805. sgoto(36000, "stealends");
  1806. }
  1807. }
  1808. }
  1809. goto("wait");
  1810. }
  1811. if(block_type == "km:artefact") {
  1812. artestatus = ggv("SERVER", "artehitpoints");
  1813. if(block_loc != artefaktfixloc) { //Check ob Artefakt in Ruine
  1814. plotid = getplotid(block_loc);
  1815. if(!map.contains(gfights, plotid)) {
  1816. goto("wait"); //Grundstück ist nicht in Gildenkampf verwickelt
  1817. }
  1818. defenderid = gmap.get("gildenplot2", plotid);
  1819. attackerid = player.getGuild(player.getUuid(player_name));
  1820. if(checkifsameguild(defenderid, attackerid)) {
  1821. goto("wait"); //Spieler der eigenen Gilde können den ArteBlock nicht zerstören
  1822. }
  1823. if(artestatus >= 0) {
  1824. if(time.getMillis() - time.from(artetime) >= 1000) {
  1825. sgv("SERVER", "artehitpoints", sub(ggv("SERVER", "artehitpoints"), 1));
  1826. --artestatus;
  1827. time.new(artetime, time.getMillis());
  1828. nachricht = concat("§rDas Artefakt hat noch §6", artestatus, "§r/§610 §rHaltbarkeit!");
  1829. sendguildmessage(attackerid, gildepräfix, nachricht, false);
  1830. sendguildmessage(defenderid, gildepräfix, nachricht, false);
  1831. if(artestatus == 0) { //Direkter Reset in Arte-Ruine
  1832. block.set(block_loc, airitem);
  1833. gosub("arteresetcore");
  1834. }
  1835. }
  1836. }
  1837. }
  1838. elseif(artestatus >= 0) {
  1839. if(time.getMillis() - time.from(artetime) >= 1000) {
  1840. sgv("SERVER", "artehitpoints", sub(ggv("SERVER", "artehitpoints"), 1));
  1841. --artestatus;
  1842. time.new(artetime, time.getMillis());
  1843. sendworldmessage(gildepräfix, concat("§rDas Artefakt hat noch §6", artestatus, "§r/§6250 §rHaltbarkeit!"));
  1844. if(artestatus == 0) {
  1845. sendworldmessage(gildepräfix, concat("§7", player_name, "§r trägt nun das Artefakt"));
  1846. artefaktyetloc = player.getUuid(player_name);
  1847. sgv("SERVER", "arteyetloc", artefaktyetloc);
  1848. block.set(block_loc, airitem);
  1849. //hungerkeule
  1850. //herzpartikel
  1851. sgoto(3600000, "checkcarryarte");
  1852. }
  1853. }
  1854. }
  1855. }
  1856. }
  1857. goto("wait");
  1858. @checkcarryarte
  1859. temp = read.location(ggv("SERVER", "arteyetloc"));
  1860. if(temp == null) {
  1861. //Location nicht erkannt --> Spieler hat das Artefakt nach einer Stunde noch immer bei sich
  1862. gosub("arteresetcore");
  1863. }
  1864. goto("wait");
  1865. @defendwin
  1866. nachricht = concat("§6", gmap.get("gildennamen", defenderid), "§r hat den Angriff von §6", gmap.get("gildennamen", attackerid), "§r erfolgreich verteidigt");
  1867. sendguildmessage(defenderid, gildepräfix, nachricht, false);
  1868. sendguildmessage(attackerid, gildepräfix, nachricht, false);
  1869. map.remove(gfights, plotid);
  1870. map.remove(gstatus, plotid);
  1871. table.setSortColumn(gstatustable, 0);
  1872. table.removeRow(gstatustable, table.getIndexOf(gstatustable, plotid));
  1873. map.remove(gattackers, attackerid);
  1874. map.remove(gdefenders, defenderid);
  1875. goto("wait");
  1876. @stealends
  1877. plotid = table.get(gstatustable, 0, 0);
  1878. table.removeRow(gstatustable, 0);
  1879. map.remove(gstatus, plotid);
  1880. defenderid = gmap.get("gildenplot2", plotid);
  1881. attackerid = map.get(gdefenders, defenderid);
  1882. nachricht = concat("§6", gmap.get("gildennamen", attackerid), "§r hat den Angriff gegen §6", gmap.get("gildennamen", defenderid), "§r gewonnen");
  1883. sendguildmessage(defenderid, gildepräfix, nachricht, false);
  1884. nachricht = concat("§rVerlasst sofort das Gildengebiet, sonst ereilt euch der Tod");
  1885. sendguildmessage(attackerid, gildepräfix, nachricht, false);
  1886. map.remove(gfights, plotid);
  1887. map.remove(gattackers, attackerid);
  1888. map.remove(gdefenders, defenderid);
  1889. if(list.contains(scheduledtax, defenderid)) {
  1890. gildenid = defenderid;
  1891. scheduled = true;
  1892. gosub("calculatetax");
  1893. }
  1894. goto("wait");
  1895. @addsharedgold
  1896. //Benötigt die Variablen Player p, Zahl gold
  1897. id = player.getGuild(p);
  1898. list = map.get(onlinelists, id);
  1899. size = list.getSize(list);
  1900. gold /= size;
  1901. for(i = 0; i <= size - 1; i++) {
  1902. p = list.getIndex(list, i);
  1903. goldnew = ggv(p, "gcoinsatm") + gold;
  1904. sgv(p, "gcoinsatm", goldnew);
  1905. display.add(p, 40, "#23-1- §e", text.number(goldnew));
  1906. }
  1907. goto("wait");
  1908. @addsharedxp
  1909. //Benötigt die Variablen Player p, Zahl xp
  1910. sharing = true;
  1911. sendmsg = true;
  1912. id = player.getGuild(p);
  1913. list = map.get(onlinelists, id);
  1914. size = list.getSize(list);
  1915. for(i = 0; i <= size - 1; i++) {
  1916. p = list.getIndex(list, i);
  1917. xp = math.round((xp * 1.1) / size);
  1918. gosub("addxp");
  1919. }
  1920. sharing = false;
  1921. sendmsg = null;
  1922. goto("wait");
  1923. @addxp
  1924. //Benötigt die Variablen Player p, Zahl xp und Boolean sendmsg
  1925. jobid = getgpvpjob(p);
  1926. if(jobid == null) {
  1927. return;
  1928. }
  1929. level = job.getLevel(p, jobid);
  1930. if(level >= 100) {
  1931. return;
  1932. }
  1933. newxp = job.getXP(p, jobid) + xp;
  1934. listxp = list.getIndex(xplist, level - 1);
  1935. if(newxp > listxp) {
  1936. job.setLevel(p, jobid, ++level);
  1937. display.add(p, 41, "Stufe §a", text.number(level));
  1938. if(level == 100) {
  1939. job.setXp(p, jobid, 0);
  1940. display.add(player, 44, "#26-1- 0/0");
  1941. } else {
  1942. newxp -= listxp;
  1943. job.setXp(p, jobid, newxp);
  1944. display.add(player, 44, "#26-1- ", text.number(newxp), "/", text.number(listxp));
  1945. }
  1946. } else {
  1947. job.setXp(p, jobid, newxp);
  1948. display.add(player, 44, "#26-1- ", text.number(newxp), "/", text.number(listxp));
  1949. }
  1950. if(sendmsg) {
  1951. if(sharing) {
  1952. player.speak(player, "§aEXP", concat("§rDu hast §a", text.number(xp), " §rEXP erhalten [§9Gruppe§r]"));
  1953. } else {
  1954. player.speak(player, "§aEXP", concat("§rDu hast §a", text.number(xp), " §rEXP erhalten"));
  1955. sendmsg = null;
  1956. }
  1957. }
  1958. return;
  1959. @custom_command
  1960. size = list.getSize(args);
  1961. if(command == "playerinfo" || command == "pinfo") {
  1962. if(size > 1) {
  1963. player.speak(player, commandspräfix, "/playerinfo [player]");
  1964. goto("wait");
  1965. } elseif(size == 0) {
  1966. p = player;
  1967. } else {
  1968. p = list.getIndex(args, 0);
  1969. }
  1970. pname = player.getName(p);
  1971. uuid = player.getUuid(p);
  1972. gildenid = player.getGuild(p);
  1973. player.speak(player, "§aPlayerinfo", pname);
  1974. gtype = gmap.get("gtype", gildenid);
  1975. if(gtype == "group") {
  1976. msg(player, "Gildenid: ", text.number(gildenid), "(Gruppe)");
  1977. } elseif(gtype == "gilde") {
  1978. msg(player, "Gildenname: ", gmap.get("gildennamen", gildenid));
  1979. msg(player, "Gildenid: ", text.number(gildenid));
  1980. }
  1981. jobid = getgpvpjob(p);
  1982. if(jobid != null) {
  1983. msg(player, "Klasse: ", job.getName(jobid));
  1984. msg(player, "Level: ", text.number(job.getLevel(p, jobid)));
  1985. msg(player, "XP: ", text.number(job.getXP(p, jobid)));
  1986. }
  1987. msg(player, "Leben: ", text.number(entity.getHealth(p)));
  1988. msg(player, "Mana: ", text.number(status.getMana(p)));
  1989. msg(player, "Hunger: ", text.number(player.getHunger(p)));
  1990. msg(player, "Gold atm: ", text.number(ggv(player, "gcoinsatm")));
  1991. goto("wait");
  1992. }
  1993. if(command == "bank" || command == "money") {
  1994. if(size > 1) {
  1995. player.speak(player, commandspräfix, "/bank <player>");
  1996. player.speak(player, commandspräfix, "/money <player>");
  1997. goto("wait");
  1998. } elseif(size == 0) {
  1999. p = player;
  2000. } else {
  2001. p = list.getIndex(args, 0);
  2002. }
  2003. player.speak(player, "§eGold", "Bank: ", text.number(ggv(p, "gcoinsbank")));
  2004. goto("wait");
  2005. }
  2006. if(command == "skill") { //ein skill wird ausgeführt
  2007. if(size != 1) {
  2008. player.speak(player, commandspräfix, "/skill <skillname>");
  2009. } else {
  2010. skillname = text.concatList(args, " ", 0, size - 1);
  2011. skillid = map.get(skillnametoid, skillname);
  2012. if(skillid == null) {
  2013. player.speak(player, fehlerpräfix, "§rDieser Skill existiert nicht");
  2014. goto("wait");
  2015. }
  2016. plotid = getplotid(player_loc);
  2017. if(plotid == spawnplotid) {
  2018. player.speak(player, fehlerpräfix, "§rSkills sind am Spawn-Plot nicht erlaubt");
  2019. goto("wait");
  2020. }
  2021. leveledskill = skill.fromID(skillid, player);
  2022. if(leveledskill == null) {
  2023. player.speak(player, fehlerpräfix, "§rDu besitzt diesen Skill nicht");
  2024. goto("wait");
  2025. }
  2026. skill.use(leveledskill, player);
  2027. skillspeak(player, player_name, leveledskill);
  2028. }
  2029. goto("wait");
  2030. }
  2031. if(command == "slots") {
  2032. plotid = getplotid(player_loc);
  2033. if(plotid != spawnplotid) {
  2034. player.speak(player, fehlerpräfix, "§rSkillbinding geht nur am Spawn");
  2035. goto("wait");
  2036. }
  2037. id = getgpvpjob(player);
  2038. if(id == null) {
  2039. player.speak(player, fehlerpräfix, "§rDu besitzt keine Klasse");
  2040. goto("wait");
  2041. }
  2042. inv.newdynamic(newbindinv, "222222220222222220000000000222222220222222220222222220", "Slots"); //Achtung, für jeden Spieler ein neues Inv, weil es sich leider um ein sich veränderndes Inventar handelt
  2043. for(i = 0; i <= 7; i++) {
  2044. inv.setItem(newbindinv, i, read.item("STONE_SWORD", 1, 0, concat("Hotkey", text.number(i + 1))));
  2045. tempid = ggv(player, concat(id, "gpvphotkey", i + 1));
  2046. if(tempid != null) {
  2047. inv.setItem(newbindinv, i + 8, skill.getStack(skill.fromID(tempid, player)));
  2048. } else {
  2049. inv.setItem(newbindinv, i + 8, airitem);
  2050. }
  2051. }
  2052. skill.getActive(templist, player);
  2053. for(i = 0; i <= list.getSize(templist) - 1; i++) {
  2054. inv.setItem(newbindinv, i + 16, skill.getStack(list.getIndex(templist, i)));
  2055. }
  2056. inv.open(newbindinv, player);
  2057. map.add(bindingmenus, player.getUuid(player), newbindinv);
  2058. goto("wait");
  2059. }
  2060. if(command == "placearte") {
  2061. //Check ob Spieler Arte-Träger ist
  2062. if(ggv("SERVER", "arteyetloc") != player.getUuid(player)) {
  2063. player.speak(player, fehlerpräfix, "§rDu trägst das Artefakt nicht");
  2064. goto("wait");
  2065. }
  2066. //Check ob eigenes Gilden GS
  2067. temploc = entity.getLocation(player);
  2068. plotid = getplotid(temploc);
  2069. if(plotid == null) {
  2070. player.speak(player, fehlerpräfix, "§rDu musst das Artefakt auf deinem Gildengrundstück platzieren");
  2071. goto("wait");
  2072. }
  2073. gildenid = player.getGuild(player);
  2074. if(gmap.get("gildenplot2", plotid) != gildenid) {
  2075. player.speak(player, fehlerpräfix, "§rDu musst das Artefakt auf deinem Gildengrundstück platzieren");
  2076. goto("wait");
  2077. }
  2078. y = loc.getY(temploc);
  2079. if(y < 80 || y > 110) {
  2080. player.speak(player, fehlerpräfix, "§rDas Artefakt muss zwischen 80 bis 110 Blöcke Höhe platziert werden");
  2081. goto("wait");
  2082. }
  2083. lowerblock = loc.mod(temploc, 0, -1, 0);
  2084. if(!block.isSolid(lowerblock)) {
  2085. player.speak(player, fehlerpräfix, "§rDer Block unter dem Artefakt muss ein solider Block sein");
  2086. goto("wait");
  2087. }
  2088. btype = block.getType(lowerblock);
  2089. if(btype == "minecraft:leaves" || btype == "minecraft:leaves2") {
  2090. player.speak(player, fehlerpräfix, "§rDer Block unter dem Artefakt darf kein Laub sein");
  2091. cancel = true;
  2092. goto("wait");
  2093. }
  2094. if(set.contains(richblocks, btype)) {
  2095. player.speak(player, fehlerpräfix, "§rDer Block unter dem Artefakt darf kein wertvoller Block sein");
  2096. cancel = true;
  2097. goto("wait");
  2098. }
  2099. sgv("SERVER", "artehitpoints", 10);
  2100. artefaktyetloc = temploc;
  2101. sgv("SERVER", "arteyetloc", text.location(artefaktyetloc));
  2102. sendworldmessage(gildepräfix, concat("§rDas Artefakt wurde von ", gmap.get("gildennamen", gildenid), " platziert"));
  2103. goto("wait");
  2104. }
  2105. if(command == "friend") {
  2106. if(size == 0) {
  2107. player.speak(player, freundepräfix, "§r/friend ...");
  2108. msg(player, "§5 - add <name> §rMarkiert einen Spieler als Freund");
  2109. msg(player, "§5 - remove <name> §rEntfernt einen Spieler als Freund");
  2110. msg(player, "§5 - list §rListet deine Freunde auf");
  2111. goto("wait");
  2112. }
  2113. arg0 = toLowerCase(list.getIndex(args, 0));
  2114. if(arg0 == "add") {
  2115. if(size != 2) {
  2116. player.speak(player, freundepräfix, "§r/friend add <name>");
  2117. goto("wait");
  2118. }
  2119. pname = list.getIndex(args, 1);
  2120. if(isyourself(player_name, pname)) {
  2121. player.speak(player, fehlerpräfix, "§rDu kannst dich nicht selbst einladen");
  2122. goto("wait");
  2123. }
  2124. puuid = player.getUuid(pname);
  2125. ownuuid = player.getUuid(player_name);
  2126. if(!checkifeveronline(pname)) {
  2127. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2128. goto("wait");
  2129. }
  2130. if(gdmap.get("gfriends", ownuuid, puuid) != null) {
  2131. player.speak(player, freundepräfix, "§rDieser Spieler ist bereits dein Freund");
  2132. goto("wait");
  2133. }
  2134. if(map.contains(newfriends, puuid)) {
  2135. if(map.get(newfriends, puuid) == ownuuid) {
  2136. player.speak(player, freundepräfix, concat("§rDu bist nun mit §7", pname, "§r befreundet"));
  2137. gdmap.add("gfriends", ownuuid, puuid, true);
  2138. gdmap.add("gfriends", puuid, ownuuid, true);
  2139. map.remove(newfriends, puuid);
  2140. map.remove(newfriends2, ownuuid);
  2141. sendmessage(pname, freundepräfix, concat("§rDu bist nun mit §7", player_name, "§r befreundet"), true);
  2142. }
  2143. } else {
  2144. player.speak(player, freundepräfix, concat("§rDu hast §7", pname, "§r eine Einladung geschickt"));
  2145. map.add(newfriends, ownuuid, puuid); //Einlader, Eingeladener
  2146. map.add(newfriends2, puuid, ownuuid); //Eingeladener, Einlader
  2147. sendmessage(pname, freundepräfix, concat("§7", player_name, "§r möchte dein Freund sein"), true);
  2148. p = read.player(pname);
  2149. if(p != null) {
  2150. msg(p, text.click("§r[§aAnnehmen§r]", concat("/friend add ", player_name)));
  2151. }
  2152. }
  2153. goto("wait");
  2154. }
  2155. if(arg0 == "list") {
  2156. if(size != 1) {
  2157. player.speak(player, commandspräfix, "/friend list");
  2158. } else {
  2159. gdmap.toTable(table, "gfriends", player.getUuid(player_name));
  2160. tablesize = table.getSize(table);
  2161. if(tablesize == 0) {
  2162. player.speak(player, freundepräfix, "§rDu hast noch keine Freunde");
  2163. } else {
  2164. msg(player, "§5Freunde:");
  2165. for(i = 0; i <= tablesize - 1; i++) {
  2166. msg(player, "§r- ", player.getName(table.get(table, i, 0)));
  2167. }
  2168. }
  2169. }
  2170. goto("wait");
  2171. }
  2172. if(arg0 == "remove") {
  2173. if(size != 2) {
  2174. player.speak(player, freundepräfix, "§r/friend remove <name>");
  2175. } else {
  2176. pname = list.getIndex(args, 1);
  2177. puuid = player.getUuid(pname);
  2178. ownuuid = player.getUuid(player_name);
  2179. if(!checkifeveronline(pname)) {
  2180. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2181. goto("wait");
  2182. }
  2183. if(gdmap.get("gfriends", ownuuid, puuid) == null) {
  2184. player.speak(player, freundepräfix, "§rDieser Spieler ist nicht dein Freund");
  2185. goto("wait");
  2186. }
  2187. player.speak(player, freundepräfix, concat("§rDu bist nun nicht mehr mit §7", pname, "§r befreundet"));
  2188. gdmap.remove("gfriends", ownuuid, puuid);
  2189. gdmap.remove("gfriends", puuid, ownuuid);
  2190. sendmessage(pname, freundepräfix, concat("§rDu bist nun nicht mehr mit §7", player_name, "§r befreundet"), true);
  2191. }
  2192. }
  2193. goto("wait");
  2194. }
  2195. if(command == "group") {
  2196. if(size == 0) {
  2197. player.speak(player, gruppepräfix, "§r/group ...");
  2198. msg(player, "§9 - info §rZeigt Infos über deine Gruppe");
  2199. msg(player, "§9 - leave §rVerlasst die Gruppe");
  2200. msg(player, "§9 - accept <Spieler-Name> §rAkzeptiert die Einladung einer Gruppe");
  2201. msg(player, "§9 - invite <Name> §rLädt einen Spieler in die Gruppe ein");
  2202. msg(player, "§9 - kick <Name> §rKickt einen Spieler aus der Gruppe");
  2203. msg(player, "§9 - disband §rLöst die Gruppe auf");
  2204. msg(player, "§9 - gold §rAktiviert/deaktiviert die Gold-Teilung");
  2205. msg(player, "§9 - xp §rAktiviert/deaktiviert die XP-Teilung");
  2206. msg(player, "§9 * nur für Leader xp §rAktiviert/deaktiviert die XP-Teilung");
  2207. goto("wait");
  2208. }
  2209. arg0 = toLowerCase(list.getIndex(args, 0));
  2210. if(arg0 == "leave") {
  2211. if(size != 1) {
  2212. player.speak(player, commandspräfix, "/group leave");
  2213. } else {
  2214. groupid = player.getGuild(player);
  2215. if(!isingroup(player_name)) {
  2216. player.speak(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  2217. goto("wait");
  2218. }
  2219. gdmap.remove("gmembers", groupid, player.getUuid(pname));
  2220. player.setGuild(player, 0);
  2221. gmap.add("gmembersatm", groupid, gmap.get("gmembersatm", groupid) - 1);
  2222. player.speak(player, gruppepräfix, "§rDu hast die Gruppe verlassen");
  2223. goto("checkgroupsize");
  2224. }
  2225. goto("wait");
  2226. }
  2227. if(arg0 == "disband") {
  2228. if(size != 1) {
  2229. player.speak(player, commandspräfix, "/group disband");
  2230. } else {
  2231. if(!isingroup(player_name)) {
  2232. player.speak(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  2233. goto("wait");
  2234. }
  2235. groupid = player.getGuild(player);
  2236. if(!isgroupleader(groupid, player_name)) {
  2237. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gruppe bist");
  2238. goto("wait");
  2239. }
  2240. gdmap.toTable(temptable, "gmembers", groupid);
  2241. for(i = 0; i <= gmap.get("gmembersatm", groupid) - 1; i++) {
  2242. tempuuid = table.get(temptable, i, 0);
  2243. player.setGuild(tempuuid, 0);
  2244. }
  2245. gdmap.removeAll("gmembers", groupid);
  2246. player.speak(player, gruppepräfix, "§rDu hast die Gruppe aufgelöst");
  2247. gmap.remove("gmembersatm", groupid);
  2248. }
  2249. goto("wait");
  2250. }
  2251. if(arg0 == "gold") {
  2252. if(size != 1) {
  2253. player.speak(player, commandspräfix, "/group gold");
  2254. } else {
  2255. if(!isingroup(player_name)) {
  2256. player.speak(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  2257. goto("wait");
  2258. }
  2259. groupid = player.getGuild(player);
  2260. if(!isgroupleader(groupid, player_name)) {
  2261. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gruppe bist");
  2262. goto("wait");
  2263. }
  2264. if(gmap.get("gsharegold", groupid)) {
  2265. gmap.add("gsharegold", groupid, false);
  2266. player.speak(player, gruppepräfix, "§rGold-Teilung deaktiviert");
  2267. } else {
  2268. gmap.add("gsharegold", groupid, true);
  2269. player.speak(player, gruppepräfix, "§rGold-Teilung aktiviert");
  2270. }
  2271. }
  2272. goto("wait");
  2273. }
  2274. if(arg0 == "xp") {
  2275. if(size != 1) {
  2276. player.speak(player, commandspräfix, "/group xp");
  2277. } else {
  2278. if(!isingroup(player_name)) {
  2279. player.speak(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  2280. goto("wait");
  2281. }
  2282. groupid = player.getGuild(player);
  2283. if(!isgroupleader(groupid, player_name)) {
  2284. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gruppe bist");
  2285. goto("wait");
  2286. }
  2287. if(gmap.get("gsharexp", groupid)) {
  2288. gmap.add("gsharexp", groupid, false);
  2289. player.speak(player, gruppepräfix, "§rXP-Teilung deaktiviert");
  2290. } else {
  2291. gmap.add("gsharexp", groupid, true);
  2292. player.speak(player, gruppepräfix, "§rXP-Teilung aktiviert");
  2293. }
  2294. }
  2295. goto("wait");
  2296. }
  2297. if(arg0 == "info") {
  2298. if(size != 1) {
  2299. player.speak(player, commandspräfix, "/group info");
  2300. } else {
  2301. groupid = player.getGuild(player);
  2302. if(!isingroup(player_name)) {
  2303. player.speak(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  2304. goto("wait");
  2305. }
  2306. gdmap.toTable(temptable, "gmembers", groupid);
  2307. list.new(memberslist);
  2308. for(i = 0; i <= table.getSize(temptable) - 1; i++) {
  2309. tempname = player.getName(table.get(temptable, i, 0));
  2310. temprang = table.get(temptable, i, 1);
  2311. if(temprang == "Leiter") {
  2312. leader = tempname;
  2313. } else {
  2314. list.add(memberslist, tempname);
  2315. }
  2316. }
  2317. members = concatList(memberslist, ", ", 0, sub(list.getSize(memberslist), 1));
  2318. msg(player, "§lGruppe");
  2319. msg(player, "§lLeiter");
  2320. msg(player, "§r", leader);
  2321. msg(player, "§lMitglieder");
  2322. msg(player, "§r", members);
  2323. }
  2324. goto("wait");
  2325. }
  2326. if(arg0 == "accept") {
  2327. if(size != 2) {
  2328. player.speak(player, commandspräfix, "/group accept <player>");
  2329. } else {
  2330. if(isingroup(player_name)) {
  2331. player.speak(player, fehlerpräfix, "§rDu befindest dich bereits in einer Gruppe");
  2332. goto("wait");
  2333. }
  2334. if(isinguild(player_name)) {
  2335. player.speak(player, fehlerpräfix, "§rDu befindest dich in einer Gilde");
  2336. goto("wait");
  2337. }
  2338. pname = list.getIndex(args, 1);
  2339. puuid = player.getUuid(pname);
  2340. ownuuid = player.getUuid(player_name);
  2341. if(map.get(groupinvitations, puuid) != ownuuid) {
  2342. player.speak(player, fehlerpräfix, "§rDu hast keine Einladung dieses Spielers");
  2343. goto("wait");
  2344. }
  2345. if(!isingroup(pname)) { //Überprüfung ob Einlader in Gruppe. Wenn Nein: Gruppe erstellen
  2346. //Gruppe erstellen
  2347. p = read.player(pname);
  2348. if(p == null) {
  2349. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht mehr online");
  2350. goto("wait");
  2351. }
  2352. sgv("SERVER", "gildencounter", ggv("SERVER", "gildencounter") + 1);
  2353. groupid = ggv("SERVER", "gildencounter");
  2354. gdmap.add("gmembers", groupid, puuid, "Leiter");
  2355. gmap.add("gsharegold", groupid, true);
  2356. gmap.add("gsharexp", groupid, true);
  2357. gmap.add("gtype", groupid, "group");
  2358. map.add(onlinelists, groupid, list.new());
  2359. list = map.get(onlinelists, groupid);
  2360. //Einlader zur Gruppe hinzufügen
  2361. player.setGuild(puuid, groupid);
  2362. gmap.add("gmembersatm", groupid, 1);
  2363. list.add(list, p);
  2364. } else {
  2365. //Gruppe existiert
  2366. groupid = player.getGuild(pname);
  2367. list = map.get(onlinelists, groupid);
  2368. }
  2369. //Spieler hinzufügen
  2370. list.add(list, player);
  2371. map.add(onlinelists, groupid, list);
  2372. gmap.add("gmembersatm", groupid, gmap.get("gmembersatm", groupid) + 1);
  2373. gdmap.add("gmembers", groupid, ownuuid, "Mitglied");
  2374. player.setGuild(player, groupid);
  2375. map.remove(groupinvitations, ownuuid);
  2376. map.remove(groupinvitations, puuid);
  2377. player.speak(player, gruppepräfix, "§rEinladung angenommen");
  2378. sendmessage(pname, gruppepräfix, concat("§7", player_name, " §rhat die Einladung angenommen"), true);
  2379. }
  2380. goto("wait");
  2381. }
  2382. if(arg0 == "invite") {
  2383. if(size != 2) {
  2384. player.speak(player, commandspräfix, "/group invite <player>");
  2385. } else {
  2386. if(isinguild(player_name)) {
  2387. player.speak(player, fehlerpräfix, "§rDu befindest dich in einer Gilde");
  2388. goto("wait");
  2389. }
  2390. //Beim Einladen muss nicht zwingend eine Gruppe bestehen
  2391. if(isingroup(player_name)) {
  2392. groupid = player.getGuild(player);
  2393. if(!isgroupleader(groupid, player_name)) {
  2394. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gruppe bist");
  2395. goto("wait");
  2396. }
  2397. if(gmap.get("gmembersatm", groupid) >= 7) {
  2398. player.speak(player, fehlerpräfix, "§rEine Gruppe ist auf sieben Spieler begrenzt");
  2399. goto("wait");
  2400. }
  2401. }
  2402. ownuuid = player.getUuid(player_name);
  2403. if(map.contains(groupinvitations, ownuuid)) {
  2404. player.speak(player, fehlerpräfix, "§rWarte bis die offene Einladung abläuft oder angenommen wird");
  2405. goto("wait");
  2406. }
  2407. pname = list.getIndex(args, 1);
  2408. if(isyourself(player_name, pname)) {
  2409. player.speak(player, fehlerpräfix, "§rDu kannst dich nicht selbst einladen");
  2410. goto("wait");
  2411. }
  2412. p = read.player(pname);
  2413. if(p == null) {
  2414. player.speak(player, fehlerpräfix, "§rEs können nur Online-Spieler eingeladen werden");
  2415. goto("wait");
  2416. }
  2417. if(isingroup(pname)) {
  2418. player.speak(player, fehlerpräfix, "§rDieser Spieler befindet sich bereits in einer Gruppe");
  2419. goto("wait");
  2420. }
  2421. if(isinguild(pname)) {
  2422. player.speak(player, fehlerpräfix, "§rDieser Spieler ist in einer Gilde");
  2423. goto("wait");
  2424. }
  2425. player.speak(player, gruppepräfix, "§rEinladung gesendet");
  2426. player.speak(p, gruppepräfix, concat("§7", player_name, "§r hat dich in seine Gruppe eingeladen"));
  2427. puuid = player.getUuid(pname);
  2428. map.add(groupinvitations, ownuuid, puuid);
  2429. table.addRow(groupinvitations2, ownuuid, puuid);
  2430. sgoto(1200, "deletegroupinvitation");
  2431. }
  2432. goto("wait");
  2433. }
  2434. if(arg0 == "kick") {
  2435. if(size != 1) {
  2436. player.speak(player, commandspräfix, "/group kick <player>");
  2437. } else {
  2438. if(!isingroup(player_name)) {
  2439. player.speak(player, fehlerpräfix, "§rDu befindest dich in keiner Gruppe");
  2440. goto("wait");
  2441. }
  2442. groupid = player.getGuild(player);
  2443. if(!isgroupleader(groupid, player_name)) {
  2444. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gruppe bist");
  2445. goto("wait");
  2446. }
  2447. pname = list.getIndex(args, 1);
  2448. puuid = player.getUuid(pname);
  2449. if(!checkifsameguild(pname, player_name)) {
  2450. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gruppe");
  2451. goto("wait");
  2452. }
  2453. gdmap.remove("gmembers", groupid, puuid);
  2454. player.setGuild(puuid, 0);
  2455. gmap.add("gmembersatm", groupid, gmap.get("gmembersatm", groupid) - 1);
  2456. player.speak(player, gruppepräfix, "§rSpieler aus der Gruppe entfernt");
  2457. sendmessage(pname, gruppepräfix, concat("§rDu bist aus der Gruppe entfernt worden"), false);
  2458. goto("checkgroupsize");
  2459. }
  2460. }
  2461. goto("wait");
  2462. }
  2463. if(command == "pay") {
  2464. if(size != 2) {
  2465. player.speak(player, commandspräfix, "/pay <player> <gold>");
  2466. } else {
  2467. pname = list.getIndex(args, 0);
  2468. betrag = list.getIndex(args, 1);
  2469. try {
  2470. temp = betrag + 1;
  2471. } catch {
  2472. player.speak(player, fehlerpräfix, "§rDer angegebene Parameter muss eine Zahl sein");
  2473. goto("wait");
  2474. }
  2475. if(betrag < 0) {
  2476. player.speak(player, fehlerpräfix, "§rDer Betrag muss positiv sein");
  2477. goto("wait");
  2478. }
  2479. geldbeutel = ggv(player, "gcoinsatm");
  2480. if(!checkifeveronline(pname)) {
  2481. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2482. goto("wait");
  2483. }
  2484. p = read.player(pname);
  2485. if(p == null) {
  2486. player.speak(player, fehlerpräfix, "§rDer Empfänger muss bei einer Überweisung online sein");
  2487. goto("wait");
  2488. }
  2489. players.toWorldList(templist, gpvpworld);
  2490. if(list.contains(templist, player)) {
  2491. player.speak(player, fehlerpräfix, "§rDer Empfänger muss sich bei einer Überweisung in der Gildenpvp-Welt aufhalten");
  2492. goto("wait");
  2493. }
  2494. if(betrag > geldbeutel) {
  2495. player.speak(player, fehlerpräfix, "§rDu kannst nicht mehr überweisen, als du in deinem Geldbeutel hast");
  2496. goto("wait");
  2497. }
  2498. player.speak(player, "§eGold", "§rTransaktion erfolgreich");
  2499. player.speak(p, "§eGold", "§r", player_name, " hat dir ", betrag, " Gold überwiesen");
  2500. newgold = geldbeutel - betrag;
  2501. sgv(player, "gcoinsatm", newgold);
  2502. displaygold(player, newgold);
  2503. newgold2 = ggv(p, "gcoinsatm") + betrag;
  2504. sgv(p, "gcoinsatm", newgold2);
  2505. displaygold(p, newgold2);
  2506. }
  2507. goto("wait");
  2508. }
  2509. if(command == "g" || command == "gilde" || command == "guild") {
  2510. if(list.getSize(args) == 0) {
  2511. player.speak(player, commandspräfix, "§r/gilde... (/g, /guild)");
  2512. msg(player, "§6 - invite <name> §rLädt einen Spieler in deine Gilde ein");
  2513. msg(player, "§6 - accept <name> §rNimmt eine Einladung an");
  2514. msg(player, "§6 - info [gname/gildenid] §rGibt Infos über eine Gilde");
  2515. msg(player, "§6 - create <gname> §rRegistriert eine Gilde");
  2516. msg(player, "§6 - kick <name> §rKickt einen Spieler aus deiner Gilde");
  2517. msg(player, "§6 - leader <name> §rBefördert einen Spieler zum einzigen Leiter");
  2518. msg(player, "§6 - officer <name> §rBefördert einen Spieler zum Offizier");
  2519. msg(player, "§6 - adel <name> §rBefördert einen Spieler zum Adel");
  2520. msg(player, "§6 - degrade <name> §rDegradiert einen Spieler");
  2521. msg(player, "§6 - leave §rDu verlässt die Gilde");
  2522. msg(player, "§6 - disband §rDer Leiter löst die Gilde auf");
  2523. msg(player, "§6 - newpos §rDer Gildenblock wird umgesetzt");
  2524. msg(player, "§6 - rename <gname> §rDie Gilde wird umbenannt");
  2525. msg(player, "§6 - fight §rGreift eine andere Gilde an");
  2526. msg(player, "§6 - steal §rStiehlt Gold");
  2527. msg(player, "§6 - spawn §rTeleportiert dich zum Gildenspawn");
  2528. msg(player, "§6 - home §rTeleportiert dich zum Gildenblock");
  2529. msg(player, "§6 - msg <nachricht> §rSendet eine Nachricht an alle Gildenmitglieder");
  2530. msg(player, "§6 - mail <nachricht> §rSendet eine Mail an alle Gildenmitglieder");
  2531. msg(player, "§6 - nick <name> <nickname> §rWeist einem Spieler einen Nicknamen zu");
  2532. msg(player, "§6 - deposit <zahl> §rLegt Gold aufs Gildenkonto");
  2533. msg(player, "§6 - withdraw <zahl> §rHebt Gold vom Gildenkonto ab");
  2534. msg(player, "§6 - gold §rAktiviert/deaktiviert die Gold-Teilung (nur Leader)");
  2535. msg(player, "§6 - xp §rAktiviert/deaktiviert die XP-Teilung (nur Leader)");
  2536. msg(player, "§6 - ad <nachricht> §rSendet eine Nachricht an alle Spieler in der Welt");
  2537. if(set.contains(gamemasters, player.getUuid(player))) {
  2538. msg(player, "§6 - reset §rResettet Gildenpvp");
  2539. msg(player, "§6 - resetplayer <name> §rResettet einen Spieler");
  2540. msg(player, "§6 - resetsafetime <gildenid> §rEntfernt die Schutzzeit einer Gilde");
  2541. msg(player, "§6 - setclass <name> <level> <xp> [jobid] §rBearbeitet die aktuelle bzw. eine Klasse eines Spielers");
  2542. msg(player, "§6 - tp <gildenid> §rTp zum Gildenblock der Gilde");
  2543. }
  2544. if(perm.has(player, "isAdmin")) {
  2545. msg(player, "§6 - mode §rWechselt zwischen Spielmodi Spieler/Mod");
  2546. }
  2547. goto("wait");
  2548. }
  2549. arg0 = text.toLowerCase(list.getIndex(args, 0));
  2550. if(set.contains(gcommandsset, arg0)) {
  2551. if(!isinguild(player_name)) {
  2552. player.speak(player, fehlerpräfix, "§rFür diesen Befehl musst du einer Gilde angehören");
  2553. goto("wait");
  2554. }
  2555. }
  2556. //Gilde registrieren/umbenennen
  2557. if((arg0 == "create" && loc.distance(entity.getLocation(player), gildenvillagerloc) < 8) || arg0 == "rename") {
  2558. if(list.getSize(args) != 2) {
  2559. player.speak(player, fehlerpräfix, "§rDer Gildenname muss aus einem Wort bestehen");
  2560. goto("wait");
  2561. }
  2562. gildenname = list.getIndex(args, 1);
  2563. if(text.length(gildenname) > 20) {
  2564. player.speak(player, fehlerpräfix, "§rDer Gildenname darf maximal 20 Zeichen lang sein");
  2565. goto("wait");
  2566. }
  2567. if(!onlyletters(gildenname)) {
  2568. player.speak(player, fehlerpräfix, "§rDer Gildenname darf nur Buchstaben enthalten");
  2569. goto("wait");
  2570. }
  2571. gmap.toTable(gildennamentable, "gildennamen");
  2572. for(i = 0; i <= table.getSize(gildennamentable) - 1; i++) {
  2573. if(table.get(gildennamentable, i, 1) == gildenname) {
  2574. player.speak(player, fehlerpräfix, "§rDieser Gildenname existiert bereits");
  2575. goto("wait");
  2576. }
  2577. }
  2578. if(arg0 == "create") {
  2579. if(isinguild(player_name)) {
  2580. player.speak(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  2581. goto("wait");
  2582. }
  2583. coinsnow = ggv(player, "gcoinsatm");
  2584. if(coinsnow < buypricegblock) {
  2585. player.speak(player, fehlerpräfix, "§rDu besitzt nicht genug Gold um eine Gilde zu gründen");
  2586. goto("wait");
  2587. }
  2588. coinsnew = coinsnow - buypricegblock;
  2589. sgv(player, "gcoinsatm", coinsnew);
  2590. displaygold(player, coinsnew);
  2591. nextid = ggv("SERVER", "gildencounter") + 1;
  2592. sgv("SERVER", "gildencounter", nextid);
  2593. gmap.add("gildennamen", nextid, gildenname);
  2594. player.giveItem(player, read.item(concat("{id:'km:guild_block',Count:1b,tag:{display:{Lore:['", concatspace("ID:", text.number(nextid)), "'],Name:'", gildenname, "'}},Damage:0s}")));
  2595. player.speak(player, gildepräfix, "§rGilde erfolgreich erstellt");
  2596. }
  2597. elseif(arg0 == "rename") {
  2598. gildenid = player.getGuild(player);
  2599. gildenkonto = gmap.get("gildencoins", gildenid);
  2600. if(gildenkonto < 1000) {
  2601. player.speak(player, fehlerpräfix, concat("§rDeine Gilde hat nur ", gildenkonto, " Gold. Es werden aber 1000 benötigt"));
  2602. goto("wait");
  2603. }
  2604. gmap.add("gildencoins", gildenid, gildenkonto - 1000);
  2605. gmap.add("gildennamen", gildenid, gildenname);
  2606. plotid = getplotid(read.location(gmap.get("gildenblock", gildenid)));
  2607. command("plot name ", plotid, " ", gildenname);
  2608. nachricht = concat("§rDie Gilde wurde in §7", gildenname, "§r umbenannt");
  2609. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  2610. }
  2611. goto("wait");
  2612. }
  2613. if(arg0 == "ad") {
  2614. if(list.getSize(args) < 2) {
  2615. player.speak(player, commandspräfix, "ad <nachricht>");
  2616. } else {
  2617. //Check auf 2 Gold
  2618. coinsnow = ggv(player, "gcoinsatm");
  2619. if(coinsnow < 2) {
  2620. player.speak(player, fehlerpräfix, "§rDu besitzt nicht genug Gold dafür");
  2621. goto("wait");
  2622. }
  2623. //Cooldown 180 Sek Check
  2624. lasttime = map.get(adcooldown, player);
  2625. nowtime = time.getMillis();
  2626. if(lasttime != null) {
  2627. difftime = nowtime - lasttime;
  2628. if(difftime < 180000) { //180 Sekunden
  2629. player.speak(player, fehlerpräfix, text.number(math.roundDown(difftime / 1000)), " von 180 Sekunden vergangen");
  2630. goto("wait");
  2631. }
  2632. }
  2633. //endgültige Bearbeitung
  2634. map.add(adcooldown, player, nowtime);
  2635. sgv(player, "gcoinsatm", coinsnow - 2);
  2636. nachricht = concatList(args, " ", 1, list.getSize(args) - 1);
  2637. sendworldmessage("§6Handel", concat("§6", nachricht));
  2638. }
  2639. goto("wait");
  2640. }
  2641. if(arg0 == "mail") {
  2642. gildenid = player.getGuild(player);
  2643. if(!isleaderorofficer(gildenid, player_name)) {
  2644. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  2645. goto("wait");
  2646. }
  2647. sendguildmail(player, gildenid, concatList(args, " ", 1, list.getSize(args) - 1));
  2648. goto("wait");
  2649. }
  2650. if(arg0 == "msg") {
  2651. gildenid = player.getGuild(player);
  2652. nachricht = concat("§e", player_name, "§r ", concatList(args, " ", 1, list.getSize(args) - 1));
  2653. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  2654. goto("wait");
  2655. }
  2656. if(arg0 == "nick") {
  2657. if(list.getSize(args) != 3) {
  2658. player.speak(player, commandspräfix, "/guild nick <player> <nickname>");
  2659. goto("wait");
  2660. }
  2661. pname = list.getIndex(args, 1);
  2662. nickname = concatList(args, " ", 1, list.getSize(args) - 1);
  2663. if(!checkifeveronline(pname)) {
  2664. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2665. goto("wait");
  2666. }
  2667. if(!isleaderorofficer(gildenid, player_name)) {
  2668. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  2669. goto("wait");
  2670. }
  2671. if(!checkifsameguild(pname, player_name)) {
  2672. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  2673. goto("wait");
  2674. }
  2675. if(text.length(nickname) > 15) {
  2676. player.speak(player, fehlerpräfix, "§rDer Nickname darf maximal 15 Zeichen lang sein");
  2677. goto("wait");
  2678. }
  2679. gmap.add("gnicknames", player.getUuid(pname), nickname);
  2680. player.speak(player, gildepräfix, "§rDer Nickname §7", nickname, "§r wurde §7", pname, "§r erfolgreich zugewiesen");
  2681. }
  2682. if(arg0 == "info") {
  2683. if(list.getSize(args) == 1) {
  2684. if(!isinguild(player_name)) {
  2685. player.speak(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  2686. goto("wait");
  2687. }
  2688. gildenid = player.getGuild(player);
  2689. gildenname = gmap.get("gildennamen", gildenid);
  2690. arg1 = null;
  2691. }
  2692. if(list.getSize(args) == 2) {
  2693. arg1 = list.getIndex(args, 1);
  2694. if(text.class(arg1) == "Double") {
  2695. gildenid = arg1;
  2696. gildenname = gmap.get("gildennamen", gildenid);
  2697. if(gildenname == null) {
  2698. player.speak(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2699. goto("wait");
  2700. }
  2701. } else {
  2702. gildenname = toLowerCase(arg1);
  2703. gildenid = getgidtogname(gildenname);
  2704. if(gildenid == null) {
  2705. player.speak(player, fehlerpräfix, "§rDieser Gildenname existiert nicht");
  2706. goto("wait");
  2707. }
  2708. }
  2709. }
  2710. list.new(officerslist);
  2711. list.new(memberslist);
  2712. gdmap.toTable(table, "gmembers", gildenid);
  2713. for(i = 0; i <= table.getSize(table) - 1; i++) {
  2714. pname = player.getName(table.get(table, i, 0));
  2715. puuid = player.getUuid(pname);
  2716. prang = table.get(table, i, 1);
  2717. if(prang == "Leiter") {
  2718. if(gmap.get("gnicknames", puuid) != null) {
  2719. leader = concat(gmap.get("gnicknames", puuid), " ", pname);
  2720. } else {
  2721. leader = pname;
  2722. }
  2723. } else {
  2724. if(prang == "Offizier") {
  2725. if(gmap.get("gnicknames", puuid)) {
  2726. list.add(officerslist, concat(gmap.get("gnicknames", puuid), " ", pname));
  2727. } else {
  2728. list.add(officerslist, pname);
  2729. }
  2730. } else {
  2731. if(prang == "Mitglied") {
  2732. if(gmap.get("gnicknames", puuid) != null) {
  2733. list.add(memberslist, concat(gmap.get("gnicknames", puuid), " ", pname));
  2734. } else {
  2735. list.add(memberslist, pname);
  2736. }
  2737. }
  2738. }
  2739. }
  2740. }
  2741. if(list.getSize(officerslist) == 0) {
  2742. officers = "-";
  2743. } else {
  2744. officers = concatList(officerslist, ", ", 0, list.getSize(officerslist) - 1);
  2745. }
  2746. if(list.getSize(memberslist) == 0) {
  2747. members = "-";
  2748. } else {
  2749. members = concatList(memberslist, ", ", 0, list.getSize(memberslist) - 1);
  2750. }
  2751. msg(player, "§6§lGilde");
  2752. msg(player, "§r", gildenname, " (#ID ", text.number(gildenid), ")");
  2753. msg(player, "§lLeiter");
  2754. msg(player, "§r", leader);
  2755. msg(player, "§lOffiziere");
  2756. msg(player, "§r", officers);
  2757. msg(player, "§lMitglieder");
  2758. msg(player, "§r", members);
  2759. if(arg1 == null) {
  2760. msg(player, "§lSchatzkammer");
  2761. msg(player, "§r", text.number(gmap.get("gildencoins", gildenid)));
  2762. }
  2763. goto("wait");
  2764. }
  2765. if(arg0 == "setclass") {
  2766. if(!set.contains(gamemasters, player.getUuid(player))) {
  2767. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht benutzen");
  2768. goto("wait");
  2769. }
  2770. size = list.getSize(args);
  2771. if(size == 1) {
  2772. msg(player, "§6/gilde setclass <spieler> <level> <xp> [jobid] §rBearbeitet die aktuelle bzw. eine Klasse eines Spielers");
  2773. msg(player, "2 Jäger 5 Krieger");
  2774. msg(player, "3 Schurke 6 Magier");
  2775. msg(player, "4 Barbar 7 Mönch");
  2776. goto("wait");
  2777. }
  2778. if(size == 4 || size == 5) {
  2779. p = read.player(list.getIndex(args, 1));
  2780. if(p == null) {
  2781. player.speak(player, fehlerpräfix, "§rDer angegebene Spieler muss online sein");
  2782. goto("wait");
  2783. }
  2784. level = list.getIndex(args, 2);
  2785. if(text.class(level) != "Double") {
  2786. player.speak(player, fehlerpräfix, "§rZahl erwartet");
  2787. goto("wait");
  2788. }
  2789. if(level < 0) {
  2790. level = 1;
  2791. }
  2792. xp = list.getIndex(args, 3);
  2793. if(text.class(xp) != "Double") {
  2794. player.speak(player, fehlerpräfix, "§rZahl erwartet");
  2795. goto("wait");
  2796. }
  2797. if(size == 4) {
  2798. jobid = getgpvpjob(p);
  2799. } else {
  2800. jobid = list.getIndex(args, 4);
  2801. }
  2802. job.setLevel(p, jobid, level);
  2803. job.setXp(p, jobid, xp);
  2804. display.add(p, 44, "#26-1- ", text.number(xp), "/", text.number(list.getIndex(xplist, level - 1)));
  2805. display.add(p, 41, "Stufe §a", text.number(level));
  2806. player.speak(player, commandspräfix, "§rÄnderungen durchgeführt");
  2807. }
  2808. goto("wait");
  2809. }
  2810. if(arg0 == "tp") { //Tp zum Gildenblock anhand des Gildennamens
  2811. if(!set.contains(gamemasters, player.getUuid(player_name))) {
  2812. player.speak(player, fehlerpräfix, "§rNur für Gamemaster");
  2813. goto("wait");
  2814. }
  2815. if(list.getSize(args) == 1) {
  2816. player.speak(player, commandspräfix, "/gilde tp <gildenid> §rTp zum Gildenblock der Gilde");
  2817. goto("wait");
  2818. }
  2819. if(list.getSize(args) == 2) {
  2820. gildenid = list.getIndex(args, 1);
  2821. if(text.class(gildenid) != "Double") {
  2822. player.speak(player, commandspräfix, "§rDer angegebene Parameter muss eine Zahl sein");
  2823. goto("wait");
  2824. }
  2825. gildenname = gmap.get("gildennamen", gildenid);
  2826. if(gildenname == null) {
  2827. player.speak(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2828. goto("wait");
  2829. }
  2830. command("gamemode spectator ", player_name);
  2831. entity.teleport(player, loc.mod(read.location(gmap.get("gildenblock", gildenid)), 0, 1, 0));
  2832. player.speak(player, commandspräfix, "§rDu wurdest zur Gilde §7", gildenname, " §rteleportiert");
  2833. }
  2834. goto("wait");
  2835. }
  2836. if(arg0 == "gold" || arg0 == "xp") {
  2837. if(!isinguild(player_name)) {
  2838. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  2839. goto("wait");
  2840. }
  2841. gildenid = player.getGuild(player);
  2842. if(!isgroupleader(gildenid, player_name)) {
  2843. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gruppe bist");
  2844. goto("wait");
  2845. }
  2846. if(arg0 == "gold") {
  2847. if(gmap.get("gsharegold", gildenid)) {
  2848. gmap.add("gsharegold", gildenid, false);
  2849. player.speak(player, commandspräfix, "§rGold-Teilung deaktiviert");
  2850. } else {
  2851. gmap.add("gsharegold", gildenid, true);
  2852. player.speak(player, commandspräfix, "§rGold-Teilung aktiviert");
  2853. }
  2854. }
  2855. if(arg0 == "xp") {
  2856. if(gmap.get("gsharexp", gildenid)) {
  2857. gmap.add("gsharexp", gildenid, false);
  2858. player.speak(player, commandspräfix, "§rXP-Teilung deaktiviert");
  2859. } else {
  2860. gmap.add("gsharexp", gildenid, true);
  2861. player.speak(player, commandspräfix, "§rXP-Teilung aktiviert");
  2862. }
  2863. }
  2864. goto("wait");
  2865. }
  2866. if(arg0 == "resetsafetime") {
  2867. if(!set.contains(gamemasters, player.getUuid(player_name))) {
  2868. player.speak(player, fehlerpräfix, "§rNur für Gamemaster");
  2869. goto("wait");
  2870. }
  2871. size = list.getSize(args);
  2872. if(size == 1) {
  2873. player.speak(player, commandspräfix, "§r/gilde resetsafetime <gildenid>");
  2874. goto("wait");
  2875. }
  2876. if(size == 2) {
  2877. gildenid = list.getIndex(args, 1);
  2878. if(text.class(gildenid) != "Double") {
  2879. player.speak(player, commandspräfix, "§rDer angegebene Parameter muss eine Zahl sein");
  2880. goto("wait");
  2881. }
  2882. gildenname = gmap.get("gildennamen", gildenid);
  2883. if(gildenname == null) {
  2884. player.speak(player, fehlerpräfix, "§rDiese Gilde existiert nicht");
  2885. goto("wait");
  2886. }
  2887. gmap.add("gildentime", gildenid, time.getMillis());
  2888. player.speak(player, commandspräfix, "§rDie Schutzzeit der Gilde wurde entfernt");
  2889. }
  2890. goto("wait");
  2891. }
  2892. if(arg0 == "resetplayer") {
  2893. size = list.getSize(args);
  2894. if(size == 1) {
  2895. player.speak(player, commandspräfix, "§r/gilde resetplayer <name>");
  2896. goto("wait");
  2897. }
  2898. if(size == 2) {
  2899. if(!checkifeveronline(list.getIndex(args, 0))) {
  2900. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  2901. goto("wait");
  2902. }
  2903. resetplayer(uuid);
  2904. }
  2905. goto("wait");
  2906. }
  2907. if(list.getSize(args) == 1) {
  2908. goto("size1");
  2909. }
  2910. if(list.getSize(args) == 2) {
  2911. goto("size2");
  2912. }
  2913. }
  2914. goto("wait");
  2915. @size1
  2916. if(arg0 == "steal") {
  2917. owngildenid = player.getGuild(player);
  2918. if(!isinguild(player_name)) {
  2919. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  2920. goto("wait");
  2921. }
  2922. gildenid = map.get(gattackers, owngildenid);
  2923. plotid = gmap.get("gildenplot", gildenid);
  2924. if(!map.contains(gattackers, owngildenid)) {
  2925. player.speak(player, fehlerpräfix, "§rDeine Gilde greift niemanden an (§6/g fight§r)!");
  2926. goto("wait");
  2927. }
  2928. set = map.get(gfights, plotid);
  2929. if(!set.contains(set, player_name)) {
  2930. player.speak(player, fehlerpräfix, "§rDu nimmmst nicht am Kampf deiner Gilde teil");
  2931. goto("wait");
  2932. }
  2933. if(map.get(gstatus, plotid) == 0) {
  2934. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl erst verwenden, wenn der Gildenblock zerstört wurde");
  2935. goto("wait");
  2936. }
  2937. ploc = entity.getLocation(player);
  2938. x = loc.getCoord(ploc, "bx");
  2939. y = loc.getCoord(ploc, "by");
  2940. z = loc.getCoord(ploc, "bz");
  2941. nachricht = concat("§7", player_name, "§r stiehlt Gold aus der Schatkammer! ", x, ":", y, ":", z);
  2942. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  2943. entity.addEffect(player, "WEAKNESS", 600, 2);
  2944. entity.addEffect(player, "SLOW", 600, 3);
  2945. list.add(gstealerloc, entity.getLocation(player));
  2946. list.add(gstealername, player_name);
  2947. list.add(gstealerstate, 0);
  2948. sgoto(100, "stealchecker");
  2949. goto("wait");
  2950. }
  2951. if(arg0 == "spawn") {
  2952. if(checkforenimies(player, player_name)) {
  2953. //player.speak(player, fehlerpräfix, "§rGegner in der Nähe");
  2954. //cancel = true; Auskommentiert: Um Bauarbeiten zu ermöglichen, während andere Spieler in der Nähe sind
  2955. goto("wait");
  2956. }
  2957. entity.teleport(player, gildenspawnloc);
  2958. goto("wait");
  2959. }
  2960. if(arg0 == "home") {
  2961. gildenid = player.getGuild(player);
  2962. if(!isinguild(player_name)) {
  2963. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  2964. goto("wait");
  2965. }
  2966. if(checkforenimies(player, player_name)) {
  2967. //player.speak(player, fehlerpräfix, "§rGegner in der Nähe");
  2968. //cancel = true; Auskommentiert: Um Bauarbeiten zu ermöglichen, während andere Spieler in der Nähe sind
  2969. goto("wait");
  2970. }
  2971. entity.teleport(player, loc.mod(read.location(gmap.get("gildenblock", gildenid)), 0.5, 1.1, 0.5));
  2972. goto("wait");
  2973. }
  2974. if(arg0 == "newpos") {
  2975. gildenid = player.getGuild(player);
  2976. plotid = gmap.get("gildenplot", gildenid);
  2977. if(!isinguild(player_name)) {
  2978. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  2979. goto("wait");
  2980. }
  2981. if(!isleader(gildenid, player_name)) {
  2982. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gilde bist");
  2983. goto("wait");
  2984. }
  2985. oldgildenblockloc = read.location(gmap.get("gildenblock", gildenid));
  2986. plotid = getplotid(oldgildenblockloc);
  2987. if(map.contains(gfights, plotid)) {
  2988. player.speak(player, fehlerpräfix, "§rWährend eines Kamps kann der Gildenblock nicht umgesetzt werden");
  2989. cancel = true;
  2990. goto("wait");
  2991. }
  2992. gildenkonto = gmap.get("gildencoins", gildenid);
  2993. if(gildenkonto < 500) {
  2994. player.speak(player, fehlerpräfix, "§rDeine Gilde hat nur ", gildenkonto, " Gold. Es werden aber 500 benötigt");
  2995. cancel = true;
  2996. goto("wait");
  2997. }
  2998. gmap.toTable(gildenblocktable, "gildenblock");
  2999. glocaktuell = read.location(gmap.get("gildenblock", gildenid));
  3000. for(i = 0; i <= table.getSize(gildenblocktable) - 1; i++) {
  3001. checkloc = read.location(table.get(gildenblocktable, i, 1));
  3002. if(glocaktuell != checkloc) {
  3003. distance = loc.distance(checkloc, entity.getLocation(player));
  3004. if(distance < 1100) {
  3005. player.speak(player, fehlerpräfix, "§rGildenblöcke müssen mindestens 1100 Blöcke voneinander entfernt sein (Aktuell: ", text.number(math.roundUp(distance)), ").");
  3006. cancel = true;
  3007. goto("wait");
  3008. }
  3009. }
  3010. }
  3011. for(y = 0; y <= 7; y++) {
  3012. for(z = -5; z <= 5; z++) {
  3013. for(x = -5; x <= 5; x++) {
  3014. moddedloc = loc.mod(entity.getLocation(player), x, y, z);
  3015. if(block.getType(moddedloc) != "minecraft:air") {
  3016. if(entity.getLocation(player) != moddedloc) {
  3017. player.speak(player, fehlerpräfix, "§rIm Bereich von 5 Blöcken seitlich und 7 Blöcken nach oben dürfen sich keine anderen Blöcke befinden");
  3018. cancel = true;
  3019. goto("wait");
  3020. }
  3021. }
  3022. }
  3023. }
  3024. }
  3025. if(!block.isSolid(loc.mod(block_loc, 0, -1, 0))) {
  3026. player.speak(player, fehlerpräfix, "§rDer Block unter dem Gildenblock muss ein solider Block sein");
  3027. cancel = true;
  3028. goto("wait");
  3029. }
  3030. btype = block.getType(loc.mod(block_loc, 0, -1, 0));
  3031. if(btype == "minecraft:leaves" || btype == "minecraft:leaves2") {
  3032. player.speak(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein Laub sein");
  3033. cancel = true;
  3034. goto("wait");
  3035. }
  3036. if(set.contains(richblocks, btype)) {
  3037. player.speak(player, fehlerpräfix, "§rDer Block unter dem Gildenblock darf kein wertvoller Block sein");
  3038. cancel = true;
  3039. goto("wait");
  3040. }
  3041. loc = entity.getLocation(player);
  3042. x = loc.getX(loc);
  3043. x1 = x - 150;
  3044. x2 = x + 150;
  3045. z = loc.getZ(loc);
  3046. z1 = z -150;
  3047. z2 = z + 150;
  3048. gsedge1 = read.location(concat("gpvpnew:", x1, ":0:", z1));
  3049. gsedge2 = read.location(concat("gpvpnew:", x2, ":255:", z2));
  3050. moveid = event.addMoveData(gsedge1, gsedge2, 100, -1);
  3051. map.add(gmoveids, moveid, gildenid);
  3052. map.add(gmoveids2, gildenid, moveid);
  3053. if(plot.doesIntersect(gsedge1, gsedge2)) {
  3054. player.speak(player, fehlerpräfix, "§rIm Gebiet herrscht bereits eine andere Gilde");
  3055. cancel = true;
  3056. goto("wait");
  3057. }
  3058. command("plot remove ", plotid);
  3059. plot.add(gsedge1, gsedge2, player_name);
  3060. plotid = getplotid(entity.getLocation(player));
  3061. //Alle Spieler auf das neue GS sharen
  3062. gdmap.toTable(table, "gmembers", gildenid);
  3063. for(i = 0; i <= table.getSize(table) - 1; i++) {
  3064. pname = player.getName(table.get(table, i, 0));
  3065. command("plot share ", pname, " ", plotid);
  3066. }
  3067. ploc = entity.getLocation(player);
  3068. w = loc.getCoord(ploc, "w");
  3069. x = loc.getCoord(ploc, "bx");
  3070. y = loc.getCoord(ploc, "by");
  3071. z = loc.getCoord(ploc, "bz");
  3072. newpos = concat(w, ":", x, ":", y, ":", z);
  3073. gmap.add("gildencoins", gildenid, gildenkonto - 500);
  3074. gmap.add("gildenblock", gildenid, newpos);
  3075. gmap.add("gildenplot", gildenid, plotid);
  3076. gmap.add("gildenplot2", plotid, gildenid);
  3077. block.set(oldgildenblockloc, airitem);
  3078. set.remove(forbiddenblocks, loc.mod(oldgildenblockloc, 0, -1, 0));
  3079. for(y = 0; y <= 7; y++) {
  3080. for(z = -5; z <= 5; z++) {
  3081. for(x = -5; x <= 5; x++) {
  3082. set.remove(forbiddenblocks2, loc.mod(oldgildenblockloc, x, y, z));
  3083. }
  3084. }
  3085. }
  3086. newposloc = read.location(newpos);
  3087. block.set(newposloc, guildblockitem);
  3088. set.add(forbiddenblocks, loc.mod(newposloc, 0, -1, 0));
  3089. for(y = 0; y <= 7; y++) {
  3090. for(z = -5; z <= 5; z++) {
  3091. for(x = -5; x <= 5; x++) {
  3092. set.add(forbiddenblocks2, loc.mod(newposloc, x, y, z));
  3093. }
  3094. }
  3095. }
  3096. player.speak(player, gildepräfix, "§rDer Gildenblock wurde erfolgreich umgesetzt");
  3097. goto("wait");
  3098. }
  3099. if(arg0 == "fight") {
  3100. players.toWorldList(worldonline, gpvpworld);
  3101. owngildenid = player.getGuild(player);
  3102. if(!isinguild(player_name)) {
  3103. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3104. goto("wait");
  3105. }
  3106. if(!isleaderorofficer(owngildenid, player_name)) {
  3107. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  3108. goto("wait");
  3109. }
  3110. plotid = getplotid(entity.getLocation(player));
  3111. if(plotid == null) {
  3112. player.speak(player, fehlerpräfix, "§rDu befindest dich auf keinem Gildengrundstück");
  3113. goto("wait");
  3114. }
  3115. gildenid = gmap.get("gildenplot2", plotid);
  3116. if(gildenid == owngildenid) {
  3117. player.speak(player, fehlerpräfix, "§rDu kannst dich nicht selbst angreifen");
  3118. goto("wait");
  3119. }
  3120. if(map.contains(gfights, plotid)) { //Die Gilde verteidigt sich gerade
  3121. player.speak(player, fehlerpräfix, "§rDiese Gilde wird gerade angegriffen");
  3122. goto("wait");
  3123. }
  3124. if(map.contains(gattackers, gmap.get("gildenplot2", plotid))) { //Die Gilde greift gerade jemanden an
  3125. player.speak(player, fehlerpräfix, "§rDiese Gilde befindet sich gerade im Kampf");
  3126. goto("wait");
  3127. }
  3128. nextattacktime = gmap.get("gildentime", gildenid);
  3129. if(time.getMillis() < nextattacktime) {
  3130. time = math.round(nextattacktime - time.getMillis() / 60000);
  3131. player.speak(player, fehlerpräfix, "§rDiese Gilde kann erst in ", time, " Minuten angegriffen werden");
  3132. goto("wait");
  3133. }
  3134. set.new(fightset);
  3135. enimiesonline = 0;
  3136. ownonline = 0;
  3137. for(i = 0; i <= list.getSize(worldonline) - 1; i++) {
  3138. puuid = list.getIndex(worldonline, i);
  3139. if(gdmap.get("gmembers", gildenid, puuid) != null) {
  3140. ++enimiesonline;
  3141. set.add(fightset, puuid);
  3142. }
  3143. elseif(gdmap.get("gmembers", owngildenid, puuid) != null) {
  3144. ++ownonline;
  3145. set.add(fightset, puuid);
  3146. }
  3147. }
  3148. if(enimiesonline < 3) {
  3149. player.speak(player, fehlerpräfix, "§rEs müssen sich mindestens drei Mitglieder der anzugreifenden Gilde in dieser Welt befinden");
  3150. goto("wait");
  3151. }
  3152. if(enimiesonline / ownonline < 0.8) {
  3153. player.speak(player, fehlerpräfix, "§rDas Verteidiger/Angreifer-Verhältnis muss mindestens 0,8 betragen");
  3154. goto("wait");
  3155. }
  3156. map.add(gfights, plotid, fightset);
  3157. map.add(gstatus, plotid, 0);
  3158. table.addRow(gstatustable, plotid, 0);
  3159. map.add(clicks, read.location(gmap.get("gildenblock", gildenid)), 200);
  3160. map.add(gattackers, owngildenid, gildenid);
  3161. map.add(gdefenders, gildenid, owngildenid);
  3162. map.add(blocktime, gildenid, time.getMillis());
  3163. //Skills aktivieren
  3164. opponent = gmap.get("gildennamen", owngildenid);
  3165. gmap.add("gildentime", owngildenid, time.getMillis() + 27000000);
  3166. nachricht = concat("§cDeine Gilde befindet sich nun im Kampf mit ", gmap.get("gildennamen", gildenid));
  3167. sendguildmessage(owngildenid, gildepräfix, nachricht, false);
  3168. subtitle = concat("§cIhr greift ", gmap.get("gildennamen", gildenid), " an");
  3169. sendguildtitle(owngildenid, "§4Kampf", subtitle);
  3170. gmap.add("gildentime", gildenid, time.getMillis() + 27000000);
  3171. nachricht = concat("§cDie Gilde ", opponent, " hat euch soeben den Krieg erklärt!");
  3172. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3173. subtitle = concat("§cIhr werdet von ", opponent, " angegriffen");
  3174. sendguildtitle(gildenid, "§4Kampf", subtitle);
  3175. sgoto(72000, "checkdefendwin");
  3176. goto("wait");
  3177. }
  3178. if(arg0 == "mode") {
  3179. uuid = player.getUuid(player);
  3180. if(perm.has(player, "isAdmin")) {
  3181. perm.unregisterPlayer(uuid, 3);
  3182. perm.registerPlayer(uuid, 9);
  3183. gdmap.remove("permsread", "mod", uuid);
  3184. gdmap.remove("permslist", uuid, "mod");
  3185. gdmap.add("permsread", "pseudomod", uuid, true);
  3186. gdmap.add("permslist", uuid, "pseudomod", true);
  3187. player.speak(player, commandspräfix, "§rDu hast nun keine Mod-Rechte mehr");
  3188. } elseif(perm.has(player, "isPseudoMod")) {
  3189. perm.registerPlayer(uuid, 3);
  3190. perm.unregisterPlayer(uuid, 9);
  3191. gdmap.remove("permsread", "pseudomod", uuid);
  3192. gdmap.remove("permslist", uuid, "pseudomod");
  3193. gdmap.add("permsread", "mod", uuid, true);
  3194. gdmap.add("permslist", uuid, "mod", true);
  3195. player.speak(player, commandspräfix, "§rDu hast deine Mod-Rechte wieder");
  3196. }
  3197. goto("wait");
  3198. }
  3199. if(arg0 == "leave") {
  3200. gildenid = player.getGuild(player);
  3201. if(!isinguild(player_name)) {
  3202. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3203. goto("wait");
  3204. }
  3205. if(checkifinafight(gildenid)) {
  3206. player.speak(player, fehlerpräfix, "§rDieser Befehl kann nicht ausgeführt werden, während sich deine Gilde im Kampf befindet");
  3207. goto("wait");
  3208. }
  3209. ownuuid = player.getUuid(player_name);
  3210. ownrang = gdmap.get("gmembers", gildenid, ownuuid);
  3211. if(ownrang == "Leiter") {
  3212. player.speak(player, fehlerpräfix, "§rDu musst zuerst jemand anderen mit /leader zum Leiter ernennen");
  3213. goto("wait");
  3214. }
  3215. player.setGuild(player, 0);
  3216. gmap.remove("gnicknames", player.getUuid(player_name));
  3217. plotid = getplotid(read.location(gmap.get("gildenblock", gildenid)));
  3218. command("plot kick ", player_name, " ", plotid);
  3219. gdmap.remove("gmembers", gildenid, ownuuid);
  3220. gmap.add("gmembersatm", gildenid, gmap.get("gmembersatm", gildenid) - 1);
  3221. if(ownrang == "Adel") {
  3222. gmap.add("adelatm", gildenid, gmap.get("adelatm", gildenid) - 1);
  3223. }
  3224. sgv(player, "nextjoin", time.getMillis() + 43200000);
  3225. player.speak(player, gildepräfix, "§rDu hast die Gilde verlassen");
  3226. nachricht = concat("§7", player_name, "§r hat die Gilde verlassen");
  3227. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3228. goto("wait");
  3229. }
  3230. if(arg0 == "disband") {
  3231. gildenid = player.getGuild(player);
  3232. if(!isinguild(player_name)) {
  3233. player.speak(player, fehlerpräfix, "§rDu bist in keiner Gilde");
  3234. goto("wait");
  3235. }
  3236. if(!isleader(gildenid, player_name)) {
  3237. player.speak(player, fehlerpräfix, "§rDu bist nicht der Leiter der Gilde");
  3238. goto("wait");
  3239. }
  3240. if(checkifinafight(gildenid)) {
  3241. player.speak(player, fehlerpräfix, "§rDeine Gilde befindet sich im Kampf");
  3242. goto("wait");
  3243. }
  3244. ownuuid = player.getUuid(player_name);
  3245. gdmap.toTable(table, "gmembers", gildenid);
  3246. if(table.getSize(table) != 1) {
  3247. player.speak(player, fehlerpräfix, "§rEntlasse zuerst alle Spieler aus der Gilde");
  3248. goto("wait");
  3249. }
  3250. player.setGuild(player, 0);
  3251. gmap.remove("gnicknames", player.getUuid(player_name));
  3252. gdmap.removeAll("gmembers", gildenid);
  3253. gmap.remove("gildencoins", gildenid);
  3254. gmap.remove("gildennamen", gildenid);
  3255. gildenblockloc = read.location(gmap.get("gildenblock", gildenid));
  3256. for(y = 0; y <= 7; y++) {
  3257. for(z = -5; z <= 5; z++) {
  3258. for(x = -5; x <= 5; x++) {
  3259. set.remove(forbiddenblocks2, loc.mod(gildenblockloc, x, y, z));
  3260. }
  3261. }
  3262. }
  3263. block.set(gildenblockloc, airitem);
  3264. plotid = getplotid(gildenblockloc);
  3265. command("plot remove ", plotid);
  3266. gmap.remove("gildenblock", gildenid);
  3267. gmap.remove("membersmax", gildenid);
  3268. gmap.remove("gmembersatm", gildenid);
  3269. gmap.remove("adelmax", gildenid);
  3270. gmap.remove("adelatm", gildenid);
  3271. gmap.remove("gildentime", gildenid);
  3272. gmap.remove("gildenplot2", gmap.get("gildenplot", gildenid));
  3273. gmap.remove("gildenplot", gildenid);
  3274. moveid = map.get(gmoveids2, gildenid);
  3275. event.removeMoveData(moveid);
  3276. map.remove(gmoveids, moveid);
  3277. map.remove(gmoveids2, gildenid);
  3278. player.speak(player, gildepräfix, "§rDu hast die Gilde gelöscht");
  3279. goto("wait");
  3280. }
  3281. if(arg0 == "reset") {
  3282. if(!set.contains(gameadmins, player.getUuid(player_name))) {
  3283. player.speak(player, fehlerpräfix, "§rNur DER EINE kann diesen Befehl ausführen");
  3284. goto("wait");
  3285. }
  3286. //Alle Spieler in der Gildenpvp-Welt zum Spawn teleportieren
  3287. players.toWorldList(worldlist, gpvpworld);
  3288. for(i = 0; i <= list.getSize(worldlist) - 1; i++) {
  3289. p = list.getIndex(worldlist, i);
  3290. display.reset(p);
  3291. entity.teleport(p, serverspawn);
  3292. player.clearInventory(p);
  3293. }
  3294. //Artefakt
  3295. arteyetloc = read.location(ggv("SERVER", "arteyetloc"));
  3296. if(arteyetloc != null) {
  3297. //Wenn Arte platziert und nicht im Inv eines Spielers
  3298. block.set(arteyetloc, airitem);
  3299. }
  3300. //Playerreset
  3301. gmap.toTable(table, "gpvpplayers");
  3302. size = table.getSize(table);
  3303. for(i = 0; i <= size - 1; i++) {
  3304. uuid = table.get(table, i, 0);
  3305. resetplayer(uuid);
  3306. }
  3307. //Gilden- und Gruppenreset
  3308. gmap.toTable(table, "gtype");
  3309. size = table.getSize(table);
  3310. for(i = 0; i <= size - 1; i++) {
  3311. gid = table.get(table, i, 0);
  3312. type = table.get(table, i, 1);
  3313. if(type == "guild") {
  3314. block.set(read.location(gmap.get("gildenblock", gid)), airitem);
  3315. command("plot remove ", gmap.get("gildenplot", gid));
  3316. }
  3317. }
  3318. //Datenbank leeren
  3319. gmap.removeAll("gildencoins");
  3320. gmap.removeAll("gildenblock");
  3321. gmap.removeAll("gildennamen");
  3322. gmap.removeAll("gildentime");
  3323. gmap.removeAll("gildenplot");
  3324. gmap.removeAll("gildenplot2");
  3325. gmap.removeAll("gsharexp");
  3326. gmap.removeAll("gsharegold");
  3327. gmap.removeAll("gnicknames");
  3328. gmap.removeAll("adelmax");
  3329. gmap.removeAll("adelatm");
  3330. gmap.removeAll("membersmax");
  3331. gmap.removeAll("gmembersatm");
  3332. gmap.removeAll("gtype");
  3333. gmap.removeAll("gpvpplayers");
  3334. gmap.removeAll("golddelay");
  3335. gdmap.removeAll("dailyrewardplayers");
  3336. gdmap.removeAll("gildeninvite");
  3337. gdmap.removeAll("gmembers");
  3338. //gdmap.removeAll("gfriends");
  3339. sgv("SERVER", "gildencounter", null);
  3340. sgv("SERVER", "artedaycounter", null);
  3341. sgv("SERVER", "arteyetloc", null);
  3342. sgv("SERVER", "artehitpoints", null);
  3343. msg("online", "Loading .");
  3344. waitfor(20);
  3345. msg("online", "14% Hässliche Gildenbasen abreißen");
  3346. waitfor(20);
  3347. msg("online", "Loading ..");
  3348. msg("online", "45% Hässliche Gildenbasen abreißen");
  3349. waitfor(20);
  3350. msg("online", "Loading ...");
  3351. msg("online", "79% Hässliche Gildenbasen abreißen");
  3352. waitfor(20);
  3353. msg("online", "Loading .");
  3354. msg("online", "FINISHED Hässliche Gildenbasen abreißen");
  3355. waitfor(20);
  3356. msg("online", "Loading ..");
  3357. msg("online", "8% Spawn neu konzipieren");
  3358. waitfor(20);
  3359. msg("online", "Loading ...");
  3360. msg("online", "36% Spawn neu konzipieren");
  3361. waitfor(20);
  3362. msg("online", "Loading .");
  3363. msg("online", "68% Spawn neu konzipieren");
  3364. waitfor(20);
  3365. msg("online", "Loading ..");
  3366. msg("online", "99% Spawn neu konzipieren");
  3367. waitfor(20);
  3368. msg("online", "Loading completed");
  3369. msg("online", "Wir behalten doch den alten :^)");
  3370. waitfor(20);
  3371. msg("online", "§6Gildenpvp §rwurde resettet. Ein neues §6Zeitalter §rbeginnt!");
  3372. msg("dev", "§cScript neu starten");
  3373. players.toWorldList(worldlist, gpvpworld);
  3374. size = list.getSize(wordlist);
  3375. if(size > 0) {
  3376. msg("dev", concat("§b§", size, " §cSpieler in der Welt!"));
  3377. }
  3378. term();
  3379. }
  3380. goto("wait");
  3381. function resetplayer(uuid) {
  3382. gildenid = player.getGuild(uuid);
  3383. pname = player.getName(puuid);
  3384. if(isinguild(pname)) {
  3385. }
  3386. if(isingroup(pname)) {
  3387. }
  3388. player.setGuild(uuid, 0);
  3389. sgv(uuid, "nextjoin", null);
  3390. sgv(uuid, "gcoinsatm", null);
  3391. sgv(uuid, "gcoinsbank", null);
  3392. sgv(uuid, "gpvpjoined", null);
  3393. for(i = 1; i <= 8; i++) {
  3394. for(id = 2; id <= 7; id++) {
  3395. sgv(uuid, concat(id, "gpvphotkey", i), null);
  3396. }
  3397. }
  3398. }
  3399. return;
  3400. @size2
  3401. if(arg0 == "degrade") {
  3402. pname = list.getIndex(args, 1);
  3403. puuid = player.getUuid(pname);
  3404. ownuuid = player.getUuid(player_name);
  3405. gildenid = player.getGuild(player);
  3406. rang = gdmap.get("gmembers", gildenid, ownuuid);
  3407. prang = gdmap.get("gmembers", gildenid, puuid);
  3408. if(!isinguild(player_name)) {
  3409. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3410. goto("wait");
  3411. }
  3412. if(!isleaderorofficer(gildenid, player_name)) {
  3413. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  3414. goto("wait");
  3415. }
  3416. if(!checkifeveronline(pname)) {
  3417. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  3418. goto("wait");
  3419. }
  3420. if(!checkifsameguild(pname, player_name)) {
  3421. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  3422. goto("wait");
  3423. }
  3424. if(!isyourself(player_name, pname)) {
  3425. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht auf dich selbst anwenden");
  3426. goto("wait");
  3427. }
  3428. if(prang != "Leiter") {
  3429. if(rang != "Adel") {
  3430. player.speak(player, fehlerpräfix, "§rDu kannst nur Adel degradieren");
  3431. goto("wait");
  3432. }
  3433. }
  3434. if(rang == "Adel") {
  3435. gmap.add("adelatm", gildenid, gmap.get("adelatm", gildenid) - 1);
  3436. }
  3437. gdmap.add("gmembers", gildenid, ownuuid, "Mitglied");
  3438. nachricht = concat("§r", pname, " wurde degradiert");
  3439. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3440. goto("wait");
  3441. }
  3442. if(arg0 == "officer") {
  3443. pname = list.getIndex(args, 1);
  3444. uuid = player.getUuid(pname);
  3445. gildenid = player.getGuild(player);
  3446. if(!isinguild(player_name)) {
  3447. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3448. goto("wait");
  3449. }
  3450. if(!isleader(gildenid, player_name)) {
  3451. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gilde bist");
  3452. goto("wait");
  3453. }
  3454. if(!checkifeveronline(pname)) {
  3455. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  3456. goto("wait");
  3457. }
  3458. if(!checkifsameguild(pname, player_name)) {
  3459. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  3460. goto("wait");
  3461. }
  3462. if(!isyourself(player_name, pname)) {
  3463. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht auf dich selbst anwenden");
  3464. goto("wait");
  3465. }
  3466. gdmap.toTable(table, "gmembers", gildenid);
  3467. officers = 0;
  3468. for(i = 0; i <= table.getSize(table) - 1; i++) {
  3469. prang = table.get(table, i, 1);
  3470. puuid = table.get(table, i, 0);
  3471. if(prang == "Offizier") {
  3472. ++officers;
  3473. if(puuid == uuid) {
  3474. player.speak(player, fehlerpräfix, "§rDieser Spieler ist bereits Offizier");
  3475. goto("wait");
  3476. }
  3477. }
  3478. }
  3479. if(officers == 3) {
  3480. player.speak(player, fehlerpräfix, "§rEs darf maximal drei Offiziere geben");
  3481. goto("wait");
  3482. }
  3483. gdmap.add("gmembers", gildenid, uuid, "Offizier");
  3484. nachricht = concat("§7", pname, "§r wurde zum Offizier ernannt");
  3485. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3486. goto("wait");
  3487. }
  3488. if(arg0 == "adel") {
  3489. pname = list.getIndex(args, 1);
  3490. uuid = player.getUuid(pname);
  3491. gildenid = player.getGuild(player);
  3492. if(!isinguild(player_name)) {
  3493. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3494. goto("wait");
  3495. }
  3496. if(!isleaderorofficer(gildenid, player_name)) {
  3497. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  3498. goto("wait");
  3499. }
  3500. if(!checkifeveronline(pname)) {
  3501. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  3502. goto("wait");
  3503. }
  3504. if(!checkifsameguild(pname, player_name)) {
  3505. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  3506. goto("wait");
  3507. }
  3508. if(!isyourself(player_name, pname)) {
  3509. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht auf dich selbst anwenden");
  3510. goto("wait");
  3511. }
  3512. rang = gdmap.get("gmembers", gildenid, uuid);
  3513. if(rang == "Adel") {
  3514. player.speak(player, fehlerpräfix, "§rDieser Spieler gehört bereits dem Adel an");
  3515. goto("wait");
  3516. }
  3517. if(rang == "Leiter" || rang == "Offizier") {
  3518. player.speak(player, fehlerpräfix, "§rDieser Spieler befindet sich bereits in einem höheren Rang");
  3519. goto("wait");
  3520. }
  3521. if(gmap.get("adelatm", gildenid) == gmap.get("adelmax", gildenid)) {
  3522. player.speak(player, fehlerpräfix, "§rEs können im Moment nicht mehr Adelige ernannt werden");
  3523. goto("wait");
  3524. }
  3525. gdmap.add("gmembers", gildenid, uuid, "Adel");
  3526. gmap.add("adelatm", gildenid, gmap.get("adelatm", gildenid) + 1);
  3527. nachricht = concat("§r", pname, " ist nun ein Adeliger");
  3528. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3529. goto("wait");
  3530. }
  3531. if(arg0 == "leader") {
  3532. pname = list.getIndex(args, 1);
  3533. uuid = player.getUuid(pname);
  3534. ownuuid = player.getUuid(player_name);
  3535. gildenid = player.getGuild(player);
  3536. if(!isinguild(player_name)) {
  3537. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3538. goto("wait");
  3539. }
  3540. if(!isleader(gildenid, player_name)) {
  3541. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter der Gilde bist");
  3542. goto("wait");
  3543. }
  3544. if(!checkifeveronline(pname)) {
  3545. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  3546. goto("wait");
  3547. }
  3548. if(!checkifsameguild(pname, player_name)) {
  3549. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  3550. goto("wait");
  3551. }
  3552. if(!isyourself(player_name, pname)) {
  3553. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht auf dich selbst anwenden");
  3554. goto("wait");
  3555. }
  3556. gdmap.add("gmembers", gildenid, uuid, "Leiter");
  3557. nachricht = concat("§7", pname, "§r wurde zum Leiter der Gilde ernannt");
  3558. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3559. gdmap.toTable(table, "gmembers", gildenid);
  3560. officers = 0;
  3561. for(i = 0; i <= table.getSize(table) - 1; i++) {
  3562. if(table.get(table, i, 1) == "Offizier") {
  3563. officers++;
  3564. }
  3565. }
  3566. if(officers == 3) {
  3567. player.speak(player, gildepräfix, "§rEs gibt bereits drei Offiziere. Du bist nun Mitglied");
  3568. gdmap.add("gmembers", gildenid, ownuuid, "Mitglied");
  3569. } else {
  3570. gdmap.add("gmembers", gildenid, ownuuid, "Mitglied");
  3571. }
  3572. goto("wait");
  3573. }
  3574. if(arg0 == "kick") {
  3575. pname = list.getIndex(args, 1);
  3576. puuid = player.getUuid(pname);
  3577. gildenid = player.getGuild(player);
  3578. if(!isinguild(player_name)) {
  3579. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3580. goto("wait");
  3581. }
  3582. if(!checkifeveronline(pname)) {
  3583. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  3584. goto("wait");
  3585. }
  3586. if(!isleaderorofficer(gildenid, player_name)) {
  3587. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  3588. goto("wait");
  3589. }
  3590. if(!checkifsameguild(pname, player_name)) {
  3591. player.speak(player, fehlerpräfix, "§rDieser Spieler ist nicht in deiner Gilde");
  3592. goto("wait");
  3593. }
  3594. if(checkifinafight(gildenid)) {
  3595. player.speak(player, fehlerpräfix, "§rDieser Befehl kann nicht ausgeführt werden, während sich deine Gilde im Kampf befindet");
  3596. goto("wait");
  3597. }
  3598. rang = gdmap.get("gmembers", gildenid, puuid);
  3599. if(rang == "Leiter") {
  3600. player.speak(player, fehlerpräfix, "§rDer Leiter kann nicht entlassen werden. Er selbst kann aber jemand anderen mit /leader zum Leiter ernennen");
  3601. goto("wait");
  3602. }
  3603. if(ownrang == "Offizier" && rang == "Offizier") {
  3604. player.speak(player, fehlerpräfix, "§rDu kannst einen anderen Offizier nicht entlassen");
  3605. goto("wait");
  3606. }
  3607. plotid = getplotid(read.location(gmap.get("gildenblock", gildenid)));
  3608. command("plot kick ", pname, " ", plotid);
  3609. gmap.remove("gnicknames", puuid);
  3610. gdmap.remove("gmembers", gildenid, puuid);
  3611. gmap.add("gmembersatm", gildenid, gmap.get("gmembersatm", gildenid) - 1);
  3612. if(rang == "Adel") {
  3613. gmap.add("adelatm", gildenid, gmap.get("adelatm", gildenid) - 1);
  3614. }
  3615. player.setGuild(puuid, 0);
  3616. sgv(puuid, "nextjoin", time.getMillis() + 43200000);
  3617. sendmessage(pname, gildepräfix, concat("§rDu wurdest aus der Gilde entlassen"), true);
  3618. gdmap.toTable(table, "gmembers", gildenid);
  3619. nachricht = concat("§7", pname, "§r wurde aus der Gilde entlassen");
  3620. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3621. goto("wait");
  3622. }
  3623. if(arg0 == "invite") {
  3624. gildenid = player.getGuild(player);
  3625. if(!isinguild(player_name)) {
  3626. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du in keiner Gilde bist");
  3627. goto("wait");
  3628. }
  3629. if(!isleaderorofficer(gildenid, player_name)) {
  3630. player.speak(player, fehlerpräfix, "§rDu kannst diesen Befehl nicht ausführen, da du nicht der Leiter oder einer der Offiziere der Gilde bist");
  3631. goto("wait");
  3632. }
  3633. pname = list.getIndex(args, 1);
  3634. if(player_name == pname) {
  3635. player.speak(player, fehlerpräfix, "§rDu kannst dich nicht selbst einladen");
  3636. goto("wait");
  3637. }
  3638. if(!checkifeveronline(pname)) {
  3639. player.speak(player, fehlerpräfix, "§rDieser Spieler war noch nie online");
  3640. goto("wait");
  3641. }
  3642. puuid = player.getUuid(pname);
  3643. if(isinguild(pname)) {
  3644. player.speak(player, fehlerpräfix, "§rDieser Spieler ist bereits in einer Gilde");
  3645. goto("wait");
  3646. }
  3647. if(isingroup(pname)) {
  3648. player.speak(player, fehlerpräfix, "§rDieser Spieler ist in einer Gruppe");
  3649. goto("wait");
  3650. }
  3651. gildenname = gmap.get("gildennamen", gildenid);
  3652. if(gdmap.get("gildeninvite", puuid, gildenname) != null) {
  3653. player.speak(player, fehlerpräfix, "§rDieser Spieler hat bereits eine Einladung dieser Gilde erhalten");
  3654. goto("wait");
  3655. }
  3656. gdmap.add("gildeninvite", puuid, gildenname, player.getUuid(player_name));
  3657. table.addRow(invitations, puuid, gildenid);
  3658. nachricht = concat("§r", pname, " hat eine Einladung von deiner Gilde erhalten. Sie ist für 5 Minuten aktiv");
  3659. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3660. sendmessage(pname, gildepräfix, concat("Du wurdest eingeladen, der Gilde ", gildenname, " beizutreten"), true);
  3661. sgoto(6000, "deleteinvitation");
  3662. goto("wait");
  3663. }
  3664. if(arg0 == "accept") {
  3665. gildenname = list.getIndex(args, 1);
  3666. uuid = player.getUuid(player_name);
  3667. if(isinguild(player_name)) {
  3668. player.speak(player, fehlerpräfix, "§rDu bist bereits in einer Gilde");
  3669. goto("wait");
  3670. }
  3671. if(isingroup(player_name)) {
  3672. player.speak(player, fehlerpräfix, "§rDu bist in einer Gruppe");
  3673. goto("wait");
  3674. }
  3675. senderuuid = gdmap.get("gildeninvite", uuid, gildenname);
  3676. if(senderuuid == null) {
  3677. player.speak(player, fehlerpräfix, "§rDu hast keine Einladung von dieser Gilde erhalten");
  3678. goto("wait");
  3679. }
  3680. gildenid = player.getGuild(senderuuid);
  3681. gildenname2 = gmap.get("gildennamen", gildenid);
  3682. if(gildenname2 == null) {
  3683. player.speak(player, fehlerpräfix, "§rError 2: Paradoxon. Player has non existing ID: ", gildenid, " Bitte einem Admin/Moderator/Dev melden");
  3684. goto("wait");
  3685. }
  3686. jointime = ggv(player, "nextjoin");
  3687. if(jointime != null) {
  3688. if(time.getMillis() < jointime) {
  3689. player.speak(player, fehlerpräfix, "§rDu musst insgesamt 12 Stunden warten, bis du wieder einer Gilde beitreten darfst");
  3690. goto("wait");
  3691. }
  3692. }
  3693. if(gmap.get("gmembersatm", gildenid) == gmap.get("membersmax", gildenid)) {
  3694. player.speak(player, fehlerpräfix, "§rDiese Gilde ist bereits voll");
  3695. goto("wait");
  3696. }
  3697. plotid = getplotid(read.location(gmap.get("gildenblock", gildenid)));
  3698. command("plot share ", player_name, " ", plotid);
  3699. gmap.removeAll(gmap);
  3700. gmap.add("gmembersatm", gildenid, gmap.get("gmembersatm", gildenid) + 1);
  3701. player.setGuild(player, gildenid);
  3702. gdmap.add("gmembers", gildenid, uuid, "Mitglied");
  3703. nachricht = concat("§7", concat(player_name, "§r ist der Gilde beigetreten"));
  3704. gdmap.toTable(table, "gmembers", gildenid);
  3705. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3706. goto("wait");
  3707. }
  3708. if(arg0 == "deposit") {
  3709. isinguild(player_name);
  3710. plotid = getplotid(entity.getLocation(player));
  3711. gildenid = player.getGuild(player);
  3712. if(plotid != gmap.get("gildenplot", gildenid)) {
  3713. player.speak(player, fehlerpräfix, "§rFür diese Aktion musst du dich auf dem Gildengrundstück befinden");
  3714. goto("wait");
  3715. }
  3716. betrag = list.getIndex(args, 1);
  3717. try {
  3718. temp = betrag + 1;
  3719. } catch {
  3720. player.speak(player, fehlerpräfix, "§rDer angegebene Parameter muss eine Zahl sein");
  3721. goto("wait");
  3722. }
  3723. if(betrag < 0) {
  3724. player.speak(player, fehlerpräfix, "§rDer Betrag muss positiv sein");
  3725. goto("wait");
  3726. }
  3727. geldbeutel = ggv(player, "gcoinsatm");
  3728. gildenkonto = gmap.get("gildencoins", gildenid);
  3729. if(betrag > geldbeutel) {
  3730. player.speak(player, fehlerpräfix, "§rDu kannst nicht mehr überweisen, als du in deinem Geldbeutel hast");
  3731. goto("wait");
  3732. }
  3733. nachricht = concat("§7", player_name, "§r hat §7", betrag, " Gold §rins Gildenkonto eingezahlt");
  3734. sendguildmessage(gildenid, "§eGold", nachricht, false);
  3735. sgv(player, "gcoinsatm", geldbeutel - betrag);
  3736. displaygold(player, ggv(player, "gcoinsatm"));
  3737. gmap.add("gildencoins", gildenid, gildenkonto + betrag);
  3738. goto("wait");
  3739. }
  3740. if(arg0 == "withdraw") {
  3741. plotid = getplotid(entity.getLocation(player));
  3742. uuid = player.getUuid(player_name);
  3743. gildenid = player.getGuild(player);
  3744. rang = gdmap.get("gmembers", gildenid, uuid);
  3745. if(rang == "Mitglied") {
  3746. player.speak(player, fehlerpräfix, "§rNur der Leiter, die Offiziere und der Adel können Gold vom Gildenkonto abheben");
  3747. goto("wait");
  3748. }
  3749. if(plotid != gmap.get("gildenplot", gildenid)) {
  3750. player.speak(player, fehlerpräfix, "§rFür diese Aktion musst du dich auf deinem Gildengrundstück befinden");
  3751. goto("wait");
  3752. }
  3753. betrag = list.getIndex(args, 1);
  3754. try {
  3755. temp = betrag + 1;
  3756. } catch {
  3757. player.speak(player, fehlerpräfix, "§rDer angegebene Parameter muss eine Zahl sein");
  3758. goto("wait");
  3759. }
  3760. if(betrag < 0) {
  3761. player.speak(player, fehlerpräfix, "§rDer Betrag muss positiv sein");
  3762. goto("wait");
  3763. }
  3764. geldbeutel = ggv(player, "gcoinsatm");
  3765. gildenkonto = gmap.get("gildencoins", gildenid);
  3766. if(betrag > gildenkonto) {
  3767. player.speak(player, fehlerpräfix, "§rDu kannst nicht mehr abheben, als auf dem Gildenkonto ist");
  3768. goto("wait");
  3769. }
  3770. if(checkifinafight(gildenid)) {
  3771. player.speak(player, fehlerpräfix, "§rDieser Befehl kann nicht ausgeführt werden, während sich deine Gilde im Kampf befindet");
  3772. goto("wait");
  3773. }
  3774. player.speak(player, "§eGold", "§rTransaktion erfolgreich");
  3775. sgv(player, "gcoinsatm", geldbeutel + betrag);
  3776. displaygold(player, ggv(player, "gcoinsatm"));
  3777. gmap.add("gildencoins", gildenid, gildenkonto - betrag);
  3778. goto("wait");
  3779. }
  3780. goto("wait");
  3781. @checkdefendwin
  3782. //überprüfung, ob noch gegen die gleich gilde gekämpft wird
  3783. plotid = table.get(gstatustable, 0, 0);
  3784. defenderid = gmap.get("gildenplot2", plotid);
  3785. //check if defender noch im kampf
  3786. if(map.contains(gdefenders, defenderid)) {
  3787. attackerid = map.get(gdefenders, defenderid);
  3788. goto("defendwin");
  3789. }
  3790. goto("wait");
  3791. @stealchecker
  3792. temploc = list.getIndex(gstealerloc, 0);
  3793. tempname = list.getIndex(gstealername, 0);
  3794. tempstate = list.getIndex(gstealerstate, 0);
  3795. list.remove(gstealerloc, 0);
  3796. list.remove(gstealername, 0);
  3797. list.remove(gstealerstate, 0);
  3798. if(loc.distance(temploc, entity.getLocation(read.player(tempname))) < 1) {
  3799. ++tempstate;
  3800. if(tempstate == 6) {
  3801. //gold stehlen erfolgreich. Distance = Distanz zum Gildenblock.
  3802. plotid = getplotid(temploc);
  3803. gildenid = gmap.get("gildenplot2", plotid);
  3804. owngildenid = player.getGuild(player);
  3805. distance = loc.distance(temploc, gmap.get("gildenblock", gildenid));
  3806. if(distance <= 25) {
  3807. //Stehlrate: 2%
  3808. stealrate = 0.02;
  3809. }
  3810. elseif(distance > 25 && distance <= 50) {
  3811. //Stehlrate: 1,5%
  3812. stealrate = 0.015;
  3813. } else {
  3814. //Stehlrate: 1%
  3815. stealrate = 0.01;
  3816. }
  3817. stolengold = gmap.get("gildencoins", gildenid) * stealrate;
  3818. if(stolengold > 200) {
  3819. stolengold = 200;
  3820. }
  3821. elseif(stolengold < 10) {
  3822. stolengold = 10;
  3823. }
  3824. player.speak(player, gildepräfix, "§rDu hast §7", stolengold, " Gold §rgestohlen!");
  3825. nachricht = concat("§7", player_name, "§r hat §7", stolengold, " Gold §rgestohlen!");
  3826. sendguildmessage(gildenid, gildepräfix, nachricht, false);
  3827. gmap.add("gildencoins", gildenid, gmap.get("gildencoins", gildenid) - stolengold);
  3828. gmap.add("gildencoins", owngildenid, gmap.get("gildencoins", owngildenid) + stolengold);
  3829. goto("wait");
  3830. }
  3831. list.add(gstealerloc, temploc);
  3832. list.add(gstealername, tempname);
  3833. list.add(gstealerstate, tempstate);
  3834. }
  3835. goto("wait");
  3836. @checkgroupsize
  3837. if(gmap.get("gmembersatm", groupid) < 2) {
  3838. gdmap.toTable(temptable, "gmembers", groupid);
  3839. for(i = 0; i <= table.getSize(temptable) - 1; i++) {
  3840. tempuuid = table.get(temptable, i, 0);
  3841. player.setGuild(tempuuid, 0);
  3842. player.speak(player, gruppepräfix, "§rDeine Gruppe wurde aufgelöst");
  3843. }
  3844. gdmap.removeAll("gmembers", groupid);
  3845. gmap.add("gmembersatm", groupid, 0);
  3846. }
  3847. goto("wait");
  3848. function checkifinafight(gildenid) {
  3849. if(map.contains(gfights, gmap.get("gildenplot", gildenid)) || map.contains(gattackers, gildenid)) {
  3850. return true;
  3851. }
  3852. return false;
  3853. }
  3854. function isinguild(pname) {
  3855. puuid = player.getUuid(pname);
  3856. id = player.getGuild(puuid);
  3857. if(gmap.get("gtype", id) == "guild") {
  3858. return true;
  3859. }
  3860. return false;
  3861. }
  3862. function isingroup(pname) {
  3863. puuid = player.getUuid(pname);
  3864. id = player.getGuild(puuid);
  3865. if(gmap.get("gtype", id) == "group") {
  3866. return true;
  3867. }
  3868. return false;
  3869. }
  3870. function checkifsameguild(pname1, pname2) {
  3871. if(player.getGuild(player.getUuid(pname1)) == player.getGuild(player.getUuid(pname2))) {
  3872. return true;
  3873. }
  3874. return false;
  3875. }
  3876. function checkifeveronline(pname) {
  3877. if(player.getUuid(pname) == null) {
  3878. return false;
  3879. }
  3880. return true;
  3881. }
  3882. function isgroupleader(groupid, pname) {
  3883. puuid = player.getUuid(pname);
  3884. if(gdmap.get("gmembers", groupid, puuid) == "Leiter") {
  3885. return true;
  3886. }
  3887. return false;
  3888. }
  3889. function isleader(gildenid, pname) {
  3890. ownrang = gdmap.get("gmembers", gildenid, player.getUuid(pname));
  3891. if(ownrang == "Leiter") {
  3892. return true;
  3893. }
  3894. return false;
  3895. }
  3896. function isleaderorofficer(gildenid, pname) {
  3897. ownrang = gdmap.get("gmembers", gildenid, player.getUuid(pname));
  3898. if(ownrang != "Leiter" || ownrang != "Offizier") {
  3899. return true;
  3900. }
  3901. return false;
  3902. }
  3903. function isyourself(pname1, pname2) {
  3904. if(pname1 == pname2) {
  3905. return true;
  3906. }
  3907. return false;
  3908. }
  3909. @deletegroupinvitation
  3910. uuid = table.get(groupinvitations2, 0, 0);
  3911. table.removeRow(groupinvitations2, 0);
  3912. if(map.contains(groupinvitations, uuid)) {
  3913. map.remove(groupinvitations, uuid);
  3914. sendmessage(player.getName(uuid), gruppepräfix, "§rDie Einladung ist abgelaufen", false);
  3915. }
  3916. goto("wait");
  3917. @deleteinvitation
  3918. if(table.getSize(invitations) > 0) {
  3919. uuid = table.get(invitations, 0, 0);
  3920. gildenid = table.get(invitations, 0, 1);
  3921. table.removeRow(invitations, 0);
  3922. gdmap.remove("gildeninvite", uuid, gmap.get("gildennamen", gildenid));
  3923. }
  3924. goto("wait");
  3925. @removegcreater
  3926. list.removeIndex(gcreaterlist, 0);
  3927. goto("wait");
  3928. function sendmessage(pname, topic, nachricht, boolean) { //Sendet eine Chat-Nachricht an einen Spieler. boolean = true heißt Mail geht raus, wenn Empfänger nicht online
  3929. p = read.player(pname);
  3930. if(p != null) {
  3931. player.speak(p, topic, nachricht);
  3932. }
  3933. elseif(boolean) {
  3934. sendmail(player, pname, nachricht);
  3935. }
  3936. return;
  3937. }
  3938. function sendmail(player, pname, nachricht) { //from, to, message. Sendet eine Mail an einen Spieler
  3939. sgv("SERVER", "mailid", ggv("SERVER", "mailid") + 1);
  3940. mailid = read.number(ggv("SERVER", "mailid"));
  3941. uuid = player.getUuid(pname);
  3942. ownuuid = player.getUuid(player);
  3943. gdmap.add("mails", mailid, "from", ownuuid);
  3944. gdmap.add("mails", mailid, "to", uuid);
  3945. gdmap.add("mails", mailid, "readed", false);
  3946. gdmap.add("mails", mailid, "time", time.getMillis());
  3947. gdmap.add("mails", mailid, "message", nachricht);
  3948. gdmap.add("mailin", uuid, mailid, "wusi");
  3949. gdmap.add("mailout", ownuuid, mailid, "wusi");
  3950. //Wenn Spieler online, dann Pushmeldung veranlassen
  3951. player2 = read.player(pname);
  3952. if(player2 != null) {
  3953. player.speak(player2, "§3Mail", "§rDu hast §b1 §rneue Mail");
  3954. }
  3955. return;
  3956. }
  3957. function sendguildmail(player, gildenid, nachricht) { //Sendet eine Mail an alle Mitglieder einer Gilde
  3958. gdmap.toTable(table, "gmembers", gildenid);
  3959. for(i = 0; i <= table.getSize(table) - 1; i++) {
  3960. pname = player.getName(table.get(table, i, 0));
  3961. sendmail(player, pname, nachricht);
  3962. }
  3963. return;
  3964. }
  3965. function sendguildmessage(gildenid, topic, nachricht, boolean) { //Sendet eine Chat-Nachricht an an alle Mitglieder einer Gilde. Wenn boolean = true, dann eine Mail an Offline Members
  3966. gdmap.toTable(table, "gmembers", gildenid);
  3967. for(i = 0; i <= table.getSize(table) - 1; i++) {
  3968. pname = player.getName(table.get(table, i, 0));
  3969. sendmessage(pname, topic, nachricht, boolean);
  3970. }
  3971. return;
  3972. }
  3973. function sendworldmessage(topic, nachricht) { //Sendet eine Chat-Nachricht an alle Spieler in der Gildenpvp-Welt
  3974. players.toWorldList(worldonline, $gpvpworld);
  3975. for(i = 0; i <= list.getSize(worldonline) - 1; i++) {
  3976. p = list.getIndex(worldonline, i);
  3977. player.speak(p, topic, nachricht);
  3978. }
  3979. return;
  3980. }
  3981. function sendguildtitle(gildenid, title, subtitle) { //Sendet einen Title an alle Spieler einer Gilde, wenn diese online sind.
  3982. players.toWorldList(worldonline, gpvpworld);
  3983. for(i = 0; i <= list.getSize(worldonline) - 1; i++) {
  3984. p = list.getIndex(worldonline, i);
  3985. puuid = player.getUuid(p);
  3986. if(gdmap.get("gmembers", gildenid, uuid) != null) {
  3987. title.clear(p);
  3988. title.reset(p);
  3989. title.setSub(p, subtitle);
  3990. title.send(p, title);
  3991. }
  3992. }
  3993. return;
  3994. }
  3995. function getplotid(loc) { //Gibt eine Plotid zurück
  3996. plot.getIds(plotset, loc);
  3997. if(set.getSize(plotset) > 0) {
  3998. set.toList(plotlist, plotset);
  3999. return list.getIndex(plotlist, 0);
  4000. }
  4001. return null;
  4002. }
  4003. @checkfornextday
  4004. time.new(nowcal, time.getMillis());
  4005. if(time.getDay(nowcal) != time.getDay(nowtime)) {
  4006. //TODO wenn nächster Tag
  4007. time.new(actualdaycal, time.getMillis());
  4008. actualday = time.getDay(actualdaycal);
  4009. if(actualday == 1) { //nächster Monat
  4010. gosub("initdreward");
  4011. gdmap.removeAll("dailyrewardplayers");
  4012. }
  4013. gosub("setreward");
  4014. return;
  4015. }
  4016. @initdreward
  4017. //Initialisierung des Daily Reward Invs
  4018. time.new(nowtime, time.getMillis());
  4019. monthnumber = time.getMonth(nowtime); //Welcher Monat ist jetzt?
  4020. monthname = map.get(monthlist, monthnumber); //Wie heißt der Monat?
  4021. daysofmonth = map.get(monthdays, monthnumber); //Wieviele Tage hat der Monat?
  4022. //Anzahl der Slots festlegen (Ergebnis: invstring = "222222222...")
  4023. invstring = "";
  4024. for(i = 0; i <= daysofmonth - 1; i++) {
  4025. invstring = concat(invstring, "2");
  4026. }
  4027. inv.newdynamic(dailyrewardinv, invstring, monthname); //Inv erstellen
  4028. dailyrewardinvid = inv.getID(dailyrewardinv);
  4029. return;
  4030. @setreward
  4031. dailyrewardlist = list.getIndex(allrewards, math.random(0, 4));
  4032. dailyreward = list.getIndex(dailyrewardlist, math.random(0, list.getSize(dailyrewardlist) - 1));
  4033. return;
  4034. function checkforenimies(player, player_name) {
  4035. //Überprüfung, ob sich im Umkreis <= 100 Blöcken Gegner befinden (Gegner != Gilde/Gruppe/Freund)
  4036. //Verlangt folgende gesetzte Variablen: player, player_name
  4037. gildenid = player.getGuild(player);
  4038. ownuuid = player.getUuid(player_name);
  4039. players.near(nearplayers, entity.getLocation(player), 100);
  4040. list.remove(nearplayers, player);
  4041. for(i = 0; i <= list.getSize(nearplayers) - 1; i++) {
  4042. pname = list.getIndex(nearplayers, i);
  4043. puuid = player.getUuid(pname);
  4044. //Überprüfung, ob selbe Gruppe
  4045. if(player.getGuild(puuid) != player.getGuild(ownuuid)) {
  4046. //ja, nicht in selber Gilde/Gruppe
  4047. return true;
  4048. }
  4049. //Überprüfung, ob Freunde
  4050. if(gdmap.get("gfriends", ownuuid, puuid) != null) {
  4051. //ja, die beiden spieler sind keine Freunde
  4052. return true;
  4053. }
  4054. }
  4055. return false;
  4056. }
  4057. function skillspeak(p, pname, skill) {
  4058. //Meldung geht an Spieler im Radius von 15
  4059. loc = entity.getLocation(p);
  4060. players.near(templist, loc, 15);
  4061. for(i = 0; i <= list.getSize(templist) - 1; i++) {
  4062. player.speak(list.getIndex(templist, i), "§2Skills", concat("§6", pname, " §rhat §6", item.getName(skill.getStack(skill)), " §rbenutzt"));
  4063. }
  4064. return;
  4065. }
  4066. function getgpvpjob(player) {
  4067. job.getJobs(jobs, player);
  4068. if(list.getSize(jobs) != 0) { //Spieler nach aktuellem Job durchsuchen
  4069. for(i = 0; i <= list.getSize(jobs) - 1; i++) {
  4070. id = list.getIndex(jobs, i);
  4071. if(id > 1 && id < 8) {
  4072. return id;
  4073. }
  4074. }
  4075. }
  4076. return null;
  4077. }
  4078. function getgidtogname(gildenname) {
  4079. namefound = false;
  4080. gmap.toTable(gildennamentable, "gildennamen");
  4081. for(i = 0; i <= table.getSize(gildennamentable) - 1; i++) {
  4082. gname = text.toLowerCase(table.get(gildennamentable, i, 1));
  4083. if(gname == gildenname) {
  4084. gildenid = table.get(gildennamentable, i, 0);
  4085. return gildenid;
  4086. }
  4087. }
  4088. return null;
  4089. }
  4090. function displaygold(player, gold) {
  4091. display.add(player, 40, "#23-1- §e", text.number(gold));
  4092. return;
  4093. }
  4094. function displayhealth(player, health) {
  4095. display.add(player, 42, "#28-1- ", text.number(health), "/20");
  4096. return;
  4097. }
  4098. function displaymana(player) {
  4099. display.add(player, 43, "#27-1- ", text.number(status.getMana(player)), "/100");
  4100. return;
  4101. }