-
Posts
95 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Lycawn
-
-
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
-
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
-
-
1 hour ago, erubaba said:
but i cant bc i dont have access to my router and i really cant, why is TMP4 working without? there must be a settings somewhere
Maybe used NAT connection instead of bridge
-
Hello everyone , i am happy to announce you the release of a simple project that creates a random daily quest , with values you choose to give on MAX_HP etc . Resets on daily basis
- 46
- 8
- 16
-
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
-
5 minutes ago, erubaba said:
i cant open my router ports.. and i was playing fine with tmp4
Never heard about no ports on local tbh ,maybe some other program used ?
-
1 minute ago, erubaba said:
but even with all the ports closed i cant log in rn
Ports need to be open it's same as opening tmp4 SF nothing new
-
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
-
3 minutes ago, erubaba said:
yeah the original, i managed to removed it and now it works, but now client says error
What error
-
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 minutes ago, erubaba said:
vdi failed to open?
What error do you get?
-
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
-
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
-
You can set a timer when login to run a state.
-
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
-
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
-
Copy paste original code & then changes you made.
-
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 ?
-
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?
-
13 minutes ago, AZICKO said:
Any screenshots?
If possiblecant really see big difference if not in game but top is filtered bot is not
- 1
-
25 minutes ago, AZICKO said:
What is this?
Overlay filter
Just now, Lycawn said:Overlay filter just like an instagram filter but for clients of mt2 , beautifies blurs etc
-
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
- 1
- 1
- 1
-
DAILY QUEST GENERATOR [M2] by Lyarchon
in Tools & Programs
Posted
There's no key