Dss0 jesus christ I switched from GangorraAidetica to Gangorra and Instantly got access to a server I couldnt.
LOL awesome, hope it helps to debug this point.
Dss0 jesus christ I switched from GangorraAidetica to Gangorra and Instantly got access to a server I couldnt.
LOL awesome, hope it helps to debug this point.
Seriously, fuck this shit.
You know what's failed? I would be happy to know!
Currently the support is near zero. God damn.
You can mod literally everything in the fucking game. Can you please update this fucking message to make us KNOW WHAT'S THE MATTER WITH OUR CLIENT? Because I'm running the lastest version. Jesus fucking christ.
This was the relevant part because this script has a lot of fixes such as tombstone and map restart, but I ended up fixing it by myself.
In general here's what I did:
player thread noobFriendly();
to
self thread noobFriendly();
on onPlayerConnect() solved the most part of the problem.
Also, moving the call of noobFriendly() from onPlayerConnect() to onPlayerSpawn()
and removing the infinite loop on onPlayerSpawn() because for my script it's simply unnecessary.
I'm a front-end dev with some years of back-end experience and still getting the hang of lua.
We can happily close this thread
Hey guys,
So I've a 'noobFriendly()' function in which I give the late coming player Juggernog and Money.
It works when the player spawns. That's ok. The problem is this function is running even when spectating, pre-spawning.
Can someone help me??
init()
{
level.perk_purchase_limit = 9;
level.get_player_weapon_limit = 3;
thread gscRestart();
thread setPlayersToSpectator();
level thread onPlayerConnect();
for(;;)
{
level waittill("connected", player);
player thread [[level.givecustomcharacters]]();
}
}
onPlayerConnect()
{
for(;;)
{
level waittill("connected", player);
player thread onPlayerSpawned();
player thread noobFriendly();
self iprintln("^2Bem-vindo ao Zombies ^1Gangorra Aidetica!");
}
}
onPlayerSpawned()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("spawned_player");
// Will appear each time when the player spawn, that's just an exemple.
//self iprintln("^2Bem-vindo ao Zombies ^1Gangorra Aidetica!");
}
}
noobFriendly()
{
self endon("disconnect");
level endon("game_ended");
alreadySpawned = false; //to avoid rewarding when RE-spawning | not tested
for(;;)
{
self waittill("spawned_player");
wait 7;
if(level.round_number > 1 && !alreadySpawned)
{
alreadySpawned = true;
reward = level.round_number * 500;
self.score += reward;
self iPrintln("^7Voce recebeu ^1Juggernaut e ^2$" + reward + " ^7para nao ficar em desvantagem.");
self doGivePerk("specialty_armorvest");
}
}
}
You can fully host town with no issues.
Just make sure to update your plutonium hosting files (the method has changed, we now use server keys and shit)
Here's what's in the config file:
// Maps and the matching configs //
/////////////////////////////////////////////////////////////////////////
// Buried - zm_classic_processing.cfg map zm_buried //
// Buried Turned - zm_cleansed_street.cfg map zm_buried //
// Buried Grief - zm_grief_street.cfg map zm_buried //
// Die Rise - zm_classic_rooftop.cfg map zm_highrise //
// Mob of The Dead - zm_classic_prison.cfg map zm_prison //
// Mob of The Dead Grief - zm_grief_cellblock.cfg map zm_prison //
// Nuketown - zm_standard_nuked.cfg map zm_nuked //
// Origins - zm_classic_tomb.cfg map zm_tomb //
// Tranzit - zm_classic_transit.cfg map zm_transit //
// Tranzit Farm Survival - zm_standard_farm.cfg map zm_transit //
// Tranzit Town Survival - zm_standard_town.cfg map zm_transit //
// Tranzit Bus Depot Survival - zm_standard_transit.cfg map zm_transit //
// Tranzit Farm Grief - zm_grief_farm.cfg map zm_transit //
// Tranzit Town Grief - zm_grief_town.cfg map zm_transit //
// Tranzit Bus Depot Grief - zm_grief_transit.cfg map zm_transit //
// Tranzit Diner Turned - zm_cleansed_diner.cfg map zm_transit_dr //
Kalitos said in The exact same .gsc makes the server crash on a different PC.:
@GangorraAidetica I tried it and it works, I don't know how you would implement it.
Is works indeed my dear Chuckie Finster.
But hey, what exactly explains the threading??
For example, we all know at this point the "mistery box price change" and is set as a player/self thread. Since the MB is a LEVEL entity, shouldn't it be a LEVEL thread??
cheers!
Salve da Vila Prudente
As a brazilian myself I would like it as well, but we cant ignore that this would probably have to occur to every other "big" plutonium playerbase country.
Otherwise, they would probably get pissed, and if that happened, probably the forum scroll would be much larger and quite annoying to find certain areas/topics.
Flww
(Por sinal me da umas dica de grow ai, Γ©nois)
SOLVED. And I hope it's a lesson to every new scripting learner.
ALWAYS. Instruct your open threads to finish.
It solved just as easy as it sounds.
One line to each open thread.
Kalitos said in The exact same .gsc makes the server crash on a different PC.:
@GangorraAidetica I haven't tried it, but it should work.
init() { level thread onPlayerConnect(); } onPlayerConnect() { for(;;) { level waittill("connected", player); player thread onPlayerSpawned(); player thread killCountSelf(); //Thread for each player } } onPlayerSpawned() { self endon("disconnect"); level endon("game_ended"); for(;;) { self waittill("spawned_player"); // Will appear each time when the player spawn, that's just an exemple. self iprintln("Black Ops 2 - GSC Studio | Project : ^2Show K/D"); } } killCountSelf() { self endon ("disconnect"); level endon("game_ended"); self.kill = createFontString("small" , 1.3); //Fixed self.kill setPoint("TOPLEFT", undefined, -45, 87); self.death = createFontString("small" , 1.3); //Fixed self.death setPoint("TOPLEFT", undefined, -45, 100); self.kill.label = &"^2Baixas: ^7"; self.death.label = &"^1Mortes: ^7"; while(true) { self.kill setValue(self.kills); self.death setValue(self.deaths); wait 0.25; } }
So hey dude, actually self.kills does not retrieve anything at all.
It was my very first shot on how to get the kill counter and I only reached it by using the player attribute
SO i'm hosting some servers in here and for some reason my GSC makes it crash after a couple of good minutes.
People can play to high rounds and thing but all of a sudden it crashes for no apparent reason.
there are absolutely 0 patterns. No time related, no round related, nothing.
Can you guys help me?
(Yeah Identation is quite messed up but still)
/*
* Black Ops 2 - GSC Studio by iMCSx
*
* Creator : Gangorra
* Project : Teste
* Mode : Zombies
* Date : 2020/04/21 - 02:03:13
*
*/
#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_utility;
init()
{
level thread onPlayerConnect();
level thread drawZombiesCounter();
}
onPlayerConnect()
{
for(;;)
{
level waittill("connected", player);
player thread onPlayerSpawned();
player thread healthPlayer();
player thread killCount();
player thread showScore();
player thread showDiscord();
}
}
onPlayerSpawned()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("spawned_player");
// Will appear each time when the player spawn, that's just an exemple.
self iprintln("^2Bem-vindo ao Zombies ^1Gangorra Aidetica!");
}
}
healthPlayer()
{
self endon("disconnect");
self.healthText = createFontString("Objective" , 1.2); //Fixed
self.healthText setPoint("CENTER", "BOTTOM", -100, 20);
while(true)
{
self.healthText setText( "^2HP: ^7"+ self.health);
wait 0.5;
}
}
drawZombiesCounter()
{
level.zombiesCounter = createServerFontString("Objective" , 1.3);
level.zombiesCounter setPoint("CENTER", "BOTTOM", -160, 20);
level thread updateZombiesCounter();
}
updateZombiesCounter()
{
oldZombiesCount = get_current_zombie_count();
while(true)
{
newZombiesCount = get_current_zombie_count();
wait 0.4;
if(oldZombiesCount != newZombiesCount)
{
level thread updateZombiesCounter();
return;
}
else
{
if(newZombiesCount != 0)
level.zombiesCounter.label = &"Zumbis: ^1";
else
level.zombiesCounter.label = &"Zumbis: ^5";
level.zombiesCounter setValue(newZombiesCount);
}
}
}
killCount()
{
i = 0;
while( i < level.players.size)
{
if(level.players[i] == self)
{
self thread killCountSelf(level.players[i]);
}
i++;
wait 0.3;
}
}
killCountSelf(thisPlayer)
{
self.kill = createFontString("small" , 1.2); //Fixed
self.kill setPoint("CENTER", "BOTTOM", -40, 20);
while(true)
{
self.kill.label = &"^3Baixas: ^7";
self.kill setValue(thisPlayer.kills);
wait 0.4;
}
}
showScore()
{
self.scoreShow = createFontString("small" , 1.2); //Fixed
self.scoreShow setPoint("CENTER", "BOTTOM", 40, 20);
while(true)
{
self.scoreShow.label = &"^6Score: ^7";
self.scoreShow setValue(self.score);
wait 0.25;
}
}
showDiscord()
{
self.showDiscord = createFontString("small" , 1.0); //Fixed
self.showDiscord setPoint("CENTER", "TOP", 0, -30);
self.showDiscord setText("^3Discord: ^7tinyurl.com/bo2gangorra");
}
Hey everyone.
So I managed to put a very simple K/D counter on-screen and it runs absolutely fine on my main PC as a host.
On my laptop, which I use to host the server, it crashes after a couple of minutes.
Even with no players at all, server is simply running and boom, crash.
I made sure it wasn't a misconfig in dedicated.cfg and verified the "ping" on IW4M's console, which informed be the same map was running for at least 30 seconds with no players then simply killed itself.
Hope someone can help me but I dont really expect much due to the rarity of this happening.
killCount()
{
i = 0;
while( i < level.players.size)
{
if(level.players[i] == self)
{
self thread killCountSelf(level.players[i]);
}
i++;
wait 0.2;
}
}
killCountSelf(thisPlayer)
{
self.kill = createFontString("small" , 1.3); //Fixed
self.kill setPoint("TOPLEFT", undefined, -45, 87);
self.death = createFontString("small" , 1.3); //Fixed
self.death setPoint("TOPLEFT", undefined, -45, 100);
while(true)
{
self.kill.label = &"^2Baixas: ^7";
self.kill setValue(thisPlayer.kills);
self.death.label = &"^1Mortes: ^7";
self.death setValue(thisPlayer.deaths);
wait 0.36;
}
}
OBS: I DO accept some coding tips as well I do have C# and typescript experience but I still feel a little lost with these scripts, specially when to use "player" or "self" because even the slightest change of these makes it not work properly (even if it looks completely logical that it would run using the "wrong/unaccepted" keyword.
Thxx
Ox_ said in Where to find useful functions and variables (reference) for GSC?:
More experienced people just remember the stuff from years of experience from earlier cods etc.
When getting started, just pretty much just Google search for a list of stuff. Looking at what other people have done is also good when getting started.
Loads of tutorials for gsc found with a Google search as well. Remember that you don't have to search for BO2 gsc, gsc is pretty much the same for all cods. Best documented stuff you'll probably find from earlier cods. Or maybe BO3 since it actually officially supports modding.Also don't forget about just studying the actual gscs BO2 runs off.
It's very good to find new stuff as well.
You'll find a dump for the decompiled gscs stickied in the BO2 modding section.
For example that other question you just posted here, "how to find out zombie kills", is solved in like a minute by just searching the word "kills" inpatch_zm
.
Personally I use "AstroGrep" to search for text inside the whole dump.
Hey, thx for your reply.
I found "kills" as well but it seems all I could relate was to global stats, not in the "match" itself.
I'll keep on digging but geez most part of the code is pretty tiresome to read!
Nice tips, thank you again!
Hey there
I have reasons to believe you are not uncommenting the config string you want to change
This will not work:
//someconfig = "someValue"
Now, to mod the boxes and other stuff as you said, you will need to load custom scripts to your t6r/data folder.
We have a guide in this forum, I believe its in the BO2 Modding Tutorials section. Its pretty easy! Took me less than 20 minutes to learn.
Once you learn how to do it, you have to find the script someone made to change the mistery box cost and apply what you learned to it.
If you have 0 programming skills it might take a little longer for you to get it.
Peace out!
I threw in some hud imports and utils, but I believe it's supposed to be zombies specific utils, right?
(I dont have em now because I was exploring scripts and already changed everything :P)
Wassup guys!
What would be the attribute/function to retrieve zombie kills?
Thank you!
Why this happens?
**** 3 script error(s):
**** Unresolved external : "onplayerspawned" with 0 parameters in "_clientids" at line 1 ****
**** Unresolved external : "createfontstring" with 2 parameters in "_clientids" at line 1 ****
**** Unresolved external : "setpoint" with 4 parameters in "_cl
Sup, everybody!
I'm very very happy with this community and already host a brazilian server everyday which seems to be making the south american community much more vivid.
So anyways, I just came across .gsc scripting and I'm nuts to find out where you guys find the useful functions, for example, some of the simple ones:
self giveweapon( "fiveseven_upgraded_zm" );
self.score = 500000;
level.players
I'm not really findind a list or source containing these anywhere. Can you guys help me to find some or give me some tipos, besides checking some ready scripts??
Thank you a lot!