3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 845|回复: 2
打印 上一主题 下一主题

[其他] 大佬们自动寻路和传送的代码是什么?求求了

[复制链接]

4

主题

109

帖子

249

积分

中级玩家

Rank: 3Rank: 3

贡献度
17
金元
1810
积分
249
精华
0
注册时间
2024-7-31
跳转到指定楼层
主题
发表于 2025-3-12 21:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用惯了mod以后,没有自动寻路和传送,没法玩了
回复

使用道具 举报

0

主题

281

帖子

437

积分

高级玩家

Rank: 4

贡献度
1
金元
4325
积分
437
精华
0
注册时间
2017-2-4
舒服的沙发
发表于 2025-3-17 17:46 | 只看该作者
...............................................................
回复 支持 反对

使用道具 举报

0

主题

9

帖子

13

积分

新手玩家

Rank: 1

贡献度
0
金元
130
积分
13
精华
0
注册时间
2021-6-13
硬硬的板凳
发表于 2026-7-5 01:59 | 只看该作者
gml_Object_o_player_KeyPress_112里添加

drawText = false;

if (global.floor_counter != 0)
{
    scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~不在地面上,无法传送。", [scr_id_get_name(5376)]));
    instance_destroy(o_globalmap);
    exit;
}

if (scr_getAgredMobsCount() > 0)
{
    scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~在战斗中,无法传送。", [scr_id_get_name(5376)]));
    instance_destroy(o_globalmap);
    exit;
}

var _closest_x = -1;
var _closest_y = -1;
var _min_distance = -1;
var _mark_type = "Flag";
var _playerGX = global.playerGridX;
var _playerGY = global.playerGridY;

if (variable_global_exists("tp_mark_type") && is_string(global.tp_mark_type) && global.tp_mark_type != "0")
    _mark_type = global.tp_mark_type;

if (variable_global_exists("globalmapUserMarksList") && ds_exists(global.globalmapUserMarksList, ds_type_list))
    ds_list_clear(global.globalmapUserMarksList);

with (o_globalmap)
{
    with (marksContainer)
    {
        var _childCount = guiChildrenCount;
        
        for (var _i = 0; _i < _childCount; _i++)
        {
            var _childIns = ds_list_find_value(guiChildrenList, _i);
            
            with (_childIns)
            {
                if (object_index == o_globalmapMarkUser)
                {
                    var _offX = guiLayoutOffsetLeft / global.glmapScale;
                    var _offY = guiLayoutOffsetTop / global.glmapScale;
                    ds_list_add(global.globalmapUserMarksList, sprite_get_name(sprite_index), image_index, _offX, _offY);
                }
            }
        }
    }
}

var _userMarksNumberFound = 0;
var _listSize = ds_list_size(global.globalmapUserMarksList);
var _Locations = ["Osbrook", "Mannshire", "Denbrie", "RottenWillow", "Homestead", "NewOrchard", "Winery", "BrynnSuburbs", "TheDrunkenWoodsmanTavern", "RoadsideInn", "CoalBurners", "OakenGrove", "OsbrookBrewery", "KendricksHomestead", "SouthernOutpost", "BridgeCamp", "RoadsideTower"];

for (var _i = 0; _i < _listSize; _i += 4)
{
    var _sprName = ds_list_find_value(global.globalmapUserMarksList, _i);
    var _gridX = ds_list_find_value(global.globalmapUserMarksList, _i + 2) div 52;
    var _gridY = ds_list_find_value(global.globalmapUserMarksList, _i + 3) div 52;
   
    if (_sprName != ("s_glmap_mark_user_" + _mark_type))
        continue;
   
    _userMarksNumberFound++;
    var _dist = point_distance(_gridX, _gridY, _playerGX, _playerGY);
    var _isValidTp = false;
    var locName = scr_globaltile_get("Location", _gridX, _gridY, "N/A");
   
    if (scr_array_get_index(_Locations, locName) != -1)
        _isValidTp = true;
   
    var dungeonID = scr_globaltile_get("dungeon", _gridX, _gridY, -1, global.globaltile_lookup_save);
   
    if (dungeonID != -1)
        _isValidTp = true;
   
    if (_isValidTp && (_min_distance == -1 || _dist < _min_distance))
    {
        _min_distance = _dist;
        _closest_x = _gridX;
        _closest_y = _gridY;
    }
}

if (_closest_x != -1 && _closest_y != -1)
{
    if (_userMarksNumberFound > 1)
    {
        scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~不知道要传送到~y~$~/~标记地点中的哪一个。", [scr_id_get_name(5376), _userMarksNumberFound]));
        instance_destroy(o_globalmap);
        exit;
    }
   
    var _tileOpen = scr_globaltile_get("isOpen", _closest_x, _closest_y);
   
    if (_tileOpen)
    {
        var _locTitle = scr_glmap_getTitle(_closest_x, _closest_y);
        scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~要传送到~lg~$~/~。", [scr_id_get_name(5376), _locTitle]));
    }
    else
    {
        scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~要传送到位于地图坐标~lg~($,$)~/~的未知区域。", [scr_id_get_name(5376), string(_closest_x), string(_closest_y)]));
    }
   
    global.playerGridX = _closest_x;
    global.playerGridY = _closest_y;
    var _dunCheck = scr_globaltile_get("dungeon", _closest_x, _closest_y, -1, global.globaltile_lookup_save);
    global.position_tag = (_dunCheck == -1) ? "fasttravel" : "dungeonExit";
    var travelDist = scr_tile_distance_xy(_playerGX, _playerGY, _closest_x, _closest_y, 1);
    var skip_time = ceil(travelDist * 0.25);
    var _targetRoom = scr_globaltile_get_room(_closest_x, _closest_y);
    var _smoothChanger = scr_smoothRoomChange(_targetRoom, [4], room_speed / 2);
    var _sleepCtrl = instance_create_depth(-50, -50, 0, o_sleepController);
   
    with (_sleepCtrl)
    {
        smoothChanger = _smoothChanger;
        sleepType = 12;
        sleepHours = skip_time;
        timeUpdate = true;
        actionsLog = false;
    }
}
else if (_userMarksNumberFound > 0)
{
    scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~标记的地点无法传送。", [scr_id_get_name(5376)]));
}
else
{
    scr_actionsLogUpdate(scr_colorTextStringPlaceholdersReplace("~w~$~/~没有标记要传送的地点。", [scr_id_get_name(5376)]));
}

instance_destroy(o_globalmap);



打开地图右键旗帜标记后按f1可传送,传送时间在skip_time里,嫌长可以把数字改小
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号 ) 

GMT+8, 2026-11-14 06:01 , Processed in 0.019263 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表