顯示具有 DB 標籤的文章。 顯示所有文章
顯示具有 DB 標籤的文章。 顯示所有文章

2014年5月31日 星期六

【DB教學】大量刪除DB資料

1.打開SQL程式、開啟資料庫之後,按F6就會跳出一個提示字元的控制介面!

2.請再提示字元(>)右邊將小妹PO上來的部分複製、貼上,然後記得將每個指令集的[中文用途說明]刪除。

3.最後按下ENTER就可以了。




以下指令:
(執行命令之前記得將每個指令集的[中文用途說明]刪除)

--刪除低於Lv??級的人物(下面敘述中??請自行代入要刪除的等級)←這ㄍ就是用途說明記得刪除這行。
DELETE characters.* FROM `characters` WHERE `level` < '??';


--把沒有人物的空帳號清除
DELETE accounts.* from accounts
left join characters on accounts.login=characters.account_name
where characters.account_name is null;


--清除已被刪掉空角色的好友表單
DELETE character_buddys.* from character_buddys
left join characters on character_buddys.char_id=characters.objid
where characters.objid is null;
DELETE character_buddys.* from character_buddys
left join characters on character_buddys.buddy_id=characters.objid
where characters.objid is null;


--清除已刪掉人物的魔法狀態
DELETE character_buff.* from character_buff
left join characters on character_buff.char_obj_id=characters.objid
where characters.objid is null;


--清除已刪掉人物的身上物品資料
DELETE character_items.* from character_items
left join characters on character_items.char_id=characters.objid
where characters.objid is null;


--清除已刪掉人物的任務資料
DELETE character_quests.* from character_quests
left join characters on character_quests.char_id=characters.objid
where characters.objid is null;


--清除已刪掉人物的技能
DELETE character_skills.* from character_skills
left join characters on character_skills.char_obj_id=characters.objid
where characters.objid is null;


--清除已刪掉人物的記憶座標
DELETE character_teleport.* from character_teleport
left join characters on character_teleport.char_id=characters.objid
where characters.objid is null;


--把空帳號的倉庫刪掉(這裡請注意,只是針對沒有人物的空帳號起作用。)
DELETE character_warehouse.* from character_warehouse
left join accounts on character_warehouse.account_name=accounts.login
where accounts.login is null;


--清除已經不存在的寵物(只用這個命令之前請玩家將存放於倉庫保管的項圈取出,否則會使倉庫的項圈變成白項圈喔。)
DELETE pets.* from pets
left join character_items on pets.item_obj_id=character_items.id
where character_items.id is null;


--清除空血盟
DELETE clan_data.* from clan_data
left join characters on clan_data.leader_id=characters.objid
where characters.objid is null;


--清除空血盟倉庫
DELETE clan_warehouse.* from clan_warehouse
left join clan_data on clan_warehouse.clan_name=clan_data.clan_name
where clan_data.clan_name is null;



原出處 http://bbs.djorz.com/t153626.html 妞子媽咪

【資料庫教學】設定排程讓MySQL 自動最佳化資料表

前言:

當發現伺服器運作的速度越來越慢,主要原因應該是資料越來越多,
Database 也開太多,所以要來為所有 DB 做 Optimize 和 Repair 的動作。

在 Mysql 5 以上就有提供 mysqlcheck 這樣功能的程式可以用 ~~ 用法如下:

QUOTE:
/usr/bin/mysqlcheck -opr -uroot -p --databases discuz
輸入密碼之後就可以最佳化 discuz 的資料庫



如果要最佳化所有的資料庫...可以使用底下語法:
QUOTE:
/usr/bin/mysqlcheck -acor -uroot -p --all-database
# 此命令就可以 Check 所有 MyISAM 的 Table, 非 MyISAM 會出現 "Table does not support optimize, doing recreate + analyze instead" 自動略過

-a = Analyse given tables.
-c = Check table for errors
-o = Optimise table
-r = Can fix almost anything except unique keys that aren't unique

如果要最佳化所有的資料庫...並且自動代入MySQL密碼...可以使用底下語法:
QUOTE:
/usr/bin/mysqlcheck -acor -uroot --password='12345678' --all-database




再來就可以使用自動排程下去執行囉~~


