[Release] Change Texture InGame.

Ghiduri şi tutoriale despre cum să vă îmbunătăţiţi serverul/clientul dv. de metin2.
Deconectat
Avatar utilizator
ZeNu-Thor2
Nivel 3
Nivel 3
Mesaje: 332
Membru din: 06 Iun 2016
Localitate: Campulung
Reputație: Nume anterior: ZeNu
Schimbat cu ocazia Tombolei de Paste
Status: Inactiv
Server Metin2: Thor2.Global
Mulțumiri acordate: 34
Mulțumiri primite: 46
Contact:

[Release] Change Texture InGame.

Mesajde ZeNu-Thor2 » 21 Iun 2016, 13:48

Tutorial : Schimbare textura InGame .

Alte informatii :

1. Sistemul nu l-am gasit free pe internet .
2. L-am extras dintr-un server.
3. Este bazat pe PY/C++.
4. Acest tutorial este realizat de catre mine .
5. Sa incepem !

Descriere: Trebuie să fii logat sau înregistrat pentru a vedea acest link.

1. Adauga urmatorul folder in root :
- Link : Trebuie să fii logat sau înregistrat pentru a vedea acest link. .

2. Partea de PY - a. Root/ game.py

Cauta functia :

Cod: Selectaţi tot

self.currentCubeNPC = 0

Adauga mai jos:

Cod: Selectaţi tot

for i in xrange(10):
         if systemSetting.IsSnowTexturesMode():
            if background.GetCurrentMapName():
               snow_maps = [
                  "metin2_map_a1",
                  "metin2_map_b1",
                  "metin2_map_c1"
               ]
               snow_maps_textures = {
                  "metin2_map_a1" : "textureset\metin2_a1_snow.txt",
                  "metin2_map_b1" : "textureset\metin2_b1_snow.txt",
                  "metin2_map_c1" : "textureset\metin2_c1_snow.txt", }
               if str(background.GetCurrentMapName()) in snow_maps:
                  background.TextureChange(snow_maps_textures[str(background.GetCurrentMapName())])            
 
                     Root/ uigameoption.py


Cauta functia :

Cod: Selectaţi tot

self.deleteMobileButton.SetEvent(ui.__mem_func__(self.__OnDeleteMobilePhoneNumber))

Adauga mai jos :

Cod: Selectaţi tot

def _snowon(self):
      background.EnableSnow(1)
      constInfo.Kar = 1
      self.RefreshShow()

   def _snowoff(self):
      background.EnableSnow(0)
      constInfo.Kar = 0
      self.RefreshShow()

   def RefreshShow(self):
      if constInfo.Kar == 1:
         self.EdwardMt2Snow[0].Down()
         self.EdwardMt2Snow[1].SetUp()
      else:
         self.EdwardMt2Snow[0].SetUp()
         self.EdwardMt2Snow[1].Down()
      

               
                   b.  uiscript/ systemoptiondialog.py


Cauta functia :

Cod: Selectaţi tot

{
               "name" : "tiling_apply",
               "type" : "button",

               "x" : 110+100,
               "y" : 210,

               "text" : uiScriptLocale.OPTION_TILING_APPLY,

               "default_image" : ROOT_PATH + "middle_Button_01.sub",
               "over_image" : ROOT_PATH + "middle_Button_02.sub",
               "down_image" : ROOT_PATH + "middle_Button_03.sub",
            },


(Este doar un exemplu , nu este obligatoriu , depinde ce modificari aveti fiecare aduse.)

Adauga mai jos :

Cod: Selectaţi tot

