Jump to content

[GR]Γράμμα σε έναν <<Αγανακτισμένο>> της <<Ανοιχτής Σχολής>>


Xplicit7

Recommended Posts

Σε έχω δει, σε βλέπω όλο και πιο συχνά σήμερα στα κανάλια ή στο διαδίκτυο. Σε θυμάμαι λιγάκι και μερικά χρόνια πριν, το 2006 και το 2007, όταν ήμουν και εγώ φοιτητής, σε βλέπω και τώρα ακόμα περισσότερο, αν και είμαι κάπως πιο παραπέρα.

 

Απέκτησες τώρα το όνομα του «αγανακτισμένου» ή καλύτερα στο έδωσαν οι κολλητοί της κυβέρνησης στα κανάλια για να παρομοιάσουν τη στάση σου με το λαϊκό κίνημα των πλατειών.

 

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

 

Αυτό που δεν μπορώ ακόμα να καταλάβω όμως είναι γιατί το κάνεις; Αν δεν είσαι τίποτα από τα παραπάνω τι συμφέρον έχεις, τι στόχο; Ανησυχείς για τη σχολή σου, το πτυχίο σου, το μέλλον σου; Από ποιόν απειλούνται αυτά; Από τις καταλήψεις ή μήπως από την κυβέρνηση, το μνημόνιο, το νέο νόμο; Για ποιά σχολή αγωνιάς, ποιά ομαλή της λειτουργία υπερασπίζεσαι; Αυτή που δεν έχει χρήματα ούτε για τις βασικές ανάγκες της και κλείνει σαν το ΤΕΙ Πειραιά ή την Αρχιτεκτονική πέρσι; Αυτή που δεν θα έχει καθηγητές αφού κόβονται οι συμβασιούχοι, γίνονται απολύσεις και μειώσεις διδακτικού και ερευνητικού προσωπικού; Ποιο είναι αυτό το πτυχίο που πασχίζεις να πάρεις; Το πτυχίο της 50% ανεργίας στη νέα γενιά; Μη κλείνεις τα μάτια σου, ρώτα τα αδέρφια σου, τους φίλους σου, τους μεγαλύτερους από τη σχολή που πήραν πτυχίο να σου πουν τι κάνουν. Δες τους γονείς σου που βγήκαν στην εφεδρεία, που απολύθηκαν, που δεν έχουν χρήματα όχι μόνο για το χαρτζιλίκι σου αλλά ούτε καν για τις βασικές ανάγκες. Θες να προλάβεις να τελειώσεις, να μη σου μένουν μαθήματα ώστε να γίνει τι; Να κάνεις ένα μεταπτυχιακό; Έλα στην παρέα, όλοι σχεδόν κάνουν και από ένα. Και άλλο, και άλλο. Και μετά τι; Οι καταλήψεις σε κρατάνε πίσω, σου στερούν το μέλλον σου; Ποιο μέλλον; Σε ποιο κόσμο ζεις; Έστω πριν μερικά χρόνια να είχε κάποια βάση αυτό αλλά τώρα;  Η καταστροφή, ή φτώχεια, η μετανάστευση, η εξαθλίωση, αυτά είναι το παρόν, ούτε καν το μέλλον.

 

Έμαθες ότι τα πάντα στη ζωή είναι το άτομο, ο συνεχής αγώνας δρόμου ενάντια στους άλλους. «Πάνω στις δικές σου δυνάμεις να στηρίζεσαι», κάθε άνθρωπος είναι μόνος του, τέτοια μαθαίναμε από το σχολείο. Εγώ θα βρω την άκρη, κάπως θα την σκαπουλάρω, έστω με δυσκολίες, σκέφτεσαι. Και που φτάσαμε ρε φίλε μου; Μέχρι και το ρεύμα θα κόβουν από τα σπίτια. Και άμα κόψουν το ρεύμα πως θα έχεις Facebook; Πώς θα κάνεις κίνημα αγανακτισμένων για να ανοίξει η σχολή; Βρες λίγο το χρόνο και την ηρεμία να σκεφτείς. Αν είσαι καβατζωμένος έχει καλώς. Άλλωστε κανείς ποτέ δεν κατηγόρησε τους πλούσιους γιατί δεν διαμαρτύρονται. Δεν διαμαρτύρονται γιατί κερδίζουν, περνάνε καλά. Αν δεν είσαι όμως αδερφέ μου μάλλον έχει πάρει λάθος δρόμο.

 

