KO Developers

Go Back   KO Developers > Mini KO Forum (Yardım & İstek) > Genel Yardım


Genel Yardım KO PvP Server geliştirme hakkında sorunlarınız, yaşadığınız problemler ve daha önceden çözülmüş sorunların detaylı anlatımının bulunduğu alt forum.


Cevapla
LinkBack Seçenekler Stil
Okunmamış 15 Kasım 2017, 03:29   #11 (permalink)
Bağımlı Üye

CerfiN - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 12 Temmuz 2017
Bulunduğu yer: Antalya
Mesajlar: 324[+]
Kredi Bakiyeniz: 9.635
Ettiği teşekkür sayısı: 63
56 Mesaja 64 Kez Teşekkür Aldı

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Alıntı:
PENTAGRAM Nickli Üyeden Alıntı Mesajı göster
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.
cpp Kod:
  1. Packet result(AG_MONSTER_SET_SLEEP);
  2.     result << uint16(GetID()) << uint8(1);
  3.     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.
NPC'nin saldırı aldığında AI'ye nasıl paket gönderdiğini bulamadım. Mobları uyuttuktan sonra ilk dalışımda oda bana dalıyor ama tekrar uyuttuğumda dalmıyor.
CerfiN isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 18 Kasım 2017, 18:05   #12 (permalink)
Normal Üye

Avatar Yok


Üyelik tarihi: 25 Ekim 2017
Mesajlar: 112[+]
Kredi Bakiyeniz: 2.515
Ettiği teşekkür sayısı: 3
0 Mesaja 0 Kez Teşekkür Aldı

Standart Cevap: Priest Uyutma Skilli

Hey friend,can you tell me how to cancel the 'zzz' effect? i just know how to send 'zzz' effect to the monster。Thanks.
y396com isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 18 Kasım 2017, 18:07   #13 (permalink)
Bağımlı Üye

CerfiN - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 12 Temmuz 2017
Bulunduğu yer: Antalya
Mesajlar: 324[+]
Kredi Bakiyeniz: 9.635
Ettiği teşekkür sayısı: 63
56 Mesaja 64 Kez Teşekkür Aldı

Standart Cevap: Priest Uyutma Skilli

Alıntı:
y396com Nickli Üyeden Alıntı Mesajı göster
Hey friend,can you tell me how to cancel the 'zzz' effect? i just know how to send 'zzz' effect to the monster。Thanks.
How do I send the effect I have not done it yet
CerfiN isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 19 Kasım 2017, 07:28   #14 (permalink)

PENTAGRAM - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 04 Temmuz 2017
Mesajlar: 361[+]
Ettiği teşekkür sayısı: 83
177 Mesaja 582 Kez Teşekkür Aldı
Kullanıcı Envanteri Renkli konu başlığı (aylık)Kişisel Rütbe Şekillendirme (kalıcı)İsim Şekillendirme (kalıcı)Sabit Konu (Haftalık)Server Tanıtımı Alt Forum (Aylık)

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Alıntı:
CerfiN Nickli Üyeden Alıntı Mesajı göster
NPC'nin saldırı aldığında AI'ye nasıl paket gönderdiğini bulamadım. Mobları uyuttuktan sonra ilk dalışımda oda bana dalıyor ama tekrar uyuttuğumda dalmıyor.
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.

