Oturma sistemi

  • Konuyu açan Konuyu açan pasha37
  • Açılış Tarihi Açılış Tarihi
  • Seçkin
  • Yanıt Yanıt 17
  • Gösterim Gösterim 525

pasha37

Üye
Üye
Mesaj
73
Çözümler
3
Beğeni
147
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ş:
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();
}
Sistemle beraber ekleyip dönüş yapacağım elinize sağlık
 
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();
}
Merhaba,

Burda yazılanları yaptım ama değişen bişey olmadı başka bir oyuncu teleport olunca ya da oyuna girdiğinde oturan oyuncuyu ayakta görüyor.

Sistem bende ekliydi fakat emotion olarak space tuşuna basınca kalkıyordu şimdi /otur /kalk olarak ayarladım daha iyi oldu teşekkür ederim.

Şöyle bir sorun buldum karekter oturduğunda biri pvp açıp saldırınca animasyon iptal oluyor ayağa kalkıyor.Ayağa kalkan oyuncu tekrar otur yazdığında oturma işlemi gerçekleşmiyor tekrar ayaktayken /kalk yazıp tekrar /otur yazmak gerekiyor.
 
Son düzenleme:
Merhaba,

Burda yazılanları yaptım ama değişen bişey olmadı başka bir oyuncu teleport olunca ya da oyuna girdiğinde oturan oyuncuyu ayakta görüyor.

Sistem bende ekliydi fakat emotion olarak space tuşuna basınca kalkıyordu şimdi /otur /kalk olarak ayarladım daha iyi oldu teşekkür ederim.

Şöyle bir sorun buldum karekter oturduğunda biri pvp açıp saldırınca animasyon iptal oluyor ayağa kalkıyor.Ayağa kalkan oyuncu tekrar otur yazdığında oturma işlemi gerçekleşmiyor tekrar ayaktayken /kalk yazıp tekrar /otur yazmak gerekiyor.

char.cpp aç

ara

C++:
Genişlet Daralt Kopyala
        addPacket.header = HEADER_GC_CHAR_ADDITIONAL_INFO;
        addPacket.dwVID = m_vid;

Altına Ekle:

C++:
Genişlet Daralt Kopyala
addPacket.getposition = GetPosition();

game/packet.h aç

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

Altına Ekle:

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

UserInterface/packet.h aç

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

Altına Ekle:

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

UserInterface\PythonNetworkStreamPhaseGameActor.cpp aç

Ara:

C++:
Genişlet Daralt Kopyala
__RecvCharacterAppendPacket (&kNetActorData);

Altına Ekle:


C++:
Genişlet Daralt Kopyala
if (chrAddPacket.getposition == 4)
{
    CPythonCharacterManager & rkChrMgr = CPythonCharacterManager::Instance();
    CInstanceBase * pChrInstance = rkChrMgr.GetInstancePtr(chrAddPacket.dwVID);
if (pChrInstance)
    pChrInstance->StartSitLoop();
}
 
Merhaba,

Burda yazılanları yaptım ama değişen bişey olmadı başka bir oyuncu teleport olunca ya da oyuna girdiğinde oturan oyuncuyu ayakta görüyor.

Sistem bende ekliydi fakat emotion olarak space tuşuna basınca kalkıyordu şimdi /otur /kalk olarak ayarladım daha iyi oldu teşekkür ederim.

Şöyle bir sorun buldum karekter oturduğunda biri pvp açıp saldırınca animasyon iptal oluyor ayağa kalkıyor.Ayağa kalkan oyuncu tekrar otur yazdığında oturma işlemi gerçekleşmiyor tekrar ayaktayken /kalk yazıp tekrar /otur yazmak gerekiyor.
Kodları incelemedim fakat eğer yoksa ::Attack fonksiyonu içerisine oturan karakterleri saldırılmaması için kontrol koyulabilir, yada karakterlerin sadece güvenli alanlarda (no-pvp) oturma eylemini kullanmasına izin verilebilir ki bence bu daha mantıklı olur.
 
Kodları incelemedim fakat eğer yoksa ::Attack fonksiyonu içerisine oturan karakterleri saldırılmaması için kontrol koyulabilir, yada karakterlerin sadece güvenli alanlarda (no-pvp) oturma eylemini kullanmasına izin verilebilir ki bence bu daha mantıklı olur.
Güvenli alan daha mantıklı olur hocam yoksa lonca savaşında oturup dururlar kimse saldıramaz :D Karşılıklı oturup sohbet etmeye başlarlar :)

Bu arada yeni birşey daha farkettim atın üstündeykende oturabiliyor.

Eski sisteme dönsem daha iyi olacak galiba duygu olarak kullanmak daha mantıklı geldi çünkü balık tutarken skill kullanırken ata binerken kontrol eklemek lazım hep.Tüm işlemlerde oturma yapıyor duygu olarak kullanınca yapmıyor.

oturma.webp
 
Son düzenleme:
Güvenli alan daha mantıklı olur hocam yoksa lonca savaşında oturup dururlar kimse saldıramaz :D Karşılıklı oturup sohbet etmeye başlarlar :)

Bu arada yeni birşey daha farkettim atın üstündeykende oturabiliyor.

Eski sisteme dönsem daha iyi olacak galiba duygu olarak kullanmak daha mantıklı geldi çünkü balık tutarken skill kullanırken ata binerken kontrol eklemek lazım hep.Tüm işlemlerde oturma yapıyor duygu olarak kullanınca yapmıyor.

19405 eklentisini görüntüle
Bu durumda sadece safe zone da aktif edilebilmesi, balık - madencilik - duygu kullanımı gibi durumlarda kullanılamaması vs. gibi kontrollerle düzenlemek lazım, yapılır elbet ama zaman lazım, zaman bulabilirsem bakacağım.
 
Üst