Jump to content

Recommended Posts

Wonderful kodabar! Can i add this to my missions at steam to give a short overview about ravage?

Share this post


Link to post
Share on other sites

What kind of armor/outfits can we sell to the clothes/armor traders?

Share this post


Link to post
Share on other sites
7 minutes ago, lv1234 said:

What kind of armor/outfits can we sell to the clothes/armor traders?

 

I believe anything can be sold, as long as the shops have been setup to accept them.

Share this post


Link to post
Share on other sites

The Gear trader seems to be broken. He sells so much stuff u cant see everything cause the list is too big... I dont know if selling works, havent tried it before :)

Share this post


Link to post
Share on other sites
8 hours ago, CptStampede said:

Wonderful kodabar! Can i add this to my missions at steam to give a short overview about ravage?

 

Certainly. I'm happy for anyone to use it.

  • Like 2

Share this post


Link to post
Share on other sites

To all mission makers and teams who run servers... what do you keep your AI counts at? We are struggling to find a balance with AI spawns. If we keep AI spawns at 0.5 or above, we basically get a never ending flow of AI coming at players on the server. There is almost no quiet time. Basically constant shooting in every direction. It sounds like you are playing on a Wasteland server. It gets downright silly and does not feel apocalyptic at all. We have found that if you move the spawns below 0.5 to just 0.4... AI basically disappears from the server. While running at 0.4... we've had multiple complaints from people who play through entire three hour sessions having never even seen a single AI. We have tried in between numbers as well. For example 0.46, etc. This produces a result very close to 0.5.

Running at the default number (1) causes constant performance FPS drops server wide when more than a couple of people sign on.

Any suggestions?

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, Donnie_Plays said:

we've had multiple complaints from people who play through entire three hour sessions having never even seen a single AI.

Well at least they will survive the apocalypse and get all the loot they need without any resistance, lol

but seriously have you tried just total numbers in the module for bandits, and zombies, in my last play on my server i had a decent balance of bandits, and zombies.

  • Like 3

Share this post


Link to post
Share on other sites
1 hour ago, Gunter Severloh said:

Well at least they will survive the apocalypse and get all the loot they need without any resistance, lol

but seriously have you tried just total numbers in the module for bandits, and zombies, in my last play on my server i had a decent balance of bandits, and zombies.


It's been really weird. Either too many or too few AI. Been hard to figure the balance out. The ideal situation would have higher AI counts with few players, and as more people connect, less AI would spawn. The plan is to turn down AI spawns as player counts become more consistent, but we've been topping out at 10-15 players at a time so far. It's been back and forth. We only had 1-3 people on at a time today.

  • Like 2

Share this post


Link to post
Share on other sites

So going to bring up the radiation question again because it hasn't been answered yet, as far as i can tell. I would like to know 2 things about the radiation.

 

 First. How would i go about making a radiation zone spawn from a script?

 

Second. I have a radiation script that was modified last year some time by me and some others on these forums. I cant remember who. Was wondering if anyone would know how to add ravage radiation to it so you get the ravage rad poisoning and how to make it                   so you take damage over time not just dead after a set time in the zone. Also how to add the other 2 gas masks to it, so far i only have the one working with it. 

 

radiation.sqf

Spoiler

//  place a trigger (none none) just for area
//      condition: true
//      on activation:

 

{
  [_x,thisTrigger] spawn {
    _unit =_this select 0;
    _trg = _this select 1;
    private "_timer";
    while {alive _unit && local _unit} do {
      waitUntil {sleep 0.5; _unit inArea _trg && {goggles _unit != "Mask_M50"}};
      if (isPlayer _unit) then {
        hint parseText format["<t size='1.10' font='PuristaMedium' color='#F0133C'>Radiation hazard! Check your equipment</t>"];
        _unit setVariable ["radiat", ppEffectCreate ["DynamicBlur",450]];
        (_unit getVariable "radiat") ppEffectEnable true;
        (_unit getVariable "radiat") ppEffectAdjust [4];
        (_unit getVariable "radiat") ppEffectCommit 10;
      };
      _timer = diag_tickTime;
      waitUntil {sleep 0.5; !(_unit inArea _trg) or diag_tickTime > _timer + 30 or {goggles _unit == "Mask_M50"}};
      if ( diag_tickTime > _timer + 30) exitWith {_unit setDamage 1};
      if (isPlayer _unit) then {
        hint parseText format["<t size='1.10' font='PuristaMedium' color='#13F03C'>You are out of contamination</t>"];
        _unit setVariable ["noradiat", ppEffectCreate ["DynamicBlur",450]];
        (_unit getVariable "noradiat") ppEffectEnable true;
        (_unit getVariable "noradiat") ppEffectAdjust [0];
        (_unit getVariable "noradiat") ppEffectCommit 10;
      };
   }
  }
} forEach allUnits;

 

