Vrăjește obiectul permanent

Totalitatea subiectelor care nu respectă regulamentul vor fi stocate aici.
Închis
Avatar utilizator
Ratony Montana
Membru Club

Membru Club
Mesaje: 1077
Membru din: 25 Iun 2015, 10:32
Regat: Chunjo
Aprecieri: 8  
Mulţumiri: 99  
Medalii

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.
Imagine
Afișează semnătura
Avatar utilizator
Gaz3rNr1
Nivel 6

Nivel 6
Mesaje: 983
Membru din: 19 Oct 2015, 19:13
Server: Se lucrează !
Regat: Jinno
Aprecieri: 1  
Mulţumiri: 571  
 Contact:
Medalii

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 !
Afișează semnătura
Avatar utilizator
Ratony Montana
Membru Club

Membru Club
Mesaje: 1077
Membru din: 25 Iun 2015, 10:32
Regat: Chunjo
Aprecieri: 8  
Mulţumiri: 99  
Medalii

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;
Imagine
Afișează semnătura
Avatar utilizator
adrian232
Nou Venit

Nou Venit
Mesaje: 27
Membru din: 04 Apr 2014, 19:05
Server: LastMetin2
Regat: Chunjo
Aprecieri: 0
Mulţumiri: 0
Medalii

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;
Avatar utilizator
FRANCIS
Administrator Adjunct

Administrator Adjunct
Mesaje: 7879
Membru din: 06 Noi 2015, 19:52
Regat: Chunjo
Aprecieri: 334  
Mulţumiri: 54529  
Discord: Copiază ID
Medalii

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;
If you talk to a man in a language he understands, that goes to his head. If you talk to him in his own language, that goes to his heart.
Imagine
ENJOY
Imagine
Afișează semnătura
Avatar utilizator
[Dionise]
Utilizator interzis !

Utilizator interzis !
Mesaje: 722
Membru din: 10 Sep 2015, 22:10
Server: Ankarya
Aprecieri: 1  
Mulţumiri: 6  
 Contact:
Medalii

Merge :) l-am testat mai de mult
Închis
Răspunsuri
4
Vizualizări
1165
Răspunsuri
3
Vizualizări
545
Răspunsuri
5
Vizualizări
585

Înapoi la “Arhivă”

  • Informaţie
  • Cine este conectat

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