Jump to content

Recommended Posts

Posted

xa0xa0xa00ax0 :P!!!!!kalo!!

 

loipon arxizoume!!!

"Htane e8imo stn zougkla na ginete ka8e vdomada ena allo zwo vasilias ektos t liodariou.Erxetai loipon h vdomada t lagou.O lagos omws eixe axti ton lyko epeidh tn kynhgage synexeia k etsi otan mazevontan ka8e vrady ta zwa ola mazi leei o lagos:Lyke ela edw p einai to kranos s?paf paf paf paf tn arxise stis fapes.....o lykos xwris na 3erei t na kanei afou synexisthke ayto alles 2-3 fores phge sto liodari k t eipe pws dn ginete etsi afth h katastash 8a me kanei mavro sto 3ulo ka8e mera o lagos epeidh einai vasilias?eda3ei leei to liodari kt 8a kanoume!paei k leei sto lago loipon:Re lage eda3ei to 3eroume oti exeis axti to lyko alla mn t deixneis toso..as poume pes t na paei na s parei tsigara k an s ferei me filtro pes t h8ela afiltra k plakwse ton enw an s ferei afiltra pes t h8ela me filtro k arxisetona.....exeis dikio leei o lagos p to vrhka k gw na lew p einai to kranos s....tespa erxetai to vrady mazevodai ola ta zwa mazi k leei o lagos ston lyko phgaine na m pareis tsigara.perpataei o lykos k teleftea stigmh rwtaei me filtro h xwris ?prin teleiwsei tn frash tou o lykos tou leei o lagos p einai to kranos s? k tn arxizei pali stis fapes :P!!!an to peite apo koda ayto einai kalytero .....alla pistevw na to katalavate e!!

Posted

Ypovathro RealLife proswpwn:

 

Andras kamenos sto la2 apo C1,perasmenos apo 123 Servers,chars created: 345

 

Eksoterika xaraktiristika - ola sxedon normal pera apo ta katakokkina prismena matia tou gia agnostes aities kai ta idiaitera makria daktyla

me megali eukampsia pou synantate mono se megalous pianistes.

 

Psyxologika xaraktiristika - Ola sxedon normal pera apo poikilia paraksenwn memonomenwn peristatikw pou pote den ermineutikan epistimonika. p.x.

Ksypnima mesa ston ypno kai ourliaxta pou periexoun tis akatanomastes fraseis kai hxous "PKKKK NOOOOOBBB, FAE XOMA ZWO, TNV TNV TNV!!!", "QQ REEEE, AINTE BB, GGLIKIA REEEE", "FLAGGARE REEEE!!! KOT KOT KOT!!! TSIREEEE!!! PVP EEEE??? 2VLO EISAI REEE, MOGGOLORRR, NIOOOSOORRR REEE...PSISOOORRR ASAAAAPOORRR!"

 

KOINONIKO STATUS - euporos, sxedon normal koinoniki zoi. Yparksi omos Memonomenwn martyriwn pou xrizoun periergeias, opos:

Autokinito kalis markas pou einai omos vameno se parakseni apoxrosi tou gkri kai grafei sto plai tou th agnosti leksi "WYVERN". Monokatoikia se eypori kai eyhpolipti perioxi, pou exei stin eisodo ton titlo "ADEN CASTLE"

Idiaiteros ekkentrismos sto ntysimo, synithos koustoumi, spor ntysimo h' athlitiko alla panta me assorti papoutsia, gantia kai kapelo sto idio panta xroma kai aneksartitos epoxis tou xronou.

 

Gunaika kameni sto la2, Cx (opou x=1,2,3,4). chars created: 87. Chars best choices: Female Dark Elfs, Female Humans

 

Eksoterika xaraktiristika - Monimo omoiomorfo maurismeno derma (kalokairi thalassa, xeimona solarium), platine malia, perifani kormostasia. Episis entona kokkinismena matia.

 

Psyxologika xaraktiristika - Ola sxedon normal. Paromoies omos kriseis me antistoixo andra se stigmes toso tis imeras oso kai tou nyxterinou ypnou. Fraseis pou katagrafikan apo syggenika kai filika prosopa:

"aaaaaa ti omorfi ARMORRRRR... tha mou ti xariiiiiseiiis? :* ", "tha tin pk tin skrofa...tha faei to dlvl tis zois tis, akous ekei na kolaei ston diko mou!!!", "ti omorfo strider posa adena to pires? ti p.att. exei? tha to kavalisoume mazi???", "tha sou kano kati buffs kai kati dances na ksexaseis to lvl sou !!!"

 

KOINONIKO STATUS - eupori oikogeneia, sxedon normal koinoniki zoi. Paraksenies kai ekkentrismoi pou paratirithikan omos apo to koinoniko tis perivallon, opos:

Entona sexualiko ntysimo me megala mpousta kai apokalyptika foremata, idiaiteri protimisi stin xrhsh maurwn eswrouxwn kai zartierwn (symfona me martyries "kontinwn" ths filwn)

Domatio ekkentrikou & akrivou sxediasmou pou thymizei mesaioniko dungeon h' akoma kai spilia, me to titlo "LAIR" ekso apo tin varia ksylini porta tou.

Agapi se katoikidia pasis fysews, pou ola omos feroun eksoteriko ntysimo se morfi mpertas/koukoulas kai hxografimeni martyria filis opou akougete kathara na ta apokalei ws: "summonaki mou glyko esy!!! "

 

