Jump to content

Metin2 Dev

Bot
  • Posts

    2151
  • Joined

  • Last visited

  • Feedback

    100%

Everything posted by Metin2 Dev

  1. Modify in InstanceBase.cpp like this : bool CInstanceBase::CanViewTargetHP(CInstanceBase& rkInstVictim) { if (rkInstVictim.IsStone()) return true; if (rkInstVictim.IsWoodenDoor()) return true; if (rkInstVictim.IsEnemy()) return true; #ifdef ENABLE_VIEW_TARGET_PLAYER_HP if (rkInstVictim.IsPC()) return true; #endif return false; }
  2. After i just lost like 2 Hours of work in the newest Version, id like to recommend that you could start to build an Optional Autosave function for Maps into the Tool for like every 5 Minutes or so, It Crashed after i changed some Textures. if its possible it would help some Guys alot i think
  3. Hello guys, i have a problem with questlua_horse.cpp and i need your help for a problem.. i don't know how to fix it This is my questlua_horse.cpp #include "stdafx.h" #include "questlua.h" #include "questmanager.h" #include "horsename_manager.h" #include "char.h" #include "affect.h" #include "config.h" #include "utils.h" #include "char_manager.h" #ifdef ENABLE_MOUNT_COSTUME_SYSTEM #include "MountSystem.h" #endif #undef sys_err #define sys_err(fmt, args...) quest::CQuestManager::instance().QuestError(__FUNCTION__, __LINE__, fmt, ##args) extern int (*check_name) (const char * str); namespace quest { // // "horse" Lua functions // int horse_is_riding(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch->IsHorseRiding()) lua_pushnumber(L, 1); else lua_pushnumber(L, 0); return 1; } int horse_is_summon(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (NULL != ch) { lua_pushboolean(L, (ch->GetHorse() != NULL) ? true : false); } else { lua_pushboolean(L, false); } return 1; } int horse_ride(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); #ifdef ENABLE_MOUNT_COSTUME_SYSTEM if (ch->IsRidingMount()) return 0; if (ch->GetMapIndex() == 113 || CArenaManager::instance().IsArenaMap(ch->GetMapIndex()) == true) return 0; #endif ch->StartRiding(); return 0; } int horse_unride(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); ch->StopRiding(); return 0; } int horse_summon(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); #ifdef ENABLE_MOUNT_COSTUME_SYSTEM if (ch->IsRidingMount()) return 0; if (ch->GetMapIndex() == 113 || CArenaManager::instance().IsArenaMap(ch->GetMapIndex()) == true) return 0; #endif // 소환하면 멀리서부터 달려오는지 여부 bool bFromFar = lua_isboolean(L, 1) ? lua_toboolean(L, 1) : false; // 소환수의 vnum DWORD horseVnum= lua_isnumber(L, 2) ? lua_tonumber(L, 2) : 0; const char* name = lua_isstring(L, 3) ? lua_tostring(L, 3) : 0; ch->HorseSummon(true, bFromFar, horseVnum, name); return 0; } int horse_unsummon(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); ch->HorseSummon(false); return 0; } int horse_is_mine(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); LPCHARACTER horse = CQuestManager::instance().GetCurrentNPCCharacterPtr(); lua_pushboolean(L, horse && horse->GetRider() == ch); return 1; } int horse_set_level(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (!lua_isnumber(L, 1)) return 0; int newlevel = MINMAX(0, (int)lua_tonumber(L, 1), HORSE_MAX_LEVEL); ch->SetHorseLevel(newlevel); ch->ComputePoints(); ch->SkillLevelPacket(); return 0; } int horse_get_level(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushnumber(L, ch->GetHorseLevel()); return 1; } int horse_advance(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch->GetHorseLevel() >= HORSE_MAX_LEVEL) return 0; ch->SetHorseLevel(ch->GetHorseLevel() + 1); ch->ComputePoints(); ch->SkillLevelPacket(); return 0; } int horse_get_health(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch->GetHorseLevel()) lua_pushnumber(L, ch->GetHorseHealth()); else lua_pushnumber(L, 0); return 1; } int horse_get_health_pct(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); int pct = MINMAX(0, ch->GetHorseHealth() * 100 / ch->GetHorseMaxHealth(), 100); sys_log(1, "horse.get_health_pct %d", pct); if (ch->GetHorseLevel()) lua_pushnumber(L, pct); else lua_pushnumber(L, 0); return 1; } int horse_get_stamina(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch->GetHorseLevel()) lua_pushnumber(L, ch->GetHorseStamina()); else lua_pushnumber(L, 0); return 1; } int horse_get_stamina_pct(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); int pct = MINMAX(0, ch->GetHorseStamina() * 100 / ch->GetHorseMaxStamina(), 100); sys_log(1, "horse.get_stamina_pct %d", pct); if (ch->GetHorseLevel()) lua_pushnumber(L, pct); else lua_pushnumber(L, 0); return 1; } int horse_get_grade(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushnumber(L, ch->GetHorseGrade()); return 1; } int horse_is_dead(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushboolean(L, ch->GetHorseHealth()<=0); return 1; } int horse_revive(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch->GetHorseLevel() > 0 && ch->GetHorseHealth() <= 0) { ch->ReviveHorse(); } return 0; } int horse_feed(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); //DWORD dwHorseFood = ch->GetHorseLevel() + ITEM_HORSE_FOOD_1 - 1; if (ch->GetHorseLevel() > 0 && ch->GetHorseHealth() > 0) { ch->FeedHorse(); } return 0; } int horse_set_name(lua_State* L) { // 리턴값 // 0 : 소유한 말이 없다 // 1 : 잘못된 이름이다 // 2 : 이름 바꾸기 성공 if ( lua_isstring(L, -1) != true ) return 0; LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if ( ch->GetHorseLevel() > 0 ) { const char* pHorseName = lua_tostring(L, -1); if ( pHorseName == NULL || check_name(pHorseName) == 0 ) { lua_pushnumber(L, 1); } else { int nHorseNameDuration = 60*60*24*30; ch->SetQuestFlag("horse_name.valid_till", get_global_time() + nHorseNameDuration); ch->AddAffect(AFFECT_HORSE_NAME, 0, 0, 0, PASSES_PER_SEC(nHorseNameDuration), 0, true); CHorseNameManager::instance().UpdateHorseName(ch->GetPlayerID(), lua_tostring(L, -1), true); ch->HorseSummon(false, true); ch->HorseSummon(true, true); lua_pushnumber(L, 2); } } else { lua_pushnumber(L, 0); } return 1; } int horse_get_name(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if ( ch != NULL ) { const char* pHorseName = CHorseNameManager::instance().GetHorseName(ch->GetPlayerID()); if ( pHorseName != NULL ) { lua_pushstring(L, pHorseName); return 1; } } lua_pushstring(L, ""); return 1; } void RegisterHorseFunctionTable() { luaL_reg horse_functions[] = { { "is_mine", horse_is_mine }, { "is_riding", horse_is_riding }, { "is_summon", horse_is_summon }, { "ride", horse_ride }, { "unride", horse_unride }, { "summon", horse_summon }, { "unsummon", horse_unsummon }, { "advance", horse_advance }, { "get_level", horse_get_level }, { "set_level", horse_set_level }, { "get_health", horse_get_health }, { "get_health_pct", horse_get_health_pct }, { "get_stamina", horse_get_stamina }, { "get_stamina_pct",horse_get_stamina_pct }, { "get_grade", horse_get_grade }, { "is_dead", horse_is_dead }, { "revive", horse_revive }, { "feed", horse_feed }, { "set_name", horse_set_name }, { "get_name", horse_get_name }, { NULL, NULL } }; CQuestManager::instance().AddLuaFunctionTable("horse", horse_functions); } }
  4. "Also, where is the file in which i can change the path of the amseup_01.sub? I want to change it's location." That was funny... if you want to change the path of the skill you have to change the whole skill, no you dont want to do that "it seems like i don't have the 6th skill design for either close combat or archery. neither the 6th skills for warrior. if you have the files, can you help me with them? please! thank you." lazy boy... its like 4 values x 3 files... veeery lazy you are [Hidden Content]
  5. tab_button_large_01.sub title subImage version 1.0 image "Windows.dds" left 227 top 116 right 305 bottom 135 tab_button_large_02.sub title subImage version 1.0 image "Windows.dds" left 305 top 116 right 383 bottom 135 tab_button_large_03.sub title subImage version 1.0 image "Windows.dds" left 383 top 116 right 461 bottom 135 Buttons Should be in any Windows.dds be the same
  6. in " etc / ymir_work / ui / skill / assassin " you find the amseup_01 - 03 sub. Look at that one and Compare it to your skillassassin.dds in your "etc / ymir_work / ui" folder
  7. search for sound pc CLASS general attack and open the .mse Client\pack\sound\sound\common\swing
  8. Where i can change this ?
  9. allready fixxed dont worry
  10. hmmm thats kinda weird, contact me on dc, maybe we find a solution ToXiC4k#9214
  11. is it happening all the Time? when your loading it and safe it emidiatly? @displayjokes
  12. Still not working, Dude, "And Why is it not working?" maybe our Magical Glass-Bowl will tell us, /usr/local/etc/rc.d/mysql-server stop mysqld_safe --skip-grant-tables mysql -u root use mysql; "Check all the Tables if they arent corrupted cause sometimes you cant change anything cause your tables havent got the right data / Are corrupted / Will not work properly" CHECK TABLE table_name; REPAIR TABLE table_name; also use the command mysql_upgrade / mysqlcheck In that case that you cant change the passwort you should have postet the Syserr wich is showed you after you inserted the commands above lul
  13. His right arm is more muscular. I guess from studying too much ?
  14. ill do the same as in the other Board, "ask Plechito about it open the effect in the effect editor then you know the rest" If you know how to work the the WE you shouldnt get any problems
  15. For horse (mount) rotation speed: Find InstanceBase.cpp in your client source Search for: "c_fDefaultHorseRotationSpeed" and edit value from " 300.0f " . For default rotation speed: Find InstanceBase.cpp in your client source Search for: "c_fDefaultRotationSpeed" and edit value from " 1200.0f " .
  16. muyeong_loop muyeong is the skill you are searching search for it in the playersettingsmodule and affect is it only on that level or also on others?
  17. "This means the previous 256x256 shadowmap.dds files will be useless. (this will require an internal conversion or to regenerate them) The generated result looks like this: " Yes it does make a difference it would help me alot if there is a way to config it the same way as with the "height configuration" with the slider for like setting a max value, if it is to much i can understand that, its only my opinion. "This means the previous 256x256 shadowmap.dds files will be useless." Whoever in the Year 2021 uses 256x256 textures... c_c i have written a batchscript wich let me replace all Textures to the resolutions i need, also i could use the same technique as for my Skill upscaling cause The Client can load 4k Textures with no Problem thats for example shadowmap.dds 4096x4096 i know that i asked a guy to help me alot of in the Past before and yes he testet it out 3 Years ago ive tested it also the Ram Usage / Vram Usage on Newer or Old Graficscards "because i have both in my Setup" and i loaded a 11x11 Map and No it doesnt make a big difference cause it only loads the current 9 Cells "the 1 active and the 8 around it" i would normaly work with the World Edit Source and test it myself out cause i still dont know why you work alone on it but well.
  18. ShadowRenderHelper.h // Size BYTE m_byShadowMapPower; const BYTE m_byMaxShadowMapPower; const BYTE m_byMinShadowMapPower; DWORD m_dwShadowMapSize; is it Possible to increase those values for exporting bigger Shadowmaps for example 1024x1024 idk if these are the correct Values, i like the work you do but there are still some things to solve, for example the saving of the msf data dont work, or while rendering the shadows with F6 it sometimes skips Cells if the map is bigger than 3x3 means you have to split the Map. The Watermarker is dissapearing while editing sometimes for whatever reason. The Worldeditor sometimes crashes just random "i guess thats because of the 32bit compile" i guess before an update to 64bit its not really fixable
  19. in 3dsmax you can animate objects by putting TimeStamps into the animation, its easier to view some Tutorials for it, in Short. you use The first position of your object in 3dsmax, And move the Timecurser around a bit, move the Object how you like and set the next Time stamp. thats it. with the Tool from Ricky92 you can import / export those mde"s i would recommend you to just watch how other MDE"s work and just rework those
  20. ive Build new Skilllevel into my Client At level 20 [Hidden Content] At Level 50 [Hidden Content] Sometimes i dont get a Buff at the Buff Skills and other Times it just give me Wrong Values ive edited the Skill_Power table in the locale.common in the same way as the locale.h in the Client what else do i have to do that it will be working? also i have in Total 80 level how do i set all Icons ontop each other / The slots like the Slot from Grandmaster -> Perfect Discord ToXiC4k#9214
  21. Just make sure whole the files inside locale\xx\ui\windows is like the official client:
  22. Im not sure if I understand well, but I think you want something like: find_npc_by_vnum(npc_vnum) This is usually used for target, but maybe it could work for what you're trying to do
×
×
  • 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.