0 Miembros and 1 Guest are viewing this topic.
Citar desde: kind on May 23, 2020, 06:38:03 PMComo dijo Daniel@ esta funcion ata los efectos al bmd entero x asi decirlo, no va a funcionar igual q los efectos en alas x ej.Habiendo dicho eso, comparto la forma para en vez de agregar 1 efecto estatico, agregar dinamicos y darle un poco mas de sentido a la funcion, ya que sino ni rinde. El codigo esta todo croto, lo hice para probar nomas. Asi queda:
Citar desde: rodrigo117 on May 26, 2020, 12:13:06 AMhola, alguien pudo probarlo y decirme si funciona? quiero implementarlo pero mi main crashea .8
int ItemGroup = (dwItemNumber - 1171) / 512; int ItemID = (dwItemNumber - 1171) % 512; if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = 2.0; //Aca }
//================================================================================ if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = lpInfo->PetSize ; //Aca }//================================================================================
Citar desde: Llalex on May 26, 2020, 09:12:40 PMCitar desde: rodrigo117 on May 26, 2020, 12:13:06 AMhola, alguien pudo probarlo y decirme si funciona? quiero implementarlo pero mi main crashea .8Me puse a chequear un poco el codigo y todo esta bien, el error de crash pasa porque en esta zona Naraku la coloco para que fuese dinámica y ahí es donde viene el problema de crash, si manejas todo sin colocarlo dinamicamente como lo dejo Naraku te andará bien..Post OriginalCode: [Select]int ItemGroup = (dwItemNumber - 1171) / 512; int ItemID = (dwItemNumber - 1171) % 512; if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = 2.0; //Aca }NarakuCode: [Select]//================================================================================ if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = lpInfo->PetSize ; //Aca }//================================================================================
Citar desde: rodrigo117 on May 26, 2020, 09:20:51 PMCitar desde: Llalex on May 26, 2020, 09:12:40 PMCitar desde: rodrigo117 on May 26, 2020, 12:13:06 AMhola, alguien pudo probarlo y decirme si funciona? quiero implementarlo pero mi main crashea .8Me puse a chequear un poco el codigo y todo esta bien, el error de crash pasa porque en esta zona Naraku la coloco para que fuese dinámica y ahí es donde viene el problema de crash, si manejas todo sin colocarlo dinamicamente como lo dejo Naraku te andará bien..Post OriginalCode: [Select]int ItemGroup = (dwItemNumber - 1171) / 512; int ItemID = (dwItemNumber - 1171) % 512; if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = 2.0; //Aca }NarakuCode: [Select]//================================================================================ if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = lpInfo->PetSize ; //Aca }//================================================================================gracias bro sos un genio, disculpa ya trmenda ayuda me diste con esto pero tendrias como colocarlo en el maininfo y el txt externo?
Citar desde: Llalex on May 26, 2020, 09:39:13 PMCitar desde: rodrigo117 on May 26, 2020, 09:20:51 PMCitar desde: Llalex on May 26, 2020, 09:12:40 PMCitar desde: rodrigo117 on May 26, 2020, 12:13:06 AMhola, alguien pudo probarlo y decirme si funciona? quiero implementarlo pero mi main crashea .8Me puse a chequear un poco el codigo y todo esta bien, el error de crash pasa porque en esta zona Naraku la coloco para que fuese dinámica y ahí es donde viene el problema de crash, si manejas todo sin colocarlo dinamicamente como lo dejo Naraku te andará bien..Post OriginalCode: [Select]int ItemGroup = (dwItemNumber - 1171) / 512; int ItemID = (dwItemNumber - 1171) % 512; if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = 2.0; //Aca }NarakuCode: [Select]//================================================================================ if(gCustomPet2.CheckCustomPetByItem(ItemGroup, ItemID)) { CUSTOM_PET_INFO* lpInfo = gCustomPet2.GetInfoByItem(ItemGroup, ItemID); *(float*)(a4 + 96) = lpInfo->PetSize ; //Aca }//================================================================================gracias bro sos un genio, disculpa ya trmenda ayuda me diste con esto pero tendrias como colocarlo en el maininfo y el txt externo?No lo veo necesario colocarlo en el GetInfo ya que no toma en si los valores dinámico...
Citar desde: takumi12 on April 24, 2020, 07:51:25 AMCitar desde: emersonx13 on April 24, 2020, 07:28:10 AMprueba asiCode: [Select]64 0 270 1 2 1 1 0 "Soul Claw" 043 242 252 35 100 0 0 0 227 75 0 0 0 1 0 0 0 0 0 0 3@takumi12 me faltaCode: [Select]bool cCustomPet::CheckCustomPetByItem(int ItemType,int ItemIndex) // OK{ for (int i=0;i<MAX_PET_ITEM; i++) { if (ItemType == this->m_CustomPetInfo[i].ItemType && ItemIndex == this->m_CustomPetInfo[i].ItemIndex) { return true; } } return false;}
Citar desde: emersonx13 on April 24, 2020, 07:28:10 AMprueba asiCode: [Select]64 0 270 1 2 1 1 0 "Soul Claw" 043 242 252 35 100 0 0 0 227 75 0 0 0 1 0 0 0 0 0 0 3@takumi12 me falta
64 0 270 1 2 1 1 0 "Soul Claw" 043 242 252 35 100 0 0 0 227 75 0 0 0 1 0 0 0 0 0 0 3
bool cCustomPet::CheckCustomPetByItem(int ItemType,int ItemIndex) // OK{ for (int i=0;i<MAX_PET_ITEM; i++) { if (ItemType == this->m_CustomPetInfo[i].ItemType && ItemIndex == this->m_CustomPetInfo[i].ItemIndex) { return true; } } return false;}
bool cCustomPet::CheckCustomPetByItem(int ItemType,int ItemIndex) // OK{ for (int i=0;i<MAX_PET_ITEM; i++) { if (ItemType == this->m_CustomPetInfo.ItemType && ItemIndex == this->m_CustomPetInfo.ItemIndex) { return true; } } return false;}neceito definir algo en algun lafo ?
Citar desde: Naraku on April 24, 2020, 12:04:54 PMCitar desde: spartacus on April 24, 2020, 11:29:21 AMAlguien tiene las offsets para 1.04E?@Naraku con respecto a la fuente que publicó, tiene la parte que personaliza el tamaño de la PET en el inventario?en uno de los comentarios deje el offset faltante para 1.04Esi tengo la source que modifica la posicion y tamaño de los pets en el inventario.. luego la publico
Citar desde: spartacus on April 24, 2020, 11:29:21 AMAlguien tiene las offsets para 1.04E?@Naraku con respecto a la fuente que publicó, tiene la parte que personaliza el tamaño de la PET en el inventario?
Citar desde: laulinh2 on June 26, 2020, 02:04:14 AM(DWORD)pGetModel,pModelThis() offset???
Citar desde: Jean LR on June 27, 2020, 12:04:38 PMFunciona en 1.04e alguien lo probó? a mi no me funciona...
Citar desde: takumi12 on June 27, 2020, 04:02:29 PMCitar desde: Jean LR on June 27, 2020, 12:04:38 PMFunciona en 1.04e alguien lo probó? a mi no me funciona...100%
#include "PetEx.h"PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];gPetEffect.Load("CustomPetEffect.txt");memcpy(info.m_Effect, gPetEffect.m_Effect, sizeof(info.m_Effect));
#include "stdafx.h"#include "PetEx.h"#include "MemScript.h"cCPetEx gPetEffect;//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////cCPetEx::cCPetEx() // OK{ this->Init();}cCPetEx::~cCPetEx() // OK{}void cCPetEx::Init() // OK{ for (int n = 0; n < MAX_PETEX_EFFECT; n++) { this->m_Effect[n].Index = -1; }}void cCPetEx::Load(char* path) // OK{ 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; } PETEX_EFFECT info; memset(&info, 0, sizeof(info)); static int CustomItemIndexCount = 0; info.Index = CustomItemIndexCount++; info.ItemIndex = lpMemScript->GetNumber(); info.EffectIndex = lpMemScript->GetNumber(); info.ColorR = lpMemScript->GetAsFloatNumber(); info.ColorG = lpMemScript->GetAsFloatNumber(); info.ColorB = lpMemScript->GetAsFloatNumber(); info.ColorSize = lpMemScript->GetAsFloatNumber(); info.ColorMain = lpMemScript->GetAsFloatNumber(); info.ColorSide = lpMemScript->GetAsFloatNumber(); this->SetInfo(info); } } catch (...) { printf(lpMemScript->GetLastError()); } delete lpMemScript;}void cCPetEx::SetInfo(PETEX_EFFECT info) // OK{ if (info.Index < 0 || info.Index >= MAX_PETEX_EFFECT) { return; } this->m_Effect[info.Index] = info;}
#pragma once#define MAX_PETEX_EFFECT 512 struct PETEX_EFFECT{ int Index; int ItemIndex; int EffectIndex; float ColorR; float ColorG; float ColorB; float ColorSize; float ColorMain; float ColorSide;};class cCPetEx{public: cCPetEx(); virtual ~cCPetEx(); void Init(); void Load(char* path); void SetInfo(PETEX_EFFECT info);public: PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];};extern cCPetEx gPetEffect;
#include "PetEx.h"PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];
#include "PetEx.h"gPetEffect.Load(gProtect.m_MainInfo.m_Effect);
Citar desde: SaintZeus on July 05, 2020, 11:05:24 PMEl GetMain es asi o nada que ver? GetMainGetMainInfo.cppCode: [Select]#include "PetEx.h"gPetEffect.Load("CustomPetEffect.txt");memcpy(info.m_Effect, gPetEffect.m_Effect, sizeof(info.m_Effect));PetEx.cppCode: [Select]#include "stdafx.h"#include "PetEx.h"#include "MemScript.h"cCPetEx gPetEffect;//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////cCPetEx::cCPetEx() // OK{ this->Init();}cCPetEx::~cCPetEx() // OK{}void cCPetEx::Init() // OK{ for (int n = 0; n < MAX_PETEX_EFFECT; n++) { this->m_Effect[n].Index = -1; }}void cCPetEx::Load(char* path) // OK{ 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; } PETEX_EFFECT info; memset(&info, 0, sizeof(info)); static int CustomItemIndexCount = 0; info.Index = CustomItemIndexCount++; info.ItemIndex = lpMemScript->GetNumber(); info.EffectIndex = lpMemScript->GetNumber(); info.ColorR = lpMemScript->GetAsFloatNumber(); info.ColorG = lpMemScript->GetAsFloatNumber(); info.ColorB = lpMemScript->GetAsFloatNumber(); info.ColorSize = lpMemScript->GetAsFloatNumber(); info.ColorMain = lpMemScript->GetAsFloatNumber(); info.ColorSide = lpMemScript->GetAsFloatNumber(); this->SetInfo(info); } } catch (...) { printf(lpMemScript->GetLastError()); } delete lpMemScript;}void cCPetEx::SetInfo(PETEX_EFFECT info) // OK{ if (info.Index < 0 || info.Index >= MAX_PETEX_EFFECT) { return; } this->m_Effect[info.Index] = info;}PetEx.hCode: [Select]#pragma once#define MAX_PETEX_EFFECT 512 struct PETEX_EFFECT{ int Index; int ItemIndex; int EffectIndex; float ColorR; float ColorG; float ColorB; float ColorSize; float ColorMain; float ColorSide;};class cCPetEx{public: cCPetEx(); virtual ~cCPetEx(); void Init(); void Load(char* path); void SetInfo(PETEX_EFFECT info);public: PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];};extern cCPetEx gPetEffect;MainProtect.hCode: [Select]#include "PetEx.h"PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];Main.cppCode: [Select]#include "PetEx.h"gPetEffect.Load(gProtect.m_MainInfo.m_Effect);
#include "PetEx.h"gPetEffect.Load("CustomPetEffect.txt");memcpy(info.m_Effect, gPetEffect.m_Effect, sizeof(info.m_Effect));
Citar desde: Jean LR on July 06, 2020, 02:32:19 PMCitar desde: SaintZeus on July 05, 2020, 11:05:24 PMEl GetMain es asi o nada que ver? GetMainGetMainInfo.cppCode: [Select]#include "PetEx.h"gPetEffect.Load("CustomPetEffect.txt");memcpy(info.m_Effect, gPetEffect.m_Effect, sizeof(info.m_Effect));PetEx.cppCode: [Select]#include "stdafx.h"#include "PetEx.h"#include "MemScript.h"cCPetEx gPetEffect;//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////cCPetEx::cCPetEx() // OK{ this->Init();}cCPetEx::~cCPetEx() // OK{}void cCPetEx::Init() // OK{ for (int n = 0; n < MAX_PETEX_EFFECT; n++) { this->m_Effect[n].Index = -1; }}void cCPetEx::Load(char* path) // OK{ 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; } PETEX_EFFECT info; memset(&info, 0, sizeof(info)); static int CustomItemIndexCount = 0; info.Index = CustomItemIndexCount++; info.ItemIndex = lpMemScript->GetNumber(); info.EffectIndex = lpMemScript->GetNumber(); info.ColorR = lpMemScript->GetAsFloatNumber(); info.ColorG = lpMemScript->GetAsFloatNumber(); info.ColorB = lpMemScript->GetAsFloatNumber(); info.ColorSize = lpMemScript->GetAsFloatNumber(); info.ColorMain = lpMemScript->GetAsFloatNumber(); info.ColorSide = lpMemScript->GetAsFloatNumber(); this->SetInfo(info); } } catch (...) { printf(lpMemScript->GetLastError()); } delete lpMemScript;}void cCPetEx::SetInfo(PETEX_EFFECT info) // OK{ if (info.Index < 0 || info.Index >= MAX_PETEX_EFFECT) { return; } this->m_Effect[info.Index] = info;}PetEx.hCode: [Select]#pragma once#define MAX_PETEX_EFFECT 512 struct PETEX_EFFECT{ int Index; int ItemIndex; int EffectIndex; float ColorR; float ColorG; float ColorB; float ColorSize; float ColorMain; float ColorSide;};class cCPetEx{public: cCPetEx(); virtual ~cCPetEx(); void Init(); void Load(char* path); void SetInfo(PETEX_EFFECT info);public: PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];};extern cCPetEx gPetEffect;MainProtect.hCode: [Select]#include "PetEx.h"PETEX_EFFECT m_Effect[MAX_PETEX_EFFECT];Main.cppCode: [Select]#include "PetEx.h"gPetEffect.Load(gProtect.m_MainInfo.m_Effect);Uso 1.4e y no funcionó, por mas que le cambie el offset