분쟁지역 설정하는법 좀 알려주세요.

이전 주제 보기 다음 주제 보기 Go down

분쟁지역 설정하는법 좀 알려주세요.

올리기 by wkfk1318 on 2008-10-01, 1:30 pm

해당된 존에서는 pvp안되게...하는법을;;

그리고 귀환석 쿨탐이 1시간이던데 수정하는법이 뭔지;;

wkfk1318

게시물 갯수 : 28
Registration date : 2008-09-29

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by kissmefive on 2008-10-01, 1:43 pm

1.해당존을 PVP안되게하는 것은 저도 알려주세요 ^^
-코어 어딘가에서 수정해야 하는것같은데 쩝....

Ascent코어의 경우 아래 내용을 추가하고 존ID 169를 원하는 좌표로 바꿔주면 된다고 하네요
Arcemu는.. 어떤지 모르겠지만.

EDIT THE Player.cpp
In order to prevent any PvP in the Mall, we need to add some code blocks to the Player.cpp
Locate the Player.cpp in
trunk/ascent-workd/
Edit it and locate the function
Player::AddToWorld()
Include the following code block as shown below:

=============================================================
void Player::AddToWorld()
{
FlyCheat = false;
m_setflycheat=false;
// check transporter
if(m_TransporterGUID && m_CurrentTransporter)
{
SetPosition(m_CurrentTransporter->GetPositionX() + m_TransporterX,
m_CurrentTransporter->GetPositionY() + m_TransporterY,
m_CurrentTransporter->GetPositionZ() + m_TransporterZ,
GetOrientation(), false);
}
// Begin: Deactivate PVP in Mall
if (GetMapId() == 169)
{
if (IsPvPFlagged())
RemovePvPFlag();
sChatHandler.SystemMessage(GetSession(), "Welcome to the Mall! PvP is prohibited here...");
}
// End: Deactivate PVP in Mall

// If we join an invalid instance and get booted out, this will prevent our stats from doubling Razz
if(IsInWorld())
return;

m_beingPushed = true;
Object::AddToWorld();

// Add failed.
if(m_mapMgr == NULL)
{
// eject from instance
m_beingPushed = false;
EjectFromInstance();
return;
}

if(m_session)
m_session->SetInstance(m_mapMgr->GetInstanceID());
}

Now whenever Players enter the Mall PvP toggles off automatically. In order to prevent them from manually
turning it back on we need to do some editing on Player::PvPToggle - locate it in Player.cpp
basically all you need to do here is suround the entire function in an if statement like this

void Player::PvPToggle()
{
if (getMapId() != 169)
{
In here you put the original function
}
}
=======================================================================
Arcemu에서도 가능하게 하는방법을 아시는분은 ... 알려주세요..

2.귀환석 쿨타임은 DBC에서 수정해야 하는것으로 알고있습니다.

kissmefive

게시물 갯수 : 58
Registration date : 2008-09-14

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by wkfk1318 on 2008-10-01, 2:11 pm

쉽지않는거군요 음 ㅡㅡ;;

wkfk1318

게시물 갯수 : 28
Registration date : 2008-09-29

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by arcemu.aio on 2008-10-01, 2:15 pm

AsCENT & MaNGOS 포럼, 경민 씀:컴파일이 아닌 다른 방법으로 지정하는 방법은 모르겠습니다.
AreaTable.dbc 파일을 조작하는 방법이 있긴 하지만 이건 저도 잘 모르기에 넘어가고,
소스 코드를 수정하는 방법으로 알려드리겠습니다.

우선, 소스에서 성역인지 확인하는 부분이 2군데 있습니다.
Player.cpp 파일의 Player::ZoneUpdate 와 Player::UpdatePvPArea 입니다.
이 함수들을 보시면 중간에

at->category == AREAC_SANCTUARY || at->AreaFlags & AREA_SANCTUARY

이런 내용이 있습니다.
이게 현재 지역이 성역인지 확인하는 곳입니다.
이 조건식을

