Nades: Inferno

Bomb site B as Terrorists

In this tutorial I will show you how to throw a few smart grenades before taking over bombsite B.
These tips can help you gain easier access to the spot by smoking out snipers or other campers.

To easily practice these grenades offline you can use the console commands in my other post.

Smoke it out!

The Dark corner

To smoke out that pesky guy in the dark corner, stand in the little sideway in Banana.
Stand all the way in the corner.
Look up to the fence and locate the middle (smallest) plank, and look at 2 planks left from that.
Aim at the branch hanging above that plank, there is a small intersection in the tree at which you can aim.
Just stand still and release the grenade.


It will land just behind the fountain and smoke the guy’s view out, so he either has to come out or stay hidden in there. Either way, it should be an easy pick.


The Sniper spot

To disable that damn sniper, stand in the same position you were to throw the Dark Corner grenade.
Aim 1 plank right of the middle (smallest) one.
Align your aim with the left side of that plank, and aim up untill a small bit above the branch.
It’s important to aim a bit above the branch because if you hit it lower, the nade will end up in the fountain.
Just stand still and release the grenade again.


It will completely block the vision for the sniper, from behind and ON the round crates he will not be able to see anything.
This will force him back to either Ruins or behind the fountain.




The Crate corner

This is the trickiest nade to throw and will need some practice, but it is highly effective since most of the time the CT are camping on that spot and waiting for you to come rush in.

Stand in Banana just in front of the first pillar you see behind the wooden logs.
Aim for the most left side of the antenna and release the grenade.



It will fall right on the players’ head and completely block vision from the crates and the left corner as well! Nice one!



“Wait, what?”


“Errrrrr?… fuck.”


The CT spawn corner

Still standing in the same position as the nade you want to throw for the Crate corner.
Now aim for the chimney pipe, aim up from there to the highest telephone cable, and release the nade.



It will completely block vision from the CT spawn and anyone camping in that corner. This will have the player standing there either fall back to ruins, or force them to rush forward and in sight of your AWP’er or riflers.




The Left corner

This grenade will require some practice as well.
Sit in the corner of the wooden blocks as shown on the screenshot, DUCK there.
Aim for the lamp you see, and pick the second plank on the left of it.
Aim BETWEEN THE 2nd and 3rd plank, on the top, and then just a little notch down as you see on the screenshot.
Release the grenade and it should smoke of the left side corner of the bombspot.





When all grenades are thrown, it looks like this:



Pesky eh?
This Will make the defense a lot harder for CT, you can even throw a few of those smokes and a flash over the buildings to fake an assault to B, and get to A!

I hope this guide helped you a bit, I will be posting more nade tricks in the future!

Eggie ッ

Nades: Practice

To enable practice mode in an offline game of CS:GO, you can use the following console commands to make life easier.

The console input is limited to a number of characters, so paste this in 2 batches:

Batch 1:

sv_cheats 1; 
mp_roundtime_defuse 60; 
sv_infinite_ammo 1; 
mp_freezetime 0; 
mp_roundtime 60; 
mp_roundtime_defuse 60; 
mp_roundtime_hostage 60; 
sv_grenade_trajectory 1; 
sv_grenade_trajectory_time 10; 

Batch 2:

sv_showimpacts 1; 
mp_limitteams 0; 
mp_autoteambalance 0; 
mp_maxmoney 60000; 
mp_startmoney 60000; 
mp_buytime 9999; 
mp_buy_anywhere 1; 
mp_restartgame 1;

Optional, kick all bots and bind the key T to let you fly and disable it again.

bind "t" "noclip"

There you go, happy testing!


alias "+jumpthrow" "+jump;-attack";
alias "-jumpthrow" "-jump"; 
bind "mouse4" "+jumpthrow"; 

Hold throw and press mouse 4 for instant constant jumpthrows!

CakePHP 2.x to CakePHP 3.x

Converting to the new version of CakePHP was supposed to be a breeze I thought.
Not really. They changed a lot of stuff regarding Models and database manipulation, so we have to rewrite a lot of code.
Most notable changes are:


  • The folder structure obviously, every important MVC part is now hidden in the src/ folder instead of the App/ folder.
  • The usage of namespaces, finally!


  • Models are no longer used to access data from a database. This is now done through the tables, the Model\Table classes. A Model\Table class represents a database Table. Models as we knew them are no longer used, and instead the logic will need to be moved to the Model\Table classes.
  • Model\Table query results no longer return Arrays. Instead they return a list of Entity objects.
  • Entity objects are a representation of 1 database row. As such they can be manipulated from the object itself.
  • To save a change to any Entity you will need to pass the complete Entity to the Model\Table class’ save function; Model\Table::save(Entity);
  • Model associations are saved automatically when you add the associated Entities to the Entity you wish to add them to, and save the Entity;
    // Load weekschedule entity
    $currentLoadedWeekschedule = $this->Weekschedules->get(34);
    // Create new Timetable entity
    $newTimetable = $this->Timetables->newEntity(['name' => 'test', 'desc' => 'test2']);
    // Add related Timetable to weekschedule
    $currentLoadedWeekschedule->timetables = $newTimetable;
    // Eventually, save this weekschedule and its related Timetable
  • All time fields from the database are now returned as a Cake\I18n\Time object instead of as a string. You can easily manipulate these object to view as a string again though:
    echo $period['startdatetime']->i18nFormat("YYYY-MM-dd HH:mm:ss");
  • Same goes for saving the DATETIME fields, create a new Time() object for that field.
    use Cake\I18n\Time;
    $entity['startdatetime'] = new Time($data['startdate'] . ' 00:00:00');
  • Because you get an object with entities returned now, there are now longer big arrays you need to unwind, things like $var[‘Table’][‘TableLinked’][‘LinkedTable2’][‘data’]; are no longer needed!
  • Support for cascading deletes! If the Model associations are set correctly and to ‘dependent’ and ‘cascadeCallbacks’, you will automagically remove all associated underlying entities.
    $this->hasMany('Weekschedules', [
        'foreignKey' => 'period_id',
        'dependent' => true,
        'cascadeCallbacks' => true
    $this->hasMany('Timetables', [
        'foreignKey' => 'weekschedule_id',
        'dependent' => true,
        'cascadeCallbacks' => true
    $deletedPeriod = $this->Periods->get($this->request->data['data']['Period']['id']);
  • Copying Entities with child-entities is a breeze! Where as we previously needed a script to;
    create a copy of the parent entity, submit that, get its id, use that to save the new children with the parents id, and save each child.

    We can now easily copy a complete entity and its children with the following lines (in the Model);

    public function copy($weekschedule_id){
        // Find original weekschedule
        $originalWeekschedule = $this->get($weekschedule_id, ['contain' => 'Timetables']);
        // Create new weekschedule entity with the same properties 
        // and timetables as the original one
        $copiedWeekschedule = $this->newEntity($originalWeekschedule->toArray());
        $copiedWeekschedule->set('name', __('Copy of ') . $copiedWeekschedule['name']);
        // Save this new weekschedule
        $newWeekschedule = $this->save($copiedWeekschedule);
        return $newWeekschedule;

Views / Helpers

  • The FormHelper has been rewritten to use the new ORM. The FormHelper action ‘end()’ no longer creates a submit button. Instead, call the following:
    // Cake\View\Helper\FormHelper\submit(string $caption, array $options);
    echo $this->Form->submit(__('Rearrange weekschedules'), ['class' => 'btn']);
    // Dont forget to close your Form or it will include all other input fields on the page
    echo $this->Form->end();

There will be more changes, but these are the ones I found important and most changing for us for now.