Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: MapRespawnManager source MuEmu  (Visto 3201 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline Natzugen Posteado: April 14, 2020, 05:13:13 AM | Modificado: April 14, 2020, 05:22:34 AM by Natzugen

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 548
  • Gracias recibida: 18517
  • co
Bueno, vengo a dejar por acá este source para modificar el lugar donde apareces luego de morir en los mapas ya que hace mucho no publicaba algo y quiero hacer uno mejor y dinámico.

Recuerden que en caso de querer agregar coordenadas para mapas custom deben agregarlas a la función y modificar la cantidad de mapas.

Source


MapRespawnManager.ini



Creditos
Natzugen

Gracias:

Ifreat, Xysad, alexsaw, darkmatter, ninjanegro, dizzys, snaider205, Mirc3a007, angel321, pappapishu, Viper, pwnzczyk, Ryzenn, muancest, jknfkls, Dubzy93, wyrven, Dieguinho, komandirbk, Juninsj22, escalivur9, usersa, th3matu22, mavine, devemu, zekcrom, MsotoC, solar, FOX, stopk, zerg24, carper, daniel202, xiazaipw, jesuschis, juampicdx, Dragonvl15, kimrubi, Beelzebub, cantante007, RaduOnica, kkristan, rando, llZeuzll, samuca, son1xx2, lemant, Wikka, sk8arturo, localbug, c4nhsatcodong, MADRUGA, quyanxu, thunwa1, duglas_nike9, frenzo2009, zhangjianle865, Orion88, tuyendam, JavixFer, drakulla, lucas123, lramon, gpsturbo, cobyzero, vnshell, JokerZoe, showmax, kimera, waltervg91, idpnguyeni, hanzel, nhanphu200, nelson, thienthan1117, z348870672, PachoRasta, peff, sagat202, nguqua, sannea, Tukan0, 423646802, Kosh, OneMU, melo920, KhongGianOL, Higgs, nonnan005, maicol9812, Templario89, xtestx, Plate98, guigonvg, comelon666, GabrielDevel, Daniel@, leones55, GabrielDev, Nshell, Yasser, AntiChetO, kayito, Censored, Lude, seedmaker, clockbooster, davidneyrab, northon, BooM, draco425, Androjd123, VadimashRS, Ultima, Kapocha33, andreyzz, LTP Team, dreamboy7, Supremo, Audi, votam2x, gacon201294, dahouzi, muzic25, dasgrid, ZabiinoOo, SetecSoft, yhoon, iggfree, axeman192, Karuritoku, Ryuno, ailsoncost, MaxVoll, AreS, spartacus, valusmu, AZURE, smallz170, Gamers, reveage, fer1992, luciferlg, Peluuca, Chupulum, emersonx13, coyotex12, gauyeutho, kksky, Cartman, TzCr4ck, wolffrox, takumi12, binhchivn, FuriaG, GX_KYO, ConejoMalo, cri0, NasLy, hiep, knight.php, Zeus, chuckhai, npt.formu, dlawls662, beecubin, h3yShOk, beibei, s00x, shangxin, djagripnos, esteban, higlans, SaintZeus, mechaloco, Denis Alves, stark98

Offline stark98 #1 Posteado: April 14, 2020, 05:16:53 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 124
  • Gracias recibida: 1755
  • fr
Very Nice )) This is cool config)

Be cool, and all will be ok))
Skype: sky.hack2
Discord: bonny9

Offline djagripnos #2 Posteado: April 14, 2020, 06:20:59 AM

  • MAESTRO

  • US. DE HONOR

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 824
  • Gracias recibida: 27500
  • gr
@Natzugen  source for Added Newsboard UI system


Offline NasLy #3 Posteado: April 14, 2020, 11:09:45 AM

  • Colaborador
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 441
  • Gracias recibida: 12120
  • ar
Tambiens se lo puede configurar desde el Gate cambiando o creando uno nuevo.

Nunca es tarde para ser lo que podias haber sido.

Offline NasLy #4 Posteado: April 14, 2020, 11:10:57 AM

  • Colaborador
  • 0 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 441
  • Gracias recibida: 12120
  • ar
+ Un excelente aporte a la comunidad.

Nunca es tarde para ser lo que podias haber sido.

Offline ConejoMalo #5 Posteado: April 14, 2020, 01:34:04 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 781
  • Gracias recibida: 7676
  • ar
