Jump to content

Recommended Posts

Posted

"ΧΑΧΑΧΑΧΑΧΑ". Έτσι απλά, χωρίς πολλά λόγια 2 γράμματα επαναλαμβάνονται και είναι αρκετά για να εκφράσουν αυτό που νιώθω όταν παρακολουθώ τηλεόραση.

 

Και ποτέ το κάνω αυτό?

 

Στο άκουσμα "emo" στο άκουσμα "gothic" και σε πολλά αλλά τέτοια, υπερκουλά.

 

Το μεγάλο αυτό θέμα είναι ένα κουφάρι μες το μυαλό μου, ειλικρινά δε ξέρω πώς να το ξετυλίξω. Γι' αυτό λοιπόν θα το κόψω, και όπου βρεθώ βρέθηκα.

 

Μια ωραία έκθεση αρχίζει με ιστορική ανάδρομη. Now? Shall we?

 

Ήταν κάπου στις εποχές του '80, που ένας άσχημος-(παύλα, έτσι να το διαβάζετε, ακούγεται πιο cool) έξυπνος, έφηβος Αμερικανός σκέφτηκε την απόλυτη λύση για να δώσει τέλος στην αγαμία του, "θα γίνω η φίλη που μια γυναίκα πάντα θέλει για σύντροφο". Και έτσι δημιούργησε μια ψεύτικη δήθεν συναισθηματική εικόνα που θα συγκινούσε κάθε γκόμενα (χαζό). Πρώτη προσπάθεια να κινήσει τα βλέμματα? Πνίγηκε. Γιατί? Επειδή μπορεί εσύ να υιοθέτησες την συμπεριφορά, η άλλη όμως που δε σε πλησιάζει λόγο κιλών σπυρακίων οστεοπόρωσης και δυσκοιλιότητας, πώς θα καταλάβει ότι εσύ είσαι ο ευγενικός πρίγκιπας που ονειρεύεται τα βράδια και ξυπνάει στο βρεγμένο μαξιλάρι?

 

Μα δεν υπάρχει πρόβλημα που να μην επιδέχεται λύση.

 

ΚΑΝΕ ΤΗΝ ΝΑ ΣΕ ΚΟΙΤΑΞΕΙ. Πώς? Γίνε παράξενος. Τράβα τα βλέμματα πάνω σου με μια ηλιθιότητα. Δυστυχώς... όχι μόνο μια τελικά.

Και δώσ' του τα μαλλιά, και δώσ' του τα ρούχα, και δώσ' του τις τρύπες, και δώσ' του το βάψιμο (καλέ μου Θεέ). Όπως καταλαβαίνετε, η λέπρα και η μόδα εξαπλώνονται με γεωμετρικούς ρυθμούς.

 

Όχι όμως στην Ελλάδα, όχι καλέ μου, στην Ελλάδα τα πάντα έρχονται με καθυστέρηση. Αλλά δεν πειράζει, περάσαμε και πόλεμους εμείς, λογικό να υπάρχει καθυστέρηση στην εξέλιξη του πολιτισμού.

 

20 χρόνια μετά ΠΑΡΑ ΤΑΝ-ΤΑΝ...ΠΑΡΑ ΤΑΝ-ΤΑΝ, ΤΑΝ-ΤΑΝ !

 

ΤΟ ΕΜΟ ΗΡΘΕ ΣΤΗΝ ΕΛΛΑΔΑ ΑΓΑΠΗΤΕ ΜΟΥ ΛΑΕ ΝΑΙ Η ΝΕΑ ΔΗΜΟΚΡΑΤΙΑ ΠΡΟΝΟΗΣΕ ΚΑΙ ΓΙΑ ΑΥΤΟ. ΜΠΟΡΕΙ ΝΑ ΕΙΝΑΙ ΔΕΞΙΑ, ΜΠΟΡΕΙ ΝΑ ΕΙΝΑΙ ΣΥΝΤΗΡΗΤΙΚΟΙ, ΑΛΛΑ ΟΧΙ. ΟΧΙ. ΤΟ ΜΕΛΛΟΝ ΕΙΝΑΙ ΕΔΩ. ΤΟ ΜΕΛΛΟΝ ΕΙΝΑΙ ΣΤΟ ΜΟΒ, ΣΤΑ ΞΥΡΑΦΑΚΙΑ ΚΑΙ ΣΤΟΝ ΜΟΝΟΦΘΑΛΜΙΣΜΟ.

 

Ή μήπως όχι?

 

