Yardım Şebnem Sistemi

  • Konuyu açan Konuyu açan sharap
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 12
  • Gösterim Gösterim 140
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

sharap

MT Üye
MT Üye
Mesaj
349
Çözümler
16
Beğeni
153
Puan
529
Ticaret Puanı
0
Arkadaşlar merhaba şebnem sistemine aynı özelliği verecek yeni bir item ayarlamaya çalışıyorum da bir türlü başaramadım hep sıkıntı çıkıyor.

Örn:


char_item.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_TUNGA_BLEND_AFFECT
                switch (apply_type)
                {
                    case POINT_CRITICAL_PCT: affect_type = RED_BLEND_POTION; break;
                    case POINT_PENETRATE_PCT: affect_type = ORANGE_BLEND_POTION; break;
                    case POINT_ATT_SPEED: affect_type = YELLOW_BLEND_POTION; break;
                    case POINT_RESIST_MAGIC: affect_type = GREEN_BLEND_POTION; break;
                    case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break;
                }
#endif

Yukardaki kod bloğuna

Ekleme yaptığım kod::
Genişlet Daralt Kopyala
                    case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION; break;

Eklediğim Zaman:

Hata::
Genişlet Daralt Kopyala
POINT_DEF_GRADE_BONUS


2 Adet olduğu için çakışma yaşıyorum bunu nasıl halledebilirim.
 
case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION; break;
Merhaba yazmış olduğun bu kodu:

C++:
Genişlet Daralt Kopyala
case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION; break;

Bu şekilde kullan.


C++:
Genişlet Daralt Kopyala
case POINT_DEF_GRADE_BONUS:
    if (item->GetVnum() == yeniitemkodun)
        affect_type = SHARAP_BLEND_POTION;
    else
        affect_type = WHITE_BLEND_POTION;
        break;

yeniitemkodun'u eklemek istediğin yeni eşya koduyla değiştir.
 
Merhaba yazmış olduğun bu kodu:

C++:
Genişlet Daralt Kopyala
case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION; break;

Bu şekilde kullan.


C++:
Genişlet Daralt Kopyala
case POINT_DEF_GRADE_BONUS:
    if (item->GetVnum() == yeniitemkodun)
        affect_type = SHARAP_BLEND_POTION;
    else
        affect_type = WHITE_BLEND_POTION;
        break;

yeniitemkodun'u eklemek istediğin yeni eşya koduyla değiştir.


Öncelikle ilginiz ve yorumunuz için çok teşekkür ederim ama bu şekilde kullandım zaten. Bu şekilde bir düzenleme yaptığımız da 2 itemden 1 tanesini anlık kullanabiliyorum.
Düzenleme:
Genişlet Daralt Kopyala
case POINT_DEF_GRADE_BONUS:
    if (item->GetVnum() == 50812)
        affect_type = SHARAP_BLEND_POTION;
    else
        affect_type = WHITE_BLEND_POTION;
        break;

SHARAP_BLEND_POTION kullandıktan sonra WHITE_BLEND_POTION kullanınca etki zaten çalışıyor diyor ama ben her ikisini de ayrı ayrı kullanmak istiyorum.
 
Bu denli düzenlemelerde yapay zekanın bilgilerinden yararlanmak gerektiğini düşünüyorum belki size bir örnek gösterebilir.
 
Öncelikle ilginiz ve yorumunuz için çok teşekkür ederim ama bu şekilde kullandım zaten. Bu şekilde bir düzenleme yaptığımız da 2 itemden 1 tanesini anlık kullanabiliyorum.
Düzenleme:
Genişlet Daralt Kopyala
case POINT_DEF_GRADE_BONUS:
    if (item->GetVnum() == 50812)
        affect_type = SHARAP_BLEND_POTION;
    else
        affect_type = WHITE_BLEND_POTION;
        break;

SHARAP_BLEND_POTION kullandıktan sonra WHITE_BLEND_POTION kullanınca etki zaten çalışıyor diyor ama ben her ikisini de ayrı ayrı kullanmak istiyorum.

İkisinide ayrı ayrı kullanmak istiyorsan o zaman şöyle kullanabilirsin.

C++:
Genişlet Daralt Kopyala
if (FindAffect(affect_type, apply_type))

Değiştir:

C++:
Genişlet Daralt Kopyala
if (FindAffect(affect_type))
 
C++:
Genişlet Daralt Kopyala
case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION || affect_type = WHITE_BLEND_POTION; break;
 
