Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Ioio

Membre
  • Compteur de contenus

    424
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Ioio

  1. Parfait, merci ! ________________ Voilà, le système FMOD m'a permis de rapidement faire ce plugin sans en parallèle au système actuel du jeu... Vous pourrez trouver le système dans les fichiers ci-dessous: [Hidden Content] NB: N'oubliez pas d'ajouter fmod_vc.lib au Linker (Clic droit sur User Interface dans la liste des projets -> Linker -> Input) Merci Kijaru pour ta suggestion ! _________________________________ Idée d'amélioration du système: Ajouter snd.StopURLMusic() | Prendre en charge les erreurs->Syserr | Migrer tout le client de miles -> FMOD __________________________________ Sujet résolu !
  2. Je n'ai pas été formé à utilisé la doc microsoft... Je la trouve assez complexe... A chaque fois que j'essaye un de leur exemple je dois passer par des heures intenses de debug... Etat d'avancement de la situation: Je pense avoir mis la main sur les fonctions me permettant de lire un flux directement à partir de la mémoire... J'ai donc enlevé toute la partie "fichier temporaire". Cependant, le code ne génère que du bruit pendent quelques secondes avant de fermer... Je dois encore déug... #include "stdafx.h" #include <Windows.h> #include <WinInet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define HTTP_USER_AGENT "httprip" #define BUFFER_SIZE 32000 using namespace std; void usage(void); int open_url_stream(const char *); HDIGDRIVER ms_DIGDriver = NULL; int _tmain(int argc, _TCHAR* argv[]) { const char url[] = "[Hidden Content]"; // Initialize MSS AIL_set_redist_directory("miles"); AIL_startup(); ms_DIGDriver = AIL_open_digital_driver(44100, 16, 2, 0); open_url_stream(url); return 0; } int open_url_stream(const char *requesturl) { const char http[] = "HTTP"; HINTERNET internet; HINTERNET url; char *buf = NULL; DWORD bytesread; DWORD byteswritten; int k; // validate protocol -- first 4 alphas should be http, case insensitive for (k = 0; k < 4; k++) if (requesturl[k] != http[k] && requesturl[k] != (char)(http[k] + 32)) return 0; internet = InternetOpen(HTTP_USER_AGENT,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); if (internet == NULL) return 0; url = InternetOpenUrl(internet,requesturl,NULL,0,INTERNET_FLAG_PRAGMA_NOCACHE,0); if (url == NULL) return 0; buf = (char *)malloc(BUFFER_SIZE + 1); if (buf == NULL) return 0; HSAMPLE smp = AIL_allocate_sample_handle(ms_DIGDriver); AIL_init_sample(smp, DIG_F_STEREO_16, 0); AIL_set_sample_playback_rate(smp, 44100); U32 lastupdate = 0; while (InternetReadFile(url,buf,BUFFER_SIZE,&bytesread)) { AIL_set_sample_address(smp, buf, BUFFER_SIZE); printf("Buf: %p\r", buf); AIL_start_sample(smp); AIL_delay(1); if ((AIL_ms_count() - lastupdate) > 1000) { printf("\r CPU: %i %% (%i samples playing) ", AIL_digital_CPU_percent(ms_DIGDriver), AIL_active_sample_count(ms_DIGDriver)); lastupdate = AIL_ms_count(); } } InternetCloseHandle(url); InternetCloseHandle(internet); free(buf); return 1; }
  3. Je souhaite garder la structure de metin2, pour pouvoir éventuellement faire un tutoriel simple une fois que j'aurais trouvé la solution... J'ai trouvé un projet intéressant dans lequel on peu avoir les sources de Miles 7.1a, une version 5 ans plus récente que celle actuellement présente dans les sources metin2: [Hidden Content] Enjoy !
  4. Je ne trouve pas la manière de lire à partir de la RAM (buffer), ça m'aurait simplifié la vie... Voilà où j'en suis: J'ai réussi à faire un environnement console provisoire (limité à Windows) pour lire un buffer de 64kb de la radio en boucle. Ce code me servira juste à tester les différentes fonctions de mss.... Quand j'aurais trouvé des manières d'optimiser et de rendre ce code fonctionnel (pour lire la radio en continu), il me restera encore tout le travail de l'adapter à metin... // MilesSysTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Windows.h> #include <WinInet.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define HTTP_USER_AGENT "httprip" #define BUFFER_SIZE 64000 using namespace std; void usage(void); int InternetSaveFile(const char *, const char *); HSTREAM openFile(const char *); void playRadio(HSTREAM); HDIGDRIVER ms_DIGDriver = NULL; int _tmain(int argc, _TCHAR* argv[]) { FILE *input = NULL; char buffer[BUFFER_SIZE] = { 0 }; const char url[] = "[Hidden Content]"; AIL_set_redist_directory("miles"); AIL_startup(); // Initialize MSS ms_DIGDriver = AIL_open_digital_driver(44100, 16, 2, 0); // Play Sound of pointer InternetSaveFile(url, "tmp.mp3"); //playRadio(hStream); return 0; } int InternetSaveFile(const char *requesturl, const char *outputfile) { const char http[] = "HTTP"; HANDLE file; SECURITY_ATTRIBUTES sa; HINTERNET internet; HINTERNET url; char *buf = NULL; DWORD bytesread; DWORD byteswritten; int k; // validate protocol -- first 4 alphas should be http, case insensitive for (k = 0; k < 4; k++) if (requesturl[k] != http[k] && requesturl[k] != (char)(http[k] + 32)) return 0; file = CreateFile(outputfile, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (file == INVALID_HANDLE_VALUE) return 0; internet = InternetOpen(HTTP_USER_AGENT, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (internet == NULL) return 0; url = InternetOpenUrl(internet, requesturl, NULL, 0, INTERNET_FLAG_PRAGMA_NOCACHE, 0); if (url == NULL) return 0; buf = (char *)malloc(BUFFER_SIZE + 1); if (buf == NULL) return 0; if (InternetReadFile(url, buf, BUFFER_SIZE, &bytesread)) { //if (bytesread == 0) break; WriteFile(file, buf, bytesread, &byteswritten, NULL); } free(buf); InternetCloseHandle(url); InternetCloseHandle(internet); CloseHandle(file); HSTREAM hStream = AIL_open_stream(ms_DIGDriver, "tmp.mp3", 0); if (hStream == NULL) { printf("Null Pointer buf: %d", bytesread); //break; } playRadio(hStream); return 1; } void playRadio(HSTREAM hStream) { printf("Pointer: %p", hStream); AIL_set_stream_volume_levels(hStream, 1.0f, 1.0f); AIL_set_stream_loop_count(hStream, 0); AIL_start_stream(hStream); while (AIL_stream_status(hStream) != -1) { continue; Sleep(20); } }
  5. Le problème de son dans la console... En fait, mss fait jouer le son en mode async et ne bloque pas l'exécution du script... Ce qui fait que j'ai dû faire une boucle while (AIL_stream_status(hStream) != -1) { printf("Status: %d", AIL_stream_status(hStream)); cin.ignore(); } Dans mon programme.
  6. Tu ne saurais pas pourquoi AIL_open_stream() me retourne un pointer null quand j'essaye au travers d'un bête programme console win32 C'est possible de jouer du son dans un programme console ? C'est bon, résolu...
  7. Oui Kijaru, c'est à ça que je pensais... Donc il faut ouvrir un thread pour mettre en cache l'audio provenant du flux sous forme de fichiers tmp-1.mp3 | tmp-2.mp3 | tmp-3.mp3. (Sectionner tous les blocs en 64kbits dans le cas d'un flux 64k) C'est fichiers sont lus par Miles normalement comme s'il s'agissait d'une musique et seront supprimés au fur et à mesure... (autre thread pour gérer ça) arrivé à tmp-9.mp3, on recommenca à tmp-1.mp3... Logiquement la mise en cache se fait dans la RAM... Mais là je ne vois pas comment lire du son à partir de la RAM avec Miles...
  8. Version des fichiers/ Type d'émulateur : 40k Domaine (Base de données, Client, Core...) : Sources client Votre niveau (Débutant, Intermédiaire, Avancé..) : Intermédiaire Description du problème : Bonjour, Alors voilà, cela fait plusieurs jours que je me penche sur ce casse-tête. Je voudrais savoir s'il est possible de lire un flux audio provenant d'internet (Par exemple: [Hidden Content] BBC London) avec les bibliothèques déjà présentes dans les sources. Je peux me tromper mais je suis sûr que cela est faisable en mélangeant un peu de créativité, boost et le système audio de Miles. L'objectif c'est que la fonction PlayMusic ou FadeInMusic fonctionnent aussi bien avec des url qu'avec des fichiers wav. (Le code cpp doit faire le travail de les distinguer et d'agir en conséquence). Comment reproduire le problème ? : Essayez d'implanter une webradio dans le jeu sans utiliser le navigateur intégré... Recherches et tests effectués : Aucune documentation pour le système Miles... Au passage si quelqu'un en a une je suis preneur. Peut-être faudrait-il ajouter une bibliothèque genre libvlc etc ? (J'arrive même pas à faire un hello world avec ça) Recherche d'un projet opensource qui ferait la même chose pour voir comment ils font et copier... introuvable (ou alors je ne sais pas chercher) Pyaudio - fonctionne pas... Boost: recherches en cours... [Hidden Content] En postant ma demande d'aide, j'affirme avoir lu et accepté le Règlement de Funky-Emulation.
  9. Ioio

    Troll Face Emojis

    Bonjour, merci encore une fois !
  10. Ioio

    Utilisation de WorldEditor

    Merci pour ce tuto
  11. Ioio

    Problème affichage

    N'hésite pas à partager la solution dans ce cas ...
  12. Ioio

    Problème affichage

    J'utilises celui-là perso: [Hidden Content]
  13. Ioio

    Problème affichage

    Dans ce cas, vérifie que tu as bien compressé ton item_proto avec un compresseur 40k... syserr.txt vide ?
  14. Ioio

    Granny

    Merci
  15. Je up le sujet car je dois voir un lien...
  16. Ioio

    MYSQL freebsd 10.3

    si tu as supprimé la colonne et qu'il t'affiches quand-même ça c'est que tu te co à la mauvaise bdd avec ton cms ^^
  17. Ioio

    MYSQL freebsd 10.3

    Essaye de supprimer les colonnes... Ou alors décoche le Not NULL
  18. Ioio

    MYSQL freebsd 10.3

    Rien ne doit apparaître... une fois que tu as fait le SET GLOBAL... tu devrais être en mesure de créer ton compte...
  19. Ioio

    MYSQL freebsd 10.3

    Essaye d'exécuter SET GLOBAL sql_mode = ''; dans la console MySQL (MySQL>)
  20. [Hidden Content] [Hidden Content]
  21. Impossible de se connecter IG depuis un ordinateur extérieur au réseau local. Déconnexion directe après la sélection du personnage. Aucune erreur anormale Syserr (Auth/channels cores/ db). Aucune erreur côté client. J'ai essayé un debug par TeamViewer mais je n'ai rien su faire. Si on met l'adresse du serveur locale dans le BIND_IP (192.168.x.x), aucune erreur du type Can't assign requested adress... Mais toujours impossible de se co IG depuis l'éxterieur... No-IP. Mon hypothèse: Problème de compatibilité du tuto sur les sources 2014 pour le BIND_IP avec les sources 2016 by team FE. EDIT: Une idée vient de me foudroyer, essaye de créer un nouveau compte, nouveau perso
  22. Bonjour, Je m'inquiète pour la sécurité de vos serveurs et j'ai décidé de vous faire un mini-tuto qui va vous permettre de sécuriser votre base de données. Je m'explique... Il existe aujourd'hui de plus en plus de CMS différents pour metin2. Ils sont gratuits, ouverts au public etc... Le soucis est que la majorité d'entre eux stockent les données de connexion à votre base de données sans les chiffrer/crypter. En général cela ne pose pas trop de soucis mais voici une liste de questions que je me poserais à votre place: Si jamais quelqu'un réussit à pirater mon site et mettre la main sur le fichier de configuration ? Étant donné que je ne m'y connais pas trop en PHP, si ça se trouve, le CMS que j'utilise est fait par un méchant qui s'envoie automatiquement les logs de connexion à mon serveur dans un fichier auquel il a accès !? Imaginons que je me dispute avec quelqu'un qui a accès à mon FTP pour diverses raisons (par exemple: gestion du forum) il peut avoir accès à mes logs Navicat via le site ! Que faire ? Le mieux à faire dans ce cas, si vous avez un serveur non local, est de créer un utilisateur spécial pour votre site dans la base de données. 2 Possibilités: Vous hébergez votre site sur le même serveur que votre émulateur metin2 => Lorsque vous configurez votre site, vous pouvez entrer les logs par défaut que vous avez dans vos fichier CONFIG (Hôte: localhost | User: mt2 | Password: mt2!@# |Port: 3306). Dans cette situation, non seulement vous vous protégez mais en plus le site sera beaucoup plus rapide car il ne perdra pas de temps à résoudre une adresse ip publique (hamachi, no-ip ou autre...) Vous hébergez votre site sur un serveur distant par rapport à votre serveur metin2. Trouvez l'adresse IP de votre site. (resolve domain sur google ou alors dans le pannel admin de l'hébergeur) Dans Putty/VBox entrez les commandes MySQL -u root -p Vous serez invité à entrer votre mot de passe MySQL, entrez-le (celui de Navicat etc..) GRANT ALL PRIVILEGES ON *.* TO 'webUser'@'999.999.999.999' IDENTIFIED BY 'MotDePasseDifferent' WITH GRANT OPTION; Vous l'aurez compris, remplacez le 999.999.999.999 par l'ip de votre site et MotDePasseDifferent par un mot de passe sûr et différent de ceux de root et mt2!@#. Configurez votre site avec les logs du nouvel utilisateur créé: Host: Adresse IP du serveur | User: webUser | Port: 3306 | Password: MotDePasseDifferent ou ce par quoi vous avez remplacé. Vouala ! Le nouvel utilisateur ne pourra se connecter que si son adresse IP est = 999.999.999.999. Cela dit même si quelqu'un connaît le mot de passe webUser, il ne pourra pas s'y connecter Maintenant si vous avez à faire à un pirate plus professionnel qui sait manipuler les codes de votre cms pour trafiquer les querries (très très très très rare), cette sécurité n'est qu'un tout petit obstacle (~2cm²) pour lui*. En espérant que vous serez toujours dans des conditions optimales de sécurité, Cdt, * Cela s'appelle l'injection SQL et seul le développeur du CMS ou un codeur PHP/MySQL peut vous garantir la sécurité d'un site CMS dans ce domaine.
  23. Ioio

    [MAJ] Easy-Pack V2.0.0.0

    Encore une fois: BON BOULOT !
  24. Ioio

    libjasper

    Sinon, une autre méthode serait de réinstaller devil via les ports. et veiller à activer jasper justement (JPG-2000)

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.