[CODE] Set Guild Status

#1
Aqu? un code que hice hace unos d?as... les explico:

La ?dea de este code es que cuando salen de hunt con una guild, el GuildMaster puede otorgar Lyze para plantarse con un Wyv, FW, TW o HC... Zerk para lo mismo.. e Invi para ir por cualquier lado... :P tambi?n cuando salen de Raid... puede servir... pueden modificarlo para que solo funcione en Middleland o cualquier mapa de hunt... vean ustedes.. :P

Se los dejo.

Sources del HG - Game.cpp agregar:

Code: Select all

/********************************************************************************************
*****    void CGame::UserCommand_PowerGuild(int iClientH, char *pData, DWORD dwMsgSize)    *****
*****    ----------------------------------------------------------------------------    *****
*****    Cr?ditos    :: By Centuu.-                                                        *****
*****    Descripci?n :: Sistema de hunt para guilds, el guildmaster puede dar poderes.    *****
*****    ----------------------------------------------------------------------------    *****
*****    Llamada por el comando "/set #"                                                    *****
********************************************************************************************/
void CGame::UserCommand_PowerGuild(int iClientH, char *pData, DWORD dwMsgSize)
{
 register int i;
 DWORD dwTime = timeGetTime();
 char * token, cBuff[256], seps[] = "= \t\n";
 class CStrTok * pStrTok;
    
    if ((dwMsgSize)    <= 0) return;
    if (m_pClientList[iClientH] == NULL) return;
    if (m_pClientList[iClientH]->m_iGuildRank != 0) {
        // Centuu : Si no es GuildMaster el comando no funciona.
        SendNotifyMsg(NULL, iClientH, DEF_NOTIFY_NOGUILDMASTERLEVEL, NULL, NULL, NULL, NULL);
        return;
    }
    ZeroMemory(cBuff, sizeof(cBuff));
    memcpy(cBuff, pData, dwMsgSize);
    pStrTok = new class CStrTok(cBuff, seps);
    token = pStrTok->pGet();
    token = pStrTok->pGet();
    if (token != NULL) {
        for (i = 1; i < DEF_MAXCLIENTS; i++)
        if (m_pClientList[i] != NULL) {
            // Centuu : Solo funciona con miembros de la Guild.
            if (memcmp(m_pClientList[iClientH]->m_cGuildName, m_pClientList[i]->m_cGuildName, 20) != 0) return;
            switch (atoi(token)) {
            case 1: // Centuu : /set 1 = Berserk    
                m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_BERSERK] = TRUE;
                bRegisterDelayEvent(DEF_DELAYEVENTTYPE_MAGICRELEASE, DEF_MAGICTYPE_BERSERK, dwTime + (1000 * 600), i, DEF_OWNERTYPE_PLAYER, NULL, NULL, NULL, 1, NULL, NULL);
                SendNotifyMsg(NULL, i, DEF_NOTIFY_MAGICEFFECTON, DEF_MAGICTYPE_BERSERK, 1, NULL, NULL);
                break;
            case 2: // Centuu : /set 2 = Paralyze    
                m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_HOLDOBJECT] = 2;
                bRegisterDelayEvent(DEF_DELAYEVENTTYPE_MAGICRELEASE, DEF_MAGICTYPE_HOLDOBJECT, dwTime + (30 * 1000), i, DEF_OWNERTYPE_PLAYER, NULL, NULL, NULL, 2, NULL, NULL);
                SendNotifyMsg(NULL, i, DEF_NOTIFY_MAGICEFFECTON, DEF_MAGICTYPE_HOLDOBJECT, 2, NULL, NULL);
                break;
            case 3: // Centuu : /set 3 = Invisibility
                m_pClientList[i]->m_cMagicEffectStatus[DEF_MAGICTYPE_INVISIBILITY] = NULL;
                bRegisterDelayEvent(DEF_DELAYEVENTTYPE_MAGICRELEASE, DEF_MAGICTYPE_INVISIBILITY, dwTime + (m_pMagicConfigList[i]->m_dwLastTime * 1000), i, DEF_OWNERTYPE_PLAYER, NULL, NULL, NULL, m_pMagicConfigList[i]->m_sValue4, NULL, NULL);
                SendNotifyMsg(NULL, i, DEF_NOTIFY_MAGICEFFECTON, DEF_MAGICTYPE_INVISIBILITY, m_pMagicConfigList[i]->m_sValue4, NULL, NULL);
                break;
            }
        }
    }
    delete pStrTok;
}
Buscar " /who " y abajo agregar:

Code: Select all

if (memcmp(cp, "/set ", 5) == 0) {
            UserCommand_PowerGuild(iClientH, cp, dwMsgSize - 21);
            return;
        }
Game.h agregar:

Code: Select all

void UserCommand_PowerGuild(int iClientH, char *pData, DWORD dwMsgSize);
No est? testiado el comando... si alguien puede testiarlo ser?a de ayuda... adem?s decirme si funciona porque no tengo cosas yo para testiarlo... saludos. :P

La onda ser?a... el GuildMaster pone /set 1, todos tienen zer... /set 2, todos estan lyze y /set 3, todos estan invi... xD

La idea me surgi? despu?s de ver el code ParalyseAll de Mahjunia gracias a ?l.
Centuu.-

Sol Lucet Omnibus.-

Who is online

Users browsing this forum: No registered users and 1 guest