GF pet rendszer

Indította whiteworld, 2017-01-28, 16:13:53

Szép napot. A pet fejlesztése közben adódott a következő hiba, 40-es szintig szépen fejlődött a pet viszont mint a képen is látható



a sima exp nél hiányzik még 45 exp és ezt nem hajlandó fel fejleszteni hogy elérje a 100%-ot így hiába is vannak nálam a szükséges itemek amik kellenének ahhoz, hogy 41-es szintre lépjen a pet nem tudom tovább fejleszteni itt megakadt. Ebben várom a segítségeteket. Válaszokat előre is köszönöm.

Nem az a gond, hogy sz@r a kondíció, ami a pet-nek adja az ikszpét?
Mármint a pet számára érkező tapasztalatot vizsgálva, többm mint ami hiányzik és return end van?

Evolve-ot próbáltál? Mert nekem is volt, hogy csodálkoztam miért nem jó aztán nyomtam egy evolve-ot és bumm.
Ja, hogy próbáltad sry.

ez nem hiba, így van megírva, nyisd fel a pet ablakot, és ha jól emlékszem nevelés gombra kattintva kiírja hogy mi kell neki, ha van nálad olyan tárgy / tárgyak, elveszi és felugrik az exp és szintet ugrik

2017-01-29, 09:19:17 #4 Utolsó szerkesztés: 2017-01-29, 11:54:06 Szerző: whiteworld
Meg van 40-ről 41 re 1 db fehér gyöngyöt kér, ami így néz ki a cmd_general.cpp ben


ACMD(do_PetEvo) {

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()) {
ch->ChatPacket(CHAT_TYPE_INFO, "[PetEvolution] You cannot evolve your pet now!");
return;
}
if (ch->GetNewPetSystem()->IsActivePet()) {

int it[3][1] = {
{ 27992 }, //Here Modify Items to request for 1 evo
{ 27993 }, //Here Modify Items to request for 2 evo
{ 27994 }  //Here Modify Items to request for 3 evo
};
int ic[3][1] = {{ 1 },
{ 2 },
{ 3 }
};
int tmpevo = ch->GetNewPetSystem()->GetEvolution();

if (ch->GetNewPetSystem()->GetLevel() == 40 && tmpevo == 0 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 1 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 2) {


for (int b = 0; b < 1; b++) {
if (ch->CountSpecifyItem(it[tmpevo][b]) < ic[tmpevo][b]) {
ch->ChatPacket(CHAT_TYPE_INFO, "[PetEvolution] Items Required:");
for (int c = 0; c < 1; c++) {
DWORD vnum = it[tmpevo][c];
ch->ChatPacket(CHAT_TYPE_INFO, "%s X%d", ITEM_MANAGER::instance().GetTable(vnum)->szLocaleName , ic[tmpevo][c]);
}
return;
}
}
for (int c = 0; c < 1; c++) {
ch->RemoveSpecifyItem(it[tmpevo][c], ic[tmpevo][c]);
}
ch->GetNewPetSystem()->IncreasePetEvolution();

}
else {
ch->ChatPacket(CHAT_TYPE_INFO, "You can't evolve your pet!");
return;
}

}else
ch->ChatPacket(CHAT_TYPE_INFO, "Your pet should be summoned!");

}

#endif


Viszont szeretném ha több itemet és azokból is több darabot kérne ebben tudna valaki segíteni?
Néztem több pet systemet is de mindegyikben csak a gyöngyök voltak. Előre is köszönöm a segítséget.


próbáltam de mindent kér csak azt nem amit oda írtam


