Jump to content

Recommended Posts

Posted

- Πως ονομάζεται η βρύση του θείου σας;

- Βάνα Μπάρμπα.

 

------------------------------------

 

Ήταν κάποιος τόσο κοντός ώστε τα μαλλιά του μυρίζανε ποδαρίλα.

 

------------------------------------

 

Ήταν δυο γύφτισσες και μαζέβανε κάτι πατάτες πιάνει λοιπόν η μια απ'αυτές μια πατάτα και λέει

-Αααα αυτή η πατάτα μου θυμίζει το πουλί του άνδρα μου.

-Πετάγεται η άλλη και λέει τόσο μεγάλο;

-Όχι καλέ τόσο βρώμικο

Posted

Ήταν δυο γύφτισσες και μαζέβανε κάτι πατάτες πιάνει λοιπόν η μια απ'αυτές μια πατάτα και λέει

-Αααα αυτή η πατάτα μου θυμίζει το πουλί του άνδρα μου.

-Πετάγεται η άλλη και λέει τόσο μεγάλο;

-Όχι καλέ τόσο βρώμικο

to exeis xanapi afto :S

 

pos emathe o pinokio oti einai apo xilo???

 

 

 

 

 

travage malakia kai pire fotia ;)

Posted

Η ξανθιά και ο Πακιστανός 

 

 

Μια ξανθιά οδηγεί το αυτοκίνητο της και σε κάποιο φανάρι εμφανίζεται ο σχετικός Πακιστανός για να της καθαρίσει το τζάμι.

Το τζάμι είναι καθαρό και η κοπέλα του δίνει 50 λεπτά και του κάνει νόημα να μην το καθαρίσει.

Ο Πακιστανός ενθουσιάζεται και της λέει με σπασμένα ελληνικά:

- "Κυρία, είστε πολύ όμορφη."

Η ξανθιά συνεχίζει τον δρόμο της, και στο άλλο φανάρι πάλι τα ίδια. Ο ίδιος Πακιστανός κάνει πάλι να της πλύνει το τζάμι, του δίνει πάλι 50 λεπτά, και ακούει πάλι το ίδιο κομπλιμέντο.

Αυτή η ιστορία συνεχίζεται και στα επόμενα 5-6 φανάρια...

Πάντα ο ίδιος Πακιστανός, και με το ίδιο κομπλιμέντο, οπότε η κοπέλα δεν αντέχει και του λέει:

- "Κοίταξε, θα σου δώσω 5 ευρώ, αρκεί αν μου πεις πως το κάνεις και εμφανίζεσαι σε κάθε φανάρι."

- "Κυρία", λέει αυτός, "αν μου δώσετε 5 ευρώ, θα σας πω πως να βγείτε από την πλατεία..."

 

 

 

Γιατί οι ξανθιές κρατάνε ανάποδα το κινητό; 

Για να μην πέφτουν οι μονάδες.

 

 

 

Το τεστ 

 

 

Μία ξανθιά γράφει στις τελικές εξετάσεις του πανεπιστημίου όπου οι απαντήσεις είναι τύπου Ναι/Οχι. Δεν έχει διαβάσει τίποτα οπότε βγάζει ένα νόμισμα και παίζει κάθε ερώτηση κορώνα - γράμματα για να δει τι θα απαντήσει. Μέσα σε δέκα λεπτά έχει τελειώσει ενώ οι άλλοι ακόμα προσπαθούν. Παρόλα αυτά μένει μέσα στην αίθουσα. Κατά τα τελευταία λεπτά της ώρας, ακόμα ρίχνει το νόμισμα, βρίζοντας και ιδρώνοντας. Την πλησιάζει ο

επιτηρητής:

- "Συμβαίνει κάτι, δεσποινίς;"

- "Α, τίποτα! Τελείωσα το τεστ

 

 

 

Ο κινητήρας 

 

 

Σε ένα αεροπλάνο βρίσκονται μεταξύ άλλων και δύο ξανθιές. Ξαφνικά ο πιλότος ανακοινώνει από το μεγάφωνο.