hola, disculpen mi ignoracia.. lo agregue pero no se si esta funcionando .. como chequeo eso? gracias

Servicios de  Reparacion de bug Files Muemu, desde source y agregados Custom, soporte de configuracion.

Offline GX_KYO #6 Posteado: April 14, 2020, 02:07:51 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 301
  • Gracias recibida: 2154
  • pe
hola, disculpen mi ignoracia.. lo agregue pero no se si esta funcionando .. como chequeo eso? gracias

 jajaja jajaja jajaja jajaja jajaja jajaja jajaja jajaja jajaja

Anda a algun mapa de la lista o algun mapa custom que tengas agregado, deja que te mate algun mob o player y verifica si revives en las coordenadas que pusiste en dicho mapa, ez

Killing me one breath at a time... Cutting you with my pair of lives... So go on and lay me down to rest, You make it painless, painless!
I can't... I can't... I can't...
I can't feel ANY PAIN!

Offline ConejoMalo #7 Posteado: April 14, 2020, 03:02:36 PM

  • +1 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 781
  • Gracias recibida: 7676
  • ar
hola, disculpen mi ignoracia.. lo agregue pero no se si esta funcionando .. como chequeo eso? gracias

 jajaja jajaja jajaja jajaja jajaja jajaja jajaja jajaja jajaja

Anda a algun mapa de la lista o algun mapa custom que tengas agregado, deja que te mate algun mob o player y verifica si revives en las coordenadas que pusiste en dicho mapa, ez
gracias

Servicios de  Reparacion de bug Files Muemu, desde source y agregados Custom, soporte de configuracion.

Offline takumi12 #8 Posteado: April 14, 2020, 05:10:44 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39656
  • mx
Muy bueno, pero pudiste a ver optimizado más el código obteniendo el identificador desde el mismo archivo, ya que así el usuario puede agregar su mapa custom y normalmente su respawn desde un archivo .txt sin tener que ir a codear el núevo identificador de mapa.


Las offset no se crea, ni se destruye, solo se transforma

Offline Natzugen #9 Posteado: April 14, 2020, 08:25:39 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 548
  • Gracias recibida: 18517
  • co
Muy bueno, pero pudiste a ver optimizado más el código obteniendo el identificador desde el mismo archivo, ya que así el usuario puede agregar su mapa custom y normalmente su respawn desde un archivo .txt sin tener que ir a codear el núevo identificador de mapa.
sigue dando igual por qué la de mapas va especificado en el source, de nada sirve dar la opción de agregar más mapas si el gas soporta menos


Offline Ryuno #10 Posteado: April 14, 2020, 08:36:13 PM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 505
  • Gracias recibida: 2028
  • dz
no era mejor con vectores y usar iterator para evitar la especificacion cada array en el codigo ? pregunto nomas.


Offline takumi12 #11 Posteado: April 14, 2020, 08:54:17 PM | Modificado: April 14, 2020, 08:58:22 PM by takumi12

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39656
  • mx
no era mejor con vectores y usar iterator para evitar la especificacion cada array en el codigo ? pregunto nomas.


exacto a esto me refería algo como esto:

Code: [Select]
#include "stdafx.h"
#include "RespawnLocation.h"
#include "Gate.h"
#include "Map.h"
#include "KanturuBattleUserMng.h"
#include "RaklionBattleUserMng.h"
#include "MemScript.h"
#include "Util.h"

cRespawnLocation gRespawnLocation;

cRespawnLocation::cRespawnLocation()
{
this->m_RespLoc.clear();
}

cRespawnLocation::~cRespawnLocation()
{

}

void cRespawnLocation::Load(char* path)
{
CMemScript* lpMemScript = new CMemScript;

if(lpMemScript == 0)
{
ErrorMessageBox(MEM_SCRIPT_ALLOC_ERROR,path);
return;
}

if(lpMemScript->SetBuffer(path) == 0)
{
ErrorMessageBox(lpMemScript->GetLastError());
delete lpMemScript;
return;
}

this->m_RespLoc.clear();

try
{
while(true)
{
if(lpMemScript->GetToken() == TOKEN_END)
{
break;
}

if(strcmp("end",lpMemScript->GetString()) == 0)
{
break;
}

RESPLOC_DATA info;

info.Map = lpMemScript->GetNumber();

info.MoveGate = lpMemScript->GetAsNumber();

info.Gate = lpMemScript->GetAsNumber();

this->m_RespLoc.push_back(info);
}
}
catch(...)
{
ErrorMessageBox(lpMemScript->GetLastError());
}

delete lpMemScript;
}

