Primeiro Obrigado ao B4ruc.
Seguindo raciocionio fiz assim
Lembrando Source world, acho q a mais basica.
No Visual procurar "BI298" ,vale level unico.
vai achar
{ sinBI2 | sin98, "Vale Level", "BI298", ITEMSIZE 2, ITEMSIZE 1, "Premium", ITEM_CLASS_ECORE, "BI298", 0, SIN_SOUND_POTION },nessa source o item BI297 esta desativado, então
add nos dois side :
{ sinBI2 | sin97, "Vale Level Superior", "BI297", ITEMSIZE 2, ITEMSIZE 1, "Premium", ITEM_CLASS_ECORE, "BI297", 0, SIN_SOUND_POTION },no serverside procurar:
if (InvenItem[SelectInvenItemIndex - 1].sItemInfo.CODE == (sinBI2 | sin98))Adicionar:
if (InvenItem[SelectInvenItemIndex - 1].sItemInfo.CODE == (sinBI2 | sin98)) { if (chaPremiumitem.bUpdateTimeDelayFlag) { cMessageBox.ShowMessage(MESSAGE_NOT_DELAYTIME); return; } // trava: só funciona se o nível atual for MENOR que 110
if (sinChar->Level < 110) { DeleteInvenItemToServer(InvenItem[SelectInvenItemIndex - 1].sItemInfo.CODE, InvenItem[SelectInvenItemIndex - 1].sItemInfo.ItemHeader.Head, InvenItem[SelectInvenItemIndex - 1].sItemInfo.ItemHeader.dwChkSum); CheckCharForm(); sinChar->Level++; SetExp64(sinChar, ExpLevelTable[sinChar->Level - 1]); CodeXorCharInfo_Exp(); StartEffect(lpCurPlayer->pX, lpCurPlayer->pY + 32 fONE, lpCurPlayer->pZ, EFFECT_LEVELUP1); esPlaySound(7, 400); ReformCharForm(); SendPlayUpdateInfo(); SaveGameData(); cCharStatus.CheckLevel(); cMessageBox.ShowMessage("Você upou +1 nível!"); haCastleSkillUseFlag = 1; } else { cMessageBox.ShowMessage("Este vale só pode ser usado até o nível 110!"); } }
if (InvenItem[SelectInvenItemIndex - 1].sItemInfo.CODE == (sinBI2 | sin97)) { if (chaPremiumitem.bUpdateTimeDelayFlag) { cMessageBox.ShowMessage(MESSAGE_NOT_DELAYTIME); return; } // Nova trava: exige que o jogador seja no MÍNIMO nível 110 e menor que o máximo if (sinChar->Level >= 110 && sinChar->Level < CHAR_LEVEL_MAX) { DeleteInvenItemToServer(InvenItem[SelectInvenItemIndex - 1].sItemInfo.CODE, InvenItem[SelectInvenItemIndex - 1].sItemInfo.ItemHeader.Head, InvenItem[SelectInvenItemIndex - 1].sItemInfo.ItemHeader.dwChkSum); CheckCharForm(); sinChar->Level++; SetExp64(sinChar, ExpLevelTable[sinChar->Level - 1]); CodeXorCharInfo_Exp(); StartEffect(lpCurPlayer->pX, lpCurPlayer->pY + 32 fONE, lpCurPlayer->pZ, EFFECT_LEVELUP1); esPlaySound(7, 400); ReformCharForm(); SendPlayUpdateInfo(); SaveGameData(); cCharStatus.CheckLevel(); cMessageBox.ShowMessage("Você upou +1 nível superior!"); haCastleSkillUseFlag = 1; } else if (sinChar->Level < 110) { cMessageBox.ShowMessage("Você precisa ser nível 110 ou maior para usar este vale!"); } else if (sinChar->Level == CHAR_LEVEL_MAX) { cMessageBox.ShowMessage("Você já está no nível máximo!"); } }
Add o item bi297 com o nome que preferir na openitem
Add no seu cliente full sinimage/dropitem/premiun itbi297.bmp
ai no caso ta o vale normal bi298 ate 110 e o bi297 do 110 ate o seu level cap, aqui ta 150.