Λες ότι η κατάληψη δεν είναι το μοναδικό μέσο πάλης, δεν κερδίζεις τίποτα με αυτή. Βγαίνει μια «εκπρόσωπός» σου, στα κανάλια και λέει ότι πρέπει να διαμαρτυρηθούμε με άλλο τρόπο, μέσω Facebook, twitter, να στείλουμε μια επιστολή… Φίλε μου και φίλη μου, εσύ χαζός ή χαζή δεν είσαι. Δεν τα πιστεύεις αυτά, δεν μπορεί να ταυτίζεται με ότι πιο σάπιο έχει βγάλει η γενιά σου. Εσύ απλά έχεις παραδώσει τα όπλα, λες ότι τίποτα δεν μπορεί να αλλάξει. Εδώ μας πέρασαν όλα αυτά, μια κατάληψη θα τα σταματήσει; Και αρνείσαι να απαντήσεις στο πιο απλό. Και αν δε γίνει κατάληψη, και αν  περάσουν όλα, και αν δώσεις και εξετάσεις, τι θα γίνει; Αυτό δεν έκανες τόσα χρόνια, αυτά δεν έκαναν όλοι εδώ και τόσα χρόνια; Και φτάσαμε εδώ που φτάσαμε. Συμβόλαιο ότι θα νικήσει το κίνημα δεν θα υπογράψει κανείς ποτέ, τις δυνατότητες που έχει αν συνδεθεί και με τον αγωνιζόμενο λαό πρέπει να μετράμε. Αλλά το μόνο σίγουρο, για το οποίο θα υπογράψω συμβόλαιο, είναι ότι αν δε γίνει κίνημα, αν τα πράγματα συνεχίσουν όπως είναι τότε και εσύ θα βρεθείς στον ίδιο βούρκο με το διπλανό σου. Και εσύ μαζί με τον καταληψία ή τον απεργό. Και λες, όχι μωρέ, εγώ μπορεί να την παλέψω. Όντως την παλεύουν κάποιοι· τα πράγματα είναι σκληρά υπάρχουν τάξεις, συμφέροντα, κάποιοι κερδισμένοι και κάποιοι χαμένοι. Αλλά εσύ γιατί πιστεύεις ότι θα σαι από αυτούς; Δεν υπάρχουν πρώτα τα παιδιά των βιομηχάνων και των εφοπλιστών, δεν υπάρχουν οι κομματικοί στρατοί. Από τους 440 που ψηφίσαν ανοιχτή σχολή στην Πάντειο για παράδειγμα 10-20 μπορεί να χωθούν κάπου. Εσένα θα περιμένανε;

 

Σκέφτεσαι ότι εσύ είσαι καλός φοιτητής, πέρασες στο πανεπιστήμιο με καλούς βαθμούς, δεν άφησες πολλά μαθήματα, έχεις καλό μυαλό, κάτι θα βρεθεί και για σένα. Και νομίζεις ότι έστω θα βρεις ένα καταφύγιο, στις σπουδές σου, στις έρευνες, τα βιβλία σου. Όμως δεν υπάρχουν πια καταφύγια. Δεν είσαι και τόσο μοναδικός, και οι διπλανοί σου το ίδιο μπορεί να ελπίζουν και οι εποχές είναι σκούρες. Και λεφτά για την Παιδεία και την έρευνα δεν υπάρχουν. Και λεφτά για δίδακτρα δεν έχεις, ενώ κάποιοι άλλοι έχουν. Και οι υποτροφίες κόβονται. Και τελικά μόνο δυο τρεις κάτι καταφέρνουν και βρίσκεσαι να βολοδέρνεις καρφιτσώνοντας πτυχία, προσπαθώντας να πάρεις μέρος σε κάνα πρόγραμμα, να χωθείς σε καμιά δουλίτσα. Στην ίδια μοίρα με τους άλλους, που τους κατηγορούσες ότι δε διαβάζουν, ότι δεν ασχολούνται με τις σπουδές τους.

 

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

 

