SA-MP Forums Archive
Help me optimize the code - 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: Help me optimize the code (/showthread.php?tid=641311)



Help me optimize the code - skiplovebra - 14.09.2017

I created a deer hunting code but it made my server lag, When the server hunter will lag, does not work then would normally someone can help me review the code that worked well?
Код:
if(hittype == 3)
	{
		if(weaponid >= 22 && weaponid <= 34)
		{
			if(hitid == DeerID[0] || hitid == DeerID[1] || hitid == DeerID[2] || hitid == DeerID[3] || hitid == DeerID[4] || hitid == DeerID[5] || hitid == DeerID[6] ||
			hitid == DeerID[7] || hitid == DeerID[8] || hitid == DeerID[9] || hitid == DeerID[10] || hitid == DeerID[11] || hitid == DeerID[12] || hitid == DeerID[13] || hitid == DeerID[14] ||
			hitid == DeerID[15] || hitid == DeerID[16] || hitid == DeerID[17] || hitid == DeerID[18] || hitid == DeerID[19] || hitid == DeerID[20] || hitid == DeerID[21] ||
			hitid == DeerID[22] || hitid == DeerID[23] || hitid == DeerID[24] || hitid == DeerID[25] || hitid == DeerID[26] || hitid == DeerID[27] || hitid == DeerID[28] ||
			hitid == DeerID[29] || hitid == DeerID[30] || hitid == DeerID[31] || hitid == DeerID[32] || hitid == DeerID[33] || hitid == DeerID[34] || hitid == DeerID[35] ||
			hitid == DeerID[36] || hitid == DeerID[37] || hitid == DeerID[38] || hitid == DeerID[39] || hitid == DeerID[40] || hitid == DeerID[41] || hitid == DeerID[42] ||
			hitid == DeerID[43] || hitid == DeerID[44] || hitid == DeerID[45] || hitid == DeerID[46] || hitid == DeerID[47] || hitid == DeerID[48] || hitid == DeerID[49] ||
			hitid == DeerID[50] || hitid == DeerID[51] || hitid == DeerID[52] || hitid == DeerID[53] || hitid == DeerID[54] || hitid == DeerID[55] || hitid == DeerID[56] ||
			hitid == DeerID[57])
			{
				new Float:x, Float:y, Float:z;
				GetObjectPos(hitid, x, y, z);
				SetObjectRot(hitid, 90, 0, 0);
				SetObjectPos(hitid, x, y, z-0.5);
				PlayerInfo[playerid][Mothitnaiid] = hitid;
			}
		}
	}
