[CODE] Apocalypse

Ir abajo

[CODE] Apocalypse

Mensaje por MrKrhiz el Lun Oct 17, 2011 10:52 pm

*Primera Parte*

GAME.cpp

Código:
void CGame::GlobalStartApocalypseMode(int iClientH, char *pData, DWORD dwMsgSize)
{
    char *cp, cData[120];
    DWORD *dwp, dwApocalypseGUID;

    if (m_pClientList[iClientH]->m_iAdminUserLevel < 3) return;
    if (m_bIsApocalypseMode == TRUE) return;
    if (m_bIsHeldenianMode == TRUE) return;
    if (m_bIsCrusadeMode == TRUE) return;
   
    dwApocalypseGUID = timeGetTime();

    wsprintf(G_cTxt, "(%s) GM Order(%s): beginapocalypse", m_pClientList[iClientH]->m_cIPaddress, m_pClientList[iClientH]->m_cCharName);
    PutLogList(G_cTxt);
    bSendMsgToLS(MSGID_GAMEMASTERLOG, iClientH, FALSE, G_cTxt);
   
    ZeroMemory(cData, sizeof(cData));
    cp = (char *)cData;
    *cp = GSM_BEGINAPOCALYPSE;
    cp++;
    dwp = (DWORD *)cp;
    *dwp = dwApocalypseGUID;
    cp += 4;
   
    bStockMsgToGateServer(cData, 5);
    LocalStartApocalypseMode(dwApocalypseGUID);
}
void CGame::LocalStartApocalypseMode(DWORD dwApocalypseGUID)
{
    int i;
   
    m_bIsApocalypseMode = TRUE;

    if (dwApocalypseGUID != NULL) {
        _CreateApocalypseGUID(dwApocalypseGUID);
        m_dwApocalypseGUID = dwApocalypseGUID;
    }
   
    for (i = 0; i < DEF_MAXCLIENTS; i++) {
        if (m_pClientList[i] != NULL) {
            SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATESTARTMSG, NULL, NULL, NULL, NULL);
        }
    }

    for (i = 0; i < DEF_MAXMAPS; i++) {
        if (m_pMapList[i] != NULL) {
            if (m_pMapList[i]->m_iApocalypseMobGenType != 0) {
            //1 for no respawn, 2 for Boss spawn when map empty
            m_pMapList[i]->m_iMaximumObject = 0;
            }
        }
    }

    PutLogList("(!) Apocalypse Mode ON.");
        PutLogList(G_cTxt);
}
void CGame::GlobalEndApocalypseMode()
{
    char *cp, cData[120];

        if (m_bIsApocalypseMode == FALSE) return;
   
    ZeroMemory(cData, sizeof(cData));
    cp = (char *)cData;
    *cp = GSM_ENDAPOCALYPSE;
    cp++;
   
    LocalEndApocalypseMode();

    bStockMsgToGateServer(cData, 5);
}
void CGame::LocalEndApocalypseMode()
{
 int i;
   
    m_bIsApocalypseMode = FALSE;   
   
    for (i = 1; i < DEF_MAXCLIENTS; i++) {
    if (m_pClientList[i] != NULL) {
            SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEENDMSG, NULL, NULL, NULL, NULL);
            if (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_bIsApocalypseMap == TRUE)
                m_pClientList[i]->m_iTimeLeft_ForceRecall = 200;
        }
    }

    wsprintf(G_cTxt,"(!)Apocalypse Mode OFF.");
    PutLogList(G_cTxt);   
    _CreateApocalypseGUID(m_dwApocalypseGUID);
   
}
void CGame::_CreateApocalypseGUID(DWORD dwApocalypseGUID)
{
    char *cp, cTxt[256], cFn[256], cTemp[1024];
    FILE *pFile;
   
    _mkdir("GameData");
    ZeroMemory(cFn, sizeof(cFn));
   
    strcat(cFn, "GameData");
    strcat(cFn, "\\");
    strcat(cFn, "\\");
    strcat(cFn, "ApocalypseGUID.txt");
   
    pFile = fopen(cFn, "wt");
    if (pFile == NULL) {
        wsprintf(cTxt, "(!) Cannot create ApocalypseGUID(%d) file", dwApocalypseGUID);
        PutLogList(cTxt);
    }
    else {
        ZeroMemory(cTemp, sizeof(cTemp));
        ZeroMemory(cTxt, sizeof(cTxt));
       
        wsprintf(cTxt, "ApocalypseGUID = %d\n", dwApocalypseGUID);
        strcat(cTemp, cTxt);
       
        cp = (char *)cTemp;
        fwrite(cp, strlen(cp), 1, pFile);
       
        wsprintf(cTxt, "(O) ApocalypseGUID(%d) file created", dwApocalypseGUID);
        PutLogList(cTxt);
    }
    if (pFile != NULL) fclose(pFile);
}
BOOL CGame::bReadApocalypseGUIDFile(char * cFn)
{
 FILE * pFile;
 HANDLE hFile;
 DWORD  dwFileSize;
 char * cp, * token, cReadMode;
 char seps[] = "= \t\n";
 class CStrTok * pStrTok;

    cReadMode = 0;

    hFile = CreateFile(cFn, GENERIC_READ, NULL, NULL, OPEN_EXISTING, NULL, NULL);
    dwFileSize = GetFileSize(hFile, NULL);
    if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile);

    pFile = fopen(cFn, "rt");
    if (pFile == NULL) {
        // °ÔÀÓ¼�*¹öÀÇ ÃʱâÈ�* ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾ø´Ù.
        PutLogList("(!) Cannot open ApocalypseGUID file.");
        return FALSE;
    }
    else {
        PutLogList("(!) Reading ApocalypseGUID file...");
        cp = new char[dwFileSize+2];
        ZeroMemory(cp, dwFileSize+2);
        fread(cp, dwFileSize, 1, pFile);

        pStrTok = new class CStrTok(cp, seps);
        token = pStrTok->pGet();

        while( token != NULL )  {
           
            if (cReadMode != 0) {
                switch (cReadMode) {
                case 1:
                    m_dwApocalypseGUID = atoi(token);
                    wsprintf(G_cTxt, "ApocalypseGUID = %d", m_dwApocalypseGUID);
                    PutLogList(G_cTxt);
                    cReadMode = 0;
                    break;
                }
            }
            else {
                if (memcmp(token, "ApocalypseGUID", 11) == 0) cReadMode = 1;
            }
           
            token = pStrTok->pGet();
        }

        delete pStrTok;
        delete cp;
    }
    if (pFile != NULL) fclose(pFile);

    return TRUE;
}
void CGame::SendThunder(int iClient, short sX, short sY, short sV3, short sV4)
{ char  * cp, cData[100];
DWORD * dwp;
WORD * wp;
short * sp;
int iRet;
ZeroMemory(cData, sizeof(cData));
dwp  = (DWORD *)(cData + DEF_INDEX4_MSGID);
*dwp = MSGID_EVENT_COMMON;
wp  = (WORD *)(cData + DEF_INDEX2_MSGTYPE);
*wp  = DEF_COMMONTYPE_MAGIC;
cp = (char *)(cData + DEF_INDEX2_MSGTYPE + 2);
sp  = (short *)cp;
*sp = sX;
cp += 2;
sp  = (short *)cp;
*sp = sY;
cp += 2;
sp  = (short *)cp;
*sp = sX;
cp += 2;
sp  = (short *)cp;
*sp = sY;
cp += 2;
sp  = (short *)cp;
*sp = sV3;
cp += 2;
sp  = (short *)cp;
*sp = sV4;
cp += 2;
iRet = m_pClientList[iClient]->m_pXSock->iSendMsg(cData, 18);
}
void CGame::DoAbaddonThunderDamageHandler()
{
 int iResult;
 register int i;

    if (m_bIsApocalypseMode != TRUE) return;
    if (iDice(1, 100) != 1) return;
    for (i = 0; i < DEF_MAXCLIENTS; i++) {
        if (m_pClientList[i] != NULL) {
        if (m_pClientList[i]->m_iAdminUserLevel > 0) return;
            if (memcmp(m_pClientList[i]->m_cMapName, "abaddon", 7) == 0) {
                iResult = iDice(1,20) + 100;
                if ((m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_PROTECT] == 2) ||
                    (m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_PROTECT] == 5)) {
                    iResult /= 2;
                }
                SendNotifyMsg(NULL, i, DEF_NOTIFY_ABADDONTHUNDER, NULL, NULL, NULL, NULL);
                m_pClientList[i]->m_iHP -= iResult;
                if (m_pClientList[i]->m_iHP <= 0) {
                    ClientKilledHandler(i, NULL, NULL, iResult);
                }
                else if (iResult > 0) {
                    SendNotifyMsg(NULL, i, DEF_NOTIFY_HP, NULL, NULL, NULL, NULL);
                    SendEventToNearClient_TypeA(i, DEF_OWNERTYPE_PLAYER, MSGID_EVENT_MOTION, DEF_OBJECTDAMAGE, iResult, NULL, NULL);
                    if (m_pClientList[i]->m_bSkillUsingStatus[19] != TRUE) {
                            m_pMapList[m_pClientList[i]->m_cMapIndex]->ClearOwner(0, i, DEF_OWNERTYPE_PLAYER, m_pClientList[i]->m_sX, m_pClientList[i]->m_sY);
                            m_pMapList[m_pClientList[i]->m_cMapIndex]->SetOwner(i, DEF_OWNERTYPE_PLAYER, m_pClientList[i]->m_sX, m_pClientList[i]->m_sY);
                    }
                    if (m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_HOLDOBJECT] != 0) {
                        SendNotifyMsg(NULL, i, DEF_NOTIFY_MAGICEFFECTOFF, DEF_MAGICTYPE_HOLDOBJECT, m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_HOLDOBJECT], NULL, NULL);
                        bRemoveFromDelayEventList(i, DEF_OWNERTYPE_PLAYER, DEF_MAGICTYPE_HOLDOBJECT);
                    }
                }
            }
        }
    }
}
GAME.CPP arriba de /clearmap poner:

