Provavelmente й problema no foreach, lembro que teve algum problema assim .. Vou dar uma olhada aqui
EDIT:
Em streamer.pwn deixe da seguinte maneira:
pawn Код:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [iPs]TeaM Object Streamer 0.3d (V2)// Author: Bruno da Silva// http://www.ips-team.blogspot.com/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#include <a_samp>#define MAX_STREAM 05000#define MIN_INTERVAL 00500#define function%0(%1) %0(%1); public %0(%1)static i ;
#define foreach() \ for( i
= MaxPlayers; i
> -1; i
--) if(IsPlayerConnected
(i
)) // ===================== [ Declarar Variaveis ] ================================stock static MaxPlayers,
bool:objetoDeletado
[MAX_PLAYERS
][MAX_STREAM
],
objetoCriado
[MAX_STREAM
],
Float:objetoDistancia
[MAX_PLAYERS
],
structObject
[MAX_STREAM
char],
objetoIdd
[MAX_STREAM
],
Float:dataObject
[MAX_STREAM
][7],
objetoConfigs
[MAX_STREAM
][2],
objetosCriados
[MAX_PLAYERS
],
objetoNumero
[MAX_PLAYERS
],
objectModel
[MAX_STREAM
],
objdetoIdd
[MAX_STREAM
],
objCriados
= 0;
// ========================== [ Funзхes ] ======================================public OnFilterScriptInit
(){ MaxPlayers
= GetMaxPlayers
();
return SetTimer
("ObjectUpdate", MIN_INTERVAL, true
);
}function createObject
(modelid,
Float:X,
Float:Y,
Float:Z,
Float:rX,
Float:rY,
Float:rZ,
Float:DrawDistance, interior, worldids
){ if(MAX_STREAM
- 1 == objCriados
) { print("[ERRO] Informaзгo acessada invбlida (objeto numero " #MAX_STREAM - 1 " )"); return false;
} ++objCriados;
objectModel
[objCriados
] = modelid;
dataObject
[objCriados
][0] = X;
dataObject
[objCriados
][1] = Y;
dataObject
[objCriados
][2] = Z;
dataObject
[objCriados
][3] = rX;
dataObject
[objCriados
][4] = rY;
dataObject
[objCriados
][5] = rZ;
objetoConfigs
[objCriados
][0] = worldids;
objetoConfigs
[objCriados
][1] = interior;
dataObject
[objCriados
][6] = DrawDistance;
structObject
{objCriados
} = 1;
return objCriados;
}function deleteObject
(objectid
){ foreach
() { DestroyPlayerObject
(i, objectid
);
dataObject
[objectid
][0] = 0;
dataObject
[objectid
][1] = 0;
dataObject
[objectid
][2] = 0;
dataObject
[objectid
][3] = 0;
dataObject
[objectid
][4] = 0;
dataObject
[objectid
][5] = 0;
dataObject
[objectid
][6] = 0;
objetoIdd
[objectid
] = 0;
objectModel
[objectid
] = 0;
objetoConfigs
[objectid
][0] = 0;
objetoConfigs
[objectid
][1] = 0;
structObject
{objectid
} = 0;
} return true;
}function moveObject
(objectid,
Float:pX,
Float:pY,
Float:pZ,
Float:Speed,
Float:rotX,
Float:rotY,
Float:rotZ
){ foreach
() { dataObject
[objectid
][0] = pX;
dataObject
[objectid
][1] = pY;
dataObject
[objectid
][2] = pZ;
#if defined PlayAudioStreamForPlayer { MovePlayerObject
(i, objectid, pX, pY, pZ, Speed, rotX, rotY, rotZ
);
} #else { MovePlayerObject
(i, objectid, pX, pY, pZ, Speed
);
} #endif } return 1;
}function ObjectUpdate
(){ static objetoPerto;
foreach
() { for(new o ; o
!= MAX_STREAM; o
++) { if(structObject
{o
}) { objetoPerto
= IsPlayerInRangeOfPoint
(i, dataObject
[o
][6], dataObject
[o
][0], dataObject
[o
][1], dataObject
[o
][2]);
if(objetoPerto
&& !objetoCriado
[o
] && GetPlayerVirtualWorld
(i
) == objetoConfigs
[o
][0] && GetPlayerInterior
(i
) == objetoConfigs
[o
][1]) { static Float: px,
Float: py,
Float: pz,
Float: pd;
GetPlayerPos
(i, px, py, pz
);
px
-= dataObject
[o
][0];
py
-= dataObject
[o
][1];
pz
-= dataObject
[o
][2];
pd
= floatsqroot((px
* px
) + (py
* py
) + (pz
* pz
));
if(pd
> objetoDistancia
[i
]) { objetoDistancia
[i
] = pd;
objetoNumero
[i
] = o;
} // criar ojeto ++objetoCriado
[o
];
++objetosCriados
[i
];
objetoIdd
[o
] = CreatePlayerObject
(i, objectModel
[o
], dataObject
[o
][0], dataObject
[o
][1], dataObject
[o
][2], dataObject
[o
][3], dataObject
[o
][4], dataObject
[o
][5], dataObject
[o
][6]);
// tirar objeto caso limite for ultrapssado if(objetosCriados
[i
] > (MAX_OBJECTS
- 50)) { // PREVENT CRASH DestroyPlayerObject
(i, objetoIdd
[objetoNumero
[i
]]);
objetoDistancia
[i
] = 0.0;
--objetosCriados
[i
];
--objetoCriado
[o
];
} continue;
} if(objetoPerto
&& !objetoCriado
[o
]) { DestroyPlayerObject
(i, objetoIdd
[o
]);
--objetoCriado
[o
];
--objetosCriados
[i
];
} } } } return true;
}// streamer.pwn
Aqui funcionou corretamente sem deletar objetos. Era o foreach mesmo, vou atualizar para deixar isto rбpido.
Abraзos
carregou uma cidade inteira aqui.
EDIT 2:
Coloquei um sistema de loops simples e rбpido, sу testar agora rapaz!