Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Bienvenue Guest!

Rejoignez la communauté pour avoir accès à l'entièreté du site! Une fois que vous serez enregistré, vous pourrez créer, aider, partager et discuter avec les membres de la communauté et également participer à l'amélioration du site. Alors, qu'attendez vous ? Enregistrez-vous !

Search the Community

Showing results for tags 'novice'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Vie du forum
    • Annonces & informations
    • Suggestions
    • Discussion générale
  • FiveM
    • Annonces
    • Tutoriels
    • Ressources
    • Aide & Support
    • Communautées
    • Documentation FiveM
  • Alt:V Multiplayer
    • Annonces
    • Tutoriels
    • Ressources
    • Aide & Support
    • Communautées
    • Documentation Alt:V
  • RageMP
    • Annonces
    • Tutoriels
    • Ressources
    • Aide & Support
    • Communautées
    • Documentation RageMP

Blogs

  • Site gtadev.fr

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 27 results

  1. Il peut être intéressant d'installer son serveur RageMP sur un VPS pour permettre une meilleure accessibilité et une meilleure stabilité, dans ce tuto nous allons partir d'une installation neuve de debian pour installer notre serveur. Prérequis Avoir une distribution Linux avec les paquets à jour Avoir les droits sur son VPS (préférable) (Optionnel) Créer un utilisateur pour le serveur Installation Pour ce tutoriel nous allons créer un dossier afin de stocker tous les fichiers dedans : mkdir tuto cd tuto Une fois dans le dossier, on va acquérir les fichiers serveur : wget https://cdn.rage.mp/lin/ragemp-srv-036.tar.gz Puis on extrait le fichier obtenu avec la commande suivante : tar -xzf ragemp-srv-036.tar.gz On obtient alors un dossier appelé ragemp-srv, qui contient a son tour trois fichiers : Le fichier server qui est le fichier que l'on utilisera pour lancer le serveur Le fichier conf.json qui contient les propriétés du serveur Le fichier bt.dat qui est le fichier qui sera mis a jour et qu'il ne faut pas touché ! Pour l'instant le fichier server n'est pas exécutable, il faut utiliser les commandes : cd ragemp-srv chmod +x server Il ne nous reste plus qu'à lancer le serveur : ./server Voila ! Votre serveur est prêt à être utilisé, vous remarquerez que quatre dossiers sont apparus : le dossier client_packages qui contient les scripts côté client le dossier maps qui contient les fichiers .json des maps implémentées le dossier packages qui contient les scripts côté serveur le dossier plugins qui contient pour l'instant la dll concernant le bridge (abordé dans un futur tutoriel) Vous pouvez maintenant commencer à scripter !
  2. Bonjour à tous ! Voilà un petit tutoriel rapide afin de vous permettre de vous lancer dans l'aventure OneSync de FiveM (oh croyez moi, c'est vraiment une aventure.). Tout d'abord, il faut savoir que le prototype OneSync n'est pas accessible à n'importe qui, il est réservé aux adhérents Patreon de FiveM. L'adhérence au Patreon vous offre non seulement l'accès à l'utilisation du prototype OneSync sur FiveM, mais également à d'autres bonus en fonction du palier choisi, comme : L'accès au canal de développement des builds canary Streaming de vêtements pour les freemode models (les peds multijoueurs) Une couleur spécifique de votre pseudonyme sur leur serveur discord en fonction du palier payé. Accès en avant première à diverses features comme les voix sous mumble en autre. L'utilisation de codes couleurs pour le nom de votre serveur dans la masterlist. Un fond rouge et or dans la masterlist pour votre serveur (en fonction du palier). Un nom de serveur qui clignote dans la masterlist (dernier palier). Il faut savoir que le Patreon permet de soutenir le projet FiveM en leur donnant de l'argent tous les mois d'un montant fixe. Ceci reste donc des dons. Ici un palier bien spécifique va nous intéresser, le palier des 15$ (ou ceux du dessus si vous souhaitez donner plus ): C'est ce palier qui nous permettra de débloquer le prototype OneSync. A savoir que tous les palier vous débloquent les bonus des paliers précédents à celui ci(si vous prenez le 25% vous aurez les bonus du 15$ et 8$ par exemple). Pour souscrire à un palier, cela se fait ici : https://www.patreon.com/join/fivem? il vous suffit ensuite de sélectionner le palier 15$. Une fois payé, la validation peut prendre plusieurs heures, une fois la validation effectuée, vous devrez vous rendre sur https://keymaster.fivem.net/ et générer une nouvelle clé pour l'ajouter à votre server.cfg et remplacer l'ancienne. Il faudra ensuite vous rendre dans votre server.cfg et y ajouter ceci : set onesync_enabled 1 et modifié cette convar : sv_maxclients pour modifié le 32 en 64 (ou 255 si vous souhaitez être tranquille). /!\ Si vous utilisez ESX, cette convar est présente ailleurs. Inutile de l'ajouter à votre fichier cfg, il vous suffit d'édité le fichier es_extended/config.lua et de modifier comme précédemment. /!\ Config.MaxPlayers=GetConvarInt('sv_maxclients', 32) Ensuite une tâche un peu plus "complexe" se voit obligatoire, c'est de modifié toutes les boucles concernant les joueurs dans vos scripts. Elles ressemblent très souvent à ceci : -- essentialmode Citizen.CreateThread(function() while true do Citizen.Wait(0) if pvpEnabled then for i = 0,32 do -- La boucle qui nous intéresse if NetworkIsPlayerActive(i) then SetCanAttackFriendly(GetPlayerPed(i), true, true) NetworkSetFriendlyFireOption(true) end end -- Fin de la boucle end end end) ou --es_admin function getPlayers() local players = {} for i = 0,32 do -- La boucle qui nous intéresse if NetworkIsPlayerActive(i) then table.insert(players, {id = GetPlayerServerId(i), name = GetPlayerName(i)}) end end -- Fin de la boucle return players end il vous faudra éditer cette boucle pour qu'elle ressemble à ceci : for _, player in ipairs(GetActivePlayers()) do local ped = GetPlayerPed(player) end Ce qui donne au final pour l'exemple de es_admin --es_admin function getPlayers() local players = {} for _, player in ipairs(GetActivePlayers()) do if NetworkIsPlayerActive(i) then table.insert(players, {id = GetPlayerServerId(i), name = GetPlayerName(i)}) end end -- Fin de la boucle return players end Choses à savoir concernant OneSync : Il faut savoir que OneSync est un prototype, et que des bugs y sont encore présents. Les PNJs par exemple ne sont toujours pas disponibles, le système de voix de base est quelque peu défectueux par moment tout comme de nombreux problèmes de synchronisations sont encore présents. Il s'agit là avant tout de tester ce prototype pour en faire des retours, et l'améliorer. Vous devez également savoir que de nombreux scripts/frameworks ne sont pas encore totalement fonctionnels sous OneSync, comme pour exemple es_extended pour lequel certaines fonctions ne sont pas fonctionnelles, vous devrez les corrigés vous même jusqu'à ce que le framework soit mis à jour pour fonctionner sous OneSync. Tous vos scripts seront plus gourmand par la même occasion, puisque vous appelez plus souvent les natives présentes dans le code, ainsi que les bouts de codes assez "lourd", puisque vous doublez votre charge de joueur. L'utilisation de vos scripts aura donc tendance à doublé par rapport à avant. Si vous ne savez pas comment stream des vêtements moddés, vous pouvez jeter un oeil ici : Et si vous ne savez pas non plus comment optimiser vos ressources, nous avons un tutoriel ici :
  3. Installer et configurer essentialmode Bonjour, voici un tutoriel pour vous permettre d’installer correctement essentialmode et es_admin. Tout d’abord, vous aurez besoin de télécharger la dernière version de ces scripts : EssentialMode L’extension es_ui qui vous permettra d’afficher l’argent en haut à droite L’extension es_admin2 L’extension esplugin_mysql si vous comptez utiliser ESX par la suite Tout d’abord rendez-vous dans le dossier resource de votre serveur et créez-y un dossier [ES] comme ceci : Ce dossier vous permettra de ranger vos ressources liées à ESMode, à savoir que le nom du dossier n’a aucun impact sur quoi que ce soit, il vous sert uniquement à organiser votre dossier resource. Placez-y ensuite les trois (ou quatre si vous utilisez esplugin) ressources que vous venez de télécharger à l’intérieur du dossier [ES] comme ceci : Renommez vos ressources de sorte à retirer le –master et le -6.1.0 de essentialmode et renommez ensuite es_admin en es_admin2. Vos ressources devront à la fin ressembler à ceci : Dirigez-vous désormais dans essentialmode/server/ et ouvrez util.lua vous devriez arriver tout de suite sur une liste d’options comme celle-ci : settings.defaultSettings = { ['pvpEnabled'] = GetConvar('es_pvpEnabled', 'false'), -- Activer le pvp ['permissionDenied'] = GetConvar('es_permissionDenied', 'false'), -- Afficher un message lorsqu'une commande a été refusée ['startingCash'] = GetConvar('es_startingCash', '0'), -- Somme d'argent par défaut pour un nouveau joueur ['startingBank'] = GetConvar('es_startingBank', '0'), -- Somme d'argent en banque par défaut pour un nouveau joueur ['enableRankDecorators'] = GetConvar('es_enableRankDecorators', 'false'), ['moneyIcon'] = GetConvar('es_moneyIcon', '$'), -- Modifier l'icône de votre argent ['nativeMoneySystem'] = GetConvar('es_nativeMoneySystem', '0'), -- Utiliser ou non le système natif d'argent de GTA (déconseiller) ['commandDelimeter'] = GetConvar('es_commandDelimeter', '/'), -- Symbole pour appelé une commande dans le chat ['enableLogging'] = GetConvar('es_enableLogging', 'false'), -- Activer les outils de debugging ['enableCustomData'] = GetConvar('es_enableCustomData', 'false'), -- Autoriser des données customs comme de nouveaux systèmes de base de donnée (par exemple) | NE PAS TOUCHER ['defaultDatabase'] = GetConvar('es_defaultDatabase', '1'), -- Choisir le type de base de donnée que vous souhaitez utiliser ['disableCommandHandler'] = GetConvar('es_disableCommandHandler', 'false') } [[ Les types de base de données disponibles sont : 0 = MySQL 1 = SQLite 2 = CouchDB ]] C’est cette partie qui nous permettra de modifier certaines options importantes. Comme activer le pvp pour permettre aux joueurs de pouvoir se tirer dessus, il vous faudra modifié ['pvpEnabled'] = GetConvar('es_pvpEnabled', 'false'), en ['pvpEnabled'] = GetConvar('es_pvpEnabled', 'true'), Modifiez donc les options à votre goût, et selon vos besoins. Si vous utilisez CouchDB pour modifier les identifiants de connexion à votre base de donnée rendez vous dans : essentialmode/config.lua Si vous utilisez MySQL ajoutez dans votre fichier server.cfg ceci : set es_enableCustomData 1 set mysql_connection_string "server=votre_ip;database=votre_basededonnée;userid=votre_utilisateur;password=votre_password" Pour SQLite : A venir Dans votre server.cfg ajouter ensuite avant add_principal identifier.steam:aaaaaaaaaaaaa group.admin ceci : add_ace group.admin command allow # allow all commands add_ace group.admin command.quit deny # but don't allow quit add_ace resource.essentialmode command.add_ace allow add_ace resource.essentialmode command.add_principal allow et remplacez le steam par votre steam:aaaa par votre steamid en format HEX (tutoriel ici : https://www.gtadev.fr/forums/topic/135-récupération-du-steamid-dun-joueur/) Ceci vous donnera les droits complets sur votre serveur et vous permettra en autre de redémarrer vos ressources depuis la console client. Si vous souhaitez utiliser MySQL (pour ESX notamment) vous devrez insérer les fichiers .sql vous même et installer l'extension esplugin_mysql. Rendez vous donc dans le dossier esplugin_mysql et ensuite sur votre phpmyadmin(si vous utilisez phpmyadmin) et connectez vous sur votre espace de base de donnée. Vous arriverez sur cette page : Suivez ensuite l'une des deux méthodes afin de mettre en place votre base de donnée SQL Avertissement : Nous déconseillons les utilisateurs d'utiliser comme nom de base de donnée : essentialmode pour des raisons de sécurité, vous devez utiliser un nom peu commun. /!\ Cliquez ensuite sur le nom de votre base de donnée dans l'arborescence à gauche, et cliquer sur l'onglet "importer" Cliquez sur parcourir et sélectionner le fichier sql.sql dans le dossier esplugin_mysql Appuyez ensuite sur "exécuter" Si tout s'est bien passé, vous arriverez sur une page de la sorte : Et voilà, vous avez importer votre fichier SQL, cela se passera de la même manière pour chaque script possédant une table MySQL Rendez vous dans esplugin_mysql et ouvrez le fichier sql.sql Une fois ouvert, ceci devrait apparaître dans le bloc de notepad : -- -------------------------------------------------------- -- Host: 127.0.0.1 -- Server version: 10.1.22-MariaDB - mariadb.org binary distribution -- Server OS: Win64 -- HeidiSQL Version: 9.4.0.5125 -- -------------------------------------------------------- /*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 */; /*!50503 SET NAMES utf8mb4 */; /*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -- Dumping database structure for essentialmode CREATE DATABASE IF NOT EXISTS `essentialmode` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin */; USE `essentialmode`; -- Dumping structure for table essentialmode.users CREATE TABLE IF NOT EXISTS `users` ( `identifier` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL, `license` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL, `money` int(11) DEFAULT NULL, `bank` int(11) DEFAULT NULL, `permission_level` int(11) DEFAULT NULL, `group` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; -- Data exporting was unselected. /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; /*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; Il vous suffit de remplacer "essentialmode" par le nom de la base de donnée que vous souhaitez utilisé. Sachez qu'il faudra faire la même chose pour chaque script ou vous devrez exécuter un fichier SQL Retournez ensuite sur phpmyadmin et rendez vous dans l'onglet "SQL" Collez à l'intérieur de la zone de texte, le bloc de code que vous venez de modifié et appuyez ensuite sur "exécuter" Si tout s'est bien passé, vous aurez cette fenêtre qui apparaitra pour vous signaler que le toutes les lignes SQL ont bien été exécuté sans erreurs Vous avez enfin fini de configurer essentialmode ! Il ne vous reste plus qu'à dire à votre serveur de le démarrer, et vous aurez enfin fini Pour cela rendez vous dans votre server.cfg et ajoutez à la suite des "start" déjà présent ceci, et dans cet ordre : start mysql-async start essentialmode start esplugin_mysql start es_admin2 et vous voilà enfin prêt à démarrer votre serveur ! Vous pouvez le lancer, et jouer dessus. Il ne vous reste plus qu'à ajouter tout ce que vous seriez amener à vouloir ajouter pour jouer avec vos amis, ou votre communauté. Bon jeu!
  4. Jijamik

    novice Menus ESX

    Comment créer un menu ESX ? ESX offre 3 types de menus par défaut, c'est ce que nous allons aborder dans ce tutoriel. Les prérequis : - es_extended - esx_menu_default - esx_menu_dialog - esx_menu_list Les fonctions : Ouvrir un menu avec les paramètres spécifiés : ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, close) Fermer tous les menus ouverts : ESX.UI.Menu.CloseAll() Astuce : pour compter le nombre de menus ouverts vous pouvez utiliser : #ESX.UI.Menu.Opened menu_default : ESX.UI.Menu.Open( 'default', GetCurrentResourceName(), 'nomdumenu', -- Remplacez le nom du menu { title = ('Ici, le titre du menu'), align = 'top-left', -- Position du menu elements = { -- Contient les différents éléments du menu {label = ('Ici, le champs 1 du menu'), value = 'test'}, {label = ('Champs 2'), value = 'champs2'}, {label = ('Champs 3'), value = 'champs3'} } }, function(data, menu) -- Cette partie contient le code qui s'exécute lorsque l'on presse entrer if data.current.value == 'test' then -- Ici l'action lorsque l'on sélectionne le champ 1 end end, function(data, menu) -- Cette partie contient le code qui s'exécute lorsque l'on presse retour menu.close() -- Ferme le menu end ) elements : local elements = { -- Création d'une table { label = ('Champs classique'), value = 'champs1' } } if PlayerData.job.grade_name == 'boss' then -- Si le joueur a le grade boss alors on insère une ligne dans le menu table.insert(elements, { label = ' - <span style="color:red;">Rouge</span>', -- Exemple d'utilisation de css -- Propriétés du menu type = 'slider', -- Le type slider permet de choisir une valeur value = 128, -- Valeur par défaut min = 1, -- Valeur minimale max = 255 -- Valeur maximale }) end menus imbriqués : Voici un exemple de menu imbriqués. ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'menu1', { title = ('Menu 1'), elements = { { label = ('Champs 1'), value = 'champs1' } } }, function(data, menu) ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'menu2', { title = ('Menu 2'), elements = { { label = ('Champs 2'), value = 'champs2' } } }, function(data2, menu2) end, function(data2, menu2) menu2.close() end) end, function(data, menu) menu.close() end) menu_dialog : ESX.UI.Menu.Open( 'dialog', GetCurrentResourceName(), 'menu1', { title = ('Entrez un montant') }, function(data, menu) local amount = tonumber(data.value) if amount == nil then ESX.ShowNotification('Montant invalide') else menu.close() TriggerEvent('tuto',amount) end end, function(data, menu) menu.close() end ) menu_list : local elements = { head = { ('Colonne 1'), ('Colonne 2'), ('Colonne 3') }, rows = {} } table.insert(elements.rows, { data = "Tuto", cols = { "Valeur colone 1", "Valeur colone 2", '{{' .. ('Bouton 1') .. '|bouton1}} {{' .. ('Bouton 2') .. '|bouton1}}' } }) ESX.UI.Menu.Open('list', GetCurrentResourceName(), 'exemplemenu', elements, function(data, menu) if data.value == 'bouton1' then -- Code si clique sur Bouton 1 elseif data.value == 'bouton2' then -- Code si clique sur Bouton 2 end end, function(data, menu) menu.close() end) J'espère vous avoir aidé dans la création de vos menus A bientôt.
  5. Taille à utiliser pour obtenir les meilleurs résultats: 1865x108 dans le server.cfg ajouter ces lignes et ajoutez vos liens personnalisés! Définissez une information facultative sur le serveur et l’URL de l’image bannière associée. La taille n’a pas d’importance, toute image de la taille d’une bannière ira bien. #sets banner_detail “url de l'mage” #sets banner_connecting “url de l'mage” Profitez de votre nouvelle bannière de connexion!
  6. Pour tous ceux qui souhaitent désactiver l’utilisation du téléphone après une mort: Remplacer la ligne 75-87 gcphone \ client \ client.lua Citizen.CreateThread(function() while true do Citizen.Wait(0) if takePhoto ~= true then if IsControlJustPressed(1, KeyOpenClose) then local ped = GetPlayerPed(-1) if not IsPedDeadOrDying(GetPlayerPed(player)) then hasPhone(function (hasPhone) if hasPhone == true then TooglePhone() else ShowNoPhoneWarning() end end) end end
  7. pour ceux qui en ont besoin, il s’agit d’empêcher les joueurs de pouvoir accéder à leurs inventaires apres leurs mort Ligne 96-105 de esx_inventoryhud\client\main.lua Citizen.CreateThread( function() while true do Citizen.Wait(0) local player, distance = ESX.Game.GetClosestPlayer() if not IsPedDeadOrDying(GetPlayerPed(player)) then if IsControlJustReleased(0, Config.OpenControl) and IsInputDisabled(0) then openInventory() end end end end )
  8. Ouvrez votre ressource skinchanger et collez l'extrait ci-dessous au bas du fichier client. source https://forum.fivem.net/t/esx-default-danny-prevention/695810 Citizen.CreateThread(function() while true do Citizen.Wait(0) if Character['tshirt_1'] == 0 and Character['torso_1'] == 0 then DisableAllControlActions(0) EnableControlAction(0, 174, true) EnableControlAction(0, 175, true) EnableControlAction(0, 173, true) EnableControlAction(0, 27, true) DannyDetect() elseif Character['shoes_1'] == 0 and Character['shoes_2'] == 0 then DisableAllControlActions(0) EnableControlAction(0, 174, true) EnableControlAction(0, 175, true) EnableControlAction(0, 173, true) EnableControlAction(0, 27, true) DannyDetect() end end end) function DannyDetect() SetTextColour(0, 0, 0, 255) SetTextFont(4) SetTextScale(0.8, 0.8) SetTextWrap(0.0, 1.0) SetTextCentre(false) SetTextDropshadow(2, 2, 0, 0, 0) SetTextEdge(1, 0, 0, 0, 205) SetTextEntry("STRING") AddTextComponentString("~r~Vous devez changer votre skin!") DrawText(0.105, 0.100) end
  9. Bonjour, a tous Petit tutoriel pour créer des Blips sur la carte Vous aurez besoin de ce site pour le type de blip ainsi que la couleur Citizen.CreateThread(function() local blip = AddBlipForCoord(-1075.37, -2807.88, 325.754) --Coordonées du blip SetBlipSprite (blip, 90) -- Forme du blip SetBlipScale (blip, 0.9) -- taille du blip SetBlipDisplay(blip, 4) -- Souvent utilisé 4 pour l'afficher sur la minimap et la carte SetBlipColour (blip, 15) -- choix de couleur SetBlipAsShortRange(blip, true) -- Cacher le blip sur la mini map lorsque le joueur est loin BeginTextCommandSetBlipName("STRING") AddTextComponentString('~b~Aéroport International') -- Mettre le nom du Blip EndTextCommandSetBlipName(blip) end) Pour faire afficher plusieurs blips, il faut le faire avec un for loop comme ceci: Config = {} Config.Map = { {name="~b~Aéroport International",color=15, id=90, x = -1075.37, y = -2807.88, z = 325.754367828369}, {name="~b~Bahama Mamas",color=38, id=93, x = -1394.5030517578, y = -596.09210205078, z = 30.319562911987}, {name="~b~Banque Principal",color=43, id=108, x = 247.97743225098, y = 221.88145446777, z = 106.28684234619}, } Puis le code côté client : Citizen.CreateThread(function() for i=1, #Config.Map, 1 do local blip = AddBlipForCoord(Config.Map[i].x, Config.Map[i].y, Config.Map[i].z) SetBlipSprite (blip, Config.Map[i].id) SetBlipScale (blip, 0.9) SetBlipDisplay(blip, 4) SetBlipColour (blip, Config.Map[i].color) SetBlipAsShortRange(blip, true) BeginTextCommandSetBlipName("STRING") AddTextComponentString(Config.Map[i].name) EndTextCommandSetBlipName(blip) end end)
  10. JagerBom

    novice Code snippets ESX

    Salut a tous! ce poste sera plus dédié a tout des sortes de snippets utiles. Si jamais vous en avez, n'hesitez pas a en partager avec un pett mot d'explication s'il le faut. Ne plus avoir de point sur le viseur (coté client): Ne plus avoir de armes quand on rentre dans des voitures de police/fbi ou autre (coté client): Une commande nommé revivea pour se revive si jamais il y a pas de admins (coté serveur): Désactiver les vols de véhicules PNJ (coté client): Ne pas pouvoir changer de place dans la voiture (coté client): Changer le nom du serveur dans le menu pause (coté client): Retirer les dispatch de peds (coté client): faire en sorte que les PNJ ne droppent pas d'armes (coté client):
  11. Vous êtes nouveau dans le développement et souhaitez mettre en place votre serveur RageMP ? Vous êtes au bon endroit ! La mise en place d'un serveur sous Windows est réellement très simple et ne nécessite pas beaucoup d'étapes. Les Prérequis Le seul prérequis dont vous aurez besoin est : Microsoft Visual C++ redistributable 2017 Mise en place du serveur Il vous faudra installer le client de RageMP premièrement : Lien direct Il suffit de placer le fichier updater.exe obtenu dans un dossier et de le lancer afin d'obtenir l'intégralité des fichiers dans ce dossier. Vous devriez obtenir ces fichiers, vous remarquerez la présence du dossier server-files. Dans ce dernier vous aurez les fichiers : Il vous suffit maintenant de lancer server.exe afin de lancer votre serveur ! Vous remarquerez la présence de nouveaux dossiers dans le répertoire des fichiers serveurs, parmi eux : client_packages : le dossier des ressources du côté client packages : le dossier des ressources côté serveur maps : le dossier contenant les fichiers .json des maps Vous êtes maintenant prêt à aborder le scripting sous RageMP !
  12. Système de logs money simple mais efficace importer le sql rajouter dans es_extended\server\main.lua line 294 MySQL.Async.execute('INSERT INTO transfer (Sender, Type, Amount, Reciever)VALUES (@Sender, @Type, @Amount, @Reciever) ', { ['@Sender'] = sourceXPlayer.name, ['@Type'] = 'Cash', ['@Amount'] = itemCount, ['@Reciver'] = targetXPlayer.name } ) rajouter dans es_extended\server\main.lua line 318 item_account MySQL.Async.execute('INSERT INTO transfer (Sender, Type, Amount, Reciever)VALUES (@Sender, @Type, @Amount, @Reciever) ', { ['@Sender'] = sourceXPlayer.name, ['@Type'] = 'Cash', ['@Amount'] = itemCount, ['@Reciver'] = targetXPlayer.name } ) sql CREATE TABLE IF NOT EXISTS `transfer` ( `Sender` varchar(50) DEFAULT NULL, `Type` varchar(50) DEFAULT NULL, `Amount` int(11) DEFAULT NULL, `Reciever` varchar(50) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Money Transfer Information'; Source : forum fivem.net
  13. NikoDEK

    novice Gestion maladies

    Bonjour a tous, Je vous propose un petit tuto pas bien compliqué pour avoir une gestion des maladies. Au moment ou vous manger et buver un nombre et tirer au hasard si celui-ci est comprit dans le système vous aurez une chance de tomber malade. Requierement: -esx_basicneeds -esx_ambulancejob esx_basicneeds: *Ajouter dans le client/main.lua : RegisterNetEvent('esx_basicneeds:onSick') AddEventHandler('esx_basicneeds:onSick', function() local rand = math.random(0,100) local playerPed = GetPlayerPed(-1) if rand >= 25 and rand <= 32 then if rand >= 25 and rand <= 28 then Citizen.Wait(50000) ESX.ShowNotification('~r~Vous avez la nausée') StartScreenEffect('ChopVision', 0, true) TriggerEvent('esx_animations:startAttitude',"[email protected]@a") ShakeGameplayCam("FAMILY5_DRUG_TRIP_SHAKE", 0.1) end if rand >= 29 and rand <= 32 then Citizen.Wait(70000) ESX.ShowNotification('~r~Vous ne vous sentez pas bien') StartScreenEffect('SwitchOpenNeutralFIB5', 0, true) TriggerEvent('esx_animations:startAttitude',"[email protected]@a") ShakeGameplayCam("FAMILY5_DRUG_TRIP_SHAKE", 0.2) end end end) *Ajouter dans le server/main.lua : Dans vos ESX.RegisterUsableItem ajouter se Trigger TriggerClientEvent('esx_basicneeds:onSick', source) esx_ambulancejob *Ajouter dans le client/main.lua : if data.current.value == 'stop_sick' then local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer() if closestPlayer == -1 or closestDistance > 3.0 then ESX.ShowNotification(_U('no_players')) else TriggerEvent('esx_animations:stopAttitude') StopScreenEffect('ChopVision') StopScreenEffect('SwitchOpenNeutralFIB5') TriggerEvent('shakeCam', false) end end Facilement adaptable a d'autres actions, vous avez la possibilité de changer d'effets et d'attitudes.
  14. Bonjour a tous, Outil permettant a l'équipe administrative de votre serveur d'utiliser des commandes sans être en jeu. Installation: Télécharger la dernière version de IceCon ici: https://github.com/icedream/icecon/releases Renseignez l'adresse du serveur et le mot de passe: Exemple: Adress (IP:Port): 91.121.123.70:30120 Password: yay (Pour choisir le mot de passe, cherchez dans votre server.cfg la ligne rcon_password) Utilisation: Vous avez donc accès a plusieurs commandes: status = Pour avoir les informations des joueurs en ligne (ID du joueur, IP du joueur et ping)clientkick = Commande: clientkick [idjoueur] [raison]Description: Kick un joueur du serveurtempbanclient = Commande: tempbanclient [idjoueur] [raison]Description: Bannir un joueur du serveursay = Commande: say [ton message]Description: Faire une annonce dans le chat ingametell = Commande: tell [idjoueur] [ton message]Description: Envoyer un message a une personne en particulier start = Commande: start [nom de la ressource]Description: Démarrer une ressourcerestart = Commande: restart [nom de la ressource]Description: Redémarrer une ressourcestop = Commande: stop [nom de la ressource]Description: Arrêter une ressourcerefresh = Commande: refresh [nom de la ressource]Description: rafraîchir toutes ressource
  15. Kanda Sorata

    novice Installer une ressource FiveM

    Bonjour ! Grace à ce tuto, vous serez en mesure de mettre en place n'importe quel type de ressource sur votre serveur FiveM. Que ce soit une map, un script ou des armes et des vêtements, ce sera expliqué ici ! I : Les fichiers __resource.lua II : Un script basique. III : Une map. IV : Une arme. V : Des vêtements Le fichier __resource.lua est la base de votre script, sans lui il ne fonctionnera pas, c'est ce fichier qui charge chaque fichier de votre script. Dans cette partie, je vous apprendrais à le créer de façon fonctionnel. Voici la template d'un fichier __resource.lua : resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' -- Version de FiveM sur lequel le script fonctionne (rend fonctionnel -- certaines natives liée à la version => -- Peut être trouvé ici https://docs.fivem.net/scripting-reference/resource-manifest/resource-manifest/ client_scripts { -- Permet de charger les fichiers client du script. "Client.lua", "Client2.lua } server_scripts { -- Permet de charger les fichiers serveur du script. "Server.lua", "Server2.lua" } ui_page('html/index.html') -- Permet de définir votre fichier html si votre script utilise une interface HTML. files { -- Permet de charger des fichiers divers qui sont nécéssaires à votre interface HTML(par exemple), des images, des polices etc...). "Votre_fichier1.html", "Votre_fichier2.png", "Votre_fichier3.jpg } dependency 'votre_dependance' -- Permet de définir à votre ressource une dépendance sans quoi, elle ne pourra démarrer/fonctionner. La plupart des scripts que vous serez amenez seront fait de la sorte : (la façon dont le script est "rangé" peut différé, mais le principe reste identique) Parfois, il peut s'y trouver un fichier config.lua ou alors un fichier SQL nécessaire au script, les noms peuvent parfois être modifiés en "main.lua" et ranger dans des dossiers client/server. Tout d'abord il vous faudra avoir ces fichiers placé dans un dossier avec le nom de votre script (le nom importe peu, il vous sert juste à savoir quel script est exécuté dedans) par exemple ici "mon_script_fivem". Après ceci, il vous suffira de le placer dans le dossier "resources" de votre serveur comme ceci : Vous pouvez bien entendu créer un dossier par exemple "[Mes scripts persos]" pour avoir un rangement propre, dans notre cas nous le placerons dans un dossier "[Tutorial]". Une fois le dossier placé, nous pouvons passer à l'étape finale, le lancement du script ! C'est bien beau de le placé dans un dossier, mais il faut que votre serveur sache que vous voulez le démarrer, pour se faire, nous irons dans notre config.cfg placé à la racine de votre serveur pour y ajouter une ligne. Cette ligne sera celle ci : start mon_script_fivem Cette ligne vous la placez à la suite (ou dans un ordre précis si vous utilisez un framework précis comme ESX par exemple) à la fin de votre fichier config(L'emplacement importe peu). A savoir que si vous avez plusieurs scripts, avec des dépendances, l'ordre de démarrage de vos ressource est important ! Vos dépendances devront être démarrées avant votre script, par exemple : start ma_dépendance_principale start ma_dépendance_secondaire start mon_script_fivem Sans quoi votre script ne fonctionnera pas correctement. /!\ Attention, il est impératif que le start ai exactement le même nom que votre dossier /!\ Nous voici à la partie "map" du tutoriel. Il ne vous apprendra pas à créer une map, mais à la lancer sur votre serveur ! Cela s'appelle du "streaming" puisque pour que les joueurs voient votre mappping, ils vont devoir la télécharger une fois sur le serveur. Sachez que stream une map est le plus simple à faire. 1. Créez donc un dossier avec le nom de votre map, dans notre cas, elle s'appelle "ma_map_gta5" que nous placerons dans notre dossier ressource précédemment créer "[Tutoriel]" et créez dans ce dossier un fichier __resource.lua nécessaire à toute ressource pour fonctionner. 2. Ouvrez désormais votre fichier __resource.lua avec votre éditeur de texte préféré(notepad++ ou autre) et ajoutez dans le fichier ceci au tout début : this_is_a_map ‘yes’ 3. Créez ensuite un dossier stream et placez ensuite votre fichier .ymap dans le dossier. Sachez que vous pouvez placer plusieurs fichiers .ymap dans le même dossier afin d'éviter de créer de multiples dossier par mapping. 4. Démarrez ensuite votre mapping dans le fichier config.cfg. Exemple : start ma_dépendance_principale start ma_dépendance_secondaire start mon_script_fivem # Streaming / Modding start ma_map_gta5 Et vous avez désormais fini d'installer votre mapping sur votre serveur ! Vous pouvez lancer votre serveur et aller voir le mapping Nous allons ensuite apprendre à "stream" une arme moddée pour remplacer une arme existante sur votre serveur FiveM ! 1. Téléchargez une arme moddée de votre choix que vous pourrez trouver sur gta5-mods.com 2. Créez ensuite un nouveau dossier pour y placer vos fichier, dans notre cas le dossier se nommera "ma_super_arme" et placé dans "[Tutorial]". Dans ce dossier vous devrez y créer un fichier __resource.lua que vous laisserez vide cette fois-ci. 3. Placez ensuite dans un dossier nommé stream, tous les fichiers fournis dans l'archive que vous avez télécharger précédemment. 4. Une fois les fichiers placer dans le dossier, votre ressource est prête à être démarrée ! Pour ce faire, c'est identique que les précédentes, vous devez l'ajouter dans la liste des "start". start ma_dépendance_principale start ma_dépendance_secondaire start mon_script_fivem # Streaming / Modding -- Ligne commentaire avec un # qui empêche le processus de lire la ligne. start ma_map_gta5 start ma_super_arme /!\ La possibilité de stream des vêtements est réservée aux adhérents Patreon de Fivem de 15$ + uniquement. Découvrez comment y adhérer ici : /!\ Nous allonsapprendre à "stream" des vêtements moddés pour remplacer des vêtements de joueurs sur votre serveur FiveM ! 1. Téléchargez un pack de vêtements moddés de votre choix que vous pourrez trouver sur gta5-mods.com et soyez sur qu'il concerne les "MP models" ou "Freemode peds" 2. Créez ensuite un nouveau dossier pour y placer vos fichier, dans notre cas le dossier se nommera "mes_super_vetements" et placé dans "[Tutorial]". Dans ce dossier vous devrez y créer un fichier __resource.lua que vous laisserez vide cette fois-ci. 3. Placez ensuite dans un dossier nommé stream, tous les fichiers fournis dans l'archive que vous avez télécharger précédemment. 4. Ouvrez le fichier readme ou le fichier d'installation pour connaître le ped qui peut porter le vêtement. Dans mon cas le fichier readme.txt m'indique que le ped concerné est : mods\x64v.rpf\models\cdimages\streamedpeds_mp.rpf\mp_m_freemode_01. Le dernier dossier du chemin est le ped que vous devez retenir. 5. Vous devrez ensuite ajouter dans le nom de chaque fichier .ytd le nom du ped concerné, dans notre cas, je dois ajouter dans le nom : mp_m_freemode_01^. Le nom de mon fichier ressemblera donc à ça dans la finalité : mp_m_freemode_01^jbib_002_u.ytd et ceci doit être fait pour chaque fichier de vêtement. Cette étape est importante, car elle permet de déterminé exactement quel vêtement pour quel ped il sera modifié. /!\ Attention, il se peut que le ped concerné ressemble à : mp_f_freemode_01_mp_f_battle, malgré ce nom vous devrez y mettre l'entièreté du nom à votre fichier, donc : mp_f_freemode_01_mp_f_battle^ /!\ 6. Nous finirons donc par ajouter mes_super_vetements à notre server.cfg avec : start mes_super_vetements Et vous avez enfin fini d'ajouter des vêtements moddés sur votre serveur ! Vous pouvez désormais démarrer votre serveur et les tester dans un magasin de vêtement. Nous arrivons à la fin de ce tutoriel ! Une nouvelle partie sera ajoutée prochainement concernant l'ajout de véhicules moddés ! En attendant, j'espère que ce tutorial vous apprendra à ne plus être perdu avec vos ressources et dans l'installation de vos mods.
  16. Bonjour à tous ! Voici les différents moyens d'ajouter de la couleur dans vos textes sur le chat, le nom de votre serveur(patreon only) et dans les notifications de vos serveurs ! Pour cela, il vous suffit d'ajouter un petit suffixe à votre texte, comme pour cette exemple : RegisterCommand('color', function(source) -- Enregistrer une commande dans le chat local msg = '~r~This is my color' -- Variable pour définir le texte // Codes couleurs pour les notifications TriggerEvent("chatMessage", "", { 0, 0, 0 }, "^*^=This is Bold + Under^rline + Strikethrough!") -- Envoyer un message dans le chat // Code couleurs pour le chat/nom de serveur SetNotificationTextEntry('STRING') -- Native pour définir quel type de notification nosu voulons AddTextComponentSubstringPlayerName(msg) -- Ajouter notre texte lié à la variable "msg" dans la notification DrawNotification(false, true) -- Afficher la notification end, false) Pour le nom de votre serveur : # Set your server's hostname sv_hostname "^1GTADEV.fr ^r| ^3Test server" Les codes couleurs liés au chat et au nom de votre serveur FiveM : /!\ Seulement les couleurs sont disponible dans le nom de votre serveur /!\ ^1 | Rouge ^2 | Vert ^3 | Jaune ^4 | Bleu foncé ^5 | Bleu clair ^6 | Violet ^7 | Blanc ^8 | Rouge foncé ^9 | Rose clair ^* | Gras ^_ | Souligné ^~ | Barré ^= | Souligné + barré ^*^= | Souligné + barré + gras ^r | Supprimé la couleur après ce symbole Codes couleurs à utilisé dans nos notifications GTA (en utilisant les natives du jeu) : ~r~ | Rouge ~b~ | Bleu ~g~ | Vert ~y~ | Jaune ~p~ | Violet ~o~ | Orange ~c~ | Gris ~m~ | Gris foncé ~u~ | Noir ~n~ | Saut de ligne ~s~ | Suppression de la couleur après ce symbole image ~w~ | Blanc ~h~ | Gras Voici tous codes de couleurs disponible pour embellir vos notifications
  17. JagerBom

    novice commencer un serveur

    Salut a tous! Aujourd'hui je vais vous expliquer comment ouvrir un serveur dans les règles de l'art. car ouvrir un serveur ne se fait PAS en deux minutes ni une semaine. Tout d'abord avant de commencer il faut savoir ou est ce que vous voulez aller, quel type de serveur? rp francais rp américain drift ... Puis il faut se concentrer sur le serveur en lui même. Quels scripts est ce que je veux mettre? Des voitures modées? Faites les règles du serveur Comment sera l'organisation de mon staff Quel économie est -ce que je vasi appliquer ? créer un serveur discord avec tout les channels nécessaire linux ou windows Une fois tout cela fait, faites en sorte que votre développeur développe le serveur en local chez lui sur son pc. Cela vous évite de payer un serveur pour rien; une fois que le serveur est fini, demandez a votre développeur de le lancer chez lui en local et que il partage sa connexion avec Hamachi. Allez sur le serveur et testez tout ce que vous pouvez. Si jamais il y a des bugs, faites le remonter comme ça ils peuvent être corrigées. Les choses importantes a tester: les runs de farm (voir si tout rapporte +- la meme chose) les grades mod / admin / superadmin l'économie du serveur Une fois tout cela fait, faites une réunion entre staff pour bien conclure des règles qui fait quoi et quoi a quoi comme autorisations. Apres cela vous migrez le serveur sans bugs sur un VPS ou dédié, pour le mettre en ligne. La vous serez prêt et vous avez un serveur ou les joueurs peuvent tout de suite commencer a jouer sans qu'il n'y ai de bugs majeur. Il y auras toujours des petites choses a modifier, cela est inévitable, mais la plus part sera purger depuis le debut du processus. Apres pour vous faire connaitre: faites vous un compte sur top-serveur faites une demande de listing de votre serveur sur le site faites une page fb de votre serveur et postez des annonces/events et autres faites une page twitter ATTENTION: si jamais cela se passe mal avec votre développeur, ne donnes PAS accès a n'importe qui. Beaucoup de gens sur Fivem sont malheureusement mal intentionnées, essayent de voler des scripts ou serveurs complet. Faites que confiance a un développeur qui a accès a la machine. Si quelqu'un d'autre veut vous aider, demandez lui de faire un serveur en local et de vous passer le script par mp en zip ou autre.
  18. Très simple sans script supplémentaire. les médecins peuvent revive commentez ces lignes dans le client.lua dans votre ambulance job ESX.TriggerServerCallback('esx_ambulancejob:getItemAmount', function(qtty) if qtty > 0 then else ESX.ShowNotification(_U('not_enough_medikit')) end dans mon cas je commente aussi TriggerServerEvent('esx_ambulancejob:removeItem', 'medikit')
  19. Sarah

    novice Code snippet ESX

    les véhicules de secours ne peuvent être voler ESX = nil Citizen.CreateThread(function() while ESX == nil do TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) Citizen.Wait(1) end end) Citizen.CreateThread(function() while true do Citizen.Wait(1) if IsPedInAnyPoliceVehicle(GetPlayerPed(PlayerId())) then local veh = GetVehiclePedIsUsing(GetPlayerPed(PlayerId()), false) if (GetPedInVehicleSeat(veh, -1) == GetPlayerPed(PlayerId())) then if (PlayerData.job ~= nil and (PlayerData.job.name ~= 'police' or PlayerData.job.name ~= 'ambulance')) then ESX.ShowNotification("Une voiture de police/ambulance n'est pas réservée aux civils..") SetVehicleUndriveable(veh, true) end end end end end)
  20. Qu'est ce qu'un export ? Les exports vous permettent d'utiliser un code hors de votre ressource. Les exports ne s'utilisent pas de la même façon en LUA ou en C#, mais ils fonctionnent généralement de la même façon. Je vais vous expliquer comment les utilisés. Les exports en LUA Les exports LUA sont generalement utilisés pour appelé une fonction déclarée dans une ressource, dans une ressource différente. Mais notez que vous pouvez théoriquement appelé des fonctions LUA depuis du C#, même si ce n'est pas aussi populaire que l'inverse de ceci. Vous pouvez enregistré vos exports lua dans le fichier __resource.lua en ajoutant ceci pour enregistré un export client: export 'FunctionName' Et pour enregistré un export utilisé côté serveur : Pour ajouter vos exports directement depuis votre code en utilisant les functions exports, pour exemple : exports("exportname",function(arg1,arg2,...) -- Votre code ici end) Utiliser des exports en lua est assez simple, vous avez juste à utiliser le code suivant comme référence : exports['ResourceName']:FunctionName(arg1,arg2...) Les détails du code: exports est un tableau général contenant tous les exports de toutes les ressources ['ResourceName'] est la clef pour récupérer l'export d'une ressource spécifique depuis votre tableau contenant tous les exports (ou alors .ResourceName si vous n'avez pas de caractères spéciaux dans le nom.) :FunctionName() est la syntaxe à utilisé pour appeler la fonction spécifique depuis l'export de votre ressource selectionnée. Les exports en C# Les exports en C# sont ceux qui sont le plus présent dans les ressources publiques que vous pouvez trouver. Plutôt que de créer un autre script qui est capable d'appeler une fonction dans votre ressource, vous pouvez aussi utiliser les exports en C# comme un moyen d'appeler d'autre fonctions depuis du code en LUA.(Attention ! Appeler un export en C# depuis un code lua utilisera au minimum un tick serveur, vous devez donc bien réfléchir avant de les utilisé si votre script a besoin d'être rapide dans l'exécution du code!) Comme exemple, Voici une ressource qui utilise des exports en C# qui sont utilisables dans votre code LUA. Comment ajouter des exports en C# ? Commençons par regarder un bout de code, et analysons le : public delegate void MyNewExport(string arg1, int arg2, List<dynamic> arg3); // constructor public YourResourceName() { MyNewExport mynewexport= new MyNewExport(MYNEWEXPORT); Exports.Add("MyNewExport", mynewexport) //add the export! } //method associated with your export public void MYNEWEXPORT(string arg1, int arg2, List<dynamic> arg3) { //do stuff here ... } Donc, tout ce que bout de code fait, créer un export appelé MyNewExport, qui peut être appelé par n'importe quel script, à n'importe quel moment. Pour appeler un export dans votre code LUA, est toujours la même méthode que plus haut, mais nous n'avons pas encore parler de la façon de les appelés en C#. C'est presque l'équivalent que le LUA, voici un exemple : Exports["ResourceName"].FunctionName(arg1,arg2...) Lien original
  21. S'améliorer dans l'utilisation des events Parlons un peu d'exemples de codes pour corriger quelques exploits simple Imaginez que vous avez un inventaire dans votre gamemode. Vous devez stocker vos objets côté serveur pour éviter des glitchs/hacks. Prenons donc un exemple ci dessous: Inventory = { } function Inventory.ConsumeFood() TriggerServerEvent('gamemode:consumeFood') -- Vérifier si le joueur possède la nourriture. end AddEventHandler('gamemode:onFoodConsumed', function(consume) if not consume then return end -- 'consume' est un booléen pour vérifier si le joueur mange. Inventory.DoConsumeFood() -- L'action lors de la consommation de la nourriture comme donner de la vie, de la stamina etc... end) Ce code a de potentiels exploits. Nous allons le corriger étape par étape. Premièrement, avec ce code vous pouvez consommer votre nourriture plusieurs fois en même temps. Ce fix est relativement simple, il suffit d'utilisé un booléen pour vérifier si la consommation est déjà en cours. Inventory.IsConsumingFood = false function Inventory.ConsumeFood() if Inventory.IsConsumingFood then return false end Inventory.IsConsumingFood = true TriggerServerEvent('gamemode:consumeFood') return true --On peut également retourner un booléen pour savoir si la nourriture est consommée. end Mais que ce passe t-il sur un joueur meurt en attendant la réponse du serveur ? Vous devez toujours réfléchir aux events et à n'importe quel event avec Citizen.Wait(ms)qui sont appelées de façon asynchrone*. Et pour corriger ce problème, vous ne devez pas oublier de "remettre à zéro" votre booléen à l'endroit approprié AddEventHandler('playerSpawned', function() Inventory.CancelConsuming() end) -- Il est mieux d\'utiliser une fonction "globale" pour vos futurs objets comme les bandages, boissons etc. function Inventory.CancelConsuming() Inventory.IsConsumingFood = false end AddEventHandler('gamemode:onFoodConsumed', function(consume) if not consume or not Inventory.IsConsumingFood then return end Inventory.DoConsumeFood() end) Ce serait aussi une bonne idée d'annuler le processus de consommation côté serveur. function Inventory.CancelConsuming() if Inventory.IsConsumingFood then TriggerServerEvent('gamemode:cancelConsumingFood') end Inventory.IsConsumingFood = false end Et voilà ! C'est tout pour le moment, si vous avez des questions, n'hésitez pas, nous vous répondrons du mieux que possible *asynchrone Lien original du tutoriel
  22. De retour pour un tuto des bases de RageMP, aujourd'hui on attaque une partie importante : les événements ! Qu'est ce qu'un événement ? Un événement fonctionne sous le même principe qu'une fonction, il en contient d'ailleurs une, mais alors quelle est l'utilité ? Et bien un événement peut être activé depuis un autre script ou même depuis le serveur vers le client et inversement. Encore mieux, un événement peut posséder plusieurs "handler" qui permettent de faire plusieurs fonctions à son appel, il peut donc être intéressant de créer des événements qui seront utilisés fréquemment pour transférer des données entre le client et le serveur et entre les scripts. Comment créer un événement ? Et bien rien de plus simple, une commande est prévue pour ça : mp.events.add('<name>', handler); Il y a deux possibilités pour le handler, on peut utiliser une fonction anonyme ou une fonction crée au préalable : function foo(p1,p2){ //code } //déclaration avec fonction créée mp.events.add('event', foo); //déclare avec une fonction anonyme mp.events.add('event', (p1,p2) => { //code }); Voilà notre événement est prêt a être appelé, à partir de la il y a plusieurs façons de l'appeler, selon de quel côté(serveur ou client) est appelé l'événement et la cible. Voici un récapitulatif rapide : //Serveur vers un client (player est un objet contenant les infos du joueur côté serveur) player.call('name', [arg1, arg2...]) //Ici les arguments sont dans un tableau //Serveur vers tous les clients mp.players.call('name', [arg1, arg2]) //client vers serveur mp.events.callRemote('name', args) // Et ici les arguments sont mis a la suite //Local (client<->client ou server<->server) mp.events.call('name', args) //Pour aller plus loin, il est possible dans l'appel a tous les clients de mettre une fonction de filtre : mp.players.call(mp.players.toArray().filter((_player) => _player.money >100),'name', [args]) //Ici cela sera déclenché pour tous les personnes possédant plus de 100$ par exemple Il existe également des appels pour le CEF mais nous aborderons cela dans un autre tutoriel. En plus de la mise en place, Rage met à disposition des événements appelés dans certaines conditions. Une liste de ces événements est mise à disposition aux liens suivants : Événements serveur Événements client Parmi ces événements, certains nous seront utiles dans des tutoriels à venir et d'autre dans la mise en place d’interactions qui ne seraient pas synchronisées de base par le serveur. Pour aller un peu plus loin : Il est possible de déclarer un événement et de le stocker dans un handler : let ev = new mp.Event('name', (args) => { ... }); ev.destroy(); //L'événement ne pourra plus être appelé ev.enable(); //Cela réactive l'événement
  23. Ce tutoriel vise à débuter le scripting par quelque chose de simple : les commandes. L' API proposé par RageMP propose une function intéressante côté serveur afin de gérer les commandes : mp.events.addCommand("<name>", (player, fullText, args1, args2) => {}); En effet cette fonction va permettre de créer une commande qui sera exécutée lorsque l'utilisateur entrera dans le chat " /<name> ". Par exemple le code suivant : mp.events.addCommand("car", (player, fullText, args1, args2) => {}); sera éxécuté quand un joueur entrera "/car" dans le chat, la deuxième partie signifie que la fonction renvoie en paramètres le joueur de type "player", l'argument fullText qui est l'ensemble des arguments passés dans une chaîne de caractère, puis les arguments successifs qui sont séparés par des espaces. Le plus simple pour comprendre reste de faire un exemple, on va faire deux exemples de commandes, une pour se téléporter et une pour faire apparaître une voiture. Commande pour se téléporter Commençons par créer la base de la ressource, nous allons alors créer un dossier "commands" dans le dossier "packages" de notre serveur. Dans ce dossier commands, nous allons créer un fichier index.js qui sera le fichier exécuté quand le serveur chargera la ressource. Dans ce fichier index.js on va utiliser la fonction vue précédemment : mp.events.addCommand("tp", (player,_,x,y,z) => { //Ici le fullText ne nous intéresse pas, on ne le stock donc pas en utilisant "_" if(!x || !y || !z) return; //Vérifie l'existence des arguments player.position = new mp.Vector3(Number(x),Number(y),Number(z)); //Change la position du joueur qui est une propriété du type mp.Vector3 player.notify(`Vous avez été téléporté aux coordonnées : ${x}, ${y}, ${z}`); //Notifie le joueur que cela a fonctionné }); Maintenant, on peut lancer notre serveur et si tout c'est bien passé, on obtient l'écran suivant : On voit bien que la ressource est démarrée, il suffit de se connecter et de taper la commande : " /tp 0 0 71" par exemple. Commande pour la voiture Ici le code ressemble à ceci : mp.events.addCommand('car', (player, fullText, hash) => { if(!fullText) return; //Vérifie l'existence de l'argument let veh; // On prépare une variable pour stocker le véhicule veh = mp.vehicles.new(hash, player.position, {heading: player.heading, dimension: player.dimension}); // Creation et stockage du véhicule player.putIntoVehicle(veh, -1); // On met le player en tant que conducteur du véhicule }); Pour plus d'information sur la commande mp.vehicles.new cliquez ici. De même, il suffit de redémarrer le serveur pour tester, cela peut être fait rapidement en faisant ctrl+c dans la console puis relancer le serveur, le jeu devrait se reconnecter tout seul au démarrage du serveur. Nous arrivons à la fin de ce tutoriel, j'espère vous avoir aidé sur la compréhension de la mise en place des commandes, si vous avez des questions n'hésitez pas à les poser et à bientot pour la suite des tutoriels sur les bases !
  24. TUTO POUR TAFF A PLUSIEURS Avant de push, pensez à : git rebase -i faire un joli message de commit, de format : type (scope) : quick description Exemple : feat|fix|log|misc|log|etc (police job|ambulance job|etc) : correction d'un bug Comment mettre à jour un serveur ? - Se connecter dessus via ssh - cd /home/nomdudossier/server; git checkout {nomDeLaBrancheVoulue}; git pull; cd ../server-bin; screen -ls - screen -r num - Ctrl + C pour couper le serveur - rm -r cache/;rsync -av --delete --exclude .git .idea ../server/* .;bash ../run.sh +exec scripts/config_{branch}.cfg; - Ctrl + A, relâcher les douches, D - Vous voilà de retour hors du screen, vous pouvez exit comme un gros sale Dev : cd /home/nomdudossier/server; git checkout master; git pull; cd ../server-bin; screen -ls screen -r num rm -r cache/;rsync -av --delete --exclude .git .idea ../server/* .;bash ../run.sh +exec scripts/config_dev.cfg; Prod : cd /home/nomdudossier/server; git checkout dev; git pull; cd ../server-bin; screen -ls screen -r num rm -r cache/;rsync -av --delete --exclude .git .idea ../server/* .;bash ../run.sh +exec scripts/config_prod.cfg; Comment ça marche git ? git versionne les fichiers et fait en sorte qu'on puisse suivre qui fait quoi et quand, sans risque de se marcher dessus git a un système de branches : elles permettent de séparer le code sur lequel on travaille de ce qu'on met en ligne. Ne mettez du code dans master que si vous êtes sûrs de vouloir que ça soit dans la prochaine version accessible à tous les joueurs Pour changer de branche, deux façons : depuis IntelliJ, en bas à droite il y a un petit "Git: quelque chose", vous pouvez choisir une branche. La façon la plus simple reste de cliquer sur "Terminal" en bas, et de mettre "git checkout nomdelabranche" (il la créera si la branche n'existe pas) Pour commit, on peut utiliser la flèche verte en haut à droite sur IntelliJ. Attention toutefois, vous pouvez avoir des fichiers dans "Unversioned files" : ça veut dire qu'ils ne sont pas connus comme "dans le projet". Si vous voulez qu'ils soient envoyés aussi, il va falloir faire un petit "Ctrl + Alt + A" après les avoir sélectionnés. Cochez/Décochez selon si vous voulez que les modifications partent ou non (vous pouvez faire ctrl + D pour voir les modifications plus en détail) Mettez un message en respectant la convention (voir en haut) Voilà, vous avez fait un commit, et vous pouvez le voir en cliquant sur "Version Control" en bas, puis sur le petit onglet "Log". Attention, ça n'est pas fini, votre code est juste commit "chez vous". Si vous voulez finaliser des choses, vous pouvez faire d'autre commits. Sinon, vous devez push. Pour push, le plus simple reste d'utiliser le petit onglet "Terminal" en bas, tapez dedans "git push", il va calculer, vous demander votre login (le mail de connexion Github), puis le mot de passe (de Github), mettez les, et hop, votre code sera en route vers Github Comment ça marche IntelliJ ? IntelliJ, c'est très vaste. C'est un IDE, il vous permet de travailler bien plus efficacement Il y a tout un tas de raccourcis, je vais lister uniquement les plus intéressants : -> Ctrl + Shift + F : chercher dans tout le projet un terme (par exemple, "player"). Une petite fenêtre s'ouvre, c'est pour configurer plus en détail la recherche, et ça vous fait une petite preview. Si vous voulez en voir plus, cliquez sur le bouton en bas qui vous permet d'en afficher plus -> Ctrl + D (en ayant un fichier sélectionné) : ça affiche la différence entre ce fichier et la dernière version commit (que ça soit chez vous ou sur Github). Attention, la fenêtre ne se ferme pas toute seule -> Shift + F6 : renommer le fichier -> F5 : copier un fichier -> F6 : déplacer un fichier -> Ctrl + clic : aller à l'endroit où est déclarée une variable/fonction/autre chose. Avec le Java ça marche mieux qu'en LUA, vu qu'il est un peu con et ne sait pas trop d'où vient la méthode en question (surtout qu'on a pas de doc pour l'API) -> Ctrl + Alt + flèche gauche/droite : aller à l'endroit où vous étiez avant/après (c'est un peu tricky le fonctionnement exact, mais en gros, c'est un historique des endroits où il y avait le curseur, et c'est pratique) -> Il y en a tout un tas d'autres, disponibles ici : https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf Setup git Installer git : https://git-scm.com/downloads Créer un joli dossier où vous voulez mettre le code Ouvrir une console, se mettre dans le dossier au dessus de celui précédent (avec des cd) git clone https://github.com/votrelien/dossier.git lenomdetonsuperdossier Aller se faire un café vu que ça pèse tout le code prod + dev Et voilà, vous avez un magnifique repo git chez vous Setup IntelliJ Télécharger la Community https://www.jetbrains.com/idea/download/ Installer et mettre un joli thème comme on veut Au lancement, choisir "open" (vu que vous avez déjà clone le repo) Trouver le joli dossier créé plus tôt, le sélectionner, valider Il va charger tout ça et vous ouvrir IntelliJ
  25. Bonjour a tous, Simple tutoriel vous permettant de récupérer le steamID de vos joueurs. 1.Copiez le lien de son profile steam: Profile sans steamID64: https://steamcommunity.com/id/Nickname Profile avec steamID64: https://steamcommunity.com/id/765611980xxxxxxxx 2.Votre steamID64: Si vous avez un profile avec un steamID64, vous pouvez directement passer a l'étape 3. Dans le cas contraire, rendez-vous sur le site SteamID afin de récupérer le steamID64. 3.Transformation du steamID64 en hexadécimal: Rendez vous sur le site BinaryToHex puis insérez le steamID64. Convertissez afin de le récupérer en hexadécimal. exemple: 1B33334D3DAAC0 Il suffira ensuite d'ajouter le préfix "steam:" => steam:1B33334D3DAAC0 Merci de votre attention
×
×
  • Create New...

Important Information

En utilisant ce site, vous acceptez les présents règlements Terms of Use, Privacy Policy,Guidelines.