Arkadaşlar 29 tane
Dün dahil olmak üzere satılan filesler üzerinden oynanan birkaç oyun var ve bende haklı çıktığım ve forumu bırakma kararı aldım. 1 kaç paylaşım yapıp forumu bırakıyorum.
Kimse kusura bakmasın yaptıklarımdan dolayı.
Buda Son Konum ..
game/exchange.cpp
Şeklinde Ayarla.
game.py aç
Altına ekle
Herhangi bir yere ekleyin.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
satışım gerçekleşti büyük çoğunluğu bu forum üzerinden. Birçok kişiyle'de sorun yaşadım gerektiği yerde özür dilemesinide bildim. Fakat Gereğinden fazla gereksiz tartışmaya girdim. Geçmiş geçmişte kaldı gibi gözüksede aynı toplum içerisinde birbirimize düşman gözüyle baktık , herşeye eyw ama birkaç konuda haksızdım ve özür dilemesini bildim. Dün dahil olmak üzere satılan filesler üzerinden oynanan birkaç oyun var ve bende haklı çıktığım ve forumu bırakma kararı aldım. 1 kaç paylaşım yapıp forumu bırakıyorum.
Kimse kusura bakmasın yaptıklarımdan dolayı.
Buda Son Konum ..
game/exchange.cpp
Kod:
if (iDist >= EXCHANGE_MAX_DISTANCE) return false;
Kod:
//if (iDist >= EXCHANGE_MAX_DISTANCE) // return false;
Şeklinde Ayarla.
game.py aç
Kod:
def __ServerCommand_Build(self): serverCommandList={
Altına ekle
Kod:
"sistem_negot_map" : self.__sistem_negot_map, "sistem_negot_verificare_nume" : self.__Sistem_negot_verificare_nume, "sistem_negot_deschidere_fereastra" : self.__sistem_negot_deschidere_fereastra,
Herhangi bir yere ekleyin.
Kod:
def __Sistem_negot_verificare_nume(self):
Kod:
net.SendQuestInputStringPacket(str(constInfo.Negot FereastraNume)) def __sistem_negot_map(self, questindex): constInfo.sistem_negot_map = questindex def __sistem_negot_deschidere_fereastra(self, vid): player_vid = int(vid) net.SendExchangeStartPacket(player_vid) def __DeschidereFereastra(self): self.Fereastra_Negot_Map_Fereastra2 = ui.BoardWithTitleBar() self.Fereastra_Negot_Map_Fereastra2.SetSize(210, 115) self.Fereastra_Negot_Map_Fereastra2.SetCenterPosit ion() self.Fereastra_Negot_Map_Fereastra2.AddFlag('float ') self.Fereastra_Negot_Map_Fereastra2.AddFlag('movab le') self.Fereastra_Negot_Map_Fereastra2.SetTitleName("Comertul cu un player")#titlu fereastra self.Fereastra_Negot_Map_Fereastra2.Show() self.Fereastra_Negot_Map_Text = ui.TextLine() self.Fereastra_Negot_Map_Text.SetParent(self.Ferea stra_Negot_Map_Fereastra2) self.Fereastra_Negot_Map_Text.SetText(" Introdu numele jucatorului") self.Fereastra_Negot_Map_Text.SetPosition(7,27) self.Fereastra_Negot_Map_Text.SetFontColor(1.0, 1.0, 1.0)#modificare culoare text self.Fereastra_Negot_Map_Text.Show() self.Fereastra_Negot_Map_Value1 = ui.SlotBar() self.Fereastra_Negot_Map_Value1.SetParent(self.Fer eastra_Negot_Map_Fereastra2) self.Fereastra_Negot_Map_Value1.SetSize(120, 18) self.Fereastra_Negot_Map_Value1.SetPosition(50, 50) self.Fereastra_Negot_Map_Value1.Show() self.Fereastra_Negot_Map_Value = ui.EditLine() self.Fereastra_Negot_Map_Value.SetParent(self.Fere astra_Negot_Map_Value1) self.Fereastra_Negot_Map_Value.SetSize(120, 18) self.Fereastra_Negot_Map_Value.SetPosition(4, 1) self.Fereastra_Negot_Map_Value.SetMultiLine() self.Fereastra_Negot_Map_Value.SetMax(12) self.Fereastra_Negot_Map_Value.SetText("") self.Fereastra_Negot_Map_Value.SetFocus() self.Fereastra_Negot_Map_Value.Show() self.Fereastra_Negot_Map_Test1 = ui.Button() self.Fereastra_Negot_Map_Test1.SetEvent(self.__Ope nFereastra_Negot_Map_Fereastra2) self.Fereastra_Negot_Map_Test1.SetParent(self.Fere astra_Negot_Map_Fereastra2) self.Fereastra_Negot_Map_Test1.SetPosition(10, 75) self.Fereastra_Negot_Map_Test1.SetUpVisual("d:/ymir work/ui/public/XLarge_Button_01.sub") self.Fereastra_Negot_Map_Test1.SetOverVisual("d:/ymir work/ui/public/XLarge_button_02.sub") self.Fereastra_Negot_Map_Test1.SetDownVisual("d:/ymir work/ui/public/XLarge_button_03.sub") self.Fereastra_Negot_Map_Test1.SetText("Initiealizeaza Comertul") self.Fereastra_Negot_Map_Test1.Show()
Yukarıdakinin altına ekleyin
Kod:
def __OpenFereastra_Negot_Map_Fereastra2(self): import event ExName = self.Fereastra_Negot_Map_Value.GetText() if self.__ProtectieNegot(): chat.AppendChat(1, "[SERVER] Bu haritada yapamazsın!") return if len(ExName) >= 4: self.Fereastra_Negot_Map_Fereastra2.Hide() constInfo.NegotFereastraNume = ExName event.QuestButtonClick(int(constInfo.sistem_negot_ map)) else: #inchidere fereastra in caz ca protectia a fost activata - fereastra activa self.Fereastra_Negot_Map_Text.SetText("En az 4 karakter girmelisim!") self.Fereastra_Negot_Map_Text.SetFontColor(1.0, 0.0, 0.0) def __ProtectieNegot(self): protectie_mape = [ "season1/metin2_map_oxevent", "mape_dungeon/metin2_map_skipia_dungeon_boss", "mape_dungeon/metin2_map_skipia_dungeon_boss2", "mape_dungeon/metin2_map_devilsCatacomb", "mape_dungeon/metin2_map_deviltower1", "mape_vegas/metin2_map_wedding_01", "mape_dungeon/metin2_map_spiderdungeon_02", "mape_beta/Metin2_map_CapeDragonHead", "mape_beta/metin2_map_Mt_Thunder", "mape_beta/metin2_map_dawnmistwood", "mape_beta/metin2_map_BayBlackSand", "mape_noi/farmmap1", "mape_dungeon/metin2_map_spiderdungeon_03", "mape_vegas/metin2_map_duel", "mape_dungeon/metin2_map_n_flame_dungeon_01", "mape_dungeon/metin2_map_n_snow_dungeon_01" ] if str(background.GetCurrentMapName()) in protectie_mape: return TRUE return FALSE
uiexchange.py açılır
Kod:
def OpenDialog(self):
Altına eklenir
Kod:
def OpenDialog(self): self.TitleName.SetText(localeInfo.EXCHANGE_TITLE % (exchange.GetNameFromTarget())) if exchange.GetNameFromTarget() == "": import constInfo self.TitleName.SetText(localeInfo.EXCHANGE_TITLE % (str(constInfo.NegotFereastraNume))) self.AcceptButton.Enable() self.AcceptButton.SetUp() self.Show() (self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
costinfo.py açılır herhangi bir yere ekle
Kod:
NegotFereastraVid = 0NegotFereastraNume = "Kimle Ticaret Yapacaksın?" sistem_negot_map = 0
Game.py açılır
Arat
Kod:
def __ServerCommand_Build(self): serverCommandList={
Altına ekle
Kod:
Kod:
"getinputbegin" : self.__Input_Get_Vegas_1,"getinputend" : self.__Input_Get_Vegas_2, "getinput" : self.__Input_Get_Vegas_3,
En Alta ekleyin.
Kod:
def __Input_Get_Vegas_1(self): constInfo.INPUT_IGNORE = 1 def __Input_Get_Vegas_2(self): constInfo.INPUT_IGNORE = 0 def __Input_Get_Vegas_3(self): net.SendQuestInputStringPacket("1")
Game.py açılır
Kod:
def OpenQuestWindow(self, skin, idx):
yukarıdaki kod bloğu ile değiştir,
Kod:
def OpenQuestWindow(self, skin, idx): if constInfo.INPUT_IGNORE == 1: return else: self.interface.OpenQuestWindow(skin, idx)
Kod:
INPUT_IGNORE = 0
Ekle ( Ekli değilse ekleyin )
game.py Arat
Kod:
def __BuildKeyDict(self): onPressKeyDict = {}
Altına ekle
Kod:
onPressKeyDict[app.DIK_F6] = lambda : self.__DeschidereFereastra()
Son olarak uzaktantic.quest oluşturun ve okutun..
Kod:
quest sistem_negot begin state start begin function GetName() cmdchat("getinputbegin") name = input(cmdchat("sistem_negot_verificare_nume")) cmdchat("getinputend") return name end function GetVid(n) local name = n local vid = find_pc_by_name(name) if name == "" then return end if name == pc.get_name() then return end if vid == 0 then return end local myvid = pc.select(vid) local vicvid = pc.get_vid() pc.select(myvid) return tonumber(vicvid) end when login begin cmdchat("sistem_negot_map "..q.getcurrentquestindex()) end when button or info begin local name = sistem_negot.GetName() local vid = sistem_negot.GetVid(name) cmdchat("sistem_negot_deschidere_fereastra "..vid.."") end end end
KANIT ;
[C++] Uzaktan Ticaret Sistemi Geliştirme Rehberi
Metin2 özel sunucularında gelişmiş sistemlerden biri olan Uzaktan Ticaret sistemi, oyuncuların belirli mesafelerdeki diğer oyuncularla eşya alım-satımı yapabilmesine olanak tanır. Bu sistem genellikle C++ dilinde yazılarak oyun sunucusuna entegre edilir ve oyuncu deneyimini ciddi anlamda artırır. Bu rehberde, Metin2 özel sunucularında C++ tabanlı bir Uzaktan Ticaret sisteminin nasıl geliştirileceği, hangi dosyaların değiştirileceği ve nasıl test edileceği detaylı bir şekilde ele alınacaktır.
Uzaktan Ticaret Nedir?
Uzaktan Ticaret, oyuncuların doğrudan karşılaşmadan veya aynı haritada olmasalar bile eşya alım-satımı yapabilmelerini sağlayan bir sistemdir. Bu sistem, genellikle PvP sunucularında daha fazla tercih edilir çünkü oyuncular birbirleriyle güvenli bir şekilde ticaret yapmak isterler. Uzaktan Ticaret sistemi sayesinde oyuncular, market benzeri bir yapıyla karşılaşırlar ve ihtiyaç duydukları eşyaları daha kolay elde edebilirler.
C++ ile Uzaktan Ticaret Sistemi Geliştirme
C++ tabanlı Uzaktan Ticaret sistemi geliştirmek için öncelikle Metin2 sunucu kaynak kodlarına erişmeniz gerekir. Bu sistem genellikle game server üzerinde çalışır. Geliştirme sırasında aşağıdaki adımları izlemek önemlidir:
- Sunucu tarafında bir trade_remote.cpp dosyası oluşturulur.
- Bu dosya üzerinden client-server iletişimi sağlanır.
- Eşya listeleme, fiyatlandırma ve alım-satım işlemleri için C++ fonksiyonları yazılır.
- Gerekirse database ile entegrasyon yapılır.
Geliştirme Sürecinde Dikkat Edilmesi Gerekenler
Uzaktan Ticaret sistemi geliştirilirken güvenlik ön planda tutulmalıdır. Oyuncuların sahte eşyalarla dolandırıcılık yapmaması için validasyon süreçleri mutlaka uygulanmalıdır. Ayrıca sistemde transaction mantığı çalıştırılarak iki oyuncu arasında eşya transferi güvenli bir şekilde yapılmalıdır. C++ ile geliştirilen bu sistemlerde memory leak gibi sorunlara dikkat edilmelidir.
Avantajları
Uzaktan Ticaret sistemi, oyuncuların sunucuda daha aktif olmasına yardımcı olur. Aynı zamanda Metin2 özel sunucularında oyuncu sadakati artar çünkü oyuncular eşyalarını güvenli ve kolayca satabilirler. C++ ile yazılmış bu sistemler, performans açısından oldukça verimlidir ve düşük gecikme süresiyle çalışır.
Sonuç
Metin2 özel sunucularında Uzaktan Ticaret sistemi, gelişmiş bir PvP deneyimi sunmak için önemli bir özelliktir. C++ ile geliştirilen bu sistemler, hem güvenliği hem de kullanıcı dostu arayüzü ile dikkat çeker. Geliştiriciler için bu tür sistemler, server src üzerinde uzmanlaşma imkanı sunar ve Metin2 sunucularında rekabet avantajı sağlar.
[C++] Remote Trading System Development Guide
In Metin2 private servers, the Remote Trading system is one of the advanced features that allows players to trade items with each other from far distances. This system is typically developed using C++ and integrated into the game server, significantly enhancing player experience. In this guide, we will detail how to develop a Remote Trading system based on C++ for Metin2 private servers, including which files to modify and how to test the system.
What is Remote Trading?
Remote Trading allows players to buy and sell items without meeting face-to-face or even being on the same map. This system is often preferred in PvP servers where players want to trade safely. With Remote Trading, players interact with a marketplace-like interface, making it easier to acquire desired items.
Developing Remote Trading System with C++
To develop a C++-based Remote Trading system, you first need access to the Metin2 server source code. The system typically runs on the game server. During development, the following steps are essential:
- Create a trade_remote.cpp file on the server side.
- Establish client-server communication through this file.
- Write C++ functions for item listing, pricing, and trading operations.
- Integrate with the database if needed.
Key Considerations During Development
Security must be prioritized during Remote Trading development. Validation processes should be implemented to prevent players from scamming with fake items. Additionally, a transaction logic must be established to securely transfer items between two players. In such C++-based systems, care should be taken to avoid issues like memory leaks.
Benefits
The Remote Trading system encourages more active participation from players. It also increases player loyalty in Metin2 private servers since players can easily and safely sell their items. These C++-coded systems perform efficiently with low latency and high security.
Conclusion
In Metin2 private servers, the Remote Trading system is an important feature for delivering an advanced PvP experience. Developed with C++, these systems stand out with both security and user-friendly interfaces. For developers, such systems offer opportunities for specialization in server src and provide a competitive advantage in Metin2 server environments.