Код:
forward SpawnDeers();
public SpawnDeers()
{
    for(new i = 0; i < sizeof DeerID; i++)
    {
	    DestroyObject(DeerID[i]);
    }
	DeerID[0] = CreateObject(19315,-1723.1058,-842.8972,79.3389-0.5,0.0,0.0,0.0);
	DeerID[1] = CreateObject(19315,-1728.1034,-859.9429,77.9342-0.5,0.0,0.0,0.0);
	DeerID[2] = CreateObject(19315,-1728.8254,-890.5751,73.5945-0.5,0.0,0.0,0.0);
	DeerID[3] = CreateObject(19315,-1712.1740,-911.6493,71.0492-0.5,0.0,0.0,0.0);
	DeerID[4] = CreateObject(19315,-1697.9153,-936.7909,69.1722-0.5,0.0,0.0,0.0);
	DeerID[5] = CreateObject(19315,-1707.4603,-952.8467,71.1320-0.5,0.0,0.0,0.0);
	DeerID[6] = CreateObject(19315,-1707.5846,-969.4204,72.3184-0.5,0.0,0.0,0.0);
	DeerID[7] = CreateObject(19315,-1706.1477,-982.9753,73.1914-0.5,0.0,0.0,0.0);
	DeerID[8] = CreateObject(19315,-1727.1587,-983.4821,75.1473-0.5,0.0,0.0,0.0);
	DeerID[9] = CreateObject(19315,-1716.4420,-961.4773,72.7254-0.5,0.0,0.0,0.0);
	DeerID[10] = CreateObject(19315,-1722.8336,-962.6197,73.7369-0.5,0.0,0.0,0.0);
	DeerID[11] = CreateObject(19315,-1732.3307,-970.5056,75.3772-0.5,0.0,0.0,0.0);
	DeerID[12] = CreateObject(19315,-1711.4668,-1014.6158,74.1975-0.5,0.0,0.0,0.0);
	DeerID[13] = CreateObject(19315,-1692.3326,-1032.5867,73.2513-0.5,0.0,0.0,0.0);
	DeerID[14] = CreateObject(19315,-1711.7084,-1044.9674,74.3987-0.5,0.0,0.0,0.0);
	DeerID[15] = CreateObject(19315,-1720.1375,-1022.3911,74.8746-0.5,0.0,0.0,0.0);
	DeerID[16] = CreateObject(19315,-1682.2148,-899.4613,65.4997-0.5,0.0,0.0,0.0);
	DeerID[17] = CreateObject(19315,-1679.7423,-914.8919,65.3276-0.5,0.0,0.0,0.0);
	DeerID[18] = CreateObject(19315,-1676.9684,-945.6594,66.5191-0.5,0.0,0.0,0.0);
	DeerID[19] = CreateObject(19315,-1672.6255,-984.6744,70.4811-0.5,0.0,0.0,0.0);
	DeerID[20] = CreateObject(19315,-1688.2556,-1013.7517,72.5190-0.5,0.0,0.0,0.0);
	DeerID[21] = CreateObject(19315,-1696.0980,-1038.5360,73.4593-0.5,0.0,0.0,0.0);
	DeerID[22] = CreateObject(19315,-1717.0869,-1046.7482,74.7963-0.5,0.0,0.0,0.0);
	DeerID[23] = CreateObject(19315,-1704.1157,-1066.6870,77.1756-0.5,0.0,0.0,0.0);
	DeerID[24] = CreateObject(19315,-1706.6012,-951.3674,70.9669-0.5,0.0,0.0,0.0);
	DeerID[25] = CreateObject(19315,-1694.7205,-943.7279,68.9641-0.5,0.0,0.0,0.0);
	DeerID[26] = CreateObject(19315,-1696.4130,-834.7831,80.7612-0.5,0.0,0.0,0.0);
	DeerID[27] = CreateObject(19315,-1679.0938,-934.4304,66.0955-0.5,0.0,0.0,0.0);
	DeerID[28] = CreateObject(19315,-1001.5177,-1664.4807,76.3672-0.5,0.0,0.0,0.0);
	DeerID[29] = CreateObject(19315,-1025.6973,-1666.4629,77.9433-0.5,0.0,0.0,0.0);
	DeerID[30] = CreateObject(19315,-1013.7960,-1651.4187,76.3672-0.5,0.0,0.0,0.0);
	DeerID[31] = CreateObject(19315,-999.9654,-1644.1575,76.3672-0.5,0.0,0.0,0.0);
	DeerID[32] = CreateObject(19315,-980.7020,-1634.0436,76.3672-0.5,0.0,0.0,0.0);
	DeerID[33] = CreateObject(19315,-961.0276,-1623.7139,77.8765-0.5,0.0,0.0,0.0);
	DeerID[34] = CreateObject(19315,-937.5044,-1626.6692,82.7711-0.5,0.0,0.0,0.0);
	DeerID[35] = CreateObject(19315,-948.4880,-1633.8291,78.7738-0.5,0.0,0.0,0.0);
	DeerID[36] = CreateObject(19315,-962.3856,-1650.5750,75.2366-0.5,0.0,0.0,0.0);
	DeerID[37] = CreateObject(19315,-967.9151,-1669.5458,75.7399-0.5,0.0,0.0,0.0);
	DeerID[38] = CreateObject(19315,-969.1192,-1673.2551,75.9389-0.5,0.0,0.0,0.0);
	DeerID[39] = CreateObject(19315,-983.5547,-1677.4359,76.3597-0.5,0.0,0.0,0.0);
	DeerID[40] = CreateObject(19315,-992.7035,-1702.6348,76.9678-0.5,0.0,0.0,0.0);
	DeerID[41] = CreateObject(19315,-992.0241,-1717.5455,77.5703-0.5,0.0,0.0,0.0);
	DeerID[42] = CreateObject(19315,-999.7465,-1735.2739,77.4708-0.5,0.0,0.0,0.0);
	DeerID[43] = CreateObject(19315,-1031.2318,-1708.2258,77.4022-0.5,0.0,0.0,0.0);
	DeerID[44] = CreateObject(19315,-1038.1670,-1688.5862,77.8803-0.5,0.0,0.0,0.0);
	DeerID[45] = CreateObject(19315,-1049.3079,-1653.7048,77.2108-0.5,0.0,0.0,0.0);
	DeerID[46] = CreateObject(19315,-1041.7288,-1624.5234,76.3672-0.5,0.0,0.0,0.0);
	DeerID[47] = CreateObject(19315,-1005.0761,-1616.9340,76.3672-0.5,0.0,0.0,0.0);
	DeerID[48] = CreateObject(19315,-955.6899,-1644.4076,76.3584-0.5,0.0,0.0,0.0);
	DeerID[49] = CreateObject(19315,-952.4150,-1678.8743,76.3017-0.5,0.0,0.0,0.0);
	DeerID[50] = CreateObject(19315,-1083.7072,-1621.2477,76.3672-0.5,0.0,0.0,0.0);
	DeerID[51] = CreateObject(19315,-1090.0746,-1635.2618,76.3672-0.5,0.0,0.0,0.0);
	DeerID[52] = CreateObject(19315,-1092.4879,-1655.5338,76.3739-0.5,0.0,0.0,0.0);
	DeerID[53] = CreateObject(19315,-1101.0837,-1650.0121,76.3672-0.5,0.0,0.0,0.0);
	DeerID[54] = CreateObject(19315,-1121.6215,-1652.1825,76.3672-0.5,0.0,0.0,0.0);
	DeerID[55] = CreateObject(19315,-1130.2994,-1671.5167,76.9451-0.5,0.0,0.0,0.0);
	DeerID[56] = CreateObject(19315,-979.2924,-1636.3519,76.3672-0.5,0.0,0.0,0.0);
	DeerID[57] = CreateObject(19315,-928.7543,-1628.1510,86.0897-0.5,0.0,0.0,0.0);
	SetTimer("SpawnDeers", 850*60*5, 0);
	return 1;
}
Код:
public InitiateGamemode()
{
SpawnDeers();
return 1;
}



