Jump to content

Fanky

Legendary Member
  • Posts

    7,281
  • Credits

  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Everything posted by Fanky

  1. δώσε μου το ID του item και θα στο κάνω.
  2. τότε μάλλον δεν παρακολουθείς αργεντινή,λολ.
  3. because by making increaselevel you duplicate the one which already exist. I told you that this method already exist. ctrl + f and insert this into the search 'public void increaseLevel()' after that you 'll see this public void increaseLevel() { // Set the current HP and MP of the L2Character, Launch/Stop a HP/MP/CP Regeneration Task and send StatusUpdate packet to all other L2PcInstance to inform (exclusive broadcast) setCurrentHpMp(getMaxHp(), getMaxMp()); setCurrentCp(getMaxCp()); } then do it, public void increaseLevel() { // Set the current HP and MP of the L2Character, Launch/Stop a HP/MP/CP Regeneration Task and send StatusUpdate packet to all other L2PcInstance to inform (exclusive broadcast) setCurrentHpMp(getMaxHp(), getMaxMp()); setCurrentCp(getMaxCp()); if (getLevel() == 20) teleToLocation(-84318,244579,-3730); }
  4. yep but,be aware. this method already exist in l2pcinstance and contains few more methods. don't mess them up
  5. well,you'll need to find the method in l2pcinstance which is responsible for lvl increase. I'll help you. public void increaseLevel() { // } now put inside,this. if (getLevel() == 20) { teleToLocation(-84318,244579,-3730); }
  6. feedback me if you don't mind when you'll test it.
  7. solved. http://maxcheaters.com/forum/index.php?topic=249457.msg2302035#new
  8. So,crystalia pm'ed me today and asked me if I could do that,and i did it. so,here you're ### Eclipse Workspace Patch 1.0 #P L2_GameServer_It Index: java/net/sf/l2j/gameserver/PlayersOnlineAnnouncement.java =================================================================== --- java/net/sf/l2j/gameserver/PlayersOnlineAnnouncement.java (revision 0) +++ java/net/sf/l2j/gameserver/PlayersOnlineAnnouncement.java (revision 0) @@ -0,0 +1,44 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +package net.sf.l2j.gameserver; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.model.L2World; + +/** + * @author fanky + * + */ +public class PlayersOnlineAnnouncement implements Runnable +{ + + @Override + public void run() + { + Announcements.getInstance().announceToAll("There are "+L2World.getInstance().getAllPlayersCount()+" players online"); + ThreadPoolManager.getInstance().scheduleGeneral(new PlayersOnlineAnnouncement(), Config.ANNOUNCE_ONLINE_PLAYER_EVERY * 1000); + + } + public static PlayersOnlineAnnouncement getInstance() + { + return SingletonHolder._instance; + } + + @SuppressWarnings("synthetic-access") + private static class SingletonHolder + { + protected static final PlayersOnlineAnnouncement _instance = new PlayersOnlineAnnouncement(); + } +} Index: java/net/sf/l2j/gameserver/GameServer.java =================================================================== --- java/net/sf/l2j/gameserver/GameServer.java (revision 5585) +++ java/net/sf/l2j/gameserver/GameServer.java (working copy) @@ -350,6 +350,9 @@ CharTemplateTable.getInstance(); NobleSkillTable.getInstance(); HeroSkillTable.getInstance(); + + if (Config.ALLOW_ANNOUNCE_ONLINE_PLAYERS) + PlayersOnlineAnnouncement.getInstance(); //Call to load caches HtmCache.getInstance(); Index: java/net/sf/l2j/Config.java =================================================================== --- java/net/sf/l2j/Config.java (revision 5585) +++ java/net/sf/l2j/Config.java (working copy) @@ -882,6 +882,10 @@ public static boolean L2JMOD_WEDDING_SAMESEX; public static boolean L2JMOD_WEDDING_FORMALWEAR; public static int L2JMOD_WEDDING_DIVORCE_COSTS; + + // auto announcement online players + public static int ANNOUNCE_ONLINE_PLAYER_EVERY; + public static boolean ALLOW_ANNOUNCE_ONLINE_PLAYERS; // Packet information /** Count the a-beep-t of packets per minute ? */ @@ -1859,7 +1863,8 @@ L2JMOD_WEDDING_SAMESEX = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingAllowSameSex", "False")); L2JMOD_WEDDING_FORMALWEAR = Boolean.parseBoolean(L2JModSettings.getProperty("WeddingFormalWear", "True")); L2JMOD_WEDDING_DIVORCE_COSTS = Integer.parseInt(L2JModSettings.getProperty("WeddingDivorceCosts", "20")); - + ANNOUNCE_ONLINE_PLAYER_EVERY = Integer.parseInt(L2JModSettings.getProperty("AnnounceOnlinePlayerEvery","60")); + ALLOW_ANNOUNCE_ONLINE_PLAYERS = Boolean.parseBoolean(L2JModSettings.getProperty("AllowAnnounceOnlinePlayers","True")); if (TVT_EVENT_PARTICIPATION_NPC_ID == 0) { TVT_EVENT_ENABLED = false; Index: java/config/l2jmods.properties =================================================================== --- java/config/l2jmods.properties (revision 5585) +++ java/config/l2jmods.properties (working copy) @@ -132,3 +132,12 @@ # ex.: 1;2;3;4;5;6 # no ";" at the start or end TvTEventDoorsCloseOpenOnStartEnd = + +#--------------------------------------------------------------- +# Auto Announcement Engine by fanky - +#--------------------------------------------------------------- +# It 'll announce every x(seconds) online players +# Enable this engine? +AllowAnnounceOnlinePlayers = True +# Announcement every ?(Seconds) +AnnounceOnlinePlayerEvery = 60 I didn't actually test it,but it normally it should work. if someone could test it and feedback me I would be pleased.
  9. solved http://maxcheaters.com/forum/index.php?topic=249232.0
  10. seems you didnt pay attention to 'j' in the tittle.
  11. my point was that this share isn't working,and I just pointed out his mistakes I didnt fix nor shared a new code. how this comes?
  12. just spamming around without even reading the comments,nice bussiness. x.x
  13. Χθες,σας είχα πει οτι θα σας κάνω έναν οδηγό για πίνακες,απλούς και πολυδιάστατους([],[][]) αλλά μετά σκέφτηκα ότι πολλοί απο εσάς δεν ξέρετε να χρησιμοποιείτε την switch,και σε πολλούς κώδικες βλέπω πάρα πολλά ||. Αφήνω το μπλά μπλά,ας αρχίσουμε με τα γενικά σχετικά με την switch. Τι δεν πρέπει να κάνετε,πάρτε για παράδειγμα τον παρακάτω κώδικα: if (activeChar.getPvPKills() == 100) activeChar.setTittle("Newbie"); else if (activeChar.getPvPKills() == 150) activeChar.setTittle("Newbie1"); else if (activeChar.getPvPKills() == 200) activeChar.setTittle("Newbie2"); else if (activeChar.getPvPKills() == 250) activeChar.setTittle("Newbie3"); και πάει λέγοντας.Προσοχή,ο παραπάνω κώδικας δεν είναι λάθος(ούτε και κανένας του ίδιου style),το θέμα είναι όμως ότι πρέπει να αρχίζετε σιγά σιγά να φτιάχνετε κώδικες όχι μόνο 'συντακτικά' σωστούς(δηλαδή να μην σας βγάζει κάποιο λάθος το eclipse) αλλά και να χρησιμοποιήτε την java για να codarete όσο πιο advanced μπορείτε.Το έχω ξαναπεί,και θα το λέω συνέχεια,η java είναι απο τις πιο εύκολες(αν όχι η ΠΙΟ ΕΥΚΟΛΗ) γλώσσα προγραμματισμού,πρέπει να το εκμεταλευτείτε αυτό,μέσω της javas μπορείς να κάνεις πάρα πολλά πράγματα,και στο κάτω κάτω βγάζεις και αρκετά λευτά μέσω της java πουλώντας διάφορους κώδικες(και φυσικά όχι μόνο για l2j) κλπ. Τέρμα το μπλά μπλά,ας συνεχίσουμε. Τώρα θα σας κάνω ένα παράδειγμα με το switch(θυμάμαι το συγκεκριμένο ήτανε το πρώτο που είχα κάνει όταν μάθαινα και εγώ switch :P)(δεν έχει σχέση με l2j,αλλά είναι το ίδιο πράγμα,μην σκαλώσετε) switch (grade){ case 'A': System.out.println("Great"); break; case 'B': System.out.println("Good"); break; case 'C': System.out.println("you can do better"); break; default: System.out.println("You cheated,moron!"); } Εγώ είμαι στην πρώτη περίπτωση 8) Τώρα θα σας εξηγήσω την κάθε γραμμή του παραπάνω κώδικα: Όπως βλέπετε,η switch δημιουργείται με βάση έναν έλεγχο(ΠΑΝΤΑ).Η μεταβλητή αυτή(του ελέγχου), μπορεί να είναι οτιδήποτε απο τα παρακάτω(byte,short,int,char), συγκίνεται με την σειρά με κάθεμια απο τις περιπτώσεις(δηλαδή με τις τιμές 'case').Προφανώς,εαν βρεθεί κάποιο ταίριασμα εκτελείται η πρόταση ή οι προτάσεις που είναι μετά τον έλεγχο. Στο παράδειγμα μας δηλαδή,εαν το ταίριασμα ήτανε η περίπτωση B τότε θα εκτελούνταν και η A,εάν ήτανε η Γ τότε θα εκτελούνταν και η Α και η Β και πάει λέγοντας,πιστεύω να το καταλάβατε αυτό :P. Στην περίπτωση που δεν βρεθεί κάποιο ταίριασμα εκτελείται η πρόταση ή οι προτάσεις 'default'.Η default δεν είναι απαραίτητη,είναι προαιρετική,σε περίπτωση που δεν υπάρχει ταίριασμα για καμία απο τις περιπώσεις και δεν υπάρχει και default πρόταση τότε η πρόταση 'switch' ολοκληρώνεται χωρίς να εκτελέσει τίποτε(που είναι τελείως άχρηστο,για αυτό να κοιτάτε να το αποφεύγετε στους κώδικες σας). Δεν μπορείται να χρησιμοποιήσετε long,float,string ή άλλα αντικείμενα μέσα σε μια μέθοδο switch,ούτε μπορείτε να ελεγξετε για άλλη σχέση εκτός τις ισότητας(μαλακία,ε?!)*.Για αυτό το λόγο η switch,με τόσους περιορισμούς περιορίζετε για πιο απλούς κώδικες(παραμένει όμως μια όχι και τόσο εύκολη μέθοδος). *Δηλαδή,αυτό εδώ δεν μπορούμε να το κάνουμε με switch μέθοδο: if (activeChar.getPvPKills() > 100) activeChar.setTittle("Newbie"); else if (activeChar.getPvPKills() > 150) activeChar.setTittle("Newbie1"); else if (activeChar.getPvPKills() > 200) activeChar.setTittle("Newbie2"); else if (activeChar.getPvPKills() > 250) activeChar.setTittle("Newbie3"); Τώρα όσο για το break,χωρίς μια πρόταση break σε μια 'ενότητα' case,όταν βρεθεί ενα ταίριασμα,τότε οι προτάσεις για αυτό το ταίριασμα και όλες οι προτάσεις μέσα στη switch εκτελούνται,μέχρι να βρεθεί μια break ή να τελειώσει η switch. Και τώρα κάτι τελευταίο,αλλά αρκετά σημαντικό Μια περίπτωση που είναι χρήσιμο να ΜΗΝ περιλάβετε μια break είναι όταν πολλαπλές τιμες πρέπει να εκτελέσουν τις ίδιες προτάσεις(δεν καταλάβατε; κοιτάξτε παρακάτω). switch(x){ case 2: case 4: case 6: case 8: System.out.println("Ο χ είναι ακαίρεος αριθμός."); break; default: System.out.println("Ο χ είναι μονος αριθμός."); } Η switch θα εκτελέσει τις πρώτες προτάσεις που θα βρει,δηλαδή στο παραπάνω κώδικα το 'ο χ ειναι ακαίρεος αριθμός' θα εκτυπωθεί(system.out.println) μόνο εάν έχει τιμές 2,4,6 ή 8.Για κάθε άλλη τιμή του x αυτό που θα εκτυπωθεί θα είναι το 'O x είναι μονός αριθμός.'. Αυτά ήτανε πάνω κάτω,ειδικά το τελευταίο κομμάτι να το προσέξετε,ίσως μπερδευτείτε κάπως.
  14. or just put whatever tittle & name color he wants when they are teleportin' back. protected void portPlayersBack() { // } ofc if he wanna have the previous status,that's not the way :P
  15. it's shared in this forum(I think),you have to search :P
  16. somethin' like that. ### Eclipse Workspace Patch 1.0 #P L2_GameServer_It Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 5585) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -36,6 +36,7 @@ import net.sf.l2j.Config; import net.sf.l2j.L2DatabaseFactory; +import net.sf.l2j.gameserver.Announcements; import net.sf.l2j.gameserver.GameTimeController; import net.sf.l2j.gameserver.GeoData; import net.sf.l2j.gameserver.GmListTable; @@ -9985,6 +9986,35 @@ return _duelState; } + + public void charAnnouncements() + { + + if (isHero()) + { + Announcements.getInstance().announceToAll("Server's Hero "+getName()+"is currently online"); + sendMessage("Welcome : "+getName()+ "Hero of our Server"); + sendMessage("There are: "+L2World.getInstance().getAllPlayers().size()+" players online"); + } + if (getPvpKills() > 150 & getPkKills() > 150 & isNoble()) + { + Announcements.getInstance().announceToAll("Server's GODLIKE "+getName()+" with 150 pvp & 150pk & noble is currently online"); + sendMessage("Welcome : "+getName()+ "GODLIKE of our Server"); + sendMessage("There are: "+L2World.getInstance().getAllPlayers().size()+" players online"); + } + if (getPvpKills() > 100 & getPkKills() > 100 & isNoble()) + { + Announcements.getInstance().announceToAll("Server's legendary "+getName()+" with 100 pvp & 100pk & noble is currently online"); + sendMessage("Welcome : "+getName()+ "Legendary of our Server"); + sendMessage("There are: "+L2World.getInstance().getAllPlayers().size()+" players online"); + } + if (getPvpKills() > 50 & getPkKills() > 50 & isNoble()) + { + Announcements.getInstance().announceToAll("Server's Incredible "+getName()+" with 50 pvp & 50pk & noble is currently online"); + sendMessage("Welcome : "+getName()+ "Incredible of our Server"); + sendMessage("There are: "+L2World.getInstance().getAllPlayers().size()+" players online"); + } + } /** * Sets up the duel state using a non 0 duelId. * @param duelId 0=not in a duel Index: java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java =================================================================== --- java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (revision 5585) +++ java/net/sf/l2j/gameserver/clientpackets/EnterWorld.java (working copy) @@ -251,6 +251,7 @@ SevenSigns.getInstance().sendCurrentPeriodMsg(activeChar); Announcements.getInstance().showAnnouncements(activeChar); + Quest.playerEnter(activeChar); activeChar.sendPacket(new QuestList()); @@ -286,6 +287,7 @@ Hero.getInstance().getHeroes().containsKey(activeChar.getObjectId())) activeChar.setHero(true); + activeChar.charAnnouncements(); setPledgeClass(activeChar); //add char to online characters for the record,because I'm kinda sure that you've no idea why we didnt used activeChar in l2pcinstance the reason is simple,activeChar is l2pcinstance's object,that's why.
  17. someone read my guide in gr section,I guess. gud job. but still way too simple,you could done it through pcinstance and then load the method in enterworld,in this way it's too crappy :P but since it is your first code..
  18. jealous of what; bitch,please.
  19. you even made in eng section? you're so pathetic.
  20. i'm 'jelus' with your skills.
  21. did you pm'ed ed and ask him if he could upload the images? did you even thought that by sticking your guide your pennis won't be increased? did you even thought to show some respect to this guy,who was for 2 years staffer and member here since 2008? back to your cave now.
  22. your ego is so big? lulz.
  23. the green hornet.
  24. post here the error so we 'll able to help you instead of spaming >.>
×
×
  • Create New...