Jump to content

饾棓饾椏饾棽饾榾

Miembro
  • Contador contenido

    390
  • Ingreso

  • 脷ltima visita

  • D铆as ganados

    14

Todo lo publicado por 饾棓饾椏饾棽饾榾

  1. Porque no usas unos files 40k? MartySama ya que es lo mas actual aparte que te vendra mejor para aprender
  2. Buenas tardes zoneros y zoneras: En esta ocasion os traigo una solucion para todas aquellas personas que usan base Wonder2 o WoM2 Esta solucion sirve para el bug que provoca que desaparezcan los efectos algunas veces cuando inicias sesion dentro del juego. "Lo que usan la base que mencione sabran de lo que les hablo" Bueno antes de nada dejarme decirle como es ocasionado este bug y cual es su solucion: Este bug esta ocasionado por lo siguiente. Si nos damos cuenta en las opciones del juego, en la segunda pesta帽a tenemos las siguientes opciones Si se fijan existen 2 opciones de ocultar efectos: Pues bueno lo que haremos aca es elimar completamente la segunda opcion. "La que dice Ocultar efectos" La cual en verdad es tonteria que este puesta ya que hace el mismo funcionamiento que la primera opcion de ocultar. Solamente la diferencia esta en que la primera opcion "La que dice ocultar" Cuando le das a la opcion donde dice efectos automaticamente te ocultan todos los efectos "Incluyendo los buff y demas" Y en la segunda opcion podras ir eligiendo lo que deseas ocultar "Si los buff o los brillos de las armas o los de las armaduras....etc" Bueno ya sabiendo esto comencemos: 驴Como puedo desactivar esas opciones? Mucha gente se pregunta sobre como desactivarlas para que no funcionen mas. Hay gente que se piensa que desactivandolas desde el archivo del uiscript y del game ya no funcionara mas pero ERROR. Hay lo que estas haciendo es desactivando los botones, pero todavia sigue funcionando ya que para desactivarla completamente es necesario eliminarla tambien de la parte del binario. Bueno para eliminarla completa necesitaremos los siguientes archivos: Carpeta UserInterface -.PythonSystem.cpp -.PythonSystem.h -.PythonSystemModule.cpp Carpeta root uigameoption.py Dentro del root la carpeta uiscript gameoptiondialog.py Comencemos: Vamos a nuestro archivo PythonSystem.cpp y buscamos lo siguiente bool CPythonSystem::GetHideMode1Status2() { return m_Config.bHide1Mode2; } bool CPythonSystem::GetHideMode2Status2() { return m_Config.bHide2Mode2; } bool CPythonSystem::GetHideMode3Status2() { return m_Config.bHide3Mode2; } bool CPythonSystem::GetHideMode4Status2() { return m_Config.bHide4Mode2; } void CPythonSystem::SetHideModeStatus2(int type, int value) { switch (type) { case 0: m_Config.bHide1Mode2 = value == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_ARMORS_SHININGS, m_Config.bHide1Mode2); break; case 1: m_Config.bHide2Mode2 = value == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_WEAPONS_SHININGS, m_Config.bHide2Mode2); break; case 2: m_Config.bHide3Mode2 = value == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_BUFF, m_Config.bHide3Mode2); break; case 3: m_Config.bHide4Mode2 = value == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_SKILL, m_Config.bHide4Mode2); break; default: break; } } Una vez lo encontremos lo remplazamos por el siguiente //bool CPythonSystem::GetHideMode1Status2() { // return m_Config.bHide1Mode2; //} // //bool CPythonSystem::GetHideMode2Status2() { // return m_Config.bHide2Mode2; //} // //bool CPythonSystem::GetHideMode3Status2() { // return m_Config.bHide3Mode2; //} // //bool CPythonSystem::GetHideMode4Status2() { // return m_Config.bHide4Mode2; //} //void CPythonSystem::SetHideModeStatus2(int type, int value) { // switch (type) { // case 0: // m_Config.bHide1Mode2 = value == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_ARMORS_SHININGS, m_Config.bHide1Mode2); // break; // case 1: // m_Config.bHide2Mode2 = value == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_WEAPONS_SHININGS, m_Config.bHide2Mode2); // break; // case 2: // m_Config.bHide3Mode2 = value == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_BUFF, m_Config.bHide3Mode2); // break; // case 3: // m_Config.bHide4Mode2 = value == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_SKILL, m_Config.bHide4Mode2); // break; // default: // break; // } //} Ahora buscamos lo siguiente m_Config.bHide1Mode2 = false; m_Config.bHide2Mode2 = false; m_Config.bHide3Mode2 = false; m_Config.bHide4Mode2 = false; Todo esto lo remplazamos por lo siguiente //m_Config.bHide1Mode2 = false; //m_Config.bHide2Mode2 = false; //m_Config.bHide3Mode2 = false; //m_Config.bHide4Mode2 = false; Despues buscamos lo siguiente else if (!stricmp(command, "HIDE1_MODE2")) { m_Config.bHide1Mode2 = atoi(value) == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_ARMORS_SHININGS, m_Config.bHide1Mode2); } else if (!stricmp(command, "HIDE2_MODE2")) { m_Config.bHide2Mode2 = atoi(value) == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_WEAPONS_SHININGS, m_Config.bHide2Mode2); } else if (!stricmp(command, "HIDE3_MODE2")) { m_Config.bHide3Mode2 = atoi(value) == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_BUFF, m_Config.bHide3Mode2); } else if (!stricmp(command, "HIDE4_MODE2")) { m_Config.bHide4Mode2 = atoi(value) == 0 ? false : true; CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_SKILL, m_Config.bHide4Mode2); } Todo esto lo remplazamos por //else if (!stricmp(command, "HIDE1_MODE2")) { // m_Config.bHide1Mode2 = atoi(value) == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_ARMORS_SHININGS, m_Config.bHide1Mode2); //} //else if (!stricmp(command, "HIDE2_MODE2")) { // m_Config.bHide2Mode2 = atoi(value) == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_WEAPONS_SHININGS, m_Config.bHide2Mode2); //} //else if (!stricmp(command, "HIDE3_MODE2")) { // m_Config.bHide3Mode2 = atoi(value) == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_BUFF, m_Config.bHide3Mode2); //} //else if (!stricmp(command, "HIDE4_MODE2")) { // m_Config.bHide4Mode2 = atoi(value) == 0 ? false : true; // CEffectManager::Instance().SetEffectOption(CEffectManager::EFFECT_OPTION_SKILL, m_Config.bHide4Mode2); //} Ahora buscamos lo siguiente fprintf(fp, "HIDE1_MODE2 %d\n", m_Config.bHide1Mode2); fprintf(fp, "HIDE2_MODE2 %d\n", m_Config.bHide2Mode2); fprintf(fp, "HIDE3_MODE2 %d\n", m_Config.bHide3Mode2); fprintf(fp, "HIDE4_MODE2 %d\n", m_Config.bHide4Mode2); Y lo remplazamos por //fprintf(fp, "HIDE1_MODE2 %d\n", m_Config.bHide1Mode2); //fprintf(fp, "HIDE2_MODE2 %d\n", m_Config.bHide2Mode2); //fprintf(fp, "HIDE3_MODE2 %d\n", m_Config.bHide3Mode2); //fprintf(fp, "HIDE4_MODE2 %d\n", m_Config.bHide4Mode2); Guardamos y pasamos al siguiente Abrimos nuestro PythonSystem.h y buscamos lo siguiente bool bHide1Mode2; bool bHide2Mode2; bool bHide3Mode2; bool bHide4Mode2; Este lo remplazamos por el siguiente //bool bHide1Mode2; //bool bHide2Mode2; //bool bHide3Mode2; //bool bHide4Mode2; Ahora buscamos lo siguiente void SetHideModeStatus2(int type, int value); bool GetHideMode1Status2(); bool GetHideMode2Status2(); bool GetHideMode3Status2(); bool GetHideMode4Status2(); Este lo remplazamos por el siguiente //void SetHideModeStatus2(int type, int value); //bool GetHideMode1Status2(); //bool GetHideMode2Status2(); //bool GetHideMode3Status2(); //bool GetHideMode4Status2(); Una vez hecho guardamos y abrimos el siguiente archivo Abrimos nuestro archivo PythonSystemModule.cpp y buscamos lo siguiente PyObject * systemSetHideModeStatus2(PyObject * poSelf, PyObject * poArgs) { int type; if (!PyTuple_GetInteger(poArgs, 0, &type)) return Py_BuildException(); int value; if (!PyTuple_GetInteger(poArgs, 1, &value)) return Py_BuildException(); CPythonSystem::Instance().SetHideModeStatus2(type, value); return Py_BuildNone(); } PyObject * systemGetHideModeStatus2(PyObject * poSelf, PyObject * poArgs) { return Py_BuildValue("(bbbb)", CPythonSystem::Instance().GetHideMode1Status2(), CPythonSystem::Instance().GetHideMode2Status2(), CPythonSystem::Instance().GetHideMode3Status2(), CPythonSystem::Instance().GetHideMode4Status2()); } Luego este lo remplazamos por lo siguiente: //PyObject * systemSetHideModeStatus2(PyObject * poSelf, PyObject * poArgs) { // int type; // if (!PyTuple_GetInteger(poArgs, 0, &type)) // return Py_BuildException(); // // int value; // if (!PyTuple_GetInteger(poArgs, 1, &value)) // return Py_BuildException(); // // CPythonSystem::Instance().SetHideModeStatus2(type, value); // return Py_BuildNone(); //} // //PyObject * systemGetHideModeStatus2(PyObject * poSelf, PyObject * poArgs) { // return Py_BuildValue("(bbbb)", CPythonSystem::Instance().GetHideMode1Status2(), CPythonSystem::Instance().GetHideMode2Status2(), CPythonSystem::Instance().GetHideMode3Status2(), CPythonSystem::Instance().GetHideMode4Status2()); //} Ahora buscamos lo siguiente {"SetHideModeStatus2", systemSetHideModeStatus2, METH_VARARGS}, {"GetHideModeStatus2", systemGetHideModeStatus2, METH_VARARGS}, Este lo remplazamos por el siguiente //{"SetHideModeStatus2", systemSetHideModeStatus2, METH_VARARGS}, //{"GetHideModeStatus2", systemGetHideModeStatus2, METH_VARARGS}, Y listo ya guardamos y compilamos nuestro binario Ahora pasamos a la parte del cliente: Ahora abrimos nuestro archivo uigameoption.py de la carpeta root y buscamos lo siguiente class OptionDialog(ui.ScriptWindow): "Dentro de esta clase buscan la siguiente linea" self.RefreshHideMode2() "Ahora la remplazan por la siguiente" #self.RefreshHideMode2() Ahora buscan lo siguiente def __Initialize(self): "Dentro de este metodo buscan lo siguiente" self.hideMode2ButtonList = [] "Ahora lo remplazan por la siguiente" #self.hideMode2ButtonList = [] "Ahora buscan la siguiente linea" for i in xrange(4): self.hideMode2ButtonList.append(GetObject("hide2mode_%d" % i)) "Ahora la remplazan por la siguiente" #for i in xrange(4): # self.hideMode2ButtonList.append(GetObject("hide2mode_%d" % i)) "Ahora buscan lo siguiente" for i in xrange(4): self.hideMode2ButtonList[i].SetToggleUpEvent(self.__OnClickHideOptionUp2, i) self.hideMode2ButtonList[i].SetToggleDownEvent(self.__OnClickHideOptionDown2, i) "La remplazan por la siguiente" #for i in xrange(4): # self.hideMode2ButtonList[i].SetToggleUpEvent(self.__OnClickHideOptionUp2, i) # self.hideMode2ButtonList[i].SetToggleDownEvent(self.__OnClickHideOptionDown2, i) "Ahora buscan la siguiente linea" def RefreshHideMode2(self): (b1, b2, b3, b4) = systemSetting.GetHideModeStatus2() if b1: self.hideMode2ButtonList[0].Down() else: self.hideMode2ButtonList[0].SetUp() if b2: self.hideMode2ButtonList[1].Down() else: self.hideMode2ButtonList[1].SetUp() if b3: self.hideMode2ButtonList[2].Down() else: self.hideMode2ButtonList[2].SetUp() if b4: self.hideMode2ButtonList[3].Down() else: self.hideMode2ButtonList[3].SetUp() "Esta la remplazan por la siguiente" #def RefreshHideMode2(self): # (b1, b2, b3, b4) = systemSetting.GetHideModeStatus2() # if b1: # self.hideMode2ButtonList[0].Down() # else: # self.hideMode2ButtonList[0].SetUp() # # if b2: # self.hideMode2ButtonList[1].Down() # else: # self.hideMode2ButtonList[1].SetUp() # # if b3: # self.hideMode2ButtonList[2].Down() # else: # self.hideMode2ButtonList[2].SetUp() # # if b4: # self.hideMode2ButtonList[3].Down() # else: # self.hideMode2ButtonList[3].SetUp() Ahora vamos a nuestra carpeta uiscript y abrimos el archivo gameoptiondialog.py "Dentro del archivo buscamos la siguiente linea" { "name" : "hide2_mode", "type" : "text", "x" : LINE_LABEL_X, "y" : 40+(25 * 3)+3, "text" : uiscriptlocale.HIDE_2_OPTION, }, { "name" : "hide2mode_0", "type" : "toggle_button", "x" : LINE_DATA_X, "y" : 40+(25 * 3), "text" : uiscriptlocale.HIDE_2_OPTION0, "default_image" : ROOT_PATH + "large_button_01.sub", "over_image" : ROOT_PATH + "large_button_02.sub", "down_image" : ROOT_PATH + "large_button_03.sub", }, { "name" : "hide2mode_2", "type" : "toggle_button", "x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH+27, "y" : 40+(25 * 3), "text" : uiscriptlocale.HIDE_2_OPTION2, "default_image" : ROOT_PATH + "middle_button_01.sub", "over_image" : ROOT_PATH + "middle_button_02.sub", "down_image" : ROOT_PATH + "middle_button_03.sub", }, { "name" : "hide2mode_1", "type" : "toggle_button", "x" : LINE_DATA_X, "y" : 40+(25 * 4), "text" : uiscriptlocale.HIDE_2_OPTION1, "default_image" : ROOT_PATH + "large_button_01.sub", "over_image" : ROOT_PATH + "large_button_02.sub", "down_image" : ROOT_PATH + "large_button_03.sub", }, { "name" : "hide2mode_3", "type" : "toggle_button", "x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH+27, "y" : 40+(25 * 4), "text" : uiscriptlocale.HIDE_2_OPTION3, "default_image" : ROOT_PATH + "middle_button_01.sub", "over_image" : ROOT_PATH + "middle_button_02.sub", "down_image" : ROOT_PATH + "middle_button_03.sub", }, "Esta linea la remplazamos por la siguiente" #{ # "name" : "hide2_mode", # "type" : "text", # "x" : LINE_LABEL_X, # "y" : 40+(25 * 3)+3, # "text" : uiscriptlocale.HIDE_2_OPTION, #}, #{ # "name" : "hide2mode_0", # "type" : "toggle_button", # "x" : LINE_DATA_X, # "y" : 40+(25 * 3), # "text" : uiscriptlocale.HIDE_2_OPTION0, # "default_image" : ROOT_PATH + "large_button_01.sub", # "over_image" : ROOT_PATH + "large_button_02.sub", # "down_image" : ROOT_PATH + "large_button_03.sub", #}, #{ # "name" : "hide2mode_2", # "type" : "toggle_button", # "x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH+27, # "y" : 40+(25 * 3), # "text" : uiscriptlocale.HIDE_2_OPTION2, # "default_image" : ROOT_PATH + "middle_button_01.sub", # "over_image" : ROOT_PATH + "middle_button_02.sub", # "down_image" : ROOT_PATH + "middle_button_03.sub", #}, #{ # "name" : "hide2mode_1", # "type" : "toggle_button", # "x" : LINE_DATA_X, # "y" : 40+(25 * 4), # "text" : uiscriptlocale.HIDE_2_OPTION1, # "default_image" : ROOT_PATH + "large_button_01.sub", # "over_image" : ROOT_PATH + "large_button_02.sub", # "down_image" : ROOT_PATH + "large_button_03.sub", #}, #{ # "name" : "hide2mode_3", # "type" : "toggle_button", # "x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH+27, # "y" : 40+(25 * 4), # "text" : uiscriptlocale.HIDE_2_OPTION3, # "default_image" : ROOT_PATH + "middle_button_01.sub", # "over_image" : ROOT_PATH + "middle_button_02.sub", # "down_image" : ROOT_PATH + "middle_button_03.sub", #}, Y con eso ya estaria el bug reparado, en caso de problemas dejenlos en los comentarios y os ayudare.
  3. xD Yo esa base la he visto por una persona que se la compro, y la verdad la veo muy cara a lo que es en realidad. Tiene bastantes errores con los mobs "Errores basicos que lo mas normal del mundo es que se reparen antes de vender una base" Tiene algunos errores en temas de mapeados "Estructuras invisibles, efectos que no se ven "Tipo arboles y demas" No se yo por mi parte antes de pagar 250 euros por una base que ha sido bastante manipulada, al igual que no se sabe si ha sido trabajada desde 0 con una base marty comprada, o ha sido sacada de algun foro. Prefiero ahorrar 150 euros mas y comprar una marty virgen y trabajarla desde 0. "Es lo mas recomendable a la hora de empezar un proyecto ya que sabes lo que estas metiendo, al igual que no te la juegas al abrir porque no sabes si tu base tiene algun backdoor"
  4. Buenos dias zoneros, como hace mucho que no subo contenido al foro hoy os vengo a aportar estos maravillosos atuendos que tenia guardados por los discos duros https://mega.nz/file/sypwlb7R#ryPgM-LjcYXMemOlRelJzQbhVVC2gFONZ2hUBWKvT_k Que es lo que trae: Peinados: Todas las razas menos licano Armaduras: Todas las razas menos licano Alas: Van por mse Efectos Adjunto foto del atuendo: https://gyazo.com/2c7c5533859c43f1836c4e10eae9a852
  5. Buen aporte +1 We eres todo un crack
  6. Si quieres tener error, no dudes en contactar con el! Nada serio en lo que hace, muchas cagadas dejo en mi base por tema de traducciones y por lo cual solo pudimos usar el espa帽ol. Recomendable usar base marty limpia y meter primero el multi lenguaje, de hay remplazas todo por lo del oficial y ya lo tendras traducido. Asi es como hice yo y no obtuve ningun error.
  7. El elemental no lo recomiendo implementar ya que os va a chocar con los da帽os de los personajes "Bug" Y el de la calidad de los items estan publicos casi por todos los foros
  8. La verdad que las alas estan bastante buenardas, pero ya los atuendos se pasan.... Se ven buenos pero para mi gusto joderian demasiado la estadistica de un servidor de metin2.
  9. Ponte en contacto con @caanmasu es el experto en esos temas y todo su codigo es limpio... Hace tanto eventos asi como misiones. 100% Recomendable
  10. Para parte cliente makepack/root/serverinfo.py cambiar ip - Compilar con python2.7 el root y con el rename renombrarlo y ya remplazas en carpeta pack
  11. Por lo que tengo entendido este mapa esta malo toca repararle todos los group, regen, data.......etc Pero de igual buen aporte
×
×
  • Crear nuevo...