[分享]任務修改

版主: 涅魂, 簫哥

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

[分享]任務修改

文章minglo » 2008-08-08 3:21 pm

每次新增任務是一件超麻煩的事,因為每次也要新增一個檔案,浪費資源效率也減慢不少
所以我就作了一點修改,希望可以幫到各位

資料庫新增
代碼: 選擇全部
ALTER TABLE `wog_mission_main` ADD `put_item_id` varchar(250)
ALTER TABLE `wog_mission_main` ADD `get_item_id` varchar(250)
ALTER TABLE `wog_mission_main` ADD `m_run`  tinyint(4) UNSIGNED DEFAULT '0' NOT NULL
ALTER TABLE `wog_mission_main` ADD `get_money` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `get_item_id` ;


開class/wog_mission_tool.php
尋找:(即最下的地方)
代碼: 選擇全部
}
?>



上面加上
代碼: 選擇全部
   function mission_itema($user_id,$m_id)
   {
      global $DB_site,$_POST,$a_id,$lang,$wog_arry,$syn_debug,$syn_item,$wog_item_tool;
      if(empty($m_id)){alertWindowMsg($lang['wog_act_syn_error6']);}
      $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." ");
      if(!$syn_itema){alertWindowMsg($lang['wog_act_syn_error6']);}
      $item=split(",",$syn_itema["put_item_id"]);
      $item_pack_s=array();
      $sql="select a_id,d_body_id,d_foot_id,d_hand_id,d_head_id,
         d_item_id 
         from wog_item where p_id=".$user_id." ";
      $item_pack=$DB_site->query_first($sql);
      $item_pack_s=array();
      for($i=0;$i<count($item);$i++){
         if(eregi("[\*]", $item[$i])){
            $item_s=split("\*",$item[$i]);
         }else{
            $item_s[0]=$item[$i];
            $item_s[1]=1;
         }
         check_type($item_s[0]);
         $item_pack_s[$i]=$a_id;
         if(!$item_packs[$a_id]){
            $item_packs[$a_id]=array();
            $item_packs[$a_id]=split(",",$item_pack[$a_id]);
         }
         if($a_id=="d_item_id")
         {
            $item_packs[$a_id]=$wog_item_tool->item_out($user_id,$item_s[0],$item_s[1],$item_packs[$a_id]);
         }else{
            for($ii=0;$ii<$item_s[1];$ii++){
               $item_packs[$a_id]=$wog_item_tool->item_out($user_id,$item_s[0],1,$item_packs[$a_id]);
            }
         }
      }
      $temp_sql="";
      for($i=0;$i<count($item_pack_s);$i++){
         $a_ids=$item_pack_s[$i];
         if(!eregi($a_ids, $temp_sql)){
            $s=implode(",",$item_packs[$a_ids]);
            if($item_pack[$a_ids]=="")
            {
               $s=substr($s,1,strlen($s));
            }
            $temp_sql.=",".$a_ids."='".$s."'";
         }
      }
      $temp_sql=substr($temp_sql,1,strlen($temp_sql));
      $DB_site->query("update wog_item set ".$temp_sql." where p_id=".$user_id." ");
      unset($temp_sql,$a_ids,$item_packs,$item_pack,$a_id);
   }
   function mission_rewarda($user_id,$m_id)
   {
      global $DB_site,$_POST,$a_id,$lang,$wog_arry,$syn_debug,$syn_item,$wog_item_tool;
      if(empty($m_id)){alertWindowMsg($lang['wog_act_syn_error6']);}
      $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." ");
      if(!$syn_itema){alertWindowMsg($lang['wog_act_syn_error6']);}
      $item=split(",",$syn_itema["get_item_id"]);
      $item_pack_s=array();
      $sql="select a_id,d_body_id,d_foot_id,d_hand_id,d_head_id,
         d_item_id
         from wog_item where p_id=".$user_id." ";
      $item_pack=$DB_site->query_first($sql);
      $item_pack_s=array();
      for($i=0;$i<count($item);$i++){
         if(eregi("[\*]", $item[$i])){
            $item_s=split("\*",$item[$i]);
         }else{
            $item_s[0]=$item[$i];
            $item_s[1]=1;
         }
         check_type($item_s[0]);
         $item_pack_s[$i]=$a_id;
         if(!$item_packs[$a_id]){
            $item_packs[$a_id]=array();
            $item_packs[$a_id]=split(",",$item_pack[$a_id]);
         }
         if($a_id=="d_item_id")
         {
            $item_packs[$a_id]=$wog_item_tool->item_in($item_packs[$a_id],$item_s[0],$item_s[1]);
         }else{
            for($ii=0;$ii<$item_s[1];$ii++){
               $item_packs[$a_id]=$wog_item_tool->item_in($item_packs[$a_id],$item_s[0]);
            }
         }
      }
      $temp_sql="";
      for($i=0;$i<count($item_pack_s);$i++){
         $s="";
         $a_ids=$item_pack_s[$i];
         if(!eregi($a_ids, $temp_sql)){
            for($j=0;$j<count($item_packs[$a_ids]);$j++){
               if($item_packs[$a_ids][$j]!=""){
                                 $s.=",".$item_packs[$a_ids][$j];
                           }
                        }
                        $s=substr($s,1,strlen($s));
                        $temp_sql.=",".$a_ids."='".$s."'";
                  }
            }
      $temp_sql=substr($temp_sql,1,strlen($temp_sql));
      $DB_site->query("update wog_item set ".$temp_sql." where p_id=".$user_id." ");
   }