cpp Kod:
  1. void CNpc::RecvAttackReq(int nDamage, uint16 sAttackerID, AttributeType attributeType /*= AttributeNone*/)
  2. {
  3.     if (isDead()
  4.         || nDamage < 0)
  5.         return;
  6.  
  7.     Unit * pAttacker = g_pMain->GetUnitPtr(sAttackerID);
  8.  
  9.     if (pAttacker != nullptr
  10.         && pAttacker->isPlayer())
  11.     {
  12.         Guard lock(m_damageListLock);
  13.         m_DamagedUserList[pAttacker->GetID()] += nDamage;
  14.     }
  15.  
  16.     m_TotalDamage += nDamage;
  17.     HpChange(-nDamage, pAttacker, false);
  18.  
  19.     if (pAttacker == nullptr)
  20.         return;
  21.  
  22.     if (!pAttacker->isPlayer())
  23.     {
  24.         ChangeNTarget(TO_NPC(pAttacker));
  25.         return;
  26.     }
  27.  
  28.     if (attributeType == AttributeLightning
  29.         && m_NpcState != NPC_FAINTING)
  30.     {
  31.         int iRandom = myrand(1, 100);
  32.         int iLightningR = (int)(10 + (40 - 40 * ((double)m_sLightningR / 80)));
  33.         if (COMPARE(iRandom, 0, iLightningR))
  34.         {
  35.             m_NpcState = NPC_FAINTING;
  36.             m_Delay = 0;
  37.             m_tFaintingTime = UNIXTIME;
  38.         }
  39.         else   
  40.         {
  41.             ChangeTarget(0, TO_USER(pAttacker));
  42.         }
  43.     }
  44. }

Yukarıdaki fonksiyonun sonuna

cpp Kod:
  1. if(m_NpcState == NPC_SLEEPING){
  2.         m_NpcState = NPC_STANDING;
  3.         ChangeTarget(0, TO_USER(pAttacker));
  4.     }

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ç :

Spoiler Spoiler:

__________________

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.

