Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
V1:
Kısıtlama koymadım. Binek, silah kostümü, zırh kostümü, saç kostümü ne varsa üzerine sürüklediğinizde süresi artar.
Süre değişkenini protodan değiştirebilirsiniz. Yapmanız gereken value0 değerini değiştirmek.
Source den süreyi gün olarak ayarladım.1 yazarsanız 1 gün, 10 yazarsanız 10gün olur.
Süre uzatma eşyasının miktarını arttırabilirsiniz. 7,14,30 gün şeklinde. Yapmanız gereken char_item ile uiinventory'ye yeni eşyaların vnumlarını ilave etmek.
V2:
Özel ikon yaptım.
7 güne ilaveten 14 ve 30 gün olan 2 adet kostüm uzatma ekledim.
Kostüm uzatmalara Eklenecek süre bilgisi ekledim.
V3:
Süre uzatma limiti eklendi.(365)
Süresi 0 olan kostümlere süre verilmesi çözümlendi.
Kuşak hatası çözümlendi.
REAL_TIME_FIRST_USE(süresi takıldıktan sonra azalmaya başlayan) olan eşyalara süre verme ile ilgili hata giderildi.
Beğenip yorum atmayı unutmayın.
SQL kullananlar için
Kısıtlama koymadım. Binek, silah kostümü, zırh kostümü, saç kostümü ne varsa üzerine sürüklediğinizde süresi artar.
Süre değişkenini protodan değiştirebilirsiniz. Yapmanız gereken value0 değerini değiştirmek.
Source den süreyi gün olarak ayarladım.1 yazarsanız 1 gün, 10 yazarsanız 10gün olur.
Süre uzatma eşyasının miktarını arttırabilirsiniz. 7,14,30 gün şeklinde. Yapmanız gereken char_item ile uiinventory'ye yeni eşyaların vnumlarını ilave etmek.
V2:
Özel ikon yaptım.
7 güne ilaveten 14 ve 30 gün olan 2 adet kostüm uzatma ekledim.
Kostüm uzatmalara Eklenecek süre bilgisi ekledim.
V3:
Süre uzatma limiti eklendi.(365)
Süresi 0 olan kostümlere süre verilmesi çözümlendi.
Kuşak hatası çözümlendi.
REAL_TIME_FIRST_USE(süresi takıldıktan sonra azalmaya başlayan) olan eşyalara süre verme ile ilgili hata giderildi.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Beğenip yorum atmayı unutmayın.
SQL kullananlar için
insert into item_proto (`vnum`, `type`, `subtype`, `name`, `locale_name`, `gold`, `shop_buy_price`, `weight`, `size`, `flag`, `wearflag`, `antiflag`, `immuneflag`, `refined_vnum`, `refine_set`, `magic_pct`, `socket_pct`, `addon_type`, `specular`, `limittype0`, `limitvalue0`, `limittype1`, `limitvalue1`, `applytype0`, `applyvalue0`, `applytype1`, `applyvalue1`, `applytype2`, `applyvalue2`, `value0`, `value1`, `value2`, `value3`, `value4`, `value5` ) values (84014, 3, 10, "KOSTUM_SURE_UZATMA", "Sure Uzat", 0, 0, 0, 1, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0 );
insert into item_proto (`vnum`, `type`, `subtype`, `name`, `locale_name`, `gold`, `shop_buy_price`, `weight`, `size`, `flag`, `wearflag`, `antiflag`, `immuneflag`, `refined_vnum`, `refine_set`, `magic_pct`, `socket_pct`, `addon_type`, `specular`, `limittype0`, `limitvalue0`, `limittype1`, `limitvalue1`, `applytype0`, `applyvalue0`, `applytype1`, `applyvalue1`, `applytype2`, `applyvalue2`, `value0`, `value1`, `value2`, `value3`, `value4`, `value5` ) values (84015, 3, 10, "KOSTUM_SURE_UZATMA", "Sure Uzat", 0, 0, 0, 1, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0 );
insert into item_proto (`vnum`, `type`, `subtype`, `name`, `locale_name`, `gold`, `shop_buy_price`, `weight`, `size`, `flag`, `wearflag`, `antiflag`, `immuneflag`, `refined_vnum`, `refine_set`, `magic_pct`, `socket_pct`, `addon_type`, `specular`, `limittype0`, `limitvalue0`, `limittype1`, `limitvalue1`, `applytype0`, `applyvalue0`, `applytype1`, `applyvalue1`, `applytype2`, `applyvalue2`, `value0`, `value1`, `value2`, `value3`, `value4`, `value5` ) values (84016, 3, 10, "KOSTUM_SURE_UZATMA", "Sure Uzat", 0, 0, 0, 1, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0 );
Son düzenleme:
En Çok Reaksiyon Alan Mesajlar
Kendim files geliştirdiğim için bi güzellik yapayım dedim buraya da ekleyeyim dedim.
PythonItem.cpp aç ve ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME bool CPythonItem::IsAddTimeCostumeItem(const uint32_t dwVnum) const { constexpr std::array<uint32_t, 3> add_item_vnum = { static_cast<uint32_t>(EAddCostumeTimeItem::ADD_TIME_COSTUME_ITEM_7), static_cast<uint32_t>(EAddCostumeTimeItem::ADD_TIME_COSTUME_ITEM_14), static_cast<uint32_t>(EAddCostumeTimeItem::ADD_TIME_COSTUME_ITEM_30) }; return std::find(add_item_vnum.begin(), add_item_vnum.end(), dwVnum) != add_item_vnum.end(); } #endif
PythonItem.h aç ve ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME bool IsAddTimeCostumeItem(const uint32_t dwVnum) const; #endif
PythonItemModule.cpp aç ve ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME PyObject* itemAddTimeCostumeItem(PyObject* poSelf, PyObject* poArgs) { int iItemVID; if (!PyTuple_GetInteger(poArgs, 0, &iItemVID)) return Py_BadArgument(); CItemManager::Instance().SelectItemData(iItemVID); CItemData* pItemData = CItemManager::Instance().GetSelectedItemDataPointer(); if (!pItemData) return Py_BuildException("Can't find select item data"); return Py_BuildValue("b", CPythonItem::Instance().IsAddTimeCostumeItem(pItemData->GetIndex())); } #endif
Modul içine ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME { "AddTimeCostumeItem", itemAddTimeCostumeItem, METH_VARARGS }, #endif
PythonPlayerModule.cpp aç ve Ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME PyObject * playerCanAddTimeCostumeItem(PyObject * poSelf, PyObject * poArgs) { TItemPos TargetSlotIndex; if (!PyTuple_GetInteger(poArgs, 0, &TargetSlotIndex.cell)) return Py_BadArgument(); int iTargetItemIndex = CPythonPlayer::Instance().GetItemIndex(TargetSlotIndex); CItemManager::Instance().SelectItemData(iTargetItemIndex); CItemData * pTargetItemData = CItemManager::Instance().GetSelectedItemDataPointer(); if (!pTargetItemData) return Py_BuildException("Can't find item data"); if (pTargetItemData->GetType() == CItemData::EItemType::ITEM_TYPE_COSTUME) { switch (pTargetItemData->GetSubType()) { case CItemData::ECostumeSubTypes::COSTUME_BODY: case CItemData::ECostumeSubTypes::COSTUME_HAIR: case CItemData::ECostumeSubTypes::COSTUME_WEAPON: return Py_BuildValue("i", TRUE); break; } } return Py_BuildValue("i", FALSE); } #endif
modul içine ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME { "CanAddTimeCostumeItem", playerCanAddTimeCostumeItem, METH_VARARGS }, #endif
GameType.h aç ve ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME enum class EAddCostumeTimeItem : uint32_t { ADD_TIME_COSTUME_ITEM_7 = 84014, ADD_TIME_COSTUME_ITEM_14 = 84015, ADD_TIME_COSTUME_ITEM_30 = 84016, }; #endif
DERLE
uiInventory.py aç ve değiştir:
Kod:elif app.ENABLE_EXTENDING_COSTUME_TIME and item.AddTimeCostumeItem(srcItemVID): self.__SendUseItemToItemPacket(srcItemSlotPos, dstItemSlotPos)
Tekrar Değiştir:
Kod:elif app.ENABLE_EXTENDING_COSTUME_TIME and item.AddTimeCostumeItem(srcItemVNum): return True
Tekrar değiştir:
Kod:elif app.ENABLE_EXTENDING_COSTUME_TIME and item.AddTimeCostumeItem(srcItemVNum) and player.CanAddTimeCostumeItem(dstSlotPos): return True
Char_Item.cpp aç ve değiştir:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME case static_cast<uint32_t>(EAddCostumeTimeItem::ADD_TIME_COSTUME_ITEM_7): case static_cast<uint32_t>(EAddCostumeTimeItem::ADD_TIME_COSTUME_ITEM_14): case static_cast<uint32_t>(EAddCostumeTimeItem::ADD_TIME_COSTUME_ITEM_30): { auto* item2 = GetItem(DestCell); if (!IsValidItemPosition(DestCell) || !item2) return false; if (item2->IsExchanging() || item2->IsEquipped()) return false; if (item2->GetType() != ITEM_COSTUME) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can only extend the duration of the costumes.")); return false; } if (item2->GetSubType() != COSTUME_BODY && item2->GetSubType() != COSTUME_HAIR && item2->GetSubType() != COSTUME_WEAPON) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not a valid type of costume. Use only for clothing, hair and weapons.")); return false; } constexpr int day = 60 * 60 * 24; constexpr int limit_time = day * 365; // bir yıllık sınır auto existing_duration = item2->GetSocket(0); auto additional_duration = item->GetValue(0) * day; auto new_duration = existing_duration + additional_duration; if (existing_duration == 0 || (new_duration - time(0) >= limit_time)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No more suras can be added to this item.")); return false; } ITEM_MANAGER::instance().RemoveItem(item); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Added time to costume.")); item2->SetSocket(0, new_duration); } break; #endif
Common/Lenght.h aç ve ekle:
Kod:#ifdef ENABLE_EXTENDING_COSTUME_TIME enum class EAddCostumeTimeItem : uint32_t { ADD_TIME_COSTUME_ITEM_7 = 84014, ADD_TIME_COSTUME_ITEM_14 = 84015, ADD_TIME_COSTUME_ITEM_30 = 84016, }; #endif
Hayırlı Olsun.
Fark etmez. int64t = long. Item socket değişkeni zaten long tipinde tutuluyor. Hiçbir farkı yok, kod en mantıklısı. Fakat unutmamak lazım kullanıcı için sınır belirlemek her zaman sağlıklıdır. Teşekkürler paylaşım için.Eline sağlık kanka ama keske int_64t diye değişken oluşturacağına direk parametreye yazsaydin.Bu sayede sinirlamalar biraz daha gevşek olurdu ve tek sınırlama foksiyonun parametresinde ki değişkeni olurdu
C++:long GetSocket(int i) { return m_alSockets[i]; }
Pet in item type ı öğrenin.Dostum Petler için nasıl bi yol izleye biliriz süre eklemek için 53001 den itibaren olan petleri
uiinventory'de bu kısıma
if item.GetItemType() == item.ITEM_TYPE_COSTUME:
ve char_item'da bu kısıma girin.
if (item2->GetType() != ITEM_COSTUME)
Subtype'dan da kontrol etmeniz gerekebilir.
if item.GetItemType() == item.XXX and item.GetItemSubType() == item.XXX:
if (item2->GetType() != XX && item2->GetSubType() != XX)
İkisini kombine etmek için yani hem kostümlerin hemde petin süresini uzatması için
if item.GetItemType() == item.ITEM_TYPE_COSTUME or item.GetItemType() == item.XXX and item.GetItemSubType() == item.XXX:
if (item2->GetType() != ITEM_COSTUME || (item2->GetType() != XX && item2->GetSubType() != XX))
işte şöyle emek kokan bir şeyler görelim eline koluna sağlık dostum. Teşekkür ediyorum.
V1:
Kısıtlama koymadım. Binek, silah kostümü, zırh kostümü, saç kostümü ne varsa üzerine sürüklediğinizde süresi artar.
Süre değişkenini protodan değiştirebilirsiniz. Yapmanız gereken value0 değerini değiştirmek.
Source den süreyi gün olarak ayarladım.1 yazarsanız 1 gün, 10 yazarsanız 10gün olur.
Süre uzatma eşyasının miktarını arttırabilirsiniz. 7,14,30 gün şeklinde. Yapmanız gereken char_item ile uiinventory'ye yeni eşyaların vnumlarını ilave etmek.
V2:
Özel ikon yaptım.
7 güne ilaveten 14 ve 30 gün olan 2 adet kostüm uzatma ekledim.
Kostüm uzatmalara Eklenecek süre bilgisi ekledim.
Beğenip yorum atmayı unutmayın.
Ekli dosyayı görüntüle 2762
SQL kullananlar için
Paylaşım için teşekkürler.
Son düzenleme:
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 222
- Cevaplar
- 1
- Görüntüleme
- 192
- Cevaplar
- 11
- Görüntüleme
- 490
- Cevaplar
- 31
- Görüntüleme
- 910
- Soru
- Cevaplar
- 0
- Görüntüleme
- 250
