OK論壇

 找回密碼
 註冊
查看: 3039|回復: 9

[分享] [鮭魚的原碼教室 - 函數] 地圖映射 - mirrormap

[複製鏈接]
  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-8-2 11:55:10 | 顯示全部樓層 |閱讀模式
    本帖最後由 grass0916 於 2013-8-3 01:19 AM 編輯

    腳本指令 (script command) : mirrormap

    指令作用

    能夠完整地複製地圖 (不包含 NPC)。

    使用方式
    1. mirrormap(<string>, <int>) ; // 要映射的地圖名稱, 要映射地圖張數。
    複製代碼


    路徑 : \src\map\script.c

    找到 "struct script_function buildin_func[] = {" 此行, 於後一行加上
    1.         BUILDIN_DEF(mirrormap,"si"),
    複製代碼


    路徑 : \src\map\script.c

    找到 "// NPC interaction" 此行, 於後一行加上
    1. BUILDIN_FUNC( mirrormap ) {
    2.     const char * ori_Map = script_getstr( st, 2 ) ;
    3.     int mirror_count = script_getnum( st, 3 ) ;
    4.     int ori_m = map_mapname2mapid( ori_Map ) ;
    5.     int mir_m, i ;
    6.     size_t size;

    7.     for ( i = 1 ; i <= mirror_count ; i++ ) {
    8.         mir_m = map_num++ ;

    9.         // Copy the map
    10.         memcpy( &map[mir_m], &map[ori_m], sizeof( struct map_data ) ) ;

    11.         // Alter the name & set map
    12.         snprintf( map[mir_m].name, sizeof( map[mir_m].name ), "%.3d#%s", i, ori_Map ) ;
    13.         map[mir_m].name[MAP_NAME_LENGTH-1] = '\0' ;
    14.         map[mir_m].m = mir_m ;
    15.         map[mir_m].users = 0 ;
    16.         size = map[mir_m].bxs * map[mir_m].bys * sizeof( struct block_list* ) ;
    17.         map[mir_m].block = ( struct block_list ** )aCalloc( 1, size ) ;
    18.         map[mir_m].block_mob = ( struct block_list ** )aCalloc( 1, size ) ;
    19.         map[mir_m].index = mapindex_addmap( -1, map[mir_m].name ) ;
    20.         map[mir_m].channel = NULL ;

    21.         // Add this map to MapDB
    22.         map_addmap2db( &map[mir_m] ) ;

    23.         ShowInfo( "[Mirror map] : %s(%s) had been added.\n", ori_Map, map[mir_m].name ) ;
    24.     }

    25.     return 0 ;
    26. }
    複製代碼







    測試用腳本
    1. pasture,24,26,4    script    Man    56,{
    2.     set .@count, 5 ;
    3.     mirrormap( "pasture", .@count ) ;
    4.     npctalk "The map "pasture" had been mirrored, those name are "001#pasture", "002#pasture"..." ;
    5. }
    複製代碼
    測試結果, 無執行該指令時, 無法進入指定地圖。



    執行指令結束, 可以成功傳送到該映射地圖, 其地圖設定與母地圖完全相同 (格子點的可走與否, 景觀物件 ... 等)。









    評分

    參與人數 1積分 +99 現金 +99 積極性 +99 收起 理由
    goddameit + 99 + 99 + 99

    查看全部評分

    回復

    使用道具 舉報

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

    連續簽到: 1 天

    [LV.Master]伴壇終老

    發表於 2013-8-3 00:59:11 | 顯示全部樓層
    能踏上去嗎?

    如果可以,貼些相關照片
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2013-8-3 01:19:28 | 顯示全部樓層
    goddameit 發表於 2013-8-3 12:59 AM
    能踏上去嗎?

    如果可以,貼些相關照片

    已補上。






    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-8-3 13:22:55 | 顯示全部樓層
    好奇一個問題 如果這張關聯instance
    這樣會有相衝的問題?
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2013-8-3 13:33:51 | 顯示全部樓層
    o03126 發表於 2013-8-3 01:22 PM
    好奇一個問題 如果這張關聯instance
    這樣會有相衝的問題?

    沒關係,

    你說的跟我弄的他們彼此是獨立的。

    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    擦汗
    2018-9-15 03:18 PM
  • 簽到天數: 842 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-8-3 13:55:22 | 顯示全部樓層
    grass0916 發表於 2013-8-3 01:33 PM
    沒關係,

    你說的跟我弄的他們彼此是獨立的。

    soga 那我再看看 甘恩
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2023-12-30 04:16 AM
  • 簽到天數: 1322 天

    連續簽到: 1 天

    [LV.10]以壇為家III

    發表於 2013-8-3 14:19:07 | 顯示全部樓層
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    慵懶
    2012-10-4 02:22 AM
  • 簽到天數: 177 天

    連續簽到: 5 天

    [LV.7]常住居民III

    發表於 2013-8-3 21:57:30 | 顯示全部樓層
    #define MAX_MAP_PER_SERVER 1500
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情

    2017-1-18 12:17 AM
  • 簽到天數: 512 天

    連續簽到: 1 天

    [LV.9]以壇為家II

     樓主| 發表於 2013-8-3 22:50:41 | 顯示全部樓層
    sinya 發表於 2013-8-3 02:19 PM
    這是 http://trac.rathena.org/changeset/17386/rathena/trunk/src/map/map.c  加上迴圈?

    然後刪掉幾行增加幾行
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2015-11-23 11:25 PM
  • 簽到天數: 176 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2013-9-13 17:56:09 | 顯示全部樓層
    本帖最後由 cwgxcqwr 於 2013-9-13 11:22 PM 編輯

    發現一個小問題:地圖名稱不能太長

    回復 支持 反對

    使用道具 舉報

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

    本版積分規則

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

    GMT+8, 2024-4-27 03:26 AM , Processed in 0.064628 second(s), 26 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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