at->AreaId == 876 || at->category == AREAC_SANCTUARY || at->AreaFlags & AREA_SANCTUARY

식으로 수정하시면 지정된 AreaId의 지역도 성역으로 처리됩니다.
참고로 876은 GM의 안식처로 그 외 지역의 AreaId를 확인하시려면 AreaTable.dbc 파일을 csv로 변경하거나 해서 확인해보세요.
위와 같이 소스를 수정하는 방법이 있습니다.
저렇게 하면 해당 지역은 성역으로 인식되어서 PvP가 불가능해집니다.

귀환석의 쿨타임은 서버와 클라이언트의 DBC 파일을 수정해야 합니다.
하지만 사실상 클라이언트 수정은 거의 불가능한 관계로 쉽지 않습니다.
MANGOS 쪽에서는 남은 쿨타임을 수정하는 방법을 사용하는듯 하더군요.
이 부분에 대해서는 한번 연구해 보겠습니다.


arcemu.aio 가 2008-10-01, 2:31 pm에 수정함, 총 1 번 수정됨

arcemu.aio
Admin

게시물 갯수 : 314
Registration date : 2008-09-13

사용자 정보 보기 http://arcemu.wowwars.net

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by wkfk1318 on 2008-10-01, 2:18 pm

와 굿입니다. ^^

wkfk1318

게시물 갯수 : 28
Registration date : 2008-09-29

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by wkfk1318 on 2008-10-01, 2:26 pm

at->AreaId = 876 이부분에서 Player::ZoneUpdate 함수쪽만
'=' 에러가 나는군요 == 걸로 수정하면되겠죠 ㅇㅇ?

wkfk1318

게시물 갯수 : 28
Registration date : 2008-09-29

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by arcemu.aio on 2008-10-01, 2:33 pm

wkfk1318 씀:at->AreaId = 876 이부분에서 Player::ZoneUpdate 함수쪽만
'=' 에러가 나는군요 == 걸로 수정하면되겠죠 ㅇㅇ?
네... == 로 수정하시면 됩니다.
Area가 아닌 Zone 단위로 하시려면 ZoneId 를 쓰시면 됩니다.
성역을 여러군데 하시려면 조건을 추가하시면 되고요.

arcemu.aio
Admin

게시물 갯수 : 314
Registration date : 2008-09-13

사용자 정보 보기 http://arcemu.wowwars.net

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by wkfk1318 on 2008-10-01, 3:04 pm

네 감사합니다!

wkfk1318

게시물 갯수 : 28
Registration date : 2008-09-29

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by kissmefive on 2008-10-02, 5:10 am

감사합니다. 잘되는군요.. DBC툴을 이용해 남쪽바다를 검색해서 번호를 바꾸어 넣고
컴파일하니 성공! .... 너무 기쁘군요...

kissmefive

게시물 갯수 : 58
Registration date : 2008-09-14

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by 정병열 on 2008-10-03, 8:02 am

이해가 되질 않네요..
Player.cpp 이파일이 대체 어디 있는거죠?

정병열

게시물 갯수 : 24
Registration date : 2008-09-28

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by kissmefive on 2008-10-03, 9:30 am

ARCEMU SVN에서서 소스를 다운 받으시면

다운받은Folder/arcemu/src/arcemu-world/player.cpp에 있습니다.

[참고사항]
남쪽바다는 이렇게 수정하시면됩니다.
// I just walked into either an enemies town, or a contested zone.
// Force flag me if i'm not already.
if(at->AreaId == 2317 || at->category == AREAC_SANCTUARY || at->AreaFlags & AREA_SANCTUARY)
{

kissmefive

게시물 갯수 : 58
Registration date : 2008-09-14

사용자 정보 보기

위로 Go down

Re: 분쟁지역 설정하는법 좀 알려주세요.

올리기 by Sponsored content


Sponsored content


위로 Go down

이전 주제 보기 다음 주제 보기 위로


 
Permissions in this forum:
답글을 올릴 수 없습니다