Vrăjește obiectul permanent

Metin2 Global - Un server de calitate !
Totalitatea subiectelor care nu respectă regulamentul vor fi stocate aici.
Deconectat
Avatar utilizator
Ratony Montana
Membru Club
Membru Club
Mesaje: 1059
Membru din: 25 Iun 2015
Localitate: Iasi
Reputație: Membru club permanent
Regat: Chunjo
Mulțumiri acordate: 7
Mulțumiri primite: 12

Vrăjește obiectul permanent

Mesajde Ratony Montana » 12 Noi 2015, 21:22

Intrați în char_item.cpp și căutați

Cod: Selectaţi tot

item->SetCount(item->GetCount() - 1);

modificați cu

Cod: Selectaţi tot

item->SetCount(item->GetCount() 0);



Mulțumesc Syron.

Deconectat
Avatar utilizator
Gaz3rNr1
Nivel 6
Nivel 6
Mesaje: 1000
Membru din: 19 Oct 2015
Localitate: București
Status: Mă mai gândesc !
Server Metin2: Se lucrează !
Regat: Jinno
Mulțumiri acordate: 0
Mulțumiri primite: 33
Contact:

Re: Vrăjește obiectul permanent

Mesajde Gaz3rNr1 » 12 Noi 2015, 22:55

Mulțumim frumos, dar asta nu e tot. Trebuie căutat 75084 sau cât e vnum-ul al Schimbă Bonus și acolo modificăm. Te rog frumos să modifici in topic toată funcția unde trebuie să caute, și locul exact unde să modifice. Tu ai spus bine acolo, dar sunt multe linii ca aceea( mă refer pentru începători )
Nu imi place realitatea, de asta trăiesc în lumea mea !

Deconectat
Avatar utilizator
Ratony Montana
Membru Club
Membru Club
Mesaje: 1059
Membru din: 25 Iun 2015
Localitate: Iasi
Reputație: Membru club permanent
Regat: Chunjo
Mulțumiri acordate: 7
Mulțumiri primite: 12

Re: Vrăjește obiectul permanent

Mesajde Ratony Montana » 12 Noi 2015, 23:05

Gaz3rNr1 scrie:Mulțumim frumos, dar asta nu e tot. Trebuie căutat 75084 sau cât e vnum-ul al Schimbă Bonus și acolo modificăm. Te rog frumos să modifici in topic toată funcția unde trebuie să caute, și locul exact unde să modifice. Tu ai spus bine acolo, dar sunt multe linii ca aceea( mă refer pentru începători )


funcționează, ăsta e tot case-ul:

Cod: Selectaţi tot

                        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;
                           }

                           if (GM_PLAYER == GetGMLevel() && false == test_server && false == g_bDisableItemBonusChangeTime)
                           {
                              //
                              // Event Flag 를 통해 이전에 아이템 속성 변경을 한 시간으로 부터 충분한 시간이 흘렀는지 검사하고
                              // 시간이 충분히 흘렀다면 현재 속성변경에 대한 시간을 설정해 준다.
                              //

                              DWORD dwChangeItemAttrCycle = quest::CQuestManager::instance().GetEventFlag(msc_szChangeItemAttrCycleFlag);
                              if (dwChangeItemAttrCycle < msc_dwDefaultChangeItemAttrCycle)
                                 dwChangeItemAttrCycle = msc_dwDefaultChangeItemAttrCycle;

                              quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID());

                              if (pPC)
                              {
                                 DWORD dwNowSec = get_global_time();

                                 DWORD dwLastChangeItemAttrSec = pPC->GetFlag(msc_szLastChangeItemAttrFlag);

                                 if (dwLastChangeItemAttrSec + dwChangeItemAttrCycle > dwNowSec)
                                 {
                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 바꾼지 %d분 이내에는 다시 변경할 수 없습니다.(%d 분 남음)"),
                                          dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowSec - dwLastChangeItemAttrSec));
                                    return false;
                                 }

                                 pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowSec);
                              }
                           }

                           if (item->GetSubType() == USE_CHANGE_ATTRIBUTE2)
                           {
                              int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =
                              {
                                 0, 0, 30, 40, 3
                              };

                              item2->ChangeAttribute(aiChangeProb);
                           }
                           else if (item->GetVnum() == 76014)
                           {
                              int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =
                              {
                                 0, 10, 50, 39, 1
                              };

                              item2->ChangeAttribute(aiChangeProb);
                           }

                           else
                           {
                              // 연재경 특수처리
                              // 절대로 연재가 추가 안될거라 하여 하드 코딩함.
                              if (item->GetVnum() == 71151 || item->GetVnum() == 76023)
                              {
                                 if ((item2->GetType() == ITEM_WEAPON)
                                    || (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
                                 {
                                    bool bCanUse = true;
                                    for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
                                    {
                                       if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)
                                       {
                                          bCanUse = false;
                                          break;
                                       }
                                    }
                                    if (false == bCanUse)
                                    {
                                       ChatPacket(CHAT_TYPE_INFO, LC_TEXT("적용 레벨보다 높아 사용이 불가능합니다."));
                                       break;
                                    }
                                 }
                                 else
                                 {
                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기와 갑옷에만 사용 가능합니다."));
                                    break;
                                 }
                              }
                              item2->ChangeAttribute();
                           }

                           ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경하였습니다."));
                           {
                              char buf[21];
                              snprintf(buf, sizeof(buf), "%u", item2->GetID());
                              LogManager::instance().ItemLog(this, item, "CHANGE_ATTRIBUTE", buf);
                           }

                           item->SetCount(item->GetCount() - 1);
                           break;

Deconectat
Avatar utilizator
adrian232
Nou Venit
Nou Venit
Mesaje: 27
Membru din: 04 Apr 2014
Status: Sunt bine mersi ^.^
Server Metin2: LastMetin2
Regat: Chunjo
Mulțumiri acordate: 0
Mulțumiri primite: 0

Re: Vrăjește obiectul permanent

Mesajde adrian232 » 13 Noi 2015, 21:26

nu merge..eroare compilare :

Cod: Selectaţi tot

char_item.cpp: In member function 'bool CHARACTER::UseItemEx(CItem*, TItemPos)':
char_item.cpp:4683: error: expected `)' before numeric constant
compile PetSystem.cpp
gmake: *** [OBJDIR/char_item.o] Error 1
gmake: *** Waiting for unfinished jobs....
PetSystem.cpp: In member function 'virtual bool CPetActor::_UpdateFollowAI()':
PetSystem.cpp:246: warning: unused variable 'bDoMoveAlone'
PetSystem.cpp: In member function 'CPetActor* CPetSystem::Summon(DWORD, CItem*, const char*, bool, DWORD)':
PetSystem.cpp:552: warning: unused variable 'petVID'
root@:/usr/src/mihai/Srcs/Server/game/src #



Cod: Selectaţi tot

item->SetCount(item->GetCount() 0);
                           break;

Conectat
Avatar utilizator
CHULI
Miracolul Crăciunului
Miracolul Crăciunului
Mesaje: 2152
Membru din: 06 Noi 2015
Mulțumiri acordate: 38
Mulțumiri primite: 54

Re: Vrăjește obiectul permanent

Mesajde CHULI » 20 Noi 2015, 16:17

Raton Senpai scrie:
Gaz3rNr1 scrie:Mulțumim frumos, dar asta nu e tot. Trebuie căutat 75084 sau cât e vnum-ul al Schimbă Bonus și acolo modificăm. Te rog frumos să modifici in topic toată funcția unde trebuie să caute, și locul exact unde să modifice. Tu ai spus bine acolo, dar sunt multe linii ca aceea( mă refer pentru începători )


funcționează, ăsta e tot case-ul:

Cod: Selectaţi tot

                        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;
                           }

                           if (GM_PLAYER == GetGMLevel() && false == test_server && false == g_bDisableItemBonusChangeTime)
                           {
                              //
                              // Event Flag 를 통해 이전에 아이템 속성 변경을 한 시간으로 부터 충분한 시간이 흘렀는지 검사하고
                              // 시간이 충분히 흘렀다면 현재 속성변경에 대한 시간을 설정해 준다.
                              //

                              DWORD dwChangeItemAttrCycle = quest::CQuestManager::instance().GetEventFlag(msc_szChangeItemAttrCycleFlag);
                              if (dwChangeItemAttrCycle < msc_dwDefaultChangeItemAttrCycle)
                                 dwChangeItemAttrCycle = msc_dwDefaultChangeItemAttrCycle;

                              quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID());

                              if (pPC)
                              {
                                 DWORD dwNowSec = get_global_time();

                                 DWORD dwLastChangeItemAttrSec = pPC->GetFlag(msc_szLastChangeItemAttrFlag);

                                 if (dwLastChangeItemAttrSec + dwChangeItemAttrCycle > dwNowSec)
                                 {
                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 바꾼지 %d분 이내에는 다시 변경할 수 없습니다.(%d 분 남음)"),
                                          dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowSec - dwLastChangeItemAttrSec));
                                    return false;
                                 }

                                 pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowSec);
                              }
                           }

                           if (item->GetSubType() == USE_CHANGE_ATTRIBUTE2)
                           {
                              int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =
                              {
                                 0, 0, 30, 40, 3
                              };

                              item2->ChangeAttribute(aiChangeProb);
                           }
                           else if (item->GetVnum() == 76014)
                           {
                              int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL] =
                              {
                                 0, 10, 50, 39, 1
                              };

                              item2->ChangeAttribute(aiChangeProb);
                           }

                           else
                           {
                              // 연재경 특수처리
                              // 절대로 연재가 추가 안될거라 하여 하드 코딩함.
                              if (item->GetVnum() == 71151 || item->GetVnum() == 76023)
                              {
                                 if ((item2->GetType() == ITEM_WEAPON)
                                    || (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY))
                                 {
                                    bool bCanUse = true;
                                    for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
                                    {
                                       if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40)
                                       {
                                          bCanUse = false;
                                          break;
                                       }
                                    }
                                    if (false == bCanUse)
                                    {
                                       ChatPacket(CHAT_TYPE_INFO, LC_TEXT("적용 레벨보다 높아 사용이 불가능합니다."));
                                       break;
                                    }
                                 }
                                 else
                                 {
                                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기와 갑옷에만 사용 가능합니다."));
                                    break;
                                 }
                              }
                              item2->ChangeAttribute();
                           }

                           ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경하였습니다."));
                           {
                              char buf[21];
                              snprintf(buf, sizeof(buf), "%u", item2->GetID());
                              LogManager::instance().ItemLog(this, item, "CHANGE_ATTRIBUTE", buf);
                           }

                           item->SetCount(item->GetCount() - 1);
                           break;



Ai testat măcar ? am pus şi cu item->SetCount(item->GetCount() - 0); şi item->SetCount(item->GetCount() 0); şi tot eroare la compilare ca a lui ăsta primesc
adrian232 scrie:nu merge..eroare compilare :

Cod: Selectaţi tot

char_item.cpp: In member function 'bool CHARACTER::UseItemEx(CItem*, TItemPos)':
char_item.cpp:4683: error: expected `)' before numeric constant
compile PetSystem.cpp
gmake: *** [OBJDIR/char_item.o] Error 1
gmake: *** Waiting for unfinished jobs....
PetSystem.cpp: In member function 'virtual bool CPetActor::_UpdateFollowAI()':
PetSystem.cpp:246: warning: unused variable 'bDoMoveAlone'
PetSystem.cpp: In member function 'CPetActor* CPetSystem::Summon(DWORD, CItem*, const char*, bool, DWORD)':
PetSystem.cpp:552: warning: unused variable 'petVID'
root@:/usr/src/mihai/Srcs/Server/game/src #



Cod: Selectaţi tot

item->SetCount(item->GetCount() 0);
                           break;
Imagine

Deconectat
Avatar utilizator
[Dionise]
Utilizator interzis !
Utilizator interzis !
Mesaje: 739
Membru din: 10 Sep 2015
Status: Kingdom Of
Server Metin2: Ankarya
Mulțumiri acordate: 1
Mulțumiri primite: 2
Contact:

Re: Vrăjește obiectul permanent

Mesajde [Dionise] » 20 Noi 2015, 17:32

Merge :) l-am testat mai de mult


Înapoi la “Topicuri şi mesaje şterse”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 11 vizitatori