開wog_act
尋找:
代碼: 選擇全部
case "end":
   include("./class/wog_item_tool.php");
   include("./class/wog_mission_tool.php");
................
break;

替換為
代碼: 選擇全部
case "end":
            include("./class/wog_item_tool.php");
            include("./class/wog_mission_tool.php");
            //include("./mission/wog_mission_".$_POST["temp_id"].".php");
            $sql="select m_run from wog_mission_main where m_id=".$_POST["temp_id"]." ";
            $mission=$DB_site->query_first($sql);
            if($mission[0]==0)
            {
               include("./mission/wog_mission_".$_POST["temp_id"].".php");
            }else{
               include("./mission/wog_mission_run.php");
            }
            $wog_item_tool= new wog_item_tool;
            $wog_mission_tool= new wog_mission_tool;
            mission_end($_COOKIE["wog_cookie"],$_POST["temp_id"]);
            unset($wog_item_tool);
            unset($wog_mission_tool);
         break;


mission資料夾新增wog_mission_run.php

代碼: 選擇全部
<?
/*=====================================================
 Copyright (C) ETERNAL<iqstar.tw@gmail.com>
 Modify : 2005/11/01
 URL : http://www.2233.idv.tw
 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 2 of the License, or
 (at your option) any later version.
===================================================== */
function mission_start($user_id,$m_id)
{
}
function mission_body($user_id,$m_id)
{
}
function mission_end($user_id,$m_id)
{
   global $DB_site,$_POST,$a_id,$lang,$wog_item_tool,$wog_mission_tool;

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

   if($mission["get_money"]){
      $wog_mission_tool->mission_money($user_id,$mission["get_money"]);
   }

   if($mission["put_item_id"]){
      $wog_mission_tool->mission_itema($user_id,$m_id);
   }
   if($mission["get_item_id"]){
      $wog_mission_tool->mission_rewarda($user_id,$m_id);
   }

   $wog_mission_tool->mission_status_update($user_id,$m_id,$m_book["m_end_message"],$m_book["m_lv"]);
}
?>


為令到各位不需要更改以前的任務,我在資料庫加入了m_run,0為使用以前的模式,1為新模式
為免出現像上次亂碼的問題,我已在我的論壇發布
http://www.kw86.com/upload/thread-3911-1-1.html

物品是支援多個或單個,不論任何類型
即是說1*10,2,3,4*100也可以
另外有一點非這裡的限制就是如使用涅魂大大的wog_item_tool.php減肥版的話道具就一定最多只能*9,原版wog_item_tool.php我就不記得有沒有問題

[已修改於該頁]修正空缺值的問題
http://www.et99.org/viewtopic.php?p=3987973#3987973

如上述修改改得不好,請各位見諒
涅魂 寫:<u>積分 +2</u>

分享修改

at 2008-08-08 03:31 pm[/point]