Sxesiako ypovathro twn 2 RL proswpwn:

 

Gnorimia se net cafe kai meta apo ikanou xronou sxesh (pou kata to megalytero meros ths, amfotera oikogeneiaka perivallonta isxyrizontai oti den patousan spitia tous), irthan eis gamou koinonia!

 

Trexousa xronologia: 20 eth meta tin arxiki sxesi kai gamo twn 2 proswpwn pou proanaferame

Trexousa katastasi Lineage: Lineage 7, Chronicle 16 "The Era of HyperSpace"

Trexousa oikogeneiaki katastasi twn 2 proswpwn: 2 apogonoi. Ena agori me to onoma: "Nikol4osGr14" kai ena koritsi me onoma: "H3lenBitch4Ever", hlikiwn 19 kai 17 antistoixa

 

Katagrafi synomilias typikhs imeras oikogeneias:

Ora: 08:42...

Topos: Loc x:1234, y:5432, z:123 (Kouzina spitiou)

 

(eisodos giou, p4teras pernei proino)

 

Gios: gm boss

Pat: allozzz son

Gios: Leader? thelo mia xari plzzzzz

Pat: elam...

Gios: Mporo plzzz na min pao sxoli simera?

Pat: Kai giati skata na min pas dld? Psinese gia dismissfromfamily teleutaia mou fainetai...

Gios: Oxi re lead...apla na...erxontai kati ksenia noobia sti sxoli kai mou exoun kanei to xp ekei kolasi...kai simera ksero oti etoimazoun flaggarisma pano mou...

Pat: SOVARA milas? auto einai sovaro...milises me ta clanm8ts sou (symmathites)...tha se support?

Gios: Ti les re c... oi misoi apo ti sxoli tsiroi einai...siga min niosoun na me support... ffs dld...

Pat: (skeptikos)... tote de menei lysi...prepei na miliso me adm1n (dieuthintis sxolis)...tha to kanoniso bro...np...kane ena HP rest tora (fae) kai mi to skeftese...

 

(eisodos miteras kai koris tin stigmi ekeini stin kouzina)

 

Kori: gm lead...gm bro

Gios: wb sis... gm mom

Pat: alloz mikri... (koitagma kai sastisma pros kori gia mia stigmi)... TI EINAI TOUTO?

Kori: Ela re lead...pos kaneis etsi? ta rouxa mou einai...

Pat: Pia rouxa reee? eisai pio ksekoli apo oti h human fem me magestic robe...an einai min foras kai tpt...

Mitera: Ela astin tora...mia xara einai...einai sexy kai omorfi... des ta dika sas xalia...san no grade mou ntyneste teleutaia!

Pat: (orgismenos) Esy tin exeis kanei ETSI!!! moiazei san putana, san tous kolochars pou panta eixes!!!

Mitera: Kolochars? Alla otan etroges xoma noobi, isun qq more!!!

Pat: (kokkinismenos) Pio xoma mori kinoumeno bug??? me xalasmena skills kai stucked buffs? tespa... /leavefromdiscuss. Kante oti thelete kai esy kai h kori sou

Pat: De mou les mikri? pires kana lvl sto sxoleio? h tha eisai noobi mia zoi?

Kori: Ela re boss... A grade exo ftasei pia...afou me ksereis...dont worry, np eimai. Tha peraso malista aneta eksetaseis kai pao gia 3rd Class meta tha deis...

Pat: Tespa...as to pistepso

Gios: Lead? to strider tha to xreiasteis simera?

Pat: Giati rotas?

Gios: eeexmmm exo na pao volta merika mellontika "clan members" mou. Kai ama tous aresei to clan policy tha tous pao mia volta apo to clan hall na doune kai ton "endotero eksoplismo" tou clan mou!

Pat: (poniro xamogelo) Gossa mou esy! kala leo oti eisai Imba. ok pare to item (kleidi) xalali sou...to exo kai feedarismeno full opote gg eisai

Mitera: Nai sto tsiri sou tetoia les...kai emas se peirakse h "armor" mas tromara sou... Otan ton "gdysei" omos kamia kai tou sikosei olo to WH tha klaite sto xoma!

Pat: sks eipa! De mou les? de kaneis kana WW sto asap kai na tin kaneis, min trekso kana FinalFrenzy kai ginei /dissolveally edo mesa tora? ??

 

(mitera kai kori koitane orgismenes kai apoxoroun apo kouzina, sti synexeia episis p4teras kai gios kai pane stis douleies tous)

 

Kai zisan autoi kala kai emeis kalytera

 

  • 3 weeks later...
Guest skaros
Posted

Γουρουνι: Kαλο Πασχα!

    Αρνι  : Αντε Γαμισου!

Posted

To akolou8o einai ola ta lefta kai aksizei na to diabasete

 

America Vs Spain

 

Ο παρακάτω διάλογος μεταξύ Αμερικανών

και Ισπανών

είναι πραγματικός, σύμφωνα με αυτούς

που τον

δημοσιοποίησαν, και καταγράφηκε από το

κανάλι

106(Finisterra/Galicia) των Θαλάσσιων

Επικοινωνιών.

 

Ισπανοί: Εδώ Α-853, για να αποφύγετε τη

σύγκρουση

παρακαλώ αλλάξτε την πορεία σας 15

μοίρες βόρεια. Αυτή

