Code: Show/Hide BALL_SPAWN = ( # x, y (503, 503), (503, 521), (521, 503), (521, 521)) from asss import * chat = get_interface(I_CHAT) balls = get_interface(I_BALLS) def make_drop_timer(initial, interval, arena, bid): def drop_timer(): chat.SendArenaMessage(arena, "Ball returned (not picked up within limit) - Ball ID: %s" % bid) move_ball(arena, bid) return set_timer(drop_timer, initial, interval) def pick(arena, p, bid): chat.SendArenaMessage(arena, "Ball picked up by " + p.name + " - Ball ID: %s" % bid) arena.mytimer[bid] = None def fire(arena, p, bid): chat.SendArenaMessage(arena, "Ball fired by " + p.name + " - Ball ID: %s" % bid) arena.mytimer[bid] = make_drop_timer(700, 0, arena, bid) def goal(arena, p, bid, x, y): chat.SendArenaSoundMessage(arena, SOUND_OOO, "Goal scored by " + p.name + " - Ball ID: %s" % bid) arena.mytimer[bid] = None def move_ball(arena, bid): bd = balldata() bd.state = BALL_ONMAP bd.x = BALL_SPAWN[bid][0] * 16 bd.y = BALL_SPAWN[bid][1] * 16 bd.xspeed = bd.yspeed = 0 bd.carrier = None bd.freq = -1 bd.time = current_ticks() balls.PlaceBall(arena, bid, bd) def mm_attach(arena): arena.cb1 = reg_callback(CB_BALLPICKUP, pick) arena.cb2 = reg_callback(CB_BALLFIRE, fire) arena.cb3 = reg_callback(CB_GOAL, goal) arena.mytimer = [None, None, None, None] def mm_detach(arena): arena.cb1 = None arena.cb2 = None arena.cb3 = None arena.mytimer = [None, None, None, None] |