OK論壇

 找回密碼
 註冊
查看: 3938|回復: 28

[討論] Client.data/挂店重載系統 求共同計畫.

[複製鏈接]
  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2012-2-29 14:43:43 | 顯示全部樓層 |閱讀模式
    如標題所述
    開兩個坑
    第一個坑是 client.date
    第二個坑是 掛店重載系統

    大家可能都知道 那是SeAr的功能.
    嗯 是SeAr的功能.

    但是不代表其他人不能去寫 是吧?.
    而且据我所知,Client.date已有人做出了
    sense 編譯的 3CEAM - SQL

    那么我帖子的目的是.
    希望有先關資料或者有啥特別想法的同學
    提供一下信息`.好讓其他人也能在自己的端里寫出這些出西..
    當然了,已完完成的同學愿意的情況下也可以提供代碼,不愿意,那也是你自己的知識產權,沒人能說你什麼的+.+

    帖子完結的時候是開放完結,也就是最后完成的代碼是以開源的形式放出.
    最後,感謝大家的閱讀.
    回復

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-2-29 14:44:08 | 顯示全部樓層
    本帖最後由 dreamunreal 於 2012-2-29 03:03 PM 編輯

    我先1開樓.
    [client.date相關]
    Client.date的好在于,不需要重新編譯服端就可以直接改map所的客端日期.
    對於商業端是至重要的.當然了,也不排除某些用戶有特殊需要.

    我推測了一下這個東西的寫法:
    clif.c 中的所有 #if #else 等 有關 packetver 的預處理 全部都寫成正式代碼.
    不再以預處理的方式寫入.
    然后定義 packetver 變量在 map啟動時讀取.用用戶定義的Client.date以達到隨意修改client.date的效果.
    然了.只是我人的推測,不代他是正确的.

    [挂店重相關]
    挂店重重載,相信大家都知道,在map關閉時保留下所有挂店的角色的商店信息.
    然后map啟動后自重載這些角色挂好店,不需要玩家重新開店.

    我推推測的原理如下:
    在玩家商店時.把商店的信息寫入數據表.
    然后在商店更新時(商店物品被購買),更新數據表的內容
    在商店關閉(東西被買光,商人重登,關閉商店),清理數據表的內容.
    商人角色被刪除(刪人),清理數據表的內容

    map啟動完成后,執行函數A.檢測記錄掛店信息的數據表中是否有信息
    如果有.則執行函數B,使被記錄角色登入,然后執行函數C,根据數據表中的內容使玩家重新開啟商店.
    然后入下一條數據的檢測.

    至于函數A,B,C的法...
    目前我有任何想法,雖然我曾經有查閱過源碼中有關角色登錄相關的信息,但是全無收穫
    但是函A,C是很容易寫好的.相信如果我去做 也花不了多少時間.
    至于函數B,need more infomations.
    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-2-29 19:44:05 | 顯示全部樓層
    回復 2# dreamunreal


       形式上,應該只是創建一個sd結構

    應非真實登入,然紀錄內容查一下SeAr的sql檔案就知道了~_~(手頭沒任何軟件...)
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-2-29 19:53:02 | 顯示全部樓層
    回復  dreamunreal


       形式上,應該只是創建一個sd結構

    應非真實登入,然紀錄內容查一下SeAr的sql檔 ...
    Alopex 發表於 2012-2-29 19:44


    表示看不懂你的意思- -.
    求解.`
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2014-8-13 07:23 AM
  • 簽到天數: 109 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-2-29 23:04:35 | 顯示全部樓層
    回復 3# Alopex


    是指sd指向一個定義嗎?

    類似sd->state.autotrade


    我感覺SeA已經貫穿了login char map ...


    光是client.date能放到battle就讓我很不解


    char根本不認識battle.h


    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-2-29 23:47:55 | 顯示全部樓層
    本帖最後由 dreamunreal 於 2012-2-29 11:50 PM 編輯
    回復  Alopex


    是指sd指向一個定義嗎?

    類似sd->state.autotrade


    我感覺SeA已經貫穿了login ch ...
    sense 發表於 2012-2-29 23:04


    client.date似乎沒有通過char加載.
    是map加載的吧.
    而且加載battle的字段
    也未必一定要通過battle.c
    他可以單獨構造一個函數只為加載 client.date這個字段對應的內容.
    所以他寫在battle不等於一定是通過battle.c抈蒗聶取來加載的.

    其實我更好奇你的client.date 寫法是否真如我假設的一樣?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2014-8-13 07:23 AM
  • 簽到天數: 109 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-2-29 23:53:18 | 顯示全部樓層
    回復 6# dreamunreal


    事實上我並未完整的完成client.date

    因為#define巨集的關係,在clif.c有些還無法突破

    我只在char.c & clif.c 2011以後的才去client.date

    要不是3CeAM更新太慢不然應該會持續的去研究它




    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-2-29 23:58:30 | 顯示全部樓層
    回復  dreamunreal


    事實上我並未完整的完成client.date

    因為#define巨集的關係,在clif.c有些還無 ...
    sense 發表於 2012-2-29 23:53



       你是把 2011以後的 packet 寫成真硬代碼了
    沒有引入#define這種預處理的編譯碼?
    那就是個大工程了.
    我自己翻閱的代碼還沒看char.c 原來char.c抈得有關於packetver的東西啊- -
    是刪除角色相關的部分嗎?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2014-8-13 07:23 AM
  • 簽到天數: 109 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-3-1 00:07:17 | 顯示全部樓層
    回復 8# dreamunreal


    我把mmo.h的PACKETVER 定義在 20110111

    char.c是背飾的部分跟20110309以後的部分

    如果用20110309前的登陸20110309後的到人物選擇畫面勢必會卡住

    所以那邊要把條件編譯改成

    if而不是#if

    這是我的作法... 或許不是這樣

    我的C語言剛起步而已
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-3-1 00:12:21 | 顯示全部樓層
    本帖最後由 dreamunreal 於 2012-3-1 12:16 AM 編輯

    我看明白你的處理方法了.
    這個方法正如我所描述的這樣  把預處理的 #if 寫成 硬編碼 if
    這樣改以後生成的exe 體積會有所增加.
    而且執行效率會稍微減慢一點.
    但是怎麼樣都要比sea的debug mode 要來得快.

    其實我在想
    怎麼樣讓#define去讀取 我寫在conf中某個字段的值.
    只要解決這個問題.一切都好辦了.
    並不等於說一定要去改硬編碼.
    其實 common的 .c 和.h 都是貫穿 char login map的.
    只要把有關packetver的處理在mmo.h中改寫好.
    一切都豁然開朗了.
    只不過我目前還沒找到一個合理的處理這個東西的方法.

    而且我有聽到一些傳聞說,core.c 是athena的源頭.
    main 函數就在core.c,可以通過main函數做些手腳.
    因為main是最早被執行的函數 可以在main加載client.date.
    但是我還是想不通如何去替換一個 被define的東西.
    所以才一直卡在這過不去.

    如果要把所有 #if 的預處理 改成if硬編碼.
    這個工程量可謂是無比龐大的.
    而且非常容易出錯 會引發一些非常神奇的不可預知的crash.
    我想sear不會是用那麼複雜的方式來解決這個問題.一定有其他更容易的而我們又不知道的方法.
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2014-8-13 07:23 AM
  • 簽到天數: 109 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-3-1 00:19:46 | 顯示全部樓層
    回復 10# dreamunreal


    好吧 我不太懂這部分

    但#define 去讀取conf的設定感覺有點困難

    或許白狐有辦法
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-3-1 00:22:48 | 顯示全部樓層
    回復  dreamunreal


    好吧 我不太懂這部分

    但#define 去讀取conf的設定感覺有點困難

    或許白狐有 ...
    sense 發表於 2012-3-1 00:19


    其實 從程序的角度上來說 #define 去讀取 是不可能實現的.
    #define的東西 是在程序被編譯的時候就決定好的.
    而 client.date是程序編譯完之後 執行時才被加載的一個變量..
    白狐之前也有跟我研究過這個問題.不過似乎因為他太忙了.這事也就不了了之了...
    最近我又把這陳年爛事挖出來開了兩個那麼深的坑- - 實在是發現最近狐狸太閑了.
    壓根沒發現他有什麼新作- -
    籍此來刺激一下他的創作慾,然後共同把我心的這兩個坑給填了. ...
    回復 支持 反對

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-3-1 19:13:49 | 顯示全部樓層
    回復  Alopex


    是指sd指向一個定義嗎?

    類似sd->state.autotrade


    我感覺SeA已經貫穿了login ch ...
    sense 發表於 2012-2-29 11:04 PM


    我是回覆第二個問題....
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2014-8-13 07:23 AM
  • 簽到天數: 109 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2012-3-1 23:29:34 | 顯示全部樓層
    回復 13# Alopex


    第二個問題不是掛機重載嗎=_=

    我是指那個

    我有看到一個不知道什麼的代碼 -> Link

    所以才這樣子以為
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2017-2-15 05:18 PM
  • 簽到天數: 476 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2012-3-2 17:01:01 | 顯示全部樓層
    我是回覆第二個問題....
    Alopex 發表於 2012-3-1 19:13



       我表示,我還是看不懂你的意思啊-
    新建個sd 結構- -?沒搞懂.
    求詳細描述`.
    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-5-3 11:02 PM , Processed in 0.054634 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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