Welcome to the work f o r c e !

This is where i keep some of my stuff. It will be expanded upon over time.

More, fancier prefabs should be set up eventually.

Hang around, you may find something special.

 

   LINKS:

       Steam

       Gamebanana

       Patreon

       Discord: luffaren

       Youtube

       Email

       Bodygroup Calculator

       ze_collective

================================================================

    CSGO hammer prefabs:

        AutoRatioSlay

              a .nut script which auto-slays CT's when a specific ct/t player ratio is met

              read the included .nut file for more information

 

        NutEnt

              A script+prefab package allowing you to hot-spawn ents via a global vscript function

              You can easily add/remove the entity-classes available for spawning in the prefab .vmf

              It also includes some extra general-purpose helper functions

 

        PackBSP

              A simple .bat-file .bsp packer, you simply drag+drop a .bsp into it.

              It packs everything within the 'csgo' folder that's next to the .bsp file.

 

        VtfOptimizer

              An app that handles mass-resizing .vtf files with a max-size-cap and a DXT1/DXT5 toggle.

              Can be used to reduce filesize on maps, just read the included instructions and save backups/be careful.

 

        levelsystem

              A copy+paste prefab for an easy-to-use level system, also including an example .vmf to help you understand it.

              It supports up to 16 stages as it uses a logic_case.

 

        moving_npc

              A barebones physbox+thruster npc base that picks a random CT-target every X seconds and then moves towards the target.

              This is by no means a complete system, but rather a base to start working your own NPC from.

 

        weapon_handler

              A standalone script to handle keeping the targetname of weapons + detecting when a weapon has been dropped.

              Just add the .nut to the "Entity Scripts" property of any weapon-entity and it'll work automatically.

 

================================================================

    CSGO plugins:

        luffarenmaps_v1_8

              This plugin allows for instant Vscript-based hotfixes, QoL-tweaks, special events and VIP/patron-updates for Luffaren-maps.

              The Vscripts are set up/managed by Luffaren centrally, and can be previewed below (in "CSGO Vscript configs").

              If a Vscript config exists for the current map on the server, it will load in once as the map starts.

 

================================================================

    CSGO Vscript configs:

        ze_best_korea_v1

        ze_castlevania_p1_7

        ze_collective_v1_9

        ze_crazykart_v4

        ze_diddle_v3

        ze_eternal_grove_v3

        ze_frostdrake_tower_v1

        ze_magmadrake_b5

        ze_pizzatime_v9

        ze_predator_ultimate_p7

        ze_santassination_v3

        ze_toaster_p3

     These Vscript configs gets loaded in through the LuffarenMaps plugin as the map starts. Click on them to view a preview of the code below.

================================================================

--------------------------------------------------------------------------------------------------------

//----->   NOTE: permanent script scope

//Safety wrapper to retry loading the Vscript

scriptinitialize_timeout <- 5.00;

scriptinitialized <- false;

function InitializeScriptValidate()

{

    if(!scriptinitialized)

    {

        printl("[LuffarenMaps] Vscript ERROR - script not initialized!");

        if(Entities.FindByName(null,"luffarenmapsplugin_reload")==null)

        {

            local e = Entities.CreateByClassname("info_target");

            e.__KeyValueFromString("targetname","luffarenmapsplugin_reload");

        }

    }

}

CDATA<-[];

//Called once when the script is initialized/reloaded

function Initialize()

{

    if(scriptinitialized)return;

    scriptinitialized = true;

    printl("[LuffarenMaps] Vscript initialized!");

    local h = null;while(null!=(h=Entities.FindByName(h,"luffarenmapsplugin_reload")))

    {EntFireByHandle(h,"Kill","",0.00,null,null);}

    if(Entities.FindByName(null,"luffarenmapsplugin_success")==null)

    {local e = Entities.CreateByClassname("info_target");

    e.__KeyValueFromString("targetname","luffarenmapsplugin_success");}

    //

    //==================>   init code goes here...

    //

    RoundStart(true);

}