- "Κυρίες και κύριοι υπάρχει ένα πρόβλήμα στο έναν κινητήρα, αλλά μην ανησυχείτε, έχουμε άλλους τρεις. Βέβαια λόγω της βλάβης θα καθυστερήσουμε 10 λεπτά."

Μετά από λίγο ο πιλότος κάνει και νέα ανακοίνωση ότι υπάρχει πρόβλημα και στον δεύτερο κινητήρα και έτσι θα καθυστερήσουν άλλα 20 λεπτά. Μετά από λίγη ώρα και άλλη ανακοίνωση από τον πιλότο ότι υπάρχει βλάβη και στον τρίτο κινητήρα και το γεγονός αυτό θα προκαλέσει επιπλέον καθυστέρηση 40 λεπτών. Εντωμεταξύ ο φόβος είχε καταλάβει όλους τους επιβάτες εκτός από τις δύο ξανθιές οι οποίες ήταν αγανακτισμένες και λέει η μία στην άλλη:

- "Αν χαλάσει και ο τέταρτος κινητήρας δε θα φτάσουμε ούτε σε τέσσερις ώρες." 

 

 

 

 

 

 

 

 

Posted

Htan pou lete enas agroths kai pantreftike mia gineka pou ths areze na katharizei.Ths ipe oti mporouse na ka8arizei olo to spiti ektos apo ton stavlo. Perase enas xronos h gineka dn ixe pathsei ston stavlo, wspou mia mera den ante3e kai anoi3e tin porta, tote ena alogo tin pathse mia kai tin skotwse.... Ton epomeno xrono o agroths pantreftike mia alh gineka. Ths lei kai afthnhs oti den tha prepi na pathsei ston stavlo, pernaei enas xronos mi antexwntas allo omws tin periergeia h defterh gineka tou anoi3e thn porta tou stavlou, girizw kai to alogo thn pataei mia GG kai afth.Pernaei akoma enas xronos, pou lete, kai pantrevete allh mia gineka o agroths.Vazi louketa ston stavlo kai tis lei min pathseis ston stavlo pls. Pernane 2 xronia.. min mporwntas na antista8i stin periergia ths anoigi tin porta tou stavlou, petagete to alogo tin travai mia me ta podia tou, xwma kai afth.

Stin kydia tis mazevonte gnwstoi kai filoi kai enas papas.Otan teliwse h kydia ernousane oi ginekes mprosta apo ton atixo andra, aftos egnefe me to kefali tou.Pernousan oi adres aftos kounouse to kefali tou.

Paei kai o papas kai ton rwtaei: "Giati teknon mou otan pernane oi ginekes esy gnefis kai otan pernane oi andres kounas to kefali sou" ?

Kai apantaei o agroths: "Oi gynaikes erxontousan na mou poune silipitiria kai egw elega efxaristw, oi andres mou legane TO POULAS TO ALOGO? egw tous elega OXI :P"

 

 

Ntax twra, prepi na ginonte kapies kinhseis gia na gelasete ala dn mou erxotan kana alo na grapsw :P

Posted

Paei pou lete o totos me enan filo tou se mia agnosti xora...

 

Vriskoun ena tupo mporsta tous kai ton rotaei o totos.. :

 

Re file uparxoun edw se autin tin xora aspres gunaikes ???

Apantaei autos : Nai uparxoun...

 

Ton ksanarotaei.. Re file maures gunaikes uparxoun edw ??

 

Ton leei NAI...

 

Telos ton rotaei... Aspomaures gunaikes uparxoun edw se autin tin xora ??

 

Kai tou leei OXI...

 

O totos xlomiazei gurizei ston filo tou kai tou leei:

 

Kai sto eipa re vlaka pali PIgkouino g@mis@me !  :P :P :P

Posted

Paei pou lete o totos me enan filo tou se mia agnosti xora...

 

Vriskoun ena tupo mporsta tous kai ton rotaei o totos.. :

 

Re file uparxoun edw se autin tin xora aspres gunaikes ???

