OK論壇

 找回密碼
 註冊
查看: 2094|回復: 2

[分享] 黏性炸彈

[複製鏈接]
  • TA的每日心情
    開心
    2019-8-18 04:57 PM
  • 簽到天數: 2148 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2012-1-28 13:10:10 | 顯示全部樓層 |閱讀模式
    放置炸彈,並遠距控引爆

    http://www.tudou.com/programs/view/fomIRXlGw-A/?phd=99

    http://www.youtube.com/watch?v=0DLD9DHKNNQ




    2/3 機會放置 爆擊 黏彈
    http://i.imgur.com/2oqnr.jpg

    下載原始碼


    下載技能圖檔補丁


    db\mob_db2.txt

    1. 2127,SOCCER_BALL,stickbomb,stickbomb,1,2000,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,3,86,0x0040,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    複製代碼
    db\mob_avail.txt

    1. 2127,1792
    複製代碼
    data\lua files\skillinfoz\skillid.lua

    1. STICKYBOMB = 999,
    2. STICKYBOMBBOMB = 998,
    複製代碼
    data\lua files\skillinfoz\skillinfolist.lua

    1. [SKID.STICKYBOMB] = {
    2.   "STICKYBOMB";
    3.   SkillName = "STICKYBOMB",
    4.   MaxLv = 10,
    5.   SpAmount = { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
    6. },

    7. [SKID.STICKYBOMBBOMB] = {
    8.   "STICKYBOMBBOMB";
    9.   SkillName = "STICKYBOMBBOMB",
    10. },
    複製代碼
    battle.c http://pastebin.com/....php?i=5VizNY5g
    找到這函數

    1. int battle_calc_damage(struct block_l...
    複製代碼
    拉到尾端

    1.     status_damage(src, s_bl, damage, 0, clif_damage(s_bl, s_bl, gettick(), 500, 500, damage, -1, 0, 0), 0);
    2.     return ATK_NONE;
    3.    }
    4.   }
    5. }
    6. return damage;
    7. }
    複製代碼
    增加這段

    1. damage=stickybombdamage(src, bl, damage);
    複製代碼
    在這上面

    1. return damage;
    複製代碼
    找空的地方曾個新函數

    1. int stickybombdamage(struct block_list *src, struct block_list *bl, int damage)
    2. {
    3. int _far=0, i=0;
    4. if(src->sbp==bl->sbp)
    5.   return 0;
    6. for(i=0;i<=MAX_STICKYBOMB;i++)
    7.   if(src->stickbomb!=-1)
    8.    break;
    9. if(i==MAX_STICKYBOMB)
    10.   damage = damage*3;
    11. else
    12. {
    13.   _far = distance_xy(src->x,src->y,bl->x,bl->y)+1;
    14.   _far = _far >= 10 ? 10 : _far ;
    15.   damage = damage/_far;
    16. }
    17. return damage;
    18. }
    複製代碼
    map.c http://pastebin.com/....php?i=aKRM2P9V

    1. pc_makesavestatus(sd);
    2. pc_clean_skilltree(sd);
    3. chrif_save(sd,1);
    4. unit_free_pc(sd);
    5. killstickybmob(sd,0); //Add
    6. return 0;
    複製代碼
    map.h http://pastebin.com/....php?i=UuyR67YF

    1. struct block_list {
    2. struct block_list *next,*prev;
    3. int id, sbp; //Add
    4. short m,x,y;
    5. enum bl_type type;
    6. int stickbomb[MAX_STICKYBOMB]; //Add
    7. };
    複製代碼
    mmo.h

    1. #define MAX_STICKYBOMB 8 //Add
    複製代碼
    pc.c http://pastebin.com/....php?i=H2zxukgJ
    增新函數

    1. void killstickybmob(struct map_session_data* sd, int t)
    2. {
    3. struct block_list *mb = NULL;
    4. int i=0;
    5. if(sd==NULL)
    6.   return;
    7. for(;i <= MAX_STICKYBOMB ;i++)
    8. {
    9.   mb=map_id2bl(sd->bl.stickbomb);
    10.   if(mb!=NULL)
    11.    if(!t)
    12.     status_kill(mb);
    13.    else
    14.     unit_skilluse_id(mb, mb->id, 173, 1);
    15.   else
    16.    continue;
    17. }
    18. return;
    19. }
    複製代碼
    pc.h
    加個定義

    1. void killstickybmob(struct map_session_data* sd, int t);
    複製代碼
    skill.c http://pastebin.com/....php?i=4dGTqDri
    增新函數
    1. void _STICKYBOMB(struct block_list *src, struct block_list *bl, int skillid, int skilllv)
    2. {
    3. int _x=0, _y=0, i=0, id=0;
    4. struct block_list *mb = NULL;
    5. switch(unit_getdir(bl))
    6. {
    7.   case 0: _x = 0; _y = 1; break;
    8.   case 1: _x = -1; _y = 1; break;
    9.   case 2: _x = -1; _y = 0; break;
    10.   case 3: _x = -1; _y = -1; break;
    11.   case 4: _x = 0; _y = -1; break;
    12.   case 5: _x = 1; _y = -1; break;
    13.   case 6: _x = 1; _y = 0; break;
    14.   case 7: _x = 1; _y = 1; break;
    15. }
    16. _x = _x*(skilllv-1);
    17. _y = _y*(skilllv-1);
    18. clif_skill_nodamage(src,bl,skillid,skilllv,0);
    19. id=mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,"StickBomb",2127,1,"");
    20. src->sbp++;
    21. if(src->sbp==MAX_STICKYBOMB)
    22.   src->sbp=0;
    23. mb=map_id2bl(src->stickbomb[src->sbp]);
    24. if(mb!=NULL)
    25.   unit_skilluse_id(mb, mb->id, 173, 1);
    26. src->stickbomb[src->sbp]=id;
    27. mb=map_id2bl(src->stickbomb[src->sbp]);
    28. mb->sbp=src->id;
    29. if(rand()%3)
    30. {
    31.   for(i=0;i<MAX_STICKYBOMB;i++)
    32.    mb->stickbomb=-1;
    33.   clif_specialeffect(mb, 47,AREA);
    34. }else
    35.   for(i=0;i<MAX_STICKYBOMB;i++)
    36.    mb->stickbomb=0;
    37. return;
    38. }
    複製代碼
    到這函數底下

    1. int skill_castend_nodamage_id
    複製代碼
    找到這個

    1. case SM_ENDURE:
    複製代碼
    增加這些

    1. case STICKYBOMB:
    2.   _STICKYBOMB(src, bl, skillid, skilllv);
    3.   break;
    4. case STICKYBOMBBOMB:
    5.   clif_skill_nodamage(src,bl,skillid,skilllv,0);
    6.   killstickybmob(map_id2sd(src->id),1);
    7.   break;
    複製代碼
    skill.h

    1. enum e_skill {
    2. STICKYBOMB = 999, //Add
    3. STICKYBOMBBOMB = 998, //Add
    4. NV_BASIC = 1,
    複製代碼
    db\skill_cast_db.txt

    1. 999,0,0,1000:1500:2000:2500:3000:3500:4000:4500:5000:5500,0,0,0 //Add
    複製代碼
    db\skill_require_db.txt

    1. 999,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //STICKYBOMB //Add
    2. 998,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //STICKYBOMBBOMB //Add
    複製代碼

    本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有帳號?註冊

    x
    回復

    使用道具 舉報

  • TA的每日心情
    開心
    2012-10-20 12:31 AM
  • 簽到天數: 305 天

    連續簽到: 94 天

    [LV.8]以壇為家I

    發表於 2012-1-28 14:07:18 | 顯示全部樓層
    不能直接點地板放嗎?:tk_20
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2019-8-18 04:57 PM
  • 簽到天數: 2148 天

    連續簽到: 1 天

    [LV.Master]伴壇終老

     樓主| 發表於 2012-1-28 14:13:20 | 顯示全部樓層
    不能直接點地板放嗎?
    rgrg1234 發表於 2012-1-28 02:07 PM



    不想
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-5-2 04:02 PM , Processed in 0.090905 second(s), 24 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表