It seems like there are some odd things going on when using GSCompanyMode and GSNews.Create:
Code:
function MyGS::Start()
{
this.Sleep(200);
for (local company_id_t = GSCompany.COMPANY_FIRST; company_id_t <= GSCompany.COMPANY_LAST; company_id_t++)
{
local company_id = GSCompany.ResolveCompanyID(company_id_t);
if (company_id == GSCompany.COMPANY_INVALID) continue;
// Normal mode
GSNews.Create(GSNews.NT_GENERAL, "Test 1", GSCompany.COMPANY_INVALID);
GSLog.Info(GSError.GetLastErrorString()); // ERR_NONE
// Unbound company
GSCompanyMode(company_id);
GSNews.Create(GSNews.NT_GENERAL, "Test 2", GSCompany.COMPANY_INVALID);
GSLog.Info(GSError.GetLastErrorString()); // ERR_NONE
// Bound company
local company = GSCompanyMode(company_id);
GSNews.Create(GSNews.NT_GENERAL, "Test 3", GSCompany.COMPANY_INVALID);
GSLog.Info(GSError.GetLastErrorString()); // ERR_UNKNOWN
// Company bound to invalid
company = GSCompanyMode(GSCompany.COMPANY_INVALID);
GSNews.Create(GSNews.NT_GENERAL, "Test 4", GSCompany.COMPANY_INVALID);
GSLog.Info(GSError.GetLastErrorString()); // ERR_NONE
}
// Normal mode?
GSNews.Create(GSNews.NT_GENERAL, "Test 5", GSCompany.COMPANY_INVALID);
GSLog.Info(GSError.GetLastErrorString()); // ERR_UNKNOWN
}
I thought Test 3 failed due to the script trying to create news as a company and figured this might be a "feature", but I really don't understand why Test 5 is failing, given that company should be out of scope again. Am I misunderstanding now GSCompanyMode works?