ACMD(do_PetEvo) {

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()) {
ch->ChatPacket(CHAT_TYPE_INFO, "[PetEvolution] You cannot evolve your pet now!");
return;
}
if (ch->GetNewPetSystem()->IsActivePet()) {

int it[3][7] = {
{ 55003, 30058, 30073, 30041, 30017, 30074, 30088 }, //Here Modify Items to request for 1 evo
{ 55004, 27994, 30035, 30089, 30031, 30011, 30080 }, //Here Modify Items to request for 2 evo
{ 55005, 30083, 27992, 27993, 30086, 30077, 30550 }  //Here Modify Items to request for 3 evo
};
int ic[3][1] = {{ 1 },
{ 2 },
{ 3 }
};
int tmpevo = ch->GetNewPetSystem()->GetEvolution();

if (ch->GetNewPetSystem()->GetLevel() == 40 && tmpevo == 0 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 1 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 2) {
for (int b = 0; b < 1; b++) {
if (ch->CountSpecifyItem(it[tmpevo][b]) < ic[tmpevo][b]) {
ch->ChatPacket(CHAT_TYPE_INFO, "[PetEvolution] Items Required:");
for (int c = 0; c < 1; c++) {
DWORD vnum = it[tmpevo][c];
ch->ChatPacket(CHAT_TYPE_INFO, "%s X%d", ITEM_MANAGER::instance().GetTable(vnum)->szLocaleName , ic[tmpevo][c]);
}
return;
}
}
for (int c = 0; c < 1; c++) {
ch->RemoveSpecifyItem(it[tmpevo][c], ic[tmpevo][c]);
}
ch->GetNewPetSystem()->IncreasePetEvolution();

}
else {
ch->ChatPacket(CHAT_TYPE_INFO, "You can't evolve your pet!");
return;
}

}else
ch->ChatPacket(CHAT_TYPE_INFO, "Your pet should be summoned!");

}

#endif

Idézetet írta: whiteworld Dátum 2017-01-29, 11:51:01
próbáltam de mindent kér csak azt nem amit oda írtam


ACMD(do_PetEvo) {

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()) {
ch->ChatPacket(CHAT_TYPE_INFO, "[PetEvolution] You cannot evolve your pet now!");
return;
}
if (ch->GetNewPetSystem()->IsActivePet()) {

int it[3][7] = {
{ 55003, 30058, 30073, 30041, 30017, 30074, 30088 }, //Here Modify Items to request for 1 evo
{ 55004, 27994, 30035, 30089, 30031, 30011, 30080 }, //Here Modify Items to request for 2 evo
{ 55005, 30083, 27992, 27993, 30086, 30077, 30550 }  //Here Modify Items to request for 3 evo
};
int ic[3][1] = {{ 1 },
{ 2 },
{ 3 }
};
int tmpevo = ch->GetNewPetSystem()->GetEvolution();

if (ch->GetNewPetSystem()->GetLevel() == 40 && tmpevo == 0 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 1 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 2) {
for (int b = 0; b < 7; b++) {
if (ch->CountSpecifyItem(it[tmpevo][b]) < ic[tmpevo][b]) {
ch->ChatPacket(CHAT_TYPE_INFO, "[PetEvolution] Items Required:");
for (int c = 0; c < 7; c++) {
DWORD vnum = it[tmpevo][c];
ch->ChatPacket(CHAT_TYPE_INFO, "%s X%d", ITEM_MANAGER::instance().GetTable(vnum)->szLocaleName , ic[tmpevo][c]);
}
return;
}
}
for (int c = 0; c < 7; c++) {
ch->RemoveSpecifyItem(it[tmpevo][c], ic[tmpevo][c]);
}
ch->GetNewPetSystem()->IncreasePetEvolution();

}
else {
ch->ChatPacket(CHAT_TYPE_INFO, "You can't evolve your pet!");
return;
}

}else
ch->ChatPacket(CHAT_TYPE_INFO, "Your pet should be summoned!");

}

#endif


Így jó lesz