//  you can change the classes as you like.
//  Example: Remove vest _unit == "V_RebreatherB" and replace "H_PilotHelmetFighter_B"  for  "AAF_pilot_headhelmet"

 

  • Like 1

Share this post


Link to post
Share on other sites

@GEORGE FLOROS GR You seem to know what you on about. Did you see my vehicle loot script? It loads a vehicle up with random loot from a list of loot. Now it works perfect for your random vehicle spawn script out of your Salvation mission. But the oddest thing is going on with the ravage vehicle module. What is happening is this. 

 

The module is set to wrecks only, doesnt really matter which it does the same for all of them, cache at 750 and no burning car. My vehicle loot script is fired form my initServer.sqf. A placed car next to my test spawn is getting the right loot but ravage vehicles are only getting the backpacks. Backpacks being the last in the script to be placed in a vehicle. Even if i fire the script directly into the modules init (first time i thought of that) the same result is happening. Ill post the script here. Someone may want it aswell.

 

VehicleLoot.sqf

Spoiler

/*
    author:
           Chuc

    description:
                 Spawn random custom loot into any vehicle on the map.
                 Works for editor placed vehicles or scripted spawned vehicles
                 on mission start. Havnt tested for spawned vehicles after mission start.

                 Anyone is welcome to use/edit/share anything form the script. If you
                 make it better please let me know because this was the only way i could figure
                 it out.

                 Requires the CBA Mod to work.
                 https://steamcommunity.com/sharedfiles/filedetails/?id=450814997

                 Activate with this execVM "VehicleLoot.sqf"; I put it in initServer.sqf
*/
//sleep 10; // I tried to add a sleep here to see if it would make the rest spawn for the rvg vehicle module but didnt help

