-
Posts
726 -
Joined
-
Last visited
-
Days Won
44 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Everything posted by Ken
-
Can you sell your dragon stones in npc-shop? That root is containing your wolf modifications? I did not know. Only leaked files. I think many people like to use my root file. What ever congrulations again. Kind Regards Ken
-
You can say something is from ellie about your root file. What ever thanks for share us. Kind Regards Ken
-
Hell yea my brother Kind Regards Ken ~ TA
-
Run binary as debug mode. You will see your fault my brother. Kind Regards Ken ~ TA
-
[Search]Metin2 Official Trailer Template
Ken replied to Galet's topic in Community Support - Questions & Answers
Good customer. you can trust him Kind Regards Ken ~ TA -
You can see them as a stupid or something but i am pretty sure they are really good about this job. At first learn respect! Kind Regards Ken ~ TA
-
Help new function for spawn a mob in a map
Ken replied to Krixius's topic in Community Support - Questions & Answers
If you want to this mob as aggressive (when it's spawn, mob is attack to player) if you want to this mob as aggressive ; true if you don't want to this mob as aggressive ; false Kind Regards Ken ~ TA -
Help new function for spawn a mob in a map
Ken replied to Krixius's topic in Community Support - Questions & Answers
int _spawn_mob_in_map(lua_State * L) { if (!lua_isnumber(L, 1) || !lua_isnumber(L, 2) || !lua_isnumber(L, 3) || !lua_isnumber(L,4) || !lua_isnumber(L,5) || !lua_isboolean(L,6)) { sys_err("Missing argument!"); return 1; } long lMapIndex = static_cast<long>(lua_tonumber(L, 1)); DWORD dwMobVnum = static_cast<DWORD>(lua_tonumber(L, 2)); long x = static_cast<long>(lua_tonumber(L, 3)); long y = static_cast<long>(lua_tonumber(L, 4)); BYTE bSpawnCount = static_cast<BYTE>(lua_tonumber(L, 5)); bool isAggressive = lua_toboolean(L, 6); const CMob * pMonster = CMobManager::instance().Get(dwMobVnum); if (pMonster) { for (BYTE i = 0; i < bSpawnCount; ++i) { LPCHARACTER pSpawnMonster = CHARACTER_MANAGER::instance().SpawnMobRange( lMapIndex, x - number(200, 750), y - number(200, 750), x + number(200, 750), y + number(200, 750), true, pMonster->m_table.bType == CHAR_TYPE_STONE, isAggressive); if (pSpawnMonster) ++bSpawnCount; } sys_log(0, "QUEST Spawn Monster: VNUM(%u) COUNT(%d) isAggressive(%d)", dwMobVnum, bSpawnCount, isAggressive); } lua_pushnumber(L, 0); return 1; } How to use it ; spawn_mob_in_map(mapIndex,mobVnum,coordinateX,coordinateY,spawnCount,isAggressive); Kind Regards Ken ~ TA -
Official mount system - summon_item
Ken replied to .plechito''s topic in Community Support - Questions & Answers
pc.get_sig_items(vnum) System will check this in special_item_group.txt. So i mean this table Group 탈것교환권 { Vnum 10032 Type Quest 1 52701 1 1 2 52702 1 1 3 52703 1 1 4 52704 1 1 5 52705 1 1 6 52706 1 1 } If you wanna create new one you can do like that ; Group MyBrother { Vnum 10033 Type Quest 1 52707 1 1 2 52708 1 1 3 52709 1 1 4 52710 1 1 5 52711 1 1 6 52712 1 1 } local items = {pc.get_sig_items(10032)} Result : local items = {52701,52702,52703,52704,52705,52706} 52701 "전갑사자 교환권" "ITEM_QUEST" 0 1 "ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP" "NONE" "NONE" "NONE" 0 0 0 0 0 "LIMIT_NONE" 0 "LIMIT_NONE" 0 "APPLY_NONE" 0 "APPLY_NONE" 0 "APPLY_NONE" 0 52031 52032 52033 52034 52035 0 0 0 0 If you wanna change give item, you can edit 52031,52032,52033,52034,52035 Kind Regards Ken ~ TA -
[OFFİCİAL]NEW PETS MOB PROTO
Ken replied to ThePooter's topic in Community Support - Questions & Answers
Why people is not know actual section? #moverequest Kind Regards Ken ~ TA -
szPointOn can't be 0 i think via this condition. Can you check it? Kind Regards Ken ~ TA
-
If your playtime is bugged, your player table is not valid via client player table. Check it Kind Regards Ken ~ TA
- 1 reply
-
- 1
-
-
int iIdx = FindPointType(t->szPointOn); if (iIdx < 0) { snprintf(buf, sizeof(buf), "SkillManager::Initialize : cannot find point type on skill: %s szPointOn: %s", t->szName, t->szPointOn); sys_err("%s", buf); SendLog(buf); bError = true; M2_DELETE(pkProto); continue; } Check conditions. Kind Regards Ken ~ TA
-
struct SPointOnType { const char * c_pszName; int iPointOn; } kPointOnTypes[] = { { "NONE", POINT_NONE }, { "MAX_HP", POINT_MAX_HP }, { "MAX_SP", POINT_MAX_SP }, { "HP_REGEN", POINT_HP_REGEN }, { "SP_REGEN", POINT_SP_REGEN }, { "BLOCK", POINT_BLOCK }, { "HP", POINT_HP }, { "SP", POINT_SP }, { "ATT_GRADE", POINT_ATT_GRADE_BONUS }, { "DEF_GRADE", POINT_DEF_GRADE_BONUS }, { "MAGIC_ATT_GRADE",POINT_MAGIC_ATT_GRADE_BONUS }, { "MAGIC_DEF_GRADE",POINT_MAGIC_DEF_GRADE_BONUS }, { "BOW_DISTANCE", POINT_BOW_DISTANCE }, { "MOV_SPEED", POINT_MOV_SPEED }, { "ATT_SPEED", POINT_ATT_SPEED }, { "POISON_PCT", POINT_POISON_PCT }, { "RESIST_RANGE", POINT_RESIST_BOW }, //{ "RESIST_MELEE", POINT_RESIST_MELEE }, { "CASTING_SPEED", POINT_CASTING_SPEED }, { "REFLECT_MELEE", POINT_REFLECT_MELEE }, { "ATT_BONUS", POINT_ATT_BONUS }, { "DEF_BONUS", POINT_DEF_BONUS }, { "RESIST_NORMAL", POINT_RESIST_NORMAL_DAMAGE }, { "DODGE", POINT_DODGE }, { "KILL_HP_RECOVER",POINT_KILL_HP_RECOVERY }, { "KILL_SP_RECOVER",POINT_KILL_SP_RECOVER }, { "HIT_HP_RECOVER", POINT_HIT_HP_RECOVERY }, { "HIT_SP_RECOVER", POINT_HIT_SP_RECOVERY }, { "CRITICAL", POINT_CRITICAL_PCT }, { "MANASHIELD", POINT_MANASHIELD }, { "SKILL_DAMAGE_BONUS", POINT_SKILL_DAMAGE_BONUS }, { "NORMAL_HIT_DAMAGE_BONUS", POINT_NORMAL_HIT_DAMAGE_BONUS }, { "n", POINT_NONE }, }; System can't find your type in this table. Check it Kind Regards Ken ~ TA
-
Need for function with source
Ken replied to antrax16's topic in Community Support - Questions & Answers
At first read some contents please. Kind Regards Ken ~ TA -
C++ npc.get_level() is possible?
Ken replied to ѕeмa™'s topic in Community Support - Questions & Answers
int npc_get_level(lua_State * L) { LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr(); lua_pushnumber(L,npc ? npc->GetLevel() : 0); return 1; } Conditions Kind Regards Ken ~ TA -
Can you tell me one thing please? How can gcc know these functions if it's not declared in char.h & char.cpp ? #first error unban & ban are not declared in char.h & char.cpp Kind Regards Ken ~ TA
-
I can't see actual functions ch-unban(name); tch->ban(reason, ch->GetPlayerID()); // GM이 아니거나 block_chat_privilege가 없는 사람은 명령어 사용 불가 I don't know what i say for this Thanks anyway. Kind Regards Ken ~ TA
-
You are removed me and you are say many thing. I can change my nickname and that's too normal. But i am so sorry for you. You are bought this from me also my customer is bought this from me but him system working perfectly what ever #edit Kind Regards Ken ~ TA
-
GCC 4.2 is not support that. As galet said. If you wanna use that, you can use it. Meanwhile new command for gcc 4.8+ ACMD(do_ban) { char szName[CHARACTER_NAME_MAX_LEN + 1]; char szReason[512]; int iDuration; one_argument(two_arguments(argument,szName,sizeof(szName),szReason,sizeof(szReason)),iDuration,sizeof(iDuration)); // Invalid syntax if (!*arg1 || !*arg2 || !*arg3) { ch->ChatPacket(CHAT_TYPE_INFO, "Invalid Syntax, usage: <player name> <time in hours> <reason> tip: don't use spaces in the reason, use _"); return; } str_to_number(iDuration,arg2); if (iDuration <= 0) { ch->ChatPacket(CHAT_TYPE_INFO, "Duration can't be 0 or minus."); return; } LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(szName); if (!tch->GetDesc()) { ch->ChatPacket(CHAT_TYPE_INFO, "%s don't have desc", szName); return; } if (tch == ch) { ch->ChatPacket(CHAT_TYPE_INFO, "What's wrong with you? Don't ban yourself"); return; } if (tch->GetGMLevel() > GM_HIGH_WIZARD) { ch->ChatPacket(CHAT_TYPE_INFO, "Do not ban GMs"); return; } std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET availDt = FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) + %d), reason = '%s' WHERE id = %u", iDuration * 3600, szReason, tch->GetDesc()->GetAccountTable().id)); if(msg.get() && msg->Get()->uiAffectedRows == 0 || msg->Get()->uiAffectedRows == (uint32_t)-1) { ch->ChatPacket(CHAT_TYPE_INFO,"do_ban failed : can not modify account table"); return; } tch->GetDesc()->DelayedDisconnect(5); sys_log(0, "%s[%u] banned %s for %d hours with reason: %s", ch->GetName(), ch->GetPlayerID(), szName, iDuration, szReason); ch->ChatPacket(CHAT_TYPE_INFO, "%s has been banned for %d hours with reason: %s", szName, iDuration, szReason); } Kind Regards Ken ~ TA
-
Sorry. Post is updated again. Kind Regards Ken ~ TA
-
ACMD(do_ban) { char szName[CHARACTER_NAME_MAX_LEN + 1]; char szReason[512]; int iDuration; one_argument(two_arguments(argument,szName,sizeof(szName),szReason,sizeof(szReason)),iDuration,sizeof(iDuration)); // Invalid syntax if (!*arg1 || !*arg2 || !*arg3) { ch->ChatPacket(CHAT_TYPE_INFO, "Invalid Syntax, usage: <player name> <time in hours> <reason> tip: don't use spaces in the reason, use _"); return; } str_to_number(iDuration,arg2); if (iDuration <= 0) { ch->ChatPacket(CHAT_TYPE_INFO, "Duration can't be 0 or minus."); return; } LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(szName); if (!tch->GetDesc()) { ch->ChatPacket(CHAT_TYPE_INFO, "%s don't have desc", szName); return; } if (tch == ch) { ch->ChatPacket(CHAT_TYPE_INFO, "What's wrong with you? Don't ban yourself"); return; } if (tch->GetGMLevel() > GM_HIGH_WIZARD) { ch->ChatPacket(CHAT_TYPE_INFO, "Do not ban GMs"); return; } std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET availDt = FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) + %d), reason = '%s' WHERE id = %u", iDuration * 3600, szReason, tch->GetDesc()->GetAccountTable().id)); if(msg.get() && msg->Get()->uiAffectedRows == 0 || msg->Get()->uiAffectedRows == (uint32_t)-1) { ch->ChatPacket(CHAT_TYPE_INFO,"do_ban failed : can not modify account table"); return; } tch->GetDesc()->DelayedDisconnect(5); sys_log(0, "%s[%u] banned %s for %d hours with reason: %s", ch->GetName(), ch->GetPlayerID(), szName, iDuration, szReason); ch->ChatPacket(CHAT_TYPE_INFO, "%s has been banned for %d hours with reason: %s", szName, iDuration, szReason); } Kind Regards Ken ~ TA