SA-MP Forums Archive
Conflicting Filterscripts - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Conflicting Filterscripts (/showthread.php?tid=658642)



Conflicting Filterscripts - B-rian - 08.09.2018

Hello, I am trying to make a Gun dealer system and a 24/7 system, I made both of them in a seperate filterscript and they seem to be conflicting. If I use either of them seperately they both work as intended, as soon as both are enabled one of them begins to malfunction.

I think this is because of a problem with dialogid, I don't quite understand how dialogid works and this was my best attempt at this. I will leave relevant code below.

24/7 Script

Код:
#define FILTERSCRIPT
#include <a_samp>
#if defined FILTERSCRIPT
#define COLOR_RED 0xAA3333AA
#define COLOR_LIME 0x10F441AA


new StorePickup;
new PlayerCig;
new PlayerSprunk;
new PlayerBeer;


public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print("24/7 FilterScript by Brian3898");
	print("--------------------------------------\n");
	
	StorePickup = CreatePickup(1274,1,-28.0080,-89.6934,1003.5469,-1);
	
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (!strcmp("/sprunk", cmdtext, true, 7))
	{
        if(PlayerSprunk == 0)
	    {
		   SendClientMessage(playerid, COLOR_RED, "SERVER: You don't have any Sprunk!");
	    }
		else
		{
		   SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);
		   PlayerSprunk = 0;
		}
		return 1;
	}
	
	if (!strcmp("/beer", cmdtext, true, 5))
	{
        if(PlayerBeer == 0)
	    {
		   SendClientMessage(playerid, COLOR_RED, "SERVER: You don't have any beer!");
	    }
		else
		{
		   SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
		   PlayerBeer = 0;
		}
		return 1;
	}
	
	if(!strcmp("/cig", cmdtext, true, 4))
	{
	    if(PlayerCig == 0)
	    {
  	       SendClientMessage(playerid, COLOR_RED, "SERVER: You don't have any cigarettes!");
	    }
	    else
	    {
		  SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
          PlayerCig = PlayerCig - 1;
	    }
	    return 1;
	}
	
	return 0;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	if(pickupid == StorePickup)
	{
	  ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"24/7","Redwood Cigarettes($20)\nSprunk($20)\nBeer($20)\nSpray Can($50)\nBaseball Bat($100)","Buy", "Cancel");
	}
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
    {
	  case 1:
	  {
	   if(response)
	   {
		  switch(listitem)
		  {
			 case 0:
			 {
				if(GetPlayerMoney(playerid) < 20) return SendClientMessage(playerid, COLOR_RED, "SERVER: You cannot afford this item!");
				GivePlayerMoney(playerid, -20);
				SendClientMessage(playerid, COLOR_LIME, "SERVER: You have bought a pack of Redwoods.");
				PlayerCig = 5;
				return 1;
			 }
			 case 1:
			 {
                if(GetPlayerMoney(playerid) < 20) return SendClientMessage(playerid, COLOR_RED, "SERVER: You cannot afford this item!");
                GivePlayerMoney(playerid, -20);
                SendClientMessage(playerid, COLOR_LIME, "SERVER: You have bought a can of Sprunk.");
                PlayerSprunk = 1;
                return 1;
			 }
			 case 2:
			 {
                if(GetPlayerMoney(playerid) < 20) return SendClientMessage(playerid, COLOR_RED, "SERVER: You cannot afford this item!");
                GivePlayerMoney(playerid, -20);
                SendClientMessage(playerid, COLOR_LIME, "SERVER: You have bought a botle of beer.");
                PlayerBeer = 1;
                return 1;
			 }
			 case 3:
			 {
                if(GetPlayerMoney(playerid) < 50) return SendClientMessage(playerid, COLOR_RED, "SERVER: You cannot afford this item!");
                GivePlayerMoney(playerid, -20);
                SendClientMessage(playerid, COLOR_LIME, "SERVER: You have bought a spray can.");
                GivePlayerWeapon(playerid, 41, 1000);
                return 1;
			 }
			 case 4:
			 {
                if(GetPlayerMoney(playerid) < 100) return SendClientMessage(playerid, COLOR_RED, "SERVER: You cannot afford this item!");
                GivePlayerMoney(playerid, -20);
                SendClientMessage(playerid, COLOR_LIME, "SERVER: You have bought a Baseball Bat.");
                GivePlayerWeapon(playerid, 5, 1);
                return 1;
			 }
          }
	   }
	}
  }

	return 1;
}
Gun Dealer code
Код:
#define FILTERSCRIPT
#include <a_samp>
#if defined FILTERSCRIPT
#define COLOR_RED 0xAA3333AA