if (isServer) then {
    // Set items: Pistols
    pistolLoot =
                    [
                         //Bnae Pistols
                        "bnae_r1_virtual",
                        "bnae_r1_e_virtual",
                        "bnae_r1_t_virtual",
                        "bnae_saa_virtual",
                        "bnae_l35_c_virtual",
                        //RHS Pistols
                        "rhsusf_weap_m9",
                        "rhsusf_weap_glock17g4",
                        //CUP Pistols
                        "CUP_hgun_Colt1911",
                        "CUP_hgun_TaurusTracker455"
                    ];
    // Set items: Shotguns
    ShotGunLoot =
                    [
                        //Bnae shotguns
                        "bnae_m97_virtual",
                        "bnae_m97_camo1_virtual",
                        "bnae_m97_s_virtual",
                        "bnae_spr220_virtual",
                        "bnae_spr220_camo1_virtual",
                        "bnae_spr220_so_virtual",
                        "bnae_spr220_so_camo1_virtual"
                    ];
    // Set items: Food and Water
    foodLoot =
                    [
                        //Ravage Food and Water
                        "rvg_plasticBottle",
                        "rvg_plasticBottlePurified",
                        "rvg_canOpener",
                        "rvg_spirit",
                        "rvg_franta",
                        "rvg_beans",
                        "rvg_bacon",
                        "rvg_milk",
                        "rvg_rice",
                        "rvg_plasticBottleEmpty",
                        "rvg_canteenEmpty",
                        "rvg_plasticBottle",
                        "rvg_plasticBottlePurified",
                        "rvg_spirit",
                        "rvg_franta",
                        "rvg_beans",
                        "rvg_bacon",
                        "rvg_milk",
                        "rvg_rice",
                        "rvg_money",
                        "rvg_money",
                        "rvg_money",
                        "rvg_money"
                    ];
    // Set items: Weapon attachments, first-aid, Binoculars
    itemsLoot =
                    [
                        //Ryans Items
                        "ryan_ruger77_optic_SOS",
                        //Dagger Items
                        "Dagger_10x_Round_Dot",
                        "Dagger_12x_Round_Dot_Gen2",
                        "Dagger_16x_Round_Dot",
                        //Bnae Items
                        "bnae_scope_blk_virtual",
                        "bnae_bipod_blk_virtual",
                        //Vanilla items
                        "Binocular",
                        "FirstAidKit",
                        "Medikit",
                        "ItemMap",
                        "acc_flashlight",
                        "Item_optic_LRPS",
                        "Item_bipod_01_F_khk",
                        //RHS Items
                        "rhsusf_acc_M8541",
                        "rhsusf_acc_premier",
                        "rhsusf_acc_LEUPOLDMK4",
                        "rhsusf_acc_LEUPOLDMK4_2",
                        "rhsusf_acc_harris_bipod",
                        //CUP Items
                        "CUP_optic_LeupoldMk4",
                        "CUP_optic_Leupold_VX3",
                        "CUP_bipod_Harris_1A2_L",
                        "CUP_bipod_VLTOR_Modpod",
                        //Ravage Items
                           "rvg_canisterFuel_Empty",
                        "rvg_toolkit",
                        "rvg_tire",
                        "rvg_money",
                        "rvg_docFolder",
                        "rvg_money",
                        "rvg_hose",
                        "rvg_guttingKnife",
                        "rvg_foldedTent",
                        "rvg_matches",
                        "rvg_foldedTent"
                    ];
    // Set Clothing: Hats, Helmets, Uniforms
    clothesLoot =
                    [
                        //Vanilla Clothing
                           "U_C_Journalist",
                           "U_C_Poloshirt_blue",
                           "U_C_Poloshirt_burgundy",
                           "U_C_Poloshirt_salmon",
                           "U_C_Poloshirt_stripped",
                           "U_C_Poloshirt_tricolour",
                           "U_C_Poor_1",
                           "U_C_Poor_2",
                           "U_C_Poor_shorts_1",
                           "U_C_Scientist",
                           "U_OrestesBody",
                           "U_Rangemaster",
                           "U_NikosAgedBody",
                           "U_NikosBody",
                           "U_Competitor",
                           "U_I_G_resistanceLeader_F",
                           "U_C_man_sport_1_F",
                           "U_C_man_sport_2_F",
                           "U_C_man_sport_3_F",
                           "U_C_Man_casual_1_F",
                           "U_C_Man_casual_2_F",
                           "U_C_Man_casual_3_F",
                           "U_C_Man_casual_4_F",
                           "U_C_Man_casual_5_F",
                           "U_C_Man_casual_6_F",
                           "H_Helmet_Skate",
                           "H_Hat_brown",
                        "U_IG_Guerilla1_1",
                           "U_IG_Guerilla2_1",
                           "U_IG_Guerilla2_2",
                           "U_IG_Guerilla2_3",
                           "U_IG_Guerilla3_1",
                           "U_BG_Guerilla2_1",
                           "U_IG_Guerilla3_2",
                           "U_BG_Guerrilla_6_1",
                           "U_BG_Guerilla1_1",
                           "U_BG_Guerilla2_2",
                           "U_BG_Guerilla2_3",
                           "U_BG_Guerilla3_1",
                           //RHS Clothing
                           "rhs_Booniehat_ocp",
                           "rhs_beanie_green"
                    ];

    // Set Vests: Any vests
    vestsLoot =
                    [
                        //Vanilla Vests
                        "V_Rangemaster_belt",
                        "Vest_V_Press_F",
                        //RHS Vests
                        "rhs_vest_commander",
                        "rhs_vest_pistol_holster",
                        "rhs_6sh46",
                        //Dagger Vests
                        "dgr_coat5",
                        "dgr_coat6",
                        "dgr_coat7",
                        "dgr_coat8"
                    ];

    // Set Backpacks: Any packpacks
    backpacksLoot =
                    [
                        //Vanilla Bags
                        "B_AssaultPack_rgr",
                        "B_Kitbag_rgr",
                        "B_TacticalPack_rgr",
                        "B_Respawn_Sleeping_bag_blue_F",
                        "B_Respawn_Sleeping_bag_brown_F",
                        "B_Respawn_TentDome_F",
                        "B_Respawn_Sleeping_bag_F",
                        "B_Respawn_TentA_F",
                        //RHS Bags
                        "rhs_sidor",
                        //Vanilla Respawn Camps
                        "B_Carryall_cbr",
                         "B_Carryall_khk",
                         "B_Carryall_mcamo",
                         "B_Carryall_ocamo",
                         "B_Carryall_oli",
                         "B_Carryall_oucamo"
                    ];

    // Set items: Rifles
     RifleLoot =    [
                         //RHS Weapons
                         "rhs_weap_m14ebrri",
                         //Bnae Snipers
                         "bnae_mk1_virtual",
                         //CUP Rifles
                         "CUP_srifle_M14",
                         //Dagger Rifles
                         "dgr_22",
                         "dgr_220",
                         "dgr_223",
                         //Ryans Rifles
                         "ryan_ruger77"
                     ];

    // Set items: Snipers
     SniperLoot =   [
                        //CUP Rifles
                        "CUP_srifle_CZ550",
                        "CUP_smg_MP5A5",
                        "CUP_srifle_M24_des_LeupoldMk4LRT",
                        "CUP_srifle_M24_wdl_LeupoldMk4LRT",
                        "bnae_falkor_blk_virtual",
                        //Dagger Rifles
                        "dgr_3006",
                        "dgr_257",
                        "dgr_270",
                        "dgr_300blk",
                        "dgr_308_m40_3",
                        //Ryans Sniper
                        "ryan_ruger77scope"
                    ];

          ////////////// Magazines //////////////
     // Set items: Rifle Mags
     Mag_Rifle =    [
                        //RHS Rifle Mags
                        "20Rnd_762x51_Mag",
                        "rhsusf_20Rnd_762x51_m993_Mag",
                        //Ryan Rifle Mags
                        "ryan_ruger77magazine",
                        //Bnae Rifle Mags
                        "10Rnd_303_Magazine",
                        //CUP Rifle Mags
                        "CUP_20Rnd_762x51_DMR",
                        //Dagger Rifle Mags
                        "DGR_22_Match_20Rnd",
                        "DGR_220_20Rnd",
                        "DGR_224_M193_10Rnd"
                    ];

     // Set items: Sniper Mags
     Mag_Sniper =   [
                        //Ryan Rifle Mags
                        "ryan_ruger77magazine",
                        //Bnae Rifle Mags
                        "10Rnd_300WM_Magazine",
                        //CUP Rifle Mags
                        "CUP_5x_22_LR_17_HMR_M",
                        "CUP_5Rnd_762x51_M24",
                        "CUP_30Rnd_9x19_MP5",
                        //Dagger Rifle Mags
                        "DGR_257_10Rnd",
                        "DGR_270_10Rnd",
                        "DGR_300BLK_F_10Rnd",
                        "DGR_308_M80_10Rnd",
                        "DGR_3006M72_10Rnd"
                    ];

     // Set items: Rare or Random Mags
     Mag_Rare =    [
                        //RHS Mags
                        "rhsusf_mag_15Rnd_9x19_FMJ",
                        "rhsusf_mag_17Rnd_9x19_FMJ",
                        "rhsusf_20Rnd_762x51_m118_special_Mag",
                        "rhsusf_20Rnd_762x51_m62_Mag",
                        //Bnae Mags
                        "8Rnd_45ACP_Magazine",
                        "8Rnd_45Super_Magazine",
                        //Dagger Mags
                        "DGR_3006M22_10Rnd",
                        "DGR_3006M2_10Rnd",
                        "DGR_308_B416_10Rnd",
                        "DGR_308_M993_10Rnd",
                        "DGR_300BLK_S_10Rnd",
                        "DGR_300BLK_HP_10Rnd",
                        "DGR_224_SS109_10Rnd",
                        "DGR_224_MK318_10Rnd",
                        "DGR_224_MK262_10Rnd",
                        "DGR_224_M995_10Rnd",
                        "DGR_22_Subsonic_20Rnd",
                        "DGR_22_Stinger_20Rnd",
                        "DGR_224_VLD_10Rnd"
                    ];
     // Set items: Pistol Mags
     Mag_Pistol =   [
                        //Bnae Pistol Mags
                        "8Rnd_45GAP_Magazine",
                        "6Rnd_357M_Magazine",
                        "8Rnd_9x19_Magazine",
                        //CUP Pistol Mags
                        "CUP_7Rnd_45ACP_1911",
                        "CUP_6Rnd_45ACP_M",
                        //RHS Pistol Mags
                        "rhsusf_mag_15Rnd_9x19_JHP",
                        "rhsusf_mag_17Rnd_9x19_JHP"
                    ];

     // Set items: ShotGun Mags
     Mag_Shotgun =  [
                        //Bnae ShotGun Mags
                        "6Rnd_00_Buckshot_Magazine",
                        "6Rnd_Slug_Magazine",
                        "2Rnd_00_Buckshot_Magazine",
                        "2Rnd_Slug_Magazine",
                        "5Rnd_00_Buckshot_Magazine",
                        "5Rnd_Slug_Magazine"
                    ];

["Car", "init",
    {
         (_this select 0) addWeaponCargoGlobal [selectRandom ShotGunLoot, round(random 1)];
         (_this select 0) addMagazineCargoGlobal [selectRandom Mag_Shotgun, round(random 2)];

 

         (_this select 0) addWeaponCargoGlobal [selectRandom pistolLoot, round(random 2)];
         (_this select 0) addMagazineCargoGlobal [selectRandom Mag_Pistol, round(random 3)];

 

         (_this select 0) addWeaponCargoGlobal [selectRandom RifleLoot, round(random 1)];
         (_this select 0) addMagazineCargoGlobal [selectRandom Mag_Rifle, round(random 1)];

 

         (_this select 0) addWeaponCargoGlobal [selectRandom SniperLoot, 0 + (random 1)];
         (_this select 0) addMagazineCargoGlobal [selectRandom Mag_Sniper, 0 + (random 1)];

 

         (_this select 0) addMagazineCargoGlobal [selectRandom Mag_Rare, 0 + (random 1)];

 

         (_this select 0) addItemCargoGlobal [selectRandom foodLoot, ceil(random 3)];
         (_this select 0) addItemCargoGlobal [selectRandom foodLoot, round(random 3)];
         (_this select 0) addItemCargoGlobal [selectRandom itemsLoot, 1];
         (_this select 0) addItemCargoGlobal [selectRandom itemsLoot, 0 + (random 2)];
         (_this select 0) addItemCargoGlobal [selectRandom clothesLoot, round(random 1)];
         (_this select 0) addItemCargoGlobal [selectRandom clothesLoot, 1];
         (_this select 0) addItemCargoGlobal [selectRandom vestsLoot, 0 + (random 1)];
         (_this select 0) addItemCargoGlobal [selectRandom vestsLoot, 1];
         (_this select 0) addBackpackCargoGlobal [selectRandom backpacksLoot, round(random 2)]; // Only this is spawning\working for the ravage vehicle module
    }, true, [], true] call CBA_fnc_addClassEventHandler;
};
 

 

  • Like 2

