Noticias:

SMF - Just Installed!

Menú principal

Command Reload in Game and Gameserver

Publicado por Dakosmu, Sep 18, 2023, 03:11 AM

Tema anterior - Siguiente tema

Dakosmu

Command Reload in Game and Gameserver

bueno, como tampoco he encontrado este código, y la verdad esta bueno compartir, ya que, gracias a eso, muchos de nosotros (los que no sabemos nada), aprendemos a agregar cosas y sentirnos un poquito mejor..
En fin, comenzamos


Dentro de CommandManager.h, agregamos entre la linea de comandos


COMMAND_RELOAD = 132, //aqui adentro va su numero de comando, uds elijen a gusto, no olviden que debe ser siguiente del anterior numero.. y no olviden la coma al final.
ahora vamos al final de CommandManager.h antes de private:
y agregamos

bool CommandReload(LPOBJ lpObj,char* arg);



Ahora
Dentro de CommandManager.cpp

void CCommandManager::ManagementCore(LPOBJ lpObj,char* message) // OK
vamos agregar, se darán cuenta donde agregar porque encontraran las lineas de los otros comando a mano.


        case COMMAND_RELOAD:
            this->CommandReload(lpObj,argument);
            break;

al final del archivo agregar


bool CCommandManager::CommandReload(LPOBJ lpObj,char* arg) // OK
{

char name[20] = {0};
this->GetString(arg,name,sizeof(name),0);

    if (strcmp(name,"blacklist") == 0)
    {
        gServerInfo.ReadBlackListInfo();
    }
    else if (strcmp(name,"chaosmix") == 0)
    {
gServerInfo.ReadChaosMixInfo();
    }
    else if (strcmp(name,"character") == 0)
    {
gServerInfo.ReadCharacterInfo();
    }
    else if (strcmp(name,"command") == 0)
    {
gServerInfo.ReadCommandInfo();
    }
    else if (strcmp(name,"common") == 0)
    {
gServerInfo.ReadCommonInfo();
    }
    else if (strcmp(name,"custom") == 0)
    {
gServerInfo.ReadCustomInfo();
    }
    else if (strcmp(name,"event") == 0)
    {
gServerInfo.ReadEventInfo();
    }
    else if (strcmp(name,"eventitembag") == 0)
    {
gServerInfo.ReadEventItemBagInfo();
    }
    else if (strcmp(name,"hack") == 0)
    {
gServerInfo.ReadHackInfo();
    }
    else if (strcmp(name,"item") == 0)
    {
gServerInfo.ReadItemInfo();
    }
    else if (strcmp(name,"monster") == 0)
    {
gServerInfo.ReloadMonsterInfo();
    }
    else if (strcmp(name,"move") == 0)
    {
gServerInfo.ReadMoveInfo();
    }
    else if (strcmp(name,"quest") == 0)
    {
gServerInfo.ReadQuestInfo();
    }
    else if (strcmp(name,"script") == 0)
    {
gServerInfo.ReadScriptInfo();
    }
    else if (strcmp(name,"shop") == 0)
    {
gServerInfo.ReadShopInfo();
    }
    else if (strcmp(name,"skill") == 0)
    {
gServerInfo.ReadSkillInfo();
    }
    else if (strcmp(name,"util") == 0)
    {
gServerInfo.ReadUtilInfo();
    }
   else if (strcmp(name,"all") == 0)
    {
gServerInfo.ReloadAll();
    }
else
{
gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage("Elegir nro de msj"));
return 0;
}

gNotice.GCNoticeSend(lpObj->Index,1,0,0,0,0,0,gMessage.GetMessage("Elegir nro de msj"));
return 1;
}


lo que esta entre "" es lo que va a relogear, si quieren agregar o cambiar algo, solo deben seguir el patron.-

Ahora en ServerInfo.h
Agregar dentro de


class CServerInfo
{
public:

void ReloadAll();


Bien, ahora dentro de ServerInfo.cpp agregar ANTES de void CServerInfo::ReadStartupInfo(char* section,char* path) // OK

void CServerInfo::ReloadAll() // OK
{
this->ReadBlackListInfo();

this->ReadChaosMixInfo();

this->ReadCharacterInfo();

this->ReadCommandInfo();

this->ReadCommonInfo();

//this->ReadMapServerInfo();

this->ReadCustomInfo();

this->ReadEventInfo();

this->ReadEventItemBagInfo();

this->ReadHackInfo();

this->ReadItemInfo();

this->ReadCashShopInfo();

//this->ReadMapInfo();

this->ReadMonsterInfo();

this->ReloadMonsterInfo();

this->ReadMoveInfo();

this->ReadQuestInfo();

this->ReadScriptInfo();

this->ReadShopInfo();

this->ReadSkillInfo();

this->ReadUtilInfo();


}


Agregar en CommandManager.txt de su Muserver el comando, es solo copiar una linea de otro comando de admin y ponerle el numero del comando que uds pusieron en CommandManager.h
Bueno, eso es todo si solo quieren agreagar al comando en juego, sin el gs

Ahora, si quieren agregarlo a una opc en el gs

van a GameServer.cpp
y buscan: case IDM_RELOAD

debajo de su ultimo reload, agregar:

case IDM_RELOAD_RELOADALL:
Console(LOG_BLUE,"Reload All");
gServerInfo.ReloadAll();
LogAdd(LOG_BLUE,"[ServerInfo] All reloaded successfully");
break;

Ahora van a resourcer.h y agregar debajo de su ultimo reload:


#define IDM_RELOAD_RELOADALL            32795 <------- aqui va el numero siguiente a su reload, ejm, el mio el ultimo era 32794, agregue 32795.
y si no me falla la memoria, eso es todo, si estoy mal y alguno puede corregirlo, digan y lo edito, este post lo hago porque, no existe este comando publicado, no se si porque es basico o porque todas las sourcer lo traen...
pero, lo hice para los que no tienen, no todas las sourcer son iguales, por lo tanto, tendran que adaptar o cambiar cosas, por ejem, en bases emu, si no me falla la memoria, los Cases donde van los codes son Result = CommandReload(lpObj,argument); x ejm.

En fin, sirve para la sourcer 2.0.7 ssemu que esta publicada en el foro, espero que lo disfruten y bueno, compartan sus codes, no sean malos :s

creditos: Yo por la adaptacion a la base ssemu + la guia.
Bon Dia

🡱 🡳