#377 Persistent Instances support

닫힘
premierio00152 년 전을 오픈 · 5개의 코멘트
premierio0015 코멘트됨, 2 년 전

We need it

Additional info:

"When your instance becomes persistent you get tagged with a unique ID representing the instance. You cannot reenter your instance while grouped with any character that has a different ID for that instance. You can bring people who have no ID for that instance in but they will get tagged with the ID as soon as they zone in. [Post from Silverfrost on EQ2 Offical Forums]

We need it Additional info: "When your instance becomes persistent you get tagged with a unique ID representing the instance. You cannot reenter your instance while grouped with any character that has a different ID for that instance. You can bring people who have no ID for that instance in but they will get tagged with the ID as soon as they zone in. [Post from Silverfrost on EQ2 Offical Forums] ----
image 코멘트됨, 2 년 전
협업자

so I am presuming the issue here is other group members can't follow you into the same persisted instance? We do have support for instancing and one group of instancing is persistent (solo, group, raid) we use character_instances to track instance ids

so I am presuming the issue here is other group members can't follow you into the same persisted instance? We do have support for instancing and one group of instancing is persistent (solo, group, raid) we use character_instances to track instance ids
image 코멘트됨, 2 년 전
협업자

looks like we should technically support group members



bool Client::TryZoneInstance(int32 zoneID, bool zone_coords_valid) {
    ZoneServer* instance_zone = NULL;
    int8 instanceType = 0;

    // determine if this is a group instanced zone that already exists
    instance_zone = GetPlayer()->GetGroupMemberInZone(zoneID);

    if (instance_zone != NULL)
        Zone(instance_zone->GetInstanceID(), zone_coords_valid, true);
    else if ((instanceType = database.GetInstanceTypeByZoneID(zoneID)) > 0)
    {
        // best to check if we already have our own instance!
        if((instance_zone = IdentifyInstance(zoneID)) == nullptr)
        {
            switch (instanceType)
            {
......extra code
            case SOLO_PERSIST_INSTANCE:
            case GROUP_PERSIST_INSTANCE:
            case RAID_PERSIST_INSTANCE:
            {
                instance_zone = zone_list.GetByInstanceID(0, zoneID);
                if (instance_zone) {
                    int32 db_id = database.AddCharacterInstance(GetPlayer()->GetCharacterID(), instance_zone->GetInstanceID(), string(instance_zone->GetZoneName()), instance_zone->GetInstanceType(), Timer::GetUnixTimeStamp(), 0, instance_zone->GetDefaultLockoutTime(), instance_zone->GetDefaultReenterTime());

                    if (db_id > 0)
                        GetPlayer()->GetCharacterInstances()->AddInstance(db_id, instance_zone->GetInstanceID(), Timer::GetUnixTimeStamp(), 0, instance_zone->GetDefaultLockoutTime(), instance_zone->GetDefaultReenterTime(), zoneID, instance_zone->GetInstanceType(), string(instance_zone->GetZoneName()));
                }
                break;
            }
looks like we should technically support group members ``` bool Client::TryZoneInstance(int32 zoneID, bool zone_coords_valid) { ZoneServer* instance_zone = NULL; int8 instanceType = 0; // determine if this is a group instanced zone that already exists instance_zone = GetPlayer()->GetGroupMemberInZone(zoneID); if (instance_zone != NULL) Zone(instance_zone->GetInstanceID(), zone_coords_valid, true); else if ((instanceType = database.GetInstanceTypeByZoneID(zoneID)) > 0) { // best to check if we already have our own instance! if((instance_zone = IdentifyInstance(zoneID)) == nullptr) { switch (instanceType) { ......extra code case SOLO_PERSIST_INSTANCE: case GROUP_PERSIST_INSTANCE: case RAID_PERSIST_INSTANCE: { instance_zone = zone_list.GetByInstanceID(0, zoneID); if (instance_zone) { int32 db_id = database.AddCharacterInstance(GetPlayer()->GetCharacterID(), instance_zone->GetInstanceID(), string(instance_zone->GetZoneName()), instance_zone->GetInstanceType(), Timer::GetUnixTimeStamp(), 0, instance_zone->GetDefaultLockoutTime(), instance_zone->GetDefaultReenterTime()); if (db_id > 0) GetPlayer()->GetCharacterInstances()->AddInstance(db_id, instance_zone->GetInstanceID(), Timer::GetUnixTimeStamp(), 0, instance_zone->GetDefaultLockoutTime(), instance_zone->GetDefaultReenterTime(), zoneID, instance_zone->GetInstanceType(), string(instance_zone->GetZoneName())); } break; } ```
premierio0015 코멘트됨, 2 년 전
포스터

Also i haven't tried using Reset Lockout Timer (Alt+Z)

Also i haven't tried using Reset Lockout Timer (Alt+Z)
image 코멘트됨, 1 년 전
협업자

while I was patching up other code today I noticed that someone had commented "Player::GetGroupMemberInZone"'s code years back.. so that is why you can't join members in a instanced zone.

while I was patching up other code today I noticed that someone had commented "Player::GetGroupMemberInZone"'s code years back.. so that is why you can't join members in a instanced zone.
image 코멘트됨, 1 년 전
협업자

players joining group members in an instance is fixed by 00e6cdaf61

players joining group members in an instance is fixed by https://git.eq2emu.com/devn00b/EQ2EMu/commit/00e6cdaf613256914bb67b4c4fb2100ced54e3e5
image 1 년 전가 Close
로그인하여 이 대화에 참여
로딩중...
취소
저장
아직 콘텐츠가 없습니다.