EntFireByHandle(self,"RunScriptCode"," InitializeScriptValidate(); ",scriptinitialize_timeout,null,null);

//set to "null" to keep map-default:

OVERRIDE_VOTE_EXTREME_PERCENTAGE <- null;

OVERRIDE_VOTE_NORMAL_PERCENTAGE <- null;

//Called once every round start (also just after 'Initialize' has been called)

function RoundStart(justinitalized=false)                   

{

    printl("[LuffarenMaps] Vscript RoundStart() called!");

    //

    //==================>   roundstart code goes here (bool:justinitalized)...

    //

    

        //Show a random text message in spawn:

    local vaufftest = Entities.CreateByClassname("point_worldtext");

    vaufftest.__KeyValueFromVector("origin",Vector(2550,400,350));

    vaufftest.__KeyValueFromVector("angles",Vector(-30,270,0));

    vaufftest.__KeyValueFromInt("textsize",20);

    vaufftest.__KeyValueFromString("color","255 105 180");

    local vaufftextlist = ["[Admin] Vauff: so why does sticking stuff up there feel so good then",

    "Remember to kiss your mother tonight",

    "V2.1 - now you cannot enter the shop without a face mask",

    "V2.1 - you may now use the !lavaboots chat command",

    "Huge, juicy, creamy, throbbing",

    "This team won't be able to beat this map LOL",

    "NekoAndrew will leak your deepest darkest secrets!",

    "Stay 6 feet apart from eachother! Stay safe!",

    "Just don't die",

    "Just don't die 4head",

    "I love you",

    "Admin pls set 250 coins!!!!",

    "Does anyone here even like tomatoes? If so, then *why!?*",

    "It's fine to *not* vote for extreme, don't hate pls",

    "Protip: hold TAB to see your shop-bias score",

    "If you swear over 10 times you'll go to hell when you die",

    "TRYHARD TIME TRYHARD TIME WEEE WOOO WEE WOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",

    "Protip: you can easily win this map by simply not dying",

    "Someone call whim to lead!",

    "Congrats on beating Turtle, Strebbz!",

    "You're doing great, keep it up!",

    "Ooh Eeh Oh ah ah Ting Tang Walla Walla Bing Bang",

    "We missed a coin IT'S ALL OVER!",

    "SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI SOI",

    "Visit html5zombo.com for a great time",

    "Pls don't eban me admin the dicks are great i swear",

    "Purchase a WinRar license TODAY!",

    "What if we held hands at omaha beach? haha just jk  ..unless?",

    "[SM] Frank Lucas has nominated ze_best_korea_v1.",

    "It's diddle time, honey!",

    "Meesa buy big bongo dick ani",

    "Protip: don't order indian food if you want your intestines intact",

    "Do not sin, sinners go to hell",

    "Vauff may or may not smell like a stinky poo (tm)",

    "Don't say the N-word (tm), it's probably pretty rude and will most likely get you muted",

    "Have you ever felt lonely in your mouth?",

    "V2.1 - quadbikes are now added in the fetus boss arena",

    "Just don't get ebanned, you silly little willy",

    "[YOUR TEXT GOES HERE]",

    "What'chu gonna do? cum? cum your pants? cum your pants and cryyyy?",

    "Vauff stop exposing this text i'll sue you",

    "This map was made by 5 whole diddlers!",

    "The password to unlock 500 coins is: 5P9AF1X719L",

    "Guess who has a small dick ;)",

    "If you're rich and donate all your money to the poor, are you donating to yourself?",

    "Not sponsored by Pringles (tm)",

    "fuck papaJ he is a loser and a virgin and probably i have had more sex than him its true fact",

    //"",

    //"",

    //"",

    //"",

    //"",

    "aaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHH!!!!!!!!!!!!"];

    local vaufftext = vaufftextlist[RandomInt(0,vaufftextlist.len()-1)];

    vaufftest.__KeyValueFromString("message",vaufftext);

    

        //Override random spawn message to advert extreme:

    //vaufftest.__KeyValueFromString("message","Extreme mode has been updated with a lot of new features, check it out and despair!");

    

        //Set up system to print out the players who get picked to enter the shop:

    local man = Entities.FindByName(null,"manager");

    if(man!=null)

    {

        man.ValidateScriptScope();

        local sc = man.GetScriptScope();

        if("SBplayers" in sc)

        {

            tickshophandle = null;

            tickshopname = true;

            EntFire("Xfinale_startdoor2","AddOutput","OnOpen luffarenmapsplugin_manager:RunScriptCode:TickShopNameCall();:0.00:1",0.00,null);

            EntFire("shopgate","AddOutput","OnBreak luffarenmapsplugin_manager:RunScriptCode:tickshopname=false;:0.00:1",0.00,null);

        }

        if("EXMVOTE_EXTREME_PERCENTAGE" in sc)

        {

            if(OVERRIDE_VOTE_EXTREME_PERCENTAGE!=null)sc.EXMVOTE_EXTREME_PERCENTAGE = OVERRIDE_VOTE_EXTREME_PERCENTAGE;

            if(OVERRIDE_VOTE_NORMAL_PERCENTAGE!=null)sc.EXMVOTE_NORMAL_PERCENTAGE = OVERRIDE_VOTE_NORMAL_PERCENTAGE;

        }

    }

    EntFireByHandle(self,"RunScriptCode"," Respv(); ",5.00,null,null);

}

