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 )

 

 

 

 


2 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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir