Simya Efsun Değiştirme Sistemi - Dragon Soul Change Attr

  • Konuyu açan Konuyu açan cihanozbkk
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 10
  • Gösterim Gösterim 181

cihanozbkk

Üye
Üye
Mesaj
18
Beğeni
12
Puan
50
Ticaret Puanı
0
TÜRKÇE

Arkadaşlar merhaba, bu sistemle alakalı açılmış konularda bazı sorunlar vardı. Simya 2 veya daha fazla sayıda görünüyordu, yeterli iteminiz olmasa bile efsun değiştiriyordu ve aynı efsun iki defa gelebiliyordu, simya efsunları bozulabiliyordu.

Bende soruna şöyle bir çözüm getirdim; sistem bonus tablosuna eklediğiniz simyayı siler ve o simyanın aynısından size bir adet geri verir.

Ek olarak aşağıda göründüğü gibi simya tablosuna efsunla butonu eklemenin anlatımı da zip içerisinde var. Efsunla butonu buradaki konudan editleyerek yaptım.

1724846527149.webp


İndirme ve VT Linkleri
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.


Kanıt

1080--5.webp

ENGLISH

Sorry for my bad English.

Hello friends, there were some problems in the topics opened regarding this system. Alchemy was appearing in 2 or more numbers, enchantment was changing even if you did not have enough items and the same enchantment could come twice, alchemy enchantments could be broken.

I have come up with a solution to the problem; the system deletes the alchemy you added to the bonus table and gives you back an identical alchemy.

Original Subjects
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.


Additionally, as seen below, the explanation of adding the enchant button to the alchemy table is also in the zip. I made the enchant button by editing it from the topic here.

1724846527149.webp


Download and VT Links
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.


Evidence
 
Son düzenleme:
Sistem çok güzel olmuş ama merak ettiğim kısım simyayı siler aynısından verir dedin mesela kusursuz değilde diğerlerini kullandım mesela mitsi yada ender her simyada geçerlimi yada parlak efsunladım +4 yine bana efsunlanmış +4 parlak mı vericek bunun kontrolünü nasıl yapıyo.
 
Sistem çok güzel olmuş ama merak ettiğim kısım simyayı siler aynısından verir dedin mesela kusursuz değilde diğerlerini kullandım mesela mitsi yada ender her simyada geçerlimi yada parlak efsunladım +4 yine bana efsunlanmış +4 parlak mı vericek bunun kontrolünü nasıl yapıyo.
Evet + kaç bastıysan hangi itemse onu siler direkt olarak o itemin vNum'unu alır o vNum'da yeni item verir. Örneğin +1 Kusursuz Yakut'un vNum'u 125410 bunu kullanırsanız itemi siler ve yeni 125410 verir. Bu arada diyelim üzerinizde 10 tane +0 Kusursuz yakut var 1125400 kodlu sıraya göre silmez. Bonus tablosuna hangisini eklediyseniz onu siler. Birde mitsi dışındakilerini kullanamazsınız onun için bir engel var tabii kaldırabilirsiniz bu engeli ve istediği Ejderha Alevi sayılarını da değiştirebilirsiniz bu sorun çıkarmaz.
 
Son düzenleme:
Evet + kaç bastıysan hangi itemse onu siler direkt olarak o itemin vNum'unu alır o vNum'da yeni item verir. Örneğin +1 Kusursuz Yakut'un vNum'u 125410 bunu kullanırsanız itemi siler ve yeni 125410 verir. Bu arada diyelim üzerinizde 10 tane +0 Kusursuz yakut var 1125400 kodlu sıraya göre silmez. Bonus tablosuna hangisini eklediyseniz onu siler. Birde mitsi dışındakilerini kullanamazsınız onun için bir engel var tabii kaldırabilirsiniz bu engeli ve istediği Ejderha Alevi sayılarını da değiştirebilirsiniz bu sorun çıkarmaz.
Hmm. Sistemi sizmi yazdınız ?

Kodları incelediğimde şurayı tam anlayamadım da o yüzden soruyorum.

Cmd_general.cpp:
Genişlet Daralt Kopyala
            if (ch->CountSpecifyItem(100700) >= bNeedFire)
            {
                ITEM_MANAGER::instance().RemoveItem(item);
                ch->AutoGiveItem(item->GetVnum());
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SUCCESSFULLY_CHANGED_BONUS_OF_DRAGON_SOUL_ITEM"));
                ch->RemoveSpecifyItem(100700, bNeedFire);
                ch->ChatPacket(CHAT_TYPE_COMMAND, "DS_ChangeAttr_Success");
            }
            else
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANNOT_CHANGE_BONUS_YOU_HAVE_NOT_ENOUGH_FLAMES"));
                return;
            }

Burada -1 e eşitse yada büyükse şartı girilmişte size zahmet açıklayabilirmisiniz.

BYTE bNeedFire = -1;
Tanımlamasınıda böyle yapmışsınız.
Mantığını öğrenmek için soruyorum lütfen yanlış anlaşılmasın.
Ellerinize sağlık bu arada
 