Share this post


Link to post
Share on other sites
5 minutes ago, Chuc said:

    author:
           Chuc

    description:
                 Spawn random custom loot into any vehicle on the map.
                 Works for editor placed vehicles or scripted spawned vehicles
                 on mission start. Havnt tested for spawned vehicles after mission start.

 

You need to set a variable for the car that has added loot and what is not 

and loop the script to fill the inventory of the car if the variable is false.

  • Thanks 1

Share this post


Link to post
Share on other sites

Okay. Ill look into it but thats getting abit more then i really know atm but ill try.

 

 

Edit: So a variable is that private part thats in the radiation script i posted before? 

  • Like 1

Share this post


Link to post
Share on other sites

@Donnie_Plays: The population factor is not ideal to control the number of AI in MP - I need to overhaul that part.

But you could use another method : one solution is to keep an eye on the rvg_garbage_collector variable. All spawned units should be in that array (as long as it is alive), so you could count it to know how many AI there are, and use that to stop spawning every once in a while.

 

Try that on the condition field of the AI module for instance :

(count rvg_garbage_collector) < 30

 

Edit : to reduce AI numbers as players become more numerous :

(count rvg_garbage_collector) < (30/(count allPlayers))

 

  • Like 3

Share this post


Link to post
Share on other sites
2 hours ago, GEORGE FLOROS GR said:

 