Τί είναι το emo? Το emo προέρχεται από την αγγλική λέξη emotional (ναι, σας είπα κάτι που δε ξέρετε). Είναι ένα κίνημα ανθρώπων που έχουν αγγίξει βαθύτερα συναισθήματα μέσα τους, που εκφράζουν τη διαφορετικότητα τους με την παράξενη εμφάνιση τους.

 

ΧΑΧΑΧΑΧΑΧΑΧΑΧΑ

 

Πάμε ξανά.

 

Τι είναι emo? ΑΡΧΙΔΙΑ.

 

Emo είναι παιδιά με ψυχολογικά προβλήματα, γεννημένα σε πλούσια επί το πλείστον σπίτια, που επειδή ο εσωτερικός τους κόσμος είναι άδειος, και επειδή δεν έχουν ουσιαστικά προβλήματα μιας και γεννήθηκαν στα πούπουλα, γεμίζουν το κενό της προσωπικότητας τους με την εμφάνιση. Έτσι έχεις και ΣΥ καλέ μου καταθλιπτικέ κάτι να συζητάς, μιλάς για τα καταθλιπτικά μπρατσάκια που αγόρασες μόλις χθες. Μιλάς για τα 200 ευρώ κορδόνια που σου χάρισε μια φίλη σου. Έχεις κάτι να πεις βρε αδερφέ. Όσο για τα προβλήματα, διογκώνουν την τελευταία πετρούλα που πέταξε η ζωή στο δρόμο τους (το 'χω το ποιητικό ρε γμτ :D) την βλέπουν σα βράχο, σταυρώνουν τα χέρια, κάθονται οκλαδόν, και κλαίνε που δε μπορούν να σκαρφαλώσουν.

 

Οι emo ήταν αρκετά όμορφοι, στα μικρά μυαλά των άβουλων εφήβων, είδαν την πέραση που έχουν και είπαν "I can be a star".

 

Δεν ήξεραν όμως την βαθιά αλήθεια που κρυβόταν πίσω απ το eyeliner.

 

Έτσι αντέγραψαν πιστά ό,τι είδαν, έχασαν όμως την ουσία. Έχασαν τα χαρακώματα, τα κλάματα στις κηδείες. Έτσι λοιπόν έγινε το σχίσμα Σε true emos a.k.a οι κλινικά ηλίθιοι και posers fakes ή wannabez (διαλέξτε το επίθετο της αρεσκείας σας) a.k.a οι παθητικά ηλίθιοι, αλλιώς πρόβατα.

 

Βασική αρχή της φυσικής όμως είναι η εξής: "Για κάθε Δράση, υπάρχει αντίδραση"

 

Έτσι λοιπόν για αυτό το στην Ελλάδα ραγδαία εκκολαπτόμενο κίνημα, δεν άργησε να εμφανιστεί η αντίδραση.

 

Τι εννοώ?

 

Υπάρχουν κι άλλες πολλές. Και εννοώ ΠΟΛΛΕΣ ομάδες παιδιών. Άντε να τις αναλύσεις. Τέσπα. Κάποιες από αυτές, μόλις προ ολίγου έμαθα πως τις ονομάζουν κάγκουρες τα Μ.Μ.Ε (τραγικό λάθος, αυτή η σημείωση όμως μας δημιουργεί 2 νέα παρακλάδια που θα αναλύσουμε παρακάτω). Τι είναι αυτοί? Εγώ δε θα τους πω κάγκουρες.

 

Θα προτιμήσω τον όρο NoLifers. Δηλαδής. Άτομα χωρίς δική τους ζωή. Αυτοί λοιπόν εύχονται να μπορούσαν να είναι emo. Αλλά δε μπορούν, μιας και οι γονείς τους δεν τους δίνουν τα απαραίτητα χρήματα για τα εξοπλιστούν με τα ρούχα που πρέπει. Έτσι.. όσα δε φτάνει η αλεπού? Τα κάνει κρεμαστάρια :)

 

If you can΄t be like them, just vanish them!

 

Ρε φίλε κάγκουρα, ροκά, μεταλλά ή ό,τι σκατά είσαι. ΤΙ πας και κάνεις? Άστα παιδιά στον πόνο τους, άστα στη μιζέρια τους. Άντε γέλα λίγο με την πάρτη τους. ΑΛΛΑ ΦΤΑΝΕΙ. Είναι ανάγκη να κάνεις ΤΕΤΟΙΑ σκηνικά? Ντομάτες αυτά και πιπερίτσες? ΡΕ ΣΤΗΝ ΚΕΝΥΑ ΠΕΙΝΑΝΕ ΡΕ ΚΑΙ ΣΥ ΧΑΡΑΜΙΖΕΙΣ ΤΑ ΖΑΡΖΑΒΑΤΙΚΑ ΣΤΟΥΣ ΣΥΓΓΕΝΕΙΣ ΤΟΥΣ ΡΕ? Δεν καταλαβαίνεις? ΑΥΤΟ ΕΙΝΑΙ ΚΑΝΙΒΑΛΙΣΜΟΣ!

 