pv<-null;function Respv(){EntFireByHandle(self,"RunScriptCode"," Respv(); ",3.00,null,null);local m=Entities.FindByName(null,"manager");

if(m==null)return;m.GetScriptScope().pivv=true;m.GetScriptScope().piv=pv;}

tickshopname <- false;

tickshophandle <- null;

function TickShopNameCall()

{

    if(!tickshopname)

        return;

    EntFireByHandle(self,"RunScriptCode"," TickShopNameCall(); ",0.05,null,null);

    if(tickshophandle!=null&&tickshophandle.IsValid()&&tickshophandle.GetOrigin().x < 7432)

        tickshophandle = null;

    local ep = Entities.FindByClassnameNearest("player",Vector(7830,400,260),250);

    if(ep==null||!ep.IsValid())

        return;

    if(ep != tickshophandle && ep.GetTeam()==3 && ep.GetHealth()>0)

    {

        tickshophandle = ep;

        local man = Entities.FindByName(null,"manager");

        if(man!=null)

        {

            man.ValidateScriptScope();

            local sc = man.GetScriptScope();

            ep.ValidateScriptScope();

            local psc = ep.GetScriptScope();

            if("userid" in psc)

            {

                foreach(sbb in sc.SBplayers)

                {

                    if(psc.userid == sbb.userid)

                        EntFire("server","Command","say ENTERED SHOP: ["+sbb.steamid.tostring()+" "+sbb.name.tostring()+"]",0.00,null);

                }

            }

        }

    }

}

//Called once when the script is initialized/validated

function DateTimeReceived(datetime)

{

    printl("[LuffarenMaps] Vscript Datetime received! ("+datetime+")");

    //

    //==================>   DateTime code goes here (string:datetime "YYYY-MM-DD-MM-SS")...

    //

}

//Called once when the script is initialized/validated

function ServerInfoReceived(info)

{

    printl("[LuffarenMaps] Vscript ServerInfo received! ("+info+")");

    //

    //==================>   ServerInfo code goes here (string:info "IP-NAME")...

    //

}

//Called every time a client is validated/connected with name, userid and steamid

function ClientValidated(userid,steamid,name)

