- 0
[Help] pvppoints system
-
Posts
-
Μάγκες καλησπέρα, Παίζω Lineage 2 εδώ και χρόνια και πήρα απόφαση ότι θέλω επιτέλους να μάθω πώς δουλεύουν τα πράγματα πίσω από τις κάμερες. Δεν ψάχνομαι ούτε να ανοίξω τον επόμενο μεγάλο x5000 server ούτε να βγάλω λεφτά. Καθαρά από περιέργεια και για μένα θέλω να μάθω πώς στήνεται ένας server από το απόλυτο μηδέν. Το θέμα είναι ότι από development πλευρά είμαι τελείως άσχετος. Ξέρω τη βασική ιδέα, αλλά όταν βλέπω όλα αυτά που πρέπει να μάθω, ψιλοπελαγώνω. Από αυτά που έχω καταλάβει μέχρι στιγμής, πρέπει να μάθω πώς να στήνω το local περιβάλλον στο PC μου με Java, MySQL και κάποιο πρόγραμμα τύπου Navicat για να κουμαντάρω τη βάση δεδομένων. Μετά είναι το κομμάτι του compilation (με IntelliJ ή Eclipse), ή έστω το πώς να δουλεύω με έτοιμα datapacks και gameservers χωρίς να τα διαλύω όλα. Εκτός από το server-side κομμάτι δηλαδή να αλλάζω stats σε items, να πειράζω spawns από NPCs, formulas για skills και custom μαγαζιά, πρέπει να μάθω και το client-side. Πράγματα όπως το να πειράζω τα .dat αρχεία με το L2FileEdit για να επικοινωνεί σωστά ο server με το παιχνίδι. Και για να είμαι ειλικρινής, το πιο ζόρικο κομμάτι θα είναι να μάθω να διαβάζω εκείνα τα τεράστια error logs όταν κρασάρει ο server, αντί να τα κοιτάω σαν χαζός. Ψάχνω λοιπόν κάποιον που να έχει μια εμπειρία και να γουστάρει να με καθοδηγήσει λίγο σαν μέντορας, ή ακόμα και κάποιον άλλον αρχάριο που θέλει να φάμε τα μούτρα μας παρέα μέχρι να το βρούμε. Φράγκα δεν παίζουν μιας και το βλέπω καθαρά σαν χόμπι, αλλά έχω άπειρη υπομονή, δεν περιμένω από τον άλλον να κάνει τη δουλειά για μένα και είμαι διατεθειμένος να φάω ώρες για να μάθω. Απλά χρειάζομαι έναν άνθρωπο να ρωτάω μια γνώμη όταν αναπόφευκτα σκαλώνω σε κάποιο config αρχείο. Αν βαριέστε και θέλετε να βοηθήσετε έναν παλιό παίκτη να μάθει τα βασικά, αφήστε ένα reply ή στείλτε μου PM με το Discord σας. Να 'στε καλά προκαταβολικά για οποιαδήποτε βοήθεια!
-
Hey guys 😃 I’ve been playing Lineage 2 for years, and I’ve finally decided I want to learn how the magic actually happens behind the scenes. I’m not trying to launch the next big x5000 server or make money. I literally just want to learn how to build one from absolute scratch for my own fun and curiosity. The issue is, I’m a total newbie when it comes to the dev side of things. I know the basic idea, but looking at everything I need to learn is getting pretty overwhelming. From what I've gathered so far, I need to figure out how to set up a local environment on my PC using Java, MySQL, and a tool like Navicat just to get the database running. Then there's compiling source code with IntelliJ or Eclipse, or at least figuring out how to work with a pre-compiled data pack and game server without breaking everything. On top of the server side ike modifying item stats, editing NPC spawns, tweaking skill formulas, and setting up custom shops—I also need to learn the client-side stuff. Things like editing .dat files with L2FileEdit to make sure the server and client actually talk to each other correctly. And honestly, the scariest part is just learning how to read those massive error logs when the server crashes instead of just staring at them blankly. I'm looking for someone who has some experience and wouldn't mind mentoring me a bit, or even another beginner who wants to team up so we can figure it out together. I can't pay anything since this is just a hobby project, but I’m super patient, I don't expect you to do the work for me, and I’m down to put in the hours to learn. I just need someone I can bounce questions off of when I inevitably mess up a config file. If you’re bored and want to help a passionate player learn the ropes, drop a reply or shoot me a PM with your Discord. Appreciate any help I can get! ❤️
-
By sellerking · Posted
TG Support: https://t.me/buyingproxysup | Channel: https://t.me/buyingproxycom Discord support: #buyingproxy | Server: Join the BuyingProxy Discord Server! Create your free account here
-
-
Topics