bool cRespawnLocation::IsMap(LPOBJ lpObj)
{
for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (it->Map == lpObj->Map)
{
return true;
}
}
return false;
}

bool cRespawnLocation::GetUserRespawnLocation(LPOBJ lpObj,int* gate,int* map,int* x,int* y,int* dir,int* level)
{
bool result = 0;

for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (lpObj->Map == it->Map)
{
if (it->MoveGate == 0)
{
return 0;
}
result = gGate.GetGate(it->Gate,gate,map,x,y,dir,level);

if (lpObj->Map == MAP_KANTURU3)
{
gKanturuBattleUserMng.DelUserData(lpObj->Index);
}

if (lpObj->Map == MAP_RAKLION2)
{
gRaklionBattleUserMng.DelUserData(lpObj->Index);
}
}
}
return result;
}


y el archivo txt quedaría como esto:

Code: [Select]
//Map   MoveGate   Gate
0       1          17      // ->LORENCIA
1       1          17      // ->DUNGEON
2       1          22      // ->DEVIAS
3       1          27      // ->NORIA
4       1          42      // ->LOST TOWER
6       0          *       // ->ARENA
7       1          49      // ->ATLANS
8       1          57      // ->TARKAN
10      1          22      // ->ICARUS
31      1          106     // ->LAND OF TRIALS
33      1          119     // ->AIDA
37      1          138     // ->KANTURU1
38      1          139     // ->KANTURU2
39      1          137     // ->KANTURU3
40      1          402     // ->SILENT
41      1          256     // ->BARRAKS
42      1          256     // ->REFUGE
51      1          267     // ->ELBELAND
56      1          273     // ->SWAMP OF CALMNESS
57      1          286     // ->RAKLION
58      1          286     // ->RAKLION2
62      1          22      // ->SANTA TOWN
63      1          137     // ->VULCANUS
79      1          333     // ->LOREN MARKET
80      1          335     // ->KARUTAN1
81      1          335     // ->KARUTAN2
83      1          426     // ->ACHERON
84      1          443     // ->DEVENTER
85      1          452     // ->URUK
86      1          453     // ->FEREA
87      1          *       // ->TEAMVSTEAM
88 1    *    // ->NARS
89 1    455    // ->NIXIE LAKE
90 1    17    // ->DEEP DUNGEON 1
91 1    17    // ->DEEP DUNGEON 2
92 1    17    // ->DEEP DUNGEON 3
93 1    17    // ->DEEP DUNGEON 4
94 1    17    // ->DEEP DUNGEON 5
95 1    *    // ->SWAMP OF DARKNESS
96 1    *    // ->S14 MAP
end


Las offset no se crea, ni se destruye, solo se transforma

Offline Karuritoku #12 Posteado: April 14, 2020, 09:11:47 PM

  • Php Coder
  • +3 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 399
  • Gracias recibida: 8763
  • pe
debe tener su uso especifico, aunque si no mal cuando agregas un mapa tienes que declarar el gate que se va a usar como respawn y en gate.txt pones las cordenadas y cuando la borrar esa linea de ese gate la persona renace en la misma cordenada en al que murio.


Offline Ryuno #13 Posteado: April 14, 2020, 09:31:19 PM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 505
  • Gracias recibida: 2028
  • dz
no era mejor con vectores y usar iterator para evitar la especificacion cada array en el codigo ? pregunto nomas.


exacto a esto me refería algo como esto:

Code: [Select]
#include "stdafx.h"
#include "RespawnLocation.h"
#include "Gate.h"
#include "Map.h"
#include "KanturuBattleUserMng.h"
#include "RaklionBattleUserMng.h"
#include "MemScript.h"
#include "Util.h"

cRespawnLocation gRespawnLocation;

cRespawnLocation::cRespawnLocation()
{
this->m_RespLoc.clear();
}

cRespawnLocation::~cRespawnLocation()
{

}

void cRespawnLocation::Load(char* path)
{
CMemScript* lpMemScript = new CMemScript;

if(lpMemScript == 0)
{
ErrorMessageBox(MEM_SCRIPT_ALLOC_ERROR,path);
return;
}

if(lpMemScript->SetBuffer(path) == 0)
{
ErrorMessageBox(lpMemScript->GetLastError());
delete lpMemScript;
return;
}

this->m_RespLoc.clear();

try
{
while(true)
{
if(lpMemScript->GetToken() == TOKEN_END)
{
break;
}

if(strcmp("end",lpMemScript->GetString()) == 0)
{
break;
}

RESPLOC_DATA info;

info.Map = lpMemScript->GetNumber();

info.MoveGate = lpMemScript->GetAsNumber();

info.Gate = lpMemScript->GetAsNumber();

this->m_RespLoc.push_back(info);
}
}
catch(...)
{
ErrorMessageBox(lpMemScript->GetLastError());
}

delete lpMemScript;
}

bool cRespawnLocation::IsMap(LPOBJ lpObj)
{
for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (it->Map == lpObj->Map)
{
return true;
}
}
return false;
}

bool cRespawnLocation::GetUserRespawnLocation(LPOBJ lpObj,int* gate,int* map,int* x,int* y,int* dir,int* level)
{
bool result = 0;

for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (lpObj->Map == it->Map)
{
if (it->MoveGate == 0)
{
return 0;
}
result = gGate.GetGate(it->Gate,gate,map,x,y,dir,level);

if (lpObj->Map == MAP_KANTURU3)
{
gKanturuBattleUserMng.DelUserData(lpObj->Index);
}

if (lpObj->Map == MAP_RAKLION2)
{
gRaklionBattleUserMng.DelUserData(lpObj->Index);
}
}
}
return result;
}


y el archivo txt quedaría como esto:

Code: [Select]
//Map   MoveGate   Gate
0       1          17      // ->LORENCIA
1       1          17      // ->DUNGEON
2       1          22      // ->DEVIAS
3       1          27      // ->NORIA
4       1          42      // ->LOST TOWER
6       0          *       // ->ARENA
7       1          49      // ->ATLANS
8       1          57      // ->TARKAN
10      1          22      // ->ICARUS
31      1          106     // ->LAND OF TRIALS
33      1          119     // ->AIDA
37      1          138     // ->KANTURU1
38      1          139     // ->KANTURU2
39      1          137     // ->KANTURU3
40      1          402     // ->SILENT
41      1          256     // ->BARRAKS
42      1          256     // ->REFUGE
51      1          267     // ->ELBELAND
56      1          273     // ->SWAMP OF CALMNESS
57      1          286     // ->RAKLION
58      1          286     // ->RAKLION2
62      1          22      // ->SANTA TOWN
63      1          137     // ->VULCANUS
79      1          333     // ->LOREN MARKET
80      1          335     // ->KARUTAN1
81      1          335     // ->KARUTAN2
83      1          426     // ->ACHERON
84      1          443     // ->DEVENTER
85      1          452     // ->URUK
86      1          453     // ->FEREA
87      1          *       // ->TEAMVSTEAM
88 1    *    // ->NARS
89 1    455    // ->NIXIE LAKE
90 1    17    // ->DEEP DUNGEON 1
91 1    17    // ->DEEP DUNGEON 2
92 1    17    // ->DEEP DUNGEON 3
93 1    17    // ->DEEP DUNGEON 4
94 1    17    // ->DEEP DUNGEON 5
95 1    *    // ->SWAMP OF DARKNESS
96 1    *    // ->S14 MAP
end

Si Asi mismo yo lo tengo se evita la declaracion de variables y trabaja dependiendo a la necesidad del lector


Offline Natzugen #14 Posteado: April 14, 2020, 10:30:47 PM

  • MAESTRO

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 548
  • Gracias recibida: 18517
  • co
Así es como lo tengo actualmente en mis files, el que publique es el que usaba hace como dos años


Offline SetecSoft #15 Posteado: April 14, 2020, 10:59:29 PM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 8576
  • ar
Yo remplazaria esto en el .h

Code: [Select]
std::vector<RESPLOC_DATA> m_RespLoc;
por esto

Code: [Select]
std::map<int,RESPLOC_DATA> m_RespLoc;
y en el cpp

en void cRespawnLocation::Load(char* path)

cambiaria esto:
Code: [Select]
this->m_RespLoc.push_back(info);
por esto:
Code: [Select]
this->m_RespLoc.insert(std::pair<int,RESPLOC_DATA>(info.Map, info));

cambiaria esto

Code: [Select]
bool cRespawnLocation::IsMap(LPOBJ lpObj)
{
for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (it->Map == lpObj->Map)
{
return true;
}
}
return false;
}

