Kaynak ikonu

Geri Dönüş Sistemi 1

indirmek için izniniz yok
Selamlar. Flame Dungeon, Snow Dungeon, Devils Catacomb ve Deviltower Zone için geri dönüş sistemini sizlerle paylaşmak istiyorum.

[CODE lang="cpp" title="common\tables.h"]//aratın;

int aiPremiumTimes[PREMIUM_MAX_NUM];

//altına ekleyin;

long d_map_index;[/CODE]

[CODE lang="cpp" title="db\src\ClientManagerPlayer.cpp"]//aratın;

"horse_skill_point = %d, "

//altına ekleyin;

"d_map_index = %d, "

//tekrar aratın;

pkTab->horse_skill_point);

//değiştirin;

pkTab->horse_skill_point,
pkTab->d_map_index);

//tekrar aratın;

,horse_skill_point

//devamına ekleyin;

,d_map_index

//tekrar aratın;

str_to_number(pkTab->horse_skill_point, row[col++]);

//altına ekleyin;

str_to_number(pkTab->d_map_index, row[col++]);[/CODE]

[CODE lang="cpp" title="game\src\char.cpp"]//aratın;

tab.horse = GetHorseData();

//altına ekleyin;

tab.d_map_index = m_points.d_map_index;

//tekrar aratın;

m_points.iRandomSP = t->sRandomSP;

//altına ekleyin;

m_points.d_map_index = t->d_map_index;[/CODE]

[CODE lang="cpp" title="game\src\char.h"]//aratın;

BYTE skill_group;

//altına ekleyin;

long d_map_index;

//tekrar aratın;

ESex GET_SEX(LPCHARACTER ch);

//üstüne ekleyin;

public:
long LicyPlayerDungeonIndex() { return m_points.d_map_index; }
void MniusPlayerDungeonIndex(long vnum) { m_points.d_map_index = vnum; }[/CODE]

[CODE lang="cpp" title="game\src\dungeon.cpp"]//aratın;

void CDungeon::Initialize()
[
...
]

//altına ekleyin;

struct FWarpToLicyDungeonCoords
{
FWarpToLicyDungeonCoords(long lMapIndex, long X, long Y, LPDUNGEON d)
: m_lMapIndex(lMapIndex), m_x(X), m_y(Y), m_pkDungeon(d)
{
}

void operator () (LPCHARACTER ch)
{
ch->SaveExitLocation();
ch->WarpSet(m_x, m_y, m_lMapIndex);
}

long m_lMapIndex;
long m_x;
long m_y;
LPDUNGEON m_pkDungeon;
};

void CDungeon::Join_Coords(LPCHARACTER ch, long X, long Y, long index)
{
if (SECTREE_MANAGER::instance().GetMap(m_lMapIndex) == NULL)
{
sys_err("CDungeon: SECTREE_MAP not found for #%ld", m_lMapIndex);
return;
}
X*=100;
Y*=100;
FWarpToLicyDungeonCoords(m_lMapIndex, X, Y, this) (ch);
}

void CDungeon::JoinParty_Coords(LPPARTY pParty, long X, long Y, long index)
{
pParty->SetDungeon(this);
m_map_pkParty.insert(std::make_pair(pParty,0));

if (SECTREE_MANAGER::instance().GetMap(m_lMapIndex) == NULL)
{
sys_err("CDungeon: SECTREE_MAP not found for #%ld", m_lMapIndex);
return;
}
X*=100;
Y*=100;
FWarpToLicyDungeonCoords f(m_lMapIndex, X, Y, this);
pParty->ForEachOnMapMember(f,index);
}

//tekrar aratın;

deadEvent = event_create(dungeon_dead_event, info, PASSES_PER_SEC(10));

//değiştirin;

deadEvent = event_create(dungeon_dead_event, info, PASSES_PER_SEC(300));[/CODE]

[CODE lang="cpp" title="game\src\dungeon.h"]//aratın;

void DecMember(LPCHARACTER ch);

//altına ekleyin;

void JoinParty_Coords(LPPARTY pParty, long X, long Y, long index);
void Join_Coords(LPCHARACTER ch, long X, long Y, long index);[/CODE]

[CODE lang="cpp" title="game\src\questlua_dungeon.cpp"]//aratın;

void RegisterDungeonFunctionTable()

//üstüne ekleyin;

int dungeon_join_coords(lua_State* L)
{
if (lua_gettop(L)<3 || !lua_isnumber(L,1) || !lua_isnumber(L, 2) || !lua_isnumber(L,3))
{
sys_err("not enough argument");
return 0;
}

long lMapIndex = (long)lua_tonumber(L, 1);

LPDUNGEON pDungeon = CDungeonManager::instance().Create(lMapIndex);

if (!pDungeon)
return 0;

LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
long index2 = (long)ch->GetMapIndex();

if (ch->GetParty() && ch->GetParty()->GetLeaderPID() == ch->GetPlayerID())
pDungeon->JoinParty_Coords(ch->GetParty(), (long)lua_tonumber(L, 2), (long)lua_tonumber(L, 3),index2);
else if (!ch->GetParty())
pDungeon->Join_Coords(ch, (long)lua_tonumber(L, 2), (long)lua_tonumber(L, 3),index2);

return 0;
}

//tekrar aratın;

{ NULL, NULL }

//üstüne ekleyin;

{ "join_cords", dungeon_join_coords },[/CODE]

[CODE lang="cpp" title="game\src\questlua_pc.cpp"]//aratın;

void RegisterPCFunctionTable()

//üstüne ekleyin;

int pc_get_dungeonindex(lua_State * L)
{
lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()->LicyPlayerDungeonIndex());
return 1;
}

int pc_set_dungeonindex(lua_State * L)
{
if (!lua_isnumber(L, 1))
{
sys_err("invalid argument");
return 0;
}
else
{
long newIndex = lua_tonumber(L, 1);
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

ch->MniusPlayerDungeonIndex(newIndex);

return 0;
}
}

//tekrar aratın;

{ NULL, NULL }

//üstüne ekleyin;

{"get_dungeonindex", pc_get_dungeonindex },
{"set_dungeonindex", pc_set_dungeonindex },[/CODE]

Okutulacak dosyalar ekte yer alıyor.
İyi forumlar dilerim.
Yazar
Replicant
Kaynak İndirilme
45
Görüntüleme
534
İlk yayınlama
Son Güncelleme

Ratings

0.00 yıldız(lar) 0 rating

Replicant - Kaynakları