最後由 minglo 於 2009-09-09 6:30 pm 編輯,總共編輯了 10 次。
歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

[分享]管理台修改

文章minglo » 2008-08-08 4:05 pm

此修改適於Control Panel for Online FF Battle-WOG v3[作者:齋月]上
此修改同時發布於我的論壇上,避免出現亂碼情況
http://www.kw86.com/upload/viewthread.p ... 2#pid20378

開admin.js

尋找
代碼: 選擇全部
f.write('<tr><td>結束內容</td><td colspan=2><textarea cols="58" rows="10" name="m_end_message">'+s[2]+'</textarea></td></tr>');


下面加上

代碼: 選擇全部
   f.write('<tr><td colspan=3>'+hr+'以下是新版任務才可使用</td></tr>');
   f.write('<tr><td>需要物品</td><td colspan=2><textarea cols="58" rows="10" name="put_item_id">'+s[18]+'</textarea></td></tr>');
   f.write('<tr><td>獲得獎勵</td><td colspan=2><textarea cols="58" rows="10" name="get_item_id">'+s[19]+'</textarea></td></tr>');
   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>');


尋找
代碼: 選擇全部
showadmin("ch");


加上
代碼: 選擇全部
f.f1.m_run[s[20]].checked=true;



開adminmain.php
尋找
代碼: 選擇全部
$imodify["pet_name"].",".$m

後面加上
代碼: 選擇全部
.",".$imodify["put_item_id"].",".$imodify["get_item_id"].",".$imodify["m_run"]


尋找
代碼: 選擇全部
if($_POST["store"]=="")$_POST["store"]=0;
$temp_s=...............(略)
$mode=0;


代碼: 選擇全部
$temp_s=...............
代碼: 選擇全部
";
前方加上
代碼: 選擇全部
,,,2


尋找admin_mission_main_sub()

尋找$DB_site->query("Update .....
代碼: 選擇全部
 where m_id=

前加上
代碼: 選擇全部
,put_item_id='".$_POST["put_item_id"]."',get_item_id='".$_POST["get_item_id"]."',m_run='".$_POST["m_run"]."'



尋找$DB_site->query("INSERT INTO ....
代碼: 選擇全部
 ) VALUES (

前加上
代碼: 選擇全部
,put_item_id,get_item_id,m_run


代碼: 選擇全部
)");

前加上
代碼: 選擇全部
,'".$_POST["put_item_id"]."','".$_POST["get_item_id"]."','".$_POST["m_run"]."'



歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/

leo199345
 
文章: 198
註冊時間: 2006-01-18 9:32 pm

文章leo199345 » 2008-08-09 11:05 am

還未嘗試..不過想問些問題..
這個系統很讚的,呵呵
MING大..對於任務需要物品和獎勵物品..
能同時有多個嗎?
即是...例如需要ID:1,2,3的物品來回任務..完任務後獎勵ID:4,5,6
現在能嗎?

送上雞皮一枚

================
發現些東西了,呵呵
代碼: 選擇全部
   function mission_itema($user_id,$m_id)
   {
      global $DB_site,$_POST,$a_id,$lang,$wog_arry,$syn_debug,$syn_item,$wog_item_tool;
      if(empty($m_id)){alertWindowMsg($lang['wog_act_syn_error6']);}
      $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." ");
      if(!$syn_itema){alertWindowMsg($lang['wog_act_syn_error6']);}
      $item=split(",",$syn_itema["put_item_id"]);
      $item_pack_s=array();
      $sql="select a_id,d_body_id,d_foot_id,d_hand_id,d_head_id,
         d_item_id[color=red],d_incantation_id,d_card_id,d_sitpet_id [/color]
         from wog_item where p_id=".$user_id." ";
      $item_pack=$DB_site->query_first($sql);
      $item_pack_s=array();
      for($i=0;$i<count($item);$i++){
         if(eregi("[\*]", $item[$i])){
            $item_s=split("\*",$item[$i]);
         }else{
            $item_s[0]=$item[$i];
            $item_s[1]=1;
         }
         check_type($item_s[0]);
         $item_pack_s[$i]=$a_id;
         if(!$item_packs[$a_id]){
            $item_packs[$a_id]=array();
            $item_packs[$a_id]=split(",",$item_pack[$a_id]);
         }
         if($a_id=="d_item_id")
         {
            $item_packs[$a_id]=$wog_item_tool->item_out($user_id,$item_s[0],$item_s[1],$item_packs[$a_id]);
         }else{
            for($ii=0;$ii<$item_s[1];$ii++){
               $item_packs[$a_id]=$wog_item_tool->item_out($user_id,$item_s[0],1,$item_packs[$a_id]);
            }
         }
      }
      $temp_sql="";
      for($i=0;$i<count($item_pack_s);$i++){
         $a_ids=$item_pack_s[$i];
         if(!eregi($a_ids, $temp_sql)){
            $temp_sql.=",".$a_ids."='".implode(",",$item_packs[$a_ids])."'";
         }
      }
      $temp_sql=substr($temp_sql,1,strlen($temp_sql));
      $DB_site->query("update wog_item set ".$temp_sql." where p_id=".$user_id." ");
      unset($temp_sql,$a_ids,$item_packs,$item_pack,$a_id);
   }
   function mission_rewarda($user_id,$m_id)
   {
      global $DB_site,$_POST,$a_id,$lang,$wog_arry,$syn_debug,$syn_item,$wog_item_tool;
      if(empty($m_id)){alertWindowMsg($lang['wog_act_syn_error6']);}
      $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." ");
      if(!$syn_itema){alertWindowMsg($lang['wog_act_syn_error6']);}
      $item=split(",",$syn_itema["get_item_id"]);
      $item_pack_s=array();
      $sql="select a_id,d_body_id,d_foot_id,d_hand_id,d_head_id,
         d_item_id[color=red],d_incantation_id,d_card_id,d_sitpet_id[/color] 
         from wog_item where p_id=".$user_id." ";
      $item_pack=$DB_site->query_first($sql);
      $item_pack_s=array();
      for($i=0;$i<count($item);$i++){
         if(eregi("[\*]", $item[$i])){
            $item_s=split("\*",$item[$i]);
         }else{
            $item_s[0]=$item[$i];
            $item_s[1]=1;
         }
         check_type($item_s[0]);
         $item_pack_s[$i]=$a_id;
         if(!$item_packs[$a_id]){
            $item_packs[$a_id]=array();
            $item_packs[$a_id]=split(",",$item_pack[$a_id]);
         }
         if($a_id=="d_item_id")
         {
            $item_packs[$a_id]=$wog_item_tool->item_in($item_packs[$a_id],$item_s[0],$item_s[1]);
         }else{
            for($ii=0;$ii<$item_s[1];$ii++){
               $item_packs[$a_id]=$wog_item_tool->item_in($item_packs[$a_id],$item_s[0]);
            }
         }
      }
      $temp_sql="";
      for($i=0;$i<count($item_pack_s);$i++){
         $a_ids=$item_pack_s[$i];
         if(!eregi($a_ids, $temp_sql)){
            $temp_sql.=",".$a_ids."='".implode(",",$item_packs[$a_ids])."'";
         }
      }
      $temp_sql=substr($temp_sql,1,strlen($temp_sql));
      $DB_site->query("update wog_item set ".$temp_sql." where p_id=".$user_id." ");
   }


如果自己wog沒這三種東西就要把它們刪除喔~



minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2008-08-09 11:21 am

這個我忘記了說,物品是支援多個或單個,不論任何類型
即是說1*10,2,3,4*100也可以
另外有一點非這裡的限制就是如使用涅魂大大的wog_item_tool.php減肥版的話道具就一定最多只能*9,原版wog_item_tool.php我就不記得有沒有問題
另外已刪除多出來的東西


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/

leo199345
 
文章: 198
註冊時間: 2006-01-18 9:32 pm

文章leo199345 » 2008-08-09 11:29 am

喔...這真是非常讚的分享了..

立即試用~^^



頭像
10度C~
 
文章: 493
註冊時間: 2005-12-22 10:25 pm

文章10度C~ » 2008-08-09 2:49 pm