por esto

Code: [Select]
bool cRespawnLocation::IsMap(LPOBJ lpObj)
{
std::map<int,RESPLOC_DATA>::iterator it = this->m_RespLoc.find(lpObj->Map);

if (it == this->m_CustomMixInfo.end())
{
return 0;
}
else
{
return 1;
}
}

y por ultimo cambiaría esto

Code: [Select]
bool cRespawnLocation::GetUserRespawnLocation(LPOBJ lpObj,int* gate,int* map,int* x,int* y,int* dir,int* level)
{
bool result = 0;

for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (lpObj->Map == it->Map)
{
if (it->MoveGate == 0)
{
return 0;
}
result = gGate.GetGate(it->Gate,gate,map,x,y,dir,level);

if (lpObj->Map == MAP_KANTURU3)
{
gKanturuBattleUserMng.DelUserData(lpObj->Index);
}

if (lpObj->Map == MAP_RAKLION2)
{
gRaklionBattleUserMng.DelUserData(lpObj->Index);
}
}
}
return result;
}

por esto

Code: [Select]
bool cRespawnLocation::GetUserRespawnLocation(LPOBJ lpObj,int* gate,int* map,int* x,int* y,int* dir,int* level)
{
std::map<int,RESPLOC_DATA>::iterator it = this->m_RespLoc.find(lpObj->Map);

if (it == this->m_CustomMixInfo.end() || it->second.MoveGate == 0)
{
return 0;
}

if (lpObj->Map == MAP_KANTURU3)
{
gKanturuBattleUserMng.DelUserData(lpObj->Index);
}

if (lpObj->Map == MAP_RAKLION2)
{
gRaklionBattleUserMng.DelUserData(lpObj->Index);
}

return gGate.GetGate(it->second.Gate,gate,map,x,y,dir,level);
}

eso seria todo entonces no tenemos que recorrer todo un vector si no que vamos directamente al que necesitamos, aunque no parezca aceleramos mucho la lectura, perdón si me equivoque en algo lo hice a ojo. Saludos a todos.

SetecSoft Development
VB, C# and C++ Coders!

Gracias:


Offline YolaxD #16 Posteado: April 15, 2020, 04:35:23 AM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 540
  • Gracias recibida: 8053
  • ar
Yo remplazaria esto en el .h

Code: [Select]
std::vector<RESPLOC_DATA> m_RespLoc;
por esto

Code: [Select]
std::map<int,RESPLOC_DATA> m_RespLoc;
y en el cpp

en void cRespawnLocation::Load(char* path)

cambiaria esto:
Code: [Select]
this->m_RespLoc.push_back(info);
por esto:
Code: [Select]
this->m_RespLoc.insert(std::pair<int,RESPLOC_DATA>(info.Map, info));

cambiaria esto

Code: [Select]
bool cRespawnLocation::IsMap(LPOBJ lpObj)
{
for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (it->Map == lpObj->Map)
{
return true;
}
}
return false;
}

por esto

Code: [Select]
bool cRespawnLocation::IsMap(LPOBJ lpObj)
{
std::map<int,RESPLOC_DATA>::iterator it = this->m_RespLoc.find(lpObj->Map);

if (it == this->m_CustomMixInfo.end())
{
return 0;
}
else
{
return 1;
}
}

y por ultimo cambiaría esto

Code: [Select]
bool cRespawnLocation::GetUserRespawnLocation(LPOBJ lpObj,int* gate,int* map,int* x,int* y,int* dir,int* level)
{
bool result = 0;

for(std::vector<RESPLOC_DATA>::iterator it=this->m_RespLoc.begin();it != this->m_RespLoc.end();it++)
{
if (lpObj->Map == it->Map)
{
if (it->MoveGate == 0)
{
return 0;
}
result = gGate.GetGate(it->Gate,gate,map,x,y,dir,level);

if (lpObj->Map == MAP_KANTURU3)
{
gKanturuBattleUserMng.DelUserData(lpObj->Index);
}

if (lpObj->Map == MAP_RAKLION2)
{
gRaklionBattleUserMng.DelUserData(lpObj->Index);
}
}
}
return result;
}

por esto

