rendered paste bodyowner = GameLogic.getCurrentController().getOwner()
import time
#send request
if owner.synctime > 30:
if owner.syncpacket < 6:
from libpac import *
if owner.synctime >= 32 and owner.synctime < 34 and owner.syncpacket == 0:
GameLogic.client_sock.write_raw(PAC_OVERHEAD_REQTIME,GameLogic.client_sock.ID, str(time.time()))
owner.syncpacket = 1
elif owner.synctime >= 34 and owner.synctime < 36 and owner.syncpacket == 1:
GameLogic.client_sock.write_raw(PAC_OVERHEAD_REQTIME,GameLogic.client_sock.ID, str(time.time()))
owner.syncpacket = 2
elif owner.synctime >= 36 and owner.synctime < 38 and owner.syncpacket == 2:
GameLogic.client_sock.write_raw(PAC_OVERHEAD_REQTIME,GameLogic.client_sock.ID, str(time.time()))
owner.syncpacket = 3
elif owner.synctime >= 38 and owner.synctime < 40 and owner.syncpacket == 3:
GameLogic.client_sock.write_raw(PAC_OVERHEAD_REQTIME,GameLogic.client_sock.ID, str(time.time()))
owner.syncpacket = 4
elif owner.synctime > 40 and owner.synctime < 42 and owner.syncpacket == 4:
GameLogic.client_sock.write_raw(PAC_OVERHEAD_REQTIME,GameLogic.client_sock.ID, str(time.time()))
owner.syncpacket = 5
elif owner.synctime > 42 and owner.syncpacket == 5:
GameLogic.client_sock.write_raw(PAC_OVERHEAD_REQTIME,GameLogic.client_sock.ID, str(time.time()))
owner.syncpacket = 6
else:
owner.syncpacket = 0
owner.synctime = 0
if hasattr(GameLogic,"client_sock"):
if len(GameLogic.client_sock.clockpackets) == 6:
from math import *
sorteddeltas = GameLogic.client_sock.clockpackets
sorteddeltas = sorteddeltas[1:len(sorteddeltas)]
sorteddeltas.sort()
original = GameLogic.client_sock.clockpackets[0]
n = len(sorteddeltas)
SDev = 0
mean = 0
sum = 0
gooddeltas = []
mean_delta = 0
for i in sorteddeltas: mean += i
mean /= n
for i in sorteddeltas: sum += (mean - i) * (mean - i)
SDev = sqrt(sum/(n-1))
for i in sorteddeltas:
if (mean - i) < SDev:
gooddeltas.append(i)
for i in gooddeltas: mean_delta += i
mean_delta /= n
print "Delta aveage: " + str(mean_delta)
it = time.time()
GameLogic.client_sock.clockdelta = mean_delta
GameLogic.client_sock.clockpackets = []
GameLogic.client_sock.clockpackets.append(original)
print "Local Time: " + str(time.time())
print "Guessed Server Time: " + str(GameLogic.client_sock.getTimeStamp())