PDA

View Full Version : |Source| CustomEarthQuake



LorenStudio
04/02/2021, 01:13 PM
Bom como estou a desenvolver um season2.5 usando a source muemu(S6) resolvi liberar o CustomEarthQuake que já tem FREE porém não organizado ou facil de pegar para quem é mais leigo..



OBS: A PARTE DO GETMAININFO NÃO VOU POSTAR ATÉ PQ NÃO É NADA DIFICIL DE SER FEITA.


VIDEO: [Only registered and activated users can see links]

3ctUbuN

CustomEarthQuake.h

#pragma once
#include "stdafx.h"
#define MAX_EARTH_QUAKE 512


#include <vector>


struct HORSE_EARTH_QUAKE{
int Index;
int ItemIndex;
int EffectCode;
int UseRGB;
int ColorR;
int ColorG;
int ColorB;
int EffectSize;
int SkillEarthQuake1;
int SkillEarthQuake2;
};


class cCEarthQuake
{
public:
cCEarthQuake();
virtual ~cCEarthQuake();
void Load(HORSE_EARTH_QUAKE* info);
void LoadRDarkHorseSkill();
public:
std::vector<HORSE_EARTH_QUAKE> m_EarthQuake;
}; extern cCEarthQuake gCustomEarthQuake;


CustomEarthQuake.cpp


#include "StdAfx.h"
#include "Import.h"
#include "zzzmathlib.h"
#include "Util.h"
#include "CustomEarthQuake.h"
#include "Object.h"
#include "Defines.h"
#include "CustomPet.h"


#define pAngleMatrix2 ((int(__cdecl*)(vec3_t a1, vec34_t a2)) 0x959CE0)
#define pVectorRotate2 ((int(__cdecl*)(vec3_t a1, vec34_t a2, vec3_t a3)) 0x95A1E0)
#define pMoveSceneFrame *(int*)0x00E8CB20
#define pEarthQuake *(float*)0x08787D48
#define pCreateEffect2 ((int(__cdecl*)(int a4, vec3_t Bone1, float* a6, vec3_t color, int a8, int a9, __int16 a10, __int16 a11, __int16 a12, __int16 a13, float a14, __int16 a1)) 0x006D9070)


cCEarthQuake gCustomEarthQuake;


cCEarthQuake::cCEarthQuake(){
this->m_EarthQuake.clear();
}
cCEarthQuake::~cCEarthQuake()
{
}


void cCEarthQuake::Load(HORSE_EARTH_QUAKE * info){
for( int n = 0; n < MAX_EARTH_QUAKE; n++){
if(info[n].Index < 0 || info[n].Index >= MAX_EARTH_QUAKE){
return;
}
this->m_EarthQuake.push_back(info[n]);
}
}