Κάν' καμία δουλειά... Βάλε καμία κονκάρδα στην τσάντα σου, αγόρασε κάνα δερμάτινο παντελονάκι, μάζεψε λεφτά για το F1 σου, και άστον τρελό στην τρέλα του. Αλλά βλέπετε οι No Lifers, που κατά καιρούς πάντα βρίσκουν κάποια ομάδα να ενοχλήσουν (ανάλογα με την μόδα της εποχής), είναι σαν τους πρόσκοπους. Πώς ο πρόσκοπος οφείλει να κάνει μια καλή πράξη την ημέρα, έτσι και ο No Lifer οφείλει να κυνηγήσει έναν emo την ημέρα.

 

Για να μην φλυαρούμε και επαναλαμβανόμαστε, θα σταματήσω την ανάλυση ταμπελών κτλ. Απλά τονίζω πως δεν ασχολούνται ΜΟΝΟ οι κάγκουρες με τους emo. Δεν ασχολούνται όλοι οι κάγκουρες με τους emo. Για ανατρέξτε το αρχείο του kamenoi.gr για να μάθετε τί είναι ο κάγκουρας.. ΓΙΑΤΙ ΕΜΕΙΣ ΕΙΧΑΜΕ ΓΡΑΨΕΙ ΚΑΙ ΓΙΑ ΑΥΤΟ, ΦΙΛΕ ΚΑΜΕΝΕ.

 

Anyhow?

 

Και ενώ υπάρχουν οι έφηβοι, πάντα υπήρχαν, και ενώ όλα γίνονταν underground όταν οι προβολείς σβήνουν, όταν ο Chuck Norris ξεκουράζει τα μάτια του, ήρθαν οι κάμερες. Δεν ξέρω αν το έμαθες αγαπητέ νυσταγμένε αναγνώστη, αλλά ο κόσμος δεν έχει πλέον προβλήματα. Το ασφαλιστικό λειτουργεί τέλεια, η παιδεία είναι σε άψογη κατάσταση, η υγεία αψεγάδιαστη, η καθαριότητα είναι τέτοια που μπορείς να φας μουσακά στο πεζοδρόμιο, και έτσι ασχολούμαστε με ανούσιου περιεχομένου γεγονότα.

 

Μα για μισό λεπτό. Παραπληροφόρηση. Η δημοσιογραφική μου δεοντολογία δεν το επιτρέπει. Ας κάνουμε μια ιστορική αναδρομή στην δράση των Μ.Μ.Ε. πάνω στο πιο καυτό θέμα των ημερών. Τους emo.

 

Ημέρα Χ και ώρα όταν παίζει η εκπομπή TvΤiglon. Η Μαρία και ο Φώτης, ένα από τα πιο πετυχημένα δίδυμα της ελληνικής τηλεόρασης δίνουν το πράσινο φως και την αρχή μιας νέας εποχής στα δημοσιογραφικά δεδομένα. Φέρνουν στην εκπομπή τους 3 emo.

 

Τους κλινικά ηλίθιους όπως αναφέραμε πιο πάνω. Αυτούς που κλαίνε σε κηδείες άσχετων είναι bisexual χαρακώνονται κτλ. ΣΑΛΟΣ ΧΑΜΟΣ, ΟΛΟΙ ΜΙΛΑΝΕ ΓΙΑ ΑΥΤΟ. Και όχι άδικα. Είχε ενδιαφέρον. Το ομολογώ. Άλλωστε είναι ελαφρού περιεχομένου εκπομπή, λογικό να παρουσιάζονται τέτοια θέματα. Ειδικά όταν έχεις πάρει συνέντευξη από την τελευταία κάμπια, και δεν τα αποτελέσματα του test DNA ενός γνωστού τραγουδιστή που μου διαφεύγει το όνομα του αυτή τη στιγμή, εκκρεμούν, επιτρέπεται το emo θέμα.

 

Μέρα δεύτερη. Η εξέλιξη

 

Σε μεσημεριανή κοτσομπολίστικη εκπομπή. Η Λαμπίρη ζήλεψε. Έκλαψε. ΘΕΛΩ ΚΑΙ ΕΓΩ ούρλιαξε. Βέβαια τα ηνία ανήκουν δικαιωματικά στο δίδυμο. Παρόλα αυτά, μια φορά δεν είναι ποτέ αρκετή. Έλληνες είμαστε, αν μη τι άλλο η αντίληψη μας είναι λίγο χαμηλή.

 