Código:
if (memcmp(cp, "/beginapocalypse", 16) == 0) {
            if (m_pClientList[iClientH]->m_iAdminUserLevel > 3) {
                if (m_pClientList[iClientH]->m_bIsAdminCommandEnabled == FALSE) return;
                GlobalStartApocalypseMode(iClientH, cp, dwMsgSize - 21);
                wsprintf(cTemp, "GM Order(%s): beginapocalypse", m_pClientList[iClientH]->m_cCharName);
                bSendMsgToLS(MSGID_GAMEMASTERLOG, iClientH, FALSE, cTemp);
        }
            return;
        }

        if (memcmp(cp, "/endapocalypse", 14) == 0) {
            if (m_pClientList[iClientH]->m_iAdminUserLevel > 3) {
                if (m_pClientList[iClientH]->m_bIsAdminCommandEnabled == FALSE) return;
                GlobalEndApocalypseMode();
                wsprintf(cTemp, "GM Order(%s): endapocalypse", m_pClientList[iClientH]->m_cCharName);
                bSendMsgToLS(MSGID_GAMEMASTERLOG, iClientH, FALSE, cTemp);
        }
            return;
        }
avatar
MrKrhiz
Hellbreath HellOfAngel
Hellbreath HellOfAngel

Mensajes : 29
Reputacion : 1
Fecha de inscripción : 17/10/2011

