Jump to content

VegaS

Banned
  • Posts

    363
  • Joined

  • Last visited

  • Days Won

    40
  • Feedback

    0%

Everything posted by VegaS

  1. Much better now, thanks for comment dude sexy. And.. yeah code tag is *fcking shit*...
  2. I see you've already added my fix for function opening. All you have to do now is to use your brain 10% to implement and AddItem function.
  3. Why you want to make this jesus.. you want to hide your ip? RIP NETSTAT NETSTAT [options] [-p protocol] [interval] -a Display All connections and listening ports. -e Display Ethernet statistics. (may be combined with -s) -n Display addresses and port numbers in Numerical form. -r Display the Routing table. -o Display the Owning process ID associated with each connection. -b Display the exe involved in creating each connection or listening port.* -v Verbose - use in conjunction with -b, to display the sequence of components involved for all executables. -p protocol Show only connections for the protocol specified; can be any of: TCP, UDP, TCPv6 or UDPv6. If used with the -s option then the following protocols can also be specified: IP, IPv6, ICMP,or ICMPv6. -s Display per-protocol statistics. By default, statistics are shown for IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP, and UDPv6; (The v6 protocols are not available under 2k and NT4) The -p option can be used to display just a subset of these. interval Redisplay statistics, pausing interval seconds between each display. (default=once only) Press CTRL+C to stop. You can not do that because there a lot the types of programs that you can find ip which are connected in launcher. You can find ip and port's core very easy and any guy can do that. You do not need to do that. But this is a example : self.addr = addr # = IP self.port = port # = Port channel self.account_addr = account_addr # IP self.account_port = account_port # Port Auth You need to make new function loaded from client like a net.GetIp() etc. int server_ip_vegas = atoi(std::string("xxx.xxx.xxx.xxx").c_str());
  4. uiInventory.py def Clickwiki(self): self.interface.AgeofPlatonWiki() interfaceModule.py def AgeofPlatonWiki(self): if self.getClass.IsShow(): self.getClass.Hide() else: self.getClass.Show() #Search: self.bigBoard = None #Add bellow: import uiWiki self.getClass = uiWiki.AgeofPlatonWiki()
  5. I think this is best method. // Costume UPDATE `item` SET `socket0`='4233600' WHERE 41001 <= vnum && vnum <= 41135; // Hair UPDATE `item` SET `socket0`='4233600' WHERE 73001 <= vnum && vnum <= 75620; Quote: How can change from source to no remove costumes if have 0 time? Method shit ( check this ): void CItem::StartRealTimeExpireEvent() { if (m_pkRealTimeExpireEvent) return; for (int i=0 ; i < ITEM_LIMIT_MAX_NUM ; i++) { if (LIMIT_REAL_TIME == GetProto()->aLimits[i].bType || LIMIT_REAL_TIME_START_FIRST_USE == GetProto()->aLimits[i].bType) { item_vid_event_info* info = AllocEventInfo<item_vid_event_info>(); info->item_vid = GetVID(); m_pkRealTimeExpireEvent = event_create( real_time_expire_event, info, PASSES_PER_SEC(1)); sys_log(0, "REAL_TIME_EXPIRE: StartRealTimeExpireEvent"); return; } } } for (int i=0 ; i < ITEM_LIMIT_MAX_NUM ; i++) { if (LIMIT_REAL_TIME == item->GetLimitType(i)) { if (item->GetLimitValue(i)) { item->SetSocket(0, time(0) + item->GetLimitValue(i)); } else { item->SetSocket(0, time(0) + 60*60*24*7); } item->StartRealTimeExpireEvent(); }
  6. Bro, this is not for words with offense etc, insult function is loaded from source It has nothing to do with it. With this script you can add any tape you want to check text such as: - Box friendship request - Box declaring war - Box quest input - Any other box that includes a InputValue You need only change: szText = self.GetText() With this: szText = self.yourInputValue.GetText() # Obtaining the text that you wrote in the same box You can play a lot with this little code is funny.
  7. M2 Download Center Download Here ( Internal ) def Run(self): res = self.GetText() #res = self.inputValue.GetText() ## your input value try: fHandle = app.OpenTextFile("locale/en/block_words_python.txt") w = app.GetTextFileLineCount(fHandle) except IOError: dbg.LogBox("Error: Loading words !") app.Abort() for j in xrange(w): lc = app.GetTextFileLine(fHandle, j) c = str(lc).split("\t") if len(c) == 0 or not c[0]: continue elif res == c[0]: chat.AppendChat(chat.CHAT_TYPE_INFO, "[SYSTEM] Blocked words were introduced!") return locale/en/block_words_python.txt text0 text1 text2 text3 text4 text5 text6 text7 text8 text9 text10 text11 text12 text13 text14 text15
  8. if (item->GetType() == ITEM_RING) { LPITEM ring[2] = { GetWear(WEAR_RING1), GetWear(WEAR_RING2) }; for (int i = 0; i < 2; i++) { if (ring[i]) { if (ring[i]->GetVnum() == item->GetVnum()) { ChatPacket(CHAT_TYPE_INFO, "You can not equip this item twice!"); return false; } } } } Not mine.
  9. EterBase/Debug.h Maybe you have: extern void OpenLogFile(bool bUseLogFile = false); Change with: extern void OpenLogFile(bool bUseLogFile = true); EterBase/Debug.cpp void OpenLogFile(bool bUseLogFIle) { freopen("syserr.txt", "w", stderr); if (bUseLogFIle) { isLogFile = true; CLogFile::Instance().Initialize(); } } Or you have deleted all TraceError(const char* c_szFormat, ...);
  10. #request move in [Hidden Content] ui.py class Component: def TextLine(self, parent, textlineText, x, y, color): textline = TextLine() if parent != None: textline.SetParent(parent) textline.SetPosition(x, y) if color != None: textline.SetFontColor(color[0], color[1], color[2]) textline.SetText(textlineText) textline.Show() return textline def ExpandedImage(self, parent, x, y, img): image = ExpandedImageBox() if parent != None: image.SetParent(parent) image.SetPosition(x, y) image.LoadImage(img) image.Show() return image game.py self.comp2 = ui.Component()
  11. #define ENG_WARNING_0 = "Error ! Trade window is open or you already equipped this item!" #define ENG_WARNING_1 = "Fuck you already you have this bonus active!" case ENG_BONUS_VNUM_0: { LPITEM item2; if (item2->IsExchanging() || item2->IsEquipped() || true == item->IsEquipped()) ChatPacket(CHAT_TYPE_INFO, ENG_WARNING_0); return false; if (FindAffect(VEGAS_NEW_AFFECT_VNUM_INDEX_0) { ChatPacket(CHAT_TYPE_INFO, ENG_WARNING_1); return false; } if (GetMapIndex() == ENG_BONUS_MAPINDEX_0) AddAffect(VEGAS_NEW_AFFECT_VNUM_INDEX_0, POINT_MAX_HP, ENG_BONUS_VALUE_0, 0, ENG_BONUS_TIME_0, 0, true); } break; VEGAS_NEW_AFFECT_VNUM_INDEX_0, if (FindAffect(VEGAS_NEW_AFFECT_VNUM_INDEX_0){ RemoveAffect(VEGAS_NEW_AFFECT_VNUM_INDEX_0); } enum EBonusNewTypeForVnum_1 { ENG_BONUS_VNUM_1 = 159, ENG_BONUS_TIME_1 = 45*60, ENG_BONUS_MAPINDEX_1 = 41, // MapName: metin2_map_c1 ENG_BONUS_VALUE_1 = 25, // Value bonus for bonus Monster }; [Hidden Content]
  12. Jesus..give me power..easy bro. Upload file game.py/uiMiniMap.py from root from see function call, and i will make a new function for hide.
  13. [File: Src/Client/UserInterface/Locale_inc.h] #define __ENABLE_CHARACTER_COUNT_QUEST 75 [File: Src/Client/UserInterface/PythonEventManager.cpp] rEventSet.iRestrictedCharacterCount = __ENABLE_CHARACTER_COUNT_QUEST; [File: root/interfaceModule.py] For arrange you can change from here: def __ArrangeQuestButton(self): screenWidth = wndMgr.GetScreenWidth() screenHeight = wndMgr.GetScreenHeight() if self.wndParty.IsShow(): xPos = 100 + 30 else: xPos = 20 if localeInfo.IsARABIC(): xPos = xPos + 15 yPos = 170 * screenHeight / 600 yCount = (screenHeight - 330) / 63 count = 0 for btn in self.questButtonList: btn.SetPosition(xPos + (int(count/yCount) * 100), yPos + (count%yCount * 63)) count += 1 global IsQBHide if IsQBHide: btn.Hide() else: btn.Show() def __StartQuest(self, btn): event.QuestButtonClick(btn.index) self.__DestroyQuestButton(btn) def __FindQuestButton(self, index): for btn in self.questButtonList: if btn.index == index: return btn return 0
  14. #define IS_NO_CLEAR_ON_DEATH_AFFECT(type) ((type) == AFFECT_BLOCK_CHAT || (type) == AFFECT_ANTIXP_DASSCHWARZET || ((type) >= 500 && (type) < 600)) #ifdef __ENABLE_ANTI_EXP_RING case GET_ITEM_VNUM_RING_ANTI_EXP: if (!FindAffect(AFFECT_ANTIXP_DASSCHWARZET)) { AddAffect(AFFECT_ANTIXP_DASSCHWARZET, 0, 0, AFF_NONE, 60*60*24*7, 0, true, false); ChatPacket(CHAT_TYPE_INFO, __ENABLE_ANTI_EXP_RING_ENABLE); //[.....] } else { RemoveAffect(AFFECT_ANTIXP_DASSCHWARZET); ChatPacket(CHAT_TYPE_INFO, __ENABLE_ANTI_EXP_RING_DISABLE); //[.....] } break; #endif #define __ENABLE_ANTI_EXP_RING #define __ENABLE_ANTI_EXP_RING_ENABLE "[Ring Against Experience]- Enabled!" #define __ENABLE_ANTI_EXP_RING_DISABLE "[Ring Against Experience]- Disabled!" #define GET_ITEM_VNUM_RING_ANTI_EXP 40003
  15. [File: root/uiQuest.py ] #1.) Search: if entire_questbutton_number >= self.QUEST_BUTTON_MAX_NUM: self.nextbutton.Show() Change with this: if entire_questbutton_number >= self.QUEST_BUTTON_MAX_NUM: self.nextbutton.Hide() Oth: if cur_questpage_number == 1: self.prevbutton.Hide() self.nextbutton.Show() elif cur_questpage_number == entire_questpage_number: self.prevbutton.Show() self.nextbutton.Hide() else: self.prevbutton.Show() self.nextbutton.Show() You can change the number buttons when xx is greater than the next display that button. QUEST_BUTTON_MAX_NUM = 8
  16. [Hidden Content] [File: root/uiInventory.py] #1.) Search: self.mallButton = self.GetChild2("MallButton") #2.) Add bellow: self.Button_Function_1 = self.GetChild2("Button_Function_1") self.Button_Function_2 = self.GetChild2("Button_Function_2") self.Button_Function_3 = self.GetChild2("Button_Function_3") self.Button_Function_4 = self.GetChild2("Button_Function_4") self.Button_Function_5 = self.GetChild2("Button_Function_5") self.Button_Function_6 = self.GetChild2("Button_Function_6") ------------------------------------------------------------------------------------------------------------------------- #1.) Search: if self.mallButton: self.mallButton.SetEvent(ui.__mem_func__(self.ClickMallButton)) #2.) Add bellow: if (self.Button_Function_1): self.Button_Function_1.SetEvent(ui.__mem_func__(self.ClickButton_Function_1)) if (self.Button_Function_2): self.Button_Function_2.SetEvent(ui.__mem_func__(self.ClickButton_Function_2)) if (self.Button_Function_3): self.Button_Function_3.SetEvent(ui.__mem_func__(self.ClickButton_Function_3)) if (self.Button_Function_4): self.Button_Function_4.SetEvent(ui.__mem_func__(self.ClickButton_Function_4)) if (self.Button_Function_5): self.Button_Function_5.SetEvent(ui.__mem_func__(self.ClickButton_Function_5)) if (self.Button_Function_6): self.Button_Function_6.SetEvent(ui.__mem_func__(self.ClickButton_Function_6)) ------------------------------------------------------------------------------------------------------------------------- #1.) Search: def ClickMallButton(self): print "click_mall_button" net.SendChatPacket("/click_mall") #2.) Add bellow: def ClickButton_Function_1(self): pass def ClickButton_Function_2(self): pass def ClickButton_Function_3(self): pass def ClickButton_Function_4(self): pass def ClickButton_Function_5(self): pass def ClickButton_Function_6(self): pass ------------------------------------------------------------------------------------------------------------------------- [File: locale/xx//InventoryWindow.py] #1.) Search: import uiScriptLocale import item #2.) Add bellow: TEXT_VEGAS_1 = "Description button 1" TEXT_VEGAS_2 = "Description button 2" TEXT_VEGAS_3 = "Description button 3" TEXT_VEGAS_4 = "Description button 4" TEXT_VEGAS_5 = "Description button 5" TEXT_VEGAS_6 = "Description button 6" ######################################## GET_IMAGE_BUTTON = "locale/xx/ui/button_inventory/" ######################################## position_button_1_x = 10 position_button_1_y = 10 position_button_2_x = 10 position_button_2_y = 42 position_button_3_x = 10 position_button_3_y = 72 position_button_4_x = 10 position_button_4_y = 102 position_button_5_x = 10 position_button_5_y = 134 position_button_6_x = 10 position_button_6_y = 166 #1.) Search: window = { "name" : "InventoryWindow", "x" : SCREEN_WIDTH - 176 - 200, "y" : SCREEN_HEIGHT - 37 - 565, "style" : ("movable", "float",), "width" : 176, "height" : 565, "children" : ( #2.) Add bellow: { "name" : "vegas_board", "type" : "board", "style" : ("attach",), "x" : 0, "y" : +15, "vertical_align":"center", "width" : 40, "height" : 210, "children" : ( { "name" : "Button_Function_1", "type" : "button", "x" : position_button_1_x, "y" : position_button_1_y, "tooltip_text" : TEXT_VEGAS_1, "default_image" : GET_IMAGE_BUTTON + "number_x1_01.tga", "over_image" : GET_IMAGE_BUTTON + "number_x1_02.tga", "down_image" : GET_IMAGE_BUTTON + "number_x1_03.tga", }, { "name" : "Button_Function_2", "type" : "button", "x" : position_button_2_x, "y" : position_button_2_y, "tooltip_text" : TEXT_VEGAS_2, "default_image" : GET_IMAGE_BUTTON + "number_x2_01.tga", "over_image" : GET_IMAGE_BUTTON + "number_x2_02.tga", "down_image" : GET_IMAGE_BUTTON + "number_x2_03.tga", }, { "name" : "Button_Function_3", "type" : "button", "x" : position_button_3_x, "y" : position_button_3_y, "tooltip_text" : TEXT_VEGAS_3, "default_image" : GET_IMAGE_BUTTON + "number_x3_01.tga", "over_image" : GET_IMAGE_BUTTON + "number_x3_02.tga", "down_image" : GET_IMAGE_BUTTON + "number_x3_03.tga", }, { "name" : "Button_Function_4", "type" : "button", "x" : position_button_4_x, "y" : position_button_4_y, "tooltip_text" : TEXT_VEGAS_4, "default_image" : GET_IMAGE_BUTTON + "number_x4_01.tga", "over_image" : GET_IMAGE_BUTTON + "number_x4_02.tga", "down_image" : GET_IMAGE_BUTTON + "number_x4_03.tga", }, { "name" : "Button_Function_5", "type" : "button", "x" : position_button_5_x, "y" : position_button_5_y, "tooltip_text" : TEXT_VEGAS_5, "default_image" : GET_IMAGE_BUTTON + "number_x5_01.tga", "over_image" : GET_IMAGE_BUTTON + "number_x5_02.tga", "down_image" : GET_IMAGE_BUTTON + "number_x5_03.tga", }, { "name" : "Button_Function_6", "type" : "button", "x" : position_button_6_x, "y" : position_button_6_y, "tooltip_text" : TEXT_VEGAS_6, "default_image" : GET_IMAGE_BUTTON + "number_x6_01.tga", "over_image" : GET_IMAGE_BUTTON + "number_x6_02.tga", "down_image" : GET_IMAGE_BUTTON + "number_x6_03.tga", }, ), },
  17. This happens in the most serious cases. I think a normal player who no has this knowledge can not do that . Thank you for your answer ^^
  18. You can make your own encryption code improves: [Hidden Content] There is no current encryption a good nowadays than if you buy from a company specializing in the field and also check if there is already launched online versions of Unpacker. There are other versions such encryption be UPX, ASPack, etc. but they already exist Unpacker-free on various forums, especially Themida Unpacker even several versions.
  19. That is fucking easy code but is funny haha xD, thanks girl.
  20. M2 Download Center Download Here ( Internal ) A member from this community called for a tutorial with this so I made this little tutorial with several functions. These functions can be applied during an event to lock assembly automatic any items Self pickup because stiim with all that many players join a private server when an event such as a break Metin and get xx chests, and players use most illegal software in order to collect as many chests or any item. Command in game for disable/activate: /e enable_block_table_pickup 1 -> Activate /e enable_block_table_pickup 0 -> Disable - [ File: /Src/common/service.h ] #define __ENABLE_BLOCK_PICKUP__ // Enables blocking of special items that can not be collected #define __ENABLE_BLOCK_PICKUP__WARNING "[Block PickUp] You cannot collect this item when event is active!" - [ File: /Src/common/length.h ] enum TablePickupItem { BLOCK_VNUM_0 = 50011, BLOCK_VNUM_1 = 50124, BLOCK_VNUM_2 = 50125, BLOCK_VNUM_3 = 50126, BLOCK_VNUM_4 = 50127, BLOCK_VNUM_5 = 50128, BLOCK_VNUM_6 = 50129, BLOCK_VNUM_7 = 50130, BLOCK_VNUM_8 = 50131, BLOCK_VNUM_9 = 50132, BLOCK_VNUM_10 = 50133, }; - [ File: /Src/game/char_item.cpp ] #1.) Search: if (!item || !item->GetSectree()) return false; #2.) Add bellow: #ifdef __ENABLE_BLOCK_PICKUP__ DWORD vegas_dwEventFlagBlockPickup = quest::CQuestManager::instance().GetEventFlag("enable_block_table_pickup"); if (vegas_dwEventFlagBlockPickup > 0) { if (IS_TABLE_BLOCK_PICKUP(item->GetVnum())) { ChatPacket(CHAT_TYPE_NOTICE, __ENABLE_BLOCK_PICKUP__WARNING); return false; } } #endif #3.) Search: static bool FN_check_item_socket(LPITEM item) { [........] } #4.) Add bellow: #ifdef __ENABLE_BLOCK_PICKUP__ static bool IS_TABLE_BLOCK_PICKUP(int vnum) { switch (vnum) { case BLOCK_VNUM_0: case BLOCK_VNUM_1: case BLOCK_VNUM_2: case BLOCK_VNUM_3: case BLOCK_VNUM_4: case BLOCK_VNUM_5: case BLOCK_VNUM_6: case BLOCK_VNUM_7: case BLOCK_VNUM_8: case BLOCK_VNUM_9: case BLOCK_VNUM_10: return true; } return false; } #endif
  21. Explain this bug: --*You do shop with items up to 120kkk, and another player can buy your items, but your bank online store you get only 2kkk, and the remaining money is erased. --* You need to do this check and function AddItem, because he still can not do this bug when you add items can add up to 120kkk. A guy asked me to help him solve this problem a few months ago, I helped and I offered this little fix free without any money and he was placed and sold to other users on a lot of money and he made a lot of money on this crap fixed which was written in 5 minutes. So I decided to put it for everyone to fix this problem, I mention this fix is for the offline shop's from Ken. This fix applies to people who have no limit increased to yang in bank offlineshop, shop etc.. - [ File: /Src/common/service.h ] #1.) Add this: #define __OFFLINE_SHOP_FIX_OPEN #define __OFFLINE_SHOP_VALUE_MAX 2000000000 #define __OFFLINE_SHOP_WARNING "[Protect Offline] Have more than 2.000.000.000 Yang!" - [ File: /Src/game/src/char.cpp ] #1.) Search function: if (!LC_IsBrazil()) { DWORD nTotalMoney = 0; for (BYTE n = 0; n < bItemCount; ++n) nTotalMoney += (pTable + n)->price; if (GOLD_MAX - 1 <= nTotalMoney) { sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", GetPlayerID(), GetName()); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20억 냥을 초과하여 상점을 열수가 없습니다")); return; } } #2.) Replace function with this: #ifdef __OFFLINE_SHOP_FIX_OPEN int64_t szTotalMoney = 0; for (int n = 0; n < bItemCount; ++n) { szTotalMoney += static_cast<int64_t>((pTable+n)->price); } std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT money FROM player.player WHERE id = %u", GetPlayerID())); if (pMsg->Get()->uiNumRows == 0) return; DWORD dwCurrentMoney = 0; MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); str_to_number(dwCurrentMoney, row[0]); szTotalMoney += static_cast<int64_t>(dwCurrentMoney); if (__OFFLINE_SHOP_VALUE_MAX <= szTotalMoney) { ChatPacket(CHAT_TYPE_INFO, __OFFLINE_SHOP_WARNING); return; } #else if (!LC_IsBrazil()) { DWORD nTotalMoney = 0; for (BYTE n = 0; n < bItemCount; ++n) nTotalMoney += (pTable + n)->price; if (GOLD_MAX - 1 <= nTotalMoney) { sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", GetPlayerID(), GetName()); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20억 냥을 초과하여 상점을 열수가 없습니다")); return; } } #endif
×
×
  • 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.