Re: Help me optimize the code - Puff - 14.09.2017

try changing createobject to createdynamicobject


Re: Help me optimize the code - skiplovebra - 14.09.2017

Quote:
Originally Posted by Puff
Посмотреть сообщение
try changing createobject to createdynamicobject
It has to be the problem


Re: Help me optimize the code - Eoussama - 14.09.2017

Use streamer plugin, and make use of this callback OnPlayerShootDynamicObject


Re: Help me optimize the code - skiplovebra - 14.09.2017

Quote:
Originally Posted by Eoussama
Посмотреть сообщение
Use streamer plugin, and make use of this callback OnPlayerShootDynamicObject
I am using 2.7.9?


Re: Help me optimize the code - jlalt - 14.09.2017

By use streamer they meant be sure you have streamer plugin and then change DestroyObject to DestroyDynamicObject and also change CreateObject to CreateDynamicObject, also in this part of code you can use a loop, which will make it too way shorter to check.
PHP код:
if(weaponid >= 22 && weaponid <= 34)
        {
            if(
hitid == DeerID[0] || hitid == DeerID[1] || hitid == DeerID[2] || hitid == DeerID[3] || hitid == DeerID[4] || hitid == DeerID[5] || hitid == DeerID[6] ||
            
hitid == DeerID[7] || hitid == DeerID[8] || hitid == DeerID[9] || hitid == DeerID[10] || hitid == DeerID[11] || hitid == DeerID[12] || hitid == DeerID[13] || hitid == DeerID[14] ||
            
hitid == DeerID[15] || hitid == DeerID[16] || hitid == DeerID[17] || hitid == DeerID[18] || hitid == DeerID[19] || hitid == DeerID[20] || hitid == DeerID[21] ||
            
hitid == DeerID[22] || hitid == DeerID[23] || hitid == DeerID[24] || hitid == DeerID[25] || hitid == DeerID[26] || hitid == DeerID[27] || hitid == DeerID[28] ||
            
hitid == DeerID[29] || hitid == DeerID[30] || hitid == DeerID[31] || hitid == DeerID[32] || hitid == DeerID[33] || hitid == DeerID[34] || hitid == DeerID[35] ||
            
hitid == DeerID[36] || hitid == DeerID[37] || hitid == DeerID[38] || hitid == DeerID[39] || hitid == DeerID[40] || hitid == DeerID[41] || hitid == DeerID[42] ||
            
hitid == DeerID[43] || hitid == DeerID[44] || hitid == DeerID[45] || hitid == DeerID[46] || hitid == DeerID[47] || hitid == DeerID[48] || hitid == DeerID[49] ||
            
hitid == DeerID[50] || hitid == DeerID[51] || hitid == DeerID[52] || hitid == DeerID[53] || hitid == DeerID[54] || hitid == DeerID[55] || hitid == DeerID[56] ||
            
hitid == DeerID[57])
            {
                new 
Float:xFloat:yFloat:z;
                
GetObjectPos(hitidxyz);
                
SetObjectRot(hitid9000);
                
SetObjectPos(hitidxyz-0.5);
                
PlayerInfo[playerid][Mothitnaiid] = hitid;
            }
        } 
