Oturma sistemi

  • Konuyu açan Konuyu açan pasha37
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 149

pasha37

Üye
Üye
Mesaj
72
Çözümler
3
Beğeni
131
Puan
714
Ticaret Puanı
0
Merhaba, uzun bir süre önce yaptığım sistemdi sanırım önceden düzgün bir şekilde paylaşan olmadı, aklıma gelmişken işine yarayan olabileceğini düşündüm. Sistem ve anlatım oldukça eski olduğundan ne kadar sorunsuz çalışır emin değilim, sorun yaşarsanız konu altından belirtebilirsiniz.



/sit komutu ile karakteri oturtabilir, /stand komutu ile kaldırabilirsiniz.

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
 

Dosya Eklentileri

Son düzenleme:
Geliştirmeye çok açık sistem, afk kişi otomatik oturtulabilir, yada oturunca hızlı mana ve can dolduran affectler verilebilir
 
Oyuncu otururken oyuna yeni giren başka oyuncu ya da haritanın yüklenmemiş bölgesindeyse yanına geldiğinde o kişiyi otururken görmüyor bunun çözümü var mıdır?
 
Oyuncu otururken oyuna yeni giren başka oyuncu ya da haritanın yüklenmemiş bölgesindeyse yanına geldiğinde o kişiyi otururken görmüyor bunun çözümü var mıdır?
Bu olay diğer tüm duygular için de geçerli. Bir oyuncu dans ederken başka bir oyuncu oyuna girdiğinde veya dediğin gibi daha sonra görüş açısına girdiğinde diğer oyuncunun dans ettiği görünmüyor.
 
Geliştirmeye çok açık sistem, afk kişi otomatik oturtulabilir, yada oturunca hızlı mana ve can dolduran affectler verilebilir
Just like Allods Online :P

Allods_241011_133237.webp
 
Oyuncu otururken oyuna yeni giren başka oyuncu ya da haritanın yüklenmemiş bölgesindeyse yanına geldiğinde o kişiyi otururken görmüyor bunun çözümü var mıdır?
pozisyonu server tarafında "m_pointsInstant.position" kısmına kaydediyor "TPacketGCCharacterUpdate" paketi üzerinden bu pozisyonu ileterek client kısmında aşağıdaki kodlar ile yönlendirebilirsiniz
C++:
Genişlet Daralt Kopyala
if (packet.position == 4)
    pChrInstance->StartSitLoop();
else if (packet.position == 0 && pChrInstance->IsSitting())
    pChrInstance->BreakSitLoop();
 
En son bir moderatör tarafından düzenlenmiş:
Merhaba, uzun bir süre önce yaptığım sistemdi sanırım önceden düzgün bir şekilde paylaşan olmadı, aklıma gelmişken işine yarayan olabileceğini düşündüm. Sistem ve anlatım oldukça eski olduğundan ne kadar sorunsuz çalışır emin değilim, sorun yaşarsanız konu altından belirtebilirsiniz.



/sit komutu ile karakteri oturtabilir, /stand komutu ile kaldırabilirsiniz.

Alıntılarda özel içerikler gözükmez.


Teşekkürler eline sağlık
 
pozisyonu server tarafında "m_pointsInstant.position" kısmına kaydediyor "TPacketGCCharacterUpdate" paketi üzerinden bu pozisyonu ileterek client kısmında aşağıdaki kodlar ile yönlendirebilirsiniz
C++:
Genişlet Daralt Kopyala
if (packet.position == 4)
    pChrInstance->StartSitLoop();
else if (packet.position == 0 && pChrInstance->IsSitting())
    pChrInstance->BreakSitLoop();
O kadar kodlama bilgim yok ama yine de teşekkür ederim.
 
O kadar kodlama bilgim yok ama yine de teşekkür ederim.


char.cpp aç

arat:
C++:
Genişlet Daralt Kopyala
    pack.awPart[CHR_EQUIPPART_ARMOR] = GetPart (PART_MAIN);

üstüne ekle
C++:
Genişlet Daralt Kopyala
    pack.getposition = GetPosition();

packet.h aç

Ara:
C++:
Genişlet Daralt Kopyala
typedef struct packet_update_char
{
    BYTE        header;
    DWORD        dwVID;

    WORD        awPart[CHR_EQUIPPART_NUM];

Altına Ekle
C++:
Genişlet Daralt Kopyala
    BYTE    getposition;

Client/UserInterface/Packet.h aç

Ara:
C++:
Genişlet Daralt Kopyala
typedef struct packet_update_char
{
    BYTE        header;
    DWORD        dwVID;

    WORD        awPart[CHR_EQUIPPART_NUM];
Altına Ekle:

C++:
Genişlet Daralt Kopyala
    BYTE    getposition;

PythonNetworkStreamPhaseGameActor.cpp aç

Ara:

C++:
Genişlet Daralt Kopyala
bool CPythonNetworkStream::RecvCharacterUpdatePacket()
{

kod bloğunun sonunda bul

C++:
Genişlet Daralt Kopyala
__RecvCharacterUpdatePacket (&kNetUpdateActorData);

Altına Ekle:

C++:
Genişlet Daralt Kopyala
if (chrUpdatePacket.getposition == 4)
{
    CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
    CInstanceBase * pChrInstance = rkChrMgr.GetInstancePtr(chrUpdatePacket.dwVID);
if (pChrInstance)
    pChrInstance->StartSitLoop();
}
 
En son bir moderatör tarafından düzenlenmiş:
Üst