[CODE] Apocalypse
3 participantes
Página 1 de 1.
[CODE] Apocalypse
*Primera Parte*
GAME.cpp
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);
}
}
}
}
}
}
- 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;
}
[CODE] Segunda parte
*Segunda Parte*
ASEGURENSE DE TENER ESTO EN GAME.CPP CASI AL FINAL DE
GAME.H AGREGAR
EN GAME.H ASEGURENSE DE TENER ESTO
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);
}
- 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);
Re: [CODE] Apocalypse
Lo recomiendo...
ConeX- Leecher
- Mensajes : 4
Reputacion : 1
Fecha de inscripción : 18/10/2011
Re: [CODE] Apocalypse
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
Temas similares
» [CODE] MP,HP,SP, EN COLORES
» [CODE] Afk Checker
» [CODE] Necklace Of Fury - Hit x8
» [CODE] Habilitar F1 Para binds
» [CODE] Admin Onlines By Acidx
» [CODE] Afk Checker
» [CODE] Necklace Of Fury - Hit x8
» [CODE] Habilitar F1 Para binds
» [CODE] Admin Onlines By Acidx
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|