Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...

PENTAGRAM

Uzaklaştırılmış
  • İçerik sayısı

    451
  • Katılım

  • Son ziyaret

  • Günün Kazananı

    57
  • Puan

    287 [ Bağış Yap ]

PENTAGRAM kullanıcısının paylaşımları

  1. PENTAGRAM

    Gab ve Faun Hk ufakbir soru

    Normale dönmüyor ise, RemoveType4Buff'ta bir sorun vardır. State change'nin gönderildiğinden emin ol. case BUFF_TYPE_KAUL_TRANSFORMATION: // Transforms the target into a Kaul (a pig thing), preventing you from /town'ing or attacking, but increases defense. if (pTarget->isPlayer()) { pTarget->m_bIsKaul = false; pTarget->m_sACAmount -= 500; pTarget->StateChangeServerDirect(3, TO_USER(pTarget)->m_nOldAbnormalType); } break;
  2. PENTAGRAM

    [Yardım] Giriş Sistemi Hk.

    Giriş yapmış olan üyelikleri bir tabloda tutman gerekiyor, örneğin şu şekilde olsun. -- Kullanımda olan hesap tablosu CREATE TABLE ANLIK_KULLANICILAR( kullanici_adi varchar(21) PRIMARY KEY, ip_adresi varchar(50) NOT NULL, token_degeri varchar(64) NOT NULL, token_gecerlilik bigint NOT NULL ) Kullanıcının id ve password değerini doğruladıktan sonra, kullanıcı için rastgele bir 64 karakterlik string değeri oluşturup, bir de geçerlilik süresi vererek ANLIK_KULLANICILAR tablosuna kaydetmelisin. Giriş esnasında, eğer kullanıcı ANLIK_KULLANICILAR tablosunda ise, ve token geçerlilik süresi henüz dolmamış ise, yalnızca daha önceki girişte üretilmiş token ile login olunabilir. Bu sayede, ilk giriş yapan kişiyi, diğerlerinden ayırt edebilirsin. Eğer token geçerlilik süresi dolmuş ise, parola ile girişe izin verirsin. Token geçerlilik değeri, UNIX TIMESTAMP şeklinde gelecekteki bir tarihtir. Dilersen normal datetime olarak da kullanabilirsin bunu, sütun veri tipini değiştirmek kaydıyla. Eğer kullanıcı logout olmak isterse, kullanıcıdan oturuma ait token değerini istemeliyiz. Eğer token değeri doğru ise, kullanıcıya ait ANLIK_KULLANICILAR tablosundaki satırı siliyoruz. Doğru değil ise, işlem yapmıyoruz. Kabaca böyle bir sistem kurguladım, bunu kendi mekanizmana uyarlarsın. Kolay gelsin.
  3. User.h içerisine void CanChangeHair(Packet & pkt); ekle.
  4. PENTAGRAM

    ftp open file error

    Filezilla kullanırken, anonymous hesabı için erişim verdin mi?
  5. @ xterme, problemi çözebildiniz mi?
  6. PENTAGRAM

    [1298] Banka başlangıç ayarlama

    @ Orçun, konunun son durumu nedir? Problemini çözebildin mi?
  7. PENTAGRAM

    ftp open file error

    @ bylavira, problemin durumu nedir? Çözüm sağlayabildiniz mi?
  8. PENTAGRAM

    Gab ve Faun Hk ufakbir soru

    MORAL_SELF'te yapılan if (nSkillID != 491067 || nSkillID != 491068 || nSkillID != 491069) kontrolü anlamsız. 491067 - Unsight, Moral : 7 (MORAL_ENEMY) 491068 - Adamant, Moral : 1 (MORAL_SELF) 491069 - Divine Protection, Moral 1 (MORAL_SELF) Adamant ve Divine Protection için pSkillCaster == pSkillTarget koşulu sağlanmak durumunda, çünkü bu skill'in moral değeri SELF olarak ayarlı. Problemine dönecek olursak, örnek olması açısından kendi OnAttack, OnDefend ve TriggerProcItem fonksiyonlarımı veriyorum. void CPlayer::OnAttack(Unit * pTarget, AttackType attackType) { if (!pTarget->isPlayer() || attackType == AttackTypeMagic) return; // Trigger weapon procs for the attacker on attack static const uint8 itemSlots[] = { KOInventorySlots::HAND_RIGHT, KOInventorySlots::HAND_LEFT }; foreach_array (i, itemSlots) { // If we hit an applicable weapon, don't try proc'ing the other weapon. // It is only ever meant to proc on the dominant weapon. if (TriggerProcItem(itemSlots[i], pTarget, TriggerTypeAttack)) break; } } void CPlayer::OnDefend(Unit * pAttacker, AttackType attackType) { if (!pAttacker->isPlayer()) return; // Trigger defensive procs for the defender when being attacked static const uint8 itemSlots[] = { KOInventorySlots::HAND_LEFT ,KOInventorySlots::EAR_RIGHT, KOInventorySlots::EAR_LEFT }; foreach_array (i, itemSlots) TriggerProcItem(itemSlots[i], pAttacker, TriggerTypeDefend); } /** * @brief Trigger item procs. * * @param bSlot Slot of item to attempt to proc. * @param pTarget Target of the skill (attacker/defender depending on the proc type). * @param triggerType Which type of item to proc (offensive/defensive). * * @return true if there's an applicable item to proc, false if not. */ bool CPlayer::TriggerProcItem(uint8 bSlot, Unit * pTarget, ItemTriggerType triggerType) { // Don't proc weapon skills if our weapon is disabled. if (triggerType == TriggerTypeAttack && BuffManager.Type4().isWeaponsDisabled()) return false; // Ensure there's an item in this slot, _ITEM_DATA * pItem = GetItem(bSlot); if (pItem == nullptr // and that it doesn't need to be repaired. || pItem->sDurability == 0) return false; // not an applicable item // Ensure that this item has an attached proc skill in the table const _ITEM_OP * pData = CDataPool::GetItemSkillTriggerData(pItem->nNum); if (pData == nullptr // no skill to proc || pData->bTriggerType != triggerType) // don't use an offensive proc when we're defending (or vice versa) return false; // not an applicable item // At this point, we have determined there is an applicable item in the slot. // Should it proc now? (note: CheckPercent() checks out of 1000) if (!CheckPercent(pData->bTriggerRate * 10)) return true; // it is an applicable item, it just didn't proc. No need to proc subsequent items. MagicInstance instance; instance.bIsItemProc = true; instance.sCasterID = GetID(); if(pData->nSkillID == 460006) instance.sTargetID = GetID(); else instance.sTargetID = pTarget->GetID(); instance.nSkillID = pData->nSkillID; // For AOE skills such as "Splash", the AOE should be focus on the target. instance.sData[0] = static_cast(pTarget->GetX()); instance.sData[2] = static_cast(pTarget->GetZ()); instance.slZoneInstanceID = GetInstanceID(); instance.bZoneSubID = GetSubZoneID(); instance.bZoneID = GetZoneID(); instance.Run(); return true; // it is an applicable item, and it proc'd. No need to proc subsequent items. }
  9. PENTAGRAM

    Gab ve Faun Hk ufakbir soru

    Aztec Gold Faun'un özelliği, hedefi 'Undead' yapmasıdır. Yani, tuttuğunda rakibin kullandığı pot ve aldığı heal, damage olarak işler. Eğer ki senin dosyalarında Aztec Gold Faun, Kaul'e dönüştürüyorsa zaten bir sıkıntı var demektir. Normalde Kaul Faun'un özelliğidir o.
  10. MAGIC_TYPE6 tablosundaki skilli kullanabilecek sınıflar sütununu kontrol et. Aynı zamanda, scroll idsinin skillin BeforeAction değeri ile uyuştuğundan emin ol.
  11. PENTAGRAM

    PUS item alma hk

    @ byxox; Çözümü bizlerle paylaştığın için teşekkür ederiz. Konu 'çözüldü' olarak işaretlenmiştir.
  12. Aslında AI'ye zaten paket gidiyor. O yüzden saldırı aldığında, AIServer'a otomatik olarak NPC'yi uyandırmasının söyleyebilirsin. Kendi altyapımda aiserver-gameserver birleşik olduğu için, elimde var olan başka bir source üzerinden anlatacağım. void CNpc::RecvAttackReq(int nDamage, uint16 sAttackerID, AttributeType attributeType /*= AttributeNone*/) { if (isDead() || nDamage return; Unit * pAttacker = g_pMain->GetUnitPtr(sAttackerID); if (pAttacker != nullptr && pAttacker->isPlayer()) { Guard lock(m_damageListLock); m_DamagedUserList[pAttacker->GetID()] += nDamage; } m_TotalDamage += nDamage; HpChange(-nDamage, pAttacker, false); if (pAttacker == nullptr) return; if (!pAttacker->isPlayer()) { ChangeNTarget(TO_NPC(pAttacker)); return; } if (attributeType == AttributeLightning && m_NpcState != NPC_FAINTING) { int iRandom = myrand(1, 100); int iLightningR = (int)(10 + (40 - 40 * ((double)m_sLightningR / 80))); if (COMPARE(iRandom, 0, iLightningR)) { m_NpcState = NPC_FAINTING; m_Delay = 0; m_tFaintingTime = UNIXTIME; } else { ChangeTarget(0, TO_USER(pAttacker)); } } } Yukarıdaki fonksiyonun sonuna if(m_NpcState == NPC_SLEEPING){ m_NpcState = NPC_STANDING; ChangeTarget(0, TO_USER(pAttacker)); } kodunu eklersen, NPC saldırı aldığında NPC state eğer NPC_SLEEPING ise, state NPC_STANDING olarak güncellenecek, ve daha sonra ChangeTarget fonksiyonu tetiklenecektir (NPC_ATTACKING, NPC_FIGHTING bu fonksiyon tarafından ayarlanır) Sonuç :
  13. @ donz05, her iki sourcedeki alakalı kısımları buraya atarsan sana daha iyi yardımcı olabiliriz.
  14. Merhabalar değerli KODevelopers üyeleri, Bugün, forum içerisindeki olaylardan anlık olarak bilgilendirme alabileceğiniz, arama yapabileceğiniz ve profilinizi daha kolay yönetebileceğiniz bildirim çubuğunu aktifleştirdik. Bildirim çubuğu, eski bildirim sisteminin yerini alacaktır. Bu alandaki bildirimler hesabınıza anlık olarak iletilir. Bildirim almak için sayfayı güncellemeniz gerekmez. Bildirim çubuğu 6 ayrı alandan oluşur. Bildirimler alanı Bu alana, bahsedildiğiniz konular, açtığınız konulara yazılan cevaplar, aldığınız teşekkürler gibi genel bildirimler düşer. Bildirim ayarları alanından hangi bildirimleri almak istediğinizi seçebilirsiniz. Bildirim ayarları Seçili olan ayarlar için bildirim alırsınız. Özel mesaj bildirimleri Başka bir üye size özel mesaj gönderdiğinde, bildirimi bu kısımda belirecektir. Arkadaşlık istekleri Diğer üyelerimizin size yollamış olduğu arkadaşlık istekleri. Hızlı arama kutusu Forum içerisinde hızlıca arama yapabilirsiniz. Profil menüsü Profiliniz ile alakalı ayarlar, parola, imza, profil resmi vb. Sistem 1 hafta test edildikten sonra, eski bildirim sistemi tamamen kaldırılacaktır. Bildirim çubuğu ile ilgili yaşadığınız sıkıntıları bu konu altından bildirebilirsiniz. Hepinize iyi forumlar dilerim.
  15. Paket oraya eklenmeyecek, ki gördüğün üzere AIServer içerisindesin, ve yarattığın paketi göndermemişsin dahi. Aşağıdaki blogu fonksiyondan kaldır. Packet result(AG_MONSTER_SET_SLEEP); result << uint16(GetID()) << uint8(1); return false; NPC'yi tekrardan uyandırmak için yine gameserver'dan paket göndermen gerekecek. NPC saldırı aldığında, AIServer'a paket gidiyor olması lazım zaten. O paketin handler fonksiyonu içerisinde, eğer NPC durumu sleeping ise, durumu NPC_STANDING olarak ayarlamalısın.
  16. Merhabalar KODevelopers ailesi, Aşağıda forum içerisinde isim değişikliğinde bulunan bütün üyelerimizi alfabetik sıralı halde bulabilirsiniz. gandaf82 -> @ AVCIKURT (üyenin talebine istinaden 14 Kasım 2017 tarihinde PENTAGRAM tarafından yapıldı) hiCenglyy -> @ CENGLYY (21 Ağustos 2017 tarihinde üye tarafından kredi ile yapıldı) yigidsen -> @ Magna (üyenin talebine istinaden 31 Ekim 2017 tarihinde PENTAGRAM tarafından yapıldı) Unrighteous -> @ Orçun (üyenin talebine istinaden 18 Kasım 2017 tarihinde PENTAGRAM tarafından yapıldı) Tardu -> @ infiltrate (üye tarafından 31 Aralık 2017 tarihinde yapıldı) Bu liste, muhtemel karışıklığa yol açabilecek durumlar için referans oluşturması amacıyla hazırlanmıştır. İyi forumlar.
  17. Merhabalar @ AVCIKURT; gandaf82 olan kullanıcı adınız bir seferliğe mahsus olmak üzere AVCIKURT değiştirilmiştir. KODevelopers yönetimi olarak iyi forumlar dileriz.
  18. NPC_SLEEPING durumu için tanımlanmış bir fonksiyon var mı?
  19. Önce yeni bir opcode tanımla. Örneğin; #define AG_MONSTER_SET_SLEEP 0xCC Daha sonra paket yapısını oluştur. Packet result(AG_MONSTER_SET_SLEEP); result <GetID()) ; // Uyutulacak/uyandırılacak npc idsi result << uint8(1); // 1 = uyuyor / 0 = uyanık g_pMain->Send2AI(result); // ai server'a gönder (pnpc-> AIServer paket handler fonksiyonuna yeni opcode için case ekle case AG_MONSTER_SET_SLEEP: { uint16 sTargetNpcID = pkt.read(); uint8 status = pkt.read(); CNpc * pNpc = g_AIServer->GetNpcPtr(sTargetNpcID); if(!pNpc) return; pNpc->m_NpcState = status == 1 ? NPC_SLEEPING:NPC_STANDING; } break; Fonksiyon adları farklılık gösterebilir, tamamen kafamda kurguladım. Tabi, ufak bir detay daha var. NPC'nin bulunduğu regiona 'zzz' efektini göstermek amacıyla WIZ_STATE_CHANGE paketini de göndermen lazım. Şimdiden kolay gelsin.
  20. PENTAGRAM

    Basit Süre Sistemi

    Konuyu okumayı unutmuşsun resul. a
  21. Rica ederim. Konu çözümlendiği için kapatılmış, ve çözülen sorunlar forumuna taşınmıştır.
  22. Raporu aldım. Başlat, çalıştır, regedit.exe yazdıktan sonra HKEY_CURRENT_USER\Software\KODevelopers\ anahtarını bul ve sağ tıklayıp sil. Editörü baştan aç ve alttaki iki kutucuğun işaretli olduğundan emin ol, giriş yap.
  23. Send error report butonuna bas, inceleyeyim ben.
  24. Sorunun neden kaynaklandığını da yazarsan, aynı problemi yaşayan arkadaşlar fikir sahibi olabilir konu hakkında.
×
×
  • Yeni Oluştur...