new GunDealerOGF;
new GunDealerLSB;
new GunDealerLSV;

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	
	GunDealerOGF = CreatePickup(346,1,2439.7334,-1900.7236,13.5534,-1);
	GunDealerLSB = CreatePickup(346,1,1893.8046,-1069.5847,23.9375,-1);
	GunDealerLSV = CreatePickup(346,1,2769.6465,-1367.8754,39.7060,-1);
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{

  if(pickupid == GunDealerOGF)
  {
    ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"Guns","Colt 45 ($500)\nTEC-9 ($1000)\nMicro-UZI ($1000)\nShotgun ($2000)\nDesert Eagle ($2500)","Choose","Cancel");
  }

  if(pickupid == GunDealerLSB)
  {
    ShowPlayerDialog(playerid,3,DIALOG_STYLE_LIST,"Guns","Colt 45 ($500)\nTEC-9 ($1000)\nMicro-UZI ($1000)\nShotgun ($2000)\nDesert Eagle ($2500)","Choose","Cancel");
  }
  
  if(pickupid == GunDealerLSV)
  {
    ShowPlayerDialog(playerid,4,DIALOG_STYLE_LIST,"Guns","Colt 45 ($500)\nTEC-9 ($1000)\nMicro-UZI ($1000)\nShotgun ($2000)\nDesert Eagle ($2500)","Choose","Cancel");
  }
  
  return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid) // We use switch since it is quicker than using multiple 'if' statements
	{
	    case 2: // OGF Dealer
	    {
			if(response) // If the player didn't cancel the dialog
			{
			    switch(listitem) // Switch through the list items, quicker and is easier for adding more guns to the dialog
			    {
			        case 0: // List item 0
			        {
			            if(GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,22,300); // Give the player the weapon
			            GivePlayerMoney(playerid,-500); // Give the player $-500
			            return 1;
					}
					case 1: // List item 1
			        {
			            if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,32,300); // Give the player the weapon
			            GivePlayerMoney(playerid,-1000); // Give the player $-900
			            return 1;
					}
					case 2: // List item 2
			        {
			            if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,28,300); // Give the player the weapon
			            GivePlayerMoney(playerid,-1000); // Give the player $-900
			            return 1;
					}
					case 3: // List item 3
			        {
			            if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,25,25); // Give the player the weapon
			            GivePlayerMoney(playerid,-2000); // Give the player $-900
			            return 1;
					}
					case 4: // List item 4
			        {
			            if(GetPlayerMoney(playerid) < 2500) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,24,25); // Give the player the weapon
			            GivePlayerMoney(playerid,-2500); // Give the player $-900
			            return 1;
					}
				}
			}
		}
	
		case 3: // LSB Dealer
	    {
			if(response) // If the player didn't cancel the dialog
			{
			    switch(listitem) // Switch through the list items, quicker and is easier for adding more guns to the dialog
			    {
			        case 0: // List item 0
			        {
			            if(GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,22,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-500); // Give the player $-500
			            return 1;
					}
					case 1: // List item 1
			        {
			            if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,32,200); // Give the player the weapon
			            GivePlayerMoney(playerid,-1000); // Give the player $-900
			            return 1;
					}
					case 2: // List item 2
			        {
			            if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,28,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-1000); // Give the player $-900
			            return 1;
					}
					case 3: // List item 3
			        {
			            if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,25,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-2000); // Give the player $-900
			            return 1;
					}
					case 4: // List item 4
			        {
			            if(GetPlayerMoney(playerid) < 2500) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,24,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-2500); // Give the player $-900
			            return 1;
					}
				}
			}
		}
		
		case 4: // LSV Dealer
	    {
			if(response) // If the player didn't cancel the dialog
			{
			    switch(listitem) // Switch through the list items, quicker and is easier for adding more guns to the dialog
			    {
			        case 0: // List item 0
			        {
			            if(GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,22,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-500); // Give the player $-500
			            return 1;
					}
					case 1: // List item 1
			        {
			            if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,32,200); // Give the player the weapon
			            GivePlayerMoney(playerid,-1000); // Give the player $-900
			            return 1;
					}
					case 2: // List item 2
			        {
			            if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,28,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-1000); // Give the player $-900
			            return 1;
					}
					case 3: // List item 3
			        {
			            if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,25,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-2000); // Give the player $-900
			            return 1;
					}
					case 4: // List item 4
			        {
			            if(GetPlayerMoney(playerid) < 2500) return SendClientMessage(playerid,COLOR_RED,"SERVER: You cannot afford this weapon!");
			            GivePlayerWeapon(playerid,24,100); // Give the player the weapon
			            GivePlayerMoney(playerid,-2500); // Give the player $-900
			            return 1;
					}
				}
			}
     	     }
	}
	
	return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 50);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 40);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_DESERT_EAGLE, 200);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_SHOTGUN, 200);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 200);
	return 1;
}



Re: Conflicting Filterscripts - Banditul18 - 08.09.2018

return 0 at the end of OnDialogResponse for both FS, problem solved


Re: Conflicting Filterscripts - B-rian - 08.09.2018

Thank you so much! I am very new to this and was wondering if you could please explain the reason why the return 0; was the problem.

Again, thank you so much! Rep'd!


Re: Conflicting Filterscripts - Banditul18 - 08.09.2018

Returning 0 at the of OnDialogResponse on fs let the scripts comunicate and not restricting only to one of the fs


Re: Conflicting Filterscripts - B-rian - 08.09.2018

Thank you! This has surfaced a new issue, it seems that a few of the gun dealers are selling the wrong weapon. For example, on DealerOGF, if I buy a Micro UZI ingame, it gives me a Colt 45. If anyone could solve that for me that would be great, I'm also looking into it.