"Failed to load custom script 'scripts/zm/xxx'"
-
long story short, I have been working on getting another modder's GSC to compile (can't find the original author's post) and finally got it to compile. now, when I boot up my server, i get "Failed to load custom script":
other scripts load just fine. ive tried everything I can think of to no avail. ive been dealing with this shit on and off for two weeks and im really drawing a blank here. is it just me, or is trying to learn GSC the most painful coding experience imaginable? lmao. i cant even find another instance of someone getting this very generic error message.
below is "my" code. sorry for the wall of code; didnt wanna leave anything out and i honestly dont understand github. i miss MATLAB more and more every day that i spend working on this shit.
#include common_scripts\utility; #include maps\mp\_utility; init() { // configurable dvars level.bank_allow_banking = getDvarIntDefault("bank_allow_banking", 1); // disable/enable banking (on by default) level.bank_allow_paying = getDvarIntDefault("bank_allow_paying", 1); // disable/enable paying to other players. (on by default) level.bank_use_exclamation = getDvarIntDefault("bank_use_exclamation", 1); // uses ! as prefix for commands. (on by default) // create bank folders/files level.bank_folder = va("%s/bank", getdvar("fs_homepath")); if (!directoryExists(level.bank_folder)) createDirectory(level.bank_folder); // add callback to player chat onPlayerSay(::player_say); } errorMsg(msg) // used for error messaging { self tell(va("^1ERROR: ^7%s", msg)); } getBankFileName() // confirm existance of bank accounts file for a particular player { guid = self getGuid(); return level.bankFolder + "/" + guid; } bankWrite(value) // stuff for interating with the bank { name = self getBankFileName(); writeFile(name, value); } bankRead() { name = self getBankFileName(); if (!fileExists(name)) { return 0; } return int64_op(readFile(name), "+", 0); } bankAdd(value) { current = self bankRead(); self bankWrite(int64_op(current, "+", value)); } bankSub(value) { current = self bankRead(); self bankWrite(int64_op(current, "-", value)); } bankRemove() { name = self getBankFileName(); removeFile(name); } playerSay(message, mode) { message = toLower(message); if (message[0] == ".") { if (level.intermission) { self errorMsg("The bank is inaccessible after the game ends."); return false; } args = strtok(message, " "); // creates new strings at the gaps in the command string (ie. ".p xyz 100" --> ".p" "xyz" "100") userCommand = getSubStr(args[0], 1); // userCommand is the first substring excluding the period (ie. ".withdraw" --> "withdraw") switch (userCommand) // checks the userCommand substring to see if it matches any case { case "deposit": case "d": { if (is_false(level.bankAllowBanking)) // if the dvar = 0, error message is displayed { self errorMsg("Banking is not enabled on this server."); return false; } self thread deposit(args); // attempt to deposit the requested amount return false; } case "withdraw": case "w": { if (is_false(level.bankAllowBanking)) // if the dvar = 0, error message is displayed { self errorMsg("Banking is not enabled on this server."); return false; } self thread withdraw(args); // attempt to withdraw the requested amount return false; } case "balance": case "b": case "money": { if (is_false(level.bankAllowBanking)) // if the dvar = 0, error message is displayed { self errorMsg("banking is not enabled on this server."); return false; } self thread balance(); // show the user their balance return false; } case "pay": case "p": { if (is_false(level.bankAllowBanking)) // if the dvar = 0, error message is displayed { self errorMsg("banking is not enabled on this server."); return false; } if (is_false(level.bankAllowPaying)) // if the dvar = 0, error message is displayed { self tell("paying is not enabled on this server."); return false; } self thread pay(args); return false; } default: { return; } } } } deposit(args) { if (!isdefined(args[1])) // if the user does not give an "amount" argument, errorMsg { self errorMsg("usage: ^1/deposit ^7<amount|all>"); return; } deposit = args[1]; // args[1] is the second substring, should include an integer value or keyword if (deposit == "all") // if instead of an integer value the user passes "all", deposit all of their money { depositInternal(self.score); return; } deposit = int(deposit); // by this point, we've determined that the second substring should be an integer if (int64_op(deposit, "<=", 0)) // is deposit negative? { self errorMsg("You cannot deposit negative amounts of money. Try the withdraw command..."); return; } if (int64_op(deposit, ">", self.score)) // is the amount the user trying to deposit more than they have? { self errorMsg("You cannot deposit more money than you have."); return; } depositInternal(deposit); // if the request seems logical, deposit the money } depositInternal(money) { self bankAdd(money); self.score = self.score - money; self tell(va("you deposited ^2$%s^7 into the bank. Your balance reads ^2$%s ^7.", money, self bankRead())); } withdraw(args) { if (!isdefined(args[1])) // is the second substring undefined? { self errorMsg("usage: ^1/withdraw ^7<amount|all>"); return; } withdraw = args[1]; // withdraw equals the second substring if (withdraw == "all") { withdraw = self bankRead(); // if the user passes "all", then they want to take all of the money out of their bank s.t. "all" = their balance } withdraw = int(withdraw); // convert the substring to an integer if (int64_op(withdraw, "<=", 0)) { self errorMsg("You cannot withdraw negative amounts of money. Try the deposit command..."); return; } newScore = int64_op(self.score, "+", withdraw); // see what happens if we add the user's withdraw amount to their current score if (int64_op(newScore, ">", 1000000)) // would this create a score of over one million? (bad) { value = 1000000 - self.score; // withdraw enough to reach one million points. if they already have one million, nothing happens if (value == 0) { self errorMsg("You have already reached the point limit (1,000,000)!"); } withdrawInternal(value); // withdraw 1000000 - self.score (don't let the user cross one million points) } else { withdrawInternal(withdraw); // if the user's input doesn't make their score exceed 1000000, go for it } } withdrawInternal(money) { currentBal = self bankRead(); // create a var "currentBal" equal to what is recorded in the bankfolder for that guid if (int64_op(currentBal, "<", money)) // are they trying to pull more money out than they have? { self errorMsg("You cannot withdraw more money than you have. Check your balance!"); return; } self bankSub(money); // take the money out of their bank currentBal = self bankRead(); // redefine currentBal to their updated bank balance self tell(va("You withdrew ^2$%s ^7from your bank account, leaving you with ^2$%s ^7.", money, currentBal)); if (int64_op(currentBal, "==", 0)) { self bankRemove(); // if they take all of their money out, delete their bank file } self.score += money; // add the withdrawn amout to their score } pay(args) { if (!isdefined(args[1])) // does the "player" arg exist? { self errorMsg("usage: ^1/pay ^7<player> <amount>"); return; } if (!isdefined(args[2])) // does the "amount" arg exist? { self errorMsg("usage: ^1/pay ^7<player> <amount>"); return; } targetPlayer = args[1]; // the target player is equal to the second substring foreach (p in level.players) { playerName = tolower(get_player_name(p)); if (issubstr(playerName, targetPlayer)) // is args[2] shorthand for someone's name? ie. yellow instead of yellowbob03 player = p; } if (!isdefined(player)) { self errorMsg(va("Unable to find player with name ^1%s^7", targetPlayer)); // if we can't find a name like args[1], give up return; } amount = int(args[2]); // args[2] corresponds to how much we wanna pay args[1] if (int64_op(amount, "<=", 0)) // is args[2] negative? { self errorMsg("You cannot pay an amount less than zero."); return; } if (int64_op(amount, ">", self.score)) // is args[2] greater than the amount of points we have on hand? { self errorMsg("you cannot pay more money than you have."); return; } self.score -= amount; // take args[2] from the paying player player.score += amount; // add args[2] to the recieving player self tell(va("You paid ^2$%s ^7to %s.", amount, player.name)); // success message player tell(va("%s ^7paid you ^2$%s^7!", self.name, amount)); // success message } balance() { balance = self bankRead(); self tell(va("Balance: ^2$%s", balance)); }
-
This post is deleted!
-
dogmachine That error message only occurs if the script wasn't compiled. Verify that you are putting the compiled script in the scripts\zm\ folder.