Μέρα τρίτη. Το παράχεσμα.

 

Ξυπνάω και ετοιμάζομαι για το σχολείο. Ήταν Τρίτη θυμάμαι, την επόμενη μέρα θα γινόταν η απεργία ΓΕΣΣΕΕ-ΑΔΕΔΥ και ήθελα να μάθω τι παίζει με τους καθηγητές. Βάζω λοιπόν τις πρωινές-πρωινές ειδήσεις και ΤΙ ΝΑ ΔΩ? Ο κύριος ΤΕΡΕΝΣ ΚΟΥΙΚ αντί για να μιλάει για απεργίες, αντί να διαβάζει τίτλους από εφημερίδες, αντί να αναλύει τα θαύματα του Άγιου Ραφαήλ μεγάλη η χάρη του, είχε καλεσμένο ένα emo και του έπαιρνε συνέντευξη. Ε άει στο διάολο.

 

Και όχι τίποτα άλλο, τουλάχιστον το Μαράκι και ο Φωτάκης ήξεραν τι τους γίνεται, ο άλλος δεν ήξερε τη μια του. Του λέει το άλλο "η μουσική μας έχει στοιχεία hardcore" και αυτός απαντάει "μα αυτό είναι σκληρό πορνό." Εύγε κακάο μας, μόλις έγινες θέμα στο ΟΛΑ. Ο Κουίκ την έψαξε καλύτερα τη δουλεία από τη Λαμπίρη. Λέει emo, nemo, hemo θα βαρεθούν. WE GOT TO KEEP IT ROLLING! Το λοιπόν? έκανε τη διαφορά, πήγε ένα βήμα μπροστά. Ήταν το ασύρματο τηλέφωνο μετά το σταθερό. ΕΦΕΡΕ ΤΑ GOTHAKIA. Και πάλι... βλακείες.

 

Και ρε φίλε, δεν πα να φέρεις και κατσαρίδες να μιλήσουν, χεστήκαμε, αλλά ένα πράμα που δε μπορώ να αφήσω ασχολίαστο είναι το εξής. ΟΛΟΙ? ΟΛΟΙ ΟΜΩΣ όσοι μιλάνε για emo στην τηλεόραση, από κοινωνιολόγους και ψυχολόγους μέχρι γιαγιάδες και λεμόνια, ΤΟΥΣ ΠΑΡΟΥΣΙΑΖΟΥΝ ΩΣ ΕΠΑΝΑΣΤΑΤΕΣ.

 

ΩΡΑΙΟΙ ΕΙΣΤΕ ΡΕ. ΚΑΝΤΕ ΤΑ ΧΕΙΡΟΤΕΡΑ. ΡΙΞΤΕ ΠΑΝΩ ΣΤΑ ΣΚΑΤΑ ΛΙΠΑΣΜΑ

 

Εδώ μέσω hi5 & my space και έχουν αγγίξει αστρονομικά νούμερα, τώρα που τους προώθησε και η τηλεόραση, θα εξελιχθεί σε πανδημία.

 

ΕΤΣΙ ΚΑΙ ΓΙΝΕΙ ΤΟ ΠΑΙΔΙ ΜΟΥ ΕΜΟ ΚΑΤΑΡΑΜΕΝΕ ΚΟΥΙΚ ΨΑΞΕ ΛΑΓΟΥΜΙ ΝΑ ΚΡΥΦΤΕΙΣ

 

Από πότε είναι επανάσταση ο υπερκαταναλωτισμός και η μαζική υιοθέτηση μιας ανούσιας μόδας? Από πότε η διόγκωση κλασικών εφηβικών προβλημάτων και η άρνηση της πραγματικότητας, με κλάματα και αυτοτραυματισμό επιφέρει λύση?

 

Και από πότε προκαλεί αυτό αίσθηση σε κάποιον ώστε να κάνει κάτι ουσιαστικό πέραν του να γελάει με την πάρτη τους?

 

Αλήθεια, δεν πέταξα ποτέ αυγά σε emo. Αλήθεια δε ζήλεψα ποτέ τίποτα που έχουν. Αλήθεια δεν είχαν ποτέ κάτι που να θέλω.

 

Και γιατί έγραψα 3 σελίδες για αυτούς? Γιατί ασχολήθηκα?

 

Γιατί έχει πλάκα.

 

Καληνύχτα

 

 

<--------------------------------------------------------------------------------------------->

 

 

Akouw gnomes!

Xoris na prosvalw kanenan!To lew gia na min iparxoune sinepies.

