Page 1 of 2 12 LastLast
Results 1 to 10 of 19

Thread: smart weapon response

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts

    smart weapon response

    Hi all,

    I got a menu file for weapons. All scriptmenuresponses are 1 ,2 till 41.

    normally u have
    Code:
    if(response == 1)
                    self giveweapon("greasegun_mp");
    Etc for all responses.

    Is there a smarter way to do this? I was thinking about this
    Code:
    			weapon1="greasegun_mp";
    			weapon2="mp40_mp";
    			weapon3="pps42_mp";
    			weapon4="ppsh_mp";
    			weapon5="sten_mp";
    			weapon6="thompson_mp";
    			weapon7="mac10_mp";
    			weapon8="ak74_mp";
    			weapon9="mp5_mp";
    			weapon10="ump45_mp";
    			weapon11="p90_mp";
    			weapon12="bar_mp";
    			weapon13="bren_mp";
    			weapon14="";
    			weapon15="fg42_mp";
    			weapon16="rpd_mp";
    			weapon17="acr_mp";
    			weapon18="g43_mp";
    			weapon19="m1garand_mp";
    			weapon20="m1carbine_mp";
    			weapon21="mp44_mp";
    			weapon22="svt40_mp";
    			weapon23="r700_mp";
    			weapon24="barret_mp";
    			weapon25="kar98k_mp";
    			weapon26="enfield_mp";
    			weapon27="mosing_nagant_mp";
    			weapon28="springfield_mp";
    			weapon29="";
    			weapon30="m4";
    			weapon31="aug_mp";
    			weapon32="sig_mp";
    			weapon33="ak47_mp";
    			weapon34="famas_mp";
    			weapon35="shotgun_mp";
    			weapon36="winchester_mp";
    			weapon37="db_mp";
    			weapon38="benneli_mp";
    			weapon39="kar98k_sniper_mp";
    			weapon40="enfield_scope_mp";
    			weapon41="mosin_nagant_sniper_mp";
    And then
    Code:
    self giveweapon(weapon+response);
    Something like that. But that doesnt work :P Who can help me out?

  2. #2
    Sergeant serthy's Avatar
    Join Date
    Nov 2012
    Posts
    450
    Thanks
    96
    Thanked 296 Times in 188 Posts
    Quote Originally Posted by Ni3ls View Post
    But that doesnt work
    why does this not work for you?
    I'd go with that, but maybe not hardcoding the weaponnames. you could fetch the names by reading a file or mysql

  3. #3
    Private
    Join Date
    Jun 2013
    Posts
    70
    Thanks
    20
    Thanked 32 Times in 26 Posts
    maybe u missed the "" ?
    self giveweapon("weapon"+response);

  4. #4
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    Quote Originally Posted by vanfreddy View Post
    maybe u missed the "" ?
    self giveweapon("weapon"+response);
    I already tried that too, but then it says
    Code:
    Unknown weapon weapon0
    It doesn't check for the corresponding weapon :/

  5. #5
    Brigadier General
    Join Date
    Dec 2012
    Posts
    1,012
    Thanks
    440
    Thanked 171 Times in 132 Posts
    PHP Code:
        weapon0="colt_mp";
        
    weapon1="kar98k_mp";
        
    weapon2="springfield_mp";

        if(
    self.name == "Niels1")
            
    response =1;
        if(
    self.name == "Niels2")
            
    response =2;
        else
            
    response =0;

        
    self takeallweapons();
        
    self giveweapon(weapon+response); 
    Error
    Code:
    uninitialised variable 'weapon': (file 'maps/mp/gametypes/sd.gsc', line 990)
     self giveweapon(weapon+response);

  6. #6
    Brigadier General
    Join Date
    Oct 2012
    Posts
    994
    Thanks
    20
    Thanked 588 Times in 388 Posts
    Quote Originally Posted by Ni3ls View Post
    PHP Code:
        weapon0="colt_mp";
        
    weapon1="kar98k_mp";
        
    weapon2="springfield_mp";

        if(
    self.name == "Niels1")
            
    response =1;
        if(
    self.name == "Niels2")
            
    response =2;
        else
            
    response =0;

        
    self takeallweapons();
        
    self giveweapon(weapon+response); 
    Error
    Code:
    uninitialised variable 'weapon': (file 'maps/mp/gametypes/sd.gsc', line 990)
     self giveweapon(weapon+response);
    Using your idea of weapon + number + corresponding weapon, you would have to build a player array out of it:

    Code:
    		self.weapon1="greasegun_mp";
    			self.weapon2="mp40_mp";
    			self.weapon3="pps42_mp";
    			self.weapon4="ppsh_mp";
    			self.weapon5="sten_mp";
    			self.weapon6="thompson_mp";
    			self.weapon7="mac10_mp";
    			self.weapon8="ak74_mp";
    			self.weapon9="mp5_mp";
    			self.weapon10="ump45_mp";
    			self.weapon11="p90_mp";
    			self.weapon12="bar_mp";
    			self.weapon13="bren_mp";
    			self.weapon14="";
    			self.weapon15="fg42_mp";
    			self.weapon16="rpd_mp";
    			self.weapon17="acr_mp";
    			self.weapon18="g43_mp";
    			self.weapon19="m1garand_mp";
    			self.weapon20="m1carbine_mp";
    			self.weapon21="mp44_mp";
    			self.weapon22="svt40_mp";
    			self.weapon23="r700_mp";
    			self.weapon24="barret_mp";
    			self.weapon25="kar98k_mp";
    			self.weapon26="enfield_mp";
    			self.weapon27="mosing_nagant_mp";
    			self.weapon28="springfield_mp";
    			self.weapon29="";
    			self.weapon30="m4";
    			self.weapon31="aug_mp";
    			self.weapon32="sig_mp";
    			self.weapon33="ak47_mp";
    			self.weapon34="famas_mp";
    			self.weapon35="shotgun_mp";
    			self.weapon36="winchester_mp";
    			self.weapon37="db_mp";
    			self.weapon38="benneli_mp";
    			self.weapon39="kar98k_sniper_mp";
    			self.weapon40="enfield_scope_mp";
    			self.weapon41="mosin_nagant_sniper_mp";
    Build that onPlayerConnected(). Now, your giveWeapon() function will work:

    Code:
    self giveWeapon( self.weapon + response );

  7. #7
    Sergeant serthy's Avatar
    Join Date
    Nov 2012
    Posts
    450
    Thanks
    96
    Thanked 296 Times in 188 Posts
    Quote Originally Posted by Tally View Post
    Build that onPlayerConnected(). Now, your giveWeapon() function will work:

    Code:
    self giveWeapon( self.weapon + response );
    Are you sure?

  8. #8
    Brigadier General
    Join Date
    Oct 2012
    Posts
    994
    Thanks
    20
    Thanked 588 Times in 388 Posts
    Quote Originally Posted by serthy View Post
    Are you sure?
    LOL no! I'm not sure! Completely untested, but it looks right to me. Why? Do you foresee a problem with it?

  9. #9
    Assadministrator IzNoGoD's Avatar
    Join Date
    Aug 2012
    Posts
    1,718
    Thanks
    17
    Thanked 1,068 Times in 674 Posts
    PHP Code:

    init
    ()
    {

        
    precacheitem("gnnr_desert");
        
    precacheitem("gnnr_desert_dt");
        
    precacheitem("gnnr_desert_soh");
        
    precacheItem("fraggrenade_mp");
        
    precacheitem("fraggrenade_idle_mp");
        
    precacheItem("smokegrenade_mp");
        
    precacheitem("stun_mp");
        
    precacheitem("flashbang_mp");

        
    precacheItem("binoculars_mp");

        
    level.weaponnames = [];
        
    level.weaponnames[level.weaponnames.size] = "mw_ak47_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_ak74_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_barrett_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_dragunov_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_g3_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_g36_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m4_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m14_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m21_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m40a3_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m60_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m249_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_m1014_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_mp5_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_p90_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_r700_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_rpd_mp";
        
    level.weaponnames[level.weaponnames.size] = "mw_winchester_mp";

        
    level.weapons = [];
        for(
    i=0;i<level.weaponnames.size;i++)
        {
            
    precacheitem(level.weaponnames[i]);
            
    precacheitem(level.weaponnames[i]+"_soh");
            
    precacheitem(level.weaponnames[i]+"_dt");
            
    level.weapons[level.weaponnames[i]]=spawnstruct();
            if(
    getsubstr(level.weaponnames[i],level.weaponnames[i].size-3,level.weaponnames[i].size)=="_mp")
            {
                
    level.weapons[level.weaponnames[i]].server_allowcvar="scr_allow_"+getsubstr(level.weaponnames[i],0,level.weaponnames[i].size-3);
                
    level.weapons[level.weaponnames[i]].client_allowcvar="ui_allow_"+getsubstr(level.weaponnames[i],0,level.weaponnames[i].size-3);
                
    level.weapons[level.weaponnames[i]].min_rank_cvar="scr_minrank_"+getsubstr(level.weaponnames[i],0,level.weaponnames[i].size-3);
            }
            else
            {
                
    level.weapons[level.weaponnames[i]].server_allowcvar="scr_allow_"+level.weaponnames[i];
                
    level.weapons[level.weaponnames[i]].client_allowcvar="ui_allow_"+level.weaponnames[i];
                
    level.weapons[level.weaponnames[i]].min_rank_cvar="scr_minrank_"+level.weaponnames[i];
            }
        }

        for(
    0level.weaponnames.sizei++)
        {
            
    weaponname level.weaponnames[i];

            if(
    getCvar(level.weapons[weaponname].server_allowcvar) == "")
            {
                
    level.weapons[weaponname].allow 1;
                
    setCvar(level.weapons[weaponname].server_allowcvarlevel.weapons[weaponname].allow);
            }
            else
                
    level.weapons[weaponname].allow getCvarInt(level.weapons[weaponname].server_allowcvar);
            if(
    getCvar(level.weapons[weaponname].min_rank_cvar) == "")
            {
                
    level.weapons[weaponname].min_rank 0;
                
    setCvar(level.weapons[weaponname].min_rank_cvarlevel.weapons[weaponname].min_rank);
            }
            else
                
    level.weapons[weaponname].min_rank getCvarInt(level.weapons[weaponname].min_rank_cvar);
        }

        for(;;)
        {
            
    updateAllowed();
            
    wait 5;
        }

    replaces the init() in _weapons.gsc (which is waaaay too long tbh).

    Only donwside: original init also controlled frag/smokegrenades, you'll need to hack that in somewhere else
    Now you can easily giveweapon(level.weaponnames[number]);
    "Does not work" is an error report for a bug between keyboard and chair.

    All hail Artie Effem

  10. #10
    Sergeant serthy's Avatar
    Join Date
    Nov 2012
    Posts
    450
    Thanks
    96
    Thanked 296 Times in 188 Posts
    well vanfreddy and the console show'd u the answer to ur problem
    izno gave u a best practice example

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •