Drop pietre din metin

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
SebyS
Nou Venit

Nou Venit
Mesaje: 6
Membru din: 09 Apr 2020, 22:42
Aprecieri: 0
Mulţumiri: 0
Medalii

Buna ziua! Am o problemă cu dropul pietrelor din metinstones. Pietrele (+0,+1,+2,+3,+4) nu dropeaza implicit din metinstones. Din cunoștințele mele, ar trebui să cadă doar 1 piatră din metinstone și nu ar trebui să existe șansa ca metinstone să dropeze 2,3,4 etc. Deocamdată, am gestionat acest drop de pe mob_drop_item.txt. Statistic, metinstones dropeaza ~1 per metinstone, dar uneori dropeaza cu 2,3,4 sau 5 per metin. Nu știu cum să gestionez acest lucru sau dacă este doar din mob_drop_item.txt sau dacă există vreo sintaxă mob_drop_item pe care nu o cunosc pentru asta. Vreau să menționez că am comparat funcția DetermineDropMetinStone() din src-ul meu cu altele din alt src (unde este garantat să scadă doar 1 piatră per metinstone) și arată exact la fel. De asemenea, am verificat ca functia DetermineDropMetinStone() sa fie integrata in functia void CHARACTER::SetProto(const TMobTable *pkMob) si sa nu fie goala. In char.cpp si in constants.cpp totul pare in regula. Daca este cineva dispus sa ma ajute cu o idee, sau eventual ce as mai putea verifica.

*Problemă/Întrebare:
Tipologie server:
*Resursă folosită:
*ServerFiles utilizat:
*Syserr:
Poză:
*Detalii suplimentare:
Avatar utilizator
RaulM
Nivel 1

Nivel 1
Mesaje: 54
Membru din: 19 Feb 2023, 20:53
Regat: Shinsoo
Aprecieri: 3  
Mulţumiri: 3  
  Rezolvări prob.: 3
Medalii

Pune funcția de la DetermineDropMetinStones toata aici.
Mai uita-te odata, pune si mob_drop_item cu drop-ul de la un metin care da mai multe pietre .

Cod: Selectaţi tot

void CHARACTER::DetermineDropMetinStone(). 

Si acolo ai o linie

Cod: Selectaţi tot

.m_dwDropMetinStone = c_adwMetin[number(0, METIN_STONE_NUM - 1)];
            int iGradePct = number(1, 100);   
Avatar utilizator
SebyS
Nou Venit

Nou Venit
Mesaje: 6
Membru din: 09 Apr 2020, 22:42
Aprecieri: 0
Mulţumiri: 0
Medalii