by a loop becomes ->
PHP код:
        if(weaponid >= 22 && weaponid <= 34)
        {
            for(new 
0sizeof DeerIDi++)
            {
                if(
hitid == DeerID[i])
                {
                    new 
Float:xFloat:yFloat:z;
                    
GetObjectPos(hitidxyz);
                    
SetObjectRot(hitid9000);
                    
SetObjectPos(hitidxyz-0.5);
                    
PlayerInfo[playerid][Mothitnaiid] = hitid;
                }
            }
        } 



Re: Help me optimize the code - skiplovebra - 14.09.2017

Quote:
Originally Posted by Eoussama
Посмотреть сообщение
Use streamer plugin, and make use of this callback OnPlayerShootDynamicObject
OnPlayerShootDynamicObject yes please help me, i'm so bad code, i'm thankful you
Код:
public OnPlayerShootDynamicObject(playerid, weaponid, objectid, Float:x, Float:y, Float:z)
{
	if(objectid == 3)
	{
		if(weaponid >= 22 && weaponid <= 34)
		{
			if(objectid == DeerID[0] || objectid == DeerID[1] || objectid == DeerID[2] || objectid == DeerID[3] || objectid == DeerID[4] || objectid == DeerID[5] || objectid == DeerID[6] ||
			objectid == DeerID[7] || objectid == DeerID[8] || objectid == DeerID[9] || objectid == DeerID[10] || objectid == DeerID[11] || objectid == DeerID[12] || objectid == DeerID[13] || objectid == DeerID[14] ||
			objectid == DeerID[15] || objectid == DeerID[16] || objectid == DeerID[17] || objectid == DeerID[18] || objectid == DeerID[19] || objectid == DeerID[20] || objectid == DeerID[21] ||
			objectid == DeerID[22] || objectid == DeerID[23] || objectid == DeerID[24] || objectid == DeerID[25] || objectid == DeerID[26] || objectid == DeerID[27] || objectid == DeerID[28] ||
			objectid == DeerID[29] || objectid == DeerID[30] || objectid == DeerID[31] || objectid == DeerID[32] || objectid == DeerID[33] || objectid == DeerID[34] || objectid == DeerID[35] ||
			objectid == DeerID[36] || objectid == DeerID[37] || objectid == DeerID[38] || objectid == DeerID[39] || objectid == DeerID[40] || objectid == DeerID[41] || objectid == DeerID[42] ||
			objectid == DeerID[43] || objectid == DeerID[44] || objectid == DeerID[45] || objectid == DeerID[46] || objectid == DeerID[47] || objectid == DeerID[48] || objectid == DeerID[49] ||
			objectid == DeerID[50] || objectid == DeerID[51] || objectid == DeerID[52] || objectid == DeerID[53] || objectid == DeerID[54] || objectid == DeerID[55] || objectid == DeerID[56] ||
			objectid == DeerID[57])
			{
				new Float:x, Float:y, Float:z;
				GetObjectPos(objectid, x, y, z);
				SetObjectRot(objectid, 90, 0, 0);
				SetObjectPos(objectid, x, y, z-0.5);
				PlayerInfo[playerid][Mothitnaiid] = objectid;
			}
		}
	}
	return 1;
}



Re: Help me optimize the code - Kane - 14.09.2017

Please read about arrays and loops.

https://sampforum.blast.hk/showthread.php?tid=318212
https://sampwiki.blast.hk/wiki/Loops

PHP код:
for(new 0sizeof DeerIDi++)
{
     if(
hitid == DeerID[i])
     {
          
// code...
     
}

There's no need to DeerID[0] || DeerID[1] and et cetera in this scenario when you've created the objects with an array.

What's this for?
Код:
SetTimer("SpawnDeers", 850*60*5, 0);
(jlalt was 3mins quicker.)


Re: Help me optimize the code - skiplovebra - 14.09.2017

Quote:
Originally Posted by jlalt
Посмотреть сообщение
By use streamer they meant be sure you have streamer plugin and then change DestroyObject to DestroyDynamicObject and also change CreateObject to CreateDynamicObject, also in this part of code you can use a loop, which will make it too way shorter to check.
PHP код:
if(weaponid >= 22 && weaponid <= 34)
        {
            if(
hitid == DeerID[0] || hitid == DeerID[1] || hitid == DeerID[2] || hitid == DeerID[3] || hitid == DeerID[4] || hitid == DeerID[5] || hitid == DeerID[6] ||
            
hitid == DeerID[7] || hitid == DeerID[8] || hitid == DeerID[9] || hitid == DeerID[10] || hitid == DeerID[11] || hitid == DeerID[12] || hitid == DeerID[13] || hitid == DeerID[14] ||
            
hitid == DeerID[15] || hitid == DeerID[16] || hitid == DeerID[17] || hitid == DeerID[18] || hitid == DeerID[19] || hitid == DeerID[20] || hitid == DeerID[21] ||
            
hitid == DeerID[22] || hitid == DeerID[23] || hitid == DeerID[24] || hitid == DeerID[25] || hitid == DeerID[26] || hitid == DeerID[27] || hitid == DeerID[28] ||
            
hitid == DeerID[29] || hitid == DeerID[30] || hitid == DeerID[31] || hitid == DeerID[32] || hitid == DeerID[33] || hitid == DeerID[34] || hitid == DeerID[35] ||
            
hitid == DeerID[36] || hitid == DeerID[37] || hitid == DeerID[38] || hitid == DeerID[39] || hitid == DeerID[40] || hitid == DeerID[41] || hitid == DeerID[42] ||
            
hitid == DeerID[43] || hitid == DeerID[44] || hitid == DeerID[45] || hitid == DeerID[46] || hitid == DeerID[47] || hitid == DeerID[48] || hitid == DeerID[49] ||
            
hitid == DeerID[50] || hitid == DeerID[51] || hitid == DeerID[52] || hitid == DeerID[53] || hitid == DeerID[54] || hitid == DeerID[55] || hitid == DeerID[56] ||
            
hitid == DeerID[57])
            {
                new 
Float:xFloat:yFloat:z;
                
GetObjectPos(hitidxyz);
                
SetObjectRot(hitid9000);
                
SetObjectPos(hitidxyz-0.5);
                
PlayerInfo[playerid][Mothitnaiid] = hitid;
            }
        } 
by a loop becomes ->
PHP код:
        if(weaponid >= 22 && weaponid <= 34)
        {
            for(new 
0sizeof DeerIDi++)
            {
                if(
hitid == DeerID[i])
                {
                    new 
Float:xFloat:yFloat:z;
                    
GetObjectPos(hitidxyz);
                    
SetObjectRot(hitid9000);
                    
SetObjectPos(hitidxyz-0.5);
                    
PlayerInfo[playerid][Mothitnaiid] = hitid;
                }
            }
        } 
Thanks you


Re: Help me optimize the code - skiplovebra - 14.09.2017

Quote:
Originally Posted by jlalt
Посмотреть сообщение
By use streamer they meant be sure you have streamer plugin and then change DestroyObject to DestroyDynamicObject and also change CreateObject to CreateDynamicObject, also in this part of code you can use a loop, which will make it too way shorter to check.
PHP код:
if(weaponid >= 22 && weaponid <= 34)
        {
            if(
hitid == DeerID[0] || hitid == DeerID[1] || hitid == DeerID[2] || hitid == DeerID[3] || hitid == DeerID[4] || hitid == DeerID[5] || hitid == DeerID[6] ||
            
hitid == DeerID[7] || hitid == DeerID[8] || hitid == DeerID[9] || hitid == DeerID[10] || hitid == DeerID[11] || hitid == DeerID[12] || hitid == DeerID[13] || hitid == DeerID[14] ||
            
hitid == DeerID[15] || hitid == DeerID[16] || hitid == DeerID[17] || hitid == DeerID[18] || hitid == DeerID[19] || hitid == DeerID[20] || hitid == DeerID[21] ||
            
hitid == DeerID[22] || hitid == DeerID[23] || hitid == DeerID[24] || hitid == DeerID[25] || hitid == DeerID[26] || hitid == DeerID[27] || hitid == DeerID[28] ||
            
hitid == DeerID[29] || hitid == DeerID[30] || hitid == DeerID[31] || hitid == DeerID[32] || hitid == DeerID[33] || hitid == DeerID[34] || hitid == DeerID[35] ||
            
hitid == DeerID[36] || hitid == DeerID[37] || hitid == DeerID[38] || hitid == DeerID[39] || hitid == DeerID[40] || hitid == DeerID[41] || hitid == DeerID[42] ||
            
hitid == DeerID[43] || hitid == DeerID[44] || hitid == DeerID[45] || hitid == DeerID[46] || hitid == DeerID[47] || hitid == DeerID[48] || hitid == DeerID[49] ||
            
hitid == DeerID[50] || hitid == DeerID[51] || hitid == DeerID[52] || hitid == DeerID[53] || hitid == DeerID[54] || hitid == DeerID[55] || hitid == DeerID[56] ||
            
hitid == DeerID[57])
            {
                new 
Float:xFloat:yFloat:z;
                
GetObjectPos(hitidxyz);
                
SetObjectRot(hitid9000);
                
SetObjectPos(hitidxyz-0.5);
                
PlayerInfo[playerid][Mothitnaiid] = hitid;
            }
        } 
by a loop becomes ->
PHP код:
        if(weaponid >= 22 && weaponid <= 34)
        {
            for(new 
0sizeof DeerIDi++)
            {
                if(
hitid == DeerID[i])
                {
                    new 
Float:xFloat:yFloat:z;
                    
GetObjectPos(hitidxyz);
                    
SetObjectRot(hitid9000);
                    
SetObjectPos(hitidxyz-0.5);
                    
PlayerInfo[playerid][Mothitnaiid] = hitid;
                }
            }
        } 
Using your code I can not attack the deer?
Код:
if(hittype == 3)
	{
        if(weaponid >= 22 && weaponid <= 34)
        {
            for(new i = 0; i < sizeof DeerID; i++)
            {
                if(hitid == DeerID[i])
                {
                    new Float:x, Float:y, Float:z;
                    GetObjectPos(hitid, x, y, z);
                    SetObjectRot(hitid, 90, 0, 0);
                    SetObjectPos(hitid, x, y, z-0.5);
                    PlayerInfo[playerid][Mothitnaiid] = hitid;
                }
            }
        }
	}