Új bónusz hiba.

Indította gife974, 2018-03-19, 22:36:49

Sziasztok! Betettem egy új bónuszt a szerverbe, viszont 1 problémám van vele. Hogy nem az új bónuszt teszi bele, hanem egy teljesen másikat.

Ezt tettem be:
[spoiler]https://mega.nz/#!oYtHgTYD!RDr1N9CoICB0SmPDHf5y4alyEAsivzSoMbc97YaJKSM[/spoiler]

Az új bónusz helyett, pedig ezt teszi bele. Az új bónuszt megpróbáltam új helyre is rakni, akkor szintén egy már meglévőt rakott bele.

Csatolom a hibát. A SEGÍTSÉGEKET ELŐRE IS KÖSZÖNÖM!

Adatbázist nem hagytad ki véletlen?

Természetesen nem. Az ördög elleni erőröl másoltam le (ATTBONUS_DEVIL) és a devilt átírtam az új bónusz helyére.

És jó bónusz id-t ír item táblában?

Az látod jó kérdés. Hazaérek és megnézem.

2018-03-20, 13:34:31 #5 Utolsó szerkesztés: 2018-03-20, 13:38:24 Szerző: 5310pati
Nálam tök jól működik, igaz nem leírás alapján csináltam hanem magamtól.


Üzenet összefésülés: 2018-03-20, 13:38:24

+ ami a leírásban szerepel, ott a metin mellett továbbra is hat a szörny a kövekre, ami sztem az új metin elleni erő mellett nem kell, szóval ha ezt nem akarod így használd:
if (pkVictim->IsStone())
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;
else
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MONSTER)) / 100;

2018-03-20, 14:01:21 #6 Utolsó szerkesztés: 2018-03-20, 14:07:53 Szerző: gife974
Na, megnéztem az item táblát, tényleg nem azt a bónuszt teszi bele, ami nekem kellene. Számszerint a 97-es az. Viszont ha manuálisan átírom, akkor jót tesz bele, viszont ha optolom a tárgyat, illetve pörgetem, akkor rosszat tesz bele.

Üzenet összefésülés: 2018-03-20, 14:02:22

Illetve, az erőt sem adja meg.  :-[

Üzenet összefésülés: 2018-03-20, 14:07:53

Esetleg valami normális tutoriát nincs kedved csinálni?

Őszintén rákerestem a MONSTER-es részre (2 is van APPLY és POINT), majd lemásoltam és átírtam METIN-re.
Annyi h a végén a POINT_ENERGY-vel ütközés lett és át kellett azt írni (szerver és indító oldalon is).

Pontosan mi ütközött össze?

Az h enum osztályban van, és a POINT_ENERGY-nek meg lett adva alap érték, aszem 128, de mivel elé beírtam 1 újat a METIN-t, az előtte lévőt defaultból megnövelte ugye és ez okozta az ütközést.

2018-03-20, 14:31:54 #10 Utolsó szerkesztés: 2018-03-20, 14:40:56 Szerző: gife974
Na, most újra rakom az egészet, aztán írok, ha van valami.

Üzenet összefésülés: 2018-03-20, 14:40:55

A helyzet változatlan, továbbra is Max TP%-ot rak bele, és ha manuálisan átírom, akkor se adja meg a bónuszt.

Csatolom a fájlokat, rátudsz nézni?

Be raktad az uj bonuszt a proto readerekbe? Kliens és szerver oldalon is, majd újra csomagoltad az item protot? Mivel itt az a gond, hogy rosz azonosítót hív meg a bónuszhoz, tehát vagy nem tetted be a proto readerekbe, vagy rossz sorrenben vannak a bonusz azonosítók.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

ProtoReadernek nincs köze ehhez, az csak alap bónuszért felel a tárgyban.

Találtál valami hibát?

Azon kívül h te a legvégére raktad az enumoknak elv egyezik az enyimmel.
Én adatbázisra tippelek, mivel az felel azért h milyen bónuszt rak a tárgyba, onnan olvassa a szerver mikor hozzáadódik a bónusz.

Ha bonuszért felel, akkor hogy ne lenne. XDXDXD

Ha ott nincs bent, akkor item protoban az életben nem tud bonuszt hozzá adni egy tárgyhoz ezzel a bonusz azonosítóval...

Az tény hogy nem csak ott kell renben lennie, mert az item_lenght.h, affect.h char.h bizonyos enumjai felelnek még a bonuszokért.

Use your brain, please.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Azt én értem és nem is azt mondtam, de ő optolni próbálja a bónuszt és úgy nincs rendben és én arra írtam h nincs köze hozzá.

Adatbázis felöl meg ez a hiba nem jelenik meg, mert ha nincs az item_attr listán akkor nem rakja be a bonuszt, ha meg ottvan akkor nyilván berakja az adott azonosito alapján, tehát ha a forrásban nincs rendben az adott bonusz azonosito ami bekerü  csak akkor rinyál be ilyen jelenség. És mint írtam a sorrend lesz a ludas, vagy h egyáltalán nincs is bent valahol. Érdemes figyelni, hogy minden fájlban ahol meghívjuk ugyan arra a sorra essen az enumon belül. Honnan tudom ezt? Éjjel raktam be két új statisztika pontot (mint az Erő, Inteligencia) és nyilván item bonuszként is szerepel, és volt rálátásom mikor hogy reagált a rendszer az uj bonuszoknál.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Igen, de ha rosszul van megcsinálva adatbázisban rossz ID-vel tölti be a bónuszt, ezért van az h Metin elleni erő helyett nála Max TP lett.
while ((data = mysql_fetch_row(pRes->pSQLResult)))
{
TItemAttrTable t;

memset(&t, 0, sizeof(TItemAttrTable));

int col = 0;

strlcpy(t.szApply, data[col++], sizeof(t.szApply));
str_to_number(t.dwApplyIndex, data[col++]);
str_to_number(t.dwProb, data[col++]);
str_to_number(t.lValues[0], data[col++]);
str_to_number(t.lValues[1], data[col++]);
str_to_number(t.lValues[2], data[col++]);
str_to_number(t.lValues[3], data[col++]);
str_to_number(t.lValues[4], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_WEAPON], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_BODY], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_WRIST], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_FOOTS], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_NECK], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_HEAD], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_SHIELD], data[col++]);
str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_EAR], data[col++]);