void RDarkHorseSkill(lpModelObj lpObjModel, lpViewObj lpObj){
if (lpObjModel && lpObj){
vec3_t Color;
++lpObjModel->OnAttacking;
if ( !(pMoveSceneFrame % 10) )
for(std::vector<HORSE_EARTH_QUAKE>::iterator it = gCustomEarthQuake.m_EarthQuake.begin();it != gCustomEarthQuake.m_EarthQuake.end();it++){
if(it->ItemIndex == (*(DWORD *)((int)lpObjModel + 48) - 1171)){
Color[0] = it->ColorR;
Color[1] = it->ColorG;
Color[2] = it->ColorB;
if(it->UseRGB == 1){
pCreateEffect2(it->EffectCode, &lpObjModel->VecPosX, &lpObjModel->WorldPos.X, Color, it->EffectSize, 0, -1, 0, 0, 0, 0.0, -1);
}else{
pCreateEffect2(it->EffectCode, &lpObjModel->VecPosX, &lpObjModel->WorldPos.X, &lpObjModel->ColorR, it->EffectSize, 0, -1, 0, 0, 0, 0.0, -1);
}
}else if (!gCustomPet2.CheckCustomPetByItem( *(DWORD *)((int)lpObjModel + 48) - 1171 )){
pCreateEffect2(32279, &lpObjModel->VecPosX, &lpObjModel->WorldPos.X, &lpObjModel->ColorR, 0, 0, -1, 0, 0, 0, 0.0, -1);
}
}
if ( lpObjModel->CoordX < 8.0 || lpObjModel->CoordX > 9.5 ){
if ( lpObjModel->OnAttacking == 19 ){
for(std::vector<HORSE_EARTH_QUAKE>::iterator it = gCustomEarthQuake.m_EarthQuake.begin();it != gCustomEarthQuake.m_EarthQuake.end();it++){
if(it->ItemIndex == (*(DWORD *)((int)lpObjModel + 48) - 1171)){
pCreateEffect2(it->SkillEarthQuake1, &lpObjModel->VecPosX, &lpObjModel->WorldPos.X, &lpObjModel->ColorR, 0, (int)lpObjModel, -1, 0, 2, 0, 0.0, -1);
}else if (!gCustomPet2.CheckCustomPetByItem( *(DWORD *)((int)lpObjModel + 48) - 1171 )){
pCreateEffect2(301, &lpObjModel->VecPosX, &lpObjModel->WorldPos.X, &lpObjModel->ColorR, 0, (int)lpObjModel, -1, 0, 2, 0, 0.0, -1);
}
}
lpObjModel->OnAttacking = -3;
}
}else{
for(std::vector<HORSE_EARTH_QUAKE>::iterator it = gCustomEarthQuake.m_EarthQuake.begin();it != gCustomEarthQuake.m_EarthQuake.end();it++){
if ( lpObjModel->OnAttacking % 2 == 1 ){
vec3_t WorldPos;
vec3_t AnglePos;
Vector(0.0, (double)(lpObjModel->OnAttacking / 2) * 150.0, 0.0, WorldPos);
Vector(0.0, 0.0, (double)(rand() % 360), AnglePos);
vec34_t Matrix;
vec3_t ResultPosition;
for (int i = 0; i < 6; ++i ){
AnglePos[2] += 60;
pAngleMatrix2(AnglePos,Matrix);
pVectorRotate2(WorldPos,Matrix,ResultPosition);
ResultPosition[0] += lpObjModel->VecPosX;
ResultPosition[1] += lpObjModel->VecPosY;
ResultPosition[2] += lpObjModel->VecPosZ;
if(it->ItemIndex == (*(DWORD *)((int)lpObjModel + 48) - 1171)){
pCreateEffect2(it->SkillEarthQuake2, ResultPosition, &lpObjModel->WorldPos.X, &lpObjModel->ColorR, 0, 0, -1, 0, 0, 0, 0.0, -1);
}else if (!gCustomPet2.CheckCustomPetByItem(*(DWORD *)((int)lpObjModel + 48) - 1171 )){
pCreateEffect2((rand() % 2) + 331, ResultPosition, &lpObjModel->WorldPos.X, &lpObjModel->ColorR, 0, 0, -1, 0, 0, 0, 0.0, -1);
}
}
pEarthQuake = (double)(rand() % 3 - 3) * 0.699999988079071;
}
}
}
}
}


void cCEarthQuake::LoadRDarkHorseSkill(){
MemorySet(0x00502A95,0x90,0x5);
SetCompleteHook(0xE8,0x00502A95,&RDarkHorseSkill);
}



Protect.h

HORSE_EARTH_QUAKE m_EarthQuakeLoad[MAX_EARTH_QUAKE];


Main.cpp

gCustomEarthQuake.Load(gProtect.m_MainInfo.m_Earth QuakeLoad);
gCustomEarthQuake.LoadRDarkHorseSkill();


Creditos:
Kosh
Nemesis
Louis

zodiacddos
24/04/2021, 05:25 AM
Share complete please

Mentor
27/05/2021, 07:05 PM
@LuciferLGS ([Only registered and activated users can see links])

Sabe me informar como corrigir esse problema?
[Only registered and activated users can see links]

O CustomEarhQuake.cpp que você postou veio com uns caracteres que está ocasionando uns erros, acho que foi na hora do ctrl v deu algum problema ^^
[Only registered and activated users can see links]


Edit______________

O problema da imagem 1 já resolvi, estava faltando uma letra nessa parte &lpObjModel

