- 0
-
Activity
-
45
official Official Pickup Slot Effect [REVERSED]
#Update: Reversed from 22.2.7.0 Official Binary -
0
damage from int to long long
hi, trying to port the damage system from int to long long but after all its not working. the damage shows correctly ingame but gets not applied as damage. things i already changes: battle_hit battle_melee_attack GetMobAttackRange (it has damage base) CalcBattleDamage CalcMagicDamageWithValue CalcMagicDamage iERSrc iARSrc attacker_dx victim_dx CalcAttBonus iReduceDamagePct point bonuses increased by iatk Item_GetDamage pdamMin pdamMax CalcMeleeDamage iDam iAtk iDamMin iDamMax iPureAtk iPureDam iDist iGap iPercent fAR iDef battle_hit CalcArrowDamage BlueDragon_Damage blue dragon idam stuff iPower ProfileDamage Damage UpdateAggrPointEx ChangeVictimByAggro GetSkillPower SendDamagePacket iRet total_dam dam reflectDamage iCriticalPct iPenetratePct pct iCurHP iDamageToSP iDamageSPPart add_dam iMostDam FuncSplashDamage packet_damage_info and min max utilities in libthecore Problem: Dmg shows correctly ingame, but the damage didnt went through, so i deal 0 damage for the server. Anyone has an Idea what i'm missing? -
22
Green & Purple Potions Effect
Someone linked me this old topic, and I figured out I never noticed those sounds played twice. This is my fix: (PythonNetworkStreamPhaseGameItem.cpp) There's no need to play those sounds. Alternatively (based on penger's but via apply check): (but it's not of my taste) (PythonItem.cpp) case CItemData::USE_ABILITY_UP: if (c_rkItemData.GetValue(0) == CItemData::APPLY_MOV_SPEED || c_rkItemData.GetValue(0) == CItemData::APPLY_ATT_SPEED) return USESOUND_NONE; return USESOUND_POTION; -
12
-
12
When Uninstalling Gaya System
You must delete from player.MYD navicat in player.player player.player and check and account.account -
12
When Uninstalling Gaya System
#ifndef __INC_METIN2_COMMON_DEFINES_H__ #define __INC_METIN2_COMMON_DEFINES_H__ enum eCommonDefines { MAP_ALLOW_LIMIT = 64, // 32 default }; #define ENABLE_PLAYER_PER_ACCOUNT5 #define ENABLE_PORT_SECURITY #define __WJ_SHOW_MOB_INFO__ #define __SEND_TARGET_INFO__ #define __SPECIAL_STORAGE__ #define __7AND8TH_SKILLS__ #define __TITLE_SYSTEM__ #define __TIMER_ELIXIR__ #define __SASH_SYSTEM__ #define __MULTI_SHOP__ #define __CHANGE_SEX_WR__ #define __REFINE_SYSTEM__ #define __CHANGELOOK_SYSTEM__ #define __CHANGELOOK_EXTEND__ #define __EXTENDED_ITEM_NAME__ #define __EXPANDED_BOOK_NAME__ #define __WEAPON_COSTUME_SYSTEM__ #define __COSTUME_ATTR_SYSTEM__ #define __COSTUME_RING_SYSTEM__ #define __SEQUENCE_SYSTEM__ #define __SHOW_CHEST_DROP__ #define __ATTENDANCE_EVENT__ #define __ENABLE_BATTLE_FIELD__ #define __VIEW_TARGET_PLAYER_HP__ #define __VIEW_TARGET_DECIMAL_HP__ #ifndef ENABLE_ANNOUNCEMENT_REFINE_SUCCES #define ENABLE_ANNOUNCEMENT_REFINE_SUCCES #define ENABLE_ANNOUNCEMENT_REFINE_SUCCES_MIN_LEVEL 9 #endif #define ENABLE_NEW_QUICK_SLOT_SYSTEM #define WJ_ENABLE_PICKUP_ITEM_EFFECT #define WJ_ENABLE_TRADABLE_ICON #define ENABLE_CHANGE_CHANNEL #define ENABLE_ANTIEXP_RENEWAL #define ENABLE_SORT_INVENTORY #define ENABLE_CUBE_RENEWAL #define ENABLE_DICE_SYSTEM #define ENABLE_GLOBAL_CHAT #define ENABLE_FISH_EVENT #define ENABLE_NEWSTUFF #define ENABLE_PET_SLOT #define NEW_PET_SYSTEM #define NEW_PET_SUMMON #define ENABLE_MOUNT_COSTUME_SYSTEM #define ENABLE_SUPPORT_SYSTEM #define ENABLE_AGGREGATE_MONSTER_EFFECT #define ENABLE_FAST_SKILL_CHOOSE /* SYSTEME PENTRU ADMINISTRARE*/ #define __WHISPER_ADMIN__ #define __ADMIN_MANAGER__ /* OFFLINE SHOPS */ #define OFFLINE_SHOP // Offline shops system #define GIFT_SYSTEM // gift system enable #define FULL_YANG // Enable support for yang type long long #define SHOP_TIME_REFRESH 1*60 // time for cycle checking older shops #define SHOP_BLOCK_GAME99 //Blocking create shops on channel 99 //#define SHOP_DISTANCE // Show shops in pos distance like WoM2 #define SHOP_AUTO_CLOSE //Enable auto closing shop after sell last item //#define SHOP_ONLY_ALLOWED_INDEX //Enable limiting for other map index which is not defined in player.shop_limit //#define SHOP_HIDE_NAME // Enable hidding shop npc names like "Player's shop" #define SHOP_GM_PRIVILEGES GM_IMPLEMENTOR //Minimum GM privileges to using Shop GM Panel #define ENABLE_OFFLINE_SHOP_HIDE #define SHOP_SEARCH #define SHOP_SEARCH_PRICE_MIN //Price in gui is a minimum eq. price >= item_price if is commented price in gui is a maximum /* END OFFLINE SHOPS */ /* SYSTEME TEMNITE */ #define __VERSION_162__ #ifdef __VERSION_162__ #define HEALING_SKILL_VNUM 265 #endif #define __DUNGEON_FOR_GUILD__ #ifdef __DUNGEON_FOR_GUILD__ #define __MELEY_LAIR_DUNGEON__ #ifdef __MELEY_LAIR_DUNGEON__ #define __DESTROY_INFINITE_STATUES_GM__ #define __LASER_EFFECT_ON_75HP__ #define __LASER_EFFECT_ON_50HP__ #endif #endif /* END SYSTEME TEMNITE */ // #define ENABLE_GEM_SYSTEM // #define __SKILLS_LEVEL_OVER_P__ // #define WJ_GUILD_LEADER_SYSTEM #endif It's already deactivated. I've enclosed all gems that don't have #if def in #if def. There were 95 gayas in one account, I'll try to delete it and deactivate it again. -
12
When Uninstalling Gaya System
Open notepad++ search for gaya and that it is not in #ifdef can removed Also see the player.MYD if you have gaya and delete for 100% solve @LethalStrikeR Download gaya system and check up and removed -
12
When Uninstalling Gaya System
Unfortunately it still gave the same error. SYSERR: Jan 29 21:03:31 :: DirectQuery: AsyncSQL::DirectQuery : mysql_query error: Column count doesn't match value count at row 1 query: INSERT INTO player (id, account_id, name, level, st, ht, dx, iq, job, voice, dir, x, y, z, hp, mp, random_hp, random_sp, stat_point, stamina, part_base, part_main, part_hair, part_sash, gold, battle_points, playtime, skill_level, fish_slots, quickslot) VALUES(0, 1, '12312323', 1, 6, 4, 3, 3, 0, 0, 0, 957317, 255360, 0, 760, 260, 0, 0, 0, 800, 0, 0, 0, 0, 0, 0, 0, 0, 681656320, 0, '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 SYSERR: Jan 29 21:03:31 :: __QUERY_PLAYER_CREATE: QUERY_ERROR: UPDATE player_index SET pid4=0 WHERE id=1 -
12
When Uninstalling Gaya System
void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerCreatePacket* packet) { char queryStr[QUERY_MAX_LEN]; int queryLen; int player_id; // ? ??? X? ?? ??? ??? ? ? ??. time_by_id_map_t::iterator it = s_createTimeByAccountID.find(packet->account_id); if (it != s_createTimeByAccountID.end()) { time_t curtime = time(0); if (curtime - it->second < 30) { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_FAILED, dwHandle, 0); return; } } queryLen = snprintf(queryStr, sizeof(queryStr), "SELECT pid%u FROM player_index%s WHERE id=%d", packet->account_index + 1, GetTablePostfix(), packet->account_id); std::unique_ptr<SQLMsg> pMsg0(CDBManager::instance().DirectQuery(queryStr)); if (pMsg0->Get()->uiNumRows != 0) { if (!pMsg0->Get()->pSQLResult) { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_FAILED, dwHandle, 0); return; } MYSQL_ROW row = mysql_fetch_row(pMsg0->Get()->pSQLResult); DWORD dwPID = 0; str_to_number(dwPID, row[0]); if (row[0] && dwPID > 0) { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_ALREADY, dwHandle, 0); sys_log(0, "ALREADY EXIST AccountChrIdx %d ID %d", packet->account_index, dwPID); return; } } else { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_FAILED, dwHandle, 0); return; } if (g_stLocale == "sjis") snprintf(queryStr, sizeof(queryStr), "SELECT COUNT(*) as count FROM player%s WHERE name='%s' collate sjis_japanese_ci", GetTablePostfix(), packet->player_table.name); else snprintf(queryStr, sizeof(queryStr), "SELECT COUNT(*) as count FROM player%s WHERE name='%s'", GetTablePostfix(), packet->player_table.name); std::unique_ptr<SQLMsg> pMsg1(CDBManager::instance().DirectQuery(queryStr)); if (pMsg1->Get()->uiNumRows) { if (!pMsg1->Get()->pSQLResult) { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_FAILED, dwHandle, 0); return; } MYSQL_ROW row = mysql_fetch_row(pMsg1->Get()->pSQLResult); if (*row[0] != '0') { sys_log(0, "ALREADY EXIST name %s, row[0] %s query %s", packet->player_table.name, row[0], queryStr); peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_ALREADY, dwHandle, 0); return; } } else { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_FAILED, dwHandle, 0); return; } queryLen = snprintf(queryStr, sizeof(queryStr), "INSERT INTO player%s " "(id, account_id, name, level, st, ht, dx, iq, " "job, voice, dir, x, y, z, " "hp, mp, random_hp, random_sp, stat_point, stamina, part_base, " "part_main, part_hair, part_sash, gold, " #ifdef __ENABLE_BATTLE_FIELD__ "battle_points, " #endif "playtime, skill_level, " #ifdef ENABLE_FISH_EVENT "fish_slots, " #endif "quickslot) " "VALUES(0, %u, '%s', %d, %d, %d, %d, %d, " // id, account_id, name, level, st, ht, dx, iq, "%d, %d, %d, %d, %d, %d, " // job, voice, dir, x, y, z, "%d, %d, %d, %d, %d, %d, %d, " // hp, mp, random_hp, random_sp, stat_point, stamina, part_base, "0, 0, 0, %lld, " // part_main, part_hair, part_sash, gold, #ifdef __ENABLE_BATTLE_FIELD__ "%d, " #endif "0, " "%d, " #ifdef ENABLE_FISH_EVENT "%d, " #endif "0, ", GetTablePostfix(), packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.st, packet->player_table.ht, packet->player_table.dx, packet->player_table.iq, packet->player_table.job, packet->player_table.voice, packet->player_table.dir, packet->player_table.x, packet->player_table.y, packet->player_table.z, packet->player_table.hp, packet->player_table.sp, packet->player_table.sRandomHP, packet->player_table.sRandomSP, packet->player_table.stat_point, packet->player_table.stamina, packet->player_table.part_base, packet->player_table.part_base, packet->player_table.gold #ifdef __ENABLE_BATTLE_FIELD__ ,packet->player_table.battlePoint #endif ); sys_log(0, "PlayerCreate accountid %d name %s level %d gold %lld, st %d ht %d job %d", packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.gold, packet->player_table.st, packet->player_table.ht, packet->player_table.job); static char text[4096 + 1]; CDBManager::instance().EscapeString(text, packet->player_table.skills, sizeof(packet->player_table.skills)); queryLen += snprintf(queryStr + queryLen, sizeof(queryStr) - queryLen, "'%s', ", text); if (g_test_server) sys_log(0, "Create_Player queryLen[%d] TEXT[%s]", queryLen, text); CDBManager::instance().EscapeString(text, packet->player_table.quickslot, sizeof(packet->player_table.quickslot)); queryLen += snprintf(queryStr + queryLen, sizeof(queryStr) - queryLen, "'%s')", text); std::unique_ptr<SQLMsg> pMsg2(CDBManager::instance().DirectQuery(queryStr)); if (g_test_server) sys_log(0, "Create_Player queryLen[%d] TEXT[%s]", queryLen, text); if (pMsg2->Get()->uiAffectedRows <= 0) { peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_ALREADY, dwHandle, 0); sys_log(0, "ALREADY EXIST3 query: %s AffectedRows %lu", queryStr, pMsg2->Get()->uiAffectedRows); return; } player_id = pMsg2->Get()->uiInsertID; snprintf(queryStr, sizeof(queryStr), "UPDATE player_index%s SET pid%d=%d WHERE id=%d", GetTablePostfix(), packet->account_index + 1, player_id, packet->account_id); std::unique_ptr<SQLMsg> pMsg3(CDBManager::instance().DirectQuery(queryStr)); if (pMsg3->Get()->uiAffectedRows <= 0) { sys_err("QUERY_ERROR: %s", queryStr); snprintf(queryStr, sizeof(queryStr), "DELETE FROM player%s WHERE id=%d", GetTablePostfix(), player_id); CDBManager::instance().DirectQuery(queryStr); peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_FAILED, dwHandle, 0); return; } TPacketDGCreateSuccess pack; memset(&pack, 0, sizeof(pack)); pack.bAccountCharacterIndex = packet->account_index; pack.player.dwID = player_id; strlcpy(pack.player.szName, packet->player_table.name, sizeof(pack.player.szName)); pack.player.byJob = packet->player_table.job; pack.player.byLevel = 1; pack.player.dwPlayMinutes = 0; pack.player.byST = packet->player_table.st; pack.player.byHT = packet->player_table.ht; pack.player.byDX = packet->player_table.dx; pack.player.byIQ = packet->player_table.iq; pack.player.wMainPart = packet->player_table.part_base; pack.player.x = packet->player_table.x; pack.player.y = packet->player_table.y; peer->EncodeHeader(HEADER_DG_PLAYER_CREATE_SUCCESS, dwHandle, sizeof(TPacketDGCreateSuccess)); peer->Encode(&pack, sizeof(TPacketDGCreateSuccess)); sys_log(0, "7 name %s job %d", pack.player.szName, pack.player.byJob); s_createTimeByAccountID[packet->account_id] = time(0); } solver @LethalStrikeR
-
-
Recently Browsing
- No registered users viewing this page.
Question
undercover44 0
Hello,
Where i can find an serverfile clasic 34/28k and an client compatible?
Can help me?
PS:Sorry for my bad english
Link to comment
Share on other sites
Top Posters For This Question
2
2
Popular Days
Dec 21
4
Top Posters For This Question
Reboot 2 posts
undercover44 2 posts
Popular Days
Dec 21 2014
4 posts
Popular Posts
Reboot
I got my old serverfiles 34k classic, just as it was metin 2011 without costumes, pet.
3 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now