Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/23/2021 in all areas

  1. Serverfiles Serenity + Cliente + Sources Serverfiles 40k Lycan Full Lojas Offline Sistema de Pontos Sistema de Pets Completo Sistema de Trajes Completos Sistema de Montadas Completa Chat Global 5 Inventarios Sistema de Faixas Sistema de Sintos Proteção com password do inventario Sistema de Alquimia Mod server : PVM Hard Level Maxim : 105 FreeBSD 9.2 32bit E MUITO MAIS! Downloads Cliente https://mega.nz/#!vto20baA!3CKqThI6VmUUlZ6jtCezAcgS_v-ScTG0ZjvF_cDFrrs Source cliente https://mega.nz/#!a0QxVbYC!9w9dOpJAmD6ShQXDp-E29jX91-DEhQ68HjBOIrn7Kpc v2 source wolfman https://mega.nz/#!LkQCjZoZ!BxXLJacEepuw6PEiVk7kSLJXtslsn-MwbUjA85AWn5o dump_proto https://mega.nz/#!rxZyTR6K!kFqUTu9N7uvGD6Y934xTmA43CVX1uGp2T8o0FE5xDoA MySQL https://mega.nz/#!Hhoy1aiQ!5IQ8FZGS2MfiEsTCtPxr3a4rUdSd--Q0EhL9cjHhJ3s Game https://mega.nz/#!bpwygIjY!tvCmvW_5AjdBponQlw425hUd1strG9-afSDeJV5Vs1s VDI https://mega.nz/#!pclEzBDY!LEh_fzcSAYrY1qCFDs9siM-tyEbh9GHFWNGffaH4Y78 VDI by: et1215 Info Se der falha na conexão MySQL no VDI bata corrigir o ip nas files pois tava mexendo nela sem o Hamachi Espero ter ajudado Fonte: CG
    1 point
  2. Informações do ficheiro Password TMoore Tutorials MD5 151d1a36a15f91f8dacee3f7a577b4d4 SHA1 618bdd56fc44c1eeb4c956aa67c82884045db625 SHA256 c23bcdd3bd3bd2e1b6ffa4c33223d00b517ca62cb722025816711f37501a222c Link da análise
    1 point
  3. https://mega.nz/folder/oksAQJAJ#aRbjCa6LDH6aWDs56oE71Q https://1fichier.com/?sse0yzk46d0mwgb9nmto
    1 point
  4. Olá! Hoje, trago a vocês, uma versão da Evolution Software. Serverfilles Versão 2018/19 Completa. - Algumas Imagens: Cliente Fechado Source BIN Source GAME/DB MakePack Cliente Aberto Game: AutoPatch - DESIGN CROWN Dump Proto:
    1 point
  5. Deixo aqui duas Interfaces criadas pelo/a Aza Hatiras.Interface 1:Interface 2:Créditos: Aza Hatiras interface 1.7z interface 2.7z
    1 point
  6. The server are perfectly working and full source as well - all the bugs found is fixed The server have 11 Dungeons , all working with Re-Enter in Dungeon The server have 2 language translated (Romanian and English) - You need to translate the rest Price for this server & full source 500Euro If you like to test , please contact me on discord Umbra#6224 Login Interface With Fast Login + Multi-language sistem (ENGLISH DEFAULT) Preview : https://gyazo.com/e942d131e765edf921c3af720be68840 (I can optimized the loading like Aeldra) Wikipedia in game Preview: https://gyazo.com/97337fcc2e752d7c860a1469184e7c10 Move items from special storage and back https://gyazo.com/a8c3b3f545d363716a884e56baa293a5 Inventory with 4 Tabs Preview : https://gyazo.com/3cd2bb10f0e013d3bc0cc78ea9657c41 Wings as Sash Preview: https://gyazo.com/3aa085ba3d02c8c34f6bae8add6e4da8 Title sistem in slot https://gyazo.com/095e3b2d07be6bb09f27d7521ccef1ce New design for Shop Offline & Special Storage Preview: https://gyazo.com/0a2c2ca6e839ebcefc8622edc143b929 Character Window + Party + Skill Color Preview: https://gyazo.com/84400d436fc6663dba5a406407be41c4 Switchboot Preview: https://gyazo.com/5b95704f4800b24ce8a0b7d00f3c0e1f Dragonsoul Preview: https://gyazo.com/11ce9b9e49c57b654a156340cc9929e1 Dungeon Info Preview : https://gyazo.com/1d6fd6692d2096e6bd48783d2ab9ac65 Biolog sistem Preview: https://gyazo.com/d1eff13020878243bd93350f8e45f9bf Boss Poins Shop Preview: https://gyazo.com/4df8cb6dfda99b998eaaad49d2a57a51 Drop Info Preview: https://gyazo.com/9d40853c1279cf66dc7dfec6026dd325 Lucky Box https://gyazo.com/d8cada5f274c2d3ddc58388a85d8905c Preview on all items https://gyazo.com/5fd508058a49931aceb64ed534469aa4 Slide on all Systems https://gyazo.com/e035b71f8d390190c1723b17830ef120 Oficial Chat with filter https://gyazo.com/2af3c5ebc7a717cc445eb876168d87d7 Game Obtion with Fov and Hide Effects Preview: https://gyazo.com/c9a7661790716ac4a00e7f236b696f17 New Target Preview: https://gyazo.com/d224f4cfac6f87fd42419182c974c14f New Friends Window: https://gyazo.com/90a063e43f5d1f4521d56f455a056bb2 Inventory Espansion https://gyazo.com/80c65255ba30d51bef5d214860f7b6b0 Fast Destory item & Fast search in shop https://gyazo.com/e9523bf829287b1fe5df9938efcdcdf6 Max Stack Items 1000 https://gyazo.com/4f5077bc9b74c79de34cfc88b4fb46ba Fast Sell items https://gyazo.com/4c261a1751c860744d7e447d23ff3ec3 Client Source https://gyazo.com/655d0ec666808ad1b31b1809ab34c44b Server Source https://gyazo.com/eefe2e394287da096489eb7318d83597
    1 point
  7. Login interface 40k Imagem baixar https://drive.google.com/open?id=1Z_O0vGL2Hn2Lo9NjCZ3hW8fbRiNSy9LO virus scan https://www.virustotal.com/#/file/9298d1400e348e8a505dbaf4506936441eac10e196e5026cc3134933c0a71493/detection Fonte Turkommo
    1 point
  8. InterfaceIllumina completa Imagens Scan virus https://www.virustotal.com/#/file-analysis/OGZmMmNiOTdmOGY0N2I0NDZhYTljNjQ1YTBiMmRmMTc6MTU0MDQxMzkyMw== Baixar https://drive.google.com/open?id=1CbyBeWf268SZuEUAn1pG7vmsXlYdeBdL fonte: turkommo
    1 point
  9. (CLIENT) //Helia01 - Fix #define ENABLE_ERROR_PROPERTY_FILENAME //show folder if we have error propperty! #define ENABLE_CLIPBOARD //enable copy and past without bugs. #define ENABLE_CHECK_MOBPROTO_STRUCT //fix freezing client if mobproto struct is err. #define ENABLE_FIX_BUG_MINIMIZE #define ENABLE_REGISTER_EFFECT_LOG //register effect to log.txt #define ENABLE_QUEST_SPEED // #define ENABLE_AGGREGATE_MONSTER_EFFECT #define ENABLE_NEW_MOUNT_ROTATION_SPEED // #define ENABLE_TAB_TARGETING //like gf #define ENABLE_PACKET_DUMP //enable dump packets. #define ENABLE_LOG_TXT //enable or comment this for disable. #define ENABLE_NEW_SEQUENCE_TABLE //new sequence table (because standart is shit) #define ENABLE_MAINTENANCE_SYSTEM #define ENABLE_FIX_CREATE_NO_APPROPRIATE_DEVICE //fix this bug. (600x800 win 8 and etc.) #define ENABLE_SWITCHER_MIJAGO // just enable switcher by mijago. #define FIX_CHECK_EMPTY_TEXTURESET //fix textureset is empty! #define ENABLE_CLIENT_PROTECTION //enable client protect. //some settings// #ifdef ENABLE_TAB_TARGETING #define VICTIM_TARGET_SELECT_RANGE_MAX 3000 #endif #ifdef ENABLE_RACE_HEIGHT #define RACE_HEIGHT_MOUNT_MIN 20110 #define RACE_HEIGHT_MOUNT_MAX 20266 #endif #ifdef ENABLE_CLIENT_PROTECTION #define ENABLE_CHECK_FILES_MD5 //fix python injection and some replacement files. //#define ENABLE_FIX_YMIRWORK_HACK_DIR //fix use windows local disk d for hack(client). (some shit boost errors). #endif // SERVER #define ENABLE_AGGREGATE_MONSTER_EFFECT #define ENABLE_MAINTENANCE_SYSTEM //Hello Vegas #define ENABLE_FIX_QUICK_SLOT //fix bug. (but this not work). #define ENABLE_IGNORE_LOWER_BUFFS //Hello Vegas #define ENABLE_FIX_CHANGE_SKILL_GROUP //quest side. #define ENABLE_FIX_MOB_LOCK // hack fix. #define ENABLE_FIX_KICK_HACK //hack fix. #define ENABLE_FIX_GHOSTMODE //hack fix. #define ENABLE_FIX_ANTIWALL_HACK //hack fix. #define ENABLE_FIX_ANTI_LONG_NAME //hack fix. #define ENABLE_FIX_MINING_BOT //hack fix. #define ENABLE_FIX_FISHING_WITHOUT_WATER //hack fix. #define ENABLE_FIX_ANTISAFEZONE //hack fix. #endif 2. recompile and replace lib(python) 3. repack client (clean root) and fix errors with property,maps,textureset,terrain. 4. fix effects bug. 5. remove shit "system panel" and enable belt system. 6. "encrypted" account data. in file: accounts.ini 7. I created new script for recompile all client: ArchivePath\MakePack\#repack all.bat <- (please use this) 8. enable compression for db and game files. fix more 60 small errors. (client and server side). */ LINKS: 1- https://mega.nz/#!DJFhCASK!Be8GavrP-8EDR8MJkUy5ofqyVQ8kWxvqpNikNQz_LZU https://www.mediafire.com/file/ps26oo3ugssj8bb/Arkadia2_mod_by_Helia01_v.0.1.rar/file 2- https://mega.nz/#!LUVmRAgJ!-QoURtOkGHv0Qw3BstIqA9X-RjGI5jd2SIjOfokmAps
    1 point
  10. Para quem usa o item_proto\mob_proto por sql e está sempre a ter luta para traduzir o nome dos itens\mobs para pt ou outra lingua. Files necessários: item_proto&mob_proto estes estão em PT. Para traduzir para outra língua, basta usar os files nessa outra língua! VirusTotal
    1 point
  11. 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 > https://mega.nz/#!4pIDGATK!Vt4a8STmmiN1mu6jAvUfwKYqvqL-JTgw9xCAkeS9zBk Game/Db > https://mega.nz/#!xs50RbIC!SNbldYxPWK2a10WUNEMrF_BfXMKxLZyrazmyZds8YUg ServerFiles: Game > https://mega.nz/#!Q1xUnayC!udm2JRIK9ccRyjfnjGOFq9na1Ei4P-SQ4D4zewe1xLk Mysql > https://mega.nz/#!Rw4RATqS!MSY_yqOUKrp1bvPDzC8k_xD01PMIwiE-6i2QCiSLCoo Cliente > https://mega.nz/#!w8Il3RjY!hVJ3KkKMtdXDLNTzjrqoPFyE0d_L7272DX4Ud0CDP38 Abreijos,
    1 point
  12. Aqui fica um Design observado em Servidores como o OceanusMT2 ou o QuantumMT2 na altura de natal... Imagens: http://www.bilder-upload.eu/show.php?file=7719a1-1462770152.png http://www.bilder-upload.eu/show.php?file=0b83d4-1462770218.png http://www.bilder-upload.eu/show.php?file=1673dc-1462770236.png http://www.bilder-upload.eu/show.php?file=c51dee-1462770252.png Download: Link https://www.virustotal.com/de/file/76dc90468d4cf0f55844794d4dfaed21c62ee1961460d28ea49ec06f301a7c64/analysis/ Créditos: KoriDev
    1 point
  13. Para que serve? Para editar os valores de ataque/efeitos/cooldown/custo de mana/adicionar efeitos secundários, etc às skills. Um exemplo, querem que no vosso server a raiva a P dê 45% de max attack speed, ou que a aura da espada com stats em todos os equips e a P dê +750 de dano. Como editar? Navicat--->Player---> SkillProto Onde estará algo como isto: Principais equações a considerar: szPointPoly: Primeiro efeito da skill szSPCostPoly: Custo de mana szDurationPoly:Duração do primeiro efeito da skill (onde aplicável) szDurationSPCostPoly: Custo de mana para habilidades que podem ser ligadas/desligas (por exemplo lâmina encantada) szCooldownPoly: Cooldown da skill szPointPoly2: Segundo efeito da skill szDurationPoly2: Duração do efeito da skill (onde aplicável) szPointPoly3: Terceiro efeito da skill szDuration3: Duração do efeito da skill (onde aplicável) Equation variables: con: valor de vitalidade da personagem str: valor de força da personagem dex: valor de destreza da personagem iq: valor de inteligência da personagem atk: valor de ataque mínimo da personagem (valor de ataque mínimo definirá o valor mínimo de ataque da skill, valor de ataque máximo definirá o valor máximo de ataque da skill) number(X,Y): número random entre X e Y [sem certeza] mweap: valor de ataque mágico ar: [não sei] maxhp: valor máximo de vida da personagem maxsp: valor de mana máxima da personagem k: constante de valores de skill, ver spoiler abaixo. Modificar o k para estes valores: Nível da skill: valor do k 1: 0.05 2: 0.06 3: 0.08 4: 0.10 5: 0.12 6: 0.14 7: 0.16 8: 0.18 9: 0.20 10: 0.22 11: 0.24 12: 0.26 13: 0.28 14: 0.30 15: 0.32 16: 0.34 17: 0.36 18: 0.38 19: 0.4 0M1: 0.5 M2: 0.52 M3: 0.54 M4: 0.56 M5: 0.58 M6: 0.60 M7: 0.63 M8: 0.66 M9: 0.69 M10: 0.72 G1: 0.82 G2: 0.85 G3: 0.88 G4: 0.91 G5: 0.94 G6: 0.98 G7: 1.02 G8: 1.06 G9: 1.10 G10: 1.15 P: 1.25
    1 point
  14. E aí galera, tudo bem com vocês? Meu primeiro tutorial aqui na comunidade, espero que ajude. Hoje vou ensinar como colocar a skill Master (M1) com 17 pontos, vamos lá... Vá até a source na pasta game/src/char_skill.cpp, procure: if (number(1, 21 - MIN(20, GetSkillLevel(pkSk->dwVnum))) == 1) SetSkillLevel(pkSk->dwVnum, 20); Altere para: //if (number(1, 21 - MIN(20, GetSkillLevel(pkSk->dwVnum))) == 1) SetSkillLevel(pkSk->dwVnum, 20); Resultado: Assim toda a skill com 17 pontos vai virar Master (M1)
    1 point
  15. Boas comunidade, venho compartilhar uma nova serverfiles, contem alguns sistemas, deixando claro que não são de minha autoria, somente estou a compartilhar. Loja Offline, Troca Canal, SwitchBoot, Crafts e muito + ------------------------------------------------ Navicat: asilzade Link Download https://www.dosyaupload.com/6thk quem puder efetuar outro upload solicitamos para administração anexar no post. Desfrutem !
    1 point
  16. Bem, fiz isto já há algum tempo para o servidor pvp e penso que não darei muito uso dela. O evento (ou sistema, como preferirem dizer) é meter todos os jogadores free-for-all, ou seja, têm como objetivo matar outros jogadores para ganhar pontos e serem os vencedores. Isto é ideal para um servidor pvp. Ele está estruturado da seguinte forma: O GM ativa o evento e os jogadores terão 5 minutos para entrarem no mapa; O evento tem como duração 20 minutos; O jogador tem 10 vidas, sendo que se as perder, é removido do mapa (anunciado como eliminação); Quando o jogador morre 5x, aparece um aviso de como só lhe resta mais 5 vidas; A cada morte, o jogador perde 1 ponto; A cada 1 minuto, aparece o top 5 das pessoas com mais pontos do evento somente no mapa; Existem duas hipóteses: Jogadores de nível 1-75 poderem participar ou 75-105; Tudo o que disse é totalmente editável pela quest: settings.map_index = 64 -- map index where the event will be set to settings.name = "Mapa PvP" -- name of the map settings.low_level = 75 -- min level to participate settings.max_level = 105 -- max level to participate settings.time = 60*20 -- You can set time for the event settings.warning_die = 5 -- Warning if the player die 5 times settings.limit_die = 10 -- Limit lives that you have in order to get kicked out settings.warp_out = 5 -- Time to warp out if the event is off settings.timer = 60*5 -- Time in order to participate in the event settings.ranking = 60*1 -- Time to set a loop for ranking settings.test = false -- return false for debug mode just for testing -- settings.true = true -- enable the event = true | disable the event = false Source 1) Adicionar no service.h: #define LSM2_EVENT_DEATHMATCH 2) No char_battle.cpp, procura por: if (bPKMode == PK_MODE_GUILD && !GetGuild()) bPKMode = PK_MODE_FREE; Adiciona por baixo: #ifdef LSM2_EVENT_DEATHMATCH if (GetMapIndex() == 29){ if (IsGM()) bPKMode = PK_MODE_PROTECT; // se for GM, ele ficará protegido e não o conseguirão matar else bPKMode = PK_MODE_FREE; // se for jogador normal, ele ficará livre } #endif PS: Altera o 29 pelo INDEX do mapa a ser utilizado. Server 1) Abrir o questlib.lua e adicionar: dofile(get_locale_base_path().."/quest/sistema.lua") 2) Na pasta /quest criar um ficheiro chamado sistema.lua e adicionar: sistema = {} sistema.evento_deathmatch = {} sistema.evento_deathmatch.palavra = "deathmatch" sistema.evento_deathmatch.desligado = 0 sistema.evento_deathmatch.ligado = 1 sistema.evento_deathmatch.palavra75 = "apenas75" sistema.evento_deathmatch.palavra75p = "acima75" sistema.evento_deathmatch.palavraranking = "ranking" sistema.evento_deathmatch.titulo = "Evento Último Sobrevivente:" sistema.evento_deathmatch.apenas75 = "Somente os jogadores que estiverem a nível 75 poderão participar no evento." sistema.evento_deathmatch.apenas105 = "Somente os jogadores que estiverem a nível 75+ poderão participar no evento." sistema.evento_deathmatch.grupo = "Infelizmente estás em grupo." sistema.evento_deathmatch.teleportado = "O evento não está ativo, serás teleportado para fora do mapa." sistema.evento_deathmatch.vidas = "Já morreste 5 vezes.[ENTER]Lembrando que se morreres 10 vezes serás desqualificado independente das mortes que tenhas." sistema.evento_deathmatch.adeus = "O jogador %s foi desqualificado do evento por ter morrido" sistema.evento_deathmatch.npc = "Último Sobrevivente" sistema.evento_deathmatch.npcgm = "Evento: Último Sobrevivente" sistema.evento_deathmatch.calendario = "O Calendário está proposto para ser o seguinte:" sistema.evento_deathmatch.calendario1 = "SEGUNDA-FEIRA: Desligado[ENTER]TERÇA-FEIRA: Desligado[ENTER]QUARTA-FEIRA: Desligado[ENTER]QUINTA-FEIRA: Desligado[ENTER]SEXTA-FEIRA: 21H[ENTER]SÁBADO: 16H[ENTER]DOMINGO: Desligado" sistema.evento_deathmatch.ativar = "Queres ativar o evento?" sistema.evento_deathmatchyes = "Sim" sistema.evento_deathmatchno = "Não" sistema.evento_deathmatch.escolhenivel = "Escolhe qual é a opção que desejas ativar:" sistema.evento_deathmatch.so75 = "Nível 75 - 75" sistema.evento_deathmatch.mais75 = "Nível 75+" sistema.evento_deathmatch.eventofoiligado75 = "O Evento Último Sobrevivente encontra-se ativado.[ENTER]Participa através do Beleguim da Batalha.[ENTER]Somente personagens de nível 75 serão aceites." sistema.evento_deathmatch.eventofoiligado75p = "O Evento Último Sobrevivente encontra-se ativado.[ENTER]Participa através do Beleguim da Batalha.[ENTER]Somente personagens de nível 75+ serão aceites." sistema.evento_deathmatch.desativar = "Queres desativar o evento?" sistema.evento_deathmatch.eventofoidesligado = "O Evento Último Sobrevivente foi encerrado." sistema.evento_deathmatch.portasfechadas = "As participações para o Evento foram encerradas.[ENTER]Boa sorte a todos os participantes, que vença o melhor." sistema.evento_deathmatch.ranking = "O jogador %s encontra-se no topo da tabela com %s mortes." sistema.evento_deathmatch.acabou = "O evento acaba de terminar, sendo o vencedor o jogador %s com %s mortes.[ENTER]A administração parabeniza o jogador com 250 moedas de dragão." sistema.evento_deathmatch.mensagemdesligado = "O evento encontra-se desligado, aguarda por mais informações." sistema.evento_deathmatch.mensagemligado = "Isto é para os jogadores que sabem duelar e mostrar a sua persistência dentro do campo da batalha. Achas que estás preparado para entrares num mapa onde só o mais forte sairá vitorioso?" sistema.evento_deathmatch.error = "ERRO: Contacta a administração e explica-lhes como é que chegaste até aqui." sistema.evento_deathmatch.npcfechado = "Infelizmente já não podes participar, as inscrições fecharam.[ENTER]Podes acompanhar o evento estando atento as notícias." sistema.evento_deathmatch.kills = "Possuís %s mortes." sistema.evento_deathmatch.ranking = "Classificações:" sistema.evento_deathmatch.ranking1 = "%s - %s mortes" sistema.evento_deathmatch.importante = "É necessário que fiques mapa do Deserto para que os jogadores sejam teleportados." 3) Inserir a seguinte função na questlib.lua: function say_lsm2(msg) msg_size = string.len(msg) if msg_size > 59 then local i = 59 last_word = nil while last_word == nil and i > 0 do if string.sub(msg,i,i) == " " or string.sub(msg,i,i) == "." or string.sub(msg,i,i) == "," then last_word = i end i = i-1 end if i == 0 then last_word = 59 end say(string.sub(msg,0,last_word)) say2(string.sub(msg,last_word+1)) else say(msg) end end 4) Instalar o deathmatch.sql que está disponível abaixo e inserir na tabela log da base de dados. Deixo-vos aqui a quest: quest lsm2_event begin state start begin function get_settings() local settings = {} settings.map_index = 64 -- map index where the event will be set to settings.name = "Mapa PvP" -- name of the map settings.low_level = 75 -- min level to participate settings.max_level = 105 -- max level to participate settings.time = 60*20 -- You can set time for the event settings.warning_die = 5 -- Warning if the player die 5 times settings.limit_die = 10 -- Limit lives that you have in order to get kicked out settings.warp_out = 5 -- Time to warp out if the event is off settings.timer = 60*5 -- Time in order to participate in the event settings.ranking = 60*1 -- Time to set a loop for ranking settings.test = false -- return false for debug mode just for testing -- settings.true = true -- enable the event = true | disable the event = false return settings end function only_low_level() local settings = lsm2_event.get_settings() if settings.low_level != pc.get_level() then say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.apenas75) -- only 75 return else -- [1] - reds | [2] - yellows | [3] - blues local empire = pc.get_empire() local warp_xy = {[1] = {794100, 958200}, [2] = {799900, 940000}, [3] = {782600, 943100}} pc.warp(warp_xy[empire][1], warp_xy[empire][2]) end end function only_max_level() local settings = lsm2_event.get_settings() if settings.low_level > pc.get_level() then say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.apenas105) -- only 75 plus return else -- [1] - reds | [2] - yellows | [3] - blues local empire = pc.get_empire() local warp_xy = {[1] = {794100, 958200}, [2] = {799900, 940000}, [3] = {782600, 943100}} pc.warp(warp_xy[empire][1], warp_xy[empire][2]) end end -- only for test function only_for_test() local settings = lsm2_event.get_settings() if settings.test == true then return true else return false end return false end function clear_all() game.set_event_flag(sistema.evento_deathmatch.palavra,sistema.evento_deathmatch.desligado) game.set_event_flag(sistema.evento_deathmatch.palavra75,sistema.evento_deathmatch.desligado) game.set_event_flag(sistema.evento_deathmatch.palavra75p,sistema.evento_deathmatch.desligado) clear_server_timer("ranking") clear_server_timer("lsm2_event") clear_server_timer("adecorrer") end when login begin local settings = lsm2_event.get_settings() if pc.get_map_index() == settings.map_index and game.get_event_flag(sistema.evento_deathmatch.palavra) == sistema.evento_deathmatch.desligado then if pc.is_gm() then return end notice_multiline(sistema.evento_deathmatch.teleportado, notice) warp_to_village(settings.warp_out) -- tlthings01 -- elseif pc.get_map_index() == settings.map_index and game.get_event_flag(sistema.evento_deathmatch.palavra) != sistema.evento_deathmatch.desligado then -- if pc.is_dead() == true then -- local count = pc.getf("die","deathmatch")+1 -- local contagem = pc.getf("kill","deathmatch")-1 -- pc.setf("die","deatmatch",pc.getf("die","deathmatch")+1) -- pc.setf("kill","deathmatch",pc.getf("kill","deathmatch")-1) -- chat("Como morreste, perdeste uma morte. Neste momento possuis "..contagem.. " morte(s).") -- if count == settings.warning_die then -- notice_multiline(sistema.evento_deathmatch.vidas,notice) -- elseif count == settings.die then -- notice_all(string.format(sistema.evento_deathmatch.adeus,pc.get_name())) -- warp_to_village() -- pc.setf("die","deathmatch",0) -- end else return end end -- tlthings02 when die begin local settings = lsm2_event.get_settings() if pc.get_map_index() == settings.map_index and game.get_event_flag(sistema.evento_deathmatch.palavra) != sistema.evento_deathmatch.desligado then local count = pc.getf("die","deathmatch")+1 local settings = lsm2_event.get_settings() local contagem = pc.getf("kill","deathmatch")-1 pc.setf("die","deathmatch",pc.getf("die","deathmatch")+1) pc.setf("kill","deathmatch",pc.getf("kill","deathmatch")-1) chat("Como morreste, perdeste uma morte. Neste momento possuis "..contagem.. " morte(s).") if count == settings.warning_die then notice_multiline(sistema.evento_deathmatch.vidas,notice) elseif count >= settings.limit_die then notice_all(string.format(sistema.evento_deathmatch.adeus,pc.get_name())) warp_to_village() pc.setf("die","deathmatch",0) end end end when 9004.chat.sistema.evento_deathmatch.npcgm with pc.is_gm() begin local settings = lsm2_event.get_settings() if game.get_event_flag(sistema.evento_deathmatch.palavra) == sistema.evento_deathmatch.desligado then say_title(sistema.evento_deathmatch.titulo) say(sistema.evento_deathmatch.calendario) say(sistema.evento_deathmatch.calendario1) wait() say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.ativar) if select(sistema.evento_deathmatchyes, sistema.evento_deathmatchno) == 1 then say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.escolhenivel) local choose = select(sistema.evento_deathmatch.so75,sistema.evento_deathmatch.mais75,locale.cancel) if choose == 1 then game.set_event_flag(sistema.evento_deathmatch.palavra75,sistema.evento_deathmatch.ligado) game.set_event_flag(sistema.evento_deathmatch.palavra,sistema.evento_deathmatch.ligado) notice_multiline(sistema.evento_deathmatch.eventofoiligado75,notice_all) server_timer("lsm2_event",settings.timer) else game.set_event_flag(sistema.evento_deathmatch.palavra75p,sistema.evento_deathmatch.ligado) game.set_event_flag(sistema.evento_deathmatch.palavra,sistema.evento_deathmatch.ligado) notice_multiline(sistema.evento_deathmatch.eventofoiligado75p,notice_all) server_timer("lsm2_event",settings.timer) end else return end else say_title(sistema.evento_deathmatch.titulo) say(sistema.evento_deathmatch.desativar) say() say_lsm2(sistema.evento_deathmatch.importante,settings.name) if select(sistema.evento_deathmatchyes, sistema.evento_deathmatchno) == 1 then lsm2_event.clear_all() notice_multiline(sistema.evento_deathmatch.eventofoidesligado,notice_all) warp_all_to_village(pc.get_map_index(),settings.warp_out) else return end end end when lsm2_event.server_timer begin local settings = lsm2_event.get_settings() notice_multiline(sistema.evento_deathmatch.portasfechadas,notice_all) game.set_event_flag(sistema.evento_deathmatch.palavra,sistema.evento_deathmatch.fechado) server_loop_timer("ranking",settings.ranking) server_timer("adecorrer",settings.time) end when ranking.server_timer begin local ranking = mysql_query("SELECT nome, mortes FROM log.deathmatch ORDER by mortes DESC LIMIT 5;") notice_all(sistema.evento_deathmatch.ranking) for position in ipairs(ranking) do notice_all(string.format(position..".º lugar: "..ranking.nome[position].." - "..ranking.mortes[position].." mortes.")) end end when adecorrer.server_timer begin local ranking = mysql_query("SELECT nome, mortes FROM log.deathmatch ORDER by mortes DESC LIMIT 1;") for position in ipairs(ranking) do notice_multiline(string.format(sistema.evento_deathmatch.acabou,ranking.nome[position],ranking.mortes[position]),notice_all) lsm2_event.clear_all() end end when guild_war_observer1.chat.sistema.evento_deathmatch.npc or guild_war_observer2.chat.sistema.evento_deathmatch.npc or guild_war_observer3.chat.sistema.evento_deathmatch.npc begin local settings = lsm2_event.get_settings() if game.get_event_flag(sistema.evento_deathmatch.palavra) == sistema.evento_deathmatch.desligado then say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.mensagemdesligado) return elseif game.get_event_flag(sistema.evento_deathmatch.palavra) == sistema.evento_deathmatch.ligado then say_title(sistema.evento_deathmatch.titulo) say() say_lsm2(sistema.evento_deathmatch.mensagemligado) if select(sistema.evento_deathmatchyes, sistema.evento_deathmatchno) == 1 then if game.get_event_flag(sistema.evento_deathmatch.palavra75) == sistema.evento_deathmatch.ligado then lsm2_event.only_low_level() elseif game.get_event_flag(sistema.evento_deathmatch.palavra75p) == sistema.evento_deathmatch.ligado then lsm2_event.only_max_level() elseif party.is_party() then say(sistema.evento_deathmatch.grupo) return else say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.error) return end else return end elseif game.get_event_flag(sistema.evento_deathmatch.palavra) == sistema.evento_deathmatch.fechado then say_title(sistema.evento_deathmatch.titulo) say() say(sistema.evento_deathmatch.npcfechado) return end end when kill with npc.is_pc() begin local settings = lsm2_event.get_settings() if pc.get_map_index() == settings.map_index then local contagem = pc.getf("kill","deathmatch")+1 pc.setf("kill","deathmatch",pc.getf("kill","deathmatch")+1) mysql_query("UPDATE log.deathmatch SET mortes ='"..contagem.."' WHERE name ='"..pc.get_name().."' LIMIT 1") chat("Neste momento contas com "..contagem.. " morte(s).") end end end end ATENÇÃO: Utilizei a função when die begin mas em caso de não tiverem pesquisem por tlthings01 dentro da quest e descomentem tudo o que está por baixo e removem/comentem o que está no tlthings02 Infelizmente não tenho qualquer imagem nem tenho tempo para tal mas foi testado e usado em cenário real. OBS: É recomendado usarem mysql_direct_query para melhor performance mas a diferença de uma para a outra neste cenário é de 0.0343s por isso é indiferente a escolha de uma para a outra. Ah e ignorem o facto dos comentários estarem em inglês, apeteceu-me escrever dessa forma na altura. PS: Isto é igual/semelhante ao Evento Coliseu. deathmatch.sql questing.lua
    1 point
  17. Primeiro que tudo, KemazI és super feio e não é nada contra ti xd Imagem: Download: https://mega.nz/#!u9VWiBoD!-IrZAYV-wB2A0Jsc-CNALnw-YcHqytPsMvjsUeTpgds https://virustotal.com/pt/file/fe7888a833243ea103e18d3fb3768065f95e54c414d46eb347ba35fd0e6d0b1f/analysis/1471356137
    1 point
  18. Open uiinventory.py and search: self.wndItem.RefreshSlot() if self.wndBelt: self.wndBelt.RefreshSlot() Add below: def RefreshNewSlotAcce(self): getAcceVnum=player.GetItemIndex illumina_slot_acce = item.COSTUME_SLOT_COUNT for acce_illumina in xrange(illumina_slot_acce): slot_Acce = item.COSTUME_SLOT_START + acce_illumina self.wndEquip.SetItemSlot(slot_Acce, getAcceVnum(slot_Acce), 0) self.wndEquip.RefreshSlot() Search: def Show(self): self.__LoadWindow() Add below: self.RefreshNewSlotAcce() Search: setItemVNum(slotNumber, getItemVNum(slotNumber), itemCount) getItemVNum=player.GetItemIndex Add below: illumina_slot_acce = item.COSTUME_SLOT_COUNT for acce_illumina in xrange(illumina_slot_acce): slot_Acce = item.COSTUME_SLOT_START + acce_illumina self.wndEquip.SetItemSlot(slot_Acce, getItemVNum(slot_Acce), 0) Now open inventorywindow.py and search: import item Add below: SLOT_ACCE_ILLUMINA = item.COSTUME_SLOT_START Search: "slot" : ( Add below: {"index":SLOT_ACCE_ILLUMINA+2, "x":80, "y":3, "width":32, "height":32}, # Slot Acce Illumina -> <-
    1 point
  19. Go to file char_battle.cpp Inside the function: void CHARACTER::Stun() Look for: m_pkStunEvent = event_create (StunEvent, info, PASSES_PER_SEC (3)); Replace with: if (!IsPC()){ m_pkStunEvent = event_create (StunEvent, info, PASSES_PER_SEC (0));} else{ m_pkStunEvent = event_create (StunEvent, info, PASSES_PER_SEC (3));} Video: https://youtu.be/kVVr5mGJKCU?t=1m20s
    1 point
  20. Perdão, adiciona logo na primeira linha do sistema.lua: sistema = {} sistema.evento_deathmatch = {} Quest editada.
    1 point
  21. (description from source) DOWNLOAD LINK: https://mega.nz/#!atVzGRCT!UHs13OOAl3d9C4DMKzIdgg2C1CpCHDD14FodpSPjWzs NOT TESTED !!!
    1 point
  22. Go to file char_item.cpp After: ITEM_METIN: Look for: ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (METIN)"); Replace with: item->SetCount(item->GetCount() - 1); Then you can make your stone stackable and it will only remove 1 stone instead of the stack when adding to equip. Note: Not tested, someone test and tell it if worked, thanks. Edit: tested and working
    1 point
  23. Boas a todos, andei a procura de um ch switcher que funcionasse, encontrei alguns e experimentei com source envolvida e sem, achei melhor este via python e sem precisar mexer em source... Vamos passar ao tutorial: 1- Fazer download do anexo, password: tlthings 2-uichangechannel and ui_wrapper na pasta root 3-*networkmodule.py Procurar: Adicionar: locale/xx/ui/systemdialog.py Procurar: Adicionar em baixo: game.py Procurar por: Adicionar em baixo: Procurar: Adicionar em baixo: intrologin.py Procurar: Adicionar em cima: interfacemodule.py Procurar: Adicionar em baixo: Procurar por: Trocar por: uisystem.py Adionar aos imports: Procurar por: Mudar por: Procurar por: Procurar por: Adicionar em baixo: Procurar por: Adicionar em cima: Procurar por: Adicionar em cima: Procurar por: Adicionar em baixo: Procurar por: Adicionar em baixo: Está testado e funcional no meu servidor, qualquer duvida não exitem em perguntar e CUIDADO com os espaços em vez de tabs que os foruns metem, qualquer dúvida ou se quiserem prints em relação à formatação mandem mensagem aqui neste tópico. Créditos Koray e JD9 CH SWITCHER.rar
    1 point
  24. Char.cpp Procurar: if (GetLevel() <= 10) AutoGiveItem(27001, 2); else if (GetLevel() <= 30) AutoGiveItem(27002, 2); else { AutoGiveItem(27002, 2); AutoGiveItem(27003, 2); } Apaguem estas linhas ou comentem-nas, ou mudem-nas para outros Items que queiram. CRÉDITOS: megatixos (Metin2DEV)
    1 point
  25. Estava a ver um vídeo do MKMT2 e reparei que quando a personagem carrega no ALT, o MN passa a ser visível da mesma forma como o HP é. Em pouco menos de 30 minutos, fiz a mesma coisa, provavelmente (ou não) do mesmo jeito que o Micael fez: Explicação A primeira coisa que fiz foi ir no game.py e ver qual era o valor que o LALT era atribuído. Ao ver que o mesmo estava para o self.ShowName(), fui no def dele e reparei que ele chamava valores que estão presentes em outros ficheiros: self.playerGauge.EnableShowAlways() Isto é bastante simples de ler, ele chama o def EnableShowAlways que se encontra no ficheiro uiPlayerGauge.py A partir daqui, foi muito mais fácil de entender as coisas, que irei demonstrar agora no Tutorial. Tutorial Criem um ficheiro no root chamado uiPlayerGauge1.py com o seguinte: # Importante: Não apagar este ficheiro, uma vez que é por causa dele que o MN será mostrado sempre que o jogador carregar na tecla ALT // Mário. import ui import player import chr import textTail class PlayerGauge(ui.Gauge): def __init__(self, parent): ui.Gauge.__init__(self) self.SetParent(parent) self.AddFlag("not_pick") self.MakeGauge(100, "blue") self.curSP = 0 self.maxSP = 0 self.showAlways = FALSE def __del__(self): ui.Gauge.__del__(self) def Hide(self): self.SetPosition(-100, -100) ui.Gauge.Hide(self) def OnUpdate(self): playerIndex = player.GetMainCharacterIndex() (x, y, z)=textTail.GetPosition(playerIndex) isChat = textTail.IsChat(playerIndex) ui.Gauge.SetPosition(self, int(x - self.GetWidth()/2), int(y + 15) + isChat*17) def RefreshGauge(self): self.curSP = player.GetStatus(player.SP) self.maxSP = player.GetStatus(player.MAX_SP) self.SetPercentage(self.curSP, self.maxSP) if self.showAlways: self.Show() else: if self.IsShow(): if self.curSP > self.maxSP / 2: self.Hide() else: if self.curSP < self.maxSP / 2: self.OnUpdate() self.Show() def EnableShowAlways(self): self.showAlways = TRUE self.RefreshGauge() def DisableShowAlways(self): self.showAlways = FALSE self.RefreshGauge() Abram o game.py e procurem por: import uiPlayerGauge Por baixo, adicionem: import uiPlayerGauge1 Procurem, duas vezes, por: self.playerGauge = None Por baixo, adicionem: self.playerGauge1 = None Procurem por: self.playerGauge = uiPlayerGauge.PlayerGauge(self) self.playerGauge.Hide() Por baixo, adicionem: self.playerGauge1 = uiPlayerGauge1.PlayerGauge(self) self.playerGauge1.Hide() Agora necessitamos que o valor do nosso ficheiro atualize sempre que o MN é perdido ou aumentado (seja com uma skill, ao chamar o cavalo, entre outros), por isso vamos no def RefreshStatus e procurem por: if self.playerGauge: self.playerGauge.RefreshGauge() Por baixo, adicionem: if self.playerGauge1: self.playerGauge1.RefreshGauge() Agora temos que ir no def ShowName e adicionar o nosso EnableShowAlways, por isso procurem por: self.playerGauge.EnableShowAlways() Por baixo, adicionem: self.playerGauge1.EnableShowAlways() Também vamos adicionar no def HideName, para tal procurem por: self.playerGauge.DisableShowAlways() Por baixo, adicionem: self.playerGauge1.DisableShowAlways() Como podem ver, o trabalho não foi assim tanto, tal como tinha dito, não demorou nada mais que 30 minutos, apenas criei outro uiPlayerGauge e editei-o de forma a ir buscar o valor do MN. Existem melhores formas de fazerem isso sem a necessidade de criar outro ficheiro, esta foi a forma mais preguiçosa que achei (fiz isto hoje por volta das 03:30 da manhã, dêem-me um desconto), mas não deixa de mostrar o resultado. A comunidade portuguesa/brasileira tem a mania de copiar os tópicos e meter noutros fóruns sem meter os seus devidos créditos (falo disto por experiência própria em ver o meu trabalho a ser repassado sem o meu nome). Peço que se quiserem partilhar, não retirem o meu nome. Agradeço ao MKMT2 pela ideia, realmente é sempre uma mais valia saber o MN, mesmo que para alguns isso seja inútil. Dou suporte no tópico, em caso de não conseguirem.
    1 point
  26. Boas pessoal hoje vou trazer um tutorial basico sobre como mexer em source, vai ser mesmo basico para ajudar aqueles que estão a começar e não sabem como meter mãos na massa então vamos lá: https://thenewboston.com/videos.php?cat=16&video=17478 - entender um Programa basico em c++ https://thenewboston.com/videos.php?cat=16&video=17480 - variaveis https://thenewboston.com/videos.php?cat=16&video=17483 - Arithmetic basica https://thenewboston.com/videos.php?cat=16&video=17484 - Condições if https://thenewboston.com/videos.php?cat=16&video=17485 - Funções https://thenewboston.com/videos.php?cat=16&video=17487 - funções com Multiplos Parametros https://thenewboston.com/videos.php?cat=16&video=17488 - introdução a POO https://thenewboston.com/videos.php?cat=16&video=17493 - condições if novamente e condições else https://thenewboston.com/videos.php?cat=16&video=17494 - estrutura while https://thenewboston.com/videos.php?cat=16&video=17498 - estruturas for Pessoal isso é o Basico exercicio basico : adicionem nível minimo para negociar
    1 point
  27. O que fará? Caso uma buffer esteja em grupo e esta utilize uma skill de buff (por exemplo Benção), todos os membros que estejam no seu grupo e no alcance da skill ficaram sob o seu efeito também (o alvo pode ser qualquer um e inclusive a própria personagem). Ficheiro skill.h Procurar por: SKILL_FLAG_FIRE = (1 << 26), Adicionar por baixo: SKILL_FLAG_PARTY = (1 << 27), Ficheiro char_skill.cpp Procurar por: SKILL_RESIST_PENETRATE }; Adicionar por baixo: struct FPartyPIDCollector { std::vector <DWORD> vecPIDs; FPartyPIDCollector() { } void operator () (LPCHARACTER ch) { vecPIDs.push_back(ch->GetPlayerID()); } }; Procurar por: if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY)) ComputeSkill(dwVnum, this); Adicionar por baixo: else if (IS_SET(pkSk->dwFlag, SKILL_FLAG_PARTY) && GetParty()) { FPartyPIDCollector f; GetParty()->ForEachOnMapMember(f, GetMapIndex()); for (std::vector <DWORD>::iterator it = f.vecPIDs.begin(); it != f.vecPIDs.end(); it++) { LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(*it); ComputeSkill(dwVnum, ch); } } Como na imagem: Ficheiro guild.cpp Procurar por: if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY)) { // 이미 걸려 있으므로 사용하지 않음. if (ch->FindAffect(pkSk->dwVnum)) return; victim = ch; } Adicionar por baixo: if ((pkSk->dwFlag & SKILL_FLAG_PARTY)) { if (ch->FindAffect(pkSk->dwVnum)) return; victim = ch; } Navicat-->Player-->Skill_Proto em Design table (clique lado direito) e adicionar PARTY em ultimo lugar (na posição 27 da set_Flag). Nota: Caso tenham a opção 27 ocupada no ficheiro skill.h, atribuam o número a seguir (se o vosso for por exemplo 32, adicionam a linha do tutorial com o número 33). O número no skill.h equivale à posição do set_flag do skill_proto, estes devem ser iguais para que funcione correctamente. Para definir que skill funcionará para o grupo inteiro, vão a Navicat-->Player-->Skill_Proto-->ID da skill e adicionem o set_Flag party.(Ver post abaixo com skill_proto de exemplo) Exemplo:
    1 point
  28. Ir até ao ficheiro char_item.cpp: Procurar por: case UNIQUE_ITEM_CAPE_OF_COURAGE: case 70057: case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE: AggregateMonster(); item->SetCount(item->GetCount() - 1); break; Substituir por: case UNIQUE_ITEM_CAPE_OF_COURAGE: case 70057: case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE: AggregateMonster(); break;
    1 point
  29. Ir até ao char_item.cpp Procurar por: case ITEM_SKILLBOOK: Deverá estar assim: Substituir os dois: ITEM_MANAGER::instance().RemoveItem(item); Por isto: item->SetCount(item->GetCount() - 1); Deverá ficar assim (comentei o anterior para ser mais visivel onde modificar): Pode-se utilizar o mesmo para outros itens que ao serem utilizados removam o stack inteiro. Para reduzir a quantidade do stack em 1 ao invés de remover o stack inteiro noutros itens, basta procurar pelos mesmos na source e substituir: ITEM_MANAGER::instance().RemoveItem(item); Por isto: item->SetCount(item->GetCount() - 1);
    1 point
×
×
  • Create New...