Esi ti nomizis gia to 8ema ton Emo?

Posted

kai kala katevazoune ta malia gia na min vlepoun to kosmo....kai vafoune ta matia kai nixia gia na diksoun tin katathlipsi...re ego ksero pos otan eisai katathliptikos den milas den lallas kathese spitaki sou..oxi dinese stolizese kai ipotithete eisai katathlitpokos..xa0x0ax0a ta zwa....kserw omos kai merika paidia p lene oti tous aresoun mono ta malia kai giafto to kanoun..oxi tous allous tous ilithious p lene oti eimaste katathliptikoi kai poloi Emo aftoktonoun...eleos...00st re

Posted

popo file, GAMISES! ontws etsi einai, alla oxi kai NoLifers.... aplos pisteuw einai aytoi pou dn goustaroun ta emo, kai ton tropo tous.... are mlkismena emo......exete ta lefta sas, ta brakia sas, to fagito sas, kai sas fenete straba o kosmos.....alla bebea, dn exete perasei apo xounta, apo polemo..........malakismena...........

Posted

OMG!!! Apla respect!!! Ti allo na pw pia... +1000000000000000000000000!!!

To palikari pou to grapse olo auto apla ta spaei!!!

 

To parakatw apospasma  mou travi3e tn prosoxi epeidi einai o,ti akrivws pistevw kai gw kai genikotera epeidi einai i ALI8EIA...!!!

 

Τί είναι το emo? Το emo προέρχεται από την αγγλική λέξη emotional (ναι, σας είπα κάτι που δε ξέρετε). Είναι ένα κίνημα ανθρώπων που έχουν αγγίξει βαθύτερα συναισθήματα μέσα τους, που εκφράζουν τη διαφορετικότητα τους με την παράξενη εμφάνιση τους.

 

ΧΑΧΑΧΑΧΑΧΑΧΑΧΑ

 

Πάμε ξανά.

 

Τι είναι emo? ΑΡΧΙΔΙΑ.

 

Emo είναι παιδιά με ψυχολογικά προβλήματα, γεννημένα σε πλούσια επί το πλείστον σπίτια, που επειδή ο εσωτερικός τους κόσμος είναι άδειος, και επειδή δεν έχουν ουσιαστικά προβλήματα μιας και γεννήθηκαν στα πούπουλα, γεμίζουν το κενό της προσωπικότητας τους με την εμφάνιση. Έτσι έχεις και ΣΥ καλέ μου καταθλιπτικέ κάτι να συζητάς, μιλάς για τα καταθλιπτικά μπρατσάκια που αγόρασες μόλις χθες. Μιλάς για τα 200 ευρώ κορδόνια που σου χάρισε μια φίλη σου. Έχεις κάτι να πεις βρε αδερφέ. Όσο για τα προβλήματα, διογκώνουν την τελευταία πετρούλα που πέταξε η ζωή στο δρόμο τους (το 'χω το ποιητικό ρε γμτ ) την βλέπουν σα βράχο, σταυρώνουν τα χέρια, κάθονται οκλαδόν, και κλαίνε που δε μπορούν να σκαρφαλώσουν.

 

 

Aaaaa!!! Kai na mn 3exasw tn gamati auti atakaaa!!!

Και γιατί έγραψα 3 σελίδες για αυτούς? Γιατί ασχολήθηκα?

 

Γιατί έχει πλάκα.

 

Καληνύχτα

 

Tespa... Apla kai pali RESPECT!!!

Posted

Emo boys = Paidia me psixologika provlimata... / Prospa8oun na kanoun entyposi se kapoion - kapoia

 

Emo girls = Erotikh apogoiteusi.... Ntisimo karnavaliou me skopo na vroun to tairi tous....(anapira) /Entyposi se kapoion - kapoia / Psixologika provlimata...

 

Kai to mono pou katafernoun na kanoun telika einai h metamorphosi tous se pi8ikia... !

 

Posted

genika exoun psixologika provlimata apotiximena atoma einai pou prospathoun na mas poun pos iparxoun se afton ton kosmo malon giati palia tha tous ixane gia gtp atoma kai tous klanane kai pistevoun pos tora ginete to aditheto.Kai oi perisoteroi exo exoun pari san "Style" gia na vroun gomena giati opia k na rotiseis emo ftw tha s pei

 

Posted

Twra teleutaia dn kserw ti paizei..Ginontai para polu Emo kai nomizoun pws einai kati... Eleos diladi to na eisai kata8liptikos k na koveis to xeri sou me ksirafaki einai magia? Auto to 8eorw entelos megali malakia!!!!!

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...