Have you tried turning it off and on again?Maybe instead of doing the schedules on global variables do them on the clients themselves? Like %client.BombDelaySchedule = schedule(blah,#,etc.);
You can still cancel it that way, just cancel(%client.schedule); instead of cancel($schedule);Otherwise they'll just be overwritten when someone else spawns
function GameConnection::CanBuyCreepBombs(%client) { %client.CanBuyCreepBombs = 1; if(!isObject(%client.player)) return; MessageClient(%client,'',"You may now purchase basic creep bombs with /buy creepbomb."); } function GameConnection::spawnPlayer(%client) { Parent::spawnPlayer(%client); %client.updateSuperCreeperScore(); %player = %client.player; if(!isObject(%client.player)) return; // slayer removes late joining players and this can cause errors here //buy bomb delay %client.BoughtBombs = 0; %client.CanBuyCreepBombs = 0; if($Creep::BuyBombDelay) { cancel(%BuyBombSchedule); %BuyBombSchedule = %client.schedule( $Creep::BuyBombDelay * 60000 , CanBuyCreepBombs ); } // CREEPER VARIABLES // %client.kills = 0; %player.nochase = 0; // START ITEMS // // Anti-Creeper Loadout: if($Creep::GameMode == 0 || $Creep::GameMode == 3 || $Creep::GameMode == 5) { // are we using a map with shop functionality? if(!$Creep::DisableUpgrades) { switch(UpgradeMan.getValue(%client.bl_id, "CreepKillLvl")) { case 1: %player.addItem(nameToID(CreepKillWeakGunItem),%client); case 2: %player.addItem(nameToID(CreepKillGunItem),%client); case 3: %player.addItem(nameToID(CreepKillStrongGunItem),%client); case 4: %player.addItem(nameToID(CreepKillVStrongGunItem),%client); } if(UpgradeMan.getValue(%client.bl_id, "CreepBombLvl") > 0) { if(!isObject(%client.player)) return; if($Creep::DisableBombs) return; if(UpgradeMan.getValue(%client.bl_id, "CreepBombLvl") == 1) { cancel(%BombDelayScheduleNotify); cancel(%BombDelaySchedule); %BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBombItem ); %BombDelayScheduleNotify = schedule( $Creep::DefaultBombDelay * 60000 , 0 , messageClient,%client,'MsgItemPickup',"Your upgraded creep-bomb is now available."); } else { cancel(%BombDelayScheduleNotify); cancel(%BombDelaySchedule); %BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBomb2Item ); %BombDelayScheduleNotify = schedule( $Creep::DefaultBombDelay * 60000 , 0 , messageClient,%client,'MsgItemPickup',"Your upgraded creep-bomb is now available."); } } } else// if not just give everyone the bog standard %player.addItem(nameToID(CreepKillGunItem),%client); } // LIVES // // can players respawn in the current gamemode? if($Creep::GameMode != 3 && $Creep::GameMode != 4 && $Creep::GameMode != 5) { %client.setLives(1); // if so, one life } // LOCATION // // players spawn on bricks named "spawn" %pos = getRandomPosOnBrick(getRandomSpawnBrick()); %player.settransform(%pos); %player.setvelocity("0 0 0"); return; }
You need to put it as a client or player variable (%client.scheduleVar), not just %schedulevar, otherwise once it goes out of scope you'll lose it and not have anything to cancel
function GameConnection::CanBuyCreepBombs(%client) { %client.CanBuyCreepBombs = 1; if(!isObject(%client.player)) return; MessageClient(%client,'',"You may now purchase basic creep bombs with /buy creepbomb."); } function GameConnection::spawnPlayer(%client) { Parent::spawnPlayer(%client); %client.updateSuperCreeperScore(); %player = %client.player; if(!isObject(%client.player)) return; // slayer removes late joining players and this can cause errors here //buy bomb delay %client.BoughtBombs = 0; %client.CanBuyCreepBombs = 0; if($Creep::BuyBombDelay) { cancel(%BuyBombSchedule); %BuyBombSchedule = %client.schedule( $Creep::BuyBombDelay * 60000 , CanBuyCreepBombs ); } // CREEPER VARIABLES // %client.kills = 0; %player.nochase = 0; // START ITEMS // // Anti-Creeper Loadout: if($Creep::GameMode == 0 || $Creep::GameMode == 3 || $Creep::GameMode == 5) { // are we using a map with shop functionality? if(!$Creep::DisableUpgrades) { switch(UpgradeMan.getValue(%client.bl_id, "CreepKillLvl")) { case 1: %player.addItem(nameToID(CreepKillWeakGunItem),%client); case 2: %player.addItem(nameToID(CreepKillGunItem),%client); case 3: %player.addItem(nameToID(CreepKillStrongGunItem),%client); case 4: %player.addItem(nameToID(CreepKillVStrongGunItem),%client); } if(UpgradeMan.getValue(%client.bl_id, "CreepBombLvl") > 0) { if(!isObject(%client.player)) return; if($Creep::DisableBombs) return; if(UpgradeMan.getValue(%client.bl_id, "CreepBombLvl") == 1) { cancel(%BombDelayScheduleNotify); cancel(%BombDelaySchedule); %BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBombItem ); %BombDelayScheduleNotify = %client.schedule( $Creep::DefaultBombDelay * 60000 , messageClient, %client , 'MsgItemPickup' , "Your upgraded creep-bomb is now available."); } else { cancel(%BombDelayScheduleNotify); cancel(%BombDelaySchedule); %BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBomb2Item ); %BombDelayScheduleNotify = %client.schedule( $Creep::DefaultBombDelay * 60000 , messageClient, %client , 'MsgItemPickup' , "Your upgraded creep-bomb is now available."); } } } else// if not just give everyone the bog standard %player.addItem(nameToID(CreepKillGunItem),%client); } // LIVES // // can players respawn in the current gamemode? if($Creep::GameMode != 3 && $Creep::GameMode != 4 && $Creep::GameMode != 5) { %client.setLives(1); // if so, one life } // LOCATION // // players spawn on bricks named "spawn" %pos = getRandomPosOnBrick(getRandomSpawnBrick()); %player.settransform(%pos); %player.setvelocity("0 0 0"); return; }
I changed the rest of the schedules like that but the cancels still don't seem to work. Did I do them wrong?Code: [Select]-snip-
-snip-
if(UpgradeMan.getValue(%client.bl_id, "CreepBombLvl") == 1) { cancel(%BombDelayScheduleNotify); cancel(%BombDelaySchedule); %BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBombItem ); %BombDelayScheduleNotify = %client.schedule( $Creep::DefaultBombDelay * 60000 , messageClient, %client , 'MsgItemPickup' , "Your upgraded creep-bomb is now available."); } else { cancel(%BombDelayScheduleNotify); cancel(%BombDelaySchedule); %BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBomb2Item ); %BombDelayScheduleNotify = %client.schedule( $Creep::DefaultBombDelay * 60000 , messageClient, %client , 'MsgItemPickup' , "Your upgraded creep-bomb is now available."); }
if(UpgradeMan.getValue(%client.bl_id, "CreepBombLvl") == 1) { cancel(%client.BombDelayScheduleNotify); cancel(%player.BombDelaySchedule); %player.BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBombItem ); %client.BombDelayScheduleNotify = %client.schedule( $Creep::DefaultBombDelay * 60000 , messageClient, %client , 'MsgItemPickup' , "Your upgraded creep-bomb is now available."); } else { cancel(%player.BombDelayScheduleNotify); cancel(%%client.BombDelaySchedule); %player.BombDelaySchedule = %player.schedule( $Creep::DefaultBombDelay * 60000 , addNewItem , CreepBomb2Item ); %client.BombDelayScheduleNotify = %client.schedule( $Creep::DefaultBombDelay * 60000 , messageClient, %client , 'MsgItemPickup' , "Your upgraded creep-bomb is now available."); }