P3NG3R Max gold bug

Indította UnKn0Wn, 2018-09-05, 20:07:35

Sziasztok,

Betettem P3NG3R max gold leírását.
Van egy hibám vele, pl elnyomok egy kk-t és plusszba adja az expet (jó sokat), nem elveszi. Meg ilyesmik fordulnak elő azóta. Elvileg nem én tettem be rosszul, mert hallottam hogy másnál is van ilyen.

2018-09-05, 20:17:12 #1 Utolsó szerkesztés: 2018-09-05, 21:25:17 Szerző: K3zX
Pointchange hibázik (Választható módosításokban), igazából az a gond szerintem hogy a gold miatt át lett írva az amount long long-ra, de más ami használja meg nem.

Most vagy átírsz minden mást long longra ami használja, leírást nem tudok adni mert tuti hosszabb lenne lehet mint P3NG3R leírása, vagy lusta vagy mint én, tehát fogod a CHARACTER::PointChange-et, lemásolod pl PointChange2-re (char.cpp & char.h) abban legyen long long az amount, az eredetiben meg írd vissza intre.
Ezután a notepad++-ban keresés --> keresés a fájlokban: PointChange(POINT_GOLD
Minden egyes találatot írj át PointChange2(POINT_GOLD-re. Akár a csere a fájlokban funkcióval, és akkor csak egy kattintás az egész.

Nem mondom hogy a legkorrektebb megoldás, de működik.
Mindenesetre ha nem akarsz átírni minden pointchange érintett dolgot akkor más választásod amúgy sincs.
Char.cpp-ben az új PointChange2-ben a switch case-nél a default és case POINT_GOLD-on kívül törölheted a többit ha gondolod, úgyse lesznek ott használva soha. (Ha otthagyod sem gond)




Iderakom a PointChange2-t ha nem értenéd amit írtam:

char.cpp:
void CHARACTER::PointChange2(BYTE type, long long amount, bool bAmount, bool bBroadcast)
{
long long val = 0;

//sys_log(0, "PointChange %d %d | %d -> %d cHP %d mHP %d", type, amount, GetPoint(type), GetPoint(type)+amount, GetHP(), GetMaxHP());

switch (type)
{
case POINT_GOLD: //Pls switch case egy értékkel xD Írd át if (type == POINT_GOLD)-ra ha szúrja a szemed, engem nem érdekelt és én így hagytam.
{
long long newGold = MINMAXLL(0, static_cast<long long>(GetGold()) + static_cast<long long>(amount), g_llMaxGold);
SetGold(newGold);
val = GetGold();
}
break;

default:
sys_err("CHARACTER::PointChange2: %s: unknown point change type %d", GetName(), type);
return;
}

if (GetDesc())
{
struct packet_point_change pack;

pack.header = HEADER_GC_CHARACTER_POINT_CHANGE;
pack.dwVID = m_vid;
pack.type = type;
pack.value = val;

if (bAmount)
pack.amount = (long long)amount;
else
pack.amount = 0;

if (!bBroadcast)
GetDesc()->Packet(&pack, sizeof(struct packet_point_change));
else
PacketAround(&pack, sizeof(pack));
}
}


char.h
void PointChange2(BYTE type, long long amount, bool bAmount = false, bool bBroadcast = false);

+az eredetinél írd vissza az amount-ot int-re ahogy mondtam,
mert anélkül olyan mintha semmit nem csináltál volna.

2018-09-05, 20:31:48 #2 Utolsó szerkesztés: 2018-09-05, 20:56:09 Szerző: UnKn0Wn
Hát az hótbiztos hogy én sem fogok átírni mindent ;D
Köszi, kipróbálom. ~10perc és jelzek megy-e. Addig is ment a +.

Üzenet összefésülés: 2018-09-05, 20:56:09

Működik ;D ;D ;D