星言領域

 找回密碼
 註冊
搜索
查看: 1573|回復: 3

[原創] 任務修改 [複製鏈接]

總管理員

星言總壇主

Rank: 13Rank: 13Rank: 13Rank: 13

星言幣
5666
現金
89710568
威望
131
點數
23
潛水
831 米
金幣
920000
在線時間
1166 小時
最後登錄
2012-5-12
精華
7
帖子
3004
積分
731
閱讀權限
255
註冊時間
2004-1-15
UID
2
發表於 2008-8-8 15:20:58 |顯示全部樓層
每次新增任務是一件超麻煩的事,因為每次也要新增一個檔案,浪費資源效率也減慢不少
所以我就作了一點修改,希望可以幫到各位

資料庫新增
  1. ALTER TABLE `wog_mission_main` ADD `put_item_id` varchar(250)
  2. ALTER TABLE `wog_mission_main` ADD `get_item_id` varchar(250)
  3. ALTER TABLE `wog_mission_main` ADD `m_run`  tinyint(4) UNSIGNED DEFAULT '0' NOT NULL
複製代碼
開class/wog_mission_tool.php
尋找:(即最下的地方)
  1. }
  2. ?>
複製代碼
上面加上
  1.         function mission_itema($user_id,$m_id)
  2.         {
  3.                 global $DB_site,$_POST,$a_id,$lang,$wog_arry,$syn_debug,$syn_item,$wog_item_tool;
  4.                 if(empty($m_id)){alertWindowMsg($lang['wog_act_syn_error6']);}
  5.                 $syn_itema=$DB_site->query_first("select a.put_item_id,a.get_item_id from wog_mission_main a where a.m_id=".$m_id." ");
  6.                 if(!$syn_itema){alertWindowMsg($lang['wog_act_syn_error6']);}
  7.                 $item=split(",",$syn_itema["put_item_id"]);
  8.                 $item_pack_s=array();
  9.                 $sql="select a_id,d_body_id,d_foot_id,d_hand_id,d_head_id,
  10.                         d_item_id  
  11.                         from wog_item where p_id=".$user_id." ";
  12.                 $item_pack=$DB_site->query_first($sql);
  13.                 $item_pack_s=array();
  14.                 for($i=0;$i<count($item);$i++){
  15.                         if(eregi("[\*]", $item[$i])){
  16.                                 $item_s=split("\*",$item[$i]);
  17.                         }else{
  18.                                 $item_s[0]=$item[$i];
  19.                                 $item_s[1]=1;
  20.                         }
  21.                         check_type($item_s[0]);
  22.                         $item_pack_s[$i]=$a_id;
  23.                         if(!$item_packs[$a_id]){
  24.                                 $item_packs[$a_id]=array();
  25.                                 $item_packs[$a_id]=split(",",$item_pack[$a_id]);
  26.                         }
  27.                         if($a_id=="d_item_id")
  28.                         {
  29.                                 $item_packs[$a_id]=$wog_item_tool->item_out($user_id,$item_s[0],$item_s[1],$item_packs[$a_id]);
  30.                         }else{
  31.                                 for($ii=0;$ii<$item_s[1];$ii++){
  32.                                         $item_packs[$a_id]=$wog_item_tool->item_out($user_id,$item_s[0],1,$item_packs[$a_id]);
  33.                                 }
  34.                         }
  35.                 }
  36.                 $temp_sql="";
  37.                 for($i=0;$i<count($item_pack_s);$i++){
  38.                         $a_ids=$item_pack_s[$i];
  39.                         if(!eregi($a_ids, $temp_sql)){
  40.                                 $temp_sql.=",".$a_ids."='".implode(",",$item_packs[$a_ids])."'";
  41.                         }
  42.                 }
  43.                 $temp_sql=substr($temp_sql,1,strlen($temp_sql));
  44.                 $DB_site->query("update wog_item set ".$temp_sql." where p_id=".$user_id." ");
  45.                 unset($temp_sql,$a_ids,$item_packs,$item_pack,$a_id);
  46.         }
  47.         function mission_rewarda($user_id,$m_id)
  48.         {
  49.                 global $DB_site,$_POST,$a_id,$lang,$wog_arry,$syn_debug,$syn_item,$wog_item_tool;
  50.                 if(empty($m_id)){alertWindowMsg($lang['wog_act_syn_error6']);}
  51.                 $syn_itema=$DB_site->query_first("select a.put_item_id,a.get_item_id from wog_mission_main a where a.m_id=".$m_id." ");
  52.                 if(!$syn_itema){alertWindowMsg($lang['wog_act_syn_error6']);}
  53.                 $item=split(",",$syn_itema["get_item_id"]);
  54.                 $item_pack_s=array();
  55.                 $sql="select a_id,d_body_id,d_foot_id,d_hand_id,d_head_id,
  56.                         d_item_id  
  57.                         from wog_item where p_id=".$user_id." ";
  58.                 $item_pack=$DB_site->query_first($sql);
  59.                 $item_pack_s=array();
  60.                 for($i=0;$i<count($item);$i++){
  61.                         if(eregi("[\*]", $item[$i])){
  62.                                 $item_s=split("\*",$item[$i]);
  63.                         }else{
  64.                                 $item_s[0]=$item[$i];
  65.                                 $item_s[1]=1;
  66.                         }
  67.                         check_type($item_s[0]);
  68.                         $item_pack_s[$i]=$a_id;
  69.                         if(!$item_packs[$a_id]){
  70.                                 $item_packs[$a_id]=array();
  71.                                 $item_packs[$a_id]=split(",",$item_pack[$a_id]);
  72.                         }
  73.                         if($a_id=="d_item_id")
  74.                         {
  75.                                 $item_packs[$a_id]=$wog_item_tool->item_in($item_packs[$a_id],$item_s[0],$item_s[1]);
  76.                         }else{
  77.                                 for($ii=0;$ii<$item_s[1];$ii++){
  78.                                         $item_packs[$a_id]=$wog_item_tool->item_in($item_packs[$a_id],$item_s[0]);
  79.                                 }
  80.                         }
  81.                 }
  82.                 $temp_sql="";
  83.                 for($i=0;$i<count($item_pack_s);$i++){
  84.                         $a_ids=$item_pack_s[$i];
  85.                         if(!eregi($a_ids, $temp_sql)){
  86.                                 $temp_sql.=",".$a_ids."='".implode(",",$item_packs[$a_ids])."'";
  87.                         }
  88.                 }
  89.                 $temp_sql=substr($temp_sql,1,strlen($temp_sql));
  90.                 $DB_site->query("update wog_item set ".$temp_sql." where p_id=".$user_id." ");
  91.         }
複製代碼
開wog_act
尋找:
  1. case "end":
  2.         include("./class/wog_item_tool.php");
  3.         include("./class/wog_mission_tool.php");
  4. ................
  5. break;
複製代碼
替換為
  1. case "end":
  2.                                 include("./class/wog_item_tool.php");
  3.                                 include("./class/wog_mission_tool.php");
  4.                                 //include("./mission/wog_mission_".$_POST["temp_id"].".php");
  5.                                 $sql="select m_run from wog_mission_main where m_id=".$_POST["temp_id"]." ";
  6.                                 $mission=$DB_site->query_first($sql);
  7.                                 if($mission[0]==0)
  8.                                 {
  9.                                         include("./mission/wog_mission_".$_POST["temp_id"].".php");
  10.                                 }else{
  11.                                         include("./mission/wog_mission_run.php");
  12.                                 }
  13.                                 $wog_item_tool= new wog_item_tool;
  14.                                 $wog_mission_tool= new wog_mission_tool;
  15.                                 mission_end($_COOKIE["wog_cookie"],$_POST["temp_id"]);
  16.                                 unset($wog_item_tool);
  17.                                 unset($wog_mission_tool);
  18.                         break;
複製代碼
在mission資料夾新增wog_mission_run.php
  1. <?
  2. /*=====================================================
  3. Copyright (C) ETERNAL<iqstar.tw@gmail.com>
  4. Modify : 2005/11/01
  5. URL : http://www.2233.idv.tw
  6. This program is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2 of the License, or
  9. (at your option) any later version.
  10. ===================================================== */
  11. function mission_start($user_id,$m_id)
  12. {
  13. }
  14. function mission_body($user_id,$m_id)
  15. {
  16. }
  17. function mission_end($user_id,$m_id)
  18. {
  19.         global $DB_site,$_POST,$a_id,$lang,$wog_item_tool,$wog_mission_tool;

  20.         $m_book=$wog_mission_tool->mission_check($user_id,$m_id);
  21.         $sql="select m_id,m_run,put_item_id,get_item_id  from wog_mission_main where m_id=".$m_book["m_id"]." ";
  22.         $mission=$DB_site->query_first($sql);
  23.         if($m_book["m_pet_id"]!=0){
  24.         $wog_mission_tool->mission_pet($user_id,$m_book["m_pet_id"]);
  25.         }

  26.         if($mission["put_item_id"]){
  27.                 $wog_mission_tool->mission_itema($user_id,$m_id);
  28.         }
  29.         if($mission["get_item_id"]){
  30.                 $wog_mission_tool->mission_rewarda($user_id,$m_id);
  31.         }

  32.         $wog_mission_tool->mission_status_update($user_id,$m_id,$m_book["m_end_message"],$m_book["m_lv"]);
  33. }
  34. ?>
複製代碼
為令到各位不需要更改以前的任務,我在資料庫加入了m_run,0為使用以前的模式,1為新模式
物品是支援多個或單個,不論任何類型
即是說1*10,2,3,4*100也可以
另外有一點非這裡的限制就是如使用涅魂大大的wog_item_tool.php減肥版的話道具就一定最多只能*9,原版wog_item_tool.php我就不記得有沒有問題
請各位記得寫上資料來源! :!: 請把文章放上適當的地方! :!:請尊守所有版規,討論區是用來討論的,私下找我問,我開這個論壇就沒意思,所以切匆私下找我,在論壇說說吧。除非你問的是VIP

總管理員

星言總壇主

Rank: 13Rank: 13Rank: 13Rank: 13

星言幣
5666
現金
89710568
威望
131
點數
23
潛水
831 米
金幣
920000
在線時間
1166 小時
最後登錄
2012-5-12
精華
7
帖子
3004
積分
731
閱讀權限
255
註冊時間
2004-1-15
UID
2
發表於 2008-8-8 16:06:20 |顯示全部樓層

管理台修改

此修改適於Control Panel for Online FF Battle-WOG v3[作者:齋月]上
開admin.js

尋找
  1. f.write('<tr><td>結束內容</td><td colspan=2><textarea cols="58" rows="10" name="m_end_message">'+s[2]+'</textarea></td></tr>');
複製代碼
下面加上
  1.         f.write('<tr><td colspan=3>'+hr+'以下是新版任務才可使用</td></tr>');
  2.         f.write('<tr><td>需要物品</td><td colspan=2><textarea cols="58" rows="10" name="put_item_id">'+s[18]+'</textarea></td></tr>');
  3.         f.write('<tr><td>獲得獎勵</td><td colspan=2><textarea cols="58" rows="10" name="get_item_id">'+s[19]+'</textarea></td></tr>');
  4.         f.write('<tr><td>版本</td><td>'+(s[20]==0?"舊版":"新版")+'</td><td><input type="radio" value="0" name="m_run">舊版 <input type="radio" value="1" name="m_run">新版 </tr>');
複製代碼
尋找
  1. showadmin("ch");
複製代碼
加上
  1. f.f1.m_run[s[20]].checked=true;
複製代碼
開adminmain.php
尋找
  1. $imodify["pet_name"].",".$m
複製代碼
後面加上
  1. .",".$imodify["put_item_id"].",".$imodify["get_item_id"].",".$imodify["m_run"]
複製代碼
尋找
  1. if($_POST["store"]=="")$_POST["store"]=0;
  2. $temp_s=...............(略)
  3. $mode=0;
複製代碼
  1. $temp_s=...............
複製代碼
  1. ";
複製代碼
前方加上
  1. ,,,2
複製代碼
尋找admin_mission_main_sub()

尋找$DB_site->query("Update .....
  1. where m_id=
複製代碼
前加上
  1. ,put_item_id='".$_POST["put_item_id"]."',get_item_id='".$_POST["get_item_id"]."',m_run='".$_POST["m_run"]."'
複製代碼

尋找$DB_site->query("INSERT INTO ....
  1. ) VALUES (
複製代碼
前加上
  1. ,put_item_id,get_item_id,m_run
複製代碼
  1. )");
複製代碼
前加上
  1. ,'".$_POST["put_item_id"]."','".$_POST["get_item_id"]."','".$_POST["m_run"]."'
複製代碼
請各位記得寫上資料來源! :!: 請把文章放上適當的地方! :!:請尊守所有版規,討論區是用來討論的,私下找我問,我開這個論壇就沒意思,所以切匆私下找我,在論壇說說吧。除非你問的是VIP

Rank: 10Rank: 10Rank: 10

星言幣
2514
現金
2147483647
威望
16
點數
341
潛水
840 米
金幣
1
在線時間
280 小時
最後登錄
2012-5-20
精華
0
帖子
1733
積分
231
閱讀權限
150
註冊時間
2007-4-22
UID
1699
發表於 2008-8-20 16:26:55 |顯示全部樓層
=.=...還真複雜...
★在生命中指揮出生命交響曲,彈奏出生命的樂章。☆  ~愛玲~

Rank: 13Rank: 13Rank: 13Rank: 13

星言幣
63
現金
2147483647
威望
10
點數
8
潛水
1219 米
金幣
4000
在線時間
578 小時
最後登錄
2012-5-20
精華
5
帖子
3386
積分
379
閱讀權限
255
註冊時間
2004-4-2
UID
24
發表於 2008-8-23 00:02:15 |顯示全部樓層
原帖由 星星 於 2008-8-20 16:26 發表
=.=...還真複雜...


你是看不明白的,我也只明白一點點^^
各位會員請看看版規~~ 請遵守本論壇的版規~~
您需要登錄後才可以回帖 登錄 | 註冊

手機版|Archiver|星言領域

GMT+8, 2012-5-21 05:03 , Processed in 0.041205 second(s), 16 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回頂部