2013年6月6日 星期四

【Java教學】【★★★★★】水龍〈治癒侵蝕術〉

測試後,有狀態時治癒法術是扣血的。

不過,還需要再試試。



在db下加入-( action_id 按您的設定來設,僅參考)
  1. INSERT INTO `skills` VALUES ('602', '治癒侵蝕術', '0', '0', '5', '0', '0', '0', '200', '0', 'buff', '3', '10', '8', '0', '0', '0', '4', '16', '0', '3', '8', '0', '4', '', '41', '7780', '0', '0', '0', '280');
复制代码
mobskill請自設。

step 1. 在 L1SkillId 下-

新增-
  1. public static final int  INVERSE_HEALING = 602; // 水龍 - 治癒侵蝕術
复制代码
step 2. 在 L1BuffUtil 下-

找-
  1. case STATUS_FREEZE: // 10071
  2.     if (cha instanceof L1PcInstance) {
  3.         L1PcInstance pc = (L1PcInstance) cha;
  4.         pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_BIND, true));
  5.     }
  6.     break;
复制代码
在下面新增-
  1. case INVERSE_HEALING: // 水龍 - 治癒侵蝕術                                
  2.     if (cha instanceof L1PcInstance) {
  3.         L1NpcInstance npc = (L1NpcInstance) _user;
  4.         List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  5.                                         
  6.     for (L1PcInstance member : visiblePc) {
  7.         if ((npc.getLocation().getTileLineDistance(member.getLocation()) <= 8)) {
  8.             member.sendPackets(new S_SkillSound(member.getId(), 7780)); // 圖案編號
  9.             member.broadcastPacket(new S_SkillSound(member.getId(), 7780));
  10.             member.setSkillEffect(INVERSE_HEALING, 12000); // 12秒
  11.         }
  12.     }
  13.     }
  14.     break;
复制代码
step3. 在 L1SkillUse 下-

找-
  1. // 治癒性魔法
  2. else if (_skill.getType() == L1Skills.TYPE_HEAL) {
  3.         // 回復量
  4.         dmg = -1 * _magic.calcHealing(_skillId);
  5.         if (cha.hasSkillEffect(WATER_LIFE)) { // 水之元氣-效果 2倍
  6.                 dmg *= 2;
  7.                 cha.killSkillEffectTimer(WATER_LIFE); // 效果只有一次
  8.                 if (cha instanceof L1PcInstance) {
  9.                     L1PcInstance pc = (L1PcInstance) cha;
  10.                     pc.sendPackets(new S_SkillIconWaterLife());
  11.                 }
  12.          }
  13.          if (cha.hasSkillEffect(POLLUTE_WATER) || cha.hasSkillEffect(MASS_POLLUTE_WATER)) { // 汙濁之水-效果減半
  14.                 dmg /= 2;
  15.          }         
  16. }
复制代码
更動為-
  1. // 治癒性魔法
  2. else if (_skill.getType() == L1Skills.TYPE_HEAL) {
  3.         // 回復量
  4.         dmg = -1 * _magic.calcHealing(_skillId);
  5.         if (cha.hasSkillEffect(WATER_LIFE)) { // 水之元氣-效果 2倍
  6.                 dmg *= 2;
  7.                 cha.killSkillEffectTimer(WATER_LIFE); // 效果只有一次
  8.                 if (cha instanceof L1PcInstance) {
  9.                     L1PcInstance pc = (L1PcInstance) cha;
  10.                     pc.sendPackets(new S_SkillIconWaterLife());
  11.                 }
  12.          }
  13.          if (cha.hasSkillEffect(POLLUTE_WATER) || cha.hasSkillEffect(MASS_POLLUTE_WATER)) { // 汙濁之水-效果減半
  14.                 dmg /= 2;
  15.          }
  16.          if (cha.hasSkillEffect(INVERSE_HEALING)){ // 水龍 - 治癒侵蝕術
  17.                 dmg *= -1; // 變成傷害。
  18.          }
  19. }
复制代码

【Java教學】 【★★★★★】水龍〈藥水侵蝕術〉

skills的設定,請將法術圖編號去除~讓訊息正常。

集污、治癒侵蝕術、藥水侵蝕術三者似乎不能並存。

請加個狀態remove判斷吧~這邊就不修正了~

若有新增集體污水的話, L1BuffUtil 要先改一下:

在-
  1. case MASS_POLLUTE_WATER: // 水龍 - 污濁的水流
复制代码
全部改成-
  1. case MASS_POLLUTE_WATER: // 水龍 - 污濁的水流
  2. if (_user instanceof L1NpcInstance) {
  3.     L1NpcInstance npc = (L1NpcInstance) _user;
  4.     _user.broadcastPacket(new S_NpcChatPacket(npc, "里歐嗒!歐尼斯威納逆克", 0)); // 垃圾話測試        
  5. } else {
  6.     _player.broadcastPacket(new S_ChatPacket(_player, "里歐嗒!歐尼斯威納逆克", 0, 0)); // 垃圾話測試
  7. }                                                                                
  8. if (cha instanceof L1PcInstance) {
  9.     L1NpcInstance npc = (L1NpcInstance) _user;
  10.     List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  11.                                         
  12.     for (L1PcInstance member : visiblePc) {
  13.         if ((npc.getLocation().getTileLineDistance(member.getLocation()) <= 8)) {
  14.             member.sendPackets(new S_SkillSound(member.getId(), 7782)); // 圖案編號
  15.             member.broadcastPacket(new S_SkillSound(member.getId(), 7782));
  16.             member.setSkillEffect(MASS_POLLUTE_WATER, 10000); // 10秒
  17.         }
  18.     }
  19. }                                                                        
  20. break;
复制代码
可以開始了~

首先,在db下-
  1. INSERT INTO `skills` VALUES ('601', '藥水侵蝕術', '0', '0', '5', '0', '0', '0', '0', '16', 'buff', '3', '0', '0', '0', '50', '50', '0', '1', '0', '3', '0', '0', '64', '', '41', '7781', '0', '0', '0', '280');
复制代码
mobskill請自行增設~

step 1. 在 L1SkillId 下-

增-
  1. public static final int ENCHANCED_DECAY_POTION = 601; // 水龍 - 藥水侵蝕術
复制代码
step 2. 在 L1BuffUtil下-

找-
  1. case STATUS_FREEZE: // 10071
  2.     if (cha instanceof L1PcInstance) {
  3.         L1PcInstance pc = (L1PcInstance) cha;
  4.         pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_BIND, true));
  5.     }
  6.     break;
复制代码
在下面加-
  1. case ENCHANCED_DECAY_POTION: // 水龍 - 藥水侵蝕術
  2.     if (_user instanceof L1NpcInstance) {
  3.         L1NpcInstance npc = (L1NpcInstance) _user;
  4.         _user.broadcastPacket(new S_NpcChatPacket(npc, "里歐嗒!啦哪歐硬", 0)); // 垃圾話測試        
  5.     } else {
  6.         _player.broadcastPacket(new S_ChatPacket(_player, "里歐嗒!啦哪歐硬", 0, 0)); // 垃圾話測試       
  7.     }
  8.     if (cha instanceof L1PcInstance) {
  9.         L1NpcInstance npc = (L1NpcInstance) _user;
  10.         List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  11.                                         
  12.     for (L1PcInstance member : visiblePc) {
  13.         if ((npc.getLocation().getTileLineDistance(member.getLocation()) <= 8)) {
  14.             member.sendPackets(new S_SkillSound(member.getId(), 7781)); // 圖案編號
  15.             member.broadcastPacket(new S_SkillSound(member.getId(), 7781));
  16.             member.setSkillEffect(ENCHANCED_DECAY_POTION, 12000); // 12秒
  17.         }
  18.     }
  19.     }
  20.     break;
复制代码
step 3. 在 Potion 下-

