Sziasztok!
Szeretném megoldani, hogy a szerveren a szorzókat resi után automatikusan beállítsa, illetve, hogy ha lejárna a szorzó akkor is újra rakja.
Erre valakinek van esetleg megoldása?
szerintem a CPrivManager konstruktorát írd át erre (priv_manager.cpp):
for(int i=0;i<MAX_PRIV_NUM;++i)
{
for(int j=0;j<EMPIRE_MAX_NUM;++j)
{
m_aakPrivEmpireData[i][j].m_value = SZÓRZÓÉRTÉKE;
m_aakPrivEmpireData[i][j].m_end_time_sec = get_global_time()+60*60*24*7;
}
}
Köszönöm szépen a válaszod. Azt le tudnád írni, hogy pontosan mit kell lecserélni, vagy mi után kell ezt tenni?
Vagy itt egy egyszerűbb.
Keresd meg azt a részt ahol ellenőrzi a szorzók értékét és hívd meg ezt utána.
Hívd meg így:
empire_rate();
Funkció:
static bool empire_rate()
{
for (int type = 0; type <= 4; type++)
CPrivManager::instance().GiveEmpirePriv(0, type, 1000, 0, get_global_time() + 60 * 60 * 24 * 365 * 60);
}
Köszönöm a válaszokat!
Első működik!
Meli, a tiédet nem próbáltam, de biztosan az is jó lett volna!
-----------------------------------------------------------------------------
Vagyis azt hittem, hogy működik, de nem. Csak kiirja, hogy 500% de alap szorzo van. És ha rakok rá parancsal, utána sem lesz jó. Gondolom, rosszul tettem be Distraught :(
Idézetet írta: RealKorf Dátum 2018-04-30, 16:21:06
Köszönöm a válaszokat!
Első működik!
Meli, a tiédet nem próbáltam, de biztosan az is jó lett volna!
-----------------------------------------------------------------------------
Vagyis azt hittem, hogy működik, de nem. Csak kiirja, hogy 500% de alap szorzo van. És ha rakok rá parancsal, utána sem lesz jó. Gondolom, rosszul tettem be Distraught :(
Megírtam a kódot, csak tudnunk kellene, hogy hol hívjuk meg.
Per pill beletettem az input_loginba és most működik.
Csak eléggé csúnya megoldás ez így.
A funkciót hova tegyem be?
Szerinted a későbbiekben lehet gond, hogy így van megoldva?
Meli függvényéből tedd bele inkább akkor már a CPrivManager konstruktorába a memset után ezt a 2 sort:
for (int type=0;type<=4;++type)
GiveEmpirePriv(0, type, 1000, 0, get_global_time() + 60 * 60 * 24 * 365 * 60);
Idézetet írta: RealKorf Dátum 2018-04-30, 18:01:18
A funkciót hova tegyem be?
Szerinted a későbbiekben lehet gond, hogy így van megoldva?
Na itt van tessék:
config.cpp
keresd ezt:
void config_init(const string& st_localeServiceName)
fölé ezt:
void LoadPrivRate()
{
for (int type = 1; type <= 4; type++) //Típusok (Item, Yang, Yang bomba, Exp)
CPrivManager::instance().GiveEmpirePriv(0, type, 1000, 0, get_global_time() + 60 * 60 * 24 * 365 * 60);
}
Ugyan ebben a függvényben: (void config_init(const string& st_localeServiceName))
void config_init(const string& st_localeServiceName)
{
[...]
CWarMapManager::instance().LoadWarMapInfo(NULL);
FN_log_adminpage();
}
Ez fölé:
CWarMapManager::instance().LoadWarMapInfo(NULL);
Ezt add:
LoadPrivRate();
[spoiler]Ha segítettem jöhet a + ^^
[/spoiler]
Nekem hibával fut le:
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kepfeltoltes.eu%2Fimages%2Fhdd1%2F2018%2F04%2F30%2F846fsg.png&hash=d6efe1993b78806f4f522f5ae393bdbfeb5b6246) (http://www.kepfeltoltes.eu/view.php?filename=846fsg.png)
Idézetet írta: RealKorf Dátum 2018-04-30, 19:09:21
Nekem hibával fut le:
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kepfeltoltes.eu%2Fimages%2Fhdd1%2F2018%2F04%2F30%2F846fsg.png&hash=d6efe1993b78806f4f522f5ae393bdbfeb5b6246) (http://www.kepfeltoltes.eu/view.php?filename=846fsg.png)
Bocs!
Ezt az incluedok közé tedd:
#include "priv_manager.h"
vagy sokkal egyszerűbb, ha a priv_manager.h-ban a (vége fele találod)
struct SPrivEmpireData
{
int m_value;
time_t m_end_time_sec;
};
részt az alábbira módosítod:
struct SPrivEmpireData
{
int m_value = [color=red]SZORZÓ[/color];
time_t m_end_time_sec = get_global_time() + 60*60*24*365;
};
A fájl legelejére pedig
#include "utils.h"
Ezután a priv_manager.cpp-ben kitörlöd ami van a konstruktorban.
Nézzen ki így:
CPrivManager::CPrivManager()
{
}
Nekem ez error -al zárul!
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kepfeltoltes.eu%2Fimages%2Fhdd1%2F2018%2F04%2F30%2F556rdeh.png&hash=cf69266101143b5297804df84be92f12762a82df) (http://www.kepfeltoltes.eu/view.php?filename=556rdeh.png)
Ezt hagyjuk inkább. A CPrivManager::CPrivManager() -be (priv_manager.cpp) szerepeljen ennyi:
for(int i=0;i<MAX_PRIV_NUM;++i)
for(int j=0;j<EMPIRE_MAX_NUM;++j)
GiveEmpirePriv(j, i, SZORZÓ, 0, get_global_time() + 60*60*24*365);
Idézetet írta: Distraught Dátum 2018-04-30, 22:56:43
Ezt hagyjuk inkább. A CPrivManager::CPrivManager() -be (priv_manager.cpp) szerepeljen ennyi:
for(int i=0;i<MAX_PRIV_NUM;++i)
for(int j=0;j<EMPIRE_MAX_NUM;++j)
GiveEmpirePriv(j, i, SZORZÓ, 0, get_global_time() + 60*60*24*365);
Distraught, minek teszed ciklusba az empire-t?
A birodalomnak (j) 0 ás értéket kell adni, hogy minden birodalomban adja a bónuszt.
UI: Nem fog elindulni a game, csak a db.
ebben semmi arra való utalást nem látok:
void CPrivManager::GiveEmpirePriv(BYTE empire, BYTE type, int value, BYTE bLog, time_t end_time_sec)
{
if (MAX_PRIV_NUM <= type)
{
sys_err("PRIV_MANAGER: GiveEmpirePriv: wrong empire priv type(%u)", type);
return;
}
sys_log(0, "Set Empire Priv: empire(%d) type(%d) value(%d) duration_sec(%d)", empire, type, value, end_time_sec-get_global_time());
value = MINMAX(0, value, 1000);
end_time_sec = MINMAX(0, end_time_sec, get_global_time()+60*60*24*7);
SPrivEmpireData& rkPrivEmpireData=m_aakPrivEmpireData[type][empire];
rkPrivEmpireData.m_value = value;
rkPrivEmpireData.m_end_time_sec = end_time_sec;
if (value)
{
char buf[100];
snprintf(buf, sizeof(buf), LC_TEXT("%s의 %s이 %d%% 증가했습니다!"), GetEmpireName(empire), GetPrivName(type), value);
if (empire)
SendNotice(buf);
else
SendLog(buf);
}
else
{
char buf[100];
snprintf(buf, sizeof(buf), LC_TEXT("%s의 %s이 정상으로 돌아왔습니다."), GetEmpireName(empire), GetPrivName(type));
if (empire)
SendNotice(buf);
else
SendLog(buf);
}
if (bLog)
{
LogManager::instance().CharLog(0, empire, type, value, "EMPIRE_PRIV", "", "");
}
}
IdézEzt hagyjuk inkább. A CPrivManager::CPrivManager() -be (priv_manager.cpp) szerepeljen ennyi:
for(int i=0;i<MAX_PRIV_NUM;++i)
for(int j=0;j<EMPIRE_MAX_NUM;++j)
GiveEmpirePriv(j, i, SZORZÓ, 0, get_global_time() + 60*60*24*365);
Ezzel nekem Hiba a szerver kapcsolatban hibát ad :(
Nem értem miért öli meg a gamet... Én is próbáltam már amúgy ezt a megoldást.
És mi lenne, ha ezt megcsinálnám:
http://metin2hungary.net/index.php/topic,193909.msg1021860.html#msg1021860 (http://metin2hungary.net/index.php/topic,193909.msg1021860.html#msg1021860)
Utána pedig időzített PHP scriptel adnám meg neki a szorzót ;D
Idézetet írta: RealKorf Dátum 2018-04-30, 23:15:22
És mi lenne, ha ezt megcsinálnám:
http://metin2hungary.net/index.php/topic,193909.msg1021860.html#msg1021860 (http://metin2hungary.net/index.php/topic,193909.msg1021860.html#msg1021860)
Utána pedig időzített PHP scriptel adnám meg neki a szorzót ;D
A huzsihun-os témákat hanyagold sztm :D
Én inkább ezt javaslom, illetve a napi szintű esti karbantartást, logok mentését, ürítését stb stb.
https://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/3370351-release-automatic-default-priv-rates-db-startup.html
Idézetet írta: [VIP]P3NG3R Dátum 2018-04-30, 23:37:10
Én inkább ezt javaslom, illetve a napi szintű esti karbantartást, logok mentését, ürítését stb stb.
https://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/3370351-release-automatic-default-priv-rates-db-startup.html
Ennyi :)
Megnézem már én is, thx :)
Na meg is néztem, de ugyan az a bug ami az én kódomnál volt!
Kiakad a szorzó mutatója és mindent 1000% nak ír még akkor is, ha nem annyi.
(csak akkor, ha GM el átírod)+Ahogy módosítasz egy droppot GM el mind a 4 drop szövegét írja 1000% ra és egyszerre. Bármennyire teszed a szorzót.
Bocs, ha hülyén fogalmaztam fáradt vagyok :(
Én úgy oldanám meg hogy magát a parancsot azt megcsinálnám úgy hogy a playereknek is elérhető legyen
És egy "auto15perc" quest formájára (15 percenként ezt-azt kiír) készítenék egy szorzós questet (commanddal hívnám le)
Köszönöm szépen [VIP]P3NG3R ! Nekem ezzel tökéletesen működik!
Meli, nekem jól kiírja a szorzókat:
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fwww.kepfeltoltes.eu%2Fimages%2Fhdd1%2F2018%2F05%2F01%2F288sdf.png&hash=eb62ba0abd9f81deb29f519e2a34e474e8075172) (http://www.kepfeltoltes.eu/view.php?filename=288sdf.png)