Yapay zekanın
İkisinide ayrı ayrı kullanmak istiyorsan o zaman şöyle kullanabilirsin.

C++:
Genişlet Daralt Kopyala
if (FindAffect(affect_type, apply_type))

Değiştir:

C++:
Genişlet Daralt Kopyala
if (FindAffect(affect_type))
Deneyeyim

char_item.cpp:
Genişlet Daralt Kopyala
        case ITEM_BLEND:
#ifdef ENABLE_YMIR_AFFECT_FIX
            if ((CheckTimeUsed(item) == false))
            {
                return false;
            }
#endif
            sys_log(0,"ITEM_BLEND!!");
            if (Blend_Item_find(item->GetVnum()))
            {
                int        affect_type        = AFFECT_BLEND;
                int        apply_type        = aApplyInfo[item->GetSocket(0)].bPointType;
                int        apply_value        = item->GetSocket(1);
                int        apply_duration    = item->GetSocket(2);

#ifdef ENABLE_TUNGA_BLEND_AFFECT
                switch (apply_type)
                {
                    case POINT_CRITICAL_PCT: affect_type = RED_BLEND_POTION; break;
                    case POINT_PENETRATE_PCT: affect_type = ORANGE_BLEND_POTION; break;
                    case POINT_ATT_SPEED: affect_type = YELLOW_BLEND_POTION; break;
                    case POINT_RESIST_MAGIC: affect_type = GREEN_BLEND_POTION; break;
                    case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break;
                }
#endif
                    if (FindAffect(affect_type, apply_type))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                    }
                    else
                    {
                        if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                        }
                        else
                        {
                            AddAffect(affect_type, apply_type, apply_value, 0, apply_duration, 0, false);
                            item->SetCount(item->GetCount() - 1);
                        }
                    }
            }
            break;

Kaldırdığım zaman da olmadı bi bakabilirmissin tam olarak nasıl bir düzenleme yapmam gerek?
 
En son bir moderatör tarafından düzenlenmiş:
char_item.cpp:
Genişlet Daralt Kopyala
        case ITEM_BLEND:
#ifdef ENABLE_YMIR_AFFECT_FIX
            if ((CheckTimeUsed(item) == false))
            {
                return false;
            }
#endif
            sys_log(0,"ITEM_BLEND!!");
            if (Blend_Item_find(item->GetVnum()))
            {
                int        affect_type        = AFFECT_BLEND;
                int        apply_type        = aApplyInfo[item->GetSocket(0)].bPointType;
                int        apply_value        = item->GetSocket(1);
                int        apply_duration    = item->GetSocket(2);

#ifdef ENABLE_TUNGA_BLEND_AFFECT
                switch (apply_type)
                {
                    case POINT_CRITICAL_PCT: affect_type = RED_BLEND_POTION; break;
                    case POINT_PENETRATE_PCT: affect_type = ORANGE_BLEND_POTION; break;
                    case POINT_ATT_SPEED: affect_type = YELLOW_BLEND_POTION; break;
                    case POINT_RESIST_MAGIC: affect_type = GREEN_BLEND_POTION; break;
                    case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break;
                }
#endif
                    if (FindAffect(affect_type, apply_type))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                    }
                    else
                    {
                        if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                        }
                        else
                        {
                            AddAffect(affect_type, apply_type, apply_value, 0, apply_duration, 0, false);
                            item->SetCount(item->GetCount() - 1);
                        }
                    }
            }
            break;

Kaldırdığım zaman da olmadı bi bakabilirmissin tam olarak nasıl bir düzenleme yapmam gerek?
C++:
Genişlet Daralt Kopyala
        case ITEM_BLEND:
#ifdef ENABLE_YMIR_AFFECT_FIX
            if ((CheckTimeUsed(item) == false))
            {
                return false;
            }
#endif
            sys_log(0,"ITEM_BLEND!!");
            if (Blend_Item_find(item->GetVnum()))
            {
                int        affect_type        = AFFECT_BLEND;
                int        apply_type        = aApplyInfo[item->GetSocket(0)].bPointType;
                int        apply_value        = item->GetSocket(1);
                int        apply_duration    = item->GetSocket(2);

#ifdef ENABLE_TUNGA_BLEND_AFFECT
                switch (apply_type)
                {
                    case POINT_CRITICAL_PCT: affect_type = RED_BLEND_POTION; break;
                    case POINT_PENETRATE_PCT: affect_type = ORANGE_BLEND_POTION; break;
                    case POINT_ATT_SPEED: affect_type = YELLOW_BLEND_POTION; break;
                    case POINT_RESIST_MAGIC: affect_type = GREEN_BLEND_POTION; break;
                    case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break;
                }
#endif
                    if (FindAffect(affect_type))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                    }
                    else
                    {
                        if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                        }
                        else
                        {
                            AddAffect(affect_type, apply_type, apply_value, 0, apply_duration, 0, false);
                            item->SetCount(item->GetCount() - 1);
                        }
                    }
            }
            break;
 
