Merhabalar, garry’s mod sunucusu açan arkadaşlar sunucuları belli başlı şeyler aramakta. Sıklıkla aranan ve faydalı olabileceğini düşündüğüm kodları aşağıda bulabilirsiniz, zamanla yenilerini ekleyeceğim.
- Oyuncular chatten !workshop yada !w yazarak workshop koleksiyonunuza, !grup yazarak steam grubunuza erişebilirler. lua/autorun/client/cl_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
hook.Add( "OnPlayerChat", "Chatkomutlari", function( ply, strText, bTeam, bDead ) if ( ply != LocalPlayer() ) then return end strText = string.lower( strText ) if strText == "!workshop" or strText == "!w" then gui.OpenURL( "http://steamcommunity.com/koleksiyonunuz" ) return true elseif strText == "!grup" then gui.OpenURL( "http://steamcommunity.com/groups/grubunuz" ) return true end end )
- Belirlenen oyuncu grupları belirlenen prop ve entityleri physgun ile tutamaz. Aşağıdaki kodda superadmin ve admin dışındaki oyuncular prop_vehicle_jeep adlı entityi ve aşağıda belirtilmiş modeli olan bir prop’u physgun ile tutamazlar. lua/autorun/server/sv_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
local yasakli_yetkililer = {} local yasakli_proplar = {} local yasakli_entityler = {} yasakli_yetkililer = { ["superadmin"] = false, ["admin"] = false, ["moderator"] = true, ["helper"] = true, ["user"] = true, } yasakli_proplar = { ["models/hunter/blocks/cube025x3x025.mdl"] = true, } yasakli_entityler = { ["prop_vehicle_jeep"] = true, } local function PlayerPickup( ply, ent ) if ( not yasakli_yetkililer[ply:GetUserGroup()] ) and ( yasakli_entityler[ent:GetClass()] or yasakli_proplar[ent:GetModel()] ) then return true end end hook.Add( "PhysgunPickup", "tutma_izni", PlayerPickup )
- Oyuncular Spawn menüsünde (q menü) kapadığınız yerleri görmeyecek. lua/autorun/client/cl_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
//Diger sekmeleri surdan bulabilirsiniz https://github.com/Facepunch/garrysmod/blob/master/garrysmod/resource/localization/en/spawnmenu.properties local silineceksekmeler = { language.GetPhrase("spawnmenu.category.npcs"), language.GetPhrase("spawnmenu.category.entities"), language.GetPhrase("spawnmenu.category.weapons"), language.GetPhrase("spawnmenu.category.vehicles"), language.GetPhrase("spawnmenu.category.postprocess"), language.GetPhrase("spawnmenu.category.dupes"), language.GetPhrase("spawnmenu.category.saves") } local yasakli_yetkililer = { ["superadmin"] = false, ["admin"] = false, ["moderator"] = false, ["helper"] = false, ["user"] = true, } local function sekmelerisil() if yasakli_yetkililer[LocalPlayer():GetUserGroup()] then for k, v in pairs( g_SpawnMenu.CreateMenu.Items ) do if table.HasValue(silineceksekmeler, v.Tab:GetText()) then g_SpawnMenu.CreateMenu:CloseTab( v.Tab, true ) sekmelerisil() end end end end hook.Add("SpawnMenuOpen", "sekmeleri_kaldir", sekmelerisil)
- Sunucunuzda bazı toolların kullanımını engellemek için kullanabileceğiniz kod. lua/autorun/server/sv_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
local yasaklitoollar = { ["remover"] = true, } //yasakli toolunuzu sadece tekbir entity icin yasaklamak istiyorsaniz alttaki yontemi kullanin. local yasaklientity = { ["remover"] = { ["prop_door_rotating"] = true, }, } local yasakli_yetkililer = { ["superadmin"] = false, ["admin"] = false, ["moderator"] = false, ["helper"] = false, ["user"] = true, } hook.Add("CanTool","tool_engelleme",function(ply, tr, tool) //Aradigin bir tool varsa ismini burdan bulabilirsin //print(tool) if yasakli_yetkililer[ply:GetUserGroup()] and yasaklitoollar[tool] then if yasaklientity[tool] then if IsValid( tr.Entity ) and yasaklientity[tool][tr.Entity:GetClass()] then ply:ChatPrint( "Bu tool'u kullanamazsın!" ) return false end else ply:ChatPrint( "Bu tool'u kullanamazsın!" ) return false end end end)
- Oyuna bağlanan özel bir kişi için ses gibi efektler oluşturabilirsiniz. lua/autorun/server/sv_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
local function oyuna_baglanan( ply, steamid, uniqueid ) // Steamid'yi kendinize gore degistirin if steamid == "STEAM_0:0:00000000" then // Herkesin chatinda belirlenmis olan oyuncu sunucuya baglandigi zaman uc kere spam yapar. for _, v in ipairs(player.GetAll()) do for i=1,3 do v:ChatPrint( ply:Nick().. " adlı oyuncu sunucuya baglandı!!!" ) end end // Secilmis oyuncu oyuna baglaninca herkesde asagidaki hl2 muzigi calar. Muzikler icin https://maurits.tv/data/garrysmod/wiki/wiki.garrysmod.com/index8f77.html for k,v in pairs(player.GetAll()) do v:ConCommand( "play music/HL2_song20_submix4.mp3" ) end // Eger muzik cok uzunsa asagidaki 10 saniyeyi degistirerek otomatik durdurtabilirsiniz. (Aktiflestirmek icin kodun basindaki // bariyerleri kaldir) //timer.Simple( 10, function() // for k,v in pairs(player.GetAll()) do // v:ConCommand( "stopsound" ) // end //end) // Internetten belirledigin muzigi oyuncu baglaninca herkesde calar. Asagida settime(70) yazan kismi caldirmak istediginiz sure kadar degisin. (Aktiflestirmek icin kodun basindaki // bariyerini kaldir) //for _, v in ipairs(player.GetAll()) do v:SendLua([[sound.PlayURL("http://websitesi.com/sesdosyan.mp3","mono noblock",function(s)if(IsValid(s))then s:SetTime(70) s:SetPos(LocalPlayer():GetPos())s:Play()end end)]]) end // Herkesde bir patlama efekti sesi cikarir. (Aktiflestirmek icin kodun basindaki // bariyerleri kaldir) //for k,v in pairs(player.GetAll()) do // v:ConCommand( "play ambient/explosions/explode_1.wav" ) //end // Herkesde deprem olur. (Aktiflestirmek icin kodun basindaki // bariyerini kaldir) //for _, v in ipairs(player.GetAll()) do v:SendLua( "util.ScreenShake( LocalPlayer():GetPos(), 175, 50, 1, 10000 )" ) end end end hook.Add( "PlayerAuthed", "oyuna_baglanan_kisiler", oyuna_baglanan )
- İntihar etmeyi belirlediğiniz kullanıcı gruplarına kapatır. lua/autorun/server/sv_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
local izinli_yetkililer = { ["superadmin"] = true, ["admin"] = true, ["moderator"] = true, ["helper"] = true, ["user"] = false, } hook.Add( "CanPlayerSuicide", "oldurmekapat", function(ply) if izinli_yetkililer[ply:GetUserGroup()] then return true end ply:ChatPrint("İntihar edemezsin! :(") return false end)
- Spawn menüsünü (Q menü) belirlediğiniz kullanıcı gruplarına açar, Context menüsünü (C menü) belirlediğiniz kullanıcı gruplarına yada belirlediğiniz joblara açar. Kodlar için baristaner‘e teşekkürler. lua/autorun/client/cl_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
local izinliusergrouplar = { ["admin"] = true, ["superadmin"] = true, ["helper"] = true, ["moderatör"] = true, ["user"] = false, } //Spawn menusu icin (Q menusu) local izinlijoblar = { //jobs.lua'daki job kodunuzda bulunan command degiskeninin icerigini girin ["meslek1"] = true, ["meslek2"] = true, } hook.Add("ContextMenuOpen", "allowedjobsrestriction", function() if not izinliusergrouplar[LocalPlayer():GetUserGroup()] then return false end end) hook.Add("SpawnMenuOpen", "Disallow_q_menu", function() if not( izinliusergrouplar[LocalPlayer():GetUserGroup()] or izinlijoblar[RPExtraTeams[LocalPlayer():Team()].command]) then return false end end)
- Sunucunuzda oyuncuların ekranına belirlemiş olduğunuz pozisyonda logonuzu basar. Logo için material klasörüne .jpg yada .png olarak atabilirsiniz fakat kesinlikle .vtf ve .vmt materyal dosyaları olarak oluşturmanızı öneriyorum. Bu dosyaları oluşturma hakkındaki yazıma gitmek için buraya tıklayın. Kodlar için baristaner‘e teşekkürler. lua/autorun/sh_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
if SERVER then //Logo dosyaniz. Duzenlemeyi unutmayin resource.AddFile( "materials/gm_construct/flatsign.vmt" ) resource.AddFile( "materials/gm_construct/flatsign.vtf" ) else local config = {} config.logo = Material("gm_construct/flatsign") // Logonuz icin yaptiginiz materyalin yolunu girin, materyal yapimi hakkinda yazi sitede mevcuttur. config.resimyukseklik = 100 config.resimgenislik = 200 config.boyuna = 0 -- Sag ust ve Sol ust icin 0 , Sag Alt ve Sol alt icin ScrH()-config.resimyukseklik config.enine = 0 -- Sag ust ve Sag alt icin ScrW()-config.resimgenislik , Sol ust ve Sol alt icin 0 hook.Add( "HUDPaint", "logohud", function() surface.SetMaterial(config.logo); surface.SetDrawColor(255,255,255,255) surface.DrawTexturedRect( config.enine, config.boyuna, config.resimgenislik, config.resimyukseklik); end) end
- Otomatik 60 saniyede bir ragdolls ve decalsları temizletmek için aşağıdaki kodları kullanabilirsiniz. lua/autorun/client/cl_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
timer.Create( "ragdoll_decals_silici", 60, 0, function() RunConsoleCommand("r_cleardecals") for _,ent in pairs(ents.GetAll()) do if (ent:GetClass() == "class C_ClientRagdoll") then ent:Remove() end end end) //Direk ragdollarin cikar cikmaz silinmesi icin ise alltaki kodu kullanin (kodun basindaki // slashlari kaldirin) //hook.Add("OnEntityCreated", "ragdoll_decals_silici", function(ent) // if (ent:GetClass() == "class C_ClientRagdoll") then // RunConsoleCommand("r_cleardecals") // ent:Remove() // end //end)
- Spawn olmasını istemediğiniz propları engelleyebilirsiniz. lua/autorun/server/sv_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
yasakli_yetkililer = { ["superadmin"] = false, ["admin"] = false, ["moderator"] = true, ["helper"] = true, ["user"] = true, } yasakli_proplar = { ["models/hunter/blocks/cube025x3x025.mdl"] = true, } hook.Add( "PlayerSpawnProp", "propspawn", function(ply, model) if ( yasakli_yetkililer[ply:GetUserGroup()] and yasakli_proplar[model] ) then return false end end )
- Sürekli prop çıkaranlar için (prop spam) küçük bir önleyici kod. lua/autorun/server/sv_xxxxxx.lua adlı dosya oluştururarak kodları içine atın.
hook.Add( "PlayerSpawnProp", "propspamprotect", function(ply, model) if timer.Exists( "prop_"..ply:SteamID64() ) then return false end timer.Create( "prop_"..ply:SteamID64(), 1, 1, function() end ) end )
5 yorum
baristaner · 15 Haziran 2019 20:28 tarihinde
— C&Q
local izinliusergrouplar = {
[“admin”] = true,
[“superadmin”] = true,
[“helper”] = true,
[“moderatör”] = true,
}
local izinlijoblar = {
[“meslek1”] = true,
[“meslek1”] = true,
}
local propLimit = 5
if CLIENT then
hook.Add(“ContextMenuOpen”, “allowedjobsrestriction”, function()
if not allowedGroups[LocalPlayer():GetUserGroup()] and not table.HasValue({“moderator”}, LocalPlayer():GetUserGroup()) then return false end
end)
hook.Add(“SpawnMenuOpen”, “Disallow_q_menu”, function()
if not (izinliusergrouplar[LocalPlayer():GetUserGroup()] or izinlijoblar[RPExtraTeams[LocalPlayer():Team()].command]) then
return false
end
end)
end
Admin · 15 Haziran 2019 21:48 tarihinde
Yazıya eklenmiştir, teşekkürler.
Etkin · 27 Mart 2020 16:23 tarihinde
–bir tane font(yazı tipi) ayarlıyoruz.
surface.CreateFont(“HUD”, {
font = “Arial”,
extended = false,
size = ScrW()/50,
weight = 500,
blursize = 0,
})
–HUD çizilmesi için hook ekliyoruz.
hook.Add(“HUDPaint”, “DarkRP HUD”, function()
–Değişkenlerimiz
local health = LocalPlayer():Health()
local armor = LocalPlayer():Armor()
–draw ile başlayanlar ekrana çizilen şeylerdir.
draw.RoundedBox(10, ScrW()/100, ScrH()/1.10, ScrW()/4, ScrH()/30, Color(0, 0, 0, 200))
draw.RoundedBox(10, ScrW()/100, ScrH()/1.10, math.min(100,health) * 3.42, ScrH()/30, Color(255, 255, 255, 200))
draw.SimpleText(health, “HUD”, ScrW()/8, ScrH()/1.08,Color(255,0,0,255), 1,1)
draw.RoundedBox(10, ScrW()/100, ScrH()/1.05, ScrW()/4, ScrH()/30, Color(0, 0, 0, 200))
draw.RoundedBox(10, ScrW()/100, ScrH()/1.05, math.min(100,armor) * 3.42, ScrH()/30, Color(255, 255, 255, 200))
draw.SimpleText(armor, “HUD”, ScrW()/8, ScrH()/1.035,Color(255,0,0,255), 1,1)
end)–Burda çizme olayını bitiriyoruz.
local hideHUDElements = { –Darkrp kendi huduna sahiptir bunları kapatıyoruz.
[“DarkRP_HUD”] = true,–sadece bu kısmı true yaparsanız ekrandaki şeyler kapanacaktır.Fakat biz yine de sağlama alalım.
[“DarkRP_EntityDisplay”] = true,
[“DarkRP_LocalPlayerHUD”] = true,
[“DarkRP_Hungermod”] = v,
[“DarkRP_Agenda”] = true,
[“DarkRP_LockdownHUD”] = true,
[“DarkRP_ArrestedHUD”] = true,
[“DarkRP_ChatReceivers”] = true,
}
hook.Add(“HUDShouldDraw”, “HideDefaultDarkRPHud”, function(name)
–Kapatılan özellikleri oyunumuzun algılamasını sağlıyoruz.
if hideHUDElements[name] then return false end
end)
–Bu kadar !
Etkin · 27 Mart 2020 16:32 tarihinde
function ENT:Use(act,call)
if act:Health() == act:GetMaxHealth() then
act:ChatPrint(“Canın zaten dolu !”)
else
act:SetHealth(act:Health + 30)
self:Remove()
yemek_sesi = CreateSound(act,Sound(“ses yolu”))
yemek_sesi:Play()
act:ChatPrint(“Afiyet olsun.”)
end
end
Yemek eklentisinin kısa temeli
Etkin · 27 Mart 2020 17:12 tarihinde
init.lua kısmı
function ENT:Use(activator)
util.AddNetworkString(“etkin_unique_ent_menu”)
net.Start(“etkin_unique_ent_menu”)
net.Send(Entity( 1 ))
end
cl_init kısmı
net.Receive(“etkin_unique_ent_menu”, function(len,pl)
local ent = net.ReadEntity()
local str = net.ReadString()
local menu = vgui.Create(“DFrame”)
menu:SetPos(ScrW()/4,ScrH()/5)
menu:SetSize(ScrW()/2, ScrH()/1.5)
end)
bu şekilde network kullanarak entity e basınca panel açabilirsiniz.