Hikayeler

Reklam vermek için turkmmo@gmail.com

[FIX] Martysama 5.7 Binek

5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

TuRkiSama

Level 3
TM Üye
Üye
Katılım
13 Eki 2024
Konular
33
Mesajlar
142
Online süresi
11g 28336s
Reaksiyon Skoru
34
Altın Konu
0
Başarım Puanı
60
TM Yaşı
1 Yıl 6 Ay 7 Gün
MmoLira
1,807
DevLira
33

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Hello, guys.

I previously tried using Marty 5.7, but there was a problem I couldn't solve.
It was that the mount wouldn't appear after riding them, and I didn't know exactly why. I tried deleting the old system and installing a completely new one, but it didn't work. I was forced to use Marti 5.8, even though I didn't want to. But after using Marty 5.8, my skills improved and I gained more experience. So I took the issue a little more seriously and went back to solving the problem in 5.7. When I asked someone, they wouldn't tell me the reason, and some were asking for $100 to solve this problem. I don't know why.

Let's get to the heart of the matter.

The solution is that the system doesn't work without a task, with a simple modification to the server source.

char.cpp

Search

Kod:
        case POINT_MOUNT:
            SetPoint(type, GetPoint(type) + amount);
            val = GetPoint(type);

replace

Kod:
        case POINT_MOUNT:
            SetPoint(type, GetPoint(type) + amount);
            val = GetPoint(type);
            MountVnum(val);
            break;


Screenshot_3.png


Char_item.cpp

Search

Kod:
        if (item->IsOldMountItem()) // @fixme152
            quest::CQuestManager::instance().SIGUse(GetPlayerID(), quest::QUEST_NO_NPC, item, false);
        #ifdef ENABLE_MOU[HASH=2]#ifdef[/HASH]YSTEM
        else if (item->IsNewMountItem()) {
            const auto mountVnum = GetPoint(POINT_MOUNT);
            MountVnum(mountVnum);
        }
        #endif

Replace it accordingly.

Kod:
        if (item->IsOldMountItem() || item->IsNewMountItem()) // @fixme152
            quest::CQuestManager::instance().SIGUse(GetPlayerID(), quest::QUEST_NO_NPC, item, false);
    //    #ifdef ENABLE_MOUNT_COSTUME_EX_SYSTEM
    //    else if (item->IsNewMountItem()) {
    //        const auto mountVnum = GetPoint(POINT_MOUNT);
    //        MountVnum(mountVnum);
    //    }
    //    #endif


Screenshot_3.png


Then use this quest

PHP:
quest ride begin
    state start begin
        function GetRideInfo(vnum, mount_vnum)
            -- all seals type ITEM_UNIQUE (16), subtype UNIQUE_SPECIAL_RIDE (2) or UNIQUE_SPECIAL_MOUNT_RIDE (3), and inside the group 10030 in special_item_group.txt
            -- all seals type ITEM_COSTUME (28), and subtype COSTUME_MOUNT (2) with LimitType0 == LIMIT_REAL_TIME (7)
            mount_info = {}
            if mount_vnum==nil then
                mount_info["mount_vnum"] = item.get_value(4)
            else
                mount_info["mount_vnum"] = mount_vnum
            end
            mount_info["duration"] = 60*60*24*365
            mount_info["req_level"] = -1
            return mount_info
        end

        function Ride(vnum, remain_time, mount_vnum)
            local mount_info = ride.GetRideInfo(vnum, mount_vnum)
            if mount_info["req_level"] ~= nil and pc.level < mount_info["req_level"] then
                syschat("Level not enough")
            else
                if 112 == pc.get_map_index() then -- duel map
                    return
                end

                if remain_time==0 then
                    if mount_info["duration"] <= 0 then
                        if item.is_available0() then
                            remain_time = item.get_socket(0)
                        else
                            remain_time = 60
                        end
                    else
                        remain_time = mount_info["duration"]
                    end
                end

                -- syschat("duration "..remain_time)
                -- syschat("socket1 "..item.get_socket(1))
                -- syschat("socket2 "..item.get_socket(2))
                -- syschat(string.format("pc.mount %d %d", mount_info["mount_vnum"], remain_time))
                pc.mount(mount_info["mount_vnum"], remain_time)
                if mount_info["bonus_id"]~= nil then --deprecated way of adding bonus
                    pc.mount_bonus(mount_info["bonus_id"], mount_info["bonus_value"], remain_time)
                end
            end
        end

        when login begin
            local vnum, remain_time, mount_vnum = pc.get_special_ride_vnum()
            -- syschat(string.format("vnum %d remain_time %d mount_vnum %d", vnum, remain_time, mount_vnum))
            -- syschat("remain_time "..remain_time)
            if vnum==0 then return end

            local mount_info = ride.GetRideInfo(vnum)
            if mount_info==nil then return end

            -- syschat(string.format("vnum %d remain_time %d", vnum, remain_time))
            ride.Ride(vnum, remain_time, mount_vnum)
        end

        when sig_use begin
            if pc.is_polymorphed() then
                syschat("You are transformed")
            elseif not pc.is_riding() then
                if horse.is_summon() then
                    horse.unsummon()
                end
                ride.Ride(item.vnum, 0)
            else
                syschat("You are already riding")
            end
        end
    end
end

The system will work with you comfortably and at full capacity.
 
That's how I like to treat who try to sell it to me for 100 bucks for fixes.



Thanks for sharing.
 
The "problem" you say exist doesnt exist,The problem is that you are using bad item_proto with the files,Since the mount system is modified to use APPLY_MOUNT from item_proto so you need to set that up for each Mount or use the official proto when you adjust it first.
Kod:
REAL_TIME    0    LIMIT_NONE    0    APPLY_MOUNT    20201
 
The "problem" you say exist doesnt exist,The problem is that you are using bad item_proto with the files,Since the mount system is modified to use APPLY_MOUNT from item_proto so you need to set that up for each Mount or use the official proto when you adjust it first.
Kod:
REAL_TIME    0    LIMIT_NONE    0    APPLY_MOUNT    20201
I have tried all the methods and it did not work and this is the correct way. The system in 5.7 does not work without its own task, completely opposite to the system in 5.8. The system in 5.7 is nothing but a preparation and setup for the system in 5.8. Do you understand? I tried before discovering this solution. I am trying in every way. I did everything you can imagine or not imagine and it did not work. This is the only way that worked. I have been trying to solve this problem for more than 3 weeks, so I speak with confidence, not just talk without experience.
 
I have tried all the methods and it did not work and this is the correct way. The system in 5.7 does not work without its own task, completely opposite to the system in 5.8. The system in 5.7 is nothing but a preparation and setup for the system in 5.8. Do you understand? I tried before discovering this solution. I am trying in every way. I did everything you can imagine or not imagine and it did not work. This is the only way that worked. I have been trying to solve this problem for more than 3 weeks, so I speak with confidence, not just talk without experience.
This method Assertion failed: (index < row->size()), function AsStringByIndex, file CsvReader.cpp, line 340. This is definitely not the solution to the error. The error is entirely related to proto, such as a space instead of a tab, an extra deleted cell, etc. It is worth reiterating that this is not the solution to the error I wrote about.
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst