Ir para conteúdo
🥳 [EVENTO ESPECIAL] 20 Anos de WebCheats - Conte sua história. ×
🥇 [Exclusivo] Seja um Membro VIP EXTREME! ×

Todas Atividades

Atualizada automaticamente

  1. Recentemente
  2. E aí, comunidade! Meu nome é C4rlin e hoje venho compartilhar com vocês uma ferramenta que desenvolvi com muito esforço para a nossa comunidade de Gunbound: o GBot-Sage. Se você, como eu, adora a estratégia do Gunbound mas às vezes se frustra com cálculos complexos de vento e ângulo sob a pressão do tempo, esta ferramenta é para você. O que é o GBot-Sage? É um assistente de mira externo, um "copiloto" sofisticado que roda ao lado do seu jogo. Ele faz a matemática pesada para que você possa focar na partida. O objetivo é simples: dar a você a informação precisa para acertar tiros incríveis com muito mais frequência e consistência. Como Funciona? (Total Transparência) Para que todos se sintam seguros, faço questão de explicar o funcionamento: 100% Externo e Seguro: O GBot-Sage NÃO lê a memória do jogo, não injeta DLLs e não interage com os processos do Gunbound. Ele funciona como uma calculadora avançada que usa informações que você mesmo fornece. O risco para sua conta é zero. Calibração por Coordenadas: Usando a tecla de atalho F6, você simplesmente mostra ao programa onde você e seu alvo estão na tela. Física Comprovada: Com base na distância e no vento (que você informa visualmente), a ferramenta aplica uma fórmula de balística clássica e eficiente, adaptada para a física do Gunbound, para calcular a trajetória perfeita. Plano de Tiro Claro: O resultado é um guia passo a passo, impossível de não entender, mostrando o ângulo e a força exatos para o seu tiro. Principais Funcionalidades (Features): Interface Gráfica Limpa: Um design moderno que fica sobre a tela do jogo sem atrapalhar. Calibração Rápida com Tecla de Atalho: Chega de "cliques cegos". Posicione o mouse e aperte F6 para uma calibração instantânea. Seletor de Vento Visual: Clique na direção do vento em um círculo intuitivo. Guia de Tiro Passo a Passo: O resultado não é apenas um número. É um guia completo que te diz exatamente o que fazer. Como Usar: Execute o GBot-Sage.exe (recomendo "Executar como administrador"). No seu turno, clique no Botão 1 (Calibrar Minha Posição), mova o mouse sobre seu personagem e pressione F6. Clique no Botão 2 (Calibrar Posição do Inimigo), mova o mouse sobre o alvo e pressione F6. No seletor visual, clique na direção do vento e digite a força. Clique em "GERAR PLANO DE TIRO". Siga as instruções na tela e bom jogo! Verificação de Segurança (Arquivo Limpo) A segurança é prioridade máxima. Para provar que a ferramenta é 100% limpa, o arquivo foi analisado pelo Jotti's Malware Scan, um dos mais respeitados verificadores online. O relatório completo, mostrando o resultado de múltiplos antivírus, pode ser acessado publicamente no link abaixo. Relatório Completo da Análise de Vírus: [Hidden Content] Download: GBot-Sage 4.0 - Link Oficial: [Hidden Content] Créditos e Inspiração: Gostaria de deixar um agradecimento especial ao usuário bill3002. A ideia para este projeto nasceu após eu conhecer e me inspirar no trabalho dele com o GunBound Precision HUD. Os devidos créditos a quem me deu o ponto de partida! Todo o desenvolvimento e código do GBot-Sage, no entanto, foram criados por mim. Estarei ativo aqui no tópico para tirar dúvidas, ouvir sugestões e ajudar com qualquer problema que possa surgir. Espero que gostem e que a ferramenta ajude vocês a se divertirem ainda mais! Abraço, C4rlin OBS: ALGUM ADM MOVE PRO TOPICO CERTO, NAO CONSEGUI POSTAR LA !
  3. Hoje
  4. Meus manos, esse servidor ta todo falido. ADM n sabe mexer na erva da cura... balanceamento das classes um l*xo, tem bug pra todo lado... os devs se formaram embaixo da ponte daq de casa. Nenhum desses devs ai atuaram em porra nenhuma aqui, é so entrar e vê, servidor + bugado que esse so os que abriram a 1 dia.
  5. Boa noite, peço que ajuste o site do servidor e adicione o Scan do WYD.exe ao tópico, conforme as diretrizes da área.
  6. Oque aprontou para pegar o ban HWID? Meu jogo favorito desde meados de 2008 foi WYD, e esse vício amaldiçoado me acompanhou até 2019, então desde 2019 pra cá eu parei de jogar e venho criando meu próprio servidor como passa tempo.
  7. hahaha, uai, não pensei em fazer um cliente não, mas dependendo, poderia fazer. Tenho um cliente 7.54 revisado ( sem nenhum arquivo extra, só o que é estritamente necessário para rodar o jogo ). Tenho que me manter afastado do WYD, para me puxar de volta é um pulo rsrs ( um remake é válido, ainda não desisti do projeto inicial, falta grana, coisa de 3-4k por mês já paga o desenvolvimento ) @Sc2Allin , basicamente, usei o eWYD para extrair todas as texturas, usei o XN Converter para ler todos os dds e trocar o canal alpha.
  8. Carai ficou top heim... Poderia compartilha como foi feito? Em relação a refinação da capa agora no WYD só monstra o Brilho com + de 5000 kills
  9. Essa, sem dúvida é a versão mais linda dos effects, sinceramente! @987987987 Por favor, lance esse client completo hahahaha ♥
  10. Ontem
  11. Hoje em dia não jogo muito, mas sempre acabo jogando GTA San Andreas ou Bully. Às vezes só pra pancadaria e outras fazendo missão.
  12. A info de relogar diz muito. Debuga o cliente focando no pacote 364. Cria um mob afastado, em um lugar sem movimento, casino por exemplo ( x/y 3000 e poucos ) Fica do lado do mob e veja se em algum momento ele fica bugado.
  13. Acho que tem algo errado com o link para o site.
  14. sim amigo sim, pode ate verificar pelo anydesk tambem, me add no discord, jj.trancoso
  15. O básico que é os drivers de video estarem 100% atualizados, validou?
  16. Instalou as dependências do Visual Redistributable? Se não me engano é de 2005 a 2022
  17. nao nao, é um pc que nunca teve point blank, eu montei ele recentemente e respondendo sua pergunta de forma mais objetiva, ja foi feito todos e quaisquer metodos para tentar entrar e nada é efetivo
  18. Vamos lá do início, o PB sempre funcionou né? Fez formatação e nada adiantou Tentou os procedimentos encontrados na internet e indicados pelo chat gpt, certo? Conferiu configuração de BIOS e configuração de PCI Não utiliza nenhum anti vírus e mesmo assim persiste o problema. Tentou baixar drivers mais antigos antes da atualização atual da placa de vídeo? Já instalou e reinstalou o jogo de várias maneiras e ainda sim persiste, correto? Se eu esqueci algo menciona aqui, para que todos podemos buscar uma solução permanente.
  19. Então, esta acontecendo no jogo inteiro até onde eu testei. Tô usando a base do TNW. Está até difícil de entender o que acontece pra eu tentar debugar. Mas o que eu percebo é que depois de um tempo o mob é substituido por um tigre ou por um urso, como se fosse uma evoc de BM. As vezes também o mob fica invisivel. Eu consigo matar ele apenas com o PK ativo. E o que parece mais estranho e que ao relogar volta tudo ao normal. Mesmo o servidor ainda ligado.
  20. infelizmente ja fiz todos esses passos, inclusive voltei para o windows 10 e realizei os passos a passos todos em seguida, sem sucesso :/
  21. Vamos lá O que achei sobre este erro, foi igual ao @'DeadMan, muita coisa de outros paises, nenhuma solução pratica, ocorrencias raras de 2017 a 2023 e agora voce em 2025. Esse erro está relacionado ao carregamento de arquivos de textura virtual (VT) do motor gráfico do Point Blank O código 87 do Windows significa “Parâmetro incorreto”, ou seja, o jogo está tentando ler um arquivo de forma errada, corrompida ou sem permissão. Soluções Recomendadas (baseado nesse erro específico) ✅ 1. Apague os arquivos temporários do VT Vá até a pasta de instalação do Point Blank (ex: C:\Zepetto\PointBlank) Procure pela pasta VT ou VirtualTexture (pode variar) Apague todos os arquivos dentro dela Rode o PBLauncher.exe para que ele baixe os arquivos novamente ✅ 2. Execute o jogo como administrador Botão direito no PBLauncher.exe e no PointBlank.exe → Executar como administrador ✅ 3. Desative temporariamente o antivírus/defender O antivírus pode estar corrompendo ou bloqueando arquivos .vt (Virtual Texture) Adicione a pasta do jogo às exceções do seu antivírus ✅ 4. Verifique se o Windows está atualizado Vá em Configurações > Atualização e Segurança > Windows Update e veja se há pendências Caso ainda não funcionar: 5. Reinstale o jogo após ter feito essas atualizaçoes em seu antivirus/windows defender. Apague manualmente a pasta PointBlank em C:\Zepetto (ou onde estiver) Baixe a versão mais recente do site oficial Instale e execute novamente como Administrador
  22. Teve alguma mudança de versão do jogo, para cima ou baixo? Acontece em todo o jogo ou só em algumas posições? Isso me parece falha no pacote 364, algum byte indo na posição errada, talvez o arquivo do NPC está corrompido, por isso a pergunta se ocorro no jogo todo. O HP zerado pode ser que o HP ultrapassou o limite de valor, que depende da versão, se vc reduzir para algo como 100, e ainda sim apresentar o problema, é algo com o arquivo ou alguma edição mal feita no 364
  23. Baixe o DDU e desinstale completamente os drivers da placa de vídeo, logo depois faça uma inicialização limpa do Windows e vá ao site da NVIDIA e baixe os drivers mais atualizados da placa de vídeo.
  24. Boa tarde, Alguem que possui o código de composição celestial para o RequestOdin e puder compartilhar eu ficaria grato o código do requestodin que eu gostaria de completar: bool CUser::RequestOdin(PacketHeader* Header) { pCompor* p = (pCompor*)Header; STRUCT_MOB* player = &pMob[clientId].Mobs.Player; for (int i = 0; i < 7; i++) { if (p->slot[i] < 0 || p->slot[i] >= 60) { Log(clientId, LOG_HACK, "[HACK] Banido por enviar índice invalido - NPC Lindy - %d", p->slot[i]); Log(SERVER_SIDE, LOG_HACK, "[HACK] %s - Banido por enviar índice invalido - NPC Lindy - %d", player->Name, p->slot[i]); SendCarry(clientId); return true; } if (memcmp(&player->Inventory[p->slot[i]], &p->items[i], 8) != 0) { Log(clientId, LOG_HACK, "Banido por enviar item inexistente - NPC Lindy - %d", p->items[i].Index); Log(SERVER_SIDE, LOG_HACK, "%s - Banido por enviar item inexistente - NPC Lindy - %d", player->Name, p->items[i].Index); SendCarry(clientId); return true; } for (int y = 0; y < 7; y++) { if (y == i) continue; if (p->slot[i] == p->slot[y]) { Log(clientId, LOG_HACK, "Banido por enviar item com mesmo slotId - NPC Lindy - %d", p->items[i].Index); Log(SERVER_SIDE, LOG_HACK, "%s - Banido por enviar item com mesmo slotId - NPC Lindy- %d", player->Name, p->items[i].Index); CloseUser(clientId); return true; } } } for (int i = 0; i < 7; i++) { if (p->slot[i] == -1) { Log(clientId, LOG_COMP, "Alq. Odin - %d - Sem item", i); continue; } Log(clientId, LOG_COMP, "Alq. Odin - %d - %s %s - %hhd", i, ItemList[p->items[i].Index].Name, p->items[i].toString().c_str(), p->slot[i]); } // Fecha o trade caso esteja aberto if (Trade.ClientId != 0) { RemoveTrade(Trade.ClientId); AddCrackError(clientId, 1, CRACK_TRADE_NOTEMPTY); } // Fecha o inventario SendSignalParm(clientId, SERVER_SIDE, 0x3A7, 2); if ((p->items[0].Index == 4043 && p->items[1].Index == 4043) || (p->items[0].Index == 413 && GetItemAmount(&p->items[0]) == 10 && p->items[1].Index == 413 && GetItemAmount(&p->items[1]) == 10)) { INT32 sanc = GetItemSanc(&p->items[2]); if (sanc >= 15) //Limite de refinação = 13 { SendClientMessage(clientId, g_pLanguageString[_NN_Cant_Refine_More]); return true; } if (sanc <= 10) { SendClientMessage(clientId, g_pLanguageString[_NN_Minimum_AlqOdin_Ref_Is_10]); return true; } int mobType = GetEffectValueByIndex(p->items[2].Index, EF_MOBTYPE); if (mobType == 3) { SendClientMessage(clientId, g_pLanguageString[_NN_Cant_Refine_With_Me]); return true; } int goldRequired = 1000000000; if(pMob[clientId].Mobs.Player.Gold < goldRequired) { SendClientMessage(clientId, "Gold insuficiente"); return true; } bool canBreak = true; bool extracao = false; int rate = 0; if (sanc == 11) rate = 4; else if (sanc == 12) rate = 3; else if (sanc == 13) rate = 2; else rate = 1; if (p->items[0].Index == 4043 && p->items[1].Index == 4043) { extracao = true; rate += 2; } if (p->items[2].Index >= 3500 && p->items[2].Index <= 3507) { extracao = false; canBreak = false; } if (ItemList[p->items[2].Index].Pos == 128) { extracao = false; canBreak = false; } bool secrets{ false }; for (int i = 0; i < 4; i++) { if (p->items[3 + i].Index >= 5334 && p->items[3 + i].Index <= 5337) { rate += 1; secrets = true; continue; } if (p->items[3 + i].Index != 3338) continue; if (secrets) { SendClientMessage(clientId, g_pLanguageString[_NN_IncorrectComp]); return true; } rate += ReturnChance(&p->items[3 + i]); int tmpSanc = GetItemSanc(&p->items[3 + i]); if (tmpSanc != 0) { canBreak = false; extracao = false; } } int pos = ItemList[p->items[2].Index].Pos; if (pos > 192) { SendClientMessage(clientId, g_pLanguageString[_NN_CantRefine]); return true; } if (rate > 100) //padrão : 65 { SendClientMessage(clientId, g_pLanguageString[_NN_Bad_Network_Packets]); return true; } if (rate < 0) rate = 4; pMob[clientId].Mobs.Player.Gold -= goldRequired; SendSignalParm(clientId, clientId, 0x3AF, player->Gold); STRUCT_ITEM* item = player->Inventory; int _rand = Rand() % 50; if (_rand <= rate) { // Sucesso na composição for (int i = 0; i < 3; i++) { if (item[p->slot[2]].Effect[i].Index == 43 || (item[p->slot[2]].Effect[i].Index >= 116 && item[p->slot[2]].Effect[i].Index <= 125)) { item[p->slot[2]].Effect[i].Value += 4; break; } } char tmp[128]; sprintf_s(tmp, g_pLanguageString[_NN_Odin_CombineSucceed], player->Name, sanc + 1); SendServerNotice(tmp); Log(clientId, LOG_COMP, "Alquimista Odin - Refinado com sucesso %s para %d (%d/%d)", ItemList[item[p->slot[2]].Index].Name, sanc + 1, _rand, rate); LogPlayer(clientId, "Refinado com sucesso %s para +%d", ItemList[item[p->slot[2]].Index].Name, sanc + 1); } else { SendServerNotice("%s falhou a refinação de %s para %d", player->Name, ItemList[item[p->slot[2]].Index].Name, sanc + 1); if (canBreak && !(_rand % 5)) { // Se pode quebrar, vemos a chance para tal acontecer if (extracao) { int value = 0; for (int i = 0; i < 3; i++) { if (item[p->slot[2]].Effect[i].Index == 43 || (item[p->slot[2]].Effect[i].Index >= 116 && item[p->slot[2]].Effect[i].Index <= 125)) { value = GetEffectValueByIndex(item[p->slot[2]].Index, EF_UNKNOW1); int mobtype = GetEffectValueByIndex(item[p->slot[2]].Index, EF_MOBTYPE); if (value <= 5 && mobtype == 0) { // Itens <= [E] e é item mortal value = value; } else { if (value == 6) { if (sanc <= 9 && mobtype == 1) value = 10; else if (mobtype == 1 && sanc >= 10) // Item arch e +9 ou superior value = 11; else value = 6; // Item apenas anct } else if (mobtype == 1) // Item arch não anct { if (sanc >= 10) value = 9; else value = 8; } else NULL; } // Calculo realizado - Item entregue item[p->slot[2]].Effect[i].Index = 87; item[p->slot[2]].Effect[i].Value = value; break; } } for (int i = 0; i < 3; i++) { if (item[p->slot[2]].Effect[i].Index == 43 || (item[p->slot[2]].Effect[i].Index >= 116 && item[p->slot[2]].Effect[i].Index <= 125)) continue; if (item[p->slot[2]].Effect[i].Index == 0) continue; if (item[p->slot[2]].Effect[i].Index == 87) continue; if (ItemList[item[p->slot[2]].Index].Pos > 32) continue; int value = GetEffectValueByIndex(item[p->slot[2]].Index, item[p->slot[2]].Effect[i].Index); item[p->slot[2]].Effect[i].Value += value; } item[p->slot[2]].Index = GetItemType(item[p->slot[2]].Index); Log(clientId, LOG_COMP, "Alquimista Odin - Extração criada. Tipo: %d", value); LogPlayer(clientId, "Extração criada no Alquimista Odin com a falha na composição de %s para +%d", ItemList[item[p->slot[2]].Index].Name, sanc + 1); } else { memset(&item[p->slot[2]], 0, sizeof STRUCT_ITEM); Log(clientId, LOG_COMP, "Alquimista Odin - Item quebrado, malz fera. %d/%d", _rand, rate); } } else { // Falhou apenas, refinação volta for (int i = 0; i < 3; i++) { if (item[p->slot[2]].Effect[i].Index == 43 || (item[p->slot[2]].Effect[i].Index >= 116 && item[p->slot[2]].Effect[i].Index <= 125)) { item[p->slot[2]].Effect[i].Value -= 4; break; } } LogPlayer(clientId, "Falha na composição de %s para +%d", ItemList[item[p->slot[2]].Index].Name, sanc + 1); Log(clientId, LOG_COMP, "Alquimista Odin - Refinado com falha %s para %d. %d/%d", ItemList[item[p->slot[2]].Index].Name, sanc + 1, _rand, rate); } } for (int i = 0; i < 7; i++) { if (i == 2) { SendItem(clientId, SlotType::Inv, p->slot[i], &item[p->slot[i]]); continue; } memset(&item[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &item[p->slot[i]]); } SaveUser(clientId, 0); } else if (p->items[0].Index == 4127 && p->items[1].Index == 4127 && p->items[2].Index == 5135 && p->items[3].Index == 5113 && p->items[4].Index == 5129 && p->items[5].Index == 5112 && p->items[6].Index == 5110) { if (pMob[clientId].Mobs.Player.Equip[0].EFV2 != CELESTIAL || player->bStatus.Level != 39 || !pMob[clientId].Mobs.Info.LvBlocked || pMob[clientId].Mobs.Info.Unlock39) { SendClientMessage(clientId, g_pLanguageString[_NN_IncorrectComp]); return true; } // Remove os itens, independente se deu certo ou não for (int i = 0; i < 7; i++) { memset(&player->Inventory[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &player->Inventory[p->slot[i]]); } INT32 _rand = Rand() % 100; if (_rand <= 95) { pMob[clientId].Mobs.Info.LvBlocked = false; pMob[clientId].Mobs.Info.Unlock39 = true; SendClientMessage(clientId, g_pLanguageString[_NN_Success_Comp]); Log(clientId, LOG_COMP, "Composição de desbloqueio 40 efetuada com SUCESSO"); } else { SendClientMessage(clientId, g_pLanguageString[_NN_CombineFailed]); Log(clientId, LOG_COMP, "Composição de desbloqueio 40 fetuada com FALHA"); } SaveUser(clientId, 0); } else if (p->items[0].Index == 5125 && p->items[1].Index == 5115 && p->items[2].Index == 5111 && p->items[3].Index == 5112 && p->items[4].Index == 5120 && p->items[5].Index == 5128 && p->items[6].Index == 5119) { int _rand = Rand() % 100; // Remove os itens, independente se deu certo ou não for (int i = 0; i < 7; i++) { memset(&player->Inventory[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &player->Inventory[p->slot[i]]); } SendClientMessage(clientId, g_pLanguageString[_NN_Success_Comp]); // Seta o item no inventario player->Inventory[p->slot[0]].Index = 3020; // Atualiza o inventario SendItem(clientId, SlotType::Inv, p->slot[0], &player->Inventory[p->slot[0]]); Log(clientId, LOG_INGAME, "Sucesso na composição de Pedra da Fúria"); LogPlayer(clientId, "Sucesso na composição da pedra da Fúria"); SaveUser(clientId, 0); } else if (p->items[0].Index == 4127 && p->items[1].Index == 4127 && p->items[2].Index == 5135 && p->items[3].Index == 413 && p->items[4].Index == 413 && p->items[5].Index == 413 && p->items[6].Index == 413) { if (pMob[clientId].Mobs.Player.Equip[0].EFV2 < CELESTIAL) { SendClientMessage(clientId, g_pLanguageString[_NN_IncorrectComp]); return true; } INT32 sanc = GetItemSanc(&player->Equip[15]); if (sanc >= 9) { SendClientMessage(clientId, g_pLanguageString[_NN_Cant_Refine_More]); return true; } // Remove os itens, independente se deu certo ou não for (int i = 0; i < 7; i++) { memset(&player->Inventory[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &player->Inventory[p->slot[i]]); } SetItemSanc(&player->Equip[15], sanc + 1, 0); SendClientMessage(clientId, g_pLanguageString[_NN_Success_Comp]); SendItem(clientId, SlotType::Equip, 15, &player->Equip[15]); Log(clientId, LOG_COMP, "Refinação da capa obtida com sucesso: %d - Capa: %d. Ev: %d", sanc + 1, player->Equip[15].Index, pMob[clientId].Mobs.Player.Equip[0].EFV2); pMob[clientId].GetCurrentScore(clientId); SendScore(clientId); SaveUser(clientId, 0); } else if (p->items[0].Index == 413 && p->items[1].Index == 413 && p->items[2].Index == 413 && p->items[3].Index == 413 && p->items[4].Index == 413 && p->items[5].Index == 413 && p->items[6].Index == 413) { // Remove os itens, independente se deu certo ou não for (int i = 0; i < 7; i++) { memset(&player->Inventory[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &player->Inventory[p->slot[i]]); } // Seta o item no inventario player->Inventory[p->slot[0]].Index = 5134; // Atualiza o inventario SendItem(clientId, SlotType::Inv, p->slot[0], &player->Inventory[p->slot[0]]); SendClientMessage(clientId, g_pLanguageString[_NN_Success_Comp]); Log(clientId, LOG_INGAME, "Sucesso na composição de Pista de Runas"); LogPlayer(clientId, "Sucesso na composição da Pista de Runas"); SaveUser(clientId, 0); return true; } else if (p->items[0].Index == 674) { // Composição da PEdra de Kersef INT32 nail = GetInventoryAmount(clientId, 674); // 5x unha de Kefra INT32 heart = GetInventoryAmount(clientId, 675); // 2x Coração de Sombra Negra INT32 hair = GetInventoryAmount(clientId, 676); // 3x Cabelo do Beriel Amald INT32 heartBer = GetInventoryAmount(clientId, 677); // 01x Coração do Beriel INT32 seal = GetInventoryAmount(clientId, 4127); // 2x Pergaminho Selado INT32 leaf = GetInventoryAmount(clientId, 770); // 5x Folha de Mandragora if (nail < 5 || heart < 2 || hair < 3 || heartBer < 1 || seal < 2 || leaf < 5) { SendClientMessage(clientId, g_pLanguageString[_NN_IncorrectComp]); return true; } if (pMob[clientId].Mobs.Player.Gold < 100000000) { SendClientMessage(clientId, "Gold insuficiente!"); return true; } INT32 slotId = GetFirstSlot(clientId, 0); if (slotId == -1) return false; pMob[clientId].Mobs.Player.Gold -= 100000000; INT32 _rand = Rand() % 100; if (_rand >= 80) { INT32 totalRemoved = 0; while (totalRemoved != 5) { INT32 itemId = 0; _rand = Rand() % 6; if (_rand == 0) itemId = 674; else if (_rand == 1) itemId = 675; else if (_rand == 2) itemId = 676; else if (_rand == 3) itemId = 677; else if (_rand == 4) itemId = 4127; else if (_rand == 5) itemId = 770; totalRemoved++; RemoveAmount(clientId, itemId, 1); Log(clientId, LOG_INGAME, "Removido %s (%d) por falha na composição", ItemList[itemId].Name); } SendClientMessage(clientId, g_pLanguageString[_NN_CombineFailed]); Log(clientId, LOG_INGAME, "Falha na composição da Pedra de Kersef lv0. %d/80", _rand); return true; } // removetodos os itens RemoveAmount(clientId, 674, 5); RemoveAmount(clientId, 675, 2); RemoveAmount(clientId, 676, 3); RemoveAmount(clientId, 677, 1); RemoveAmount(clientId, 4127, 2); RemoveAmount(clientId, 770, 5); memset(&pMob[clientId].Mobs.Player.Inventory[slotId], 0, sizeof STRUCT_ITEM); pMob[clientId].Mobs.Player.Inventory[slotId].Index = 4552; SendItem(clientId, SlotType::Inv, slotId, &pMob[clientId].Mobs.Player.Inventory[slotId]); SendClientMessage(clientId, g_pLanguageString[_NN_Success_Comp]); Log(clientId, LOG_INGAME, "Composto com sucesso Pedra de Kersef (lv0)"); return true; } else { bool any = false; constexpr int secretStone[4][7] = { {5126,5127,5121,5114,5125,5111,5118}, {5131,5113,5115,5116,5125,5112,5114}, {5110,5124,5117,5129,5114,5125,5128}, {5122,5119,5132,5120,5130,5133,5123} }; for (int y = 0; y < 4; y++) { if (p->items[0].Index == secretStone[y][0] && p->items[1].Index == secretStone[y][1] && p->items[2].Index == secretStone[y][2] && p->items[3].Index == secretStone[y][3] && p->items[4].Index == secretStone[y][4] && p->items[5].Index == secretStone[y][5] && p->items[6].Index == secretStone[y][6]) { if (player->Gold < 2000000) { SendClientMessage(clientId, "São necessarios 2 milhões de godl"); return true; } // Remove os itens, independente se deu certo ou não for (int i = 0; i < 7; i++) { memset(&player->Inventory[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &player->Inventory[p->slot[i]]); } // Retira o gold player->Gold -= 2000000; // Atualiza o gold SendSignalParm(clientId, clientId, 0x3AF, player->Gold); any = true; int rand = Rand() % 101; if (rand > 95) { SendClientMessage(clientId, "Falha na composição"); Log(clientId, LOG_INGAME, "Combinação falhou de secreta. A secreta que deveria vir era: %s", ItemList[5334 + y].Name); SendNotice(".%s falhou na composiçaõ de %s", pMob[clientId].Mobs.Player.Name, ItemList[5334 + y].Name); } else { // Seta a Pedra Secreta player->Inventory[p->slot[0]].Index = (5334 + y); SendItem(clientId, SlotType::Inv, p->slot[0], &player->Inventory[p->slot[0]]); // Envia a mensagem de sucesso SendClientMessage(clientId, "Composição concluída"); Log(clientId, LOG_INGAME, "Composto com sucesso %s. %d/95", ItemList[5334 + y].Name, rand); LogPlayer(clientId, "Composto com sucesso %s", ItemList[5334 + y].Name); SendNotice(".%s compôs com sucesso a %s", pMob[clientId].Mobs.Player.Name, ItemList[5334 + y].Name); } SaveUser(clientId, 0); return true; } } bool allIsRune = true; for (int i = 0; i < 7; i++) { if (p->items[i].Index < 5110 || p->items[i].Index > 5133) allIsRune = false; } // Tentando gerar uma Secreta aleatoriamente if (allIsRune) { if (player->Gold < 2000000) { SendClientMessage(clientId, "São necessarios 2 milhões de godl"); return true; } // Remove os itens, independente se deu certo ou não for (int i = 0; i < 7; i++) { memset(&player->Inventory[p->slot[i]], 0, sizeof STRUCT_ITEM); SendItem(clientId, SlotType::Inv, p->slot[i], &player->Inventory[p->slot[i]]); } // Retira o gold player->Gold -= 2000000; // Atualiza o gold SendSignalParm(clientId, clientId, 0x3AF, player->Gold); int rand = Rand() % 101; if (rand <= 5) { int secretId = (5334 + (Rand() % 4)); player->Inventory[p->slot[0]].Index = secretId; SendItem(clientId, SlotType::Inv, p->slot[0], &player->Inventory[p->slot[0]]); // Envia a mensagem de sucesso SendClientMessage(clientId, "Composição concluída"); Log(clientId, LOG_INGAME, "Composto com sucesso %s usando Runas aleatórias", ItemList[secretId].Name); LogPlayer(clientId, "Composto com sucesso %s usando Runas aleatórias", ItemList[secretId].Name); SendNotice(".%s compôs com sucesso a %s", pMob[clientId].Mobs.Player.Name, ItemList[secretId].Name); } else { SendClientMessage(clientId, "Houve uma falha na composição do item"); Log(clientId, LOG_INGAME, "Combinação falhou de secreta usando Runas aleatórias"); SendNotice(".%s falhou na composição da Pedra Secreta", pMob[clientId].Mobs.Player.Name); } return true; } if (!any) SendClientMessage(clientId, g_pLanguageString[_NN_IncorrectComp]); } return true; }
  1. Mais Resultados
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.