DarkPassage Adlı Kullanıcının Mesajlarını Göster
-
-
-
SE_CHANGE_ATTRIBUTE'e ve USE_ADD_ATTRIBUTE2 ye eklenmiştir.
Anlatım;
char_item.cpp:
Kod
Daha Çok Göster//Bul ve komple sil; case 71051 : { [...] } break; //Bul ve komple sil; case 71052 : { [...] } break; //Arat; case USE_CHANGE_ATTRIBUTE : if (item2->GetAttributeSetIndex() == -1) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù.")); return false; } if (item2->GetAttributeCount() == 0) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯°æÇÒ ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù.")); return false; } //Değiştir; case USE_CHANGE_ATTRIBUTE : if (item2->GetAttributeSetIndex() == -1) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù.")); return false; } if (item->GetVnum() == 71052) { if (item2->ChangeRareAttribute()) { char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog(this, item, "CHANGE_RARE_ATTR", buf); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÏ¿´½À´Ï´Ù.")); item->SetCount(item->GetCount() - 1); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯°æ ½Ãų ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù")); } return false; } if (item2->GetAttributeCount() == 0) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯°æÇÒ ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù.")); return false; } //Arat; if (item2->GetAttributeCount() == 4) //Üstüne Ekle; if (item->GetVnum() == 71051) { if (item2->AddRareAttribute() == true) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼º°øÀûÀ¸·Î ¼Ó¼ºÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù")); int iAddedIdx = item2->GetRareAttrCount() + 4; char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog( GetPlayerID(), item2->GetAttributeType(iAddedIdx), item2->GetAttributeValue(iAddedIdx), item->GetID(), "ADD_RARE_ATTR", buf, GetDesc()->GetHostName(), item->GetOriginalVnum()); item->SetCount(item->GetCount() - 1); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´õ ÀÌ»ó ÀÌ ¾ÆÀÌÅÛÀ¸·Î ¼Ó¼ºÀ» Ãß°¡ÇÒ ¼ö ¾ø½À´Ï´Ù")); } } //Arat; if (item2->GetAttributeCount() == 4) //Değiştir; else if (item2->GetAttributeCount() == 4)
item_attribute.cpp:
item_proto:
Kod71051 6 ve 7 arttır ITEM_USE USE_ADD_ATTRIBUTE2 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP LOG | STACKABLE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71052 6 ve 7 efsun ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
item_names:
item_listi kontrol edin eğer yoksa ekleyin;item_list:
item_desc:
-
-
Silahlarınıza belirlenen aralıkta rastgele bir ortalama veya beceri hasarı gelmesini sağlar.
ANLATIM;
Altarnatif_1;
char_item.cpp:
Kod
Daha Çok Göster// arat; else if (item->GetVnum() == 76014) { int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] = { 0, 10, 50, 39, 1 }; item2->ChangeAttribute(aiChangeProb); } //Altına ekle; else if (item->GetVnum() >= 71200 && item->GetVnum() <= 71206) { if (item2->GetType() != ITEM_WEAPON) { ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi sadece ortalama ve/veya beceri hasarı gelebilen esyalarda kullanabilirsin !"); return false; } if (item2->GetAttributeType(0) != 72 && item2->GetAttributeType(0) != 71) { const TItemTable * ort_bec_kontrol = item2->GetProto(); if (ort_bec_kontrol->sAddonType != -1) { ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi sadece ortalama ve/veya beceri hasarı gelebilen esyalarda kullanabilirsin !"); return false; } } item2->ChangeAttribute();//Bütün efsunların değişmesini istemiyorsanız bu satırı silin yada yorum haline getirin. auto ort = 0; auto bec = 0; switch (item->GetVnum()) { case 71201: ort = number(101, 150); bec = -(number(15,20)); break; case 71202: ort = number(151, 200); bec = -(number(15,20)); break; case 71203: ort = number(201, 250); bec = -(number(15,20)); break; case 71204: ort = number(251, 300); bec = -(number(15,20)); break; case 71205://ort verir ort = number(301, 350); bec = -(number(15,20)); break; case 71206://beceri verir ort = -(number(10, 25)); bec = number(20,30); break; default: ort = number(60, 100); bec = -(number(15,20)); break; } item2->SetForceAttribute(0,72,ort); item2->SetForceAttribute(1,71,bec); }
item_proto:
Kod71200 Ort. Zararı(60-100) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71201 Ort. Zararı(101-150) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71202 Ort. Zararı(151-200) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71203 Ort. Zararı(201-250) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71204 Ort. Zararı(251-300) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71205 Ort. Zararı(301-350) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 71206 Bec. Hasarı(20-30) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0
Altarnatif_2;char_item.cpp:
Kod
Daha Çok Göster// arat; else if (item->GetVnum() == 76014) { int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] = { 0, 10, 50, 39, 1 }; item2->ChangeAttribute(aiChangeProb); } //Altına ekle; else if (item->GetVnum() >= 71200 && item->GetVnum() <= 71206) { if (item2->GetType() != ITEM_WEAPON) { ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi sadece ortalama ve/veya beceri hasarı gelebilen esyalarda kullanabilirsin !"); return false; } if (item2->GetAttributeType(0) != 72 && item2->GetAttributeType(0) != 71) { const TItemTable * ort_bec_kontrol = item2->GetProto(); if (ort_bec_kontrol->sAddonType != -1) { ChatPacket(CHAT_TYPE_INFO, "Bu nesneyi sadece ortalama ve/veya beceri hasarı gelebilen esyalarda kullanabilirsin !"); return false; } } item2->ChangeAttribute();//Bütün efsunların değişmesini istemiyorsanız bu satırı silin yada yorum haline getirin. auto ort = 0; auto bec = 0; if (item->GetValue(0) == 0)//Value0 değeri 0 ise ortalama gelecek, 0 değil ise beceri gelecek olduğunu belirtiyoruz. { ort = number(item->GetValue(1), item->GetValue(2)); bec = -(number(15,20)); } else { ort = -(number(15,20)); bec = number(item->GetValue(1), item->GetValue(2)); } item2->SetForceAttribute(0,72,ort); item2->SetForceAttribute(1,71,bec); }
item_proto:
Kod71200 Ort. Zararı(60-100) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 60 100 0 0 0 0 0 0 71201 Ort. Zararı(101-150) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 101 150 0 0 0 0 0 0 71202 Ort. Zararı(151-200) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 151 200 0 0 0 0 0 0 71203 Ort. Zararı(201-250) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 201 250 0 0 0 0 0 0 71204 Ort. Zararı(251-300) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 251 300 0 0 0 0 0 0 71205 Ort. Zararı(301-350) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 301 350 0 0 0 0 0 0 71206 Bec. Hasarı(20-30) ITEM_USE USE_CHANGE_ATTRIBUTE 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_MYSHOP ITEM_STACKABLE | LOG NONE 500 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 1 30 50 0 0 0 0 0 0
Eklemeye devam et;item_names:
Kod71200 Ort. Zararı(60-100) 71201 Ort. Zararı(101-150) 71202 Ort. Zararı(151-200) 71203 Ort. Zararı(201-250) 71204 Ort. Zararı(251-300) 71205 Ort. Zararı(301-350) 71206 Bec. Hasarı(20-30)
item_list:
-
-
Daha önce paylaşmış olduğum Toplu Envanter Sistemi ne uyumlu
Uyarı0;
ccommon/lenht.h ile UserInterface/GameType.h uyumlu olmasına dikkat edin yoksa İtemi taktığınızda görünmeyebilir.
Uyarı1;
Aşağıdaki gibi bir syserr alırsanız common/length.h içindeki WEAR_MAX_NUM , WEAR_MAX ve UserInterface/GameType.h içindeki c_Wear_Max değerlerini arttırın.syserr:
KodSYSERR: Oct 16 18:39:23 :: EquipTo: EquipTo: invalid wear cell (this: #21550 Beyaz Şebnem +50 wearflag: 8388608 cell: 32)
Uyarı2;
Eğer common/ittem_length.h içindeki enum EItemWearableFlag 'ın içi 32 yi aşarsa 32 ve sonrasındakileri aşağıdaki gibi düzenleyin.(@Kaiser 'e teşekkürler)item_length.h:
-
Daha önce paylaşmış olduğum Toplu Envanter Sistemi ne uyumlu Şebnem sistemi yazdım onu paylaşıyorum.
Uyarı0;
ccommon/lenht.h ile UserInterface/GameType.h uyumlu olmasına dikkat edin yoksa İtemi taktığınızda görünmeyebilir.
Uyarı1;
Aşağıdaki gibi bir syserr alırsanız common/length.h içindeki WEAR_MAX_NUM , WEAR_MAX ve UserInterface/GameType.h içindeki c_Wear_Max değerlerini arttırın.syserr:
KodSYSERR: Oct 16 18:39:23 :: EquipTo: EquipTo: invalid wear cell (this: #21550 Beyaz Şebnem +50 wearflag: 8388608 cell: 32)
Uyarı2;
Eğer common/ittem_length.h içindeki enum EItemWearableFlag 'ın içi 32 yi aşarsa 32 ve sonrasındakileri aşağıdaki gibi düzenleyin.item_length.h:
KodWEARABLE_DENEME = (1 << 29), WEARABLE_DENEME2 = (1 << 30), WEARABLE_DENEME3 = (1 << 31), WEARABLE_DENEME4 = ((uint64_t)1 << 32), WEARABLE_DENEME5 = ((uint64_t)1 << 33), WEARABLE_DENEME6 = ((uint64_t)1 << 34),
En
-
Daha önce paylaşmış olduğum Toplu Envanter Sistemi ne uyumlu tılsım sistemi yazdım onu paylaşıyorum.
Uyarı0;
ccommon/lenht.h ile UserInterface/GameType.h uyumlu olmasına dikkat edin yoksa İtemi taktığınızda görünmeyebilir.
Uyarı1;
Aşağıdaki gibi bir syserr alırsanız common/length.h içindeki WEAR_MAX_NUM , WEAR_MAX ve UserInterface/GameType.h içindeki c_Wear_Max değerlerini arttırın.KodSYSERR: Oct 16 18:39:23 :: EquipTo: EquipTo: invalid wear cell (this: #21550 Beyaz Şebnem +50 wearflag: 8388608 cell: 32)
Uyarı2;
Eğer common/ittem_length.h içindeki enum EItemWearableFlag 'ın içi 32 yi aşarsa 32 ve sonrasındakileri aşağıdaki gibi düzenleyin. -
Daha önce paylaşmış olduğum Toplu Envanter Sistemi ne uyumlu Metin ve Boss kestikçe özellik veren item sistemi yazdım onu paylaşıyorum.
Uyarı0;
ccommon/lenht.h ile UserInterface/GameType.h uyumlu olmasına dikkat edin yoksa İtemi taktığınızda görünmeyebilir.
Uyarı1;
Aşağıdaki gibi bir syserr alırsanız common/length.h içindeki WEAR_MAX_NUM , WEAR_MAX ve UserInterface/GameType.h içindeki c_Wear_Max değerlerini arttırın.Kod: syserrSYSERR: Oct 16 18:39:23 :: EquipTo: EquipTo: invalid wear cell (this: #21550 Beyaz Şebnem +50 wearflag: 8388608 cell: 32)
Uyarı2;
Eğer common/ittem_length.h içindeki enum EItemWearableFlag 'ın içi 32 yi aşarsa 32 ve sonrasındakileri aşağıdaki gibi düzenleyin. -
-
Sistem Türü: Aracısız PvP – WS Karşılığı Otomatik Won Transferi
Uygun Seviye: 65 – 250
Amaç: Aracıya ihtiyaç olmadan birebir ws atarak kazan-kaybet mantığıyla won elde etmekSistem Açıklaması:
Bu sistemde klasik düello mantığı bir adım öteye taşınıyor. Artık oyuncular arasında yapılan ws'lerde aracı, hakem ya da üçüncü kişi ihtiyacı yok. WS öncesi iki oyuncu belirledikleri miktarda won sistem arayüzüne yatırır. Savaş sonunda kazanan oyuncu, her iki tarafın yatırdığı wonu otomatik olarak kazanır.Sistem Nasıl Çalışır?
Oyuncular ws atmak istediğinde belirlenen miktarda won girerek sistemi başlatır.
Her iki oyuncu da won’u onayladıktan sonra savaş başlar.
Savaş sonunda sistem kazananı otomatik olarak algılar.
Kazanan, yatırılan toplam wonu anında envanterine alır.
Kaybeden oyuncu ise yatırdığı wonu kaybeder.
Neden Bu Sistem?
Aracıya gerek kalmadan güvenli ws atma
Kazan–kaybet sistemine heyecan ve ödül eklendi
Hızlı, temiz ve şeffaf sonuçlar
Sunucu ekonomisine aktif katkı
Hileye veya tartışmaya açık bir yapı ortadan kalkar
-
-
NOT
Game ve Client C++12
Martysama filese özel yazıldığı için martysama 5.7 veya 5.8 ile kullanmanızı öneririm.
Mainline gibi fileslerde kodları bulamayabilirsiniz. -
uiinventory.py:
Python
Daha Çok Gösterself.costumeButton = self.GetChild2("CostumeButton") arat ############# self.searchInput = self.GetChild("ItemSearchInput") self.searchButton = self.GetChild("SearchButton") self.searchInput.SetReturnEvent(ui.__mem_func__(self.OnSearchItem)) self.searchButton.SetEvent(ui.__mem_func__(self.ToggleSearchInput)) self.shiftedWidgets = [ self.GetChild("ItemSlot"), self.GetChild("Inventory_Tab_01"), self.GetChild("Inventory_Tab_02"), self.GetChild("Inventory_Tab_03"), self.GetChild("Inventory_Tab_04"), self.GetChild("Equipment_Base"), # gerekiyorsa ekle: Money_Slot, TitleBar vb. ya da kendine göre düzenle ] self.searchInputShown = False ############# def SetItemSlotVnum(self, slotNumber): arat üstüne ekle def OnSearchItem(self): searchText = self.searchInput.GetText().lower() self.liHighlightedItems = [] if not searchText: self.wndItem.RefreshSlot() return for page in xrange(player.INVENTORY_PAGE_COUNT): # Sayfa sayısı kadar döner for localSlotIndex in xrange(player.INVENTORY_PAGE_SIZE): globalSlotIndex = page * player.INVENTORY_PAGE_SIZE + localSlotIndex itemVNum = player.GetItemIndex(globalSlotIndex) if itemVNum == 0: continue item.SelectItem(itemVNum) itemName = item.GetItemName().lower() if searchText in itemName: self.HighlightSlot(globalSlotIndex) self.__RefreshHighlights() InventoryWindow sınıfının içerinde arat def Close(self): self.Hide() altına ekle def ToggleSearchInput(self): if self.searchInputShown: self.searchInput.Hide() for widget in self.shiftedWidgets: x, y = widget.GetLocalPosition() widget.SetPosition(x, y - 25) self.searchInputShown = False else: self.searchInput.Show() self.searchInput.SetFocus() for widget in self.shiftedWidgets: x, y = widget.GetLocalPosition() widget.SetPosition(x, y + 25) self.searchInputShown = True inventorywindowex.py aç height 590 "children" : ( ## Inventory, Equipment Slots { "name" : "board", "type" : "board", "style" : ("attach",), "x" : 0, "y" : 0, "width" : 176, "height" : 590, "children" : ( <<< bu kısıma >>> { "name": "ItemSearchBackground", "type": "image", "x": 10, "y": 35, "image": "d:/ymir work/ui/public/parameter_slot_03.sub", }, { "name": "ItemSearchInput", "type": "editline", "x": 12, "y": 35, "width": 106, "height": 14, "input_limit": 50, "text": "", "style": ("ltr",), "text_color": 0xffffffff }, <<<< >>>>> ekle ## Title ## Item Slot arat altına ekle { "name": "SearchButton", "type": "button", "x": 10, "y": 5, "default_image": "d:/ymir work/ui/public/close_button_01.sub", "over_image": "d:/ymir work/ui/public/close_button_02.sub", "down_image": "d:/ymir work/ui/public/close_button_03.sub", "text": "", "tooltip_text": "Item Ara" },
envanterde item arama geliştirilebilir görünüm açısından pek bi göz alıcılığı yok ama arayanlar için yönerge olabilir
-
-
Paylaşım için teşekkürler.
-
Yeni Oyun Ayarları Penceresi - Oyun Seçenekleri Yapılandırması
Oyun ayarları için daha modern bir arayüz.
Çok sayıda ayar/seçeneğiniz varsa ve klasik arayüz bunlar için yeterince geniş değilse kullanışlıdır. -
Paylaşım için teşekkürler.