Jump to content

[Prophunt CS:GO] Bugs & Incorrect plugin settings


Logical
 Share

Recommended Posts

I'd like to apologize for the resolution, I play 4:3 stretched on CS:GO and shadow-play doesn't record it stretched. And one video wont have audio because I had music playing so I just removed the audio track in the video instead of redoing the video.

 

Okay so onto the Bugs and such:

  • When buying guns it doesn't drop currently selected weapon and replace it, causing your new weapon to drop on the ground.
/*
For example, this can be fixed by
sending a SDKcall to drop current weapon then give new weapon
I dont know exactly how the plugin looks but for a reference this is sort of how it would look

EDIT: FORGET EVERYTHING I WROTE ORIGINALLY, IM ACTUALLY PRETTY SLOW IN THE HEAD SOMETIMES, SCROLL DOWN AND READ WHAT I WROTE
*/

Handle weaponDrop = INVALID_HANDLE; //setting up the global variable

public void OnPluginStart()
{
  	//all this stuff is to set up the sdkcall
	StartPrepSDKCall(SDKCall_Player); 
	PrepSDKCall_SetFromConf(INVALID_HANDLE, SDKConf_Signature, "CSWeaponDrop");
	PrepSDKCall_AddParameter(SDKType_CBaseEntity, SDKPass_Pointer);
	PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain);
	PrepSDKCall_AddParameter(SDKType_Bool, SDKPass_Plain);
	weaponDrop = EndPrepSDKCall();
}

public int Callback(Menu menu, MenuAction action, int param1, int param2)
{
  switch(action)
  {
    case MenuAction_Select:
      {
        char item[32];
        menu.GetItem(param2, item, sizeof(item));
        
        if (StrEqual(item, "weapon_fiveseven"))
        {
         	int weapon = GetPlayerWeaponSlot(param1, 1); 
          	//I think 1 is secondary, I guess you could also just use the CS_SLOT_SECONDARY thing as well
		SDKCall(weaponDrop, param1, weapon, true, true); 
          	GivePlayerItem(param1, "weapon_fiveseven");
        }
        else if (StrEqual(item, "weapon_awp"))
        {
          	int weapon = GetPlayerWeaponSlot(param1, 0); 
          	//I think 0 is primary, I guess you could also just use the CS_SLOT_PRIMARY thing as well
		SDKCall(weaponDrop, param1, weapon, true, true); 
          	GivePlayerItem(param1, "weapon_awp");
        }
        //then add 'else if' statements for the other buy options   
  	case MenuAction_Cancel:
	{
		delete menu;
	}
		
	case MenuAction_End:
	{
		delete menu;
   	}
  }
}
  //again this wouldn't work for the plugin on the server, but it's an example to show the premise
  
  
  
  //EDIT 9/7/2020
  //I just realized this would be much easier by just using the CS_DropWeapon native function built right into sourcepawn lmao
  void CS_DropWeapon(int client, int weaponIndex, bool toss, bool blockhook);
  //so just forget everything I wrote above, that probably wouldn't have worked anyways, you can just do something like this
  stock bool DropWeapon(int client, char[] entity, int weapon, int offset){
	if(IsValidClient(client, false, false) && IsValidEntity(weapon)){
		char classname[64]; 
		GetEntityClassname(weapon, classname, sizeof(classname));  

		if(StrEqual(classname, entity, false)){
			if(offset < 1){
				CS_DropWeapon(client, weapon, true, true);
			}else{
				int quantity = GetEntProp(client, Prop_Send, "m_iAmmo", _, offset);		
				if(quantity > 1){
					quantity --;
					SetEntProp(client, Prop_Send, "m_iAmmo", quantity, _, offset);
					
					float vec[3], origin[3], angles[3];
					GetClientEyePosition(client, vec);
					GetClientAbsOrigin(client, angles); 


					int side = GetRandomInt(0, 1);
					int randomy = GetRandomInt(-55, 60);

			
					int randomx; 
					if(side == 0){randomx = GetRandomInt(-55, -60);}
					else if(side == 1){randomx = GetRandomInt(55, 60);}

				
					origin[0] = vec[0] + randomx;
					origin[1] = vec[1] + randomy;
					origin[2] = angles[2] + 25;

					int drop = CreateEntityByName(entity);
					if(IsValidEntity(drop)){		
						DispatchKeyValue(drop, "ammo", "0");
						DispatchSpawn(drop); 
						TeleportEntity(drop, origin, angles, NULL_VECTOR);
					}
				}else if(quantity == 1){CS_DropWeapon(client, weapon, true, true);}
			}

			return true;
		}
	}

	return false;
}
  
  //Perhaps a lot of that stuff wouldnt be nessesarry and you can just do 
  public int xyzsomethingimportantgoeshere(Menu menu, MenuAction action, int param1, int param2)
{
	switch (action)
	{
		case MenuAction_Select:
		{
			char item[32];
			menu.GetItem(param2, item, sizeof(item));
			
			int weapon = GetPlayerWeaponSlot(param1, 1);
			if (weapon != -1)
			{
				CS_DropWeapon(param1, weapon, true);
				GivePlayerItem(param1, item);
			}
			else{GivePlayerItem(param1, item);}
         }
		case MenuAction_Cancel:
		{
			delete menu;
		}
		
		case MenuAction_End:
		{
			delete menu;
		}
		
	}
}
  • On maps like mirage/office where there's a vent in ladder->sniper and ct->jungle or glass, props can't break that vent, this isnt exactly a problem as there's other ways to get places.
  • Dust2 is weird, as you can see in my videos there's a bunch of shader issues (this shader thing seems to be a wide spread issue on other maps as well. I think this may just be due to the plugin reading the props on the map but I dunno) and there's random props everywhere that make no sense/not in actual Dust2. this can cause unnecessary damage to CTs trying to find props
  • CTs still can not be killed from damaging non-player props (I think this can be fixed with a simple cvar change)
  • CTs get constant large increments of money while still waiting for props to hide
  • You can also see outside some maps with the 3rd person on prop team, but you cant fix that, just wanted to point it out.
  • RTV doesn't wait for end of round
  • You still get taunt overload after activating ultimate upgrade
  • After activating Ultimate you can no longer taunt (extension to former)
//This can be "fixed" by changing what command the script listens for, or by making the taunt plugin check to see if you have activated ultimute

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    //insert code stuff here
    IN_<whatever command> 
    //insert code stuff here
}

//or

public Action blahblahblag(int whatever they put here)
{
 	if (Ultmimutevariable != 1)
    {
      //regular code stuff here
    }
  	else if (Ultimimutevariable = 1)
    {
     //stop the regular code taunt plugin whatevers 
    }
}
  • Buy menu doesn't update when new weapon is added
  • When spawning as a Prop, your statistics (such as hp, speed, grav) aren't displayed, rather replaced with 0. Unless you played as a prop prior then it would show your last played prop specs.
  • Add a sm_afk command
//This should be in the server saying how you cant move to spec using the team chaning menu and the AFK Manager plugin will move you to spec for being afk
//Hell I'll write out a plugin for you, just copy paste this code into the compiler using SM 1.8 config and boom done.
#pragma semicolon 1

#include <sourcemod>

#pragma newdecls required

public Plugin myinfo = 
{
	name = "AFK Plugin",
	author = "Logical",
	description = "Sends Player to Spec",
	version = SOURCEMOD_VERSION,
	url = "http://www.sourcemod.net/",
};

public void OnPluginStart()
{
	RegConsoleCmd("sm_afk", AFKCommand, "Sends Player to Spectator"); //This registers your !afk command
}

public Action AFKCommand(int client, int args)
{
	if (GetClientTeam(client) != 1) // gets your team number and checks if its not equal (!=) to 1 which is most likly spec
    {
		ChangeClientTeam(client, 1); 
      //this will just slay you and move the client to spec (1 is the number for spec, prolly /shrug :))
		PrintToChat(client, "[SM] You are now AFK."); 
		return Plugin_Handled; //Returns the plugin
    }
  	else
    {
      	PrintToChat(client, "[SM] You are already in Spectator");
      	return Plugin_Handled;
    }
}
  • This is more of a suggestion but can we change the coloring of the messages like this