Apantaei autos : Nai uparxoun...

 

Ton ksanarotaei.. Re file maures gunaikes uparxoun edw ??

 

Ton leei NAI...

 

Telos ton rotaei... Aspomaures gunaikes uparxoun edw se autin tin xora ??

 

Kai tou leei OXI...

 

O totos xlomiazei gurizei ston filo tou kai tou leei:

 

Kai sto eipa re vlaka pali PIgkouino g@mis@me !  :P :P :P

 

hehe poli kalo

 

 

loipon:

 

 

pos legontai oi efta nanoi otan doun tin xionati gimnoi??

 

Seven Up:/

Posted
pos legontai oi efta nanoi otan doun tin xionati gimnoi??

 

Seven Up:/

  x0ax0a0xa0x0x ;)

 

 

 

 

 

Δύο φίλοι 

     

   

  Δυο φίλοι συζητούν για τις γυναίκες τους:

- "Δεν μου λες", λέει ο ένας, "η γυναίκα σου είναι καλή στο κρεββάτι;"

- "Τι να σου πω", λέει ο άλλος, "άλλοι λένε ναι, άλλοι λένε όχι..."

 

 

 

 

 

Το πένθος... 

     

   

  Μπαίνει κάποιος σε ένα μπαρ και βλέπει έναν παλιό του φίλο να κάθεται ολομόναχος και να τα πίνει. Τον πλησιάζει λοιπόν:

- "Τι έχεις, βρε Μανώλη; Φαίνεσαι χάλια!"

- "Τι να `χω; Τον περασμένο Μάρτιο πέθανε η μάνα μου και μου άφησε 1.000.000 δρχ."

- "Συλλυπητήρια, βρε παιδί μου..."

- "Αργότερα, τον Απρίλιο πέθανε ο πατέρας μου και μου άφησε 20.000.000 δρχ."

- "Τρομερό! Να χάσεις και τους δυο γονείς σου σε δυο μήνες! Πως να μην είσαι χάλια..."

- "Ύστερα, τον περασμένο μήνα πέθανε και η θεία μου και μου άφησε 10.000.000 δρχ."

- "Να χάσεις τρία μέλη της οικογένειάς σου σε τόσο μικρό χρονικό διάστημα! Είναι φοβερό!"

- "Και αυτό το μήνα... τίποτα!"

 

 

Posted

POLU COPY PATE PEZEI APO TO JOKES.GR ALLA TELOS PANTON

 

Δύο ξανθοί καουμπόηδες κάθονται σε ένα σαλούν και τα πίνουν.

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

Ο μπάρμαν του σφίγγει το χέρι και λέει δυνατά:

 

- Τους μισώ τους κωλο-ινδιάνους. Την περασμένη βδομάδα τα καθήκια έκαψαν το σπίτι μου, βίασαν τη γυναίκα μου και σκότωσαν τα δύο μου παιδιά. Θα δώσω χίλια δολάρια σε όποιον μου φέρει το κεφάλι ενός ινδιάνου.

 

Οι δύο ξανθοί αλληλοκοιτάζονται, πληρώνουν και φεύγουν για να κηνυγήσουν ινδιάνους. Μετά από αρκετές ώρες βρίσκουν έναν ινδιάνο. Ο ένας ξανθός αρπάζει μια πέτρα και τον πετυχαίνει στο κεφάλι ρίχνοντάς τον από το άλογό του και αφήνοντάς τον αναίσθητο. Για κακή τους τύχη όμως ο ινδιανός κατρακυλάει σε μια ρεματιά.

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

 

- Μεγάλε, για κοίτα εδώ λίγο.

- Όχι τώρα, δε μπορώ.

 

Ο πρώτος τον σκουντάει στους ώμους επίμονα και του ξαναλέει:

- Μα κοίτα σου λέω!

- Παράτα μας ρε φίλε. Έχω χίλια δολάρια στα χέρια μου.

 

Ο πρώτος επιμένει ακόμη:

- Σε παρακαλώ, κοίτα!

 