sys_log(0, "ITEM_RARE: %-20s %4lu { %3d %3d %3d %3d %3d } { %d %d %d %d %d %d %d }",
t.szApply,
t.dwProb,
t.lValues[0],
t.lValues[1],
t.lValues[2],
t.lValues[3],
t.lValues[4],
t.bMaxLevelBySet[ATTRIBUTE_SET_WEAPON],
t.bMaxLevelBySet[ATTRIBUTE_SET_BODY],
t.bMaxLevelBySet[ATTRIBUTE_SET_WRIST],
t.bMaxLevelBySet[ATTRIBUTE_SET_FOOTS],
t.bMaxLevelBySet[ATTRIBUTE_SET_NECK],
t.bMaxLevelBySet[ATTRIBUTE_SET_HEAD],
t.bMaxLevelBySet[ATTRIBUTE_SET_SHIELD],
t.bMaxLevelBySet[ATTRIBUTE_SET_EAR]);

m_vec_itemRareTable.push_back(t);
}


A forrását meg felrakta, és nem láttam hibát, azon kívül h ő más helyre rakta az enumon belül ami nem számít, ha passzol indtóval.

2018-03-20, 15:40:43 #19 Utolsó szerkesztés: 2018-03-20, 15:43:43 Szerző: udvatt108
Azt én vágom, hogy passzol indítóval, de passzolnia kell az a szerver forráson belül számos fájlban, figyelni kell hogy egyes bonusz azonosítók nem enum auto incrementel vannak számozva, hanem manuálisan, igy ha manuális után rakunk uj azonositot akkor a manuális értéktöl kezd nőni. Jó nyilván ezt vágod te is. És egy ötlet, nézd meg az uitooltip.py-ben, hogy az apply/affect listán is szerepel-e a bonusz és ha igen megfelelő sorrenben van-e azis, mert szivatós a rendszer ha vmi nem jo számra esik.  (Bocsi ha helyesirási problémákat észleltek, telorol írok és kapkodva.)

Üzenet összefésülés: 2018-03-20, 15:43:43

Miért szúrtál be egy 6-7 bónusz (rare) adatbázisból olvasó kódrészt?? Csak mert nem értem ez h jön ide.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.