'You' are only your limit.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] |
İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
| skype | [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
PENTAGRAM isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 19 Kasım 2017, 10:21   #15 (permalink)
Normal Üye

Avatar Yok


Üyelik tarihi: 25 Ekim 2017
Mesajlar: 112[+]
Kredi Bakiyeniz: 2.515
Ettiği teşekkür sayısı: 3
0 Mesaja 0 Kez Teşekkür Aldı

Standart Cevap: Priest Uyutma Skilli

Alıntı:
y396com Nickli Üyeden Alıntı Mesajı göster
Hey friend,can you tell me how to cancel the 'zzz' effect? i just know how to send 'zzz' effect to the monster。Thanks.


I've solved it by myself,thank you.
-- mesaja ek olarak --
Alıntı:
CerfiN Nickli Üyeden Alıntı Mesajı göster
How do I send the effect I have not done it yet
send a packet with "WIZ_STATE_CHANGE" opcode,type 4 is sleep.
y396com isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 19 Kasım 2017, 14:00   #16 (permalink)
Bağımlı Üye

CerfiN - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 12 Temmuz 2017
Bulunduğu yer: Antalya
Mesajlar: 324[+]
Kredi Bakiyeniz: 9.635
Ettiği teşekkür sayısı: 63
56 Mesaja 64 Kez Teşekkür Aldı

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Alıntı:
PENTAGRAM Nickli Üyeden Alıntı Mesajı göster
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.

cpp Kod:
  1. void CNpc::RecvAttackReq(int nDamage, uint16 sAttackerID, AttributeType attributeType /*= AttributeNone*/)
  2. {
  3.     if (isDead()
  4.         || nDamage < 0)
  5.         return;
  6.  
  7.     Unit * pAttacker = g_pMain->GetUnitPtr(sAttackerID);
  8.  
  9.     if (pAttacker != nullptr
  10.         && pAttacker->isPlayer())
  11.     {
  12.         Guard lock(m_damageListLock);
  13.         m_DamagedUserList[pAttacker->GetID()] += nDamage;
  14.     }
  15.  
  16.     m_TotalDamage += nDamage;
  17.     HpChange(-nDamage, pAttacker, false);
  18.  
  19.     if (pAttacker == nullptr)
  20.         return;
  21.  
  22.     if (!pAttacker->isPlayer())
  23.     {
  24.         ChangeNTarget(TO_NPC(pAttacker));
  25.         return;
  26.     }
  27.  
  28.     if (attributeType == AttributeLightning
  29.         && m_NpcState != NPC_FAINTING)
  30.     {
  31.         int iRandom = myrand(1, 100);
  32.         int iLightningR = (int)(10 + (40 - 40 * ((double)m_sLightningR / 80)));
  33.         if (COMPARE(iRandom, 0, iLightningR))
  34.         {
  35.             m_NpcState = NPC_FAINTING;
  36.             m_Delay = 0;
  37.             m_tFaintingTime = UNIXTIME;
  38.         }
  39.         else   
  40.         {
  41.             ChangeTarget(0, TO_USER(pAttacker));
  42.         }
  43.     }
  44. }

Yukarıdaki fonksiyonun sonuna

cpp Kod:
  1. if(m_NpcState == NPC_SLEEPING){
  2.         m_NpcState = NPC_STANDING;
  3.         ChangeTarget(0, TO_USER(pAttacker));
  4.     }

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ç :

Spoiler Spoiler:
Teşekkür ederim ben direk olarak NpcSleeping içerisine ufak bir eklenti yapmıştım şu şekilde;

Kod:
	if (m_Target.id = m_TotalDamage > 0)
	{
		m_NpcState = NPC_STANDING;
		m_Delay = 0;
	}
tabi bu direk olarak uyandırıyordu olmadı çeviricem diğer koda.

Alıntı:
y396com Nickli Üyeden Alıntı Mesajı göster
I've solved it by myself,thank you.
-- mesaja ek olarak --


send a packet with "WIZ_STATE_CHANGE" opcode,type 4 is sleep.
Thank you now I will look at it.
CerfiN isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 22 Kasım 2017, 02:33   #17 (permalink)
Bağımlı Üye

CerfiN - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 12 Temmuz 2017
Bulunduğu yer: Antalya
Mesajlar: 324[+]
Kredi Bakiyeniz: 9.635
Ettiği teşekkür sayısı: 63
56 Mesaja 64 Kez Teşekkür Aldı

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Şu efekt mevzunu hala anlamadım. WIZ_STATE_CHANGE'i gönderirken npc uyuyorsa ona göre state durumunu yapmaya çalıştım da hala efekt vermedi. Zaten Type7 de ki alan skilleri çalışmıyor proveke de öyle. Muhtemelen efekt olmadığından.
CerfiN isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 07 Şubat 2018, 15:15   #18 (permalink)
Normal Üye

Avatar Yok


Üyelik tarihi: 16 Ekim 2017
Mesajlar: 227[+]
Kredi Bakiyeniz: 4.187
Ettiği teşekkür sayısı: 4
2 Mesaja 2 Kez Teşekkür Aldı

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Am I adding or not working?
mjw62335 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Okunmamış 07 Şubat 2018, 15:39   #19 (permalink)
while (true) { printf("f*ck this life!"); }

OzkanOzdemir - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 02 Temmuz 2017
Bulunduğu yer: Eskişehir
Mesajlar: 981[+]
Ettiği teşekkür sayısı: 38
311 Mesaja 872 Kez Teşekkür Aldı
Kullanıcı Envanteri Kişisel Rütbe (kalıcı)Sabit Konu (Aylık)Görünmezlik (kalıcı)Chat Yazılarınızı Düzenleyebilmeİmzada Resim Kullanma (kalıcı)

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Alıntı:
CerfiN Nickli Üyeden Alıntı Mesajı göster
Şu efekt mevzunu hala anlamadım. WIZ_STATE_CHANGE'i gönderirken npc uyuyorsa ona göre state durumunu yapmaya çalıştım da hala efekt vermedi. Zaten Type7 de ki alan skilleri çalışmıyor proveke de öyle. Muhtemelen efekt olmadığından.
AIServer üzerinde çalışıyorum şuan sıfırdan sade bir AIServer yazıyorum kendi kafama göre aslında mantığın tam nasıl olduğunu açıklayayım.

En başta AIServer.cpp THREADCALL içerisindeki döngünün başında isSleeping() kontrolüyle bakıyorum eğer ki Unit uyuyor ise herhangi bir işleme tabi tutmuyorum. Çünkü uyuduğu anda ne attack yapıyor ne yürüyor ne de etrafında düşman arıyor.

İkinci bir olay ise bende AIServer diye bir program yok birleşik olduğu için söyle anlatayım siz onu AIServer bildirmek zorundasınız. Siz Unite attack yaptığınızda HpChange olur yada hangi fonksiyonu kullanıyorsanız onun içerisine NpcState değerini değiştireceksiniz artık Sleeping olarak çıkacak.
Çıktıktan sonra yine AIServer.cpp içerisinde kontrole yakalanmayacak ve normal hareketlerine devam edecek yani uyanmış olacak.

Tabi uyuduğunu etrafa göstermek zorundasın bunun içinde uyutma skillini kullandığında nerede ne tetikleniyor dosyalarda neresinde switch case ile kontrol ediyor o skilli bulacaksın ondan sonra WIZ_STATE_CHANGE paketini atacaksın. Aşağıda vereceğim o sistemi ona göre bakarsınız.

Oyun içerisinde şöyle bir sıkıntı var eğer ki sen herhangi bir Unit'i uyutursan ve sonradan region dışı biri gelip Unit'i görürse onun uyuduğunu göremiyor. Böyle bir paket gitmiyor yani NPC_INOUT paketlerinin içerisinde uyuduğunu gösterecek herhangi bir değer yok. Yani town atmış yada sonradan yanına gelen birisi göremeyecek. Bunun içinde ben NPC_INOUT paketlerini gönderirken gönderdiği Unit SocketID std::set içerisine atıyorum. Ardından tüm NPC_INOUT gönderildikten sonra client taraflı bir paket tanımladım .dll yöntemiyle bunu siz tabi tek tek gönderebilirsiniz. Uyuyan Unit'leri sonradan etraftaki clientlere algılatıyorum.

Yani bu ne işe yarıyor. Ben wormu uyuttum ardından town attım geri geldim normalde worm hala uyuması gerekiyorken bende uyumuyor olarak gözüküyor. Kafasında zzZZ effecti çıkmıyor. Bu olay bunu engelliyor ve sorunsuz hale getiriyor.

Gizli Blok ( Görebilmek için giriş yapmış yapmalı ve 5 mesaja sahip olmalısınız. ):
Gizli içeriği görebilmek için istenilen özelliğe sahip değilsiniz.

__________________

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.
OzkanOzdemir isimli Üye şuanda  online konumundadır   Alıntı ile Cevapla
Okunmamış 07 Şubat 2018, 18:46   #20 (permalink)
Bağımlı Üye

CerfiN - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 12 Temmuz 2017
Bulunduğu yer: Antalya
Mesajlar: 324[+]
Kredi Bakiyeniz: 9.635
Ettiği teşekkür sayısı: 63
56 Mesaja 64 Kez Teşekkür Aldı

Standart Cevap: NPC_SLEEPING sistemini aktifleştirme (priest uyutma skilli)

Şuan birkez daha girip denedim ve bende olay şöyle. Yaratıkları tekli skill ile uyutuyorum uyuyorlar ve ben atak yapınca yada süresi bitince çözülüyorlar. Farklı zone dan farklı charlarla geçtiğim de yine aynı şekilde yaratıkları uyuyor olarak görüyorum. Ama efekt çıkmıyor ve toplu olarak uyutma şu anda aktif değil. Yukarıda ki fonksiyon üzerinde tekrar gözden geçiricem şu aralar BDW konusun da çalışıyordum o bitti sayılır tekrar dan bu konuya dönücem ama mantığımda tam oturması lazım.

@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

__________________
Life does not give everyone the same chance.
CerfiN isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Geçerli forum için yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Warrior scream skilli her vuruşta kilitliyor byxox Çözülen Konular 11 11 Ekim 2017 21:29


Forum Site Hakkında
vBulletin® tarafından desteklenmektedir Versiyon 3.8.4
Telif hakkı ©2000 - 2018, Jelsoft Enterprises Ltd.

Sitemizdeki içerikler kopyalanmaya karşı DMCA ile korunmaktadır. DMCA.com Protection Status
İçerik sağlayıcı paylaşım sitelerinden biri olan kodevelopers.com Forum Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. kodevelopers.com hakkında yapılacak tüm hukuksal Şikayetler için admin@kodevelopers.com Mail adresimiz üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde kodevelopers.com yönetimi olarak tarafımızdan gereken işlemler yapılacak ve Avukatımız size dönüş yapacaktır.
© 2017 KO Developers ( by NERONLINEWORLD 2011/2013 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171

Search Engine Friendly URLs by vBSEO 3.6.0