Ο άλλος γυρίζει και βλέποντας πέντε χιλιάδες ινδιάνους στην κορυφή της ρεματιάς μονολογεί:

 

- Ω, Θεέ μου! Θα γίνουμε εκατομμυριούχοι!

 

 

Posted

ΣΚΗΝΗ 1η (Σουρεαλισμός)

 

Ο Γκουζγκούνης, είναι πρώτη μούρη στο πλάνο και φυσικά πηδάει την γκόμενα. Σε μια στιγμή μουρμουρίζει κάπως δυνατά:

- Πω, πω, να είχα μια μπύρα τώρα...

Οπότε, ένα χέρι εμφανίζεται -από το πουθενά- στο πλάνο, κραδαίνοντας ένα πελώριο kriker με παγωμένη μπύρα. Ο Γκουζγκούνης την βουτάει, την κατεβάζει μονορούφι και συνεχίζει το Θεάρεστο (με θήτα κεφαλαίο) έργο του!

 

ΣΚΗΝΗ 3η (Σενάριο)

 

Όσο βλέπει κανείς Γκουζγκούνη, τόσο περισσότερο συλλαμβάνει την μεγαλειωδώς αφαιρετική σκέψη των σεναριογράφων, αλλά και την απίστευτη ικανότητά τους να ζωγραφίζουν σε ένα τόσο ευτελές (όπως θεωρείται) θέαμα τα πάθη των ανθρώπων που όσο και να προσπαθούν να ξεφύγουν από αυτά, στο τέλος υποκύπτουν με Ντοστογιεφσκική μαεστρία: Χαλάνε τα υδραυλικά μιας. Ο Γκουζγκούνης έρχεται ως υδραυλικός στο σπίτι της περί ης ο λόγος, στρογγυλοκάθεται στο τραπέζι της κουζίνας όπου έχει μια μεγάλη φρουτιέρα με πορτοκάλια. Παίρνει ένα πορτοκάλι στο χέρι του και ρωτάει όλος αβρότητα:

- Πορτοκάλι θέλεις;

- Όχι! απαντά αυτή.

- Να σε γ*μήσω θέλεις;

- Δεν έχω πρόβλημα!!! απαντά αυτή.

Και... η συνέχεια επί της οθόνης.

 

ΣΚΗΝΗ 4η (Ατάκα)

 

Και πάλι ως υδραυλικός έρχεται στο σπίτι μιας τσαχπίνας. Στρογγυλοκάθεται, ως είθισται, στο τραπέζι της κουζίνας όπου ακολουθεί ο εξής διάλογος:

- Καφέ θέλεις; ρωτά αυτή.

- Ναι. απαντά ο Μεγάλος.

- Πως τον πίνεις;

- Πολλά βαρύ και όχι, με δύο φουσκάλες

- Είσαι και μερακλής!

- Έχεις γ*μώ τις κωλάρες!!!

Την συνέχεια την αφήνω ως άσκηση στον αναγνώστη.

 

ΣΚΗΝΗ 5η (Έγκλημα και Τιμωρία)

Ο Γκουζγκούνης γυρνάει στο σπίτι κουρασμένος - έφτιαχνε υδραυλικά ντε! Aφήνει την τσάντα με τα σύνεργα κάτω. Χαιρετάει βαριεστημένα την γυναίκα του και την ρωτάει:

- Τι φαΐ έχει;

- ...δεν έκανα φαΐ... απαντά εκείνη απολογητικά, με ψιλοπονηρό όμως ύφος

- Τι; Δεν έκανες φαΐ; Θα σε γ*μήσω!

Όπερ και εγένετο!

 

ΣΚΗΝΗ 7η (Ο πιτσαράς)

 

Ο Γκουζγκούνης παίζει τον ρόλο του πιτσαρά!

- Έφερα τις πίτσες.

- Μα δε παραγγείλαμε πίτσες, απαντούν οι γκόμενες

- Παραγγείλατε, δε παραγγείλατε, εγώ θα σας γ*μήσω!!![/Ι]

 