τη στιγμή βρίσκεστε 25 ναυτικά μίλια

μακριά και

κατευθύνεστε ακριβώς κατά πάνω μας.

 

Αμερικανοί: Αλλάξτε εσείς την πορεία

σας 15 μοίρες

νότια.

 

Ισπανοί: Αρνητικό! Επαναλαμβάνω,

αλλάξτε πορεία 15

μοίρες βόρεια.

 

Αμερικανοί: Σας ομιλεί ο πλοίαρχος

σκάφους των

ΗΠΑ, αλλάξτε πάραυτα την πορεία σας 15

μοίρες νότια.

 

Ισπανοί: Την υπόδειξη σας δεν την

βρίσκουμε ούτε

λογική ούτε εφικτή. Εάν δε θέλετε να

προσκρούσετε

επάνω μας, αλλάξτε την πορεία σας 15

μοίρες βόρεια.

 

Αμερικανοί: ( με υψωμένη φωνή) Σας

ομιλεί ο

πλοίαρχος Richard James Howard του σκάφους UUS

Montana

του δεύτερου σε μέγεθος

αεροπλανοφόρου του στόλου των

ΗΠΑ. Έχουμε μαζί μας δύο αντιτορπιλικά,

καταδιωκτικό

αεροσκάφος και τέσσερα υποβρύχια.

Επιπλέον έχουμε την

υποστήριξη καταδρομικών. Δεν κάνω

ΥΠΟΔΕΙΞΗ αλλά σας

ΔΙΑΤΑΣΣΩ! Αλλάξτε πορεία 15 μοίρες

νότια, σε αντίθετη

περίπτωση θα προβούμε σε όλες τις

απαραίτητες

ενέργειες για ασφάλεια του στόλου μας.

Πάραυτα

τσακιστείτε κι αλλάξτε πορεία.

 

Ισπανοί: Σας ομιλεί ο Juan Manuel Salas Alcantara,

εδώ είμαστε δύο άτομα. Έχουμε μαζί μας

ένα σκύλο, το

βραδινό μας φαγητό, δύο μπουκάλια

μπύρα και ένα

καναρίνι. Το καναρίνι κοιμάται αυτήν

την ώρα. Επιπλέον

μας υποστηρίζει ο ραδιοφωνικός

σταθμός Cadena Dial De

La Coruna. Σας ομιλούμε από το φάρο με

αριθμό Α-853

των ακτών Finisterra Galicia και σας

γνωστοποιούμε ότι

δεν έχουμε πρόθεση να μετακινηθούμε.

Δεν έχουμε ιδέα

αν είμαστε ο μεγαλύτερος ή ο

μικρότερος φάρος των

Ισπανικών ακτών. Μπορείτε να προβείτε

σε όλες τις

γαμημένες απαραίτητες ενέργειες για

την ασφάλεια του

γαμημένου σκάφου σας που σας

επαναλαμβάνω κατευθύνεται

ολοταχώς προς τις βραχώδεις ακτές μας.

Αλλά και πάλι

επιμένουμε και σας υποδεικνύουμε να

αλλάξετε την

πορεία σας 15 μοίρες βόρεια.

 

Αμερικανοί: Ο.Κ. κατανοητό,

ευχαριστούμε.

  • 2 weeks later...
Posted

htan mia fora 3 nuxterides pou kanane diagonismo pia 8a piei to pio polu aima.feugoun lipon kai meta apo 1 wra 3ana girnane.h proth nuxterida ani3e to stoma ths kai ta dontia ths htan katakokkina apo ta aimata, kai lei: blepete ekeinon ton antra ekei? autos zouse mazi me ta 2 pedia t kai me thn guneka t kai eipia to aima ollwn. sth deuterh nuxterida 3exilize to stoma ths apo ta aimata.

, kai lei"blepete ekhnh thn guneka ekei pera? zouse mazi me ta 5 paidia ths, ton antra ths kai ta pe8erika ths kai eipia to aima ollwn.blepoun loipon kai thn trith nuxterida na einai gemath aimata, kai lei h trith nuxterida:blepete ekeinh thn kolona? egw den thn ida

Posted

To epomeno einai ligo ratsistiko :P

Itan kapote enas alvanos kai paei se ena pagotatzidiko..Mpenei mesa kai leei "Pagoto kerasi"

O pagotatzis tou leei signomi re file alla dn exw pagoto kerasi

Pernaei mia dio vdomades pou pigene sinexeia sto magazi

E sto telos o pagotatzis apofasise na paei na ferei pagoto kerasi..

Erxete tin alli mera o alvanos leei "pagoto kerasi"

O pagotatzis leei nai ena lepto file mou na sou valw

Tou to dinei kai O alvanos leei :Efxaristo file avrio kerasi egw

  • 5 weeks later...
Posted

Ήταν ένας τυφλός και μπήκε κατά λάθος σε ένα bar για γυναίκες. Κάθεται και νομίζοντας ότι μιλάει στο barman λέει:

"Φίλε, να σου πω το τελευταίο ανέκδοτο για ξανθιές;"

Τον ακούει μια γυναίκα που καθόταν πιο δίπλα και του λέει:

"Φίλε, πριν πεις το ανέκδοτο πρέπει να σου πω 5 πράγματα:

1) η barwoman είναι ξανθιά,

2) η σερβιτόρα είναι ξανθιά,