ACMD(do_PetEvo) {

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()) {
ch->ChatPacket(CHAT_TYPE_INFO, "[Pet fejlesztés] A petet nem lehet még tovább fejleszteni.");
return;
}
if (ch->GetNewPetSystem()->IsActivePet()) {

int it[3][7] = {
{ 55003, 30058, 30073, 30041, 30017, 30032, 30088}, //Here Modify Items to request for 1 evo
{ 55004, 27994, 30035, 30089, 30031, 30011, 30080}, //Here Modify Items to request for 2 evo
{ 55004, 30083, 27993, 27992, 30086, 30077, 30550}  //Here Modify Items to request for 3 evo
};
int ic[3][7] = {{ 10, 10, 10, 10, 10, 5, 5},
{ 10, 2, 10, 10, 10, 10, 5},
{ 10, 10, 2, 2, 10, 5, 5}
};
int tmpevo = ch->GetNewPetSystem()->GetEvolution();

if (ch->GetNewPetSystem()->GetLevel() == 40 && tmpevo == 0 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 1 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 2) {
for (int b = 0; b < 7; b++) {
if (ch->CountSpecifyItem(it[tmpevo][b]) < ic[tmpevo][b]) {
ch->ChatPacket(CHAT_TYPE_INFO, "[Pet fejlesztés] Szükséges tárgyak:");
for (int c = 0; c < 7; c++) {
DWORD vnum = it[tmpevo][c];
ch->ChatPacket(CHAT_TYPE_INFO, "%s X%d", ITEM_MANAGER::instance().GetTable(vnum)->szLocaleName , ic[tmpevo][c]);
}
return;
}
}
for (int c = 0; c < 7; c++) {
ch->RemoveSpecifyItem(it[tmpevo][c], ic[tmpevo][c]);
}
ch->GetNewPetSystem()->IncreasePetEvolution();

}
else {
ch->ChatPacket(CHAT_TYPE_INFO, "A petet nem lehet fejleszteni!");
return;
}

}else
ch->ChatPacket(CHAT_TYPE_INFO, "Miután a pet!");

}


Idézetet írta: mikee0121 Dátum 2017-01-29, 14:37:59

ACMD(do_PetEvo) {

if (ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen()) {
ch->ChatPacket(CHAT_TYPE_INFO, "[Pet fejlesztés] A petet nem lehet még tovább fejleszteni.");
return;
}
if (ch->GetNewPetSystem()->IsActivePet()) {

int it[3][7] = {
{ 55003, 30058, 30073, 30041, 30017, 30032, 30088}, //Here Modify Items to request for 1 evo
{ 55004, 27994, 30035, 30089, 30031, 30011, 30080}, //Here Modify Items to request for 2 evo
{ 55004, 30083, 27993, 27992, 30086, 30077, 30550}  //Here Modify Items to request for 3 evo
};
int ic[3][7] = {{ 10, 10, 10, 10, 10, 5, 5},
{ 10, 2, 10, 10, 10, 10, 5},
{ 10, 10, 2, 2, 10, 5, 5}
};
int tmpevo = ch->GetNewPetSystem()->GetEvolution();

if (ch->GetNewPetSystem()->GetLevel() == 40 && tmpevo == 0 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 1 ||
ch->GetNewPetSystem()->GetLevel() == 81 && tmpevo == 2) {
for (int b = 0; b < 7; b++) {
if (ch->CountSpecifyItem(it[tmpevo][b]) < ic[tmpevo][b]) {
ch->ChatPacket(CHAT_TYPE_INFO, "[Pet fejlesztés] Szükséges tárgyak:");
for (int c = 0; c < 7; c++) {
DWORD vnum = it[tmpevo][c];
ch->ChatPacket(CHAT_TYPE_INFO, "%s X%d", ITEM_MANAGER::instance().GetTable(vnum)->szLocaleName , ic[tmpevo][c]);
}
return;
}
}
for (int c = 0; c < 7; c++) {
ch->RemoveSpecifyItem(it[tmpevo][c], ic[tmpevo][c]);
}
ch->GetNewPetSystem()->IncreasePetEvolution();

}
else {
ch->ChatPacket(CHAT_TYPE_INFO, "A petet nem lehet fejleszteni!");
return;
}

}else
ch->ChatPacket(CHAT_TYPE_INFO, "Miután a pet!");

}


Ugyan ezt csináltam pls. A chat_type úgy nem lesz jó, az ékezetet nem fogja jelezni. LC_TEXTnek kell lennie, és átrakni locale_stringbe magyarul.

Nemnem. Ha LC van akkor localestringből olvassa, ha nincs akkor kiírja ami ott van ékezetekkel együtt.
Ha viszont LC van de nincs a stringbe akkor is kiírja viszont az ékezeteket rosszul.

Idézetet írta: 5310pati Dátum 2017-01-29, 16:10:23
Nemnem. Ha LC van akkor localestringből olvassa, ha nincs akkor kiírja ami ott van ékezetekkel együtt.
Ha viszont LC van de nincs a stringbe akkor is kiírja viszont az ékezeteket rosszul.

Köszönöm

Köszönöm a segítséget mindenkinek sikerült megoldani, ment a plusz mindenkinek.