Ver perfil de usuario http://helbreathymas.activo.mx

Volver arriba Ir abajo

[CODE] Segunda parte

Mensaje por MrKrhiz el Lun Oct 17, 2011 10:53 pm

*Segunda Parte*
ASEGURENSE DE TENER ESTO EN GAME.CPP CASI AL FINAL DE
Código:
void CGame::CheckClientResponseTime() en el caso de que no este lo agregan.

//Apocalypse Related Functions
                if (m_pClientList[i] == NULL) break;
                if (m_bIsApocalypseMode == TRUE) {
                    if (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "icebound", 8) == 0)
                        SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 89, 31, NULL, m_pClientList[i]->m_cMapName);
                    else if (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "maze", 4) == 0)
                        SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 38, 163, NULL, m_pClientList[i]->m_cMapName);
                }
                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0)) {
                    if (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "procella", 8) == 0)
                    SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 59, 196, NULL, m_pClientList[i]->m_cMapName);
                }

                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0)) {
                        if (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "inferniaA", 9) == 0)
                            SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 115, 104, NULL, m_pClientList[i]->m_cMapName);
                        else if (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "inferniaB", 9) == 0)
                            SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 39, 118, NULL, m_pClientList[i]->m_cMapName);
                    }

                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "icebound", 8) == 0) &&
                    ((m_pClientList[i]->m_sX == 89 && m_pClientList[i]->m_sY == 31) ||
                    (m_pClientList[i]->m_sX == 89 && m_pClientList[i]->m_sY == 32) ||
                    (m_pClientList[i]->m_sX == 90 && m_pClientList[i]->m_sY == 31) ||
                    (m_pClientList[i]->m_sX == 90 && m_pClientList[i]->m_sY == 32))) {
                      RequestTeleportHandler(i, "2  ", "druncncity", -1, -1);
                }

                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0) &&
                ((memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "inferniaA", 9) == 0) &&
                    (m_pClientList[i]->m_sX == 115 && m_pClientList[i]->m_sY == 105))
                    ||
                    ((memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "inferniaB", 9) == 0) &&
                    (m_pClientList[i]->m_sX == 39 && m_pClientList[i]->m_sY == 119))) {
                    RequestTeleportHandler(i, "2  ", "maze", -1, -1);
                }


                if (m_pClientList[i] == NULL) break;
                    if ((m_bIsApocalypseMode == TRUE) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0) &&
                    (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "procella", 8) == 0) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject <= 0) &&
                    ((m_pClientList[i]->m_sX == 59 && m_pClientList[i]->m_sY == 196) ||
                    (m_pClientList[i]->m_sX == 60 && m_pClientList[i]->m_sY == 196) ||
                    (m_pClientList[i]->m_sX == 59 && m_pClientList[i]->m_sY == 197) ||
                    (m_pClientList[i]->m_sX == 60 && m_pClientList[i]->m_sY == 197))) {
                      RequestTeleportHandler(i, "2  ", "abaddon", -1, -1);
                }

                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "druncncity", 10) == 0) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0) &&
                    ((m_pClientList[i]->m_sX == 34 && m_pClientList[i]->m_sY == 85) ||
                    (m_pClientList[i]->m_sX == 34 && m_pClientList[i]->m_sY == 84) ||
                    (m_pClientList[i]->m_sX == 33 && m_pClientList[i]->m_sY == 84) ||
                    (m_pClientList[i]->m_sX == 33 && m_pClientList[i]->m_sY == 83) ||
                    (m_pClientList[i]->m_sX == 32 && m_pClientList[i]->m_sY == 83))) {
                      RequestTeleportHandler(i, "2  ", "inferniaA", -1, -1);
                }

                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "druncncity", 10) == 0) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0) &&
                    ((m_pClientList[i]->m_sX == 148 && m_pClientList[i]->m_sY == 65) ||
                    (m_pClientList[i]->m_sX == 148 && m_pClientList[i]->m_sY == 64) ||
                    (m_pClientList[i]->m_sX == 147 && m_pClientList[i]->m_sY == 64) ||
                    (m_pClientList[i]->m_sX == 147 && m_pClientList[i]->m_sY == 63) ||
                    (m_pClientList[i]->m_sX == 146 && m_pClientList[i]->m_sY == 63))) {
                      RequestTeleportHandler(i, "2  ", "inferniaB", -1, -1);
                }

                if (m_pClientList[i] == NULL) break;
                if ((m_bIsApocalypseMode == TRUE) &&
                    (memcmp(m_pMapList[m_pClientList[i]->m_cMapIndex]->m_cName, "druncncity",10) == 0) &&
                    (m_pMapList[m_pClientList[i]->m_cMapIndex]->m_iTotalActiveObject == 0)) {
                        SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 148, 61, NULL,
                                m_pClientList[i]->m_cMapName);
                        SendNotifyMsg(NULL, i, DEF_NOTIFY_APOCGATEOPEN, 34, 82, NULL,
                                m_pClientList[i]->m_cMapName);
                }
