天堂私服排行榜的編寫方式

文章推薦指數: 80 %
投票人數:10人

天堂私服排行榜的編寫方式~. 本排名系統最初由99nets.spofpak首發. 經過我的整理,然后經過missu0524的改良(還有一個missu0524的版本,目前還沒有辦法適當地套用在我自己 ... 登入 | 註冊 | 基本資料 | 推文的私服 | 發佈天堂私服 | 發佈其他私服 | 管理私服 | 管理玩家推文 | 宣傳AT團 | 管理AT團 | 登出 天堂解壓縮程式 天堂選字修復程式 天堂延遲修復程式 天堂盟徽製造程式 天堂遠端連線程式 天堂螢幕錄製程式 test0428 瘋天堂私服發佈網站 2015-05-0700:49 天堂私服排行榜的編寫方式~ 本排名系統最初由99nets.spofpak首發 經過我的整理,然后經過missu0524的改良(還有一個missu0524的版本,目前還沒有辦法適當地套用在我自己的版本上) 再經由9001183ex的共同努力,目前達成如下效果,在收集排名的同時避免太多人點擊而造成伺服器LAG. 理論上而言,可以套用到從三年前到現在的任何版本...... 本段代碼由missu0524所提供 [Copytoclipboard] CODE: privateString[]getPlayersExp()throwsSQLException{//等级排名 String[]name=newString[10]; PreparedStatementpstm1=null; ResultSetrs=null; Connectioncon=null; con=L1DatabaseFactory.getInstance().getConnection(); intcc=0; while(cc<10){ pstm1=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit"+cc+",1;"); rs=pstm1.executeQuery(); while(rs.next()){ name[cc]=rs.getString("char_name"); } SQLUtil.close(rs); cc++; } returnname; } 通過讀取DB內所保存的數據而非玩家的當前數據,所以每次讀取的應該是在線玩家上線時的數據,每次有玩家下線,DB資料庫更新此排名也隨之更新. [Copytoclipboard] CODE: if(((L1NpcInstance)obj).getNpcTemplate().get_npcId()==123456){//排行榜NPC的编号 L1NpcInstancenpc=(L1NpcInstance)obj; inttime=npc.getSkillEffectTimeSec(123456); if(s.equalsIgnoreCase("playersexp")){//显示等级前10 if(!npc.hasSkillEffect(123456)||pc.isGm()){ htmldata=getPlayersExp(); htmlid="getexp"; npc.setSkillEffect(123456,1800*1000); }else{ npc.broadcastPacket(newS_NpcChatPacket(npc,"最新排名的信息还需要"+time+"秒的时间,请稍后再来!",0)); Thread.sleep(10000); } } } 每半小時可以查詢一人次......這便是此寫法的不是很人性化的一個地方了,為了避免LAG,暫時也只好這樣了. ---------------------------------------------------------------------------- softpak曾經寫過的排行榜,只是拿過來稍稍改了一下.因為softpak以前是發在99的,所以請勿隨意轉載. 希望套用等級排名而又不希望太過於佔用資源導致伺服器LAG的朋友請將此貼所有跟貼看完 看完後相信可以有一個比較適當的解決方法給你! 對話檔命令添加: if(s.equalsIgnoreCase("playersexp")){//顯示等級前10 htmldata=getPlayersExp(); htmlid="playersexp"; } 寫一個的對話檔,命令為playersexp備用 隨意找個能添加的java importjava.sql.Connection; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.sql.SQLException; privateString[]getPlayersExp()throwsSQLException{//等級排名bysoftpak .jhony修正 Stringmsg1=null; Stringmsg2=null; Stringmsg3=null; Stringmsg4=null; Stringmsg5=null; Stringmsg6=null; Stringmsg7=null; Stringmsg8=null; Stringmsg9=null; Stringmsg10=null; PreparedStatementpstm1=null;PreparedStatementpstm2=null; PreparedStatementpstm3=null;PreparedStatementpstm4=null; PreparedStatementpstm5=null;PreparedStatementpstm6=null; PreparedStatementpstm7=null; PreparedStatementpstm8=null; PreparedStatementpstm9=null; PreparedStatementpstm10=null; ResultSetrs1=null;ResultSetrs2=null; ResultSetrs3=null;ResultSetrs4=null; ResultSetrs5=null;ResultSetrs6=null; ResultSetrs7=null;ResultSetrs8=null; ResultSetrs9=null;ResultSetrs10=null; Connectioncon=null; String[]expresult=null; con=L1DatabaseFactory.getInstance().getConnection(); pstm1=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit0,1;"); pstm2=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit1,1;"); pstm3=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit2,1;"); pstm4=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit3,1;"); pstm5=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit4,1;"); pstm6=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit5,1;"); pstm7=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit6,1;"); pstm8=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit7,1;"); pstm9=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit8,1;"); pstm10=con.prepareStatement("selectchar_namefromcharacterswhereaccesslevel=0orderbyexpDESClimit9,1;"); rs1=pstm1.executeQuery(); while(rs1.next()){ msg1=rs1.getString("char_name"); } rs2=pstm2.executeQuery(); while(rs2.next()){ msg2=rs2.getString("char_name"); } rs3=pstm3.executeQuery(); while(rs3.next()){ msg3=rs3.getString("char_name"); } rs4=pstm4.executeQuery(); while(rs4.next()){ msg4=rs4.getString("char_name"); } rs5=pstm5.executeQuery(); while(rs5.next()){ msg5=rs5.getString("char_name"); } rs6=pstm6.executeQuery(); while(rs6.next()){ msg6=rs6.getString("char_name"); } rs7=pstm7.executeQuery(); while(rs7.next()){ msg7=rs7.getString("char_name"); } rs8=pstm8.executeQuery(); while(rs8.next()){ msg8=rs8.getString("char_name"); } rs9=pstm9.executeQuery(); while(rs9.next()){ msg9=rs9.getString("char_name"); } rs10=pstm10.executeQuery(); while(rs10.next()){ msg10=rs10.getString("char_name"); } expresult=newString[]{String.valueOf(msg1),String.valueOf(msg2),String.valueOf(msg3),String.valueOf(msg4),String.valueOf(msg5),String.valueOf(msg6),String.valueOf(msg7),String.valueOf(msg8),String.valueOf(msg9),String.valueOf(msg10)}; SQLUtil.close(rs1); SQLUtil.close(rs2); SQLUtil.close(rs3); SQLUtil.close(rs4); SQLUtil.close(rs5); SQLUtil.close(rs6); SQLUtil.close(rs7); SQLUtil.close(rs8); SQLUtil.close(rs9); SQLUtil.close(rs10); SQLUtil.close(pstm1); SQLUtil.close(pstm2); SQLUtil.close(pstm3); SQLUtil.close(pstm4); SQLUtil.close(pstm5); SQLUtil.close(pstm6); SQLUtil.close(pstm7); SQLUtil.close(pstm8); SQLUtil.close(pstm9); SQLUtil.close(pstm10); SQLUtil.close(con); returnexpresult; } 上一篇文章:天堂私服編寫計時地圖教學~下一篇文章:天堂戰士部分武器測試!分享文章: 瘋天堂版權所有©2013YouBeFunAllRightsReserved.   |瘋天堂手機版|免責聲明|網站公告|意見回報|本站Logo|網站地圖|瘋天堂YouTube|瘋天堂google+|瘋天堂facebook



請為這篇文章評分?