Έχασες μερικές από τις καλύτερες στιγμές που προσφέρουν οι συλλογικές διεκδικήσεις, τα φοιτητικά αμφιθέατρα, η αλληλεγγύη σε μια πορεία. Έχασες ακόμα και το σημαντικότερο, που κάποτε ορκιζόσουν ότι θα το κρατήσεις. Την αξιοπρέπειά σου. Δεν έγινες τίποτα διαφορετικό από μια άλαλη μάζα χειροκροτητών της σύγχρονης χούντας. Αυτό ήθελες; Να σε χλευάζουν οι συνάδελφοι σου, σα λακέ της εξουσίας; Και ούτε καν τις συνελεύσεις να μην μπορείς να κερδίσεις, και να σε αγκαλιάζουν τα πιο σιχαμερά απολιθώματα των κυρίαρχων ΜΜΕ, και να κλαψουρίζεις ανήμπορος να σταματήσεις το ποτάμι του φοιτητικού αγώνα.

 

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

 

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

 

source : http://edopolytexneio.gr/?p=503

 

/discuss

Link to comment
Share on other sites

sad but true, οι περισσότεροι πάντα εκεί καταλήγουν

Όταν ακούω ότι θέλουν να κάνουν επανάσταση μέσω Facebook και Twitter βγάζω σπυριά ειλικρινά..

Link to comment
Share on other sites

Όταν ακούω ότι θέλουν να κάνουν επανάσταση μέσω Facebook και Twitter βγάζω σπυριά ειλικρινά..

ναι βάζουν 1 status μαζεύει 2,5,10 likes και νομίζουν ότι έκαναν επανάσταση, την άλλη μέρα το ίδιο κ.ο.κ. Είμαστε για λύπηση όχι μόνο σαν κυβέρνηση αλλά και σαν λαός.
Link to comment
Share on other sites

ναι βάζουν 1 status μαζεύει 2,5,10 likes και νομίζουν ότι έκαναν επανάσταση, την άλλη μέρα το ίδιο κ.ο.κ. Είμαστε για λύπηση όχι μόνο σαν κυβέρνηση αλλά και σαν λαός.

Το κρίμα είναι ότι οι καταλήψεις από 300 + έπεσαν σήμερα στις 160...

Link to comment
Share on other sites

Το κρίμα είναι ότι οι καταλήψεις από 300 + έπεσαν σήμερα στις 160...

ο λόγος; btw εμείς αύριο ξεκινάμε
Link to comment
Share on other sites

Όταν ακούω ότι θέλουν να κάνουν επανάσταση μέσω Facebook και Twitter βγάζω σπυριά ειλικρινά..

... ti perimenis re malaka niko oute ego oute esi oute kanis dn ta blepi proti fora afta... Ta pio polla pedakia exoun xazepsi as pame eki as ginoume margionetes kai ola tha pane kala exi o theos as min kanoume tipota apla as imaste kala skilia e paidia ithela na po ....
Link to comment
Share on other sites

Ενδιαφέρον το άρθρο.

 

Δεν αναφέρομαι στον κρυμμένο Δαπίτη και Πασόκο που μεταμφιέζεται σε ανεξάρτητο και ακηδεμόνευτο από παρατάξεις και κόμματα το πρωί, πριν πάει το βραδάκι να στρογγυλοκαθίσει τις κομματικές καρέκλες του.

