Help me optimize the code
#1

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;
}
Reply
#2

try changing createobject to createdynamicobject
Reply
#3

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

Use streamer plugin, and make use of this callback OnPlayerShootDynamicObject
Reply
#5

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

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;
                }
            }
        } 
Reply
#7

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;
}
Reply
#8

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.)
Reply
#9

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
Reply
#10

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;
                }
            }
        }
	}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)