EN GAME.CPP ASEGURARSE TENER ESTOS CASES EN
Código:
void CGame::ServerStockMsgHandler(char *pData)

case GSM_BEGINAPOCALYPSE:
            cp++;
            dwp = (DWORD *)cp;
            cp += 4;
            LocalStartApocalypseMode(*dwp);
            break;
       
        case GSM_ENDAPOCALYPSE:
            cp++;
            LocalEndApocalypseMode();
            break;

GAME.H AGREGAR

EN GAME.H ASEGURENSE DE TENER ESTO

Código:
void GlobalStartApocalypseMode(int iClientH, char *pData, DWORD dwMsgSize);
void LocalStartApocalypseMode(DWORD dwApocalypseGUID);
void GlobalEndApocalypseMode();
void LocalEndApocalypseMode();
void SendThunder(int iClient, short sX, short sY, short sV3, short sV4);
void DoAbaddonThunderDamageHandler();
BOOL bReadScheduleConfigFile(char *pFn);
BOOL bReadApocalypseGUIDFile(char * cFn);
void _CreateApocalypseGUID(DWORD dwApocalypseGUID);
avatar
MrKrhiz
Hellbreath HellOfAngel
Hellbreath HellOfAngel

Mensajes : 29
Reputacion : 1
Fecha de inscripción : 17/10/2011