Asta e toata functia void CHARACTER::DetermineDropMetinStone().
void CHARACTER::DetermineDropMetinStone()
{
const int METIN_STONE_NUM = 14;
static DWORD c_adwMetin[METIN_STONE_NUM] =
{
28030,
28031,
28032,
28033,
28034,
28035,
28036,
28037,
28038,
28039,
28040,
28041,
28042,
28043,
};
DWORD stone_num = GetRaceNum();
int idx = std::lower_bound(aStoneDrop, aStoneDrop+STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
{
m_dwDropMetinStone = 0;
}
else
{
const SStoneDropInfo & info = aStoneDrop[idx];
m_bDropMetinStonePct = info.iDropPct;
{
m_dwDropMetinStone = c_adwMetin[number(0, METIN_STONE_NUM - 1)];
int iGradePct = number(1, 100);
for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
{
int iLevelGradePortion = info.iLevelPct[iStoneLevel];
if (iGradePct <= iLevelGradePortion)
{
break;
}
else
{
iGradePct -= iLevelGradePortion;
m_dwDropMetinStone += 100; // 돌 +a -> +(a+1)이 될때마다 100씩 증가
}
}
}
}
}
Si aici din mob_drop_item pentru drop-ul de la metin de level 5 vnum=8001.
Group Metin_Necazului5
{
Mob 8001
Type drop
1 28030 1 6#Piatra_Patrunderii0
2 28130 1 6#Piatra_Patrunderii1
3 28230 1 6#Piatra_Patrunderii2
4 28330 1 6#Piatra_Patrunderii3
5 28430 1 6#Piatra_Patrunderii4
6 28031 1 6#Piatra_Lovitura_Fatala0
7 28131 1 6#Piatra_Lovitura_Fatala1
8 28231 1 6#Piatra_Lovitura_Fatala2
9 28331 1 6#Piatra_Lovitura_Fatala3
10 28431 1 6#Piatra_Lovitura_Fatala4
11 28032 1 6#Piatra_Reintoarcerii0
12 28132 1 6#Piatra_Reintoarcerii1
13 28232 1 6#Piatra_Reintoarcerii2
14 28332 1 6#Piatra_Reintoarcerii3
15 28432 1 6#Piatra_Reintoarcerii4
16 28033 1 6#Piatra_Anti_razboinici0
17 28133 1 6#Piatra_Anti_razboinici1
18 28233 1 6#Piatra_Anti_razboinici2
19 28333 1 6#Piatra_Anti_razboinici3
20 28433 1 6#Piatra_Anti_razboinici4
21 28034 1 6#Piatra_Anti_ninja0
22 28134 1 6#Piatra_Anti_ninja1
23 28234 1 6#Piatra_Anti_ninja2
24 28334 1 6#Piatra_Anti_ninja3
25 28434 1 6#Piatra_Anti_ninja4
26 28035 1 6#Piatra_Anti_sura0
27 28135 1 6#Piatra_Anti_sura1
28 28235 1 6#Piatra_Anti_sura2
29 28335 1 6#Piatra_Anti_sura3
30 28435 1 6#Piatra_Anti_sura4
31 28036 1 6#Piatra_Anti_saman0
32 28136 1 6#Piatra_Anti_saman1
33 28236 1 6#Piatra_Anti_saman2
34 28336 1 6#Piatra_Anti_saman3
35 28436 1 6#Piatra_Anti_saman4
36 28037 1 6#Piatra_Monstrilor0
37 28137 1 6#Piatra_Monstrilor1
38 28237 1 6#Piatra_Monstrilor2
39 28337 1 6#Piatra_Monstrilor3
40 28437 1 6#Piatra_Monstrilor4
41 28038 1 6#Piatra_Eschivei0
42 28138 1 6#Piatra_Eschivei1
43 28238 1 6#Piatra_Eschivei2
44 28338 1 6#Piatra_Eschivei3
45 28438 1 6#Piatra_Eschivei4
46 28039 1 6#Piatra_Pitularii0
47 28139 1 6#Piatra_Pitularii1
48 28239 1 6#Piatra_Pitularii2
49 28339 1 6#Piatra_Pitularii3
50 28439 1 6#Piatra_Pitularii4
51 28040 1 6#Piatra_Magiei0
52 28140 1 6#Piatra_Magiei1
53 28240 1 6#Piatra_Magiei2
54 28340 1 6#Piatra_Magiei3
55 28440 1 6#Piatra_Magiei4
56 28041 1 6#Piatra_Vitalitatii0
57 28141 1 6#Piatra_Vitalitatii1
58 28241 1 6#Piatra_Vitalitatii2
59 28341 1 6#Piatra_Vitalitatii3
60 28441 1 6#Piatra_Vitalitatii4
61 28042 1 6#Piatra_Protectiei0
62 28142 1 6#Piatra_Protectiei1
63 28242 1 6#Piatra_Protectiei2
64 28342 1 6#Piatra_Protectiei3
65 28442 1 6#Piatra_Protectiei4
66 28043 1 6#Piatra_Grabei0
67 28143 1 6#Piatra_Grabei1
68 28243 1 6#Piatra_Grabei2
69 28343 1 6#Piatra_Grabei3
70 28443 1 6#Piatra_Grabei4
71 31098 1 200#Pergament_Abilitate
72 38057 1 400#Cufar_Carti
73 11074 1 400#Vrajeste_Obiectul
}
Avatar utilizator
RaulM
Nivel 1

Nivel 1
Mesaje: 54
Membru din: 19 Feb 2023, 20:53
Regat: Shinsoo
Aprecieri: 3  
Mulţumiri: 3  
  Rezolvări prob.: 3
Medalii

SebyS scrie: ↑03 Mar 2023, 22:35 Asta e toata functia void CHARACTER::DetermineDropMetinStone().
void CHARACTER::DetermineDropMetinStone()
{
const int METIN_STONE_NUM = 14;
static DWORD c_adwMetin[METIN_STONE_NUM] =
{
28030,
28031,
28032,
28033,
28034,
28035,
28036,
28037,
28038,
28039,
28040,
28041,
28042,
28043,
};
DWORD stone_num = GetRaceNum();
int idx = std::lower_bound(aStoneDrop, aStoneDrop+STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
{
m_dwDropMetinStone = 0;
}
else
{
const SStoneDropInfo & info = aStoneDrop[idx];
m_bDropMetinStonePct = info.iDropPct;
{
m_dwDropMetinStone = c_adwMetin[number(0, METIN_STONE_NUM - 1)];
int iGradePct = number(1, 100);
for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
{
int iLevelGradePortion = info.iLevelPct[iStoneLevel];
if (iGradePct <= iLevelGradePortion)
{
break;
}
else
{
iGradePct -= iLevelGradePortion;
m_dwDropMetinStone += 100; // 돌 +a -> +(a+1)이 될때마다 100씩 증가
}
}
}
}
}
Si aici din mob_drop_item pentru drop-ul de la metin de level 5 vnum=8001.
Group Metin_Necazului5
{
Mob 8001
Type drop
1 28030 1 6#Piatra_Patrunderii0
2 28130 1 6#Piatra_Patrunderii1
3 28230 1 6#Piatra_Patrunderii2
4 28330 1 6#Piatra_Patrunderii3
5 28430 1 6#Piatra_Patrunderii4
6 28031 1 6#Piatra_Lovitura_Fatala0
7 28131 1 6#Piatra_Lovitura_Fatala1
8 28231 1 6#Piatra_Lovitura_Fatala2
9 28331 1 6#Piatra_Lovitura_Fatala3
10 28431 1 6#Piatra_Lovitura_Fatala4
11 28032 1 6#Piatra_Reintoarcerii0
12 28132 1 6#Piatra_Reintoarcerii1
13 28232 1 6#Piatra_Reintoarcerii2
14 28332 1 6#Piatra_Reintoarcerii3
15 28432 1 6#Piatra_Reintoarcerii4
16 28033 1 6#Piatra_Anti_razboinici0
17 28133 1 6#Piatra_Anti_razboinici1
18 28233 1 6#Piatra_Anti_razboinici2
19 28333 1 6#Piatra_Anti_razboinici3
20 28433 1 6#Piatra_Anti_razboinici4
21 28034 1 6#Piatra_Anti_ninja0
22 28134 1 6#Piatra_Anti_ninja1
23 28234 1 6#Piatra_Anti_ninja2
24 28334 1 6#Piatra_Anti_ninja3
25 28434 1 6#Piatra_Anti_ninja4
26 28035 1 6#Piatra_Anti_sura0
27 28135 1 6#Piatra_Anti_sura1
28 28235 1 6#Piatra_Anti_sura2
29 28335 1 6#Piatra_Anti_sura3
30 28435 1 6#Piatra_Anti_sura4
31 28036 1 6#Piatra_Anti_saman0
32 28136 1 6#Piatra_Anti_saman1
33 28236 1 6#Piatra_Anti_saman2
34 28336 1 6#Piatra_Anti_saman3
35 28436 1 6#Piatra_Anti_saman4
36 28037 1 6#Piatra_Monstrilor0
37 28137 1 6#Piatra_Monstrilor1
38 28237 1 6#Piatra_Monstrilor2
39 28337 1 6#Piatra_Monstrilor3
40 28437 1 6#Piatra_Monstrilor4
41 28038 1 6#Piatra_Eschivei0
42 28138 1 6#Piatra_Eschivei1
43 28238 1 6#Piatra_Eschivei2
44 28338 1 6#Piatra_Eschivei3
45 28438 1 6#Piatra_Eschivei4
46 28039 1 6#Piatra_Pitularii0
47 28139 1 6#Piatra_Pitularii1
48 28239 1 6#Piatra_Pitularii2
49 28339 1 6#Piatra_Pitularii3
50 28439 1 6#Piatra_Pitularii4
51 28040 1 6#Piatra_Magiei0
52 28140 1 6#Piatra_Magiei1
53 28240 1 6#Piatra_Magiei2
54 28340 1 6#Piatra_Magiei3
55 28440 1 6#Piatra_Magiei4
56 28041 1 6#Piatra_Vitalitatii0
57 28141 1 6#Piatra_Vitalitatii1
58 28241 1 6#Piatra_Vitalitatii2
59 28341 1 6#Piatra_Vitalitatii3
60 28441 1 6#Piatra_Vitalitatii4
61 28042 1 6#Piatra_Protectiei0
62 28142 1 6#Piatra_Protectiei1
63 28242 1 6#Piatra_Protectiei2
64 28342 1 6#Piatra_Protectiei3
65 28442 1 6#Piatra_Protectiei4
66 28043 1 6#Piatra_Grabei0
67 28143 1 6#Piatra_Grabei1
68 28243 1 6#Piatra_Grabei2
69 28343 1 6#Piatra_Grabei3
70 28443 1 6#Piatra_Grabei4
71 31098 1 200#Pergament_Abilitate
72 38057 1 400#Cufar_Carti
73 11074 1 400#Vrajeste_Obiectul
}
fixuri-probleme/drop-pietre-metine-t94221.html
Avatar utilizator
SebyS
Nou Venit

Nou Venit
Mesaje: 6
Membru din: 09 Apr 2020, 22:42
Aprecieri: 0
Mulţumiri: 0
Medalii

Salut! Revin la aceeasi problema. Fisierele char.cpp si constants.cpp arata identic cu altele de pe un server pe care functioneaza ceea ce vreau eu si implicit cu cele din postul respectiv. Eu ma gandesc ca problema este de altundeva si nu pot sa imi dau seama exact ce e. De aceea, revin din nou cu aceeasi problema, daca stie cineva unde ar trebui sa ma uit sau ce ar trebui sa fac mai departe astept un reply. De asemenea, tin sa mentionez ca am incercat sa setez flag-ul no_drop_metin_stone si chiar sa sterg functia care face chestia asta. Daca cineva este dispus sa arunce o privire, astept un mesaj pe discord si eventual putem discuta mai multe detalii acolo: seby134#8172
Avatar utilizator
bogdan1809
Nivel 3

Nivel 3
Mesaje: 307
Membru din: 27 Feb 2014, 19:33
Aprecieri: 9  
Mulţumiri: 2  
  Rezolvări prob.: 1
Medalii

SebyS scrie: ↑14 Mar 2023, 19:40
Salut! Revin la aceeasi problema. Fisierele char.cpp si constants.cpp arata identic cu altele de pe un server pe care functioneaza ceea ce vreau eu si implicit cu cele din postul respectiv. Eu ma gandesc ca problema este de altundeva si nu pot sa imi dau seama exact ce e. De aceea, revin din nou cu aceeasi problema, daca stie cineva unde ar trebui sa ma uit sau ce ar trebui sa fac mai departe astept un reply. De asemenea, tin sa mentionez ca am incercat sa setez flag-ul no_drop_metin_stone si chiar sa sterg functia care face chestia asta. Daca cineva este dispus sa arunce o privire, astept un mesaj pe discord si eventual putem discuta mai multe detalii acolo: seby134#8172
Vezi sa nu ai ceva prin common/length.h, poate este vreo functie ceva facuta sa citeasca de acolo direct o valoare.
Avatar utilizator
Wizzard
Utilizator neserios / Untrustworthy user !

Utilizator neserios / Untrustworthy user !
Mesaje: 901
Membru din: 05 Iul 2021, 13:37
Server: 911.Projects
Regat: Chunjo
Aprecieri: 525  
Mulţumiri: 3420  
Discord: Copiază ID
 Contact:
Medalii

Subiect vechi. T/C
Închis
Răspunsuri
2
Vizualizări
275
Răspunsuri
1
Vizualizări
313
Răspunsuri
4
Vizualizări
666
Răspunsuri
4
Vizualizări
297

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie