Jump to content

Dynamic Things

Member
  • Content count

    316
  • Joined

  • Last visited

  • Days Won

    33

Dynamic Things last won the day on July 28

Dynamic Things had the most liked content!

Community Reputation

697 Excellent

About Dynamic Things

  • Rank
    Unknow

Converted

  • Skype
    DynamicThings

Recent Profile Visitors

1651 profile views
  1. Era para o ter publicado aqui antes mas não tem havido muito tempo, não venho trazer nada de novo para alguns. Download Creditos: Evilsystem
  2. Já foi publicado a algum tempo, a tempos começei a trabalhar no código disso, mas no entretanto dropei a meio porque arranjei algo melhor, no entretanto se alguém quiser o código posso o disponibilizar. Imagens Preview: Download
  3. Visto que estão a tentar vender isso... Deixo ai Re-Up para quem quiser. É apenas o design (PSD). Download
  4. Deixo ai para download, quem quiser dar utilidade, no download contém as armas para demonstração convertidos para a versão do granny 2.9.12.0, as texturas e os projetos de cada arma em formato FBX. Atenção que não é algo para se sacar meter no cliente e usar, pois os ficheiros de demonstração deixados não funcionaram corretamente. É necessário a correção da posição das armas. (algo relativamente fácil de se fazer, mas requer alguma pratica e tempo ).. [Hidden Content] Preview
  5. When you index the directory zone you are already indexing all subdirectories that the folder contain, you can do it like the following example CEterPackManager::Instance().RegisterPack("pack/zone", "*");
  6. Link para Re-Upload! Mega.nz password mantém a que foi adicionado anteriormente ao tópico.
  7. View File Visual Studio 2015 (Community + Professional + Enterprise) Microsoft Visual Studio é um ambiente de desenvolvimento integrado (IDE) da Microsoft para desenvolvimento de software especialmente dedicado ao .NET Framework e às linguagens Visual Basic (VB), C, C++, C# (C Sharp) e F# (F Sharp). Também é um produto de desenvolvimento na área web, usando a plataforma do ASP.NET, como websites, aplicativos web, serviços web e aplicativos móveis. As linguagens com maior frequência nessa plataforma são: VB.NET (Visual Basic.Net) e o C♯ (lê-se C Sharp). 1 Link - Community 2 Link - Professional 3 Link - Enterprise Key para o versão profissional: HMGNV-WCYXV-X7G9W-YCX63-B98R2 Key para o versão Enterprise: 2XNFG-KFHR8-QV3CP-3W6HT-683CH Submitter Dynamic Things Submitted 01/28/19 Category Software  
  8. Version 2015

    17 downloads

    Microsoft Visual Studio é um ambiente de desenvolvimento integrado (IDE) da Microsoft para desenvolvimento de software especialmente dedicado ao .NET Framework e às linguagens Visual Basic (VB), C, C++, C# (C Sharp) e F# (F Sharp). Também é um produto de desenvolvimento na área web, usando a plataforma do ASP.NET, como websites, aplicativos web, serviços web e aplicativos móveis. As linguagens com maior frequência nessa plataforma são: VB.NET (Visual Basic.Net) e o C♯ (lê-se C Sharp). 1 Link - Community 2 Link - Professional 3 Link - Enterprise Key para o versão profissional: HMGNV-WCYXV-X7G9W-YCX63-B98R2 Key para o versão Enterprise: 2XNFG-KFHR8-QV3CP-3W6HT-683CH
  9. venho deixar aqui mais um tópico, desta vez vai ser como bloquear automaticamente uma lista de ips utilizando o cron e o php. Para começar vamos podem copiar o seguinte: <?php // Lista de Blacklist IP's $blacklist = "[Hidden Content]"; // .htaccess apache file $htac = rtrim($_SERVER['DOCUMENT_ROOT'], "/ ")."/.htaccess"; // Separator $line = "## BLACKLIST IP UPDATED ##"; $data = @file_get_contents($blacklist); if ($data === false || !$data) die ("<font color='red'><b>Erro!</b></font> Não foi encontrado nenhum ficheiro com o nome: $blacklist"); $htaccess = @file_get_contents($htac); if ($htaccess === false) die ("<font color='red'><b>Erro!</b></font> Não foi encontrado nenhum ficheiro com o nome: $htac no diretorio www."); $htaccess = trim($htaccess); if (stripos($htaccess, $line) !== false) $htaccess = trim(substr($htaccess, 0, stripos($htaccess, $line))); if (stripos($data, "# Copyright")) $data = substr($data, 0, strripos($data, "# Copyright")) . substr($data, strripos($data, "##############")+16); $htaccess .= "\n\n\n" . $line . "\n\n" . $data; $htaccess = trim($htaccess) . "\n\n"; $res = file_put_contents($htac, $htaccess); if ($res === false) die ("<font color='red'><b>Error!</b></font> Não foi possivel escrever a blacklist de ips no ficheiro: $htac no diretorio www da tua hospedagem. É necessario mudares as permissões do ficheiro para 0777 (comando: chmod 0777 $htac)"); else die ("<font color='green'><b>Ficheiro .htaccess atualizado com sucesso.</b></font><br>Data de atualização: " . date("r")); ?> vamos criar um novo arquivo com o nome a vossa escolha exemplo: blacklist.php e colam o código acima copiado, salvam o ficheiro. Pronto. Agora vamos a parte do cron para adicionar-mos uma cron para fazer que o nosso ficheiro blacklist.php é corrido uma vez a cada meia hora. exemplo: 30 * * * * /usr/bin/php /var/www/public_html/blacklist.php Se não tiveres o ficheiro .htaccess não vai funcionar
  10. Boas ppl, já tenho isto para mim a algum tempo mas como não vejo muitos a falarem disso por ai decidi publicar. Passando agora ao tópico, neste tutorial tenho como objetivo de mostrar como podem passar a indexar os teus patchs sem a necessidade de terem um ficheiro index no vosso cliente. Muito bem uma vez explicado o que se pretende fazer vamos ver os prós e os contras que isto pode trazer: Prós: Obriga a qualquer pessoa que tente adicionar novo patch ao cliente a ter de o adicionar a source do binário para o fazer. Permitira uma melhor reorganização da base do cliente. Contras: Quando queremos adicionar algum patch novo temos de o adicionar ao binário e voltar a compilar. Como o fazer? No ficheiro userinterface.cpp procurar pelo seguinte: bool PackInitialize(const char * c_pszFolder) E vão encontrar a seguinte função: bool PackInitialize(const char * c_pszFolder) { NANOBEGIN if (_access(c_pszFolder, 0) != 0) return true; std::string stFolder(c_pszFolder); stFolder += "/"; std::string stFileName(stFolder); stFileName += "Index"; CMappedFile file; LPCVOID pvData; if (!file.Create(stFileName.c_str(), &pvData, 0, 0)) { LogBoxf("FATAL ERROR! File not exist: %s", stFileName.c_str()); TraceError("FATAL ERROR! File not exist: %s", stFileName.c_str()); return true; } CMemoryTextFileLoader TextLoader; TextLoader.Bind(file.Size(), pvData); bool bPackFirst = TRUE; const std::string& strPackType = TextLoader.GetLineString(0); if (strPackType.compare("FILE") && strPackType.compare("PACK")) { TraceError("Pack/Index has invalid syntax. First line must be 'PACK' or 'FILE'"); return false; } #ifdef _DISTRIBUTE Tracef("¾Ë¸²: ÆÑ ¸ðµåÀÔ´Ï´Ù.\n"); //if (0 == strPackType.compare("FILE")) //{ // bPackFirst = FALSE; // Tracef("¾Ë¸²: ÆÄÀÏ ¸ðµåÀÔ´Ï´Ù.\n"); //} //else //{ // Tracef("¾Ë¸²: ÆÑ ¸ðµåÀÔ´Ï´Ù.\n"); //} #else bPackFirst = FALSE; Tracef("¾Ë¸²: ÆÄÀÏ ¸ðµåÀÔ´Ï´Ù.\n"); #endif CTextFileLoader::SetCacheMode(); #if defined(USE_RELATIVE_PATH) CEterPackManager::Instance().SetRelativePathMode(); #endif CEterPackManager::Instance().SetCacheMode(); CEterPackManager::Instance().SetSearchMode(bPackFirst); CSoundData::SetPackMode(); // Miles ÆÄÀÏ ÄݹéÀ» ¼ÂÆà std::string strPackName, strTexCachePackName; for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2) { const std::string & c_rstFolder = TextLoader.GetLineString(i); const std::string & c_rstName = TextLoader.GetLineString(i + 1); strPackName = stFolder + c_rstName; strTexCachePackName = strPackName + "_texcache"; CEterPackManager::Instance().RegisterPack(strPackName.c_str(), c_rstFolder.c_str()); CEterPackManager::Instance().RegisterPack(strTexCachePackName.c_str(), c_rstFolder.c_str()); } CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str()); NANOEND return true; } E agora nessa função vamos começar por fazer o seguinte: Vamos comentar o seguinte /* std::string stFileName(stFolder); stFileName += "Index"; CMappedFile file; LPCVOID pvData; if (!file.Create(stFileName.c_str(), &pvData, 0, 0)) { LogBoxf("FATAL ERROR! File not exist: %s", stFileName.c_str()); TraceError("FATAL ERROR! File not exist: %s", stFileName.c_str()); return true; } CMemoryTextFileLoader TextLoader; TextLoader.Bind(file.Size(), pvData); */ E agora dentro da nossa função vamos procurar pelo seguinte e comenta-lo /* const std::string& strPackType = TextLoader.GetLineString(0); if (strPackType.compare("FILE") && strPackType.compare("PACK")) { TraceError("Pack/Index has invalid syntax. First line must be 'PACK' or 'FILE'"); return false; } */ e por ultimo para remover o index com sucesso procuramos e comentamos o seguinte /* std::string strPackName, strTexCachePackName; for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2) { const std::string & c_rstFolder = TextLoader.GetLineString(i); const std::string & c_rstName = TextLoader.GetLineString(i + 1); strPackName = stFolder + c_rstName; strTexCachePackName = strPackName + "_texcache"; CEterPackManager::Instance().RegisterPack(strPackName.c_str(), c_rstFolder.c_str()); CEterPackManager::Instance().RegisterPack(strTexCachePackName.c_str(), c_rstFolder.c_str()); } */ Agora com a nossa função sem a verificação do ficheiro index deverá estar assim: bool PackInitialize(const char * c_pszFolder) { NANOBEGIN if (_access(c_pszFolder, 0) != 0) return true; std::string stFolder(c_pszFolder); stFolder += "/"; /* std::string stFileName(stFolder); stFileName += "Index"; CMappedFile file; LPCVOID pvData; if (!file.Create(stFileName.c_str(), &pvData, 0, 0)) { LogBoxf("FATAL ERROR! File not exist: %s", stFileName.c_str()); TraceError("FATAL ERROR! File not exist: %s", stFileName.c_str()); return true; } CMemoryTextFileLoader TextLoader; TextLoader.Bind(file.Size(), pvData); */ bool bPackFirst = TRUE; /* const std::string& strPackType = TextLoader.GetLineString(0); if (strPackType.compare("FILE") && strPackType.compare("PACK")) { TraceError("Pack/Index has invalid syntax. First line must be 'PACK' or 'FILE'"); return false; } */ #ifdef _DISTRIBUTE Tracef("¾Ë¸²: ÆÑ ¸ðµåÀÔ´Ï´Ù.\n"); #else bPackFirst = FALSE; Tracef("¾Ë¸²: ÆÄÀÏ ¸ðµåÀÔ´Ï´Ù.\n"); #endif CTextFileLoader::SetCacheMode(); #if defined(USE_RELATIVE_PATH) CEterPackManager::Instance().SetRelativePathMode(); #endif CEterPackManager::Instance().SetCacheMode(); CEterPackManager::Instance().SetSearchMode(bPackFirst); CSoundData::SetPackMode(); // Miles ÆÄÀÏ ÄݹéÀ» ¼ÂÆà /* std::string strPackName, strTexCachePackName; for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2) { const std::string & c_rstFolder = TextLoader.GetLineString(i); const std::string & c_rstName = TextLoader.GetLineString(i + 1); strPackName = stFolder + c_rstName; strTexCachePackName = strPackName + "_texcache"; CEterPackManager::Instance().RegisterPack(strPackName.c_str(), c_rstFolder.c_str()); CEterPackManager::Instance().RegisterPack(strTexCachePackName.c_str(), c_rstFolder.c_str()); } */ CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str()); NANOEND return true; } agora para adicionarem novos patchs ao binário fazem da seguinte forma: acima do seguinte CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str()); adicionamos os nossos patchs, como por exemplo: CEterPackManager::Instance().RegisterPack("pack/item1", "*"); CEterPackManager::Instance().RegisterPack("pack/pc1", "*"); CEterPackManager::Instance().RegisterPack("pack/pc2", "*"); CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str()); Em caso de algum erro deixem nos comentários que posso ter me esquecido de alguma coisa. Cumprimentos, Dynamic Things
  11. Não tenho serverside de todas elas mas existem algumas files publicas onde podes tirar a parte serverside vou dar uma vista de olhos se encontrar actualizo o tópico
  12. Deixo ai uma montada do rip pelo plechitoCZ Download: Link
  13. Mekie ppl, deixo ai 3 armaduras que ainda não estava aqui no forum Download Download Download Bye Bye
  14. Boas ppl, deixo ai 3 mapas que ja andam publicados mas alguns deles incompletos deixo ai os 3 completos testados por mim Download 1: Link Download 2: Link Download 3: Link
×
×
  • 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.