3) η κοπέλα που κάθεται αριστερά σου είναι 1.90, ξανθιά και έχει μαύρη ζώνη στο καράτε,

4) η κοπέλα που κάθεται δεξιά σου είναι ξανθιά και μόλις προχθές αποφυλακίστηκε για φόνο και...

5) ...κι εγώ είμαι ξανθιά...

Λοιπόν, θέλεις να πεις ακόμη το ανέκδοτό σου;"

Και τότε της απαντάει ο τυφλός:

"Ε, άστο... άμα είναι να το εξηγώ 5 φορές..."

Posted

Htan o Totos me tin Giagia tou kai pigenane mia volta.Se kapoia fash pernane e3o apo mia ekklhsia kai h Giagia leei ston Toto:Ton stauro sou!!, kai o Totos apadaei:Thn panagia sou!!..............

Posted

Πάει ένας στη λαϊκή και ρωτάει:

- "Τι είναι αυτό;"

- "Πατάτες."

- "Βάλτε μου ένα κιλό, αλλά τη κάθε πατάτα σε ξεχωριστή σακούλα."

Ξαναρωτάει:

- "Τι είναι αυτό;"

- "Ντομάτες."

- "Βάλτε μου ένα κιλό, αλλά τη κάθε ντομάτα σε ξεχωριστή σακούλα."

Ξαναρωτάει:

- "Τι είναι αυτό;"

- "Κρεμμύδια."

- "Βάλτε μου ένα κιλό, αλλά το κάθε κρεμμύδι σε ξεχωριστή σακούλα."

Τέλος, ρωτάει:

- "Τι είναι αυτό;"

- "Φακές... αλλά δεν πουλάμε!!!"

 

Posted

Το 10χρονο αγοράκι κάνει βόλτες μαζί με τη μαμά του στο χωριό τους και ξαφνικά ο μικρός βλέπει ένα γαϊδούρι που έχει στύση.

Ρωτάει τη μητέρα του: "μαμά, τι είναι αυτό που κρέμεται από του γαϊδούρι;"

Tου λέει η μητέρα του: "είναι το "πουλάκι" του παιδί μου και έχει μεγαλώσει".

"Τόσο είναι μαμά και του μπαμπά μου;" ρωτάει ξανά ο μικρός!

Και η μαμά: "Αχ παιδάκι μου, όχι, του μπαμπά σου είναι μικρό αλλά.... του γαϊδουριού, τώρα που το σκέφτομαι, είναι ότι πρέπει.."!

Posted

