Server keeps crashing with gsc script
-
Recently I made a server for me and my friends to play on. I tried making a script, hoping I could make some sort of pause function.
The script works fine, although it tends to crash around round 21-22 on origins. (sometimes earlier)
The error keeps disappearing when i alt+tab out of the game
I therefore have some questions:
- Does the t6 zombie server dump a crash log? If yes, where?
- Is there anything wrong in my script?
- Do you think that crash might be unrelated to my script?
My script:
#include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\gametypes_zm\_hud_util; #include maps\mp\gametypes_zm\_hud_message; #include maps/mp/zombies/_zm_score; init() { level.perk_purchase_limit = 9; level.ammoPrice = 5000; level.ammoPriceIncrease = 1500; level.ammoPriceLimit = 17000; player.enableCommands = false; level waittill("connected", player); self iprintln("^2" +self.name + "^7 , Plugin loaded!"); player thread welcome(); level thread onPlayerMessage(); } welcome() { self endon("disconnect"); self waittill("spawned_player"); wait(7); self iprintln("^2" +self.name + "^7 er ret sej!"); } onPlayerMessage() { while (true) { level waittill("say", player, message); if (message == "m" && !player.moneyReceived) { player.score += 20000; player.moneyReceived = true; } if (message == "quick") { if (!(500 <= player.score)) { player tell("Prisen er: 500"); return; } player.score -= 500; player thread givePerk("specialty_quickrevive"); } if (message == "ammo?") { player tell("Prisen er: " + level.ammoPrice); } if (message == "ammo" ) { if (!(level.ammoPrice <= player.score)) { player tell("Prisen er: " + level.ammoPrice); return; } player.score -= level.ammoPrice; if (level.ammoPrice < level.ammoPriceLimit ) { level.ammoPrice += level.ammoPriceIncrease; } player GivePowerUp("full_ammo"); } if (message == "p") { if (player.maxHealth <= 250) { player tell("Auto-heal enabled"); player.toggleHealing = true; player.maxHealthDefault = player.maxHealth; level.cmPlayerMaxHealth = 6000; player setMaxHealth(6000); player thread keepAlive(); } } if (message == "o") { player.toggleHealing = false; player setMaxHealth(player.maxHealthDefault); player notify("stopHealing"); player tell("Auto-heal disabled"); } wait(2); } } keepAlive() { self endon("stopHealing"); while(player.toggleHealing) { if (player.health < player.maxHealth) self tell("Health: " + self.health + " / " + self.maxHealth); self setNormalHealth(self.maxHealth); wait(1); } } GivePowerUp(powerup_name) { if (!isDefined(level.zombie_include_powerups) || (!(level.zombie_include_powerups.size > 0))) self iprintln("Power Ups ^1Not Supported ^7On This Map"); else { level.powerup_drop_count = 0; powerup = level maps/mp/zombies/_zm_powerups::specific_powerup_drop(powerup_name, self.origin); if (powerup_name == "teller_withdrawl") powerup.value = 1000; powerup thread maps/mp/zombies/_zm_powerups::powerup_timeout(); player tell("Power up: " + powerup_name + " was given"); } } givePerk(perk) { self endon("disconnect"); self endon("death"); level endon("game_ended"); self endon("perk_abort_drinking"); if (!(self hasperk(perk) || (self maps/mp/zombies/_zm_perks::has_perk_paused(perk)))) { gun = self maps/mp/zombies/_zm_perks::perk_give_bottle_begin(perk); evt = self waittill_any_return("fake_death", "death", "player_downed", "weapon_change_complete", "_cancel"); if (evt == "weapon_change_complete") self thread maps/mp/zombies/_zm_perks::wait_give_perk(perk, 1); self maps/mp/zombies/_zm_perks::perk_give_bottle_end(gun, perk); if (self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined(self.intermission) && self.intermission) return; self notify("burp"); } } -
#include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\gametypes_zm\_hud_util; #include maps\mp\gametypes_zm\_hud_message; #include maps/mp/zombies/_zm_score; init() { level.perk_purchase_limit = 9; level.ammoPrice = 5000; level.ammoPriceIncrease = 1500; level.ammoPriceLimit = 17000; player.enableCommands = false; // <- player. can't be used there. In this point player is not defined level waittill("connected", player); // Without any loop this work just for the first player who join // You can use player.enableCommands = false here, if needed self iprintln("^2" +self.name + "^7 , Plugin loaded!"); // self.name is not defined because the entity is called player... so i s player.name player thread welcome(); level thread onPlayerMessage(); } welcome() { self endon("disconnect"); self waittill("spawned_player"); wait(7); self iprintln("^2" +self.name + "^7 er ret sej!"); } onPlayerMessage() { while (true) { level waittill("say", player, message); if (message == "m" && !player.moneyReceived) { // player.moneyReceived not defined, you have to define it somewhere player.score += 20000; player.moneyReceived = true; } if (message == "quick") { if (!(500 <= player.score)) { player tell("Prisen er: 500"); return; } player.score -= 500; player thread givePerk("specialty_quickrevive"); } if (message == "ammo?") { player tell("Prisen er: " + level.ammoPrice); // idk if tell is a function, use iprintln or iprinlnbold } if (message == "ammo" ) { if (!(level.ammoPrice <= player.score)) { player tell("Prisen er: " + level.ammoPrice); return; // This will make the lopp end, so if you call this command all should stop } player.score -= level.ammoPrice; if (level.ammoPrice < level.ammoPriceLimit ) { level.ammoPrice += level.ammoPriceIncrease; } player GivePowerUp("full_ammo"); } if (message == "p") { if (player.maxHealth <= 250) { player tell("Auto-heal enabled"); player.toggleHealing = true; // player.toggleHealing if is not a default var is not defined player.maxHealthDefault = player.maxHealth; // same level.cmPlayerMaxHealth = 6000; player setMaxHealth(6000); player thread keepAlive(); // When you call a loop, inside the loop funciont player become self } } if (message == "o") { player.toggleHealing = false; player setMaxHealth(player.maxHealthDefault); player notify("stopHealing"); player tell("Auto-heal disabled"); } wait(2); } } keepAlive() { // in here where there change player. with self. self endon("stopHealing"); while(player.toggleHealing) { if (player.health < player.maxHealth) self tell("Health: " + self.health + " / " + self.maxHealth); self setNormalHealth(self.maxHealth); wait(1); } } GivePowerUp(powerup_name) { if (!isDefined(level.zombie_include_powerups) || (!(level.zombie_include_powerups.size > 0))) self iprintln("Power Ups ^1Not Supported ^7On This Map"); else { level.powerup_drop_count = 0; powerup = level maps/mp/zombies/_zm_powerups::specific_powerup_drop(powerup_name, self.origin); if (powerup_name == "teller_withdrawl") powerup.value = 1000; powerup thread maps/mp/zombies/_zm_powerups::powerup_timeout(); player tell("Power up: " + powerup_name + " was given"); } } givePerk(perk) { self endon("disconnect"); self endon("death"); level endon("game_ended"); self endon("perk_abort_drinking"); if (!(self hasperk(perk) || (self maps/mp/zombies/_zm_perks::has_perk_paused(perk)))) { gun = self maps/mp/zombies/_zm_perks::perk_give_bottle_begin(perk); evt = self waittill_any_return("fake_death", "death", "player_downed", "weapon_change_complete", "_cancel"); if (evt == "weapon_change_complete") self thread maps/mp/zombies/_zm_perks::wait_give_perk(perk, 1); self maps/mp/zombies/_zm_perks::perk_give_bottle_end(gun, perk); if (self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined(self.intermission) && self.intermission) return; self notify("burp"); } }I hope I have identified many of the errors that may be causing your crashes. rfoldbirk
-
#include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\gametypes_zm\_hud_util; #include maps\mp\gametypes_zm\_hud_message; #include maps/mp/zombies/_zm_score; init() { level.perk_purchase_limit = 9; level.ammoPrice = 5000; level.ammoPriceIncrease = 1500; level.ammoPriceLimit = 17000; player.enableCommands = false; // <- player. can't be used there. In this point player is not defined level waittill("connected", player); // Without any loop this work just for the first player who join // You can use player.enableCommands = false here, if needed self iprintln("^2" +self.name + "^7 , Plugin loaded!"); // self.name is not defined because the entity is called player... so i s player.name player thread welcome(); level thread onPlayerMessage(); } welcome() { self endon("disconnect"); self waittill("spawned_player"); wait(7); self iprintln("^2" +self.name + "^7 er ret sej!"); } onPlayerMessage() { while (true) { level waittill("say", player, message); if (message == "m" && !player.moneyReceived) { // player.moneyReceived not defined, you have to define it somewhere player.score += 20000; player.moneyReceived = true; } if (message == "quick") { if (!(500 <= player.score)) { player tell("Prisen er: 500"); return; } player.score -= 500; player thread givePerk("specialty_quickrevive"); } if (message == "ammo?") { player tell("Prisen er: " + level.ammoPrice); // idk if tell is a function, use iprintln or iprinlnbold } if (message == "ammo" ) { if (!(level.ammoPrice <= player.score)) { player tell("Prisen er: " + level.ammoPrice); return; // This will make the lopp end, so if you call this command all should stop } player.score -= level.ammoPrice; if (level.ammoPrice < level.ammoPriceLimit ) { level.ammoPrice += level.ammoPriceIncrease; } player GivePowerUp("full_ammo"); } if (message == "p") { if (player.maxHealth <= 250) { player tell("Auto-heal enabled"); player.toggleHealing = true; // player.toggleHealing if is not a default var is not defined player.maxHealthDefault = player.maxHealth; // same level.cmPlayerMaxHealth = 6000; player setMaxHealth(6000); player thread keepAlive(); // When you call a loop, inside the loop funciont player become self } } if (message == "o") { player.toggleHealing = false; player setMaxHealth(player.maxHealthDefault); player notify("stopHealing"); player tell("Auto-heal disabled"); } wait(2); } } keepAlive() { // in here where there change player. with self. self endon("stopHealing"); while(player.toggleHealing) { if (player.health < player.maxHealth) self tell("Health: " + self.health + " / " + self.maxHealth); self setNormalHealth(self.maxHealth); wait(1); } } GivePowerUp(powerup_name) { if (!isDefined(level.zombie_include_powerups) || (!(level.zombie_include_powerups.size > 0))) self iprintln("Power Ups ^1Not Supported ^7On This Map"); else { level.powerup_drop_count = 0; powerup = level maps/mp/zombies/_zm_powerups::specific_powerup_drop(powerup_name, self.origin); if (powerup_name == "teller_withdrawl") powerup.value = 1000; powerup thread maps/mp/zombies/_zm_powerups::powerup_timeout(); player tell("Power up: " + powerup_name + " was given"); } } givePerk(perk) { self endon("disconnect"); self endon("death"); level endon("game_ended"); self endon("perk_abort_drinking"); if (!(self hasperk(perk) || (self maps/mp/zombies/_zm_perks::has_perk_paused(perk)))) { gun = self maps/mp/zombies/_zm_perks::perk_give_bottle_begin(perk); evt = self waittill_any_return("fake_death", "death", "player_downed", "weapon_change_complete", "_cancel"); if (evt == "weapon_change_complete") self thread maps/mp/zombies/_zm_perks::wait_give_perk(perk, 1); self maps/mp/zombies/_zm_perks::perk_give_bottle_end(gun, perk); if (self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined(self.intermission) && self.intermission) return; self notify("burp"); } }I hope I have identified many of the errors that may be causing your crashes. rfoldbirk
Sorex said in Server keeps crashing with gsc script:
// player.moneyReceived not defined, you have to define it somewhere if (message == "m" && !player.moneyReceived) { player.score += 20000; player.moneyReceived = true; }Interestingly gsc considers something undefined to be true. So in this case it works out fine, but something to keep in mind for the future.
-
birchy yes thats true. If his intention was to definite when i write m is not a problem if not is a problem
. I hope he will understend and can fix by his own 
-
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login