You need to set a variable for the car that has added loot and what is not 

and loop the script to fill the inventory of the car if the variable is false.

 

So after around 2 hours i managed to get the script to loop, for every vehicle. So i was getting full inventory. The car i placed in the editor is a gun nuts heaven. 

 

So i thought i would go look for a ravage vehicle to see if they were going through the same thing. Well they were, but only backpacks. Alot of backpacks and respawn camps.

 

I went though heaps of code to figure out how to do it but it is apparently over my head at this time. Considering the way i got it to work shouldn of taken me this long to figure out. All in all i know more about scripting now, after reading so damn much about it.

 

Any help you could give me would be appreciated. 

 

All i did in the end was add an  extra { before the pistol loot and then added }forEach ["all the custom cars i added to the vehicle module"] after the CBA function.

 

So i couldnt figure out how to "set a variable for the car that has added loot and what is not". I understand what is means but i just couldnt figure it out.

 

giving it one more go, i had an idea

  • Like 1

Share this post


Link to post
Share on other sites

nah no good cant work it out. Spent over 3 hours trying to work it out and i just cant seem to get it done.

 

All ravage cars spawned with the module only get backpack loot.

 

This is probably gonna keep me up all night. 

  • Like 1

Share this post


Link to post
Share on other sites
54 minutes ago, Chuc said:

This is probably gonna keep me up all night. 

 

This is the nice stuff about !

I think it's a never ending Cycle !

 

If i have time , i will check it and tell you because i 'm about to release for now , some scripts more !

  • Like 2

Share this post


Link to post
Share on other sites

Hello all, have been attempting to get attachments to spawn in the loot tables on weapons and to get sidearms to spawn along with primary weapons but keep receiving spawn errors (in a block window in game as well npcs only spawning with pistols and no primary) anyone have tips on getting this to work?

Share this post


Link to post
Share on other sites

Hi guys!

 

Just letting you know that I'm probably going to push a small update sometime tomorrow.

I spent the week-end working on a new set of animations for zombies. \o/

 

I wasn't satisfied with the Bolter animations set - especially the idle anim, wich was way too chill for a blood-crazed zombie. I've been reviewing the latest additions to Arma3 in terms of anims for a side project, and spotted a few ones that looked interesting. After a bit of fiddling, I came up with a completely new set of animations for Bolters, plus a scripted animation variation system for Walkers and Runners : some of these guys will use a set of gestures applied to their default animations (thanks to Arma3 animation masks). The end result is a more organic animation behaviour, with more variations.

 

It's all WIP, as I am no anim specialist, but it feels a lot better already. ;)

  • Like 7
  • Thanks 3

Share this post


Link to post
Share on other sites
2 hours ago, Chuc said:

This is probably gonna keep me up all night. 

 

 

I will add a script for this today , I 'm editing the loot lists.

  • Like 1

Share this post


Link to post
Share on other sites

Are you using the Equipment Pool Module and if so are you entering in the classnames correctly

Share this post


Link to post
Share on other sites
3 hours ago, GEORGE FLOROS GR said:

I will add a script for this today , I 'm editing the loot lists.

 

Hello to all Ravagers!

 

This new script , is to configure the Loot in the vehicle inventories.

 

For more info:

S7IHxv1TTwu3AEs3OHbniA.png

 

Thanks !

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites

Hey guys! Does anyone know why the ambient patrols don't actually patrol after spawning? They will remain completely stationary and may only fire at enemy units from the vehicle. The only way I get them to move is by giving them a new waypoint in zeus.

Share this post


Link to post
Share on other sites
3 hours ago, LukasGaming said:

Hey guys! Does anyone know why the ambient patrols don't actually patrol after spawning? They will remain completely stationary and may only fire at enemy units from the vehicle. The only way I get them to move is by giving them a new waypoint in zeus.

Never had that problem... Are u using any other AI spawning mods or scripts too like maybe ALiVE or something?

Share this post


Link to post
Share on other sites

Hi haleks,

I have request if possible to do it please.

 

Is it possible to ass Init EH, Killed EH, FiredNear EH, Hit EF for Ambient AI module? Same as Ambient Zombies module has. At least Init EH will be extermly useful.

 

  • Like 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×