Skip to content

Commit

Permalink
Merge pull request #57 from AssassinTee/dev
Browse files Browse the repository at this point in the history
✨ update to 1.3.0
  • Loading branch information
AssassinTee authored May 14, 2021
2 parents d13ee37 + 45bf61c commit 9af98ee
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 86 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ sudo brew install cmake freetype sdl2
| sv_random_spawn | 1 | 0 | 1 | Activates random spawns |
| sv_random_spawn_tries | 100 | 0 | 9999 | Tries for players to spawn randomly |
| sv_random_spawn_max_score | 100 | 0 | 9999 | Tries for players to spawn randomly |
| sv_party_mode | 0 | 0 | 1 | Random Weapons each round |

## Contributing

Expand Down
15 changes: 2 additions & 13 deletions src/game/server/entities/character.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,19 +148,8 @@ void CCharacter::HandleNinja() {
if (m_ActiveWeapon != WEAPON_NINJA)
return;

if ((Server()->Tick() - m_Ninja.m_ActivationTick) >
(g_pData->m_Weapons.m_Ninja.m_Duration * Server()->TickSpeed() / 1000)) {
// time's up, return
m_aWeapons[WEAPON_NINJA].m_Got = false;
m_ActiveWeapon = m_LastWeapon;

// reset velocity
if (m_Ninja.m_CurrentMoveTime > 0)
m_Core.m_Vel = m_Ninja.m_ActivationDir * m_Ninja.m_OldVelAmount;

SetWeapon(m_ActiveWeapon);
return;
}
// never remove ninja
m_Ninja.m_ActivationTick = Server()->Tick();

// force ninja Weapon
SetWeapon(WEAPON_NINJA);
Expand Down
16 changes: 15 additions & 1 deletion src/game/server/gamecontext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1020,6 +1020,19 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID) {
pPlayer->m_LastChat + Server()->TickSpeed() * (Length / 20) > Server()->Tick()))
return;

if (pMsg->m_pMessage[0] == '/') {
const char *command = pMsg->m_pMessage+1;
if (CommandManager()->GetCommand(command)) {
CommandManager()->OnCommand(command, "", ClientID);
}
else {
char aNoCommand[128];
str_format(aNoCommand, sizeof(aNoCommand), "Unknown command '%s'", command);
SendServerInfo(aNoCommand, ClientID);
}
return;
}

pPlayer->m_LastChat = Server()->Tick();