Ver perfil de usuario http://helbreathymas.activo.mx

Volver arriba Ir abajo

Re: [CODE] Apocalypse

Mensaje por ConeX el Mar Oct 18, 2011 10:30 pm

Lo recomiendo...
avatar
ConeX
Novato
Novato

Mensajes : 4
Reputacion : 1
Fecha de inscripción : 18/10/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: [CODE] Apocalypse

Mensaje por Enemy el Vie Nov 04, 2011 1:24 pm

falta poner a quien le pertenece.. los creditos siempre se ponen..
By ???????

_________________
avatar
Enemy
Anonymous
Anonymous

Mensajes : 2
Reputacion : 0
Fecha de inscripción : 24/10/2011
Localización : Cordoba

Ver perfil de usuario http://www.clanarghaloce.tk

Volver arriba Ir abajo

Re: [CODE] Apocalypse

Mensaje por MrKrhiz el Dom Nov 06, 2011 12:31 am

by (?????) No pongo creditos porque no se a quienes le pertencen si me podes ayudar te lo agradesco pongo codes que tengo en una carpeta Fiesta

_________________
************ Helbreath Black & White ************

avatar
MrKrhiz
Hellbreath HellOfAngel
Hellbreath HellOfAngel

Mensajes : 29
Reputacion : 1
Fecha de inscripción : 17/10/2011

Ver perfil de usuario http://helbreathymas.activo.mx

Volver arriba Ir abajo

Re: [CODE] Apocalypse

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.