Ένα απόγευμα στις δημόσιες τουαλέτες και καθώς κατουρούσε ένας μαύρος, βγαίνει δίπλα του ένας άσπρος και τον κοίταζε επίμονα στα γεννητικά του όργανα. - "Τι κοιτάς έτσι;", του λέει ο μαύρος. - "Κοιτάζω το τεράστιο όργανο σου... Μα πως είναι δυνατόν;", του λέει ο άσπρος. - "Αα, δεν είναι τίποτα, και εσύ μπορείς να αποκτήσεις τόσο μεγάλο με μια απλή μέθοδο. Κάθε πρωί που θα μπαίνεις στο μπάνιο θα πηγαίνεις στην βρύση και θα "τον" χτυπάς με όλη σου την δύναμη επάνω.", λέει ο μαύρος. "Την άλλη εβδομάδα τα ξαναλέμε εδώ την ίδια ώρα." Πέρασε η εβδομάδα και όπως είχαν συμφωνήσει συναντιούνται ξανά στις τουαλέτες. Τον κοιτάζει ο μαύρος και ρωτάει: "Τι έγινε;" "Κοίτα μόνος σου!", του λέει ο άσπρος και του "τον" δείχνει! "Πολύ καλά", λέει ο μαύρος "στο χρώμα τον πέτυχες αλλά για το μάκρος θα χρειαστείς καιρό ακόμα!".

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • 🔥 L2Gold.co x15 Interlude Server 2025 – Grand Opening! 🔥 Join us today and be part of the legendary L2Gold community! 🎉 Grand Opening: 14 March 2025 🎉 ⏰ Time: 21:00 GMT +2 🌍 Server Type: EURO PTS/L2OFF 🌟 Why Play on L2Gold.co? 🌟 ✅ No Wipes – Keep Your Progress Forever! Your characters and progress are permanent. No resets! ✅ Balanced & Fun Gameplay! Experience x15 rates for a smooth and enjoyable progression. ✅ Solo or Party Play Use MP potions and NPC buffers for a great solo experience or team up with friends. ✅ Long-Term Stability Our server is built to last with no interruptions! 📊 Server Rates & Details 📊 Category Rate EXP/SP x15 (Official rate without rune or VIP) Adena x10 (Official rate without rune or VIP) Drop x10 (Official rate without rune or VIP) Spoil x10 (Official rate without rune or VIP) Raid Boss Drop x10 (Official rate without rune or VIP) 🚀 Exciting New Features! 🚀 🎟️ 💰 Weekly Lottery System! – Win rare items, in-game currency, and exclusive rewards! 🎁 More Events & Rewards! – Special in-game activities with exclusive items! 📈 Real-Time Stats! – Track your progress, achievements, and rankings live! ⚔️ New Items Weekly! – Discover rare gear and unique items every week! 🌍 A Growing Global Community 🌍 Players from Greece 🇬🇷, Brazil 🇧🇷, Spain 🇪🇸, and beyond! 🔗 Stay Connected 🔗 Follow us on social media to stay updated! 🌎 Website: L2Gold.co 🎙️ Discord: Server 📘 Facebook: Page | Group 🎥 YouTube:   Watch Videos 🎵 TikTok: Follow Us 🔥 Prepare for Battle! 🔥 📅 The adventure begins on 14 March 2025! Join L2Gold.co and Experience an Unforgettable Adventure! 🎮✨
    • y girate unos archivitos del powerclass dale..... sin encrypt
    • Hi, im looking for cardinal pvp script for auto cleanse/rez/nobles etc etc and guide on how to setup as well as what programms do i need to run such scripts as i have never used any helper or something before,
    • [Release] Solo PvP Zone System 🔹 Compatible with: aCis 401+ 📜 Features: ✅ Automatic Exit on Restart: Players are removed from the zone if a restart occurs or logout. ✅ Custom Exit Command: Players can exit the Solo Zone with the voice command .exit. ✅ Teleport NPC Command: new bypass solopvp for gatekeeper. ✅ Random Name Generator: Generates random names. ✅ PvP Flag: The players are flagged within this zone.   xml preview & java code backup code -> https://pastebin.com/974V2p2p   SoloZone.xml <?xml version="1.0" encoding="UTF-8"?> <list> <zone shape="NPoly" minZ="-5200" maxZ="-4680"><!-- Frintezza Solo Zone --> <stat name="name" val="Solo PvP Zone" /> <stat name="locs" val="174244,-89089,-5112;174260,-86881,-5112;173184,-88090,-5112;175309,-88018,-5112;174231,-88019,-5112;175136,-88828,-5104;174962,-87025,-5104;173149,-87142,-5104;173470,-88908,-5112" /> <stat name="restrictedClasses" val="15,16,97" /> <node x="172031" y="-90127"/> <node x="176428" y="-90089"/> <node x="176428" y="-74051"/> <node x="172057" y="-74108"/> </zone> </list> SoloZone Code: diff --git a/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java b/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/taskmanager/SoloZoneTaskManager.java @@ -0,0 +1,98 @@ +package net.sf.l2j.gameserver.taskmanager; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.logging.Logger; + +import net.sf.l2j.commons.random.Rnd; + +import net.sf.l2j.gameserver.data.manager.ZoneManager; +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.voicecommandhandlers.VoiceExitSoloZone; +import net.sf.l2j.gameserver.model.World; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.model.zone.type.SoloZone; + + +/** + * @author MarGaZeaS + */ +public class SoloZoneTaskManager implements Runnable { + + private static final Location EXIT_LOCATION = VoiceExitSoloZone.getExitLocation(); // Λαμβάνουμε την έξοδο από το VoiceExitSoloZone + + @Override + public void run() + { + // Διασχίζουμε όλους τους παίκτες του κόσμου + for (Player player : World.getInstance().getPlayers()) + { + // Ελέγχουμε αν ο παίκτης είναι στο SoloZone + if (player.isInsideZone(ZoneId.SOLO)) + { + // Μεταφέρουμε τον παίκτη στην έξοδο + player.teleportTo(EXIT_LOCATION.getX(), EXIT_LOCATION.getY(), EXIT_LOCATION.getZ(), 0); + player.sendMessage("The server is restarting, you have been moved out of the Solo Zone."); + } + } + } + + private int _id; + + private static final Logger _log = Logger.getLogger(SoloZoneTaskManager.class.getName()); + private static final ArrayList<String> _rndNames = new ArrayList<>(); + private static final int RANDOM_NAMES = 500; + private static final String CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private int _playersInSoloZone = 0; + + public int getPlayersInside() { + return _playersInSoloZone; + } + + public void setPlayersInside(int val) { + _playersInSoloZone = val; + } + + public SoloZoneTaskManager() { + _log.info("Solo Zone System: Loading..."); + for (int i = 0; i < RANDOM_NAMES; i++) { + String name = generateName(); + _rndNames.add(name); + _log.info("Generated name: " + name); + } + _log.info("Solo Zone System: Loaded " + _rndNames.size() + " names."); + } + + public String getAName() { + if (_rndNames.isEmpty()) { + _log.warning("SoloZoneManager: No random names available."); + return "Unknown"; + } + return _rndNames.get(Rnd.get(5, RANDOM_NAMES - 5)); + } + + private static String generateName() { + SecureRandom rnd = new SecureRandom(); + StringBuilder sb = new StringBuilder(15); + for (int i = 0; i < 15; i++) { + sb.append(CHARS.charAt(rnd.nextInt(CHARS.length()))); + } + return sb.toString(); + } + + public int getZoneId() + { + return _id; + } + + public final static SoloZone getCurrentZone() { + return ZoneManager.getInstance().getAllZones(SoloZone.class) + .stream() + .findFirst() // Επιστρέφει την πρώτη SoloZone (αν υπάρχει μόνο μία) + .orElse(null); + } + + public static SoloZoneTaskManager getInstance() { + return SingletonHolder._instance; + } + + private static class SingletonHolder { + private static final SoloZoneTaskManager _instance = new SoloZoneTaskManager(); + } +} diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java b/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java index a707ce5..d247e2e 100644 --- a/aCis_gameserver/java/net/sf/l2j/gameserver/taskmanager/PvpFlagTaskManager.java final Player player = entry.getKey(); final long timeLeft = entry.getValue(); + if(player.isInsideZone(ZoneId.SOLO)) + continue; if(player.isInsideZone(ZoneId.BOSS)) continue; // Time is running out, clear PvP flag and remove from list. if (currentTime > timeLeft) diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java b/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java index a707ce5..d247e2e 100644 +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/network/clientpackets/RequestCharacterCreate.java if (Config.ALLOW_FISH_CHAMPIONSHIP) FishingChampionshipManager.getInstance(); + if (Config.ENABLE_STARTUP) + StartupManager.getInstance(); diff --git a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java b/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMaintenance.java if (!st.hasMoreTokens()) { sendHtmlForm(player); return; } try { switch (st.nextToken()) { case "shutdown": + SoloZoneTaskManager exitTask = new SoloZoneTaskManager(); + ThreadPool.schedule(exitTask, 0); Shutdown.getInstance().startShutdown(player, null, Integer.parseInt(st.nextToken()), false); break; case "restart": + exitTask = new SoloZoneTaskManager(); + ThreadPool.schedule(exitTask, 0); Shutdown.getInstance().startShutdown(player, null, Integer.parseInt(st.nextToken()), true); break; case "abort": Shutdown.getInstance().abort(player); break; diff --git a/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java b/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/voicecommandhandlers/VoiceExitSoloZone.java +package net.sf.l2j.gameserver.handler.voicecommandhandlers; + +import net.sf.l2j.commons.pool.ThreadPool; + +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.IVoiceCommandHandler; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; + +/** + * Handles the voice command for exiting the Solo Zone with delay and effects. + * + * @author MarGaZeaS + */ +public class VoiceExitSoloZone implements IVoiceCommandHandler +{ + private static final String[] VOICE_COMMANDS = + { + "exit" + }; + + // Default location to teleport players when exiting the Solo Zone + private static final Location EXIT_LOCATION = new Location(81318, 148064, -3464); // Replace with your desired coordinates + + // Προσθήκη της μεθόδου για να πάρουμε την τοποθεσία εξόδου + public static Location getExitLocation() { + return EXIT_LOCATION; + } + + @Override + public void useVoiceCommand(Player player, String command) + { + if (command.equalsIgnoreCase("exit")) + { + if (!player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You are not inside the Solo Zone."); + return; + } + + // Notify the player about the delay + player.sendMessage("You will be teleported out of the Solo Zone in 2 seconds."); + + // Cast skill effect (Skill ID: 2100, Level: 1) + player.broadcastPacket(new MagicSkillUse(player, player, 2100, 1, 2000, 0)); + + // Schedule the teleportation after a 2-second delay + ThreadPool.schedule(() -> { + // Teleport the player to the designated exit location + player.teleportTo(EXIT_LOCATION.getX(), EXIT_LOCATION.getY(), EXIT_LOCATION.getZ(), 0); + + // Inform the player + player.sendMessage("You have exited the Solo Zone."); + }, 2000); // Delay in milliseconds (2000ms = 2 seconds) + } + } + + @Override + public String[] getVoiceCommandList() + { + return VOICE_COMMANDS; + } +} diff --git a/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java b/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/handler/VoiceCommandHandler.java public class VoiceCommandHandler { private final Map<String, IVoiceCommandHandler> _entries = new HashMap<>(); protected VoiceCommandHandler() { ............ ............ + registerHandler(new VoiceExitSoloZone()); } public void registerHandler(IVoiceCommandHandler handler) { for (String command : handler.getVoiceCommandList()) _entries.put(command, handler); } diff --git a/java/net/sf/l2j/gameserver/model/actor/Npc.java b/java/net/sf/l2j/gameserver/model/actor/Npc.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/actor/Npc.java else if (command.startsWith("Chat")) { int val = 0; try { val = Integer.parseInt(command.substring(5)); } catch (final IndexOutOfBoundsException ioobe) { } catch (final NumberFormatException nfe) { } showChatWindow(player, val); + ) + else if (command.startsWith("solopvp")) + { + SoloZoneTaskManager.getInstance(); + player.teleportTo(SoloZoneTaskManager.getCurrentZone().getLoc(), 25); + } else if (command.startsWith("Link")) { final String path = command.substring(5).trim(); if (path.indexOf("..") != -1) return; final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile("data/html/" + path); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestartPoint.java // Fixed. - else if (_requestType == 4) - { - if (!player.isGM() && !player.isFestivalParticipant()) - return; - - loc = player.getPosition(); - } + if (_requestType == 4) + { + // Έλεγχος αν ο παίκτης δεν είναι GM, δεν είναι μέρος του φεστιβάλ και δεν είναι στην Solo Zone + if (!player.isGM() && !player.isFestivalParticipant() && !player.isInsideZone(ZoneId.SOLO)) + { + return; + } + + SoloZoneTaskManager.getInstance(); + SoloZone currentZone = SoloZoneTaskManager.getCurrentZone(); + if (currentZone != null && currentZone.getLoc() != null) + { + // Αν υπάρχει ζώνη και οι τοποθεσίες δεν είναι κενές, χρησιμοποιούμε τυχαία τοποθεσία από την ζώνη + loc = currentZone.getLoc(); + } else + { + // Διαφορετικά, κάνουμε respawn στην τρέχουσα θέση του παίκτη + loc = player.getPosition(); + } + } diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java b/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java if (player.isFestivalParticipant() && FestivalOfDarknessManager.getInstance().isFestivalInitialized()) { player.sendPacket(SystemMessageId.NO_RESTART_HERE); sendPacket(RestartResponse.valueOf(false)); return; } + if (player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You cannot restart your character while in Solo Zone. Use .exit to leave"); + player.setFakeName(null); + sendPacket(RestartResponse.valueOf(false)); + return; + } player.removeFromBossZone(); diff --git a/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java b/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/Logout.java player.removeFromBossZone(); player.logout(true); } } + + if (player.isInsideZone(ZoneId.SOLO)) + { + player.sendMessage("You cannot logout or restart your character while in Solo Zone. Use .exit to leave"); + player.setFakeName(null); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + player.removeFromBossZone(); player.logout(true); } } diff --git a/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java b/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/zone/type/SoloZone.java +package net.sf.l2j.gameserver.model.zone.type; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import net.sf.l2j.commons.random.Rnd; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.enums.MessageType; +import net.sf.l2j.gameserver.enums.ZoneId; +import net.sf.l2j.gameserver.handler.voicecommandhandlers.VoiceExitSoloZone; +import net.sf.l2j.gameserver.model.World; +import net.sf.l2j.gameserver.model.actor.Creature; +import net.sf.l2j.gameserver.model.actor.Player; +import net.sf.l2j.gameserver.model.location.Location; +import net.sf.l2j.gameserver.model.zone.type.subtype.ZoneType; +import net.sf.l2j.gameserver.network.SystemMessageId; +import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate; +import net.sf.l2j.gameserver.taskmanager.PvpFlagTaskManager; +import net.sf.l2j.gameserver.taskmanager.SoloZoneTaskManager; + +/** + * @author MarGaZeaS + * + */ +public class SoloZone extends ZoneType +{ + private String _name; + private List<Location> _locations = new ArrayList<>(); + + public SoloZone(int id) + { + super(id); + } + + @Override + public void setParameter(String name, String value) + { + if (name.equals("name")) + _name = value; + else if (name.equals("locs")) + { + for (String locs : value.split(";")) + { + String[] coordinates = locs.split(","); + if (coordinates.length == 3) + { + int x = Integer.parseInt(coordinates[0]); + int y = Integer.parseInt(coordinates[1]); + int z = Integer.parseInt(coordinates[2]); + _locations.add(new Location(x, y, z)); + } + else + { + LOGGER.warn("Invalid location format: " + locs); + } + } + } + } + + + @Override + protected void onEnter(Creature character) + { + if (character instanceof Player) + { + final Player player = (Player) character; + + if ((player.getClassId().getId() == 15 || player.getClassId().getId() == 16 || player.getClassId().getId() == 97)) + { + Location respawnLocation = VoiceExitSoloZone.getExitLocation(); + player.instantTeleportTo(respawnLocation, 20); + player.sendMessage("Your class is not allowed in this zone."); + return; + } + + String randomName = SoloZoneTaskManager.getInstance().getAName(); + if (randomName == null || randomName.isEmpty() || !isValidName(randomName)) + { + randomName = generateRandomName(); + } + if (isNameAlreadyTaken(randomName)) + { + randomName = generateRandomName(); + } + player.setFakeName(randomName); + player.sendMessage("Welcome to the Solo Zone, your random name is: " + randomName); + player.sendPacket(SystemMessageId.ENTERED_COMBAT_ZONE); + character.setInsideZone(ZoneId.SOLO, true); + character.setInsideZone(ZoneId.NO_STORE, true); + character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, true); + + if (player.getParty() != null) + { + player.getParty().removePartyMember(player, MessageType.DISCONNECTED); + } + + if (player.getPvpFlag() > 0) + PvpFlagTaskManager.getInstance().remove(player, true); + + player.updatePvPStatus(); + player.broadcastUserInfo(); + } + } + + private static boolean isValidName(String name) { + return name.matches("[a-zA-Z0-9_]+"); + } + + private static String generateRandomName() { + Random rand = new Random(); + int nameLength = rand.nextInt(12) + 4; + StringBuilder nameBuilder = new StringBuilder(); + + for (int i = 0; i < nameLength; i++) { + char randomChar = (char) (rand.nextInt(26) + 'a'); + nameBuilder.append(randomChar); + } + + return nameBuilder.toString(); + } + + private static boolean isNameAlreadyTaken(String name) { + return World.getInstance().getPlayers().stream().anyMatch(player -> player.getFakeName().equals(name)); + } + + @Override + protected void onExit(Creature character) + { + character.setInsideZone(ZoneId.SOLO, false); // Solo zone + character.setInsideZone(ZoneId.NO_STORE, false); // Allow making a store + character.setInsideZone(ZoneId.NO_SUMMON_FRIEND, false); // Allow summon + + if (character instanceof Player) + { + final Player player = (Player) character; + + if (player.getFakeName() != null) + { + player.setFakeName(null); + } + + player.sendPacket(SystemMessageId.LEFT_COMBAT_ZONE); + { + if(!player.isInObserverMode() && player.getPvpFlag() > 0) + PvpFlagTaskManager.getInstance().add(player, Config.PVP_NORMAL_TIME); + + player.sendPacket(new EtcStatusUpdate(player)); + player.broadcastUserInfo(); + } + } + } + + public String getName() + { + return _name; + } + + public Location getLoc() + { + if (_locations.isEmpty()) + { + return null; // Αν η λίστα είναι κενή, επιστρέφουμε null + } + return _locations.get(Rnd.get(0, _locations.size() - 1)); // Επιλέγουμε τυχαία τοποθεσία + } +} diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/GameServer.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/GameServer.java if (Config.ALLOW_FISH_CHAMPIONSHIP) FishingChampionshipManager.getInstance(); + StringUtil.printSection("Custom Features"); + SoloZoneTaskManager.getInstance(); StringUtil.printSection("Handlers"); LOGGER.info("Loaded {} admin command handlers.", AdminCommandHandler.getInstance().size()); diff --git a/java/net/sf/l2j/gameserver/GameServer.java b/java/net/sf/l2j/gameserver/Shutdown.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/Shutdown.java // disconnect players try { disconnectAllPlayers(); LOGGER.info("All players have been disconnected."); } catch (Exception e) { // Silent catch. } + // Restore real names for players in SoloZone + restoreRealNamesInSoloZone(); // stop all threadpolls ThreadPool.shutdown(); try { LoginServerThread.getInstance().interrupt(); } catch (Exception e) { // Silent catch. } // avoids new players from logging in if (_secondsShut <= 60 && LoginServerThread.getInstance().getServerType() != ServerType.DOWN) LoginServerThread.getInstance().setServerType(ServerType.DOWN); _secondsShut--; Thread.sleep(1000); } } catch (InterruptedException e) { } } + // This method restores the real names of players in SoloZone + private static void restoreRealNamesInSoloZone() + { + for (Player player : World.getInstance().getPlayers()) + { + // Check if player is inside the SoloZone + if (player.isInsideZone(ZoneId.SOLO)) + { + // Restore the real name by removing the fake name + if (player.getFakeName() != null) + { + player.setFakeName(null); // Restore the real name + LOGGER.info("Player {}'s fake name has been removed and real name restored.", player.getName()); + } + } + } + } private static void sendServerQuit(int seconds) { World.toAllOnlinePlayers(SystemMessage.getSystemMessage(SystemMessageId.THE_SERVER_WILL_BE_COMING_DOWN_IN_S1_SECONDS).addNumber(seconds)); } diff --git a/java/net/sf/l2j/gameserver/enums/ZoneId.java b/java/net/sf/l2j/gameserver/enums/ZoneId.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/enums/ZoneId.java public enum ZoneId { PVP(0), PEACE(1), SIEGE(2), MOTHER_TREE(3), CLAN_HALL(4), NO_LANDING(5), WATER(6), JAIL(7), MONSTER_TRACK(8), CASTLE(9), SWAMP(10), NO_SUMMON_FRIEND(11), NO_STORE(12), TOWN(13), HQ(14), DANGER_AREA(15), CAST_ON_ARTIFACT(16), NO_RESTART(17), SCRIPT(18), - BOSS(19), + BOSS(19), + SOLO(20); private final int _id; private ZoneId(int id) { _id = id; } diff --git a/java/net/sf/l2j/gameserver/network/serverpackets/Die.java b/java/net/sf/l2j/gameserver/network/serverpackets/Die.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/serverpackets/Die.java if (creature instanceof Player) { Player player = (Player) creature; - _allowFixedRes = player.getAccessLevel().allowFixedRes(); + _allowFixedRes = player.getAccessLevel().allowFixedRes() || player.isInsideZone(ZoneId.SOLO); _clan = player.getClan(); } diff --git a/java/net/sf/l2j/gameserver/model/actor/Player.java b/java/net/sf/l2j/gameserver//model/actor/Player.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java // Attacker or spectator logging into a siege zone will be ported at town. if (player.isInsideZone(ZoneId.SIEGE) && player.getSiegeState() < 2) player.teleportTo(TeleportType.TOWN); + if (player.isInsideZone(ZoneId.SOLO)) + { + ThreadPool.schedule(() -> { + Location exitLocation = VoiceExitSoloZone.getExitLocation(); + + if (exitLocation != null) + { + player.teleportTo(exitLocation.getX(), exitLocation.getY(), exitLocation.getZ(), 0); + player.sendMessage("You have been moved to the exit of the SoloZone."); + } + }, 5000); // 5000 milliseconds (5sec) + } diff --git a/java/net/sf/l2j/gameserver/model/actor/Player.java b/java/net/sf/l2j/gameserver/model/actor/Player.java new file mode 100644 index 0000000..6b7ef6f --- /dev/null +++ a/java/net/sf/l2j/gameserver/model/actor/Player.java @Override public void doRevive() { super.doRevive(); stopEffects(EffectType.CHARM_OF_COURAGE); sendPacket(new EtcStatusUpdate(this)); getStatus().setCpHpMp(getStatus().getMaxCp(), getStatus().getMaxHp(), getStatus().getMaxMp()); _reviveRequested = 0; _revivePower = 0; if (isMounted()) startFeed(_mountNpcId); + if (isInsideZone(ZoneId.SOLO)) + { + // Give Nobless (1323 ID) + L2Skill no = SkillTable.getInstance().getInfo(1323, 1); + no.getEffects(this, this); + sendMessage("You have received the Nobless status in the Solo Zone."); + } + }   If anyone thinks the code is wrong, please make an update and upload it here so I can update the post. A part was edited with chatgpt
    • Always remember, when you buy files, just compare with my files that I publish for free. and you will know that you are being ripped off. Greetings to all community!!! 🙂
  • Topics

×
×
  • Create New...