Hali.
Valaki esetleg tudja, hogy miért történik az a jelenség, hogy ha kiválasztom a képességem, mondjuk harcosnál a testit, akkor nem tudom a skilleket fejleszteni, de a pontokat levonja?
Köszi.
valaminemfrissülakliensbenéskaraktercserésreloggaltudodcsakkompenzálni
relogolok, sőt ujrainditom a szerver de ugyan ugy levontan jelzi a skill pontokat és a skilleken nincs egy pont sem.
Üzenet összefésülés: 2017-10-10, 22:17:14
Annyi még hogy a /setsk parancs sem fejleszti
éssemmimástnemmódosítottálseholszalezvalamiproalapnadeakkormégismelyikszerveralapésmelyikkliensnamegmelyikindító?
Char_skill.cpp
Learningskill() függvény részében kellene a problémát keresni, ha forrással dolgozol.
Mainline - game, db, qu (Samurai modifikációt használtam fel buildelésnél)
Samurai kliens.
Megjegyzem: A /all parancs sem müködik. - Ha számít. Nem csinál semmit, semmi reakció, semmi syserr egyik jelenségre sem.
Ui.: Forrásokkal dolgozok. (Windowsoson futó szerverrel.)
Idézetet írta: udvatt108 Dátum 2017-10-10, 22:48:57
Megjegyzem: A /all parancs sem müködik. - Ha számít. Nem csinál semmit, semmi reakció, semmi syserr egyik jelenségre sem.
tesztszerverforrásnaknenézdafogátnememlékszemarrahogyszamurájvalahakiraktavolnaaz1.3utánidolgokatbárnekemisjónagyslamasztikátkénehogykavarjonezakiskitérődeperpillanatlényegtelenezadolog:D
japisti95iszerénységeleírtamáravarázsszavakathümm
Idézetet írta: Pisti95 Dátum 2017-10-10, 22:45:28
Char_skill.cpp
Learningskill() függvény részében kellene a problémát keresni, ha forrással dolgozol.
Nincs Learningskill része a Char_skill.cpp fájlban.
Üzenet összefésülés: 2017-10-10, 23:24:05
Ötlet?
void CHARACTER::SkillLevelPacket()
{
if (!GetDesc())
return;
TPacketGCSkillLevel pack;
pack.bHeader = HEADER_GC_SKILL_LEVEL;
thecore_memcpy(&pack.skills, m_pSkillLevels, sizeof(TPlayerSkill) * SKILL_MAX_NUM);
GetDesc()->Packet(&pack, sizeof(TPacketGCSkillLevel));
}
void CHARACTER::SetSkillLevel(DWORD dwVnum, BYTE bLev)
{
if (NULL == m_pSkillLevels)
return;
if (dwVnum >= SKILL_MAX_NUM)
{
sys_err("vnum overflow (vnum %u)", dwVnum);
return;
}
m_pSkillLevels[dwVnum].bLevel = MIN(40, bLev);
if (bLev >= 40)
m_pSkillLevels[dwVnum].bMasterType = SKILL_PERFECT_MASTER;
else if (bLev >= 30)
m_pSkillLevels[dwVnum].bMasterType = SKILL_GRAND_MASTER;
else if (bLev >= 20)
m_pSkillLevels[dwVnum].bMasterType = SKILL_MASTER;
else
m_pSkillLevels[dwVnum].bMasterType = SKILL_NORMAL;
}
bool CHARACTER::IsLearnableSkill(DWORD dwSkillVnum) const
{
const CSkillProto * pkSkill = CSkillManager::instance().Get(dwSkillVnum);
if (!pkSkill)
return false;
if (GetSkillLevel(dwSkillVnum) >= SKILL_MAX_LEVEL)
return false;
if (pkSkill->dwType == 0)
{
if (GetSkillLevel(dwSkillVnum) >= pkSkill->bMaxLevel)
return false;
return true;
}
if (pkSkill->dwType == 5)
{
if (dwSkillVnum == SKILL_HORSE_WILDATTACK_RANGE && GetJob() != JOB_ASSASSIN)
return false;
return true;
}
if (GetSkillGroup() == 0)
return false;
if (pkSkill->dwType - 1 == GetJob())
return true;
if (6 == pkSkill->dwType)
{
if (SKILL_7_A_ANTI_TANHWAN <= dwSkillVnum && dwSkillVnum <= SKILL_7_D_ANTI_YONGBI)
{
for (int i=0 ; i < 4 ; i++)
{
if (unsigned(SKILL_7_A_ANTI_TANHWAN + i) != dwSkillVnum)
{
if (0 != GetSkillLevel(SKILL_7_A_ANTI_TANHWAN + i))
{
return false;
}
}
}
return true;
}
if (SKILL_8_A_ANTI_GIGONGCHAM <= dwSkillVnum && dwSkillVnum <= SKILL_8_D_ANTI_BYEURAK)
{
for (int i=0 ; i < 4 ; i++)
{
if (unsigned(SKILL_8_A_ANTI_GIGONGCHAM + i) != dwSkillVnum)
{
if (0 != GetSkillLevel(SKILL_8_A_ANTI_GIGONGCHAM + i))
return false;
}
}
return true;
}
}
return false;
}
Üzenet összefésülés: 2017-10-10, 23:24:05
Cliens oldal:
HEADER_GC_SKILL_LEVEL = 72,
HEADER_GC_SKILL_LEVEL_NEW = 76,
typedef struct packet_skill_level
{
BYTE bHeader;
BYTE abSkillLevels[SKILL_MAX_NUM];
} TPacketGCSkillLevel;
typedef struct packet_skill_level_new
{
BYTE bHeader;
TPlayerSkill skills[SKILL_MAX_NUM];
} TPacketGCSkillLevelNew;
typedef struct packet_points
{
BYTE header;
long points[POINT_MAX_NUM];
} TPacketGCPoints;
typedef struct packet_point_change
{
int header;
DWORD dwVID;
BYTE Type;
long amount; // 바뀐 값
long value; // 현재 값
} TPacketGCPointChange;
Szerver oldal:
HEADER_GC_SKILL_LEVEL_OLD = 72,
HEADER_GC_SKILL_LEVEL = 76,
typedef struct packet_points
{
BYTE header;
long points[POINT_MAX_NUM];
} TPacketGCPoints;
typedef struct packet_skill_level
{
BYTE bHeader;
TPlayerSkill skills[SKILL_MAX_NUM];
} TPacketGCSkillLevel;
typedef struct packet_point_change
{
int header;
DWORD dwVID;
BYTE type;
long amount;
long value;
} TPacketGCPointChange;
char_skill.cpp
bool CHARACTER::IsLearnableSkill(DWORD dwSkillVnum) const
bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
leveszi a pontot: bool CHARACTER::SkillLevelDown(DWORD dwVnum)
felemeli a pontot: void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
Rendben átnézem, próbálkozom és jelentek, hogy mire jutottam. Addig is köszi az irány mutatást Pisti!
Üzenet összefésülés: 2017-10-11, 14:07:32
A skillt a szerver konzol alapján fejleszti, de ezt a kliens nem érzékeli, és hiába van relog a skillt nem is aktiválja, meg nem tanultként kezeli.
Akkor a szerverből törölted a skill_power.txt-t.
share/locale/hungary/
Nem, megvan benne.
Csatoltam a fájlt.
Volt már erre gond, nem itt kell keresni a hibát, ha jól emlékszem, Windows szervert másképp kell lefordítani!
Már nem tudom pontosan... Volt régen róla szó valamelyik témában, nem forrásban van a hiba.
jaénmegvokannyiragyökérhogynemíromhogyezavacakakilencpontkettesvédéitszeressegec^2
naatrükkakövetkezőpróbáldmegfreebsdkilencpontkettőnisháthajóleszvagyilyesmi
Idézetet írta: Savage Dátum 2017-10-12, 08:38:44
Volt már erre gond, nem itt kell keresni a hibát, ha jól emlékszem, Windows szervert másképp kell lefordítani!
Már nem tudom pontosan... Volt régen róla szó valamelyik témában, nem forrásban van a hiba.
Esetleg, tudod linkelni, ha eszedbe jut? :)
Esküszöm kivagyok már ettől az egybeírásodtól xdd
Amúgy, nem kell ide FreeBSD elég, ha a Release konfigurációt átállítod talán Debugra(?), Distribute-ra(?).
Találgatok csak, de mintha ez lett volna a gond!
(Vegyél fel skypen és segítek: [email protected])
Már rossz nézni ezt a sok szenvedést...
Nekem ugyanilyen problémám volt és közöltem is vele, hogy a windows a ludas. (megoldást eddig még én se találtam rá, bár nem mintha már nagyon keresném is... :D)
Ha meg átállítja debugra, errorok tömkelege fogja fogadni.
Javítani kell a hibákat debug módra vonatkozóan ugyanis abban biztos, hogy nem lesz gond.
Túl sok a hiba ahhoz h megérje... + nem is izgat már a téma mert abbahagytam a dolgot és +2 hogy am is bsd-n futna a szerver ha futna, ott meg semmi gond nincs vele, szal értelmetlen lenne vesződni vele.
Idézetet írta: 5310pati Dátum 2017-10-12, 20:18:54
Túl sok a hiba ahhoz h megérje... + nem is izgat már a téma mert abbahagytam a dolgot és +2 hogy am is bsd-n futna a szerver ha futna, ott meg semmi gond nincs vele, szal értelmetlen lenne vesződni vele.
(https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQONDxfzgM60lw08kkcIlvOzocgTWzrMt48WyTjO0P8wQ8p9KxZZg)
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fs2.quickmeme.com%2Fimg%2F29%2F295079a2bdd9913e2d8a7f801cf947b77b63f998d2942ffb2b5435d30b89d3b3.jpg&hash=620a727146fb7b644a448d2b7f9a162f6f71d46c)
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fvignette3.wikia.nocookie.net%2Fpowerlisting%2Fimages%2F0%2F03%2FThanks_Bro.jpg%2Frevision%2Flatest%3Fcb%3D20150601024252&hash=fc399db294f3e21ae69f26722c8ad3466c087b17)
(https://staffino.com/blog/wp-content/uploads/2016/09/59349318.jpg)
Idézetet írta: udvatt108 Dátum 2017-10-10, 22:48:57
Ui.: Forrásokkal dolgozok. (Windowsoson futó szerverrel.)
Ezzel kellett volna kezdeni :D
Debug-ba fordítsd a db-t és game fájlt.
Distribute-ban az indítót.
húb#s@sfgemeg télleg h ezt nem kérdeztük az elején :o