minglo 寫:這個我忘記了說,物品是支援多個或單個,不論任何類型
即是說1*10,2,3,4*100也可以
另外有一點非這裡的限制就是如使用涅魂大大的wog_item_tool.php減肥版的話道具就一定最多只能*9,原版wog_item_tool.php我就不記得有沒有問題
另外已刪除多出來的東西

上限應該是可以改的~跟減肥版應該沒什麼關係@@


我的圖檔歡迎大家來玩玩<~此圖還在~表示我WOG還在= =
雖然沒有別人的好~但是還是希望可以多多推廣.....
有目標了:圖X系統 20%

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2008-08-09 3:08 pm

10度C~ 寫:
minglo 寫:這個我忘記了說,物品是支援多個或單個,不論任何類型
即是說1*10,2,3,4*100也可以
另外有一點非這裡的限制就是如使用涅魂大大的wog_item_tool.php減肥版的話道具就一定最多只能*9,原版wog_item_tool.php我就不記得有沒有問題
另外已刪除多出來的東西

上限應該是可以改的~跟減肥版應該沒什麼關係@@

我手上正使用減肥版的確出現這個限制,主要原因
代碼: 選擇全部
if($item_num < 0 || $item_num >$this->itemMax){
   alertWindowMsg($lang['wog_act_errdate']);
}

這部分的檢查影響,其實是可以作修改,不過我認為沒有太大必要
如果是要修改,我可以遲一點發佈出來@@


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/

頭像
10度C~
 
文章: 493
註冊時間: 2005-12-22 10:25 pm

文章10度C~ » 2008-08-09 3:10 pm

minglo 寫:我手上正使用減肥版的確出現這個限制,主要原因
代碼: 選擇全部
if($item_num < 0 || $item_num >$this->itemMax){
   alertWindowMsg($lang['wog_act_errdate']);
}

這部分的檢查影響,其實是可以作修改,不過我認為沒有太大必要
如果是要修改,我可以遲一點發佈出來@@

不是出現在這嗎= =......

代碼: 選擇全部
class wog_item_tool{
   [color=red]var $itemMax=99;[/color]
   function dataCheck(&$arr,&$user_id)



我的圖檔歡迎大家來玩玩<~此圖還在~表示我WOG還在= =
雖然沒有別人的好~但是還是希望可以多多推廣.....
有目標了:圖X系統 20%

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2008-08-09 3:44 pm

原減肥版是這個呀= =
var $itemMax=9;
而且我不想修改數量限制=.=
不然我的倉庫還有用


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


黑咪
 
文章: 161
註冊時間: 2007-12-24 11:23 am
性別: 男生

文章黑咪 » 2008-08-10 8:59 pm

不知為什麼...我使用新版不能完成任務><



minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2008-08-10 9:45 pm

可不可以給我看看你的修改?
我也是用這個修改,到目前為止我這邊也沒有錯誤的報告@@


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


黑咪
 
文章: 161
註冊時間: 2007-12-24 11:23 am
性別: 男生

文章黑咪 » 2008-08-11 8:11 am

是我個人不細心問題...
抱歉


最後由 黑咪 於 2008-08-11 6:41 pm 編輯,總共編輯了 1 次。

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2008-08-11 8:45 am

有沒有在mission資料夾新增wog_mission_run.php??
資料庫有加入了

ALTER TABLE `wog_mission_main` ADD `put_item_id` varchar(250)
ALTER TABLE `wog_mission_main` ADD `get_item_id` varchar(250)
ALTER TABLE `wog_mission_main` ADD `m_run` tinyint(4) UNSIGNED DEFAULT '0' NOT NULL

這些嗎?


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


黑咪
 
文章: 161
註冊時間: 2007-12-24 11:23 am
性別: 男生

文章黑咪 » 2008-08-11 6:40 pm

-﹏-
抱歉,原來是我把wog_mission_run.php放在class..
打擾了大大..抱歉




黑咪
 
文章: 161
註冊時間: 2007-12-24 11:23 am
性別: 男生

文章黑咪 » 2008-08-11 9:04 pm

又來問題了
任務獎勵的物品的問題

個案:玩家的武器背包是空的時候完成有送武器的任務時,該現家的武器背包便會變成〔,123〕,弄致玩家開不到武器背包

希望大大能夠解決



下一頁

回到 外掛區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客

cron