LorenStudio
27/05/2021, 08:26 PM
@LuciferLGS ([Only registered and activated users can see links])

Sabe me informar como corrigir esse problema?
[Only registered and activated users can see links]

O CustomEarhQuake.cpp que você postou veio com uns caracteres que está ocasionando uns erros, acho que foi na hora do ctrl v deu algum problema ^^
[Only registered and activated users can see links]


Edit______________

O problema da imagem 1 já resolvi, estava faltando uma letra nessa parte &lpObjModel

Corrigido, vlw pelo aviso e desculpe pela falta de atenção :D

Mentor
27/05/2021, 08:47 PM
Share complete please

GetMainInfo

CustomEarthQuake.h

#pragma once

#define MAX_EARTH_QUAKE 512

struct HORSE_EARTH_QUAKE
{
int Index;
int ItemIndex;
int EffectCode;
int UseRGB;
int ColorR;
int ColorG;
int ColorB;
int EffectSize;
int SkillEarthQuake1;
int SkillEarthQuake2;
};

class cCEarthQuake
{
public:
cCEarthQuake();
virtual ~cCEarthQuake();
void Init();
void Load(char* path);
void SetInfo(HORSE_EARTH_QUAKE info);

public:
HORSE_EARTH_QUAKE m_EarthQuake [MAX_EARTH_QUAKE];

}; extern cCEarthQuake gCustomEarthQuake;


CustomEarthQuake.cpp

#include "StdAfx.h"
#include "EarthQuake.h"
#include "MemScript.h"

cCEarthQuake gCustomEarthQuake;

cCEarthQuake::cCEarthQuake()
{
this->Init();
}
cCEarthQuake::~cCEarthQuake()
{
}

void cCEarthQuake::Init()
{
for(int n=0;n < MAX_EARTH_QUAKE;n++)
{
this->m_EarthQuake[n].Index = -1;
};
}

void cCEarthQuake::Load(char* path)
{
CMemScript* lpMemScript = new CMemScript;
if(lpMemScript == 0){
printf(MEM_SCRIPT_ALLOC_ERROR,path);
return;
}
if(lpMemScript->SetBuffer(path) == 0)
{
printf(lpMemScript->GetLastError());
delete lpMemScript;
return;
}
this->Init();
try
{
while(true)
{
if(lpMemScript->GetToken() == TOKEN_END)
{
break;
}
if(strcmp("end",lpMemScript->GetString()) == 0)
{
break;
}
HORSE_EARTH_QUAKE info;
memset(&info,0,sizeof(info));
static int CustomItemIndexCount = 0;
info.Index = CustomItemIndexCount++;
info.ItemIndex = lpMemScript->GetNumber();
info.EffectCode = lpMemScript->GetAsNumber();
info.UseRGB = lpMemScript->GetAsNumber();
info.ColorR = lpMemScript->GetAsFloatNumber();
info.ColorG = lpMemScript->GetAsFloatNumber();
info.ColorB = lpMemScript->GetAsFloatNumber();
info.EffectSize = lpMemScript->GetAsNumber();
info.SkillEarthQuake1 = lpMemScript->GetAsNumber();
info.SkillEarthQuake2 = lpMemScript->GetAsNumber();
this->SetInfo(info);
}
}
catch(...)
{
printf(lpMemScript->GetLastError());
}

delete lpMemScript;
}

void cCEarthQuake::SetInfo(HORSE_EARTH_QUAKE info)
{
if(info.Index < 0 || info.Index >= MAX_EARTH_QUAKE)
{
return;
}
this->m_EarthQuake[info.Index] = info;
}


GetMainInfo.cpp

ATENÇÃO! NÃO COPIAR SIMPLESMENTE ESSAS LINHAS ABAIXO E COLAR NO SEU CPP, ANALISE PRIMEIRO SEU CÓDIGO E ADICIONE ESSAS LINHAS NOS SEUS DEVIDOS LUGARES.


#include "EarthQuake.h"


DWORD CustomEffectEarthQuake;

HORSE_EARTH_QUAKE m_EarthQuake[MAX_EARTH_QUAKE];


