Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/25/2021 in all areas

  1. Boas venho partilhar umas serverfiles que encontrei navegando fora de portugal Língua Italiano Conteúdo Serverfiles com todos os respectivos tutoriais dentro da cada pasta como fazer .txt Conteúdo pago disponibilizado free. link: 1.84 GB Sem scan de virus mas abri no meu pc e está tudo ok Não sei nomes não sei autor Fonte: Rls inforge
    1 point
  2. Serve para definir o valor mínimo e máximo de DM e DH a sair nas armas. Ir até ao ficheiro config.h Procurar por: extern int VIEW_BONUS_RANGE; Adicionar o seguinte por baixo: extern int minDanoHabilidade; extern int maxDanoHabilidade; extern int minDanoMedio; extern int maxDanoMedio; Ir até ao ficheiro config.cpp Procurar por: int VIEW_BONUS_RANGE = 500; Adicionar o seguinte por baixo: int minDanoHabilidade = -30; int maxDanoHabilidade = 30; int minDanoMedio = -30; int maxDanoMedio = 30; Procurar por: TOKEN("gold_drop_time") { str_to_number(gold_drop_time, value_string); gold_drop_time = MINMAX(0, gold_drop_time, 32767); fprintf(stderr, "GOLD_DROP_TIME: %d\n", gold_drop_time); } Adicionar o seguinte por baixo: TOKEN("minDanoHabilidade") { str_to_number(minDanoHabilidade, value_string); minDanoHabilidade = MINMAX(-32767, minDanoHabilidade, 32767); fprintf(stderr, "minDanoHabilidade: %d\n", minDanoHabilidade); } TOKEN("maxDanoHabilidade") { str_to_number(maxDanoHabilidade, value_string); maxDanoHabilidade = MINMAX(-32767, maxDanoHabilidade, 32767); fprintf(stderr, "maxDanoHabilidade: %d\n", maxDanoHabilidade); } TOKEN("minDanoMedio") { str_to_number(minDanoMedio, value_string); minDanoMedio = MINMAX(-32767, minDanoMedio, 32767); fprintf(stderr, "minDanoMedio: %d\n", minDanoMedio); } TOKEN("maxDanoMedio") { str_to_number(maxDanoMedio, value_string); maxDanoMedio = MINMAX(-32767, maxDanoMedio, 32767); fprintf(stderr, "maxDanoMedio: %d\n", maxDanoMedio); } Substituir o item_addon.cpp pelo do anexo, ou colocar o seguinte conteúdo: Adicionar o seguinte aos ficheiros CONFIG dos canais: minDanoMedio: Valor maxDanoMedio: Valor minDanoHabilidade: Valor maxDanoHabilidade: Valor Onde diz Valor poderá ser um número desde -32768 até 32767 item_addon.cpp item_addon.cpp
    1 point
  3. Client: https://mega.nz/#!S5gFESwJ!xeWvJiXVZgqg8VKg5D-hfUjqAVnh6tP5aPZpMbswNRs Unpacker: https://mega.nz/#!egRAhTwJ!FbqglPk_4q4L3lUcAccH7-IrLl3VYN95Qq4T-Xk_hKk Files: https://mega.nz/#!r8YUwI4R!xwDe6z-Fh3qCLTZg81IY7dFGwDiuUcxTBnxvmG4UxuY Source: https://mega.nz/#!T8ZijRhS!o6lRP8LDMt3xX1YoiDZRjk0s4Kv1CxoTrT9qFUlP6pQ Extra Tools: https://mega.nz/#!s08EgIRQ!AdrAVKBZD7bULPb7QEokLSnxs2NrjPkn5vQaNhrYVoY Libs: https://mega.nz/#!91sygDhT!IC8MGXMMtrL2t_t5BxD_DAxTaDbwvd34_9olgKd2bCE
    1 point
  4. https://drive.google.com/file/d/1EY62SyxUbg9F78cv1SUx1DEAh0UfdfeA/view Trazem tudo o que é necessário. Não testei, não têm fotos. Pelo que eu li têm varios bugs corrigidos etc... Só trazem o sistema de costumes. Têm um bug na window de negócios, mas é fácil de corrigir pelos vistos. Source: Metin2Zone
    1 point
  5. 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
  6. Marty V4 2017 Source & cliente. Como não uso e já a tenho a algum tempo aqui deixo o pack completo source.s e cliente . O que vem no pack da source? No pack da source vem : O cliente Dentro do Pack da source vão encontrar tudo que precisam para montar os servidor . Links Source pack https://drive.google.com/open?id=1_EAoVcmKran4By6iZGOV2oOJQU7rT8_m Cliente https://drive.google.com/open?id=16_2c5z-NAWL_PmmiuC4NFjShtRZNIaI5 Foi testada por min e corre sem problemas Info locale.inc OBS: A source traz alguns sistemas já aplicados e dentro do pack vai os mesmos usados na source. Conteudo para o forum m2dev. Caso links apreçam off é favor avisar comprimentos a todos. Pessoal para ser mais facil a instalação do server usem o generator aqui do forum corre sem problemas.
    1 point
  7. Boas Venho aqui postar as serverfiles do rubinum: Link: Ainda não testei Scan: Ficheiro: admin-panel.zip. Scan: Ficheiro: ishop.zip Scan: Ficheiro: rb-website.zip Scan: Ficheiro: share.zip pasta que contem as quests etc. Scan: Ficheiro: Sql.zip querys da Base de dados Algumas imagens Surce Conteudo Fonte Turkommo
    1 point
  8. Copyright Descobri este tutorial algures na net, mas sinceramente não me recordo onde porque apenas hoje o fui testar. Se alguém souber o forum\owner... que faça reply e eu actualizo! A ideia desta função é simples. Sempre que o jogador faz login, o servidor procura todos os itens com bónus no inventário deste jogador e faz um cruzamento de valores com a base de dados. Se o item estiver com bónus inferiores\superiores ao permitido, o item irá ser automaticamente rodado para novos bonus e será enviada uma messangem para o jogador. Tutorial //#input_login.cpp // #char.cpp Sistema testado e a funcionar quase na perfeição. Nota 7/10 ;P
    1 point
  9. Boas malta bom venho aqui partilhar umas quests que traduzi podem fazer jeito. antes que as perca aqui as deixo no forum. 1 - change_empire_item 2 - change_sex_item 3 - acce 4 - reset_scroll 5 - skill_group com lycan 6 - skill_reset2 7 - skil_p 8-Serviços ou anel de teleporte 9 - Armazem 10- info do cavalo no guarda 11- cards_event 12 - serviços de gm ou painel de eventos 13 - guild_building 14 - guild_building_alter_of_power 15 - guild_building_melt 16 - guild_building_npc 17 - guild_manage 18 - guild_ranking 19 - guild_war_bet 20 - guild_war_join 21 - marriage_manage
    1 point
  10. Visulizar Arquivo Pack Sistemas vegas pack de sistemas vegas não testados, usem por conta própria, não dou qualquer auxilio. fonte turkmmo Autor wery Enviado 01/10/2018 Categoria Other Downloads
    1 point
  11. Query to delete all information about players, best used before server official opening. Go to Navicat and double-click no open connection Press Query (WITHOUT SELECTING ANY DATABASE) in the upper menu Paste the query bellow Press "Run" Query:
    1 point
  12. Conteúdo dos Cofres(C++) View File Scan: https://www.virustotal.com/#/file/6e55481ef6ba1263ca4643a69429d7a5281c61df94615670b6ef65ad65a2c3fa/detection Demonstração: Submitter oserra Submitted 05/07/2018 Category Other Downloads
    1 point
  13. Visulizar Arquivo Info Chest PASSWORD: tlthings.net Autor [MOD] WLN Enviado 13/03/2018 Categoria Other Downloads  
    1 point
  14. abrir eterPythonLib/PythonSlotWindow.h e procurar por CGraphicImageInstance * pInstance; adicionar abaixo CGraphicImageInstance * pInstanceLevel; procurar por void Destroy(); adicionar abaixo void SetSlotLevelImage(DWORD dwIndex, CGraphicImage * levelImage); abrir eterPythonLib/PythonSlotWindow.cpp e procurar por Slot.pFinishCoolTimeEffect = NULL; adicionar abaixo Slot.pInstanceLevel = NULL; procurar por void CSlotWindow::SetSlotCount(DWORD dwIndex, DWORD dwCount) adicionar antes: void CSlotWindow::SetSlotLevelImage(DWORD dwIndex, CGraphicImage * levelImage) { TSlot * pSlot; if (!GetSlotPointer(dwIndex, &pSlot) || !levelImage) return; assert(NULL == pSlot->pInstanceLevel); pSlot->pInstanceLevel = CGraphicImageInstance::New(); pSlot->pInstanceLevel->SetDiffuseColor(1.0, 1.0, 1.0, 1.0); pSlot->pInstanceLevel->SetImagePointer(levelImage); } procurar por: pSlot->dwCenterSlotNumber = 0xffffffff; adicionar abaixo if (pSlot->pInstanceLevel) { CGraphicImageInstance::Delete(pSlot->pInstanceLevel); pSlot->pInstanceLevel = NULL; } procurar por if (rSlot.bActive) adicionar antes if (rSlot.pInstanceLevel) { rSlot.pInstanceLevel->SetPosition(m_rect.left + rSlot.ixPosition, (m_rect.top + rSlot.iyPosition + rSlot.byyPlacedItemSize*ITEM_HEIGHT) - 32); rSlot.pInstanceLevel->Render(); } abrir eterPythonLib/PythonWindowManagerModule.cpp e procurar por void initwndMgr() adicionar antes PyObject * wndMgrSetSlotImage(PyObject * poSelf, PyObject * poArgs) { UI::CWindow * pWin; if (!PyTuple_GetWindow(poArgs, 0, &pWin)) return Py_BuildException(); int iSlotIndex; if (!PyTuple_GetInteger(poArgs, 1, &iSlotIndex)) return Py_BuildException(); char * szImagePath; if (!PyTuple_GetString(poArgs, 2, &szImagePath)) return Py_BuildException(); if (!pWin->IsType(UI::CSlotWindow::Type())) return Py_BuildException(); UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin; CGraphicImage * pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(szImagePath); if (!pImage) return Py_BuildException(); pSlotWin->SetSlotLevelImage(iSlotIndex, pImage); return Py_BuildNone(); } procurar por { "ShowOverInWindowName", wndMgrShowOverInWindowName, METH_VARARGS }, adicionar abaixo { "SetSlotLevelImage", wndMgrSetSlotImage, METH_VARARGS }, abra root/ui.py e procure por wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount) adicione ####Item level text/icon ### itemName=item.GetItemName().strip() itemNameP=item.GetItemName().rfind('+') if itemNameP>0 and len(itemName)>itemNameP+1: level=itemName[itemNameP+1:] if level.isdigit(): wndMgr.SetSlotLevelImage(self.hWnd, renderingSlotNumber, ("icon/level/%d.tga"%int(level))) ####Item level text/icon END ### na função, ficando assim def SetItemSlot(self, renderingSlotNumber, ItemIndex, ItemCount = 0, diffuseColor = (1.0, 1.0, 1.0, 1.0)): if 0 == ItemIndex or None == ItemIndex: wndMgr.ClearSlot(self.hWnd, renderingSlotNumber) return item.SelectItem(ItemIndex) itemIcon = item.GetIconImage() item.SelectItem(ItemIndex) (width, height) = item.GetItemSize() wndMgr.SetSlot(self.hWnd, renderingSlotNumber, ItemIndex, width, height, itemIcon, diffuseColor) wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount) ####Item level text/icon ### itemName=item.GetItemName().strip() itemNameP=item.GetItemName().rfind('+') if itemNameP>0 and len(itemName)>itemNameP+1: level=itemName[itemNameP+1:] if level.isdigit(): wndMgr.SetSlotLevelImage(self.hWnd, renderingSlotNumber, ("icon/level/%d.tga"%int(level))) ####Item level text/icon END ### icon +0 and +9.7z
    1 point
  15. Locale_Pt 2017 martysame Não tive tempo de upar em um servidor para deixar link de verificação dos ficheiros, arquivos estao limpos. Pasta Locale_pt e Item_Proto extraido. Realizem bom proveito, deixe o gostei por ter ajudado. locale_pt.rar item_names.txt item_proto.txt
    1 point
  16. Boas Venho trazer um sistema que coloca outro membro da guild como sublider mostrando o nome sublider no membro Vamos lá Codificação: ONURSTEEL Data: 6.04.2017, 22:30 Propriedades do sistema; Instantaneamente, o líder da guilda ou general da guilda mostrará sua tag com o nome da guild. EX. [Guild Lideri] - nome personagem, [Guild Generali] - nome personagem, --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ficheiro original link Fonte Freakgamers tradução google e eu
    1 point
  17. Boas trago aqui um sistema bem engraçado tipo jogo de dados apostam itens a quem sair o numero maior ganha imagem Link Fonte freakgamers
    1 point
  18. Boas Toturial de como acelerar o texto das quests Não testei Vamos lá. Abra UserInterface \ PythonEventManager.cpp; Nas primeiras linhas você terá isso: const long c_lNormal_Waiting_Time = 10; Basta alterar o valor para de 10 para 0 Depois compilar e testar xD Tenho também um pequeno fix Para aqueles que não conseguem compilar ou não tem 40k basta adicionar um "setdelay (0)" logo acima do "say_title". Tipo isto say_title = function(name, width, height) setdelay(0); [...] end fonte: funky-emu
    1 point
  19. No problem on top on some responses the admin give the keys for unpack the client
    1 point
  20. No problem, Here are the keys of the client (put them at EterManager): 31-EE-DE-02-B7-5D-81-05-A3-16-A1-28-B1-30-1A-00 4E-A0-B4-04-1C-F8-8E-1F-A8-DB-19-00-AE-9F-2C-1D Just the design for it i didnt tested, but probably you also have to get the stuff from zone
    1 point
  21. This was laying down on my disk. I dont know where/when i got this, some seem to be duplicate of other systems also. If someone finds anything interesting and it works, we would all thank if you did a tutorial for it.
    1 point
  22. Boas Para quem quiser usar livros de skills sem pedir xp aqui algo me simples ir a char_skill.cpp Procurar por: need_exp = 20000; Editar a vosso gosto sendo que 0 não pede XP Como isto need_exp = 0;
    1 point
  23. 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
  24. case USE_ADD_ATTRIBUTE : // if (item2->GetType() == ITEM_WEAPON || item2->GetType() == ITEM_ARMOR || item2->GetType() == ITEM_BELT) // { // char szEventFlag[30]; // snprintf(szEventFlag, sizeof(szEventFlag), "%d.Engel", item2->GetID()); // if (*szEventFlag) // { // if (quest::CQuestManager::instance().GetEventFlag(szEventFlag)) // { // ChatPacket(CHAT_TYPE_INFO, LC_TEXT("item_engel")); // return false; //} //} // } if(item2->GetType()== ITEM_BELT) { return false; } if (item2->GetAttributeSetIndex() == -1) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다.")); return false; } if (item2->GetAttributeCount() < 4) { // 연재가 특수처리 // 절대로 연재가 추가 안될거라 하여 하드 코딩함. if (item->GetVnum() == 71152 || item->GetVnum() == 76024) { bool bCanUse = true; for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i) { if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40) { bCanUse = false; break; } } if (false == bCanUse) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("적용 레벨보다 높아 사용이 불가능합니다.")); break; } } char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); if (number(1, 100) <= 100) { item2->AddAttribute(); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성 추가에 성공하였습니다.")); int iAddedIdx = item2->GetAttributeCount() - 1; LogManager::instance().ItemLog( GetPlayerID(), item2->GetAttributeType(iAddedIdx), item2->GetAttributeValue(iAddedIdx), item->GetID(), "ADD_ATTRIBUTE_SUCCESS", buf, GetDesc()->GetHostName(), item->GetOriginalVnum()); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성 추가에 실패하였습니다.")); LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE_FAIL", buf); } item->SetCount(item->GetCount() - 1); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("더이상 이 아이템을 이용하여 속성을 추가할 수 없습니다.")); } break; case USE_ADD_ATTRIBUTE2 : tenta assim, isso são os adicionares
    1 point
  25. tutorial estruturado, removido da source like pt official daqui do forum virustotal:https://www.virustotal.com/pt/file/b4d52e8dfd2047615410e822efe310876830987fff259eb466c6be62fdf0cb8c/analysis/1490453558/ View equipament.7z View equipament.7z
    1 point
  26. #PythonApplicationProcedure.cpp //Search this function: void CPythonApplication::__MinimizeFullScreenWindow(HWND hWnd, DWORD dwWidth, DWORD dwHeight) { ChangeDisplaySettings(0, 0); SetWindowPos(hWnd, 0, 0, 0, dwWidth, dwHeight, SWP_SHOWWINDOW); ShowWindow(hWnd, SW_MINIMIZE); } //Add after: void CPythonApplication::__ResetCameraWhenMinimize() { CCameraManager& rkCmrMgr=CCameraManager::Instance(); CCamera* pkCmrCur=rkCmrMgr.GetCurrentCamera(); if (pkCmrCur) { pkCmrCur->EndDrag(); } SetCursorNum(NORMAL); if ( CURSOR_MODE_HARDWARE == GetCursorMode()) SetCursorVisible(TRUE); } //Search: if (m_isWindowFullScreenEnable) { __MinimizeFullScreenWindow(hWnd, m_dwWidth, m_dwHeight); } //Replace with: if (m_isWindowFullScreenEnable) { __MinimizeFullScreenWindow(hWnd, m_dwWidth, m_dwHeight); __ResetCameraWhenMinimize(); } else { __ResetCameraWhenMinimize(); } #PythonApplication.h //Search: void __MinimizeFullScreenWindow(HWND hWnd, DWORD dwWidth, DWORD dwHeight); //Add after: void __ResetCameraWhenMinimize(); Have fun, TlFriends
    1 point
  27. Olá, Irei deixar aqui algumas alterações que poderão fazer na source e quem sabe, até vos possam ser úteis. Chance de acertar pedras nos equipamentos Ficheiro: char_item.cpp Procurar por: if (number(1, 100) <= 30) Sendo que <= 30 é a chance de acertar. Remover a taxa de 3% ao vender itens em qualquer NPC Ficheiro: shop.cpp & shop manager.cpp Procurar por: if (r_item.price <= 0) (Basta retirarem o " = ") Adicionar 6/7 extras aos trajes Ficheiro: char_item.cpp Procurar por: if (item2->GetAttributeSetIndex() == -1) Depois disso, adicionar: if (item2->GetType() == ITEM_COSTUME) //6-7 correcao bonus { return false; } Alterar nível máximo Ficheiro: lenght.h & constant.cpp Procurar por: PLAYER_EXP_TABLE_MAX = 105, PLAYER_MAX_LEVEL_CONST = 105, Sendo que 105 é o nível máximo. Depois disto, procurem pelo ficheiro constant.cpp, para editar-mos as tabelas de exp. Procurem por: const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] = Por baixo, adicionem: const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] = const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] = Guiem-se pelas outras linhas que irão entender como adicionar as novas. Players não poderem largar yang para o chão ( Não testado ) Ficheiro: char_item.cpp Procurem por: bool CHARACTER::DropGold(int gold) E substituam por: bool CHARACTER::DropGold(int gold) { return false; } Atenção: Não testei este último mas à partida deverá funcionar. Talvez vá adicionando mais conteúdo ao tópico ao longo do tempo.
    1 point
  28. Tutorial não estruturado, será necessário comparar os ficheiros.Caso alguém queira fazer o tutorial, todos agradecemos.https://www.youtube.com/watch?v=mvm7rAxc7DwInformações: Enchant Item+.7z
    1 point
  29. 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
  30. Boas. Tenho andado a aprender um pouco de c++, ainda não sei relativamente nada. Tenho andado a aprender a efectuar a leitura do código, para que se torne mais fácil aprender. Logo, este tutorial não será grande coisa, ou coisa de grande utilidade. Mas com certeza poderá ser útil para alguém. Como alguns não devem saber vou explicar o que me refiro aos Rodares Verdes. Está seguinte imagem que se segue é uma fotografia dos rodares verdes. Como alguns mesmo depois de verem está imagem, não iram saber qual a funcionalidade dos rodares verdes. Então novamente vou deixar a seguinte imagem explicar qual a sua funcionalidade. O que vos vou ensinar hoje, é como alterar, o nível limitado da sua utilização. Então vamos começar. 1 Vamos ao game/char_item.cpp Vamos procurar pela seguinte linha: if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40) O aspecto do que iram encontrar será algo semelhante a isso: { // ¢¯¡þAc¡Æ©¡ ¨¡?¨ùoA©ø¢¬¢ç // Ay¢¥e¡¤I ¢¯¡þAc¡Æ¢® A©¬¡Æ¢® ¨úE¥ìE¡ÆA¢Òo CI¢¯¨Ï CI¥ìa AU¥ìuCO. if (item->GetVnum() == 71151 || item->GetVnum() == 76023) { if ((item2->GetType() == ITEM_WEAPON) || (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY)) { bool bCanUse = true; for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i) { if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40) { bCanUse = false; break; } } if (false == bCanUse) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Au¢¯e ¡¤©ö¨¬¡×¨¬¢¬¢¥U ©øo¨ú¨¡ ¡íc¢¯eAI ¨¬O¡Æ¢®¢¥ECO¢¥I¢¥U.")); break; } } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("©ö¡ì¡¾a¢¯I ¡Æ¨Ï¢¯E¢¯¢®¢¬¢¬ ¡íc¢¯e ¡Æ¢®¢¥ECO¢¥I¢¥U.")); break; } } item2->ChangeAttribute(); } Vamos alterar o valor 40 para o valor limitado que queremos. Exemplo 105 Irá ficar do seguinte modo: if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 105) Em caso de duvidas, o resultado final será algo semelhante a isto: { // ¢¯¡þAc¡Æ©¡ ¨¡?¨ùoA©ø¢¬¢ç // Ay¢¥e¡¤I ¢¯¡þAc¡Æ¢® A©¬¡Æ¢® ¨úE¥ìE¡ÆA¢Òo CI¢¯¨Ï CI¥ìa AU¥ìuCO. if (item->GetVnum() == 71151 || item->GetVnum() == 76023) { if ((item2->GetType() == ITEM_WEAPON) || (item2->GetType() == ITEM_ARMOR && item2->GetSubType() == ARMOR_BODY)) { bool bCanUse = true; for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i) { if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 105) { bCanUse = false; break; } } if (false == bCanUse) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Au¢¯e ¡¤©ö¨¬¡×¨¬¢¬¢¥U ©øo¨ú¨¡ ¡íc¢¯eAI ¨¬O¡Æ¢®¢¥ECO¢¥I¢¥U.")); break; } } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("©ö¡ì¡¾a¢¯I ¡Æ¨Ï¢¯E¢¯¢®¢¬¢¬ ¡íc¢¯e ¡Æ¢®¢¥ECO¢¥I¢¥U.")); break; } } item2->ChangeAttribute(); } Feito isso, podem compilar a source, e o limite de uso dos rodares verdes em armas ou armaduras, já estará alterada para o valor a qual vocês escolheram. Mesmo passos terão de repetir caso queira também mudar o nível limitado dos "adicionais". (O nome, do item não é da forma que disse, mas poderão ver a seguinte imagem, e saberão sobre o item da qual eu me refiro.) No mesmo ficheiro: game/char_item.cpp Procuram pela seguinte linha if (item2->GetLimitType(i) == LIMIT_LEVEL && item2->GetLimitValue(i) > 40) e executam os mesmos passos referidos, para alterar o nível limitado dos rodares. Cumprimentos Dynamic Things
    1 point
  31. Boas pessoal venho aqui deixar um ficheiro .rar que contem dentro um tutorial de como implementar 6 inventarios. Virustotal: https://www.virustotal.com/#/file-analysis/ZWZiYjkzMWQyOTE2NTE2YTBhYjk5NjU3MTQzMjdlOTM6MTUxNDk0OTU4Mg== 6 inventarios.rar
    0 points
×
×
  • Create New...