Αυτοί και η άβουλη μάζα που τους ακολουθεί είναι οι μόνοι που περιμένω να μην αλλάξουν στρατόπεδο.

 

Γενικά αν δεν καθαρίσει(νοητικά) η κοινωνία, αυτό το σάπιο σύστημα δεν πρόκειται να εξυγιανθεί.

Link to comment
Share on other sites

Γενικά αν δεν καθαρίσει(νοητικά) η κοινωνία, αυτό το σάπιο σύστημα δεν πρόκειται να εξυγιανθεί.

μεγάλη κουβέντα είπες φίλε
Link to comment
Share on other sites

ο λόγος; btw εμείς αύριο ξεκινάμε

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

... ti perimenis re malaka niko oute ego oute esi oute kanis dn ta blepi proti fora afta... Ta pio polla pedakia exoun xazepsi as pame eki as ginoume margionetes kai ola tha pane kala exi o theos as min kanoume tipota apla as imaste kala skilia e paidia ithela na po ....

Αρρωστημένη κατάσταση δεν αντέχω άλλο, δεν αντέχω άλλο αυτή την απάθεια και την υποταγή..

Ενδιαφέρον το άρθρο.

Αυτοί και η άβουλη μάζα που τους ακολουθεί είναι οι μόνοι που περιμένω να μην αλλάξουν στρατόπεδο.

 

Γενικά αν δεν καθαρίσει(νοητικά) η κοινωνία, αυτό το σάπιο σύστημα δεν πρόκειται να εξυγιανθεί.

Το λυπηρό είναι ότι δεν είναι μειονότητα πχ αλλά είναι και πλειοψηφία όλοι πάνε και γράφονται ΔΑΠ και ΠΑΣΠ..

Link to comment
Share on other sites

το πιο λυπηρό έτσι όπως καταντήσαμε είναι ότι θα χυθεί αίμα και πάρα πολύ μάλιστα

Link to comment
Share on other sites

Το λυπηρό είναι ότι δεν είναι μειονότητα πχ αλλά είναι και πλειοψηφία όλοι πάνε και γράφονται ΔΑΠ και ΠΑΣΠ..

Το σύστημα είναι σάπιο από τις βάσεις του.

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

Link to comment
Share on other sites

το πιο λυπηρό έτσι όπως καταντήσαμε είναι ότι θα χυθεί αίμα και πάρα πολύ μάλιστα

Οι κινητοποιήσεις είναι σίγουρες όπως και η καταστολή που ετοιμάζει η σύγχρονη χούντα.

Link to comment
Share on other sites

Το σύστημα είναι σάπιο από τις βάσεις του.

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

Όλα σε αυτή τη χώρα είναι μία μικρογραφία της κοινωνίας μας από τα Πανεπιστήμια μέχρι το ποδόσφαιρο.Παντού όμως..

Link to comment
Share on other sites

Το σύστημα είναι σάπιο από τις βάσεις του.

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

για να νομίζουν πως ανήκουν σε κοινωνικές ομάδες;

Οι κινητοποιήσεις είναι σίγουρες όπως και η καταστολή που ετοιμάζει η σύγχρονη χούντα.

σαν λαός δε νομίζω πως το αξίζουμε

Όλα σε αυτή τη χώρα είναι μία μικρογραφία της κοινωνίας μας από τα Πανεπιστήμια μέχρι το ποδόσφαιρο.Παντού όμως..

