farkmt2official 1
farkmt2official
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
BlackFullMoon 1
BlackFullMoon
Hikaye Ekle

Şampiyon pet Güncellemesi sontiex

  • Konuyu başlatan Konuyu başlatan Kronikmorgan
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 15
  • Görüntüleme Görüntüleme 359

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

Owsap v6 filesini geliştirmeye çalışıyorum ve Normal pet sistemini Şampiyon için güncellemeler yapıyorum ve Eklemeler yaptım şampiyon evrimi için grow_pet sisteminde wiki üzerinden takip ederek yaptım

3 gündür uğraşıyorum sp yerine atağa çevirdim Önce Pet arayüzü için uğraştım sonra ve yaptığım kodlarda herşeyi tek tek belirttim bir sorun olursa diye tek tek herşeyi isimlendirdim exp tablosundan uzmanlık havuzuna kadar herşeyi isimlendirip not halinde yazdım


son güncelleme

0328_141421.jpg
0328_141421.jpg
0328_141417.jpg
0328_141439.jpg
0328_141558.jpg
0328_141601.jpg





0328_141602.jpg


31.03.2026 güncelle me sonu



0331_222436.jpg
 
Son düzenleme:
nakliye kutusu tooltiplerin hepsi ayarlandı sadece level çekmede sorun var orasıda hallolunca tamam
 

Ekli dosyalar

  • 0328_141745.jpg
    0328_141745.jpg
    679.9 KB · Görüntüleme: 0
yapıyoruz işte birşeyler sadece leveli veremedim örnek bir kod
[CODE title="kod"]
void CGrowthPet::UpdateChampionStats()
{
DWORD dwChampLevel = GetPetPoint(POINT_UPBRINGING_CHAMPION_LEVEL);
if (dwChampLevel == 0) return;

ChangePetPoint(POINT_UPBRINGING_CHAMP_RES, 5 + (dwChampLevel * 2), true, true);
ChangePetPoint(POINT_UPBRINGING_CHAMP_HIT, 10 + (dwChampLevel * 3), true, true);
ChangePetPoint(POINT_UPBRINGING_CHAMP_METIN, 2 + (dwChampLevel * 1), true, true);
}

void CGrowthPet::RequestToGrantPotential(TItemPos eggPos)
{
if (!m_pOwner || !IsChampion()) return;

if (!m_pSummonItem || !IsSummoned()) return;

LPITEM pEgg = m_pOwner->GetInventoryItem(eggPos.cell);
if (!pEgg) return;

DWORD champLevel = GetPetPoint(POINT_UPBRINGING_CHAMPION_LEVEL);
BYTE bSlotIndex = 255;

if (champLevel >= 1 && m_aPotentialSkill[0].dwEggVnum == 0) bSlotIndex = 0;
else if (champLevel >= 15 && m_aPotentialSkill[1].dwEggVnum == 0) bSlotIndex = 1;

if (bSlotIndex == 255) return;

DWORD dwEggVnum = pEgg->GetVnum();

auto it = g_PetPotentialSkillPool.find(m_pSummonItem->GetValue(0)); // Petin kendi Vnum'una göre havuz ara
if (it == g_PetPotentialSkillPool.end() || it->second.empty())
{
m_pOwner->ChatPacket(CHAT_TYPE_INFO, "Bu petin henuz kesfedilmis bir uzmanlik havuzu yok.");
return;
}

int randomSkillIndex = number(0, it->second.size() - 1);
DWORD dwSelectedSkill = it->second[randomSkillIndex];


BYTE bMaxLevel = GetMaxPotentialSkillLevel(champLevel);

m_aPotentialSkill[bSlotIndex].dwEggVnum = dwEggVnum;
m_aPotentialSkill[bSlotIndex].dwSkillVnum = dwSelectedSkill;
m_aPotentialSkill[bSlotIndex].bSkillLevel = number(1, bMaxLevel); // Şampiyon seviyesine göre zarlar


int randomHours = number(2, 6);
m_aPotentialSkill[bSlotIndex].tExpireTimestamp = get_global_time() + (randomHours * 3600);

pEgg->SetCount(pEgg->GetCount() - 1);
SendPotentialUpdatePacket(bSlotIndex);

ClearAffect();
RefreshAffect();
}