Question
dymek1984
Hello i make pvp points system but some is wrong with the code can some one check it and tell me where im fail ^^
This works so that if he kills a player to give me 5% of its fame, and add as many sp and pvppoints.
Everything works fine except the pvppoints. does not add points in the DB shows such as 23 pvppoints and How do I get 40 should be 63 and is 40 ;/
Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5547) +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -286,9 +286,9 @@ private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE charId=? AND class_index=?"; // Character Character SQL String Definitions: - private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createTime) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; - private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=? WHERE charId=?"; - private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createTime,language FROM characters WHERE charId=?"; + private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createTime,pvpPoints) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=?,pvpPoints=?,rank=? WHERE charId=?"; + private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createTime,language,pvpPoints,rank FROM characters WHERE charId=?"; // Character Teleport Bookmark: private static final String INSERT_TP_BOOKMARK = "INSERT INTO character_tpbookmark (charId,Id,x,y,z,icon,tag,name) values (?,?,?,?,?,?,?,?)"; @@ -413,6 +413,10 @@ /** The PK counter of the L2PcInstance (= Number of non PvP Flagged player killed) */ private int _pkKills; + private int _pvpPoints; + + private int _rank; + /** The PvP Flag state of the L2PcInstance (0=White, 1=Purple) */ private byte _pvpFlag; @@ -4343,7 +4347,67 @@ DuelManager.getInstance().broadcastToOppositTeam(this, update); } } - + public void updateRank(int pvpPoints) + { + if (Config.PVP_RANK_SYSTEM_ENABLED) + { + //Check if the character has GM access + if (isGM()) + return; + { + if ((pvpPoints >= (Config.PVP_LVL1)) && (pvpPoints <= (Config.PVP_LVL1))) + { + getActingPlayer().setRank(1); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK1); + } + else if ((pvpPoints >= (Config.PVP_LVL2)) && (pvpPoints <= (Config.PVP_LVL2))) + { + getActingPlayer().setRank(2); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK2); + } + else if ((pvpPoints >= (Config.PVP_LVL3)) && (pvpPoints <= (Config.PVP_LVL3))) + { + getActingPlayer().setRank(3); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK3); + } + else if ((pvpPoints >= (Config.PVP_LVL4)) && (pvpPoints <= (Config.PVP_LVL4))) + { + getActingPlayer().setRank(4); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK4); + } + else if ((pvpPoints >= (Config.PVP_LVL5)) && (pvpPoints <= (Config.PVP_LVL5))) + { + getActingPlayer().setRank(5); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK5); + } + else if ((pvpPoints >= (Config.PVP_LVL6)) && (pvpPoints <= (Config.PVP_LVL6))) + { + getActingPlayer().setRank(6); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK6); + } + else if ((pvpPoints >= (Config.PVP_LVL7)) && (pvpPoints <= (Config.PVP_LVL7))) + { + getActingPlayer().setRank(7); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK7); + } + else if ((pvpPoints >= (Config.PVP_LVL8)) && (pvpPoints <= (Config.PVP_LVL8))) + { + getActingPlayer().setRank(8); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK8); + } + else if ((pvpPoints >= (Config.PVP_LVL9)) && (pvpPoints <= (Config.PVP_LVL9))) + { + getActingPlayer().setRank(9); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK9); + } + else if (pvpPoints >= (Config.PVP_LVL10)) + { + getActingPlayer().setRank(10); + getAppearance().setNameColor(Config.NAME_COLOR_FOR_RANK10); + } + } + } + } /** * Send a Server->Client packet UserInfo to this L2PcInstance and CharInfo to all L2PcInstance in its _KnownPlayers.<BR><BR> * @@ -5337,6 +5401,50 @@ if (killer != null) { + if (killer instanceof L2PcInstance && getPvpFlag() > 0) + { + L2Party party = killer.getParty(); + L2PcInstance kill = (L2PcInstance) killer; + int pointsToAdd; + if (party == null) + { + pointsToAdd = (int) (_fame*0.05); + } + else + { + pointsToAdd = (int) (_fame*0.05/party.getMemberCount()); + } + int pointsToRemove = _fame - pointsToAdd < 0 ? 0 : _fame - pointsToAdd; + kill.setFame(kill.getFame() + pointsToAdd); + kill.setSp(kill.getSp() + pointsToAdd); + kill.setPvpPoints(kill.getPvpPoints() + pointsToAdd); + setFame(pointsToRemove); + killer.sendMessage("You have earned " + pointsToAdd + " Fame Points from " + getName() + ""); + killer.broadcastPacket(new MagicSkillUse(killer, 23021, 1, 0, 0)); + { + if(killer instanceof L2PcInstance && getPvpFlag() > 0) + { + if (party != null) + { + for(L2PcInstance PartyMember : party.getPartyMembers()) + { + if(PartyMember.isInsideRadius(this, 1600, true, false) && PartyMember != killer) + { + int numberToAdd = (int) (_fame*0.05/party.getMemberCount()); + PartyMember.setFame(PartyMember.getFame() + numberToAdd); + PartyMember.setSp(PartyMember.getSp() + numberToAdd); + PartyMember.setPvpPoints(kill.getPvpPoints() + numberToAdd); + int pointsToRemove1 = _fame - numberToAdd < 0 ? 0 : _fame - numberToAdd; + setFame(pointsToRemove1); + PartyMember.setPvpKills(PartyMember.getPvpKills() + 1); + PartyMember.sendMessage("You have earned " + numberToAdd + " Fame Points from " + getName() + ""); + PartyMember.broadcastPacket(new MagicSkillUse(PartyMember, 23021, 1, 0, 0)); + } + } + } + } + } + } L2PcInstance pk = killer.getActingPlayer(); TvTEvent.onKill(killer, this); @@ -5683,7 +5791,8 @@ { // Add karma to attacker and increase its PK counter setPvpKills(getPvpKills() + 1); - + updateRank(getPvpPoints()); + broadcastUserInfo(); // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); sendPacket(new ExBrExtraUserInfo(this)); @@ -7026,7 +7135,11 @@ statement.setInt(35, isNoble() ? 1 :0); statement.setLong(36, 0); statement.setLong(37,getCreateTime()); + statement.setLong(38, 0); + + + statement.executeUpdate(); statement.close(); } @@ -7098,6 +7211,8 @@ player.setFame(rset.getInt("fame")); player.setPvpKills(rset.getInt("pvpkills")); player.setPkKills(rset.getInt("pkkills")); + player.setPvpPoints(rset.getInt("pvpPoints")); + player.setPvpPoints(rset.getInt("rank")); player.setOnlineTime(rset.getLong("onlinetime")); player.setNewbie(rset.getInt("newbie")); player.setNoble(rset.getInt("nobless")==1); @@ -7224,6 +7339,8 @@ // Language player.setLang(rset.getString("language")); + + // Retrieve the name and ID of the other characters assigned to this account. PreparedStatement stmt = con.prepareStatement("SELECT charId, char_name FROM characters WHERE account_name=? AND charId<>?"); stmt.setString(1, player._accountName); @@ -7665,7 +7782,9 @@ statement.setInt(50, getBookMarkSlot()); statement.setInt(51, getVitalityPoints()); statement.setString(52, getLang()); - statement.setInt(53, getObjectId()); + statement.setLong(53, getPvpPoints()); + statement.setLong(54, getRank()); + statement.setInt(55, getObjectId()); statement.execute(); statement.close(); @@ -14475,7 +14594,25 @@ L2DatabaseFactory.close(con); } } + public void setPvpPoints(int points) + { + _pvpPoints = points; + } + public int getPvpPoints() + { + return _pvpPoints; + } + public void setRank(int points1) + { + _rank = points1; + } + + public int getRank() + { + return _rank; + } + public double getCollisionRadius() { if (getAppearance().getSex()) Index: java/com/l2jserver/Config.java =================================================================== --- java/com/l2jserver/Config.java (revision 5547) +++ java/com/l2jserver/Config.java (working copy) @@ -725,7 +725,27 @@ public static int L2JMOD_DUALBOX_CHECK_MAX_PLAYERS_PER_IP; public static int L2JMOD_DUALBOX_CHECK_MAX_OLYMPIAD_PARTICIPANTS_PER_IP; public static TIntIntHashMap L2JMOD_DUALBOX_CHECK_WHITELIST; - + public static boolean PVP_RANK_SYSTEM_ENABLED; + public static int PVP_LVL1; + public static int PVP_LVL2; + public static int PVP_LVL3; + public static int PVP_LVL4; + public static int PVP_LVL5; + public static int PVP_LVL6; + public static int PVP_LVL7; + public static int PVP_LVL8; + public static int PVP_LVL9; + public static int PVP_LVL10; + public static int NAME_COLOR_FOR_RANK1; + public static int NAME_COLOR_FOR_RANK2; + public static int NAME_COLOR_FOR_RANK3; + public static int NAME_COLOR_FOR_RANK4; + public static int NAME_COLOR_FOR_RANK5; + public static int NAME_COLOR_FOR_RANK6; + public static int NAME_COLOR_FOR_RANK7; + public static int NAME_COLOR_FOR_RANK8; + public static int NAME_COLOR_FOR_RANK9; + public static int NAME_COLOR_FOR_RANK10; //-------------------------------------------------- // NPC Settings //-------------------------------------------------- @@ -2421,7 +2441,27 @@ } } } - + PVP_RANK_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("EnableRankSystem", "false")); + PVP_LVL1 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl1", "25000")); + PVP_LVL2 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl2", "50000")); + PVP_LVL3 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl3", "75000")); + PVP_LVL4 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl4", "100000")); + PVP_LVL5 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl5", "150000")); + PVP_LVL6 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl6", "200000")); + PVP_LVL7 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl7", "300000")); + PVP_LVL8 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl8", "400000")); + PVP_LVL9 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl9", "500000")); + PVP_LVL10 = Integer.parseInt(L2JModSettings.getProperty("PvpLvl10", "700000")); + NAME_COLOR_FOR_RANK1 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank1", "00FF00")); + NAME_COLOR_FOR_RANK2 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank2", "00FF00")); + NAME_COLOR_FOR_RANK3 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank3", "00FF00")); + NAME_COLOR_FOR_RANK4 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank4", "00FF00")); + NAME_COLOR_FOR_RANK5 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank5", "00FF00")); + NAME_COLOR_FOR_RANK6 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank6", "00FF00")); + NAME_COLOR_FOR_RANK7 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank7", "00FF00")); + NAME_COLOR_FOR_RANK8 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank8", "00FF00")); + NAME_COLOR_FOR_RANK9 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank9", "00FF00")); + NAME_COLOR_FOR_RANK10 = Integer.decode("0x" + L2JModSettings.getProperty("ColorForRank10", "00FF00")); BANKING_SYSTEM_ENABLED = Boolean.parseBoolean(L2JModSettings.getProperty("BankingEnabled", "false")); BANKING_SYSTEM_GOLDBARS = Integer.parseInt(L2JModSettings.getProperty("BankingGoldbarCount", "1")); BANKING_SYSTEM_ADENA = Integer.parseInt(L2JModSettings.getProperty("BankingAdenaCount", "500000000")); Index: .settings/org.eclipse.jdt.ui.prefs =================================================================== --- .settings/org.eclipse.jdt.ui.prefs (revision 5547) +++ .settings/org.eclipse.jdt.ui.prefs (working copy) @@ -1,4 +1,3 @@ -#Tue Aug 30 12:22:24 CLST 2011 cleanup.add_default_serial_version_id=true cleanup.add_generated_serial_version_id=false cleanup.add_missing_annotations=truehttp://pastebin.com/Ub427XYF
23 answers to this question
Recommended Posts