ΣΚΗΝΗ 8η (Ατάκα)

 

Ο Γκουζγκούνης μπαίνει σε ένα μπαρ. Πάει προς τον πάγκο και κοζάρει την μπαργούμαν. Στον τοίχο έχει ένα ρολόι. Πάει να το κοιτάξει, μπαίνει στην μέση η μπαργούμαν. Κάνει δεξιά, ξαναμπαίνει μπροστά του η μπαργούμαν! Κάνει αριστερά, ξανά - μανά μπροστά του η μπαργούμαν. Τρελαίνεται ο Αρχηγός και γυρνάει και της λέει:

- Δεν βλέπω την ώρα να σε γ*μήσω!!!!

 

Kinezika

Ο γκέι: Νάμουνα μουνάκι

Ο μικροβιολόγος: Γιαταούρα

Ο παλαιοπώλης: Σαβούρα

Ο φτωχός: Μπατηράκι

Ο νεκροθάφτης: Νασουσύρω τοκασόνι

Η πουτάνα: Τόχω Καιτοδίνω

Η παρθένα: Ναμουνάκι Γιαγαμίσι

Ο προστάτης καταστημάτων: Σουγαμώ Τομαγαζάκι

Ο συνταξιούχος: Τζάμπα Τακούμπαγα

Ο Αλβανός: Γιαταμπάζα

Ο ζητιάνος: Δωσεκάνα Ταληράκι

 

Italika

Η πουτάνα: Ρόζα Πνιχτοκουνέλι

Ο δημόσιος υπάλληλος: Τζιοβάνι Ταπιάνι

Η χήρα κόμισσα: Ιωάννα Δε Λα Καβάλλα

Ο μαλάκας: Ντίνο Παιχτονπάλι

Ο γκέι: Μπρούνο Τονπαίρνω

Η νυμφομανής: Λιάνα Μασταπιάνει

Ο φορολογούμενος: Τζιάκομο Λαδόνι

Η έφηβη: Νίνα Ξέκολι

 

Rosika

Η αισθητικός χειρούργος: Ταυτιά να σούκοβα

Η λεσβία: Τατιάνα Πλακομούνοβα

Η νυμφομανής: Ψωλιάνα Μάζεβα

Η πουτάνα: Νατάσσα Ξεσκίστροβα

Ο δημόσιος υπάλληλος: Σεργκέι Ταπιάνωφ

Η μανάβισσα: Ταμήλα Παζάρευα

Ο μαλάκας: Ιβάν Χουφτώφ

Ο ηλίθιος: Εβγκένι Τρόμποβιτς

Η έφηβη: Ναταλία Καυλοραπάνοβα

Ο ξεπεσμένος γκέι: Ποπώφ Βρομοκολάρωφ

Ο ενεργητικός γκέι: Ιβάν Κολομπαρώφ

Ο παθητικός γκέι: Ντιμίτρι Ξεκόλωφ

 

Tourkika   

Ο κολομπαράς: Τονδίνωγλου

Ο γκέι: Τονπαίρνωγλου

Η πουτάνα:Ψωλοπνίχτρογλου

Ο μαλάκας: Χειρογλυκάνογλου

Ο δημόσιος υπάλληλος: Ραχάτογλου

Ο τεμπέλης: Ξαπλώνογλου

Ναυμαχία: καϊκ καυγά

Χειροβομβίδα: μπουμ κεφτές

Θωρηκτό: τσαμπουκά παπόρ

Υποβρύχιο: μπαμπές παπόρ

Ελικόπτερο: σαματά ζουζούν

Τανκ: σαματά τουτού

Αναπηρική σύνταξη: σακάτ μπαξίς

Νοσοκομείο; σακάτ οντάς

Ασθενοφόρο: σακάτ αραμπά.

Παδίατρος: τσογλάν ντοκτόρ

Εντερολόγος: πατσά ντοκτόρ

Ιατροδικαστής: ψοφίμ ντοκτόρ

Χειρούργος: χασάπ ντοκτόρ

Αισθητικός χειρούργος: χανούμ πατσά χασάπ