και ξανά sad but true
Link to comment
Share on other sites

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

    • I have a Polish friend who gave me a solution for this issue, all credit goes to @SSnakEE. The ingenuity is as follows. Total thanks to him. Playable.java insert to public boolean canKeepAttacking(Creature target) { //if target is flagged keep attacking if (targetPlayer.getPvpFlag() > 0) return true;  
    • adapt for 409 version wtih old config/sql/html's only the core update!   package net.sf.l2j.gameserver.model.actor.instance; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.commons.math.MathUtil; import net.sf.l2j.Config; import net.sf.l2j.gameserver.data.SkillTable; import net.sf.l2j.gameserver.data.manager.BufferManager; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.model.actor.Summon; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.network.serverpackets.ItemList; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.skills.L2Skill; public class SchemmerBuffer extends Folk { private static final int PAGE_LIMIT = 6; public SchemmerBuffer(int objectId, NpcTemplate template) { super(objectId, template); } private void showMainWindow(Player activeChar) { final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(getNpcId(), 0)); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%name%", activeChar.getName()); html.replace("%buffcount%", "You have " + activeChar.getBuffCount() + "/" + activeChar.getMaxBuffCount() + " buffs."); activeChar.sendPacket(html); } @Override public void onBypassFeedback(Player player, String command) { if (player.getPvpFlag() > 0 && Config.PRESTRICT_USE_BUFFER_ON_PVPFLAG) { player.sendMessage("You can't use buffer when you are pvp flagged."); return; } if (player.isInCombat() && Config.PRESTRICT_USE_BUFFER_IN_COMBAT) { player.sendMessage("You can't use buffer when you are in combat."); return; } if (player.isDead()) return; StringTokenizer st = new StringTokenizer(command, " "); String actualCommand = st.nextToken(); if (actualCommand.startsWith("bufflist")) { autoBuffFunction(player, st.nextToken()); } else if (actualCommand.startsWith("restore")) { String noble = st.nextToken(); player.getStatus().setMaxCpHpMp(); if (noble.equals("true")) { SkillTable.getInstance().getInfo(1323, 1).getEffects(player, player); player.broadcastPacket(new MagicSkillUse(this, player, 1323, 1, 850, 0)); } final Summon summon = player.getSummon(); if (summon != null) summon.getStatus().setMaxHpMp(); showMainWindow(player); } else if (actualCommand.startsWith("cancellation")) { L2Skill buff; buff = SkillTable.getInstance().getInfo(1056, 1); buff.getEffects(this, player); player.stopAllEffectsExceptThoseThatLastThroughDeath(); player.broadcastPacket(new MagicSkillUse(this, player, 1056, 1, 850, 0)); player.stopAllEffects(); final Summon summon = player.getSummon(); if (summon != null) summon.stopAllEffects(); showMainWindow(player); } else if (actualCommand.startsWith("openlist")) { String category = st.nextToken(); String htmfile = st.nextToken(); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); if (category.startsWith("null")) { html.setFile("data/html/mods/buffer/" + htmfile + ".htm"); // First Page if (htmfile.equals("index")) { html.replace("%name%", player.getName()); html.replace("%buffcount%", "You have " + player.getBuffCount() + "/" + player.getMaxBuffCount() + " buffs."); } } else html.setFile("data/html/mods/buffer/" + category + "/" + htmfile + ".htm"); html.replace("%objectId%", String.valueOf(getObjectId())); player.sendPacket(html); } else if (actualCommand.startsWith("dobuff")) { int buffid = Integer.valueOf(st.nextToken()); int bufflevel = Integer.valueOf(st.nextToken()); String category = st.nextToken(); String windowhtml = st.nextToken(); String votebuff = null; if (st.hasMoreTokens()) votebuff = st.nextToken(); if (windowhtml.equals("malaria")) { if (player.getInventory().getItemCount(Config.PVOTE_BUFF_ITEM_ID, 0) >= 1) { player.getInventory().destroyItemByItemId("VoteCoins", Config.PVOTE_BUFF_ITEM_ID, 1, player, null); player.sendPacket(new ItemList(player, true)); player.sendMessage(1 + " Vote eye destroyed."); } else { player.sendMessage("You dont have enough (" + 1 + ") vote item for buff."); return; } } if (votebuff != null) { if (player.getInventory().getItemCount(Config.PVOTE_BUFF_ITEM_ID, 0) >= Config.PVOTE_BUFF_ITEM_COUNT) { player.getInventory().destroyItemByItemId("VoteCoins", Config.PVOTE_BUFF_ITEM_ID, Config.PVOTE_BUFF_ITEM_COUNT, player, null); player.sendPacket(new ItemList(player, true)); player.sendMessage(Config.PVOTE_BUFF_ITEM_COUNT + " vote stone destroyed."); } else { player.sendMessage("You dont have enough (" + Config.PVOTE_BUFF_ITEM_COUNT + ") vote item for buff."); return; } } Creature target = player; if (category.startsWith("pet")) { if (player.getSummon() == null) { player.sendMessage("Incorrect Pet"); showMainWindow(player); return; } target = player.getSummon(); } MagicSkillUse mgc = new MagicSkillUse(this, target, buffid, bufflevel, 1150, 0); player.sendPacket(mgc); player.broadcastPacket(mgc); SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, target); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile("data/html/mods/buffer/" + category + "/" + windowhtml + ".htm"); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%name%", player.getName()); player.sendPacket(html); } else if (actualCommand.startsWith("getbuff")) { int buffid = Integer.valueOf(st.nextToken()); int bufflevel = Integer.valueOf(st.nextToken()); if (buffid != 0) { SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, player); broadcastPacket(new MagicSkillUse(this, player, buffid, bufflevel, 450, 0)); showMainWindow(player); } } else if (actualCommand.startsWith("support")) { showGiveBuffsWindow(player); } else if (actualCommand.startsWith("givebuffs")) { final String schemeName = st.nextToken(); final int cost = Integer.parseInt(st.nextToken()); Creature target = null; if (st.hasMoreTokens()) { final String targetType = st.nextToken(); if (targetType != null && targetType.equalsIgnoreCase("pet")) target = player.getSummon(); } else target = player; if (target == null) player.sendMessage("You don't have a pet."); else if (cost == 0 || player.reduceAdena("NPC Buffer", cost, this, true)) BufferManager.getInstance().applySchemeEffects(this, target, player.getObjectId(), schemeName); } else if (actualCommand.startsWith("editschemes")) { showEditSchemeWindow(player, st.nextToken(), st.nextToken(), Integer.parseInt(st.nextToken())); } else if (actualCommand.startsWith("skill")) { final String groupType = st.nextToken(); final String schemeName = st.nextToken(); final int skillId = Integer.parseInt(st.nextToken()); final int page = Integer.parseInt(st.nextToken()); final List<Integer> skills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); if (actualCommand.startsWith("skillselect") && !schemeName.equalsIgnoreCase("none")) { if (skills.size() < player.getMaxBuffCount()) skills.add(skillId); else player.sendMessage("This scheme has reached the maximum amount of buffs."); } else if (actualCommand.startsWith("skillunselect")) skills.remove(Integer.valueOf(skillId)); showEditSchemeWindow(player, groupType, schemeName, page); } else if (actualCommand.startsWith("createscheme")) { try { final String schemeName = st.nextToken(); if (schemeName.length() > 14) { player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed."); return; } final Map<String, ArrayList<Integer>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes != null) { if (schemes.size() == Config.PBUFFER_MAX_SCHEMES) { player.sendMessage("Maximum schemes amount is already reached."); return; } if (schemes.containsKey(schemeName)) { player.sendMessage("The scheme name already exists."); return; } } BufferManager.getInstance().setScheme(player.getObjectId(), schemeName.trim(), new ArrayList<>()); showGiveBuffsWindow(player); } catch (Exception e) { player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed."); } } else if (actualCommand.startsWith("deletescheme")) { try { final String schemeName = st.nextToken(); final Map<String, ArrayList<Integer>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes != null && schemes.containsKey(schemeName)) schemes.remove(schemeName); } catch (Exception e) { player.sendMessage("This scheme name is invalid."); } showGiveBuffsWindow(player); } super.onBypassFeedback(player, command); } @Override public String getHtmlPath(int npcId, int val) { String filename = ""; if (val == 0) filename = "" + npcId; else filename = npcId + "-" + val; return "data/html/mods/buffer/" + filename + ".htm"; } /** * Send an html packet to the {@link Player} set a parameter with Give Buffs menu info for player and pet, depending on targetType parameter {player, pet}. * @param player : The {@link Player} to make checks on. */ private void showGiveBuffsWindow(Player player) { final StringBuilder sb = new StringBuilder(200); final Map<String, ArrayList<Integer>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes == null || schemes.isEmpty()) sb.append("<font color=\"LEVEL\">You haven't defined any scheme.</font>"); else { for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) { final int cost = getFee(scheme.getValue()); StringUtil.append(sb, "<font color=\"LEVEL\">", scheme.getKey(), " [", scheme.getValue().size(), " / ", player.getMaxBuffCount(), "]", ((cost > 0) ? " - cost: " + StringUtil.formatNumber(cost) : ""), "</font><br1>"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_givebuffs ", scheme.getKey(), " ", cost, "\">Use on Me</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_givebuffs ", scheme.getKey(), " ", cost, " pet\">Use on Pet</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_editschemes Buffs ", scheme.getKey(), " 1\">Edit</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_deletescheme ", scheme.getKey(), "\">Delete</a><br>"); } } final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(getNpcId(), 1)); html.replace("%schemes%", sb.toString()); html.replace("%max_schemes%", Config.PBUFFER_MAX_SCHEMES); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } /** * Send an html packet to the {@link Player} set as parameter with Edit Scheme Menu info. This allows the {@link Player} to edit each created scheme (add/delete skills) * @param player : The {@link Player} to make checks on. * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param page : The current checked page. */ private void showEditSchemeWindow(Player player, String groupType, String schemeName, int page) { final NpcHtmlMessage html = new NpcHtmlMessage(0); final List<Integer> schemeSkills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); html.setFile(getHtmlPath(getNpcId(), 2)); html.replace("%schemename%", schemeName); html.replace("%count%", schemeSkills.size() + " / " + player.getMaxBuffCount()); html.replace("%typesframe%", getTypesFrame(groupType, schemeName)); html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName, page)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } /** * @param player : The {@link Player} to make checks on. * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param page : The current checked page. * @return A {@link String} representing skills available for selection for a given groupType. */ private String getGroupSkillList(Player player, String groupType, String schemeName, int page) { // Retrieve the entire skills list based on group type. List<Integer> skills = BufferManager.getInstance().getSkillsIdsByType(groupType); if (skills.isEmpty()) return "That group doesn't contain any skills."; // Calculate page number. final int max = MathUtil.countPagesNumber(skills.size(), PAGE_LIMIT); if (page > max) page = max; // Cut skills list up to page number. skills = skills.subList((page - 1) * PAGE_LIMIT, Math.min(page * PAGE_LIMIT, skills.size())); final List<Integer> schemeSkills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); final StringBuilder sb = new StringBuilder(skills.size() * 150); int row = 0; for (int skillId : skills) { final String icon = (skillId < 100) ? "icon.skill00" + skillId : (skillId < 1000) ? "icon.skill0" + skillId : "icon.skill" + skillId; sb.append(((row % 2) == 0 ? "<table width=\"280\" bgcolor=\"000000\"><tr>" : "<table width=\"280\"><tr>")); if (schemeSkills.contains(skillId)) StringUtil.append(sb, "<td height=40 width=40><img src=\"", icon, "\" width=32 height=32></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skillId).getDescription(), "</font></td><td><button action=\"bypass npc_%objectId%_skillunselect ", groupType, " ", schemeName, " ", skillId, " ", page, "\" width=32 height=32 back=\"L2UI_CH3.mapbutton_zoomout2\" fore=\"L2UI_CH3.mapbutton_zoomout1\"></td>"); else StringUtil.append(sb, "<td height=40 width=40><img src=\"", icon, "\" width=32 height=32></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skillId).getDescription(), "</font></td><td><button action=\"bypass npc_%objectId%_skillselect ", groupType, " ", schemeName, " ", skillId, " ", page, "\" width=32 height=32 back=\"L2UI_CH3.mapbutton_zoomin2\" fore=\"L2UI_CH3.mapbutton_zoomin1\"></td>"); sb.append("</tr></table><img src=\"L2UI.SquareGray\" width=277 height=1>"); row++; } for (int i = PAGE_LIMIT; i > row; i--) StringUtil.append(sb, "<img height=41>"); // Build page footer. sb.append("<br><img src=\"L2UI.SquareGray\" width=277 height=1><table width=\"100%\" bgcolor=000000><tr>"); if (page > 1) StringUtil.append(sb, "<td align=left width=70><a action=\"bypass npc_" + getObjectId() + "_editschemes ", groupType, " ", schemeName, " ", page - 1, "\">Previous</a></td>"); else StringUtil.append(sb, "<td align=left width=70>Previous</td>"); StringUtil.append(sb, "<td align=center width=100>Page ", page, "</td>"); if (page < max) StringUtil.append(sb, "<td align=right width=70><a action=\"bypass npc_" + getObjectId() + "_editschemes ", groupType, " ", schemeName, " ", page + 1, "\">Next</a></td>"); else StringUtil.append(sb, "<td align=right width=70>Next</td>"); sb.append("</tr></table><img src=\"L2UI.SquareGray\" width=277 height=1>"); return sb.toString(); } /** * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @return A {@link String} representing all groupTypes available. The group currently on selection isn't linkable. */ private static String getTypesFrame(String groupType, String schemeName) { final StringBuilder sb = new StringBuilder(500); sb.append("<table>"); int count = 0; for (String type : BufferManager.getInstance().getSkillTypes()) { if (count == 0) sb.append("<tr>"); if (groupType.equalsIgnoreCase(type)) StringUtil.append(sb, "<td width=65>", type, "</td>"); else StringUtil.append(sb, "<td width=65><a action=\"bypass npc_%objectId%_editschemes ", type, " ", schemeName, " 1\">", type, "</a></td>"); count++; if (count == 4) { sb.append("</tr>"); count = 0; } } if (!sb.toString().endsWith("</tr>")) sb.append("</tr>"); sb.append("</table>"); return sb.toString(); } /** * @param list : A {@link List} of skill ids. * @return a global fee for all skills contained in the {@link List}. */ private static int getFee(ArrayList<Integer> list) { if (Config.PBUFFER_STATIC_BUFF_COST > 0) return list.size() * Config.PBUFFER_STATIC_BUFF_COST; int fee = 0; for (int sk : list) fee += BufferManager.getInstance().getAvailableBuff(sk).getPrice(); return fee; } private void autoBuffFunction(Player player, String bufflist) { ArrayList<L2Skill> skills_to_buff = new ArrayList<>(); List<Integer> list = null; if (bufflist.equalsIgnoreCase("fighter")) list = Config.PFIGHTER_SKILL_LIST; else if (bufflist.equalsIgnoreCase("mage")) list = Config.PMAGE_SKILL_LIST; if (list != null) { for (int skillId : list) { L2Skill skill = SkillTable.getInstance().getInfo(skillId, SkillTable.getInstance().getMaxLevel(skillId)); if (skill != null) skills_to_buff.add(skill); } for (L2Skill sk : skills_to_buff) sk.getEffects(player, player); player.updateEffectIcons(); list = null; } skills_to_buff.clear(); showMainWindow(player); } }  
    • L2 OPIUM - AUTO FARM HTML    
    • json_extract does not exist. -> wrong mysql server version.
  • Topics

×
×
  • Create New...