En son bir moderatör tarafından düzenlenmiş:
Gösterdiğiniz gibi kaldırdım ve aşağıdaki gibi bir ekleme yaptım.


char_item.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_TUNGA_BLEND_AFFECT
                switch (apply_type)
                {
                    case POINT_CRITICAL_PCT: affect_type = RED_BLEND_POTION; break;
                    case POINT_PENETRATE_PCT: affect_type = ORANGE_BLEND_POTION; break;
                    case POINT_ATT_SPEED: affect_type = YELLOW_BLEND_POTION; break;
                    case POINT_RESIST_MAGIC: affect_type = GREEN_BLEND_POTION; break;
                    case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_1; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_2; break;
                }
#endif

Ama yine kabul etmiyor:


Hata::
Genişlet Daralt Kopyala
compiling PetSystem.cpp
char_item.cpp: In member function 'bool CHARACTER::UseItemEx(LPITEM, TItemPos, s         hort unsigned int)':
char_item.cpp:7239:6: error: duplicate case value
 7239 |      case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_1; br         eak;
      |      ^~~~
char_item.cpp:7238:6: note: previously used here
 7238 |      case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break         ;
      |      ^~~~
char_item.cpp:7240:6: error: duplicate case value
 7240 |      case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_2; br         eak;
      |      ^~~~
char_item.cpp:7238:6: note: previously used here
 7238 |      case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break         ;
      |      ^~~~
compiling cmd.cpp
compiling cmd_emotion.cpp
gmake: *** [Makefile:187: .obj/char_item.o] Error 1
gmake: *** Waiting for unfinished jobs....
root@localhost:/home/Game_Source/Srcs/Server/game/src #
 
Gösterdiğiniz gibi kaldırdım ve aşağıdaki gibi bir ekleme yaptım.


char_item.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_TUNGA_BLEND_AFFECT
                switch (apply_type)
                {
                    case POINT_CRITICAL_PCT: affect_type = RED_BLEND_POTION; break;
                    case POINT_PENETRATE_PCT: affect_type = ORANGE_BLEND_POTION; break;
                    case POINT_ATT_SPEED: affect_type = YELLOW_BLEND_POTION; break;
                    case POINT_RESIST_MAGIC: affect_type = GREEN_BLEND_POTION; break;
                    case POINT_ATT_GRADE_BONUS: affect_type = BLUE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_1; break;
                    case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_2; break;
                }
#endif

Ama yine kabul etmiyor:


Hata::
Genişlet Daralt Kopyala
compiling PetSystem.cpp
char_item.cpp: In member function 'bool CHARACTER::UseItemEx(LPITEM, TItemPos, s         hort unsigned int)':
char_item.cpp:7239:6: error: duplicate case value
 7239 |      case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_1; br         eak;
      |      ^~~~
char_item.cpp:7238:6: note: previously used here
 7238 |      case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break         ;
      |      ^~~~
char_item.cpp:7240:6: error: duplicate case value
 7240 |      case POINT_DEF_GRADE_BONUS: affect_type = SHARAP_BLEND_POTION_2; br         eak;
      |      ^~~~
char_item.cpp:7238:6: note: previously used here
 7238 |      case POINT_DEF_GRADE_BONUS: affect_type = WHITE_BLEND_POTION; break         ;
      |      ^~~~
compiling cmd.cpp
compiling cmd_emotion.cpp
gmake: *** [Makefile:187: .obj/char_item.o] Error 1
gmake: *** Waiting for unfinished jobs....
root@localhost:/home/Game_Source/Srcs/Server/game/src #
Ekleme yapmayıp değiştiriceksin
 
findaffect kontrolün olduğu yere Applytype POINT_DEF_GRADE_BONUS değilse kontrol devam edecek şekilde düzenle o kontrolden dolayı 2 kere kullandırtmıyor mobilim tam detaylı atamıyorum

Birde buradaki amacın ne tam olarak
 
Geri
Üst