Jump to content

Search the Community

Showing results for tags 'metin2'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Forum
    • Anuncios
    • FAQ
  • DEV servidores
    • Metin2
  • Classificados
    • Trocas e Vendas
    • Outros
  • Hardware
    • Geral
    • Duvidas
  • Software
    • Download
    • Geral
    • Duvidas
  • Sistemas Operativos
    • FreeBSD
    • Windows
  • Programacao
    • PHP
    • C / C++ / C#
    • SQL
    • Python
  • Websites
    • Design
    • Codificado
  • Design
    • Galeria
    • Geral
    • Ferramentas
  • SysAdmin
    • Geral
    • Duvidas
  • Outros jogos
    • Geral
    • Downloads
  • Off-topic
    • Geral

Categories

  • Metin2
    • Quests
    • Clientes
    • Serverfiles
    • Tools
    • Other Downloads
    • Weapons & Armors
    • NPC & MOB
  • Software
  • Operating Systems
    • Windows
  • Honor Room

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Jabber


AIM


ICQ


Yahoo! Messenger


Skype


Facebook


Twitter


Google Analytics Client ID

Found 192 results

  1. NOTE: The following must be done twice because theres two occurrences of each "Look for" inside of the CHARACTER::Damage. Go to file char_battle.cpp Inside: bool CHARACTER::Damage (LPCHARACTER pAttacker, int dam, EDamageType type) Look for: IsCritical = true; dam *= 2; EffectPacket (SE_CRITICAL); if (IsAffectFlag (AFF_MANASHIELD)) { RemoveAffect (AFF_MANASHIELD); } Replace with: LPCHARACTER ch = quest::CQuestManager::instance().GetCurrentCharacterPtr(); if (CPVPManager::Instance().IsFighting (ch)) { IsCritical = false; ChatPacket (CHAT_TYPE_INFO, "[Debug] A critical hit has been denied."); //You can remove this, is here for debug purposes to see if was working } else { IsCritical = true; dam *= 2; EffectPacket (SE_CRITICAL); if (IsAffectFlag (AFF_MANASHIELD)) { RemoveAffect (AFF_MANASHIELD); } } Look for: IsPenetrate = true; if (test_server) { ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("°üÅë Ãß°¡ µ¥¹ÌÁö %d"), GetPoint (POINT_DEF_GRADE) * (100 + GetPoint (POINT_DEF_BONUS)) / 100); } dam += GetPoint (POINT_DEF_GRADE) * (100 + GetPoint (POINT_DEF_BONUS)) / 100; if (IsAffectFlag (AFF_MANASHIELD)) { RemoveAffect (AFF_MANASHIELD); } Replace with: LPCHARACTER ch = quest::CQuestManager::instance().GetCurrentCharacterPtr(); if (CPVPManager::Instance().IsFighting (ch)) { IsPenetrate = false; ChatPacket (CHAT_TYPE_INFO, "[Debug] A penetration hit has been denied."); //You can remove this, is here for debug purposes to see if was working } else { IsPenetrate = true; if (test_server) { ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("°üÅë Ãß°¡ µ¥¹ÌÁö %d"), GetPoint (POINT_DEF_GRADE) * (100 + GetPoint (POINT_DEF_BONUS)) / 100); } dam += GetPoint (POINT_DEF_GRADE) * (100 + GetPoint (POINT_DEF_BONUS)) / 100; if (IsAffectFlag (AFF_MANASHIELD)) { RemoveAffect (AFF_MANASHIELD); } } Skip the following steps if you already installed IsFighting function. Go to file pvp.cpp Look for: void CPVPManager::ConnectEx (LPCHARACTER pkChr, bool bDisconnect) Add this BEFORE: bool CPVPManager::IsFighting (LPCHARACTER pkChr) { if (!pkChr) { return false; } return IsFighting (pkChr->GetPlayerID()); } bool CPVPManager::IsFighting (DWORD dwPID) { CPVPSetMap::iterator it = m_map_pkPVPSetByID.find (dwPID); if (it == m_map_pkPVPSetByID.end()) { return false; } TR1_NS::unordered_set<CPVP *>::iterator it2 = it->second.begin(); while (it2 != it->second.end()) { CPVP *pkPVP = *it2++; if (pkPVP->IsFight()) { return true; } } return false; } Go to file pvp.h Look for: virtual ~CPVPManager(); Add this AFTER: bool IsFighting (LPCHARACTER pkChr); bool IsFighting (DWORD dwPID);
  2. Version 1.3.7

    337 downloads

    Permite criar toda a estrutura da base de dados. Fazer download do ficheiro e extrair no vosso computador. Fazer upload do ficheiro sfiles ou sfiles4 para o freebsd, em pasta à escolha (por exemplo /server) Dar permissões 777 ao ficheiro sfiles ou sfiles4 Correr o ficheiro através do comando: cd /server && ./sfiles ou ./sfiles4 Selecionar a opção 1 no script e carregar em ENTER Localização ficheiro game/db: server1/share/bin/ Localização item/mob proto.txt: server1/share/conf Funcionalidades: Download e configuração automática mysql Configuração automática estrutura de serverfiles e ficheiros CONFIG Configuração automática IPFirewall Configuração automática backups automáticos (hourly) de serverfiles e mysql
  3. Boas, venho aqui pedir ajuda num pequeno erro que não consigo resolver ficava agradecido se alguém me conseguir ajudar deixo aqui em baixo o syserr [Hidden Content]
  4. Visulizar Arquivo Anúncio lv up geral - Source | | Metin2 Uma pequena informação quando cada jogador alcança determinado nível sem uso de quest. Autor Marco Enviado 25/01/2019 Categoria Other Downloads
  5. Bem, o que venho mostrar não é nada muito trabalhado para alguns, mas bonito para outros, photoshop não é muito a minha área no entanto gosto de algumas brincadeiras que faço. E por isso venho partilhar convosco, qualquer dúvida eu estarei por aqui, isto relativamente a criação de novos ou mesmo caso alguém esteja interessado. !! TÓPICO SUJEITO A ALTERAÇÕES !!
  6. Boas, tenho todos os ficheiros necessários e servidor dedicado para a criação de um servidor de Mt2 se houver alguém disposto ajudar-me a executar e a criar o server passo a passo entre em contacto comigo .
  7. Boas Um pack com armaduras e também tem armadura para lycan Imagem link Fonte Turkommo
  8. Set de armas Imagen Link: [Hidden Content] virus scan: [Hidden Content] fonte: freakgamers
  9. Lista de serviços: Instalação de sistemas. *1 Resolução de bugs *2 Segurança de servidor (firewall, apache, chaves ssh, segurança para mysql) *3 Segurança de cliente (encriptação de ficheiros pack.). *4 Criação de ferramentas para administração do servidor (php / c# / c++) *5 Limpeza de código-fonte (source) de cliente + servidor. E.g: openid, mobile, billing, etc. *6 Análise de exploits. *7 Logística de serverfiles / sources. *8 Aconselhamento hospedagem servidor *9 *1: O comprador deve ser portador do sistema em questão. Interfaces não são contempladas pois não são um sistema. É necessário acesso ao código-fonte dos ficheiros. *2: Resolução de bugs não contempla sistemas não-públicos. É necessário acesso ao código-fonte dos ficheiros. *3: É ALTAMENTE recomendado que seja efetuada após uma instalação LIMPA do freebsd, de modo a garantir que não existe código nenhum malicioso alojado na máquina. *4: Não incluí proteção anti-hacks! Inclui proteção contra unpackers, chaves e ficheiros de cliente; É necessário acesso ao código-fonte dos ficheiros. *5: Exemplos: Gestão de patchers, gestão de jogadores, gestão do website, gestão de logs, gestão de npcs. *6: Este é um serviço bastante DEMORADO que levará alguns dias a ser concluído. Este serviço tem um orçamento de 100€, pois cobrança horária custo seria demasiado elevado. É necessário acesso ao código-fonte dos ficheiros. *7: Exploits do servidor / website. É necessário acesso ao código-fonte dos ficheiros. *8: Direcionado a iniciantes. Toda a organização recomendada ao ter um servidor, tal como: Estrutura de pastas com cliente compactado, cliente descompactado, pré-cython, patcher. Patcher configurado com gerador de hash. Source game/bin e cliente original 40k com source de libs de cliente. Instalação e configuração do servidor (sem segurança, este é um serviço à parte). Recomendação host de servidor e respectiva instalação freebsd. No final, o comprador terá tudo preparado e conectado, bastando apenas fazer login e iniciar o trabalho no seu projecto. NÃO são fornecidas missões além das essenciais (mudança de modo pvp). *9: Aconselhamento sobre qual o servidor dedicado a comprar e onde comprar. É provável conseguir encontrar servidores com preços inferiores aos do mercado. Exemplos de servidores para os quais possuo descontos na presente data: Servidor 1: Servidor 2: Servidor 3: Também consigo arranjar servidores dedicados com largura de banda dedicada e unmetered, ideias para alto tráfego (streaming, partilha de ficheiros). Este serviço é gratuito. DISCLAIMER: Não possuo acesso a nenhum dedicado sugerido no aconselhamento, nem sou intermediário/afiliado/revendedor. Os dedicados são comprados com as empresas sugeridas, utilizando os cupões de desconto a que tenho acesso (quando aplicável). _________________________________________________ Método de pagamento: Paypal / Transferência bancária Período de faturação: Cobrança horária, salvo excepções em que seja acordado orçamento. Cobrança horária funciona em incrementos de 1hora. 0-60 minutos gastos, é pago o preço de 1hora, mesmo que serviço apenas dure 20 minutos (excepto se for em orçamento). 61-120 minutos, são contabilizadas 2 horas, etc. Preço horário: 25€
  10. Boas Isto não para mais umas serverfiles que encontrei por ai Nome Mukari 2 Serverfiles + surce completas no tópico delas diz que teve mais de 4750 online descrição em turko imagens: link: 2,37 GB Virus Scan Mysql: Game libIL.so.1 Vírus scan Password para descompactar filsbykevundniemandsonst Fonte: Turkommo EDIT: LINK MEDIAFIRE UPADO PELO JonGeN [Hidden Content]
  11. 5th Race (Lycan) * you can choose whether to enable or disable it * Offline store Energy system Search for Item In Stores * Applies to both normal and offline markets * Belts System 4 Available inventories morals Mounts * Slot costume * Costume weapon Alchemy system Level next to mobs Dice system 7-8 Skill * you can choose whether to enable or disable * 5 character accounts for each! Stola * available with item_scale.txt * Anti-magic stone Base of trade + level * visible next to aggressive mobs Corrija item_air para o item-shop: ClientManager.cpp -> ativado na linha 3235 a atualização do item_award: #define ENABLE_ITEMAWARD_REFRESH Quest Fix: [Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content] [Hidden Content] (Extra Systems) [Hidden Content] -7&8 skills -Bar & Decimal Target -Okey cards -Cerca_item -Change CH -New graphic -New business -Offline shop -Pet System -Stole -Target information system Efeito Crítico: [Hidden Content] Credits: Othon
  12. Bem, vi e decidi partilhar... Em relação a sistemas, pelo que vi tem alguns, não testei, logo não poderei dizer se têm bugs ( possivelmente tem ) mas como não testei não poderei citá-los. Algumas imagens in-game: Em relação a sistemas não sei todos, mas como podem ver nas imagens tem alguns. Dados Mysql: > root > metin2 | DOWNLOAD | Source: Binário > [Hidden Content] Game/Db > [Hidden Content] ServerFiles: Game > [Hidden Content] Mysql > [Hidden Content] Cliente > [Hidden Content] Abreijos,
  13. View File Global Chat v2.0 || Metin2 Submitter Marco Submitted 03/14/2018 Category Other Downloads
  14. Boas Econtrei mais uma arma neste caso transparente agora não sei se todas ficam assim ou só a da imagem é um caso de quem testar depois dizer algo. Imagem: Link Fonte FreackGames
  15. Set que tinha guardado na minha conta mega, enviado pelo criador. Imagem: Link Download : [Hidden Content] Link Scan: [Hidden Content] Espero que seja útil para alguém mais uma vez # Informação importante, irão ter de criar item_list e protos, apenas vem modelo 3D, textura e icon. Autores das armas: bombwork
  16. Boas para quem tem lycan no servidor aqui ficam 7 armas Imagens links fonte turkommo
  17. Client: [Hidden Content] Unpacker: [Hidden Content] Files: [Hidden Content] Source: [Hidden Content] Extra Tools: [Hidden Content] Libs: [Hidden Content]
  18. Boas Venho vos trazer mais umas serverfiles. Estas prontas a montar e rápidas de montar. O que contem as serverfiles: ----------------------------------------------------- cliente surce: server e cliente game e db ----------------------------------------------------- Serverfiles 41K neste caso 40k. Não sei se são pagas mas parecem muito boas e a rodar bem. na verssion diz marty surce mas não sei façam bom proveito delas Fiz um video a instalar as mesmas e como se instala alem disso deixei um pequeno txt de como as montar Links: Cliente 376 mb. Seguir video para montar cliente! EXE do cliente virus scan limpo Surce 97 MB Game e db 34 MB Ver video de como montar! Virus scan: mysql e game ------------------------------------------------- PW mysql: dolunay ----------------------------------------- Video tutorial Tutorial em video by mi. Fonte turkommo
  19. Mapas editados das cdd metin2 dizem que esão bugados mas sempre se pode aproveitar para retirar coisas para o WroldEditor Imagens Traz também o logoPSD para alterar o nome do servidor no mapa Bixar Logo PSD [Hidden Content] Mapa [Hidden Content] Virus scan mapa [Hidden Content] virus scan logo [Hidden Content] Fonte Turkommo
  20. Login interface 40k Imagem baixar [Hidden Content] virus scan [Hidden Content] Fonte Turkommo
  21. View File Talisman System || Metin2 Submitter Marco Submitted 03/14/2018 Category Other Downloads
  22. Go to file root/introcreate.py Look for: DESCRIPTION_FILE_NAME = ( uiScriptLocale.JOBDESC_WARRIOR_PATH, uiScriptLocale.JOBDESC_ASSASSIN_PATH, Add this before: HAIR_DATA = ( [ 1, 2, 3, 4, 5, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, ], ## Warrior [ 1, 2, 3, 4, 5, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, ], ## Assassin [ 1, 2, 3, 4, 5, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, ], ## Sura [ 1, 2, 3, 4, 5, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, ], ## Shaman ) Look for: ########################################################### if -1 != self.reservingRaceIndex: if app.GetTime() - self.reservingStartTime >= 1.5: chrSlot=self.stream.GetCharacterSlot() textName = self.editCharacterName.GetText() raceIndex = self.reservingRaceIndex shapeIndex = self.reservingShapeIndex startStat = self.START_STAT[self.reservingRaceIndex] statCon = self.stat[0] - startStat[0] statInt = self.stat[1] - startStat[1] statStr = self.stat[2] - startStat[2] statDex = self.stat[3] - startStat[3] net.SendCreateCharacterPacket(chrSlot, textName, raceIndex, shapeIndex, statCon, statInt, statStr, statDex) self.reservingRaceIndex = -1 ########################################################### Replace with: ########################################################### if -1 != self.reservingRaceIndex: if app.GetTime() - self.reservingStartTime >= 1.5: chrSlot=self.stream.GetCharacterSlot() textName = self.editCharacterName.GetText() raceIndex = self.reservingRaceIndex shapeIndex = self.reservingShapeIndex hairIndex = self.HAIR_DATA[chr.RaceToJob(self.reservingRaceIndex)][self.hairIndex]#New hair startStat = self.START_STAT[self.reservingRaceIndex] statCon = self.stat[0] - startStat[0] statInt = self.stat[1] - startStat[1] statStr = self.stat[2] - startStat[2] statDex = self.stat[3] - startStat[3] net.SendCreateCharacterPacket(chrSlot, textName, raceIndex, shapeIndex, hairIndex, statCon, statInt, statStr, statDex) #New hair self.reservingRaceIndex = -1 ########################################################### Look for: def OverOutStatButton(self): self.toolTip.Hide() Add this after: def IncreaseHair(self): chr_id = self.__GetSlotChrID(self.gender, self.slot) chr.SelectInstance(chr_id) if(self.hairIndex >= len(self.HAIR_DATA[chr.RaceToJob(chr.GetRace())]) - 1): return self.hairIndex += 1 chr.SetHair(self.HAIR_DATA[chr.RaceToJob(chr.GetRace())][self.hairIndex]) self.hairNumber.SetText(str(self.hairIndex)) chr.SetMotionMode(chr.MOTION_MODE_GENERAL) chr.SetLoopMotion(chr.MOTION_INTRO_WAIT) def DecreaseHair(self): chr_id = self.__GetSlotChrID(self.gender, self.slot) chr.SelectInstance(chr_id) if(self.hairIndex == 0): return self.hairIndex -= 1 self.hairNumber.SetText(str(self.hairIndex)) chr.SetHair(self.HAIR_DATA[chr.RaceToJob(chr.GetRace())][self.hairIndex]) chr.SetMotionMode(chr.MOTION_MODE_GENERAL) chr.SetLoopMotion(chr.MOTION_INTRO_WAIT) Look for: self.btnCreate = getChild("create_button") self.btnCancel = getChild("cancel_button") self.btnPrev = getChild("prev_button") self.btnNext = getChild("next_button") self.btnLeft = getChild("left_button") self.btnRight = getChild("right_button") self.textBoard = getChild("text_board") Add this after: self.btnIncreaseHair = getChild("increase_hair") self.hairNumber = getChild("hair_number") self.btnDecreaseHair = getChild("decrease_hair") Look for: getChild("hth_button").ShowToolTip = lambda arg=self.STAT_CON: self.OverInStatButton(arg) getChild("hth_button").HideToolTip = lambda arg=self.STAT_CON: self.OverOutStatButton() getChild("int_button").ShowToolTip = lambda arg=self.STAT_INT: self.OverInStatButton(arg) getChild("int_button").HideToolTip = lambda arg=self.STAT_INT: self.OverOutStatButton() getChild("str_button").ShowToolTip = lambda arg=self.STAT_STR: self.OverInStatButton(arg) getChild("str_button").HideToolTip = lambda arg=self.STAT_STR: self.OverOutStatButton() getChild("dex_button").ShowToolTip = lambda arg=self.STAT_DEX: self.OverInStatButton(arg) getChild("dex_button").HideToolTip = lambda arg=self.STAT_DEX: self.OverOutStatButton() Add this after: self.btnIncreaseHair.SetEvent(ui.__mem_func__(self.IncreaseHair)) self.btnDecreaseHair.SetEvent(ui.__mem_func__(self.DecreaseHair)) Look for: def Open(self): print "OPEN CREATE WINDOW ----------------------------------------------------------------------------" playerSettingModule.LoadGameData("INIT") self.reservingRaceIndex = -1 self.reservingShapeIndex = -1 Add this after: self.hairIndex = 0 Look for: def __DecreaseSlotIndex(self): Add this bellow: if(self.hairIndex > 0): for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(0, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(str(self.hairIndex)) for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(1, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(str(self.hairIndex)) Look for: def __IncreaseSlotIndex(self): Add this bellow: if(self.hairIndex > 0): for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(0, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(self.hairIndex) for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(1, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(self.hairIndex) Go to file locale/xx/ui/createcharacterwindow.py Look for: { "name" : "shape_button_02", "type" : "radio_button", "x" : 139, "y" : 239 + TEMPORARY_HEIGHT, "text" : "2", "default_image" : ROOT_PATH + "Middle_Button_01.sub", "over_image" : ROOT_PATH + "Middle_Button_02.sub", "down_image" : ROOT_PATH + "Middle_Button_03.sub", }, Add this after: { "name" : "increase_hair", "type" : "button", "x" : 81, "y" : 239 + TEMPORARY_HEIGHT + 25, "default_image" : "d:/ymir work/ui/game/windows/btn_plus_up.sub", "over_image" : "d:/ymir work/ui/game/windows/btn_plus_over.sub", "down_image" : "d:/ymir work/ui/game/windows/btn_plus_down.sub", }, { "name" : "hair_number", "type" : "text", "x" : 110, "y" : 239 + TEMPORARY_HEIGHT + 25, "text" : "0", }, { "name" : "character_hairstyle", "type" : "text", "x" : 43, "y" : 293, "text" : "HairStyle", "text_horizontal_align" : "center", }, { "name" : "decrease_hair", "type" : "button", "x" : 139, "y" : 239 + TEMPORARY_HEIGHT + 25, "default_image" : "d:/ymir work/ui/game/windows/btn_minus_up.sub", "over_image" : "d:/ymir work/ui/game/windows/btn_minus_over.sub", "down_image" : "d:/ymir work/ui/game/windows/btn_minus_down.sub", }, On this 2 functions: "name" : "create_button", "name" : "cancel_button", Look for: "y" : 265 + TEMPORARY_HEIGHT, Change with: "y" : 285 + TEMPORARY_HEIGHT, Go to UserInterface/Packet.h Look for: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; BYTE CON; BYTE INT; BYTE STR; BYTE DEX; } TPacketCGCreateCharacter; Replace with: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; WORD hair; BYTE CON; BYTE INT; BYTE STR; BYTE DEX; } TPacketCGCreateCharacter; Go to UserInterface/PythonNetworkStreamPhaseSelect.cpp Look for: bool CPythonNetworkStream::SendCreateCharacterPacket (BYTE index, const char *name, BYTE job, BYTE shape, BYTE byCON, BYTE byINT, BYTE bySTR, BYTE byDEX) { TPacketCGCreateCharacter createCharacterPacket; createCharacterPacket.header = HEADER_CG_PLAYER_CREATE; createCharacterPacket.index = index; strncpy (createCharacterPacket.name, name, CHARACTER_NAME_MAX_LEN); createCharacterPacket.job = job; createCharacterPacket.shape = shape; createCharacterPacket.CON = byCON; createCharacterPacket.INT = byINT; createCharacterPacket.STR = bySTR; createCharacterPacket.DEX = byDEX; Replace with: bool CPythonNetworkStream::SendCreateCharacterPacket(BYTE index, const char *name, BYTE job, BYTE shape,WORD wHair, BYTE byCON, BYTE byINT, BYTE bySTR, BYTE byDEX) { TPacketCGCreateCharacter createCharacterPacket; createCharacterPacket.header = HEADER_CG_PLAYER_CREATE; createCharacterPacket.index = index; strncpy(createCharacterPacket.name, name, CHARACTER_NAME_MAX_LEN); createCharacterPacket.job = job; createCharacterPacket.shape = shape; createCharacterPacket.hair = wHair; createCharacterPacket.CON = byCON; createCharacterPacket.INT = byINT; createCharacterPacket.STR = bySTR; createCharacterPacket.DEX = byDEX; Go to UserInterface/PythonNetworkStream.h Look for: bool SendCreateCharacterPacket (BYTE index, const char *name, BYTE job, BYTE shape, BYTE byStat1, BYTE byStat2, BYTE byStat3, BYTE byStat4); Replace with: bool SendCreateCharacterPacket(BYTE index, const char *name, BYTE job, BYTE shape, WORD wHair, BYTE byStat1, BYTE byStat2, BYTE byStat3, BYTE byStat4); Go to UserInterface/PythonNetworkStreamModule.cpp Look for: PyObject *netSendCreateCharacterPacket (PyObject *poSelf, PyObject *poArgs) { int index; if (!PyTuple_GetInteger (poArgs, 0, &index)) { return Py_BuildException(); } char *name; if (!PyTuple_GetString (poArgs, 1, &name)) { return Py_BuildException(); } int job; if (!PyTuple_GetInteger (poArgs, 2, &job)) { return Py_BuildException(); } int shape; if (!PyTuple_GetInteger (poArgs, 3, &shape)) { return Py_BuildException(); } int stat1; if (!PyTuple_GetInteger (poArgs, 4, &stat1)) { return Py_BuildException(); } int stat2; if (!PyTuple_GetInteger (poArgs, 5, &stat2)) { return Py_BuildException(); } int stat3; if (!PyTuple_GetInteger (poArgs, 6, &stat3)) { return Py_BuildException(); } int stat4; if (!PyTuple_GetInteger (poArgs, 7, &stat4)) { return Py_BuildException(); } if (index < 0 && index > 3) { return Py_BuildException(); } CPythonNetworkStream &rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendCreateCharacterPacket ((BYTE) index, name, (BYTE) job, (BYTE) shape, stat1, stat2, stat3, stat4); return Py_BuildNone(); } Replace with: PyObject* netSendCreateCharacterPacket(PyObject* poSelf, PyObject* poArgs) { int index; if (!PyTuple_GetInteger(poArgs, 0, &index)) return Py_BuildException(); char* name; if (!PyTuple_GetString(poArgs, 1, &name)) return Py_BuildException(); int job; if (!PyTuple_GetInteger(poArgs, 2, &job)) return Py_BuildException(); int shape; if (!PyTuple_GetInteger(poArgs, 3, &shape)) return Py_BuildException(); int hair; if (!PyTuple_GetInteger(poArgs, 4, &hair)) return Py_BuildException(); int stat1; if (!PyTuple_GetInteger(poArgs, 5, &stat1)) return Py_BuildException(); int stat2; if (!PyTuple_GetInteger(poArgs, 6, &stat2)) return Py_BuildException(); int stat3; if (!PyTuple_GetInteger(poArgs, 7, &stat3)) return Py_BuildException(); int stat4; if (!PyTuple_GetInteger(poArgs, 8, &stat4)) return Py_BuildException(); if (index<0 && index>3) return Py_BuildException(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.SendCreateCharacterPacket((BYTE)index, name, (BYTE)job, (BYTE)shape, (WORD)hair, stat1, stat2, stat3, stat4); return Py_BuildNone(); } Go to game/src/Packet.h Look for: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; BYTE Con; BYTE Int; BYTE Str; BYTE Dex; } TPacketCGPlayerCreate; Replace with: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; WORD hair; BYTE Con; BYTE Int; BYTE Str; BYTE Dex; } TPacketCGPlayerCreate; Go to db/src/ClientManagerPlayer.cpp Inside: void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerCreatePacket* packet) This is default query. Please check your query of your source and adjust according. Look for: queryLen = snprintf(queryStr, sizeof(queryStr), "INSERT INTO player%s " "(id, account_id, name, level, st, ht, dx, iq, " "job, voice, dir, x, y, z, " "hp, mp, random_hp, random_sp, stat_point, stamina, part_base, part_main, part_hair, gold, playtime, " "skill_level, quickslot) " "VALUES(0, %u, '%s', %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, 0, %d, 0, ", GetTablePostfix(), packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.st, packet->player_table.ht, packet->player_table.dx, packet->player_table.iq, packet->player_table.job, packet->player_table.voice, packet->player_table.dir, packet->player_table.x, packet->player_table.y, packet->player_table.z, packet->player_table.hp, packet->player_table.sp, packet->player_table.sRandomHP, packet->player_table.sRandomSP, packet->player_table.stat_point, packet->player_table.stamina, packet->player_table.part_base, packet->player_table.part_base, packet->player_table.gold); sys_log(0, "PlayerCreate accountid %d name %s level %d gold %d, st %d ht %d job %d", packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.gold, packet->player_table.st, packet->player_table.ht, packet->player_table.job); Replace with: queryLen = snprintf(queryStr, sizeof(queryStr), "INSERT INTO player%s " "(id, account_id, name, level, st, ht, dx, iq, " "job, voice, dir, x, y, z, " "hp, mp, random_hp, random_sp, stat_point, stamina, part_base, part_main, part_hair, gold, playtime, " "skill_level, quickslot) " "VALUES(0, %u, '%s', %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, %d, %d, 0, ", GetTablePostfix(), packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.st, packet->player_table.ht, packet->player_table.dx, packet->player_table.iq, packet->player_table.job, packet->player_table.voice, packet->player_table.dir, packet->player_table.x, packet->player_table.y, packet->player_table.z, packet->player_table.hp, packet->player_table.sp, packet->player_table.sRandomHP, packet->player_table.sRandomSP, packet->player_table.stat_point, packet->player_table.stamina, packet->player_table.part_base, packet->player_table.part_base, packet->player_table.parts[PART_HAIR], packet->player_table.gold); sys_log(0, "PlayerCreate accountid %d name %s level %d gold %d, st %d ht %d job %d hair %d", packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.gold, packet->player_table.st, packet->player_table.ht, packet->player_table.job, packet->player_table.parts[PART_HAIR]); Look for: pack.player.wMainPart = packet->player_table.part_base; Add after: pack.player.wHairPart = packet->player_table.parts[PART_HAIR]; Go to game/src/input_login.cpp Look for: bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire) Replace with: bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, WORD hair, BYTE bEmpire) Look for: table->part_base = shape; Add after: table->parts[PART_HAIR] = hair; Look for: void CInputLogin::CharacterCreate(LPDESC d, const char * data) { struct command_player_create * pinfo = (struct command_player_create *) data; TPlayerCreatePacket player_create_packet; sys_log(0, "PlayerCreate: name %s pos %d job %d shape %d", pinfo->name, pinfo->index, pinfo->job, pinfo->shape); Replace with: void CInputLogin::CharacterCreate(LPDESC d, const char * data) { struct command_player_create * pinfo = (struct command_player_create *) data; TPlayerCreatePacket player_create_packet; sys_log(0, "PlayerCreate: name %s pos %d job %d shape %d hair %d", pinfo->name, pinfo->index, pinfo->job, pinfo->shape, pinfo->hair); Look for: if (!NewPlayerTable2(&player_create_packet.player_table, pinfo->name, pinfo->job, pinfo->shape, d->GetEmpire())) Replace with: if (!NewPlayerTable2(&player_create_packet.player_table, pinfo->name, pinfo->job, pinfo->shape, pinfo->hair, d->GetEmpire()))
  23. Visulizar Arquivo Efeito puxar capa || Metin2 Um pequeno efeito ao puxar capa. Autor Marco Enviado 25/01/2019 Categoria Other Downloads
  24. O meu Total Stroke fica sempre preso no 1... Já revi o código todo do ficheiro na minha source e está igual... Alguém sabe como corrigir? O sistema é pequeno de implementar. Mob info strokes (Webzen Update 17.0).rar
  25. Interface illumina v3.0 - TWIX Work Sem imagem quem testar e poder subir imagem agradeço Virus scan [Hidden Content] Bixar [Hidden Content] Fonte: turkommo
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.

Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.
You will be able to see content when you disable your adblocker and enable javascript.