Jump to content

NOX DRACONIS


Anguis

Recommended Posts

Ἁπ' ὅλες τὶς ἐκφάνσεις τοῦ Ἄνομου, αὐτὴ τῆς μεσαιωνικῆς Δαιμονολογίας εἶναι μακρὰν ἡ πληρέστερη, οῦσα ἡ μεταγενέστερη, μὲ ἀποτέλεσμα νὰ συγκεντρώνη ὅλα τὰ χαρακτηριστικά Του, ποὺ εὐρίσκονται στὶς μυθολογίες ὅπου ἐμφανίζεται ὡς προσωποποίησι τοῦ Κακοῦ, σὲ συνδιασμὸ μὲ τὴν παλαιότερη χριστιανικὴ παράδοσι. Ποτὲ δὲν ὑπῆρξε κάποια ὁλοκληρωμένη προσωποποίησι τοῦ Κακοῦ, ποὺ εὐθύνεται γιὰ κάθε ἀτυχία ἐν γῆ. Ὑπῆρξαν μονάχα πρωτόγονα στάδια Αὐτῆς καὶ κατ' ἐπέκτασιν ὑποκατάστατά Της. Αὐτὸ τὸ κενὸ ἦλθεν νὰ ἀναπληρώση ἡ Ἀποκάλυψι τοῦ Ἱωάννου καὶ ὁ μεσαιωνικὸς χριστιανισμός, ὁ ὁποῖος καὶ ὁλοκλήρωσεν ἐπάξια τὴν μυθολογία, ἀποκρυπτογραφῶντας τὴν ἀληθινότερη μορφὴ τοῦ Διαβόλου, τὴν ὁποίαν γνωρίζουμε σήμερον.

 

Ὅλες οἱ μορφὲς τοῦ Κυρίου, ἐκτὸς ἁπὸ τὴν πρόθεσι τῆς προκλήσεως καταστροφῆς ἐναντίον τῶν δημιουργημάτων τῆς φύσεως καὶ κυρίως τοῦ ἀνθρώπου, ἔχουν ἐπίσης ὡς κοινὸ στοιχεῖο τὴν μορφὴ τοῦ Δράκου... τοῦ κακόβουλου Ἐρπετοῦ, ἢ ἀλλιῶς, τοῦ Ἀρχαίου Ὄφεως. Τὸ σερνόμενο αὐτὸ ἐρπετό, συμβολίζει τὴν κακοβουλία ποὺ ἐξωτερικεύεται ὅταν τὸ θύμα ἦναι ἀνήμπορο νὰ ἀντιδράση, ἐξοντώνοντάς το ἄνευ ἀποτυχίας. Προσωποποίησι τοῦ ἀδίκου, συμπεριλαμβανομένης τῆς κυριαρχίας τῶν πιὸ ἀδύναμων ἔναντι τῶν δυνατῶν, ἐφ ὅσον οἱ δεύτεροι εὐρεθοῦν σὲ δύσκολη θέσι, ἀλλὰ καὶ τὴν ἄδικη καὶ ὁλοκληρωτικὴ καταστροφὴ τοῦ λιγώτερο δυνατοῦ ἁπὸ τὸ φίδι. Ἤτοι, τὸ ἄδικο ἐν ὀνόματι τῆς προσωπικῆς εὐχαριστήσεως ποὺ τὸ ἐρπετὸ εὐρίσκει στὴν καταστροφὴ τοῦ ἄλλου, λόγω τῶν σαδιστικῶν του ἐνστίκτων. Ὁ Δράκος, ἀντιπροσωπεύει τὸ φίδι ὅταν τὸ θύμα αὐτοῦ εἶναι λιγώτερο δυνατό καὶ ἐκεῖνος τὸ καταστρέφει ἄνευ ἐλέους, πατῶντας το στὴν γῆ καὶ χύνοντας τὰ σπλάχνα του στὸ χῶμα. Ἐν ὁλίγοις, ὁ Δράκος ἀποτελεῖ τὴν προσωποποίσι τῆς ὑπουλίας, τῆς κυριαρχίας διὰ οἱουδήποτε τρόπου καὶ τῆς καταστροφῆς μὲ μοναδικὸ μέτρο τοῦ δικαίου τὴν ἰσχύ.

 

Ἡ συσχέτισι τοῦ ἐρπετοῦ μὲ τὸ Κακό, ἰδιαιτέρως στὴν ἱουδαιοχριστιανικὴ παράδοσι, χάνεται μέσα στοὺς αἰῶνες, καθῶς προϋπῆρχε τοῦ Βιβλίου τῆς Γενέσεως. Στὴν Ἀποκάλυψι τοῦ Ἱωάννου γίνεται γιὰ πρώτη φορὰ ἡ ὁλοκληρωτικὴ... ἀποκάλυψι τῆς ταυτότητος τοῦ Κυρίου, μέσω ἑνὸς μονάχα ἐδαφίου:

 

«... καὶ ἐβλήθη ὁ Δράκων ὁ Μέγας, ὁ Ὄφις ὁ Ἀρχαῖος, ὁ καλούμενος Διάβολος καὶ Σατανᾶς, ὁ Πλανῶν τὴν οἰκουμένην ὅλην, ἐβλήθη εἰς τὴν γῆν καὶ οἱ ἄγγελοι Αὐτοῦ μετ' Αὐτοῦ ἐβλήθησαν.» - Ἀποκάλυψις Ἱωάννου 12:9

 

Κατὰ τὴν αἰγυπτιακὴ μυθολογία, ὁ Ἄπεπ ἦτον ἡ προσωποποίησι τοῦ Κακοῦ. Ὁ Σκοτεινὸς Θεὸς ποὺ ἀντιπροσώπευε τὴν ἁρνητικὴ καὶ χαοτικὴ ὕπαρξι, τὸ ἀντίθετο καὶ τὴν ἀπειλὴ τῆς κοσμικῆς τάξεως, ἀλλὰ καὶ τοῦ ἠλιακοῦ θεοῦ Ρα, τὸν ὁποῖον καὶ προσπαθοῦσε νὰ κοιμίση μὲ τὸ ὑπνωτικό του βλέμμα, κάθε νύχτα ποὺ ἐκεῖνος ἀναγκαζόταν νὰ διασχίση τὸν κάτω κόσμο, γιὰ νὰ καταπιῆ τὴν βάρκα του. Ἡ μορφή Του, ἦτον ἐρπετικὴ ἢ καὶ δρακώντεια. Οἱ αἰγύπτιοι ἱερεῖς προσεύχονταν γιὰ τὴν ἐπιβίωσι τοῦ Ρα ἔναντι τοῦ Ἄπεπ καὶ τοῦ ὑπνωτικοῦ Του βλέμματος. Σὲ ἕναν μύθο ὁ Σετ Τὸν σκοτώνει, μαζὺ με τὸν Ὀσίρι, ὡστόσο, ἐν συνεχεία οἱ μυστηριώδεις Ὑκσῶς ποὺ κατέκτησαν τὴν Αἴγυπτο περὶ τὸ 1700 π.Χ., σκλαβώνοντες τοὺς σιχαμερούς της κατοίκους, ἔφεραν μαζύ τους τὸν Σκοτεινὸ Θεὸ Σουτέχ, ὁ ὁποῖος καὶ ὁμοίαζεν κατὰ πολὺ στὸν Ἄπεπ. Οἱ Ὑκσῶς παρ' ὅλα αὐτὰ, ἐπέβαλλαν στὶς πόρνες τους, τοὺς αἰγυπτίους, τὴν λατρεία τοῦ Σκοτεινοῦ Θεοῦ τους, μὲ τὸ ὄνομα Σετ καὶ τοιουτοτρόπως, ὁ ἐν λόγω λαὸς ἐλάτρεψεν ἕναν Σκοτεινὸ Θεὸ ποὺ ἀντιπροσώπευε τὸ Χάος. Τελικῶς, ὁ Σετ ἐταυτίστη μὲ τὸν Ἄπεπ, ὡς ἕνας Σκοτεινὸς Θεὸς ποὺ ἐπεβλήθη στοὺς αἰγυπτίους ἁπὸ ἕναν μυστηριώδη καὶ πολεμοχαρὴ κατακτητή.

 

