Jump to content

Lycawn

Active+ Member
  • Posts

    95
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by Lycawn

  1. 5 hours ago, raihan3 said:

    every thing is fine in this file except some problem i got is some cmd is chinese like example when user dc or logout it don`t show on english like The game will be closed in %d seconds. it show in chinese another problem is locale_list and your loaded quest are not same hope you understand what i mean

    This bug is known , sadly you gotta do manual translation in hope of working in english

  2. 9 hours ago, AZICKO said:

    If the source archive is updated, the resources will be saved on metin2.download.
    Otherwise, this topic will have no backup, I no longer store VDI.

    Thanks for info will look forward updating it soon

  3. 14 hours ago, erubaba said:

    like localhost? something for the host? the server is only for me, idk how to set it up tho

    you most defendly need to open ports some way.. There;'s a full guide on TMP4's release for 40k

  4. 2 minutes ago, erubaba said:

    just error connection to server, cant log in with account, but i tried changing CONFIG in usr closing bindip with # and still nothing

    You can follow the same guide as tmp4 for ports and configs please check it and make sure you do everything right 

  5. 14 minutes ago, erubaba said:

    Cannot register the hard disk 'Z:\Downloads\Server\Server.vdi' XXX  because a hard disk 'Z:\[40250] Reference Serverfile By TMP4\Server.vdi\Server.vdi' with UUID XXX already exists.

     

    Result Code:

    E_INVALIDARG (0XXXXXX

    Component:

    VirtualBoxWrap

    Interface:

    IVirtualBox 

    Callee RC:

    VBOX_E_OBJECT_NOT_FOUND (0XXXXXXX

    Seems like you already running tmp4 SF somewhere ?

  6. 7 hours ago, Juki said:

    Ty for release!  How come you've closed the server anyway?

    I am working on 2 jobs and other project , no real time tbh

    2 hours ago, raihan3 said:

    where is database bro ? i installed your vdi but there are no database folder 

    there is db

     

  7. state kon0037 begin
    
        when login or levelup or enter begin
            target.pos("__TARGET1__", 614, 118, 21, "los", 0)
        end
    
        when __TARGET1__.target.arrive begin
            target.delete("__TARGET1__")
            say_title("Głos zza portalu:")
            say("")
            say_reward(pc.get_name() .. " słyszysz mnie?")
            say_reward("Halo, " .. pc.get_name() .. "!")
            say_reward("Jeśli mnie słyszysz, uważaj na strażnika!")
            say_reward("Nie jest tym za kogo się podaje!")
            wait() -- Ensure the player reads the messages before warping
            say_reward("Ale...")
            pc.warp_local(21, 55200, 61400)
            -- set_state(kon0038) -- Uncomment this line if you want to transition to another state
        end
    
    end

     

  8. quest select_skill begin
    
    	state start begin
    		when login or levelup with pc.level >= 5 and pc.skillgroup == 0 begin
    			set_state(run)
    		end
    	end
    
    	state run begin
    		when login or levelup with pc.get_level() >= 5 and pc.get_skill_group() == 0 begin
    			send_letter("Choose your path");
    		end
    		
    		when button or info with pc.get_level() >= 5 and pc.get_skill_group() == 0 begin
    			command("selectskill_open");
    		end
    
    		when login with pc.get_skill_group() != 0 begin
    			restart_quest()
    		end
    	end
    end
    quest skill_reset2 begin
        state start begin
            when 9006.chat.gameforge.skill_reset2._10_npcChat begin
                if pc.get_level() < 5 then
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(gameforge.skill_reset2._20_say)
                    return
                end
                if pc.get_level() > 30 then
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(string.format(gameforge.skill_reset2._30_say, pc.get_level()))
                    return
                end
                if pc.get_skill_group() == 0 then
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(gameforge.skill_reset2._40_say)
                    return
                end
    
                local cost = 10000 + pc.get_level() * 2000
                local s = 0
    
                if not pc.has_master_skill() then
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(string.format(gameforge.skill_reset2._50_say, cost))
                    s = select(gameforge.skill_reset2._10_npcChat, gameforge.skill_reset2._60_select)
                else
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(gameforge.skill_reset2._70_say)
                    wait()
                    say(string.format(gameforge.skill_reset2._80_say, cost))
                    s = select(gameforge.skill_reset2._90_select, gameforge.locale.cancel)
                end
                if 2 == s then
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(gameforge.skill_reset2._110_say)
                    return
                end
                if pc.get_money() < cost then
                    say_title(gameforge.couple_ring._20_sayTitle)
                    say(gameforge.skill_reset2._120_say)
                    return
                end
                pc.change_money(-cost)
                pc.clear_skill()
                pc.set_skill_group(0)
                set_quest_state("select_skill", "run")
            end
        end
    end

    try these

  9. 1 minute ago, Dmitry1888 said:

    Error client sorce vs2022.....

    ////  C2819  "std::vector<std::shared_ptr<CGrannyMotion>,std::allocator<std::shared_ptr<CGrannyMotion>>>"  "operator ->" EterGrnLib D:\Source\source\client_src\source\EterGrnLib\Thing.cpp 229

    ///  C2232    ->std::vector<std::shared_ptr<CGrannyMotion>,std::allocator<std::shared_ptr<CGrannyMotion>>>::empty: левый операнд имеет тип "class",  "."    EterGrnLib    D:\Source\source\client_src\source\EterGrnLib\Thing.cpp    229      

    ///   RC1015    cannot open include file 'afxres.h'.    UserInterface    D:\Source\source\client_src\source\UserInterface\UserInterface.rc    11        
     

     

    it tells you exactly where the error is , go check these lines also looks like afxres.h doesnt exist or its not located in correct file

  10. On 4/14/2024 at 12:02 AM, astroNOT said:
    ALUA(_spawn_monster_in_map)
    
        {
    
            if (false == lua_isnumber(L, 1) || false == lua_isnumber(L, 2) || false == lua_isboolean(L, 3) ||
    
                false == lua_isnumber(L, 4) || false == lua_isnumber(L, 5) || false == lua_isnumber(L, 6))
    
            {
    
                lua_pushnumber(L, 0); // Return an error in the form of 0 if inputs are incorrect
    
                return 1;
    
            }
    
    
            const DWORD dwVnum = static_cast<DWORD>(lua_tonumber(L, 1));
    
            const size_t count = MINMAX(1, static_cast<size_t>(lua_tonumber(L, 2)), 10);
    
            const bool isAggressive = static_cast<bool>(lua_toboolean(L, 3));
    
            const int iMapIndex = static_cast<int>(lua_tonumber(L, 4));
    
            const int iMapX = static_cast<int>(lua_tonumber(L, 5));
    
            const int iMapY = static_cast<int>(lua_tonumber(L, 6));
    
    
            PIXEL_POSITION pos;
    
            if (!SECTREE_MANAGER::instance().GetMapBasePositionByMapIndex(iMapIndex, pos))
    
            {
    
                sys_err("QUEST _spawn_mob_in_map: cannot find base position in this map %d", iMapIndex);
    
                lua_pushnumber(L, 0); // Push 0 to indicate failure
    
                return 1;
    
            }
    
    
            const CMob *pMonster = CMobManager::instance().Get(dwVnum);
    
            if (pMonster == NULL)
    
            {
    
                sys_err("QUEST _spawn_mob_in_map: no mob data for VNUM %d", dwVnum);
    
                lua_pushnumber(L, 0); // Push 0 to indicate failure
    
                return 1;
    
            }
    
    
            lua_newtable(L); // Create a new table on the stack to hold the VIDs
    
    
            size_t SpawnCount = 0;
    
    
            for (size_t i = 0; i < count; ++i)
    
            {
    
                LPCHARACTER pSpawnMonster = CHARACTER_MANAGER::instance().SpawnMobRange(dwVnum,
    
                                                                                        iMapIndex,
    
                                                                                        pos.x - number(200, 750) + (iMapX * 100),
    
                                                                                        pos.y - number(200, 750) + (iMapY * 100),
    
                                                                                        pos.x + number(200, 750) + (iMapX * 100),
    
                                                                                        pos.y + number(200, 750) + (iMapY * 100),
    
                                                                                        true,
    
                                                                                        pMonster->m_table.bType == CHAR_TYPE_MONSTER,
    
                                                                                        isAggressive);
    
    
                if (pSpawnMonster != NULL)
    
                {
    
                    lua_pushnumber(L, SpawnCount + 1);          // Push the index in the table
    
                    lua_pushnumber(L, pSpawnMonster->GetVID()); // Push the VID
    
                    lua_settable(L, -3);                        // Set the table at index -3 with key at -2 and value at -1
    
                    SpawnCount++;
    
                }
    
            }
    
    
            sys_log(0, "QUEST Spawn Monster: VNUM(%u) COUNT(%u) isAggressive(%b)", dwVnum, SpawnCount, isAggressive);
    
    
            return 1; // Returns the table at the top of the stack
    
        }

    As u can see above i spawn the mob as `CHAR_TYPE_MONSTER` but when I m checking if
     

    		if (attacker->IsNPC() || target->IsNPC())
    		{
    			sys_log(0, "MOB_ATTACK_FUNC Victim is NPC not Monster not attackable");
    			lua_pushboolean(L, 0);
    			lua_pushstring(L, "MOB_ATTACK_FUNC Victim is NPC not Monster not attackable");
    			return 0;
    		}

    This is always returning true, and bcs of it, i cannot set `bool bAttackSuccess1 = attacker->Attack(target, 0);`
    Because apparently a npc cannot attack

    does anybody know how to spawn a mob (Character instance) that is not NPC but mosnter so it can attack other monsters?

     

    Seems like this function is trying to create a new table in db ? is this mob u trying to spawn already an NPC In mob db ?

  11. 18 hours ago, BlackSun said:

    Hello. I added in mob drop item, code 50300 for books with 100% chance but didn’t drop. I think the problem it’s in source cause I didn’t find anything about a function for drop random books.

    Someone can tell me where and what I need to check or add in source to work this in drop item?

    share mob_drop screens , also is this the vnum for random sb?

  12. 21 minutes ago, xRoshi said:

    someone will send the content of the server, photos, presentations, and anyone share client other link download (mediafire/googledrive)

    Its a little bit outdated some of the content is missing 

    • Metin2 Dev 1
    • Good 1
    • Love 1
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.