#Snow texture change // Puteti sterge acest rand , sau sa il editati .
            {
               "name" : "nighttitle",
               "type" : "text",

               "x" : 30,
               "y" : 210+75,

               "text" : "Textura Snow",
            },

            {
               "name" : "snowtextures_on_button",
               "type" : "radio_button",

               "x" : 110,
               "y" : 210+75,

               "text" : "ON",

               "default_image" : ROOT_PATH + "small_Button_01.sub",
               "over_image" : ROOT_PATH + "small_Button_02.sub",
               "down_image" : ROOT_PATH + "small_Button_03.sub",
            },
            
            {
               "name" : "snowtextures_off_button",
               "type" : "radio_button",

               "x" : 110+50,
               "y" : 210+75,

               "text" : "OFF",

               "default_image" : ROOT_PATH + "small_Button_01.sub",
               "over_image" : ROOT_PATH + "small_Button_02.sub",
               "down_image" : ROOT_PATH + "small_Button_03.sub",
            },


(Mai aveti de facut in acest fisier dimensiunile la fereastra , pentru ca ati adaugat un nou buton , care logic , ocupa un spatiu in + .)

Si intr-un final , gata cu partea de py , fiind foarte scurta !

3. Partea de binary .

1. UserInterface/ PythonSystem.cpp ,


Cauta functia :

Cod: Selectaţi tot

m_Config.bShowDamage      = true;


Adauga mai jos :

Cod: Selectaţi tot

m_Config.bSnowTexturesMode   = true;


Cauta functia :

Cod: Selectaţi tot

void CPythonSystem::SetShowDamageFlag(int iFlag)
{
   m_Config.bShowDamage = iFlag == 1 ? true : false;
}


Adauga mai jos :

Cod: Selectaţi tot

bool CPythonSystem::IsSnowTexturesMode()
{
   return m_Config.bSnowTexturesMode;
}

void CPythonSystem::SetSnowTexturesMode(int iFlag)
{
   m_Config.bSnowTexturesMode= iFlag == 1 ? true : false;
}


Cauta functia :

Cod: Selectaţi tot

m_Config.bAlwaysShowName = atoi(value) == 1 ? true : false;
      else if (!stricmp(command, "SHOW_DAMAGE"))


Adauga mai jos :

Cod: Selectaţi tot

else if (!stricmp(command, "SNOW_TEXTURE_MODE"))
         m_Config.bSnowTexturesMode = atoi(value) == 1 ? true : false;


Cauta functia :

Cod: Selectaţi tot

fprintf(fp, "SHADOW_LEVEL         %d\n", m_Config.iShadowLevel);


Adauga mai jos :

Cod: Selectaţi tot

fprintf(fp, "SNOW_TEXTURE_MODE         %d\n", m_Config.bSnowTexturesMode);


2. UserInterface/ PythonSystem.h

Cauta functia :

Cod: Selectaţi tot

bool         bShowDamage;


Adauga mai jos :

Cod: Selectaţi tot

bool         bSnowTexturesMode;


Cauta functia :

Cod: Selectaţi tot

void                     SetShowSalesTextFlag(int iFlag);


Adauga mai jos :

Cod: Selectaţi tot

bool                     IsSnowTexturesMode();
      void                     SetSnowTexturesMode(int iFlag);


3. UserInterface/ PythonSystemModule.cpp

Cauta functia :

Cod: Selectaţi tot

PyObject * systemSetShowSalesTextFlag(PyObject * poSelf, PyObject * poArgs)
{
   int iFlag;
   if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
      return Py_BuildException();

   CPythonSystem::Instance().SetShowSalesTextFlag(iFlag);

   return Py_BuildNone();
}


Adauga mai jos :

Cod: Selectaţi tot

PyObject * systemSetSnowTexturesMode(PyObject * poSelf, PyObject * poArgs)
{
   int iFlag;
   if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
      return Py_BuildException();

   CPythonSystem::Instance().SetSnowTexturesMode(iFlag);

   return Py_BuildNone();
}


Cauta functia :

Cod: Selectaţi tot

PyObject * systemIsShowSalesText(PyObject * poSelf, PyObject * poArgs)
{
   return Py_BuildValue("i", CPythonSystem::Instance().IsShowSalesText());
}


Adauga mai jos :

Cod: Selectaţi tot

