Chat global
Eventos Mob Automáticos
Salve
Mais um sistema que fiz a muito tempo para realizar eventos automáticos de mobs.
Servidor le o arquivo EventosMobManager.ini, salva nas variáveis, e fica verificando hora e minuto.
Conseguindo setar Field, Mob, duração, porcentagem.
Tem bastante coisa que pode melhorar, mas para quem se interessar já e algo.
[EventMob] ; Evento 0 Hora[0]=14 Minuto[0]=30 Field[0]=0 Porcentagem[0]=100 duracao[0]=60 monster[0]=1001 ; Evento 1 Hora[1]=16 Minuto[1]=0 Field[1]=1 Porcentagem[1]=100 duracao[1]=30 monster[1]=1 ; Evento 2 Hora[2]=18 Minuto[2]=0 Field[2]=2 Porcentagem[2]=75 duracao[2]=45 monster[2]=2 ; Continue até Evento 24... ; Evento 24 Hora[24]=23 Minuto[24]=30 Field[24]=5 Porcentagem[24]=100 duracao[24]=60 monster[24]=3
Seta as variáveis, EventMob o nome dos Mobs q serão usados em eventos.
// Procurar pela linha, e colocar as variaveis abaixo.
// extern int Open_SODConfig(char* szFileName, void* lphCoreMonster, int* SodTax, char* szSodText, int* SodScoreDiv);
//EVENTO MOB
const int NumeroEventos = 25;
float EventosMob[NumeroEventos][6] = { 0.0f };
const char* EventMob[38][2] = {
{"0", " Rei Hopi Event 7x"},
{"1", " Rei Hopi Event 8x"},
{"2", " Rei Hopi Event 7x"},
{"3", " Rei Hopi Event 7x"},
{ "4", "Rei Hopi Event 7x" },
{ "5", "Rei Hopi Event 7x" }
};
const char* MapasEventos[][2] = {
{"0", "Mata das Ac�cias"},
{"1", "F. Bamboo"},
{"2", "Jardim da Liberdade"},
{"3", "Cidade de Ricarten"},
{"4", "Ref�gio dos A."},
{"5", "Castelo dos Perdidos"},
{"6", "Vila Ruinen"},
{"7", "Terra Maldita"},
{"8", "Terra Esquecida"},
{"9", "Cidade de Navisko"},
{"10", "O�sis"},
{"11", "C. B. A."},
{"12", "Terra Proibida"},
{"13", "C. A. 1"},
{"14", "C. A. 2"},
{"15", "C. A. 3"},
{"16", "Sala do GM"},
{"17", "F. dos Esp�ritos"},
{"18", "F. das Ilus�es"},
{"19", "Vale Tranquilo"},
{"20", "E. dos Ventos"},
{"21", "Cidade de Pillai"},
{"22", "Templo Maldito 1"},
{"23", "Templo Maldito 2"},
{"24", "C. dos Cogumelos"},
{"25", "Caverna das Abelhas"},
{"26", "Santu�ro Sombrio"},
{"27", "E. d. F. do Caos"},
{"28", "Cora��o de Perum"},
{"29", "Eura"},
{"30", "S.o.D"},
{"31", "Vale Galubia"},
{"32", "Sala de Desafios"},
{"33", "Castelo Aben�oado"},
{"34", "Lago da Gan�ncia"},
{"35", "Santuario Congelado"},
{"36", "Covil do Kelvezu"},
{"37", "Ilha Perdida"},
{"38", "Templo Perdido"},
{"39", "Mapa 2D"},
{"40", "Torre sem Fim 1"},
{"41", "Torre sem Fim 2"},
{"42", "Templo Maldito 3"},
{"43", "Torre sem Fim 3"},
{"44", "Laborat�rio Secreto"},
{"45", "Arma Antiga"},
{"46", "Mina de Gelo 1"},
{"47", "Arquip�lago Perdido"},
{"48", "Covil do Eragon"},
{"49", "Arena de Batalha"},
{"50", "N�cleo de Ferro"},
{"51", "Abismo do Mar"}
};
Faz a leitura do arquivo EventMobManager.ini.
//Procurar pela linha, e colocar o codigo abaixo.
//for (int x = 1; x <= 150; x++)
// {
// STRINGFORMAT(szBuf, "Nv[%d]", x);
// LeIniStr("ExpConfig", szBuf, "Server\\Config\\ExpManager.ini", szBuf2);
// Multiplicador[x] = atof(szBuf2);
// }
//EVENT MOB
for (int x = 0; x <= (NumeroEventos - 1); x++)
{
STRINGFORMAT(szBuf, "Hora[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][0] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "Minuto[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][1] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "Field[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][2] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "Porcentagem[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][3] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "duracao[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][4] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "monster[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][5] = atof(szBuf2);
//ZeroMemory(szBuf, sizeof(szBuf));
//ZeroMemory(szBuf2, sizeof(szBuf2));
}
Verifica os horários minutos, cria o evento.
//Procurar pelas linhas, colocar abaixo.
// Eventos
// if (st.wDayOfWeek <= 7) {
//EVENT MOB
for (int y = 0; y <= NumeroEventos; y++)
{
if (EventosMob[y][0] == st.wHour)
{
if (EventosMob[y][1] == st.wMinute && EventosMob[y][1] != wLastCheckMin) {
int mob = EventosMob[y][5];
const char* constPointer = EventMob[mob][1];
char* modifiablePointer = new char[strlen(constPointer) + 1];
strcpy(modifiablePointer, constPointer);
if (modifiablePointer)
{
int Time = EventosMob[y][4];
int Rate = EventosMob[y][3];
// int Time = 30;
// int Rate = 100;
int Field = EventosMob[y][2];
if (Time == 0) Time = 1;
if (Rate == 0) Rate = 50;
else if (Rate > 100) Rate = 100;
smCHAR_INFO* lpChar = FindMonsterFromName(modifiablePointer);
STG_AREA* lpStgArea = &StageArea[Field];
if (lpChar)
{
if (lpStgArea && lpStgArea->Event_dwMonsterTime == 0)
{
lpStgArea->Event_lpChrMonster = lpChar;
lpStgArea->Event_dwMonsterTime = dwPlayServTime + Time * 1000 * 60;
lpStgArea->Event_MonsterPercentage = Rate * 10;
SERVERCHAT->SendChatAllEx(EChatColor::CHATCOLOR_Global, "Evento ativo!!%s em %s, por %d minutos!!", modifiablePointer, MapasEventos[Field][1], Time);
ZeroMemory(modifiablePointer, sizeof(modifiablePointer));
}
else if (lpStgArea && lpStgArea->Event_dwMonsterTime > 0)
{
}
}
else
{
}
}
else {
}
}
}
}
/reload_event_mob faz a releitura do arquivo EventMobManager.ini sem precisar reiniciar servidor.
//EVENTO MOB
else if (ChatCommand("/reload_event_mob", pszBuff))
{
ZeroMemory(Multiplicador, sizeof(Multiplicador));
char szBuf[50] = { 0 };
char szBuf2[50] = { 0 };
for (int x = 0; x <= (NumeroEventos - 1); x++)
{
STRINGFORMAT(szBuf, "Hora[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][0] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "Minuto[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][1] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "Field[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][2] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "Porcentagem[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][3] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
// ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "duracao[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][4] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
//ZeroMemory(szBuf2, sizeof(szBuf2));
STRINGFORMAT(szBuf, "monster[%d]", x);
LeIniStr("EventMob", szBuf, "Server\\Config\\EventMobManager.ini", szBuf2);
EventosMob[x][5] = atof(szBuf2);
// ZeroMemory(szBuf, sizeof(szBuf));
//ZeroMemory(szBuf2, sizeof(szBuf2));
// cout << "mob " << EventosMob[x][5] << endl;
}
SERVERCHAT->SendChat(pcUser, CHATCOLOR_Error, "> Evento carregado!");
}
ficou dahora parabéns meu mano !
Esse é o cara do momento! Dev braba demais mano, parabéns.

Parabens meu mano !
Visitando este tópico no momento: 1 guest.
Visto recentemente pelos usuários: FederaL[ADM] 46 minutos atrás, Prad 58 minutos atrás.
- 20 Fóruns
- 253 Tópicos
- 1,448 Posts
- 3 Online
- 267 Membros