[PropHuntX]  WARNING: Taunt overload! Taunt before punishment kicks in.

We could even change it to say [GP PropHunt] instead, make it look more professional for our server, but the way its colored just makes it really 'hard on the eyes'

  • When moving to CT when there is no queue it sends you a queue message, this was tested with no one on the server so that could be a cause. "[PropHuntX]  You have been added to seeker team queue. Current position: 1"
  • The Exploiting maps/plugins alert takes up 2 chat "I guess you can call slots" instead of 1 like the others, seen in the image below
  • Same issue with the membership alert

20200901144056_1.thumb.jpg.aa401c2510f0dd8a5cc1326665d9f158.jpg

  • When buying something, the deducted points that is printed to center screen does not match the cost thats printed in chat or in the buy menu. Rather, its reading the delta of your credits, however this should be changed as it can be quite confusing.
//This should be quite simple
//Just change the %s it displays to the variable that is the cost of the item bought

PrintCenterChat(client, "-%s", <insert the item cost variable>);
//it would probably be more complex than that though
//You could always keep it the way it is though, this isnt "game breaking"
  • On the front page of gamepunch.net the gametracker button goes to prophunt but the stats button redirects to casual
  • !motd doesnt display the motd, neither does typing motd in console "▪› Tips: Type !motd to view the GamePunch Prop Hunt rule list." Someone else will need to test this as well. Sometimes source does like to be fucky when it comes to motd so it could just be on my end as the command is still going through.

20200901200904_1.thumb.jpg.7150d6eff7e8e97ac2c7a6b5ec7829b5.jpg

  • as seen above, after swaping to T at round end from CT whilst have had bought and not used healthshots they will remain visable when you spawn in as a prop. These healthshots arent useable and wont show up on the player model. I'm not sure if this is just a source thing. However you will be able to use them when you swap back to CT after the next round end without having to pay.

This makes me think its a plugin issue more than a source issue.

  • AFK Manager plugin doesn't actually move the player to spec.
  • Menus from previous round don't disappear when respawning
  • Having a preapplied clan tag prevents AdminFLG clan tags from showing up* (maybe) (this is because I don't have the member role for some reason on prophunt, perhaps I'm not marked in sourcebans correctly, but either way if you are going to have adminflg's as clan tags other clan tags should be disabled.)
  • Jumping while doing the smoke buy damages the player
  • While on CT with nobody on T, if a T joins and the round restarts, CTs will keep the weapons from prevopis rounds shown in screenshot below

20200902175240_1.thumb.jpg.aee374f73c0796704f8b5c35e859a126.jpg

  • The first prop you spawn is as is not an option in the prop menu (sometimes)
  • Items aren't removed on round win as CT (Is this intentional?)image.thumb.png.a62558ca2bfd6b35947cc02d41b6909d.png
  • As seen above, when banned on prophunt it shows the incorrect mod (icon top right) and server (3rd from the bottom)
  • Because of the broken AFK manager plugin, when a T gets swapped to CT, They will be swapped to T along with the CT from previous round causing both players to be on the prop team.
  • Taunt pentaltys remove all but 10 to 20 or so credits (intentional?)
  • Prop Models can block bullets preventing the prop from being killed as seen ^
  • You also can't right-click knife (this may be intentional)
Edited by Logical
More bugs added 9/5 1:12pm
Link to comment
Share on other sites

I suppose I should make this more clear, my code suggestions are not 100% going to work. I have not seen the code for the plugins on the server, nor do I know how the plugins work. The code I've written by itself will work, but may not work in the scenario of the plugin. My mere suggestions gives the premise of how you can implement simplified renditions of the code into the plugin to achieve a beneficial result.

Link to comment
Share on other sites

On 9/2/2020 at 1:45 PM, Logical said:

I suppose I should make this more clear, my code suggestions are not 100% going to work. I have not seen the code for the plugins on the server, nor do I know how the plugins work. The code I've written by itself will work, but may not work in the scenario of the plugin. My mere suggestions gives the premise of how you can implement simplified renditions of the code into the plugin to achieve a beneficial result.

Appreciate the feedback, Logical! Some great insight here. I will get with Element if he has some time this weekend to go over it 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...