Code: [Select]
bool cRespawnLocation::GetUserRespawnLocation(LPOBJ lpObj,int* gate,int* map,int* x,int* y,int* dir,int* level)
{
std::map<int,RESPLOC_DATA>::iterator it = this->m_RespLoc.find(lpObj->Map);

if (it == this->m_CustomMixInfo.end() || it->second.MoveGate == 0)
{
return 0;
}

if (lpObj->Map == MAP_KANTURU3)
{
gKanturuBattleUserMng.DelUserData(lpObj->Index);
}

if (lpObj->Map == MAP_RAKLION2)
{
gRaklionBattleUserMng.DelUserData(lpObj->Index);
}

return gGate.GetGate(it->second.Gate,gate,map,x,y,dir,level);
}

eso seria todo entonces no tenemos que recorrer todo un vector si no que vamos directamente al que necesitamos, aunque no parezca aceleramos mucho la lectura, perdón si me equivoque en algo lo hice a ojo. Saludos a todos.

como dato , te comento que la busqueda entre un vector y un map es practicamente la misma , el map no hace magia no va a ir directamente a una locacion solo con pasarle un valor, este tambien tiene que recorer por igual que lo harias manual con el vector



Offline SetecSoft #17 Posteado: April 15, 2020, 07:04:16 PM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 185
  • Gracias recibida: 8576
  • ar
Hola @YolaxD tengo entendido que al indexar un objeto como lo estamos haciendo en su insert. es mas rápida la lectura obviamente que va a recorrer el array pero de otra forma, en cosas tan pequeñas como estas no va a hacer diferencia ni en mili segundos, pero en arrays grandes puede hacer una pequeña diferencia o por lo menos es lo que tengo entendido, si no es así te agradezco por el comentario.

SetecSoft Development
VB, C# and C++ Coders!

Offline takumi12 #18 Posteado: April 15, 2020, 09:59:45 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Php Coder
  • +11 puntos por ventas
  • *
  • *
  • Rank: Puto amo
  • Posts: 1.310
  • Gracias recibida: 39656
  • mx
Hola @YolaxD tengo entendido que al indexar un objeto como lo estamos haciendo en su insert. es mas rápida la lectura obviamente que va a recorrer el array pero de otra forma, en cosas tan pequeñas como estas no va a hacer diferencia ni en mili segundos, pero en arrays grandes puede hacer una pequeña diferencia o por lo menos es lo que tengo entendido, si no es así te agradezco por el comentario.

de echo hay varios metodos de leer un array pero la más comun es lineal, ya que es la que en su mayoría hasta un programador principiante conoce, y es por eso que se maneja eso al compartir, luego la mayoría de los user de aquí copian y pegan que luego cuando necesitan agregar una condición adicional comienzan a tener problemas y generar comentarios como: "no sirve tu código".

es por eso que cuando se comparte se trata de dar un código sencillo y factible a la lectura del algoritmo de ejecución.

pero si hablamos de optimizar el código uff el mu le hace falta mucho. nada mejor que asm pero desgraciadamente no todo es tan fácil y hay cosas que es más fácil arreglar por c que por asm. por la complejidad de código.


Las offset no se crea, ni se destruye, solo se transforma

Gracias:


Offline YolaxD #19 Posteado: April 16, 2020, 07:52:58 AM

  • C++ Coder
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 540
  • Gracias recibida: 8053
  • ar
Hola @YolaxD tengo entendido que al indexar un objeto como lo estamos haciendo en su insert. es mas rápida la lectura obviamente que va a recorrer el array pero de otra forma, en cosas tan pequeñas como estas no va a hacer diferencia ni en mili segundos, pero en arrays grandes puede hacer una pequeña diferencia o por lo menos es lo que tengo entendido, si no es así te agradezco por el comentario.

Efectivamente hay métodos más rápidos de lectura como dices y es importantísimo saber que método usar en cada ocasion, pero mi comentario fue porque mencionas te no tener que recorrer el array lo cual el find() internamente lo hace y me pareció importante destacar que no era así para no mal informar :)


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
5 Replies
6628 Views
Last post May 05, 2020, 09:20:28 PM
by Roca1784
23 Replies
15874 Views
Last post May 09, 2022, 08:38:00 AM
by ZIIIIIK
11 Replies
2764 Views
Last post April 27, 2018, 05:52:35 AM
by shangxin
2 Replies
847 Views
Last post October 22, 2019, 03:57:44 PM
by melo920
1 Replies
793 Views
Last post July 05, 2020, 06:11:35 PM
by waltervg91