void CGrowthPet::RequestToRemovePotential(BYTE bSlotIndex)
{
if (!m_pOwner || bSlotIndex >= PET_POTENTIAL_SLOT_MAX) return;

if (m_aPotentialSkill[bSlotIndex].dwEggVnum == 0) return;

memset(&m_aPotentialSkill[bSlotIndex], 0, sizeof(TPotentialSkill));

SendPotentialUpdatePacket(bSlotIndex);
m_pOwner->ChatPacket(CHAT_TYPE_INFO, "Uyanis yetenegi kaldirildi.");
ClearAffect();
RefreshAffect();
}

void CGrowthPet::SendPotentialUpdatePacket(BYTE bSlotIndex)
{
if (!m_pOwner) return;

TPacketGCPetPotentialUpdate pack;
pack.header = HEADER_GC_PET_POTENTIAL_UPDATE;
pack.dwID = m_dwID;
pack.bSlotIndex = bSlotIndex;
memcpy(&pack.potentialSkill, &m_aPotentialSkill[bSlotIndex], sizeof(TPotentialSkill));

m_pOwner->GetDesc()->Packet(&pack, sizeof(pack));
}[/CODE]
 
mesela potansiyel pencere için yazdığım
[CODE title="kod class"]class PetPotentialFeedWindow(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.slotIndex = -1

self.eggWindow = -1
self.eggSlotNum = -1
self.tooltipItem = uiToolTip.ItemToolTip()
self.__LoadWindow()

def __LoadWindow(self):
self.AddFlag("movable")
self.AddFlag("float")

self.board = ui.BoardWithTitleBar()
self.board.SetParent(self)
self.board.SetSize(180, 140)
self.board.SetTitleName("Uyanis (Potansiyel)")
self.board.SetCloseEvent(ui.__mem_func__(self.Close))
self.board.Show()
self.SetSize(180, 140)

self.eggSlot = ui.SlotWindow()
self.eggSlot.SetParent(self.board)
self.eggSlot.SetPosition(74, 45)
self.eggSlot.AppendSlot(0, 0, 0, 32, 32)
self.eggSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.OnSelectEmptySlot))
self.eggSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.OnSelectItemSlot))
self.eggSlot.SetOverInItemEvent(ui.__mem_func__(self.OnOverInItem))
self.eggSlot.SetOverOutItemEvent(ui.__mem_func__(self.OnOverOutItem))
self.eggSlot.Show()

self.btnFeed = ui.Button()
self.btnFeed.SetParent(self.board)
self.btnFeed.SetPosition(45, 95)
self.btnFeed.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
self.btnFeed.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
self.btnFeed.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
self.btnFeed.SetText("Uyanis Sagla")
self.btnFeed.SetEvent(ui.__mem_func__(self.OnFeed))
self.btnFeed.Show()

def Open(self, slotIndex):
self.slotIndex = slotIndex
self.eggItemPos = player.ItemPos(-1, -1)
self.eggSlot.ClearSlot(0)
self.Show()
self.SetTop()

def Close(self):
self.Hide()

def OnSelectEmptySlot(self, slotIndex):
if mouseModule.mouseController.isAttached():
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedItemIndex = mouseModule.mouseController.GetAttachedItemIndex()

item.SelectItem(attachedItemIndex)
if item.GetItemType() == item.ITEM_TYPE_PET and item.GetItemSubType() == item.PET_EGG:
self.eggWindow = player.INVENTORY
self.eggSlotNum = attachedSlotPos
self.eggSlot.SetItemSlot(0, attachedItemIndex, 1)
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Buraya sadece uygun bir Pet Yumurtasi koyabilirsin.")
mouseModule.mouseController.DeattachObject()

def OnSelectItemSlot(self, slotIndex):
self.eggWindow = -1
self.eggSlotNum = -1
self.eggSlot.ClearSlot(0)

def OnFeed(self):
if self.eggSlotNum != -1:
net.SendPetAddPotentialPacket(self.eggWindow, self.eggSlotNum)
self.Close()
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Lutfen once bir yumurta yerlestirin.")

def OnFeed(self):
if self.eggItemPos.IsValidItemPosition():
net.SendPetAddPotentialPacket(self.eggItemPos.window_type, self.eggItemPos.cell)
self.Close()
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Lutfen once bir yumurta yerlestirin.")

def OnOverInItem(self, slotIndex):
if self.eggItemPos.IsValidItemPosition() and self.tooltipItem:
self.tooltipItem.SetInventoryItem(self.eggItemPos.cell)

def OnOverOutItem(self):
if self.tooltipItem:
self.tooltipItem.HideToolTip()
[/CODE]

illaki eksiklerim vardır 3 günde bu kadar oluyor
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst