-
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
-
At first, you don't have to pay anyone for vanilla source files. She already posted the source files on the forum and I'm pretty sure someone still got the files. She did many things for this forum, but they didn't understand her value. At least, she was the best girl developer on this forum. I wish that anybody open the topic like that after this post. Thank you Vanilla for everything. At least someone understands your value. https://mega.nz/#!cENiVSDZ!6ejHG_MMVMIOg63p8B1sPRwyCMTCB1QmP1TMnFOcVT0
-
He's a f**k nigga, not a real player
-
Windows XP is the best one for those jobs all the time.
-
B**ch better have my money
-
Python - Link Quality | Day | Month | Year | FPS
Ken replied to llReonas's topic in Programming & Scripts
-
At first, My answer will be OVH. (I'm not customer of OVH but I like their features) About OVH Gameforge's test server, Webzen & YMIR Games' developer server are using OVH too. Kind Regards ~ Ken
-
At first, Webzen & YMIR Games won't do anything about this anymore. At least, the source files already published on the internet and they can't do anything after this accident. I talked to one of them about this. They played the private servers a long time ago, but they didn't like and back to official servers. They just want to protect creator of this game. That's all. As I've heard from my friend, TEC Interactive did something about this a long time ago. For now, everyone is free to open a private server and earn money. Feel to free about this. Kind Regards Ken
-
Yellow mother f**king claw! (Just close your eyes and listen to the music)
-
ACMD(do_unmount) { LPITEM pItem = ch->GetWear(WEAR_UNIQUE1); LPITEM pItem2 = ch->GetWear(WEAR_UNIQUE2); if (pItem && pItem->IsRideItem()) ch->UnequipItem(pItem) else if (pItem2 && pItem2->IsRideItem()) ch->UnequipItem(pItem2); if (ch->UnequipSpecialRideUniqueItem()) { ch->RemoveAffect(AFFECT_MOUNT); ch->RemoveAffect(AFFECT_MOUNT_BONUS); if (ch->IsHorseRiding()) ch->StopRiding(); } else ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("Àκ¥Å丮°¡ ²Ë Â÷¼ ³»¸± ¼ö ¾ø½À´Ï´Ù.")); } ///////////////////////////////////////////////////////////////////////////////////////////////// LPITEM pItem = ch->GetWear(WEAR_UNIQUE1); LPITEM pItem2 = ch->GetWear(WEAR_UNIQUE2); if (pItem && pItem->IsRideItem()) UnequipItem(pItem) else if (pItem2 && pItem2->IsRideItem()) UnequipItem(pItem2); Much better and thank you for share this fix with us. Kind Regards ~ Ken
-
if (ITEM_BELT == item->GetType()) ERROR_MSG(CBeltInventoryHelper::IsExistItemInBeltInventory(this), "Error text"); if (item->GetType() == ITEM_BELT && CBeltInventoryHelper::IsExistItemInBeltInventory(this)) ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이는에러 메시지 이다")); At first, ERROR_MSG define is useless here for me. This condition will be helpful for everyone. Kind Regards ~ Ken
-
COSTUME_WEAPON added in the source files for Item Proto. I didn't analyze the newest binary file yet because I'm on holiday. Thanks for your patient. Have a nice day.
-
Watch me whip and nae nae
-
歌詞付き 高音質
-
Let's rest a bit..
-
At first, I'm having some problems with my internet connection. That means, my grandmother can walk fast than my internet connection right now. I can't login my skype address or metin2dev since two days. Let me clarity about one thing again. I talked to my internet provider five times and they're saying same things about this. We'll fix it, we'll fix it. At least i'm going to talk them about this. If they're saying same things about this, i'm going to refuse the agreement and find a new internet provider for myself. Thanks for your patient again. Kind Regards ~ Ken
-
Close your eyes and listen to the music
-
Inventory Bug with 6 Pages when sell item
Ken replied to Dennis's topic in Community Support - Questions & Answers
bool CPythonNetworkStream::SendShopSellPacketNew(WORD bySlot, BYTE byCount) { if (!__CanActMainInstance()) return true; TPacketCGShop PacketShop; PacketShop.header = HEADER_CG_SHOP; PacketShop.subheader = SHOP_SUBHEADER_CG_SELL2; if (!Send(sizeof(TPacketCGShop), &PacketShop)) { Tracef("SendShopSellPacket Error\n"); return false; } if (!Send(sizeof(WORD), &bySlot)) { Tracef("SendShopAddSellPacket Error\n"); return false; } if (!Send(sizeof(BYTE), &byCount)) { Tracef("SendShopAddSellPacket Error\n"); return false; } Tracef(" SendShopSellPacketNew(bySlot=%d, byCount=%d)\n", bySlot, byCount); return SendSequence(); } int CInputMain::Shop(LPCHARACTER ch, const char * data, size_t uiBytes) { TPacketCGShop * p = (TPacketCGShop *) data; if (uiBytes < sizeof(TPacketCGShop)) return -1; if (test_server) sys_log(0, "CInputMain::Shop() ==> SubHeader %d", p->subheader); const char * c_pData = data + sizeof(TPacketCGShop); uiBytes -= sizeof(TPacketCGShop); switch (p->subheader) { case SHOP_SUBHEADER_CG_END: sys_log(1, "INPUT: %s SHOP: END", ch->GetName()); CShopManager::instance().StopShopping(ch); return 0; case SHOP_SUBHEADER_CG_BUY: { if (uiBytes < sizeof(WORD) + sizeof(BYTE)) return -1; WORD bPos = *(c_pData + 1); sys_log(1, "INPUT: %s SHOP: BUY %u", ch->GetName(), bPos); CShopManager::instance().Buy(ch, bPos); return (sizeof(WORD) + sizeof(BYTE)); } case SHOP_SUBHEADER_CG_SELL: { if (uiBytes < sizeof(WORD)) { #ifdef __DEBUG__ ch->ChatPacket(CHAT_TYPE_INFO, "Return -1"); #endif return -1; } WORD pos = *c_pData; sys_log(0, "INPUT: %s SHOP: SELL", ch->GetName()); CShopManager::instance().Sell(ch, pos); #ifdef __DEBUG__ ch->ChatPacket(CHAT_TYPE_INFO, "return pos: %u", pos); ch->ChatPacket(CHAT_TYPE_INFO, "return sizeof(WORD)"); #endif return sizeof(WORD); } case SHOP_SUBHEADER_CG_SELL2: { if (uiBytes < sizeof(WORD)+sizeof(BYTE)) { #ifdef __DEBUG__ ch->ChatPacket(CHAT_TYPE_INFO, "return -1"); #endif return -1; } WORD pos = *(c_pData++); BYTE count = *(c_pData); sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName()); CShopManager::instance().Sell(ch, pos, count); #ifdef __DEBUG__ ch->ChatPacket(CHAT_TYPE_INFO, "return pos: %u, count: %d", pos, count); ch->ChatPacket(CHAT_TYPE_INFO, "return sizeof(BYTE) + sizeof(BYTE)"); #endif return sizeof(WORD)+sizeof(BYTE); } default: sys_err("CInputMain::Shop : Unknown subheader %d : %s", p->subheader, ch->GetName()); break; } return 0; } Kind Regards ~ Ken -
#Updated You can convert beta server's item_proto with this proto reader. #NextFeatures Next version, you can convert beta server's mob_proto with the proto reader. Next version, you can use XML and SQL option for proto reader. You can convert item_proto/mob_proto to item_proto.sql/mob_proto.sql You can convert item_proto/mob_proto to item_proto.xml/mob_proto.xml Kind Regards ~ Ken