Sistem çok güzel olmuş ama merak ettiğim kısım simyayı siler aynısından verir dedin mesela kusursuz değilde diğerlerini kullandım mesela mitsi yada ender her simyada geçerlimi yada parlak efsunladım +4 yine bana efsunlanmış +4 parlak mı vericek bunun kontrolünü nasıl yapıyo.

Hmm. Sistemi sizmi yazdınız ?

Kodları incelediğimde şurayı tam anlayamadım da o yüzden soruyorum.

Cmd_general.cpp:
Genişlet Daralt Kopyala
            if (ch->CountSpecifyItem(100700) >= bNeedFire)
            {
                ITEM_MANAGER::instance().RemoveItem(item);
                ch->AutoGiveItem(item->GetVnum());
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("SUCCESSFULLY_CHANGED_BONUS_OF_DRAGON_SOUL_ITEM"));
                ch->RemoveSpecifyItem(100700, bNeedFire);
                ch->ChatPacket(CHAT_TYPE_COMMAND, "DS_ChangeAttr_Success");
            }
            else
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANNOT_CHANGE_BONUS_YOU_HAVE_NOT_ENOUGH_FLAMES"));
                return;
            }

Burada -1 e eşitse yada büyükse şartı girilmişte size zahmet açıklayabilirmisiniz.

BYTE bNeedFire = -1;
Tanımlamasınıda böyle yapmışsınız.
Mantığını öğrenmek için soruyorum lütfen yanlış anlaşılmasın.
Ellerinize sağlık bu arada
sistemi tamamen ben yazmadım yazılmış olan sistemdeki hataları vs. düzelttim daha doğrusu onda efsun değiştiriyordu direkt ama yanlış değiştiriyordu bende direkt itemi silip tekrardan o vNum'da item vermesini yazdım. BYTE bNeedFire = -1 eşitse değil eşittir -1 yani ejderha alevi itemini slota sürüklediğinizde o slota 1 adet gönderir. Teşekkür ederim.
 
sistemi tamamen ben yazmadım yazılmış olan sistemdeki hataları vs. düzelttim daha doğrusu onda efsun değiştiriyordu direkt ama yanlış değiştiriyordu bende direkt itemi silip tekrardan o vNum'da item vermesini yazdım. BYTE bNeedFire = -1 eşitse değil eşittir -1 yani ejderha alevi itemini slota sürüklediğinizde o slota 1 adet gönderir. Teşekkür ederim.
1 adet gönderir ama oradaki koşulu sağlamaz daha doğrusu item olsada olmasada koşul sağlanır çünkü item envanterde yoksa 0 değer gönderir varsa adeti gönderir yani her durumda pozitif yada -1 den büyük değer alır dolayısıyla item silinse bile doğru çalışıyo olsa bile envanterinde 100700 itemi olmasada efsunlar değişir.

BYTE bNeedFire = -1;
Olarak değilde
BYTE bNeedFire = 1;
Olarak tanımlasan sanki daha doğru olur. İstersen bi deneyebilirsin. 100700 itemini envanterden yok et ve simyanın efsununu değiştir. Yada o pencereye koyma değiştir.
 
1 adet gönderir ama oradaki koşulu sağlamaz daha doğrusu item olsada olmasada koşul sağlanır çünkü item envanterde yoksa 0 değer gönderir varsa adeti gönderir yani her durumda pozitif yada -1 den büyük değer alır dolayısıyla item silinse bile doğru çalışıyo olsa bile envanterinde 100700 itemi olmasada efsunlar değişir.

BYTE bNeedFire = -1;
Olarak değilde
BYTE bNeedFire = 1;
Olarak tanımlasan sanki daha doğru olur. İstersen bi deneyebilirsin. 100700 itemini envanterden yok et ve simyanın efsununu değiştir. Yada o pencereye koyma değiştir.
evet dediğinin farkındayım fakat onun doğrulamasını şura da yapıyor;
cmd_general.cpp:
Genişlet Daralt Kopyala
            if (ch->CountSpecifyItem(100700) < bNeedFire)
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANNOT_CHANGE_BONUS_YOU_HAVE_NOT_ENOUGH_FLAMES"));
                return;
            }
örneğin kusursuz denerken envanterinizde 81'den az olursa değiştirmiyor uyarı veriyor.
 
evet dediğinin farkındayım fakat onun doğrulamasını şura da yapıyor;
cmd_general.cpp:
Genişlet Daralt Kopyala
            if (ch->CountSpecifyItem(100700) < bNeedFire)
            {
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("CANNOT_CHANGE_BONUS_YOU_HAVE_NOT_ENOUGH_FLAMES"));
                return;
            }
örneğin kusursuz denerken envanterinizde 81'den az olursa değiştirmiyor uyarı veriyor.
Haa tamam bak burayı fark etmedim mobildeyim. Ama -1 i 1 yapsan bu kontrole hiç gerek kalmiycak. Paylaşım için çok teşekkürler.
 
Teşekkürler çalışma sistemi bence owsap'ın paylaşmış olduğundan daha sağlıklı
 
Üst