Le gamemode de DarkRP propose déjà cette options de faire payer un props. Mais le script suivant présente une petit fenêtre qui demande au joueurs de valider leur choix par "Oui" ou par "Non", ce qui est plus joli visuellement.
Tutoriel proposé par Nicolas22
Installation du script
Il vous suffira de créer un dossier paytospawn
dans votre dossier addons
.
Ensuite dans le dossier paytospawn
de recréer un dossier nommé lua
et encore un autre dossier nommé autorun
.
Ajouter ce code dans un fichier nommé shared.lua
:
lmmpropcost = 75 -- Changer le prix du spawn d'un objet (A) if (SERVER) then util.AddNetworkString("LMMPlayerSpawnPropCL") util.AddNetworkString("LMMPlayerSpawnPropCLBack") hook.Add( "PlayerSpawnProp", "LMMPlayerSpawnProp", function( ply, mdl ) if ply:GetNWBool("LMMCanSpawnProp") then return true else net.Start("LMMPlayerSpawnPropCL") net.WriteString(mdl) net.Send(ply) end end ) net.Receive("LMMPlayerSpawnPropCLBack",function(len, ply) local mdl = net.ReadString() ply:addMoney(-lmmpropcost) ply:SetNWBool("LMMCanSpawnProp",true) ply:ConCommand("gm_spawn "..mdl) timer.Simple(1,function() ply:SetNWBool("LMMCanSpawnProp",false) end) end) end if (CLIENT) then surface.CreateFont( "DRPTitleFont", { font = "Arial", size = 25, weight = 5000, blursize = 0, scanlines = 0, antialias = true, }) surface.CreateFont( "DRPLabelFont", { font = "Arial", size = 20, weight = 5000, blursize = 0, scanlines = 0, antialias = true, }) surface.CreateFont( "DRPBtnLabelFont", { font = "Arial", size = 15, weight = 5000, blursize = 0, scanlines = 0, antialias = true, }) net.Receive("LMMPlayerSpawnPropCL",function() local mdl = net.ReadString() local DFrame = vgui.Create( "DFrame" ) DFrame:SetSize( 450, 100 ) DFrame:Center() DFrame:SetTitle( "" ) DFrame:SetDraggable( false ) DFrame:ShowCloseButton(false) DFrame:MakePopup() function DFrame:Paint(w, h) draw.RoundedBox(2, 0, 0, self:GetWide(), self:GetTall(), Color(35, 35, 35, 250)) draw.RoundedBox(2, 0, 0, self:GetWide(), 30, Color(0, 102, 255, 250)) draw.SimpleText( "Payer pour spawn un props!", "DRPTitleFont", self:GetWide() / 2, 15, Color(255,255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end local Label1 = vgui.Create("DLabel", DFrame) Label1:SetPos(30,40) Label1:SetSize(400,20) Label1:SetText("Etes-vous sûre de payer "..DarkRP.formatMoney(lmmpropcost).." pour le faire spawn?") Label1:SetTextColor(Color(255,255,255,255)) Label1:SetFont("DRPLabelFont") local YesBTN = vgui.Create("DButton", DFrame) YesBTN:SetPos(30, 70) YesBTN:SetSize(150, 20) YesBTN:SetText("Oui") YesBTN:SetFont("DRPBtnLabelFont") YesBTN.OnCursorEntered = function(self) self.hover = true end YesBTN.OnCursorExited = function(self) self.hover = false end YesBTN.Paint = function( self, w, h ) if self.IsClose then draw.RoundedBox(0, 0, 0, w, h, (self.hover and Color(88,0,0,250) or Color(255,255,255,255))) -- Paints on hover else draw.RoundedBox(0, 0, 0, w, h, (self.hover and Color(0,160,255,250) or Color(255,255,255,255))) -- Paints on hover end self:SetTextColor(self.hover and Color(255,255,255,255) or Color(0,0,0,250)) end YesBTN.DoClick = function() net.Start("LMMPlayerSpawnPropCLBack") net.WriteString(mdl) net.SendToServer() DFrame:Close() end local NoBTN = vgui.Create("DButton", DFrame) NoBTN:SetPos(220, 70) NoBTN:SetSize(150, 20) NoBTN:SetText("Non") NoBTN.IsClose = true NoBTN:SetFont("DRPBtnLabelFont") NoBTN.OnCursorEntered = function(self) self.hover = true end NoBTN.OnCursorExited = function(self) self.hover = false end NoBTN.Paint = function( self, w, h ) if self.IsClose then draw.RoundedBox(0, 0, 0, w, h, (self.hover and Color(88,0,0,250) or Color(255,255,255,255))) -- Paints on hover else draw.RoundedBox(0, 0, 0, w, h, (self.hover and Color(0,160,255,250) or Color(255,255,255,255))) -- Paints on hover end self:SetTextColor(self.hover and Color(255,255,255,255) or Color(0,0,0,250)) end NoBTN.DoClick = function() DFrame:Close() end end) end