info.CustomEffectEarthQuake = GetPrivateProfileInt("Custom","CustomEffectEarthQuake",0,".\\MainInfo.ini");

gCustomEarthQuake.Load("CustomEarthQuake.txt");


memcpy(info.m_EarthQuake, gCustomEarthQuake.m_EarthQuake, sizeof(info.m_EarthQuake));

Denis Alves
27/05/2021, 09:43 PM
Share complete please

para quem quem possa ter o erro da imagem 1, segue (adicionar em qualquer header (arquivo com extensão .h - pra ficar organizado use a Object.h)





typedef struct //648? 848!!
{
/*+0*/ int Prev;
/*+4*/ BYTE IsSetted;
/*+5*/ BYTE Unknown5;
BYTE gap01[3];
/*+9*/ BYTE Unknown9;
/*+10*/ BYTE Unknown10;
/*+11*/ BYTE Unknown11;
/*+12*/ BYTE Unknown12;
/*+13*/ BYTE Unknown13;
/*+14*/ BYTE Unknown14;
/*+15*/ BYTE Unknown15;
/*+16*/ BYTE Unknown16;
/*+17*/ BYTE Unknown17;
/*+18*/ WORD AnimationID;
/*+20*/ WORD Unknown20;
/*+22*/ BYTE Unknown22;
/*+23*/ BYTE Unknown23;
/*+24*/ BYTE ObjectType;
/*+25*/ BYTE Unknown25;
/*+26*/ BYTE Unknown26;
/*+27*/ BYTE Unknown27;
/*+28*/ BYTE Unknown28;
/*+29*/ BYTE Unknown29;
/*+30*/ BYTE OnAttacking;
/*+31*/ BYTE Unknown31;
/*+32*/ BYTE Unknown32;
/*+33*/ BYTE Unknown33;
/*+34*/ BYTE Unknown34;
/*+35*/ BYTE Unknown35;
/*+36*/ WORD Unknown36;
/*+38*/ WORD Unknown38;
BYTE gap05[8];
/*+48*/ DWORD SkinID;
/*+52*/ DWORD ActionType; //Fireworks
/*+48*/ DWORD Unknown48;
/*+56*/ DWORD Unknown56;
/*+60*/ DWORD Unknown60;
/*+64*/ DWORD Unknown64; //Count ?
/*+68*/ DWORD Transparency;
/*+72*/ float Unknown72;
/*+76*/ float Unknown76;
/*+80*/ float Unknown80;
BYTE gap06[8];
/*+92*/ DWORD Time; //Tempo de duração ?
/*+96*/ float Scale;
/*+100*/ float Unknown100;
/*+104*/ float Unknown104;
/*+108*/ float Unknown108;
/*+112*/ float Unknown112;
/*+116*/ float Unknown116;
/*+120*/ float Unknown120;
/*+124*/ float Unknown124;
/*+128*/ float Unknown128;
/*+132*/ float Unknown132;
/*+136*/ float Unknown136;
/*+140*/ float CoordX;
/*+144*/ float CoordY;
/*+148*/ float Unknown148;
/*+152*/ float Unknown152;
/*+156*/ float ColorR;
/*+160*/ float ColorG;
/*+164*/ float ColorB;
/*+168*/ float Unknown168;
/*+172*/ float Unknown172;
/*+176*/ float Unknown176;
/*+180*/ float Unknown180;
/*+184*/ float Unknown184;
/*+188*/ float Unknown188;
/*+192*/ float Unknown192;
/*+196*/ float Unknown196;
/*+200*/ float Unknown200;
/*+204*/ VAngle Unknown204;
/*+216*/ VAngle Unknown216;
/*+228*/ VAngle Unknown228;
/*+240*/ VAngle SelectZone; //ou o de cima
/*+252*/ float VecPosX;
/*+256*/ float VecPosY;
/*+260*/ float VecPosZ;
/*+264*/ VAngle WorldPos;
BYTE gap11[148];
/*+424*/ ObjectModel_424 Unknown424;
/*+472*/ VAngle Unknown472;
BYTE gap12[164];
/*+484*/
}


ObjectModel2, * lpModelObj;