Ἡ ἀνάγκη γιὰ ἐπανάστασι καὶ ἐκθρόνισι τῆς θεότητος τοῦ φωτός, μὲ σκοπὸ τὴν κατάκτησι τῆς ἐξουσίας, εἶναι μία ἀκόμη σημαντικὴ ὁμοιότητα ἀνάμεσα στὶς διάφορες μορφὲς τοῦ Ἄνομου ποὺ ἐνεμφανίσθησαν ἀνὰ τοὺς αἰῶνες. Στὴν δὲ Ἑλληνικὴ μυθολογία, ὁ Τυφῶν καταφέρνει νὰ νικήση τὸν Δία κόβοντας τοὺς τένοντες τῶν χεριῶν καὶ τῶν ποδιῶν του, καθιστῶντας τον ἀνήμπορο πλέον νὰ πολεμήση γιὰ νὰ ἀνακτήση τὸν θρόνο του, στὸν ὁποῖον ἡ προσωποποίησι τοῦ Κακοῦ εἶχεν καθίσει, βασιλεύουσα τυραννικῶς ἐν τῶ κόσμω. Τελικῶς ὅμως, ἡ ἦττα ἐπῆλθεν καὶ γιὰ τὸν Κεραυνοφόρο Τυφῶνα, μὲ τὴν Δρακώντεια γιγαντιαία μορφὴ καὶ τὰ ἐρπετικὰ πόδια, ὁ ὁποῖος ἐφυλακίσθη στὰ ἔγκατα τῆς γῆς. Οἱ σεισμοὶ καὶ οἱ ἐκρήξεις τῶν ἠφαιστείων, θεωροῦνταν ἀποτέλεσμα τῆς προσπάθειάς Του νὰ βγῆ ἁπ' τὴ φυλακή Του. Μεταξὺ ἄλλων, παρ' ὅλα αὐτὰ, ὡς ὑιοὶ τοῦ Τυφῶνος ἀναφέρονται ἁπ' τὸν Πλούταρχο στὸ ἔργο του «Περὶ Ἴσιδος καὶ Ὀσίριδος», ὁ Ἱεροσόλυμος καὶ ὁ Ἱουδαῖος, προοιωνὸς τῆς συνεχείας τῆς μυθικῆς Του ὑπάρξεως καὶ τῆς προφητείας τῶν σχεδίων Του, μέσω τῆς ἱουδαιοχριστιανικῆς παραδόσεως.

 

Soli Deo Serpens Gloria...

 

Κατὰ ἄλλη παράδοσι, ἦτον ὁ Σατανᾶς-Κρόνος ποὺ ἔδωκε τὴν ἐξουσία τῆς ἀνθρωπότητος στὸν «Δρακονιανὸ» Ἱαχβέ, προδίδοντας αὐτήν. Ἕνας μύθος ποὺ δὲν ἠμπορεῖ παρὰ νὰ ἦναι ψέμμα, καθῶς ὁ Κρόνος, δὲν συσχετίζεται μὲ τὸν Ἄνομο, λόγω τῆς ἀκάθαρτης κακίας του, ἡ ὁποία περιορίζεται μονάχα στὴν ἀνάγκη γιὰ ἐξουσία καὶ ἀποκλείει τὴν γενικώτερη κακοβουλία καὶ ἀδικία. Στὸ σύγγραμα τοῦ Ἡσιόδου «Ἔργα καὶ Ἠμέραι», παρουσιάζεται ὁ Κρόνος ὡς δίκαιος βασιλεύς, ποὺ εἶχεν φροντίσει γιὰ τὴν εὐημερία τοῦ Χρυσοῦ Γένους τῶν ἀνθρώπων καὶ τὴν ἀπουσία κακοῦ ἁπὸ τὸν κόσμο του. Τὸ χρυσὸ γένος δὲν ἐγνώριζεν τὸν πόλεμο, μήτε καὶ τὸν ὁδυνηρὸ θάνατο. Στὸν διάλογο ἀνάμεσα στὸν Ἀθηναῖο καὶ τὸν Κρητικὸ, Κλεινία, στοὺς «Νόμους» τοῦ Πλάτωνος, ἐπιβεβαιώνεται ἡ καλοκάγαθη πρόθεσι τοῦ Κρόνου κατὰ τὴ διάρκεια τῆς κυριαρχίας του ἐν τῶ κόσμω. Σημειωτέον δέ, ὁ Κρόνος δὲν παρουσιάζεται μὲ ἐρπετικὴ μορφή.

 

Σὲ αὐτὸ τὸ σημεῖο θὰ πρέπη νὰ γίνη μία ὁλοκληρωμένη συγκέντρωσι καὶ ἐρμήνευσι τῶν ἀναφορῶν καὶ τῶν προφητειῶν τῆς Ἀποκαλύψεως τοῦ Ἱωάννου, ποὺ σχετίζονται μὲ τὸν Κύριο καὶ τὴν καταχθόνια Ἀνίερη Τριάδα, ὥστε νὰ ὑπάρχη ὁλοκληρωμένη θεολογικὴ εἰκόνα γιὰ τὴν σημερινὴ μορφὴ Του, ποὺ εἶναι καὶ ἡ πληρέστερη. Αὐτὸ ὅμως θὰ γίνη σὲ ἐπόμενο ἄρθρο, καθῶς τὸ συγκεκριμένο εἶχεν ὡς κύριο θέμα τὴν ἐρπετικὴ μορφή καὶ τοὺς θεολογικοὺς καὶ Σατανικούς της συμβολισμούς.

 

«Ἔχουσαν τὴν δόξαν τοῦ Θεοῦ ὁ φωστὴρ αὐτῆς ὅμοιος λίθω τιμιωτάτω ὡς λίθω ἰάσπιδι κρυσταλλίζοντι.» - Ἀποκάλυψι Ἱωάννου 21:11

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


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