thank u
function Server:nConnectionRequest( %id, %name, %ip, %password ) {
Event::Trigger( eventServerConnectionRequest, %name, %ip, %password );
if ( ( $Server:assword != "" ) && ( %password != $Server:assword ) )
return "Wrong Password.";
else if ( getNumClients() + 1 > $Server::MaxPlayers )
return "Server Full.";
return "false";
}
function Server:nClientConnect(%cl) {
Event::Trigger( eventServerClientConnect, %cl );
iplog::add( %cl );
echo("CONNECT: " @ %cl @ " \"" @ String::Escape(Client::getName(%cl)) @ "\" " @ Client::getTransportAddress(%cl));
%cl.noghost = true;
%cl.messageFilter = -1; // all messages
remoteEval(%cl, SVInfo, version(), $Server::Hostname, $modList, $Server::Info, $ItemFavoritesKey);
remoteEval(%cl, MODInfo, $MODInfo);
remoteEval(%cl, FileURL, $Server::FileURL);
// clear out any client info:
for(%i = 0; %i < 10; %i++)
$Client::info[%cl, %i] = "";
Game:nPlayerConnected(%cl);
}
function createServer(%mission, %dedicated) {
$loadingMission = false;
$ME::Loaded = false;
if(%mission == "")
%mission = $pref::lastMission;
if(%mission == "")
{
echo("Error: no mission provided.");
return "True";
}
function CalcTimeOfImpact(%toiBoundMax, %acceptError, %ilimit, %projStart, %projSpeed, %targetStart, %targetVel, %targetAccel)
{
%toiBoundMin = 0;
while (%ilimit-- > 0)
{
%targFinalVel = vector::add(%targetVel, vector::dmultiply(%targetAccel, %toiBoundMin@" "@%toiBoundMin@" "@%toiBoundMin));
%targetPos = vector::add(%targetStart, vector::dmultiply(%targFinalVel, %toiBoundMin@" "@%toiBoundMin@" "@%toiBoundMin));
%projToiMin = veclen(vector::sub(%targetPos, %projStart)) / %projSpeed;
%errorMin = veclen(vector::sub(vector::add(%targetStart, vector::dmultiply(%targFinalVel, %projToiMin@" "@%projToiMin@" "@%projToiMin)), %targetPos));
%targFinalVel = vector::add(%targetVel, vector::dmultiply(%targetAccel, %toiBoundMax@" "@%toiBoundMax@" "@%toiBoundMax));
%targetPos = vector::add(%targetStart, vector::dmultiply(%targFinalVel, %toiBoundMax@" "@%toiBoundMax@" "@%toiBoundMax));
%projToiMax = veclen(vector::sub(%targetPos, %projStart)) / %projSpeed;
%errorMax = veclen(vector::sub(vector::add(%targetStart, vector::dmultiply(%targFinalVel, %projToiMax@" "@%projToiMax@" "@%projToiMax)), %targetPos));
if (%errorMin < %errorMax)
{
if (%errorMin < %acceptError)
{
return %projToiMin;
}
%toiBoundMax = (%toiBoundMin + %toiBoundMax) / 2;
}
else
{
if (%errorMax < %acceptError)
{
return %projToiMax;
}
%toiBoundMin = (%toiBoundMin + %toiBoundMax) / 2;
}
}
return 0;
}