找-
  1. public static void UseHeallingPotion(
复制代码
裡面的-
  1. pc.setCurrentHp(pc.getCurrentHp() + healHp);
  2. pc.getInventory().removeItem(item, 1);
复制代码
更動為-
  1. if (pc.hasSkillEffect(ENCHANCED_DECAY_POTION)) { // 水龍 - 藥水侵蝕術                        
  2.     pc.receiveDamage(pc, healHp, false); // 變成傷害
  3. }
  4. else {
  5.     pc.setCurrentHp(pc.getCurrentHp() + healHp); // 補血
  6. }
  7. pc.getInventory().removeItem(item, 1);
复制代码
step 4. 在L1Magic 下- (在pc對pc部分,沒用到的話就不加)
  1. private boolean checkZone(int skillId) {
复制代码
裡加入-
  1. || (skillId == ENCHANCED_DECAY_POTION) // 水龍 - 藥水侵蝕術
复制代码
找-
  1. private int calcProbability(int skillId)
复制代码
下面的-
  1.                 if ((skillId == ELEMENTAL_FALL_DOWN) 
  2.                         || (skillId == RETURN_TO_NATURE)
  3.                         || (skillId == ENTANGLE)
  4.                         || (skillId == ERASE_MAGIC)
  5.                         || (skillId == AREA_OF_SILENCE)
  6.                         || (skillId == WIND_SHACKLE)
  7.                         || (skillId == STRIKER_GALE)
  8.                         || (skillId == POLLUTE_WATER)
  9.                         || (skillId == EARTH_BIND)
  10.                         || (skillId == MASS_POLLUTE_WATER) // 集體污水
  11.                         ){
复制代码
加入-
  1. || (skillId == ENCHANCED_DECAY_POTION) // 水龍 - 藥水侵蝕術
复制代码
打完收工~~
 
by LovieAlice

【Java教學】【★★★★★】水龍〈集體污水〉

◇前言◇

在一個月前有發文,目前改寫了小部分。

若有發現問題,請不吝指正。

核心是以 99團隊為主,若有不同位子,請調整一下。

99團隊 mobskill.sql 格式與一般的版本不太一樣, 不建議核心硬改成 99的模樣。

自行調整就可以了。

 

◇參考說明◇

集體污水術、治癒侵蝕術、藥水侵蝕術三者似乎不能並存,所以有加了判斷。



◇設定部分◇

step 1.

先在db中增加-(若格式不合,請自行調整,41可自訂為18 或19 或30)
  1. INSERT INTO `skills` VALUES ('600', '集體污水術', '0', '0', '5', '0', '0', '0', '0', '0', 'buff', '3', '0', '0', '0', '50', '50', '4', '1', '0', '3', '8', '0', '16', '', '41', '0', '0', '0', '0', '280');
复制代码
mobskill 設定參考:(600140 為怪物編號,101為機率,請自行調整)
  1. INSERT INTO `mobskill` VALUES ('600140', '0', '集體污水術 ', '2', '5', '101', '0', '0', '-6', '0', '0', '0', '0', '0', '0', '600', '0', '0', '0', '0', '0', '0', '0');
复制代码
step 2.

在 L1SkillId 下新增-
  1.             public static final int MASS_POLLUTE_WATER = 600; // 水龍 - 污濁的水流            
  2.             public static final int ENCHANCED_DECAY_POTION = 601; // 水龍 - 藥水侵蝕術            
  3.             public static final int  INVERSE_HEALING = 602; // 水龍 - 治癒侵蝕術  
复制代码
step 3.

在 L1SkillUse 下找-
  1. if (cha.hasSkillEffect(POLLUTE_WATER)) { // 汙濁之水-效果減半
  2.    dmg /= 2;
  3. }
复制代码
更動為-
  1. if (cha.hasSkillEffect(POLLUTE_WATER) || cha.hasSkillEffect(MASS_POLLUTE_WATER)) { // 汙濁之水-效果減半
  2.    dmg /= 2;
  3. }
复制代码
step 4.

在 L1BuffUtil下找-
  1. case STATUS_FREEZE: // 10071
  2.      if (cha instanceof L1PcInstance) {
  3.         L1PcInstance pc = (L1PcInstance) cha;
  4.         pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_BIND, true));
  5.      }
  6. break;
复制代码
在下面新增-宣告 追加     import java.util.List;
  1.                         case MASS_POLLUTE_WATER: // 水龍 - 污濁的水流                                                                                                                
  2.                                 if (cha instanceof L1PcInstance) {
  3.                                         L1NpcInstance npc = (L1NpcInstance) _user;
  4.                                         List<L1PcInstance> visiblePc = L1World.getInstance().getVisiblePlayer(npc);
  5.                                         _user.broadcastPacket(new S_NpcChatPacket(npc, "里歐嗒!歐尼斯威納逆克!", 0)); // 0為普通說話
  6.                                         for (L1PcInstance member : visiblePc) {
  7.                         if ((npc.getLocation().getTileLineDistance(member.getLocation()) < 5)) { // 周圍4格內
  8.                                 if (!member.hasSkillEffect(MASS_POLLUTE_WATER)) { // 不具狀態時才賦予
  9.                                     member.setSkillEffect(MASS_POLLUTE_WATER, 12000); // 12秒
  10.                                     member.sendPackets(new S_SkillSound(member.getId(), 7782)); // 圖案編號
  11.                                     member.broadcastPacket(new S_SkillSound(member.getId(), 7782));
  12.                                     // 3術互斥判斷(污濁的水流,藥水侵蝕術,治癒侵蝕術)
  13.                                     if (member.hasSkillEffect(ENCHANCED_DECAY_POTION)) // 藥水侵蝕術        
  14.                                             member.killSkillEffectTimer(ENCHANCED_DECAY_POTION);
  15.                                     if (member.hasSkillEffect(INVERSE_HEALING)) // 治癒侵蝕術
  16.                                             member.killSkillEffectTimer(INVERSE_HEALING);
  17.                                 }                                
  18.                         }
  19.                     }
  20.                                 }                                                                        
  21.                                 break;
复制代码
step 5.

在 L1Magic下找-
  1. private boolean checkZone(int skillId) {
复制代码
找適當位子加入-
  1. || (skillId == MASS_POLLUTE_WATER)) {  // 水龍 - 污濁的水流
复制代码
找-
  1. private int calcProbability(int skillId) {
复制代码
裡面的-
  1. if (skillId == ELEMENTAL_FALL_DOWN || skillId == RETURN_TO_NATURE
  2.                                 || skillId == ENTANGLE || skillId == ERASE_MAGIC
  3.                                 || skillId == AREA_OF_SILENCE || skillId == WIND_SHACKLE
  4.                                 || skillId == STRIKER_GALE || skillId == POLLUTE_WATER
  5.                                 || skillId == EARTH_BIND) {
复制代码
更動為-
  1. if ((skillId == ELEMENTAL_FALL_DOWN) 
  2.                         || (skillId == RETURN_TO_NATURE)
  3.                         || (skillId == ENTANGLE)
  4.                         || (skillId == ERASE_MAGIC)
  5.                         || (skillId == AREA_OF_SILENCE)
  6.                         || (skillId == WIND_SHACKLE)
  7.                         || (skillId == STRIKER_GALE)
  8.                         || (skillId == POLLUTE_WATER)
  9.                         || (skillId == EARTH_BIND)
  10.                         || (skillId == MASS_POLLUTE_WATER) // 集體污水
  11.                         ){
复制代码
step 6.

在 Potion 下找-
  1. public static void UseHeallingPotion(
复制代码
下面的-
  1. if (pc.hasSkillEffect(POLLUTE_WATER)) { // 汙濁之水 - 效果減半
  2.                         healHp /= 2;
  3.                 }
复制代码
更動為-
  1. if ((pc.hasSkillEffect(POLLUTE_WATER)) // 汙濁之水 - 效果減半
  2.     || (pc.hasSkillEffect(MASS_POLLUTE_WATER))) { // 集體污水 - 效果減半
  3.                         healHp /= 2;
  4.                 }
复制代码
step 7.

在 L1NpcInstance 下增-
  1. import static l1j.server.server.model.skill.L1SkillId.MASS_POLLUTE_WATER;
复制代码
找-
  1.         private void useHealPotion(int healHp, int effectId) {
复制代码
下面的-
  1. if (hasSkillEffect(POLLUTE_WATER)) {
  2.                         healHp /= 2;
  3. }
复制代码
更動為-
  1. if ((hasSkillEffect(POLLUTE_WATER)) 
  2.    || (hasSkillEffect(MASS_POLLUTE_WATER))) {
  3.                         healHp /= 2;
  4. }
复制代码