Merhabalar,
Arkadaşlar forumumuzda birçok şaman party flag sistemi paylaşılmış fakat hiçbiri sorunsuz çalışmıyor aslında Pelin arkadaşımızın paylaştığı olması gerektiği gibi fakat birçok kişi şaman sadece grubtakileri kutsamasını istemez bu yüzden bu konuyu paylaşmak istedim.
Anlatım ;
Char_skill.cpp Açılır Aratılır
Kod Satırının Altına Eklenir
Char_skill.cpp Aratılır
Altına Eklenir
Char_skill.cpp Aratılır
Altına Eklenir
Char_skill.cpp Aratılır
Değiştirilir
Guild.cpp Açılır Aratılır
Altına Eklenir
skill.h Açılır Aratılır
Değiştirilir
Mysql
Player>Skill_proto Masaüstüne Dump SQL File Yapılır ve Notepad İle Açılır.
Aratılır
Değiştirilir
Kaydedilir ve sql Mysql>player'e Okutulur.
Kanıt
Başka Bir Forumdan Alıntıdır.
Arkadaşlar forumumuzda birçok şaman party flag sistemi paylaşılmış fakat hiçbiri sorunsuz çalışmıyor aslında Pelin arkadaşımızın paylaştığı olması gerektiği gibi fakat birçok kişi şaman sadece grubtakileri kutsamasını istemez bu yüzden bu konuyu paylaşmak istedim.
Anlatım ;
Char_skill.cpp Açılır Aratılır
Kod:
static const DWORD s_adwSubSkillVnums[] =
{
SKILL_LEADERSHIP,
SKILL_COMBO,
SKILL_MINING,
SKILL_LANGUAGE1,
SKILL_LANGUAGE2,
SKILL_LANGUAGE3,
SKILL_POLYMORPH,
SKILL_HORSE,
SKILL_HORSE_SUMMON,
SKILL_HORSE_WILDATTACK,
SKILL_HORSE_CHARGE,
SKILL_HORSE_ESCAPE,
SKILL_HORSE_WILDATTACK_RANGE,
SKILL_ADD_HP,
SKILL_RESIST_PENETRATE
};
Kod Satırının Altına Eklenir
Kod:
struct FPartyPIDCollector
{
std::vector <DWORD> vecPIDs;
FPartyPIDCollector()
{
}
void operator () (LPCHARACTER ch)
{
vecPIDs.push_back(ch->GetPlayerID());
}
};
Char_skill.cpp Aratılır
Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
pkVictim = this;
Altına Eklenir
Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
pkVictim = this;
Char_skill.cpp Aratılır
Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
pkVictim = this;
Altına Eklenir
Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
pkVictim = this;
Char_skill.cpp Aratılır
Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
ComputeSkill(dwVnum, this);
else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
ComputeSkill(dwVnum, pkVictim);
else if (dwVnum == SKILL_BYEURAK)
ComputeSkill(dwVnum, pkVictim);
else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
ComputeSkill(dwVnum, pkVictim);
m_dwLastSkillTime = get_dword_time();
return true;
}
Değiştirilir
Kod:
if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
ComputeSkill(dwVnum, this);
else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && !GetParty() && !pkVictim)
ComputeSkill(dwVnum, this);
else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty())
{
FPartyPIDCollector f;
GetParty()->ForEachOnMapMember(f, GetMapIndex());
for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++)
{
LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it);
ComputeSkill(dwVnum, ch);
}
}
else if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK))
ComputeSkill(dwVnum, pkVictim);
else if (dwVnum == SKILL_BYEURAK)
ComputeSkill(dwVnum, pkVictim);
else if (dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill())
ComputeSkill(dwVnum, pkVictim);
m_dwLastSkillTime = get_dword_time();
return true;
}
Guild.cpp Açılır Aratılır
Kod:
if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))
{
// ÀÌ¹Ì °É·Á ÀÖÀ¸¹Ç·Î »ç¿ëÇÏÁö ¾ÊÀ½.
if (ch->FindAffect(pkSk->dwVnum))
return;
victim = ch;
}
Altına Eklenir
Kod:
if ((pkSk->dwFlag & SKILL_FLAG_PARTY))
{
if (ch->FindAffect(pkSk->dwVnum))
return;
victim = ch;
}
skill.h Açılır Aratılır
Kod:
SKILL_FLAG_CRUSH_LONG = (1 << 23), // »ó´ë¹æÀ» ¸Ö¸® ³¯¸²
SKILL_FLAG_WIND = (1 << 24), // ¹Ù¶÷ ¼Ó¼º
SKILL_FLAG_ELEC = (1 << 25), // Àü±â ¼Ó¼º
SKILL_FLAG_FIRE = (1 << 26),
Değiştirilir
Kod:
SKILL_FLAG_CRUSH_LONG = (1 << 23), // »ó´ë¹æÀ» ¸Ö¸® ³¯¸²
SKILL_FLAG_PARTY = (1 << 24), // Party Flag
SKILL_FLAG_WIND = (1 << 25), // ¹Ù¶÷ ¼Ó¼º
SKILL_FLAG_ELEC = (1 << 26), // Àü±â ¼Ó¼º
SKILL_FLAG_FIRE = (1 << 27),
Mysql
Player>Skill_proto Masaüstüne Dump SQL File Yapılır ve Notepad İle Açılır.
Aratılır
Kod:
`setFlag` set('ATTACK','USE_MELEE_DAMAGE','COMPUTE_ATTGRADE' ,'SELFONLY','USE_MAGIC_DAMAGE','USE_HP_AS_COST','C OMPUTE_MAGIC_DAMAGE','SPLASH','GIVE_PENALTY','USE_ ARROW_DAMAGE','PENETRATE','IGNORE_TARGET_RATING',' ATTACK_SLOW','ATTACK_STUN','HP_ABSORB','SP_ABSORB' ,'ATTACK_FIRE_CONT','REMOVE_BAD_AFFECT','REMOVE_GO OD_AFFECT','CRUSH','ATTACK_POISON','TOGGLE','DISAB LE_BY_POINT_UP','CRUSH_LONG') DEFAULT NULL,
Değiştirilir
Kod:
`setFlag` set('ATTACK','USE_MELEE_DAMAGE','COMPUTE_ATTGRADE' ,'SELFONLY','USE_MAGIC_DAMAGE','USE_HP_AS_COST','C OMPUTE_MAGIC_DAMAGE','SPLASH','GIVE_PENALTY','USE_ ARROW_DAMAGE','PENETRATE','IGNORE_TARGET_RATING',' ATTACK_SLOW','ATTACK_STUN','HP_ABSORB','SP_ABSORB' ,'ATTACK_FIRE_CONT','REMOVE_BAD_AFFECT','REMOVE_GO OD_AFFECT','CRUSH','ATTACK_POISON','TOGGLE','DISAB LE_BY_POINT_UP','CRUSH_LONG','PARTY') DEFAULT NULL,
Kaydedilir ve sql Mysql>player'e Okutulur.
Kanıt
Başka Bir Forumdan Alıntıdır.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 486
- Cevaplar
- 20
- Görüntüleme
- 861
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 37
- Görüntüleme
- 2K
