OK論壇

 找回密碼
 註冊
查看: 6960|回復: 10

[教學] 【 源 碼 】 Ea源碼 - 修改源碼、技術分享

[複製鏈接]
  • TA的每日心情
    開心
    2018-12-14 06:21 PM
  • 簽到天數: 123 天

    連續簽到: 2 天

    [LV.7]常住居民III

    發表於 2009-9-9 17:54:04 | 顯示全部樓層 |閱讀模式
    改源碼就像寫腳本一樣..
    也不知道怎麼教﹋所以就寫下示範希望可以更好理解

    首先先找到 玩家密語的 code …
      可以從 whisper (npc密語)系統下去找…
      收尋 "npc:" 果然… 一下子就找到了…
      clif_parse_WisMessage
      這邊的程式碼可能有點艱澀…

    if( !clif_process_message(sd, 1, &target, &namelen, &message, &messagelen) )
      return;

     這段大概是在 檢查封包有沒有錯誤… 我也不是很清楚…
     而
      if (is_atcommand(fd, sd, message, 1)  )
      return;

      是在檢查是否為 指令 …

      if (battle_config.min_chat_delay)...
      是在做防止發言過快的…

      // Chat logging type 'W' / Whisper
      是紀錄密語…

      再來是 whisper (npc密語)系統 … 和 Main(全伺服器) 聊天系統… 這些都不重要…
      重點在
    dstsd = map_nick2sd(target);
      這邊是把 所密的人名稱… 轉化成SD的地方…
      而後面的 if 是在檢查有沒有這個玩家…
      所以如果要製作出 密語觸發事件… 就要在後面加入… 事件觸發的函數…
      找到了加入的位子… 現在要學加入的方法…
      首先… 先隨便找 玩家觸發事件…來收尋…
      我所選擇的是… OnPCLoginEvent
      所以我收尋 OnPCLoginEvent
      在 script.c 裡面的 Script_Config 找到了…
      我們在這下面 加入
       "OnPCWhisp",
       "OnPCwhisp2"

      這邊只有定義… 而我們要找到如何執行… 所以我們繼續收尋…
      會發現 OnPCLoginEvent 沒有出現在其他的地方…
      所以我對 script_config 的型態 Script_Config 做 移至定義 的動作…
      在 script.h 裡找到了 Script_Config 的定義… 而後面出現了一堆 char 的定義…
      而名稱也有 event .. 所以按照他的寫法… 在加入兩個char..
    const char *Whisp_event_name;
    const char *Whisp2_event_name;

      這是還是沒有找到 觸發的地方… 而剛剛 OnPCLoginEvent 已經收尋過了… 他沒有再出現過了
      所以我改收尋 login_event_name
      而在 npc_read_event_script 收尋到
      但仔細看一下、 這邊其實是 計算事件數量的地方… 恩… 順便把它加上去吧…
      
      但這邊不是觸發的… 所以在繼續收尋…
      你會發現… 你什麼也收尋不到…
      當時我也卡在這邊卡很久…
      聰明的芭樂… 想到了一個方法… 那就是重變數去推…
      不管是 killerrid 、 killedrid 都可以
      我是收尋 killedrid…  找到了 mob_dead 內的

    pc_setglobalreg(mvp_sd,"killedrid",md->class_);
    npc_script_event(mvp_sd, NPCE_KILLNPC); // PCKillNPC [Lance]

      我們對 NPCE_KILLNPC  做 移至定義 的動作…
      跑到了 npce_event … 原來 事件是做一個 index 對位的寫入… 難怪我們剛剛會在 Script_Config  斷頭…
      所以我們在這裡加入… NPCE_WhispNPCE_Whisp2 在 MAX 前面…
      這時我們回到剛剛的 dstsd = map_nick2sd(target);
      在後面 if 的後面
      加入
    pc_setglobalreg(sd,"Whispid",dstsd->status.char_id);
    pc_setglobalreg(dstsd,"Whispid",sd->status.char_id);
    pc_setglobalreg_str(sd,"message$",message);
    pc_setglobalreg_str(dstsd,"message$",message);
    npc_script_event(sd, NPCE_Whisp);
    npc_script_event(dstsd, NPCE_Whisp2);
      這樣一來就完成了!!

    評分

    參與人數 1積分 +50 現金 +50 積極性 +50 收起 理由
    02100120 + 50 + 50 + 50 我很贊同

    查看全部評分

    回復

    使用道具 舉報

    頭像被屏蔽
  • TA的每日心情

    2010-5-9 09:31 PM
  • 簽到天數: 5 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    發表於 2009-9-9 17:56:40 | 顯示全部樓層
    提示: 作者被禁止或刪除 內容自動屏蔽
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-12-14 06:21 PM
  • 簽到天數: 123 天

    連續簽到: 2 天

    [LV.7]常住居民III

     樓主| 發表於 2009-9-9 17:57:55 | 顯示全部樓層
    聰明的芭樂
    -/-芭樂小心被扣分xD"..


    若是各位對以上有問題可以提出 ˙ˊ˙
    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2009-9-9 17:59:17 | 顯示全部樓層

    好 小

    能 放 大 嘛 ?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-12-14 06:21 PM
  • 簽到天數: 123 天

    連續簽到: 2 天

    [LV.7]常住居民III

     樓主| 發表於 2009-9-9 18:00:40 | 顯示全部樓層

    好 小

    能 放 大 嘛 ?
    已經更改了- / / / / -..
    回復 支持 反對

    使用道具 舉報

    頭像被屏蔽
  • TA的每日心情

    2010-5-9 09:31 PM
  • 簽到天數: 5 天

    連續簽到: 0 天

    [LV.2]偶爾看看I

    發表於 2009-9-9 18:02:55 | 顯示全部樓層
    提示: 作者被禁止或刪除 內容自動屏蔽
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2013-7-11 12:09 AM
  • 簽到天數: 118 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2009-9-9 19:38:56 | 顯示全部樓層
    -///-
    哆啦~努力發多一點教學文吧(xD
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2018-12-14 06:21 PM
  • 簽到天數: 123 天

    連續簽到: 2 天

    [LV.7]常住居民III

     樓主| 發表於 2009-9-10 16:41:14 | 顯示全部樓層
    本帖最後由 哆啦ˇ 於 2009-9-10 04:55 PM 編輯
    -///-
    哆啦~努力發多一點教學文吧(xD
    今天發最後一篇吧-/-

    http://www.okayro.com/viewthread.php?tid=124588&extra=
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2019-1-13 05:23 PM
  • 簽到天數: 10 天

    連續簽到: 1 天

    [LV.3]偶爾看看II

    發表於 2010-2-9 11:13:04 | 顯示全部樓層
    -          -..
    都看不太懂的說=   )  
    感謝大大分享ˋ
    源碼
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    難過
    2010-8-4 03:21 PM
  • 簽到天數: 2 天

    連續簽到: 0 天

    [LV.1]初來乍到

    發表於 2010-8-2 11:34:27 | 顯示全部樓層
    很感謝哆啦分享的原碼教學剛開始接觸原碼的新手而言真是受益良多^^"
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    奮斗
    2022-4-13 11:30 PM
  • 簽到天數: 389 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2012-1-2 18:40:30 | 顯示全部樓層
    源碼的教學受益良多
    你發的教學聞我可要全部都看過一遍了
    希望能有長進..
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-5-2 12:05 PM , Processed in 0.059616 second(s), 23 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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