// don't allow spectators to disturb players during a running game in tournament mode
Expand Down Expand Up @@ -1635,6 +1648,7 @@ void CGameContext::ConchainGameinfoUpdate(IConsole::IResult *pResult, void *pUse
void CGameContext::ConStartWeapon(IConsole::IResult *pResult, void *pUserData) {
CGameContext *pSelf = (CGameContext *) pUserData;
int StartWeapon = pResult->GetInteger(0);

if (StartWeapon < 0 || StartWeapon > NUM_WEAPONS) // weapon at NUM_WEAPONS is HOOK!
StartWeapon = 0;

Expand Down Expand Up @@ -1714,7 +1728,7 @@ void CGameContext::OnInit() {
m_pController = new CGameControllerCatch64(this);

// IDK how this works now
//m_pController->RegisterChatCommands(CommandManager());
m_pController->RegisterChatCommands(CommandManager());

// create all entities from the game layer
CMapItemLayerTilemap *pTileMap = m_Layers.GameLayer();
Expand Down
89 changes: 22 additions & 67 deletions src/game/server/gamecontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,14 @@ void IGameController::ResetGame() {

CheckGameInfo();

// party mode switch start weapon
if (Config()->m_SvPartyMode) {
// select random next weapon, but never last one
const int NumStartWeapons = NUM_WEAPONS + 1;
m_StartWeapon += (rand() % (NumStartWeapons - 1)) + 1; // random in [1, NumStartWeapons]
m_StartWeapon %= NumStartWeapons;
}

for (int i = 0; i < MAX_CLIENTS; ++i) {
if (GameServer()->m_apPlayers[i]) {
GameServer()->ResetSkin(i);
Expand Down Expand Up @@ -1176,70 +1184,11 @@ int IGameController::GetStartTeam() {
return TEAM_SPECTATORS;
}

/*void IGameController::Com_Example(IConsole::IResult *pResult, void *pContext)
{
CCommandManager::SCommandContext *pComContext = (CCommandManager::SCommandContext *)pContext;
IGameController *pSelf = (IGameController *)pComContext->m_pContext;
<<<<<<< HEAD
if(pCommand)
{
mem_zero(pCommand, sizeof(CChatCommand));
}
}
IGameController::CChatCommand *IGameController::CChatCommands::GetCommand(const char *pName)
{
for(int i = 0; i < MAX_COMMANDS; i++)
{
if(m_aCommands[i].m_Used && str_comp(m_aCommands[i].m_aName, pName) == 0)
{
return &m_aCommands[i];
}
}
return 0;
}
void IGameController::CChatCommands::OnPlayerConnect(IServer *pServer, CPlayer *pPlayer)
{
for(int i = 0; i < MAX_COMMANDS; i++)
{
CChatCommand *pCommand = &m_aCommands[i];
if(pCommand->m_Used)
{
CNetMsg_Sv_CommandInfo Msg;
Msg.m_pName = pCommand->m_aName;
Msg.m_HelpText = pCommand->m_aHelpText;
Msg.m_ArgsFormat = pCommand->m_aArgsFormat;
pServer->SendPackMsg(&Msg, MSGFLAG_VITAL, pPlayer->GetCID());
}
}
}
void IGameController::OnPlayerCommand(CPlayer *pPlayer, const char *pCommandName, const char *pCommandArgs)
{
// TODO: Add a argument parser?
CChatCommand *pCommand = CommandsManager()->GetCommand(pCommandName);
if(pCommand)
pCommand->m_pfnCallback(this, pPlayer, pCommandArgs);
void IGameController::RegisterChatCommands(CCommandManager *pManager) {
//pManager->AddCommand("test", "Test the command system", "r", Com_Example, this);
pManager->AddCommand("help", "How does this mod work", "", ComHelp, this);
pManager->AddCommand("info", "About page", "", ComInfo, this);
}
=======
pSelf->GameServer()->SendBroadcast(pResult->GetString(0), -1);
}*/

/*
>>>>>>> 662f84d4a358afb20eba2aeb98e4f89bb84bfebc
void IGameController::RegisterChatCommands(CCommandManager *pManager)
{
<<<<<<< HEAD
//AddCommand("example", "si", "I am a description", Com_Example);
AddCommand("help", "", "how to play", ComHelp);
AddCommand("info", "", "show authors and mod description", ComInfo);
}*/

void IGameController::ComSendMessageList(std::vector<std::string> &messageList, const int ClientID) {
CNetMsg_Sv_Chat Msg;
Expand All @@ -1253,15 +1202,21 @@ void IGameController::ComSendMessageList(std::vector<std::string> &messageList,
}
}

void IGameController::ComHelp(class IGameController *pGameController, class CPlayer *pPlayer, const char *pArgs) {
void IGameController::ComHelp(IConsole::IResult *pResult, void *pContext) {
auto *pComContext = (CCommandManager::SCommandContext *) pContext;
auto *pSelf = (IGameController *) pComContext->m_pContext;

std::vector<std::string> helplist = {"###Help###",
"You start in your team",
"If you hit a player, he is in your team, too",
"Very easy :D"};
pGameController->ComSendMessageList(helplist, pPlayer->GetCID());
pSelf->ComSendMessageList(helplist, pComContext->m_ClientID);
}

void IGameController::ComInfo(class IGameController *pGameController, class CPlayer *pPlayer, const char *pArgs) {
void IGameController::ComInfo(IConsole::IResult *pResult, void *pContext) {
auto *pComContext = (CCommandManager::SCommandContext *) pContext;
auto *pSelf = (IGameController *) pComContext->m_pContext;

std::vector<std::string> infolist = {"###Info###",
"Catch64 by AssassinTee",
"You like it? Give me a Star on GitHub!",
Expand All @@ -1270,5 +1225,5 @@ void IGameController::ComInfo(class IGameController *pGameController, class CPla
std::stringstream ss;
ss << "Teeworlds version: '" << GAME_RELEASE_VERSION << "', Catch64 Version: '" << CATCH_VERSION << "'";
infolist.push_back(ss.str());
pGameController->ComSendMessageList(infolist, pPlayer->GetCID());
pSelf->ComSendMessageList(infolist, pComContext->m_ClientID);
}
10 changes: 6 additions & 4 deletions src/game/server/gamecontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,6 @@ class IGameController
int m_TopscoreCount;

void ComSendMessageList(std::vector<std::string>& messageList, const int ClientID);
void ComHelp(class IGameController* pGameController, class CPlayer *pPlayer, const char *pArgs);
void ComInfo(class IGameController* pGameController, class CPlayer *pPlayer, const char *pArgs);


public:
Expand Down Expand Up @@ -183,7 +181,7 @@ class IGameController
void OnPlayerDisconnect(class CPlayer *pPlayer);
void OnPlayerInfoChange(class CPlayer *pPlayer);
void OnPlayerReadyChange(class CPlayer *pPlayer);
void OnPlayerCommand(class CPlayer *pPlayer, const char *pCommandName, const char *pCommandArgs);
// void OnPlayerCommand(class CPlayer *pPlayer, const char *pCommandName, const char *pCommandArgs);

void OnReset();

Expand Down Expand Up @@ -248,7 +246,11 @@ class IGameController
int GetStartWeapon(){ return m_StartWeapon;}

//static void Com_Example(IConsole::IResult *pResult, void *pContext);
//virtual void RegisterChatCommands(CCommandManager *pManager);
virtual void RegisterChatCommands(CCommandManager *pManager);

// chat commands
static void ComHelp(IConsole::IResult *pResult, void *pContext);
static void ComInfo(IConsole::IResult *pResult, void *pContext);
};

#endif
2 changes: 2 additions & 0 deletions src/game/variables.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ MACRO_CONFIG_INT(SvRandomSpawn, sv_random_spawn, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_S
MACRO_CONFIG_INT(SvRandomSpawnTries, sv_random_spawn_tries, 100, 1, 9999, CFGFLAG_SAVE|CFGFLAG_SERVER, "Tries for random spawn per player per tick");
MACRO_CONFIG_INT(SvRandomSpawnMaxScore, sv_random_spawn_max_score, 10, 0, 1000, CFGFLAG_SAVE|CFGFLAG_SERVER, "Random spawn max allowed score");

MACRO_CONFIG_INT(SvPartyMode, sv_party_mode, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_SERVER, "Random Weapons each round");

// debug
#ifdef CONF_DEBUG // this one can crash the server if not used correctly
MACRO_CONFIG_INT(DbgDummies, dbg_dummies, 0, 0, MAX_CLIENTS, CFGFLAG_SERVER, "")
Expand Down
2 changes: 1 addition & 1 deletion src/game/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
#define PREV_CLIENT_VERSION 0x0704
#define SETTINGS_FILENAME "settings07"
static const char GAME_RELEASE_VERSION[8] = "0.7.5";
#define CATCH_VERSION "1.2.1"
#define CATCH_VERSION "1.3.0"
#endif

0 comments on commit 9af98ee

Please sign in to comment.