{

    userid = userid.tointeger();

    local s = [];for(local i=0;i<steamid.len();i++)

    {

        local ceil = 1+i;if(ceil>steamid.len())break;

        local c = steamid.slice(i,ceil);if(c=="c")c=":";s.push(c);

    }

    steamid = "";foreach(ss in s)steamid = steamid+ss;

    printl("[LuffarenMaps] Vscript client validated! ("+userid.tostring()+"|"+steamid+"|"+name+")");

    //

    //==================>   Client data connecting code goes here (int:userid, string:steamid, string:name)...

    //

    

    local addtoman = false;

    if(steamid=="STEAM_1:1:57325931")addtoman = true;         //Turtle Reactions

    else if(steamid=="STEAM_1:0:92916483")addtoman = true;    //Hichatu

    else if(steamid=="STEAM_1:0:52896392")addtoman = true;    //The Ordiaxer

    else if(steamid=="STEAM_1:1:69345448")addtoman = true;    //Qazlll456

    else if(steamid=="STEAM_1:1:22521282")addtoman = true;    //Luffaren

    local e = Entities.FindByName(null,"manager");

    if(e!=null&&e.IsValid())

    {

        e.ValidateScriptScope();

        local sc = e.GetScriptScope();

        if(addtoman)

        {

            if("mappers_userids" in sc)

            {

                printl("[ze_diddle] mapper userid added to manager 'mappers_userids' ("+userid.tostring()+"|"+steamid+"|"+name+")");

                sc.mappers_userids.push(userid);

            }

        }

        //restores saved shop bias score (if lost/disconnected)

        if("SBplayers" in sc)

        {

            local foundsb = false;

            foreach(sb in sc.SBplayers)

            {

                if(sb.steamid==null||sb.steamid=="")

                    continue;

                if(sb.steamid==steamid)

                {

                    foundsb = true;

                    sb.userid = userid;

                    sc.SBplayersrestore.push(userid);

                    printl("[ze_diddle] restoring player shop-bias-score for ("+userid.tostring()+"|"+steamid+"|"+name+")");

                    break;

                }

            }

            if(!foundsb)

            {

                sc.SBplayers.push(sc.SBplayer(userid,steamid,0,name));

                printl("[ze_diddle] initializing shop-bias-score save-system for ("+userid.tostring()+"|"+steamid+"|"+name+")");

            }

        }

    }

}

Initialize();//=============[RESERVED_CUSTOMDATA_BELOW]=============\\

CDATA.push(["VIP","STEAM_1:1:22521282","STEAM_1:0:5225233","STEAM_1:0:45564798","STEAM_1:1:73344846","STEAM_1:1:11715703","STEAM_1:1:31574014","STEAM_1:1:523970","STEAM_1:1:44083262","STEAM_1:0:481397

71","STEAM_1:1:437584735","STEAM_1:0:23006811","STEAM_1:1:92712277","STEAM_1:0:5680239","STEAM_1:0:82660003","STEAM_1:0:82581980","STEAM_1:1:76518687","STEAM_1:0:123998228","STEAM_1:0:1726051","STEAM_

1:1:57774125","STEAM_1:0:145949752","STEAM_1:1:19059031","STEAM_1:0:87605592","STEAM_1:1:53399461","STEAM_1:1:90927558","STEAM_1:1:146402862","STEAM_1:1:161646505","STEAM_1:1:2359822","STEAM_1:1:36935

027","STEAM_1:0:40225637","STEAM_1:0:73964697","STEAM_1:1:420487994","STEAM_1:1:224693752","STEAM_1:0:166202549","STEAM_1:1:187387685","STEAM_1:1:431361032","STEAM_1:1:530769946","STEAM_1:1:421423581"

,"STEAM_1:0:589738117","STEAM_1:1:68906947","STEAM_1:1:209579010","STEAM_1:0:172104190","STEAM_1:0:82257199","STEAM_1:0:110034693","STEAM_1:1:32256533","STEAM_1:1:103714298","STEAM_1:1:194987240","STE

AM_1:1:232637165","STEAM_1:1:20450857","STEAM_1:1:94436119","STEAM_1:0:513101242","STEAM_1:1:450658765","STEAM_1:0:534443260","STEAM_1:0:737862615","STEAM_1:0:225146037","STEAM_1:1:435443801","STEAM_1

:0:80773872","STEAM_1:0:142970189","STEAM_1:0:186122076"]);

CDATA.push(["IDENTIFIER","data1","data2","data3"]);

CDATA.push([""]);

-------------------------------------------------------------------------------------------------------------