PyObject * systemIsSnowTexturesMode(PyObject * poSelf, PyObject * poArgs)
{
   return Py_BuildValue("i", CPythonSystem::Instance().IsSnowTexturesMode());
}


Cauta functia :

Cod: Selectaţi tot

{ "SetShowSalesTextFlag",      systemSetShowSalesTextFlag,      METH_VARARGS },
      { "IsShowSalesText",         systemIsShowSalesText,         METH_VARARGS },


Adauga mai jos :

Cod: Selectaţi tot

{ "SetSnowTexturesMode",      systemSetSnowTexturesMode,      METH_VARARGS },
      { "IsSnowTexturesMode",         systemIsSnowTexturesMode,      METH_VARARGS },


4. UserInterface / PythonBackgroundModule.cpp

Cauta functia :

Cod: Selectaţi tot

PyObject * backgroundEnableSoftwareTiling(PyObject * poSelf, PyObject * poArgs)
{
   int nIsEnable;
   if (!PyTuple_GetInteger(poArgs, 0, &nIsEnable))
      return Py_BadArgument();

   bool isEnable=nIsEnable ? true : false;

   CPythonBackground& rkBG=CPythonBackground::Instance();
   rkBG.ReserveSoftwareTilingEnable(isEnable);

   CPythonSystem& rkSystem=CPythonSystem::Instance();
   rkSystem.SetSoftwareTiling(isEnable);
   return Py_BuildNone();
}


Adauga mai jos :

Cod: Selectaţi tot

PyObject * backgroundTextureChange(PyObject * poSelf, PyObject * poArgs)
{
   char * szFileName;
   if (!PyTuple_GetString(poArgs, 0, &szFileName))
      return Py_BuildException();

   CPythonBackground& rkBG=CPythonBackground::Instance();
   CMapOutdoor& rkMap=rkBG.GetMapOutdoorRef();
   rkMap.TextureChange(szFileName);
   return Py_BuildNone();
}

PyObject * backgroundEnableSnow(PyObject * poSelf, PyObject * poArgs)
{
   int nIsEnable;
   if (!PyTuple_GetInteger(poArgs, 0, &nIsEnable))
      return Py_BadArgument();

   CPythonBackground& rkBG=CPythonBackground::Instance();
   if (nIsEnable)
      rkBG.EnableSnowEnvironment();
   else
      rkBG.DisableSnowEnvironment();

   return Py_BuildNone();
}


Cauta functia :

Cod: Selectaţi tot

{ "EnableSoftwareTiling",            backgroundEnableSoftwareTiling,            METH_VARARGS },


Adauga mai jos :

Cod: Selectaţi tot

{ "EnableSnow",                     backgroundEnableSnow,                  METH_VARARGS },
      { "TextureChange",                  backgroundTextureChange,               METH_VARARGS },


5. GameLib /MapOutdoor.cpp

Cauta functia :

Cod: Selectaţi tot

void CMapOutdoor::SetEnvironmentScreenFilter()
{
   if (!mc_pEnvironmentData)
      return;

   m_ScreenFilter.SetEnable(mc_pEnvironmentData->bFilteringEnable);
   m_ScreenFilter.SetBlendType(mc_pEnvironmentData->byFilteringAlphaSrc, mc_pEnvironmentData->byFilteringAlphaDest);
   m_ScreenFilter.SetColor(mc_pEnvironmentData->FilteringColor);
}


Adauga mai jos :

Cod: Selectaţi tot

void CMapOutdoor::TextureChange(const char * c_szFileName)
{
   m_fTerrainTexCoordBase = 1.0f / (float)(CTerrainImpl::PATCH_XSIZE * CTerrainImpl::CELLSCALE);

   std::string strFileName;
   StringPath(c_szFileName, strFileName);

   std::string stTextureSetFileName = strFileName;

   // TextureSet ? ?? ?? ?? ?? ????.
   if (0 != stTextureSetFileName.find_first_of("textureset", 0))
      stTextureSetFileName = "textureset\\" + strFileName;

   if (!m_TextureSet.Load(stTextureSetFileName.c_str(), m_fTerrainTexCoordBase))
   {
#ifdef WORLD_EDITOR
      // TextureSet ? ???? ?? ??? ??
      LogBox("TextureSet ? ?????? ?? ? ???.\n?? ??? ??? ????? ????.");
#else
      TraceError("MapOutdoor::LoadSetting(c_szFileName=%s) - LOAD TEXTURE SET(%s) ERROR", c_szFileName, stTextureSetFileName.c_str());
      return;
#endif
   }

   CTerrain::SetTextureSet(&m_TextureSet);
}


6. GameLib/ MapOutdoor.h

Cauta :

Cod: Selectaţi tot

void         RenderScreenFiltering();


Adauga mai jos :

Cod: Selectaţi tot

void          TextureChange(const char * c_szFileName);


Done.
Ultima oară modificat 28 Sep 2016, 20:18 de către stilledanger, modificat de 2 ori în total.
Motiv: Adăugat code

Conectat
Avatar utilizator
ManiacRobert
Membru Club
Membru Club
Mesaje: 918
Membru din: 09 Dec 2013
Localitate: București.
Reputație: Membru Club ( 15 aug - 15 oct )
Nume anterior: R.Gabriel.
Status: Meh
Regat: Shinsoo
Mulțumiri acordate: 60
Mulțumiri primite: 55
Contact:

Re: [Release] Change Texture InGame.

Mesajde ManiacRobert » 21 Iun 2016, 13:51

Ușor pentru,"Experți", "Imposibil" pentru începători. Încearcă să-l faci cu code
Imagine
Imagine
Imagine
Imagine

Deconectat
Avatar utilizator
ZeNu-Thor2
Nivel 3
Nivel 3
Mesaje: 332
Membru din: 06 Iun 2016
Localitate: Campulung
Reputație: Nume anterior: ZeNu
Schimbat cu ocazia Tombolei de Paste
Status: Inactiv
Server Metin2: Thor2.Global
Mulțumiri acordate: 34
Mulțumiri primite: 46
Contact:

Re: [Release] Change Texture InGame.

Mesajde ZeNu-Thor2 » 21 Iun 2016, 13:52

ManiacRobert scrie:Ușor pentru,"Experți", "Imposibil" pentru începători. Încearcă să-l faci cu code


Lene.

Conectat
Avatar utilizator
Tiger
Mister Just4Metin
Mister Just4Metin
Mesaje: 1166
Membru din: 06 Sep 2013
Localitate: Bucuresti
Reputație: Membru Club (4 iulie)
Nume anterior: Tiger
Status: Sef
Server Metin2: I Don't Play
Regat: Jinno
Mulțumiri acordate: 5
Mulțumiri primite: 37

Re: [Release] Change Texture InGame.

Mesajde Tiger » 21 Iun 2016, 14:40

Daca tot l-ai pus nu puteai sa pui arhiva cu tutorialu ?
Imagine

Cod: Selectaţi tot

For haters

Imagine

Cod: Selectaţi tot

For haters

Deconectat
Avatar utilizator
ZeNu-Thor2
Nivel 3
Nivel 3
Mesaje: 332
Membru din: 06 Iun 2016
Localitate: Campulung
Reputație: Nume anterior: ZeNu
Schimbat cu ocazia Tombolei de Paste
Status: Inactiv
Server Metin2: Thor2.Global
Mulțumiri acordate: 34
Mulțumiri primite: 46
Contact:

Re: [Release] Change Texture InGame.

Mesajde ZeNu-Thor2 » 21 Iun 2016, 14:59

Tiger scrie:Daca tot l-ai pus nu puteai sa pui arhiva cu tutorialu ?



Este ok si asa , cine vrea sa -l salveze , face cum vrea :).

Deconectat
Avatar utilizator
imitrebuieparola
Nivel 1
Nivel 1
Mesaje: 73
Membru din: 30 Ian 2015
Status: Sunt bine mersi ^.^
Server Metin2: NewYears
Regat: Chunjo
Mulțumiri acordate: 2
Mulțumiri primite: 0

Re: [Release] Change Texture InGame.

Mesajde imitrebuieparola » 21 Iun 2016, 16:38

praf

Deconectat
Avatar utilizator
SkyMetin2
Nivel 2
Nivel 2
Mesaje: 264
Membru din: 22 Oct 2013
Localitate: Wut the fuk is this ?!
Status: SkyMetin2.ro
Server Metin2: SkyMetin2
Regat: Jinno
Mulțumiri acordate: 2
Mulțumiri primite: 7
Contact:

Re: [Release] Change Texture InGame.

Mesajde SkyMetin2 » 22 Iun 2016, 18:45

"1. Sistemul nu l-am gasit free pe internet .
2. L-am extras dintr-un server."

Numele fisierelor/serverului ?

Deconectat
Avatar utilizator
ZeNu-Thor2
Nivel 3
Nivel 3
Mesaje: 332
Membru din: 06 Iun 2016
Localitate: Campulung
Reputație: Nume anterior: ZeNu
Schimbat cu ocazia Tombolei de Paste
Status: Inactiv
Server Metin2: Thor2.Global
Mulțumiri acordate: 34
Mulțumiri primite: 46
Contact:

Re: [Release] Change Texture InGame.

Mesajde ZeNu-Thor2 » 22 Iun 2016, 18:54

SkyMetin2 scrie:"1. Sistemul nu l-am gasit free pe internet .
2. L-am extras dintr-un server."

Numele fisierelor/serverului ?


?=)) , ai tot ce iti trebuie aici .

Deconectat
Avatar utilizator
SkyMetin2
Nivel 2
Nivel 2
Mesaje: 264
Membru din: 22 Oct 2013
Localitate: Wut the fuk is this ?!
Status: SkyMetin2.ro
Server Metin2: SkyMetin2
Regat: Jinno
Mulțumiri acordate: 2
Mulțumiri primite: 7
Contact:

Re: [Release] Change Texture InGame.

Mesajde SkyMetin2 » 22 Iun 2016, 20:50

ZeNu scrie:
SkyMetin2 scrie:"1. Sistemul nu l-am gasit free pe internet .
2. L-am extras dintr-un server."

Numele fisierelor/serverului ?


?=)) , ai tot ce iti trebuie aici .


Imi este mai usor sa compar tab-urile din sursa directa.

Deconectat
Avatar utilizator
[#Chriss]
Utilizator interzis !
Utilizator interzis !
Mesaje: 630
Membru din: 09 Aug 2015
Localitate: Reşiţa la VALOARE !!!
Server Metin2: Metin2TheHurtLocker
Regat: Jinno
Mulțumiri acordate: 5
Mulțumiri primite: 7
Contact:

Re: [Release] Change Texture InGame.

Mesajde [#Chriss] » 23 Iun 2016, 16:27

SkyMetin2 scrie:
ZeNu scrie:
SkyMetin2 scrie:"1. Sistemul nu l-am gasit free pe internet .
2. L-am extras dintr-un server."

Numele fisierelor/serverului ?


?=)) , ai tot ce iti trebuie aici .


Imi este mai usor sa compar tab-urile din sursa directa.

Lasă-te coate , please delete la viaţă metin ce vrea inima ta , TABURI SURSĂ? #-o #-o #-o #-o #-o #-o horror, prostie pură, şi cum dracu să-ţi fie mai uşor mă vere să compari fişire întregi decât să-ţi dea el nişte funcţii faci copy paste la tot doamne fereşte =)))) .
Ai nevoie de suport gratuit metin2?




Skype: monster_cristi


Proiecte Realizate:

AgeOfKhaos, Cardinali, Expansive, Funny, DevDas, Tutankamon


Înapoi la “Ghiduri şi Tutoriale”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: JamaicaHD și 8 vizitatori