Αιρ κοντίσιον: αραλίκ κουτί

Πεθερά: σιχτίρ χανούμ

Κηπουρός: ζαρζαβάτ τσογλάν

Σουτιέν: μεμέ ζεμπίλ, μαστάρ ντορβάς

Κολομπαράς: ροδέλ καρφί

Καπότα: τσουτσούν φερετζές

Μαλακία: τσουτσούν νταχτιρντί

Σπέρμα: τσουτσούν σιρόπ

Η πρώτη νύχτα του γάμου: τσουτσούν σεφτές

Τηλεόραση: μπανιστίρ ντουλάπ

Σχολείο: τσογλάν μαντρί

Βέρα: μπουνταλά χαλκά

Ψυγείο: τουρτούρ ντουλάπ

Ράδιο: σαματά κουτί

Η λίμνη των κύκνων: παπί χαβούζ

Αδέλφια μου αλήτες πουλιά: καλντερίμ τσογλάν τσίου τσίου

Βιβλιάριο απόρων κορασίδων: μπατίρ χανούμ τεφτέρ

Μακιγιάζ: χανούμ σοβά μερεμέτ

Θησαυροφυλάκιο: παρά σεντούκ

 

Posted

Κράσαρ' ο σέρβερ, μάνα μου

Πέσαν όλα τα fora

βλαστήμησ' ο συντηρητής

κι οι bloggers τάδαν όλα

 

Όμως τι φταίει ο δυστυχής

πούχε τον Gates πατέρα;

Aς βάζαν Linux σταθερό

να τρέχει νύχτα μέρα

 

 

Τώρα τ' αρχεία χάθηκαν

πάνε, τα πήρε ο διάλος

κι ας τρέχουνε προγράμματα

να δουν αν φταίει άλλος

 

 

Πάνε και τα template μας

τα πολυπαινεμένα

αντίο και στα κείμενα

τα δύσκολα γραμμένα

 

 

Γιατί καλό ?ναι το backup

όλοι πλέον το μάθαν

κι αν τόξεραν νωρίτερα ...

κάποτε θα το κάναν!

 

 

Αχός βαρύς ακούγεται,

πολύ καντίλι πέφτει

μανα μ' ο server κράσαρε

κι άλλο πια δεν αντέχει

 

 

Τα monitor εσβήσανε

Οι δίσκοι σταματήσαν

Ολα τα sites πέσανε

και τα ρολά τα κλείσαν

 

 

Μάνα ο σέρβερ κράσαρε,

και δεν το λέω για αστείο,

τον έβλεπα και έλιωνα,

στα ράφια του Πλαισίου.

 

 

Μάνα ο σερβερ κράσαρε

κράσαρε κι η ζωή μας,

παν' τα ωραία mp3,

πάει η δικτύωσή μας

 

 

Μανούλα μου σου το' χα πει

μην παίζουμε με την ΔΕΗ,

αν είχαμε ένα UPS,

θα ήταν όλα σαν εψές.

 

 

Σύρε admin μου αψηλέ,

Σύρε admin κιμπάρη,

Να δεις σαν τι εγίνηκε

Και τούτη η μπόρα εφάνη

 

 

Κινάνε δυο τεχνικοί

Με τον admin αντάμα

Να παν' να φτιάξουν τη ζημιά

Να κάμουνε το θάμα

 

 

Η μέρα έφυγε βαριά

Στου server το κιβούρι

Μας μες στην άγρια νυχτιά

Εφάνη κελεπούρι

 

 

Ο server μανα μ' φτιάχτηκε

Ο server δεν κρασάρει

Ο sysadmin εχάρηκε

Το ίδιο και οι κουμπάροι (;;; )

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

    • [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!!! 🙂
    • Thank you for sharing. You are a capable and skilled person. Thank you again for your selfless dedication, Guytis🫡
    • he kept his promise! i think it's a good idea to unban his old account. he shares files with the community and could help both new and veteran l2off users! good job, Guytis!
  • Topics

×
×
  • Create New...