Jump to content

Donations

  • Posts

    • Guide Sections : Introduction Reason for creating this guide Entities Stripper:Source plugin Configuration file creation Addition and deletion of entities Modification of entities Saving as CFG Decompiling Inputs and Outputs  Important links for reference Notes     Introduction:   Reason for creating this guide:   Welcome to my guide on: how to create configuration files for the stripper plugin! The goal that I had in mind when I started creating this guide, was compiling a bunch of resources for GFL CS:GO ZE admins who are interested in the "technical" side of zombie escape. When I first started to get interested in these types of things, I noticed that there wasn't much discussion about it, so I had to go around different zombie escape communities in order to learn what I had wanted to learn. With the creation of this guide; and maybe more if I can keep learning lul, I hope that I'm able to help out any future people who are interested in learning more about the technical side of zombie escape, but are struggling to find resources for/assistance with it. Aside from this, making configuration files for the stripper plugin has many use cases. You can make use of the plugin to tweak values for mechanics in maps, block off areas, or even to fix certain entities which are causing undesirable behavior, etc.     Entities:   Before we get into the guide, you must first understand what an entity is, in the context of the Source Engine. According to the VALVE developer community wiki, an entity is defined as: "An object defined within the Source Engine as having characteristics which differentiate it from the world."   You can find a list of all available entities here:   (https://developer.valvesoftware.com/wiki/List_of_base_entities) (https://developer.valvesoftware.com/wiki/List_of_Counter-Strike:_Global_Offensive_Entities)     Stripper:Source plugin:   BAILOPAN's stripper plugin is a utility for Source Engine servers which allows servers to mess around with Source Engine entities. Unlike most server plugins, this plugin actually runs on top of Metamod (what SourceMod runs on) instead of being a SourceMod plugin. This doesn't really mean anything to the layman, other than that you install it differently. Originally, plugin-users only had the ability to: permanently add entities to a map, and delete entities via usage of the filter directive. But in 2006 new syntax was added to the plugin, which allowed for more flexible entity modification. The new syntax allows plugin-users to: search and modify entities (Replace/insert/delete entity properties).   The plugin accepts two different types of main configuration files. The first type being a global configuration file (global_filters.cfg) which is run on every map change, and the second type being a map specific configuration file (<map name>.cfg  ex:  ze_journey_p.cfg) which is run ONLY when that specific map is played on the server.    As someone not managing a server, all configuration files that you make will be map specific configuration files, you will never find the need to conjure up a global configuration file.     Configuration file creation:   Addition and deletion of entities:   As mentioned before, this feature allows you at add and delete entities via the configuration file. The syntax for this feature is NOT flexible, so any configuration files created should follow the syntax in order to phase out the risk of the configuration file not working.   The first step to learning how to make use of this feature is to learn how to declare entities. You can declare an entity by using a block. The start and end of a block can be created with the '{' and '}' characters respectively. After the creation of the block, you can declare the properties of the entity being declared inside the block. 1 line in a block can host exactly 1 property of an entity. When declaring the property of an entity make use of the following syntax: TWO QUOTED STRINGS PER LINE, SEPARATED BY A SPACE. FIRST STRING IS THE KEY, SECOND STRING IS THE VALUE.   You can find the specific properties for different entities by making use of the entity wiki page link that I will leave in the last section of the guide.   Entity declaration example:  { "origin" "50 921 0" "angles" "0 -100 0 "damage" "155" "classname" "trigger_hurt" }     Moving on, now that we know how to declare entities, we can make use of the different directives made available to us with this feature. There are two directives that this feature makes use of: "add:" directive, and "filter:" directive. The add directive allows us to use the entity addition feature, whereas the filter directive allows us to use the deletion via filter feature. The directives are placed at the top of a block in order to start using them.   Directive usage example: add: { "origin" "50 921 0" "angles" "0 -100 0 "damage" "155" "classname" "trigger_hurt" } add: { "origin" "100 300 -100" "angles" "0 0 0 "damage" "1" "classname" "trigger_hurt" } filter: { "classname" "trigger_hurt" } In the example above, we add two entities by making use of the add directive, and then delete all trigger_hurt entities in the map by using the filter directive. Another thing to note is that you can get quite specific with the targeting when trying to delete an entity, for example:   filter: { "origin" "100 300 -100" "angles" "0 0 0 "damage" "1" "classname" "trigger_hurt" }   Modification of entities:   This powerful feature is your bread and butter. It is what you will want to use in order to modify the various properties of entities present in maps. The modification feature adds the following directive: "modify:" directive. Blocks which make use of the modify directive have access to the following sub-blocks: "match:" sub-block, "replace:" sub-block, "delete:" sub-block, "insert:" sub-block. Although they look like directives, they are specific to each instance of blocks under the modify directive, so we call them sub-blocks. Similar to what we did in the previous feature, you will want to keep 1 entity instance/type to 1 modify block. Lastly, it's IMPORTANT to note that without the modify directive, you will not be able to access the sub-blocks. The following example will aim to provide a look at how each sub-block functions in 1 example:   modify: { match: { "classname" "trigger_once" "targetname" "bosshp_add" } replace: { "classname" "trigger_multiple" } delete: { "filtername" "zombie" } insert: { "wait" "0" } } Here's what each sub-block will do when executed:   match: This sub-block will search for all entities which match all the specified properties inside the block. Using classname/targetname is generally standard convention, as seen in this example, however if an entity does not have a targetname or it isn't unique, you may see classname/hammerid or classname/origin instead. Classname is rarely required, however it helps to have it there to keep track of what entity class is being modified. In the end, the only thing that's required is that your keyvalue combinations only return the entities you want to modify. replace: This sub-block will replace the keys of the entities which are returned from the match sub-block, with the keyvalues that you specify inside the replace sub-block. In the example, it will replace all matched entities classnames with "trigger_multiple". delete: This sub-block will delete the specified properties from the matched entities. In the example, it will search for the exact property key and value "filtername" "zombie", and then delete it from an entity returned by the match sub-block if it's present. insert: This sub-block will insert the specified value from the key value pair inside the sub-block. In the example, it inserts "wait" "0" which is a keyvalue for trigger_multiples that determines how fast it can be re-triggered.     Saving as CFG:   Now that you understand how the different aspects of the configuration files for the Stripper plugin work, you can create CFGs on your own! Open up a text editor of your choice, and create a new file. After filling it up with your desired contents, save the file as a CFG. It's important to set the file name to the name of the map that you are creating the CFG for. For example: ze_atix_panic_v1.cfg.     Decompiling:   Another extremely helpful process which will speed up the time you take to create configuration files for the stripper plugin is decompiling the map in order to take a look at the different entities and their key-value pairs that are available in the map for modification. Before we jump into this, first you should download the following program (http://www.riintouge.com/VIDE/). The reason that you should download it is because, VIDE (Valve Integrated Development Environment), offers an Entity Lump Editor feature. This specific feature will allow you to decompile the map and take a look at the entities and key-value pairs.       If you click on the file button, you will find the option to "Open" a file. Click on this and navigate to the map file of your choice (Navigate to your games map folder and choose a .BSP file). After doing this, it will list all the entities present in the map. Now that you have access to the different entities, you can easily go through the list / use the filter bar and find what you wish to modify.     Inputs and Outputs:   Before we start to mess around with I/Os, it's important that we first understand what they are. According to the VALVE developer wiki, I/Os are:      Editing I/Os via the usage of the configuration file is basically the same as editing generic entity property values, but it will require more caution on your side. When editing the I/Os of an entity, make sure that you understand what the I/O is doing.         If you take a look at the picture above (PROGRAM: VIDE), you can see an example of what I/Os look like. If I were to edit an output, I would simply double click on the output that I want to edit, copy the selected value, and bring it over to the configuration file. Once in the configuration file I would then edit the values as I please.   modify: { match: { "classname" "trigger_once" "targetname" "trigger_b_door" } delete: { "OnStartTouch" "consoleCommandsay *** DOOR OPENS IN 20 SECONDS ***01" } insert: { "OnStartTouch" "consoleCommandsay *** DOOR OPENS IN 30 SECONDS ***01" } }   In the code block above, I have tweaked the output to print out for 30 seconds, rather than 20. An interesting thing to take note of when editing I/Os is that you usually want to delete the I/O then insert it, rather than replace it. This is due to the fact that when dealing with I/O, the key (OnStartTouch in this case) is not unique like standard keys such as "origin" or "targetname" are.   Lastly, you will notice that there are weird characters present if working with CS:GO. The weird characters are used to separate outputs. When making use of VIDE to look at entities, you don't need to worry about reproducing that character as you can simply copy paste the exact syntax from the map via VIDE. You can also do the same when attempting to add an output. Other options for this are to make use of the  ' , ' character. You can make use of the ' , ' character, when adding an output to a newly added entity in a configuration file, BUT you cannot use ' ,  ' when attempting to replace an output from an entity. When replacing an output, always copy the string straight from VIDE. For older Source engine games this is all irrelevant, commas are used exclusively in configs and in the actual games.     Adding entities which require brushwork:   A brush in the context of the Source Engine is defined as:     Sometimes you may find the need to add an entity which will require brush work of some sort. Examples of use cases for this are: adding buy zones, adding safe zones, adding trigger_hurt areas to maps. When this situation comes up you can simply make use of the  "add:" directive and set the model number of the entity that you're adding as the model number of a suitable brush entity from inside the .vmf file.   An example of this can be seen below:   ;Nuke safe zone fix. add: { "model" "*29" "classname" "trigger_hurt" "targetname" "Nuke" "StartDisabled" "1" "spawnflags" "3" "origin" "261.92 -253.52 -3422.77" "nodmgforce" "0" "damagetype" "0" "damagemodel" "0" "damagecap" "20" "damage" "9999999" }     If you need higher precision, or are unable to find a suitable model number, there is another option that allows you to specify exact dimensions. This only works for triggers though, not entities like func_brush. Refer to the picture below for assistance in doing this.     Important links for reference :   (https://developer.valvesoftware.com/wiki/Entity) (https://developer.valvesoftware.com/wiki/Entities_in_Depth) (https://developer.valvesoftware.com/wiki/List_of_entities) (https://developer.valvesoftware.com/wiki/HammerObjectPropertiesDialog) (https://developer.valvesoftware.com/wiki/List_of_base_entities) (https://developer.valvesoftware.com/wiki/List_of_Counter-Strike:_Global_Offensive_Entities) (https://github.com/alliedmodders/stripper-source) (https://forums.alliedmods.net/showthread.php?t=39439) (https://www.bailopan.net/stripper/) (http://www.riintouge.com/VIDE/) (https://developer.valvesoftware.com/wiki/Inputs_and_Outputs) (https://developer.valvesoftware.com/wiki/Brush) (https://developer.valvesoftware.com/wiki/Brush_entity) (https://github.com/ata4/bspsrc/releases) (https://github.com/gflclan-cs-go-ze/ZE-Configs/tree/master/stripper)     Notes :   If you find any information in the guide that needs to be corrected, please don't hesitate to post here. Thanks for reading the guide! NOTE: Guide copied from GFLClan.com, written by Vauff
    • EUFRAG - COUNTER-STRIKE: SOURCE - Skill Surf EU Tier 1-2 IP: 157.90.133.105:27014 JOIN SERVER Surf CSS Servers. European surf servers hosted in Germany. The best place to surf on CSS. 100 Tickrate, 1000 airaccelerate. MAPCYCLE surf_4head surf_6 surf_8bit surf_abandoned surf_ace surf_activation surf_aether surf_agony surf_aircontrol_ksf surf_amplitude_encore surf_amplitude_light surf_and_destroy_fix surf_andromeda surf_annoyance_njv surf_anoobis surf_anzchamps surf_apollo surf_aqua_fix surf_aquaflow surf_arcade surf_ardon_fix surf_artois surf_aser surf_aura surf_autumn_fix surf_beginner surf_beginner2 surf_believe surf_benevolent_refix surf_beverages_remix surf_beyond surf_beyond2 surf_bluewall_v2 surf_boogie_woogie surf_borderlands surf_boreas surf_boring surf_botanica surf_calycate2 surf_calycate_ksf surf_calzone surf_cavemissile_fix surf_chaos_fix surf_commune_beta11 surf_crzyfrog_reloaded surf_cyberwave surf_deadline surf_deathstar surf_delight surf_delusional surf_demise surf_derpis_ksf surf_destruction surf_devs_ksf surf_domain surf_doodles_njv surf_dragon surf_driftless surf_duggywuggy surf_ebony surf_echo surf_eclipse surf_eggplant surf_egypt2 surf_enlightened_ksf surf_epicube surf_ethereal surf_everdark surf_exocube surf_exurbia_v2 surf_faint_fix surf_flow_ksf surf_flyin_fortress_fix surf_forbidden_ways_ksf surf_forgotten surf_fornax surf_fortum_fix surf_frey_remake surf_frost surf_funhouse2 surf_funhouse_v1 surf_garden surf_glass7_ksf surf_glass9 surf_gleam surf_gleam2 surf_grassland surf_greek_ksf surf_greensway surf_guitar_hi surf_halloween_tf2 surf_happyhands surf_harmony_fix surf_heaven_njv surf_holiday surf_hotwheels_fix surf_hourglass surf_illusion surf_imex surf_in_space surf_indecisive surf_ing surf_inspire surf_interference surf_island surf_ivory surf_journeys surf_juturna surf_kepler surf_kismet surf_kitsune surf_kloakk surf_klue surf_korn surf_kvas surf_lament_ksf surf_lies_ksf surf_listless_ksf surf_lockdown surf_lore surf_lovetunnel surf_lullaby_ksf surf_lux surf_mate surf_me surf_mesa_fixed surf_mesa_mine surf_minuet_ksf surf_mom_fix surf_nebula surf_network2008_final surf_network_2009 surf_noble surf_not_so_disaster surf_not_so_sinister_ksf surf_nova surf_nuclear surf_nyx surf_odyssey_ef surf_palais surf_palm surf_pantheon surf_pathfinder surf_perennial surf_prelude_fix surf_premium surf_progress_fix surf_race surf_ravine surf_rebel_scaz_ksf surf_reprise surf_rez surf_rocco_v2 surf_rookie surf_salvador_ksf surf_sanctuary surf_sandtrap surf_sandtrap2 surf_santorini_ksf surf_satellite_fix surf_saturday surf_school_fix surf_semesterbreak surf_simpsons_source surf_skipalot surf_slob surf_spacejam surf_spooky surf_squirrelsonvacation surf_stonks surf_summer_ksf surf_summit surf_sundown surf_sunnyhappylove surf_syria surf_tendies surf_tensile_njv surf_the_gloaming surf_tomb_redone surf_tranquil surf_tuscany surf_twilight_njv surf_utopia_njv surf_verge surf_void surf_water_run_ksf surf_waterworks surf_whiteout surf_zbig_ksf surf_zealand surf_zenith surf_zoomathon surf_zor
    • EUFRAG - Counter-Strike 2 - KZ connect 157.90.133.105:27033   - Maps -     kz_victoria kz_checkmate
  • Recent Status Updates

    • Krix_Hvter

      Hey guys its me revenant gameplay and welcome to my profile 
      gaming is not just a game it is a feeling
      this thing can only understand
      a real gamer 
      nothing more to say thanks for visiting my profile
      Cya!!! 
       
      · 0 replies
    • Harue  »  Vanster

      Lmao Vanster is a little bitch that can't play Battlebit Remastered because its too hard.
      · 0 replies
    • Revenant_Gameplay

      Welcome To My Profile 
       
      I am Youtuber + Gamer 
       
      My rank is 7 position and i love eufrag server Keep Fragging ^ ^
       
      My instagram user - pdy_anime you can talk to me there also
       
      You can join my discord server also i giveaway premium application accounts everymoth 
       
      here is my discord server link - https://discord.com/channels/1112589773744394240/1112594063082930257
       
      i am from india born in 25 oct 2009
       
       
      · 0 replies
    • [NIGA]thekiller  »  Legend

      hello legend you know me
      · 1 reply
    • Leviii  »  Legend

      Happy Birthday Legend 🎉🎉
      · 1 reply

About Us

EUFrag was founded in 2013. These days it's ran by Calig and Tariq. We offer variety different type of servers on multiple games for everyone to enjoy and make friends.

Calig Tariq

×
×
  • Create New...