I wasn't aware of that method of adding the weapon to the trader list. I might check it out at some point. The biggest issue with that is that you have to make a separate game mode just to use your custom weapon. It is better to use only a mutator if you can get away with it, because you can only use one game mode mod at once, but you can use many mutators at the same time.
1) The reason why it shows up as "Weapon" is because you haven't created the localisation file (the .int file). Weapons, as well as some other objects, use strings that are localised, which means that the value of the string variable is dependent on which language you have selected. It is mentioned (but not really explained) in the link you provided:
.int files are
only for the 'international' language for Unreal Engine which is English. Other languages have different extensions, and belong in different folders within the "localization" folder. For example, files that contain localised strings for the Chinese language have the extension .chn and belong in the Localization\CHN folder.
The Inventory class has localised string variables, such as ItemName. All weapons in KF2 extend KFWeapon, which extends Weapon, which extends Inventory. So the custom weapon that you've created has this localised ItemName variable. The value of localised strings are retrieved from the localisation file associated with the package that the class is located in. There should be a separate section in the localisation file for each class that contains localised strings in the package. It looks like your package name is m79med, so your localisation file would be m79med.int (for the English strings). The name of your custom weapon shows up as "Weapon" because that is the default value, and the default value is used because you don't have an entry for ItemName for your custom weapon in your localisation file. Have a look in Steam\steamapps\common\killingfloor2\KFGame\Locali zation\INT\KFGameContent.int for example of the entries you should have for your custom weapon. The entry for the M79 is:
Code:
[KFWeap_GrenadeLauncher_M79]
ItemName="M79 Grenade Launcher"
ItemCategory="Explosives"
ItemDescription="•Fire mode launches a grenade.\n•Grenade explodes on impact.\n•Only arms itself a few meters downrange so you don't blow your own face off."
Use this as a template for what you should have in your own localisation file.
2) MyKFGameReplicationInfo is your custom class that extends KFGameReplicationInfo, and "your game info class" is your class that extends KFGameInfo (maybe even GameInfo). The link you provided says:
So that's why you have your MyKFGameReplicationInfo class. It doesn't have to have this name. Also, don't include any of the oddly placed spaces in the lines of code on that page, they were added in by the forum due to the strings being too long. Using code tags fixes this though. So the code you're meant to have is:
Code:
TraderItems=KFGFxObject_TraderItems'MySdkPackage.DefaultTraderItems'
Finally, ServerExt does actually have a custom trader list that you can use, it's just not immediately obvious how you should go about using it. I haven't actually tried to add weapons in via ServerExt before, but I've recently adpated Marco's custom trader list code to fit my purposes for the mod I'm working on. It does work.
In the Readme for ServerExt, it says:
So in KFServerExtMut.ini, you would add CustomItems=PackageName.ClassName. I'm pretty sure you're meant to include PackageName, although it doesn't specifically mention it in the .ini. Usually you would need to though. In your case it would be:
Code:
CustomItems=m79med.m79med
If you wanted to add another item to the trader list, you'd just need to add another CustomItems= entry to the .ini.
Edit: I forgot to address your response to the issue with InstantHitDamageTypes. You have commented it out, meaning that your custom weapon won't be overriding the value of InstantHitDamageTypes(DEFAULT_FIREMODE). All this means is that the parent class's value will be used instead, which as it turns out is KFWeap_GrenadeLauncher_M79. I'm actually not sure how you'd go about 'removing' the damage type all together, maybe set it to class'KFDamageType', or simply None (which could be dodgy). But I guess you don't actually have to remove it, if you don't want the impact to do damage, set InstantHitDamage(DEFAULT_FIREMODE)=0.0. But you might want it to do damage, in which case you could leave the damage type as the m79 damage type, or make your own and customise its values.