mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
Kind of working
This commit is contained in:
parent
127dc1c196
commit
4af575654b
|
@ -720,6 +720,7 @@ int CServer::NewClientCallback(int ClientID, void *pUser)
|
|||
{
|
||||
CServer *pThis = (CServer *)pUser;
|
||||
pThis->m_aClients[ClientID].m_State = CClient::STATE_AUTH;
|
||||
std::cout << "RESETTING NAME" << std::endl;
|
||||
pThis->m_aClients[ClientID].m_aName[0] = 0;
|
||||
pThis->m_aClients[ClientID].m_aClan[0] = 0;
|
||||
pThis->m_aClients[ClientID].m_Country = -1;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
||||
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
||||
#include <iostream>
|
||||
#include <engine/editor.h>
|
||||
#include <engine/engine.h>
|
||||
#include <engine/friends.h>
|
||||
|
@ -365,6 +366,7 @@ int CGameClient::OnSnapInput(int *pData)
|
|||
|
||||
void CGameClient::OnConnected()
|
||||
{
|
||||
std::cout << "ONCONNECTED" << std::endl;
|
||||
m_Layers.Init(Kernel());
|
||||
m_Collision.Init(Layers());
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
||||
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
||||
|
||||
#include <iostream>
|
||||
#include <base/tl/sorted_array.h>
|
||||
|
||||
#include <new>
|
||||
|
@ -847,7 +847,13 @@ void CGameContext::OnClientConnected(int ClientID)
|
|||
if (!m_apPlayers[ClientID])
|
||||
m_apPlayers[ClientID] = new(ClientID) CPlayer(this, ClientID, StartTeam);
|
||||
else
|
||||
m_apPlayers[ClientID]
|
||||
{
|
||||
//delete m_apPlayers[ClientID];
|
||||
//m_apPlayers[ClientID] = new(ClientID) CPlayer(this, ClientID, StartTeam);
|
||||
//m_apPlayers[ClientID]->Reset();
|
||||
//((CServer*)Server())->m_aClients[ClientID].Reset();
|
||||
((CServer*)Server())->m_aClients[ClientID].m_State = 4;
|
||||
}
|
||||
//players[client_id].init(client_id);
|
||||
//players[client_id].client_id = client_id;
|
||||
|
||||
|
@ -1474,102 +1480,103 @@ void CGameContext::OnMessage(int MsgID, CUnpacker *pUnpacker, int ClientID)
|
|||
pPlayer->KillCharacter(WEAPON_SELF);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (MsgID == NETMSGTYPE_CL_STARTINFO)
|
||||
{
|
||||
if (MsgID == NETMSGTYPE_CL_STARTINFO)
|
||||
std::cout << "STARTINFO" << std::endl;
|
||||
//if(pPlayer->m_IsReady)
|
||||
// return;
|
||||
|
||||
CNetMsg_Cl_StartInfo *pMsg = (CNetMsg_Cl_StartInfo *)pRawMsg;
|
||||
pPlayer->m_LastChangeInfo = Server()->Tick();
|
||||
|
||||
// set start infos
|
||||
Server()->SetClientName(ClientID, pMsg->m_pName);
|
||||
Server()->SetClientClan(ClientID, pMsg->m_pClan);
|
||||
Server()->SetClientCountry(ClientID, pMsg->m_Country);
|
||||
str_copy(pPlayer->m_TeeInfos.m_SkinName, pMsg->m_pSkin, sizeof(pPlayer->m_TeeInfos.m_SkinName));
|
||||
pPlayer->m_TeeInfos.m_UseCustomColor = pMsg->m_UseCustomColor;
|
||||
pPlayer->m_TeeInfos.m_ColorBody = pMsg->m_ColorBody;
|
||||
pPlayer->m_TeeInfos.m_ColorFeet = pMsg->m_ColorFeet;
|
||||
//m_pController->OnPlayerInfoChange(pPlayer);
|
||||
|
||||
// send vote options
|
||||
CNetMsg_Sv_VoteClearOptions ClearMsg;
|
||||
Server()->SendPackMsg(&ClearMsg, MSGFLAG_VITAL, ClientID);
|
||||
|
||||
CNetMsg_Sv_VoteOptionListAdd OptionMsg;
|
||||
int NumOptions = 0;
|
||||
OptionMsg.m_pDescription0 = "";
|
||||
OptionMsg.m_pDescription1 = "";
|
||||
OptionMsg.m_pDescription2 = "";
|
||||
OptionMsg.m_pDescription3 = "";
|
||||
OptionMsg.m_pDescription4 = "";
|
||||
OptionMsg.m_pDescription5 = "";
|
||||
OptionMsg.m_pDescription6 = "";
|
||||
OptionMsg.m_pDescription7 = "";
|
||||
OptionMsg.m_pDescription8 = "";
|
||||
OptionMsg.m_pDescription9 = "";
|
||||
OptionMsg.m_pDescription10 = "";
|
||||
OptionMsg.m_pDescription11 = "";
|
||||
OptionMsg.m_pDescription12 = "";
|
||||
OptionMsg.m_pDescription13 = "";
|
||||
OptionMsg.m_pDescription14 = "";
|
||||
CVoteOptionServer *pCurrent = m_pVoteOptionFirst;
|
||||
while(pCurrent)
|
||||
{
|
||||
if(pPlayer->m_IsReady)
|
||||
return;
|
||||
|
||||
CNetMsg_Cl_StartInfo *pMsg = (CNetMsg_Cl_StartInfo *)pRawMsg;
|
||||
pPlayer->m_LastChangeInfo = Server()->Tick();
|
||||
|
||||
// set start infos
|
||||
Server()->SetClientName(ClientID, pMsg->m_pName);
|
||||
Server()->SetClientClan(ClientID, pMsg->m_pClan);
|
||||
Server()->SetClientCountry(ClientID, pMsg->m_Country);
|
||||
str_copy(pPlayer->m_TeeInfos.m_SkinName, pMsg->m_pSkin, sizeof(pPlayer->m_TeeInfos.m_SkinName));
|
||||
pPlayer->m_TeeInfos.m_UseCustomColor = pMsg->m_UseCustomColor;
|
||||
pPlayer->m_TeeInfos.m_ColorBody = pMsg->m_ColorBody;
|
||||
pPlayer->m_TeeInfos.m_ColorFeet = pMsg->m_ColorFeet;
|
||||
//m_pController->OnPlayerInfoChange(pPlayer);
|
||||
|
||||
// send vote options
|
||||
CNetMsg_Sv_VoteClearOptions ClearMsg;
|
||||
Server()->SendPackMsg(&ClearMsg, MSGFLAG_VITAL, ClientID);
|
||||
|
||||
CNetMsg_Sv_VoteOptionListAdd OptionMsg;
|
||||
int NumOptions = 0;
|
||||
OptionMsg.m_pDescription0 = "";
|
||||
OptionMsg.m_pDescription1 = "";
|
||||
OptionMsg.m_pDescription2 = "";
|
||||
OptionMsg.m_pDescription3 = "";
|
||||
OptionMsg.m_pDescription4 = "";
|
||||
OptionMsg.m_pDescription5 = "";
|
||||
OptionMsg.m_pDescription6 = "";
|
||||
OptionMsg.m_pDescription7 = "";
|
||||
OptionMsg.m_pDescription8 = "";
|
||||
OptionMsg.m_pDescription9 = "";
|
||||
OptionMsg.m_pDescription10 = "";
|
||||
OptionMsg.m_pDescription11 = "";
|
||||
OptionMsg.m_pDescription12 = "";
|
||||
OptionMsg.m_pDescription13 = "";
|
||||
OptionMsg.m_pDescription14 = "";
|
||||
CVoteOptionServer *pCurrent = m_pVoteOptionFirst;
|
||||
while(pCurrent)
|
||||
switch(NumOptions++)
|
||||
{
|
||||
switch(NumOptions++)
|
||||
case 0: OptionMsg.m_pDescription0 = pCurrent->m_aDescription; break;
|
||||
case 1: OptionMsg.m_pDescription1 = pCurrent->m_aDescription; break;
|
||||
case 2: OptionMsg.m_pDescription2 = pCurrent->m_aDescription; break;
|
||||
case 3: OptionMsg.m_pDescription3 = pCurrent->m_aDescription; break;
|
||||
case 4: OptionMsg.m_pDescription4 = pCurrent->m_aDescription; break;
|
||||
case 5: OptionMsg.m_pDescription5 = pCurrent->m_aDescription; break;
|
||||
case 6: OptionMsg.m_pDescription6 = pCurrent->m_aDescription; break;
|
||||
case 7: OptionMsg.m_pDescription7 = pCurrent->m_aDescription; break;
|
||||
case 8: OptionMsg.m_pDescription8 = pCurrent->m_aDescription; break;
|
||||
case 9: OptionMsg.m_pDescription9 = pCurrent->m_aDescription; break;
|
||||
case 10: OptionMsg.m_pDescription10 = pCurrent->m_aDescription; break;
|
||||
case 11: OptionMsg.m_pDescription11 = pCurrent->m_aDescription; break;
|
||||
case 12: OptionMsg.m_pDescription12 = pCurrent->m_aDescription; break;
|
||||
case 13: OptionMsg.m_pDescription13 = pCurrent->m_aDescription; break;
|
||||
case 14:
|
||||
{
|
||||
case 0: OptionMsg.m_pDescription0 = pCurrent->m_aDescription; break;
|
||||
case 1: OptionMsg.m_pDescription1 = pCurrent->m_aDescription; break;
|
||||
case 2: OptionMsg.m_pDescription2 = pCurrent->m_aDescription; break;
|
||||
case 3: OptionMsg.m_pDescription3 = pCurrent->m_aDescription; break;
|
||||
case 4: OptionMsg.m_pDescription4 = pCurrent->m_aDescription; break;
|
||||
case 5: OptionMsg.m_pDescription5 = pCurrent->m_aDescription; break;
|
||||
case 6: OptionMsg.m_pDescription6 = pCurrent->m_aDescription; break;
|
||||
case 7: OptionMsg.m_pDescription7 = pCurrent->m_aDescription; break;
|
||||
case 8: OptionMsg.m_pDescription8 = pCurrent->m_aDescription; break;
|
||||
case 9: OptionMsg.m_pDescription9 = pCurrent->m_aDescription; break;
|
||||
case 10: OptionMsg.m_pDescription10 = pCurrent->m_aDescription; break;
|
||||
case 11: OptionMsg.m_pDescription11 = pCurrent->m_aDescription; break;
|
||||
case 12: OptionMsg.m_pDescription12 = pCurrent->m_aDescription; break;
|
||||
case 13: OptionMsg.m_pDescription13 = pCurrent->m_aDescription; break;
|
||||
case 14:
|
||||
{
|
||||
OptionMsg.m_pDescription14 = pCurrent->m_aDescription;
|
||||
OptionMsg.m_NumOptions = NumOptions;
|
||||
Server()->SendPackMsg(&OptionMsg, MSGFLAG_VITAL, ClientID);
|
||||
OptionMsg = CNetMsg_Sv_VoteOptionListAdd();
|
||||
NumOptions = 0;
|
||||
OptionMsg.m_pDescription1 = "";
|
||||
OptionMsg.m_pDescription2 = "";
|
||||
OptionMsg.m_pDescription3 = "";
|
||||
OptionMsg.m_pDescription4 = "";
|
||||
OptionMsg.m_pDescription5 = "";
|
||||
OptionMsg.m_pDescription6 = "";
|
||||
OptionMsg.m_pDescription7 = "";
|
||||
OptionMsg.m_pDescription8 = "";
|
||||
OptionMsg.m_pDescription9 = "";
|
||||
OptionMsg.m_pDescription10 = "";
|
||||
OptionMsg.m_pDescription11 = "";
|
||||
OptionMsg.m_pDescription12 = "";
|
||||
OptionMsg.m_pDescription13 = "";
|
||||
OptionMsg.m_pDescription14 = "";
|
||||
}
|
||||
OptionMsg.m_pDescription14 = pCurrent->m_aDescription;
|
||||
OptionMsg.m_NumOptions = NumOptions;
|
||||
Server()->SendPackMsg(&OptionMsg, MSGFLAG_VITAL, ClientID);
|
||||
OptionMsg = CNetMsg_Sv_VoteOptionListAdd();
|
||||
NumOptions = 0;
|
||||
OptionMsg.m_pDescription1 = "";
|
||||
OptionMsg.m_pDescription2 = "";
|
||||
OptionMsg.m_pDescription3 = "";
|
||||
OptionMsg.m_pDescription4 = "";
|
||||
OptionMsg.m_pDescription5 = "";
|
||||
OptionMsg.m_pDescription6 = "";
|
||||
OptionMsg.m_pDescription7 = "";
|
||||
OptionMsg.m_pDescription8 = "";
|
||||
OptionMsg.m_pDescription9 = "";
|
||||
OptionMsg.m_pDescription10 = "";
|
||||
OptionMsg.m_pDescription11 = "";
|
||||
OptionMsg.m_pDescription12 = "";
|
||||
OptionMsg.m_pDescription13 = "";
|
||||
OptionMsg.m_pDescription14 = "";
|
||||
}
|
||||
pCurrent = pCurrent->m_pNext;
|
||||
}
|
||||
if(NumOptions > 0)
|
||||
{
|
||||
OptionMsg.m_NumOptions = NumOptions;
|
||||
Server()->SendPackMsg(&OptionMsg, MSGFLAG_VITAL, ClientID);
|
||||
NumOptions = 0;
|
||||
}
|
||||
pCurrent = pCurrent->m_pNext;
|
||||
}
|
||||
if(NumOptions > 0)
|
||||
{
|
||||
OptionMsg.m_NumOptions = NumOptions;
|
||||
Server()->SendPackMsg(&OptionMsg, MSGFLAG_VITAL, ClientID);
|
||||
NumOptions = 0;
|
||||
}
|
||||
|
||||
// send tuning parameters to client
|
||||
SendTuningParams(ClientID, pPlayer->m_TuneZone);
|
||||
// send tuning parameters to client
|
||||
SendTuningParams(ClientID, pPlayer->m_TuneZone);
|
||||
|
||||
// client is ready to enter
|
||||
// client is ready to enter
|
||||
if (!pPlayer->m_IsReady)
|
||||
{
|
||||
pPlayer->m_IsReady = true;
|
||||
CNetMsg_Sv_ReadyToEnter m;
|
||||
Server()->SendPackMsg(&m, MSGFLAG_VITAL|MSGFLAG_FLUSH, ClientID);
|
||||
|
|
|
@ -98,6 +98,81 @@ CPlayer::~CPlayer()
|
|||
m_pCharacter = 0;
|
||||
}
|
||||
|
||||
void CPlayer::Reset()
|
||||
{
|
||||
//m_pGameServer = pGameServer;
|
||||
m_RespawnTick = Server()->Tick();
|
||||
m_DieTick = Server()->Tick();
|
||||
m_ScoreStartTick = Server()->Tick();
|
||||
delete m_pCharacter;
|
||||
m_pCharacter = 0;
|
||||
//m_ClientID = ClientID;
|
||||
m_Team = GameServer()->m_pController->ClampTeam(m_Team);
|
||||
m_SpectatorID = SPEC_FREEVIEW;
|
||||
m_LastActionTick = Server()->Tick();
|
||||
m_TeamChangeTick = Server()->Tick();
|
||||
|
||||
int* idMap = Server()->GetIdMap(m_ClientID);
|
||||
for (int i = 1;i < VANILLA_MAX_CLIENTS;i++)
|
||||
{
|
||||
idMap[i] = -1;
|
||||
}
|
||||
idMap[0] = m_ClientID;
|
||||
|
||||
// DDRace
|
||||
|
||||
m_LastCommandPos = 0;
|
||||
m_LastPlaytime = time_get();
|
||||
m_Sent1stAfkWarning = 0;
|
||||
m_Sent2ndAfkWarning = 0;
|
||||
m_ChatScore = 0;
|
||||
m_EyeEmote = true;
|
||||
m_TimerType = g_Config.m_SvDefaultTimerType;
|
||||
m_DefEmote = EMOTE_NORMAL;
|
||||
m_Afk = false;
|
||||
m_LastWhisperTo = -1;
|
||||
m_LastSetSpectatorMode = 0;
|
||||
|
||||
m_TuneZone = 0;
|
||||
m_TuneZoneOld = m_TuneZone;
|
||||
|
||||
//New Year
|
||||
if (g_Config.m_SvEvents)
|
||||
{
|
||||
time_t rawtime;
|
||||
struct tm* timeinfo;
|
||||
char d[16], m[16], y[16];
|
||||
int dd, mm;
|
||||
time ( &rawtime );
|
||||
timeinfo = localtime ( &rawtime );
|
||||
strftime (d,sizeof(y),"%d",timeinfo);
|
||||
strftime (m,sizeof(m),"%m",timeinfo);
|
||||
strftime (y,sizeof(y),"%Y",timeinfo);
|
||||
dd = atoi(d);
|
||||
mm = atoi(m);
|
||||
m_DefEmote = ((mm == 12 && dd == 31) || (mm == 1 && dd == 1)) ? EMOTE_HAPPY : EMOTE_NORMAL;
|
||||
}
|
||||
m_DefEmoteReset = -1;
|
||||
|
||||
GameServer()->Score()->PlayerData(m_ClientID)->Reset();
|
||||
|
||||
m_ClientVersion = VERSION_VANILLA;
|
||||
m_ShowOthers = g_Config.m_SvShowOthersDefault;
|
||||
m_ShowAll = g_Config.m_SvShowAllDefault;
|
||||
m_NinjaJetpack = false;
|
||||
|
||||
m_Paused = PAUSED_NONE;
|
||||
m_DND = false;
|
||||
|
||||
m_NextPauseTick = 0;
|
||||
|
||||
// Variable initialized:
|
||||
m_Last_Team = 0;
|
||||
#if defined(CONF_SQL)
|
||||
m_LastSQLQuery = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void CPlayer::Tick()
|
||||
{
|
||||
#ifdef CONF_DEBUG
|
||||
|
|
|
@ -18,7 +18,7 @@ public:
|
|||
CPlayer(CGameContext *pGameServer, int ClientID, int Team);
|
||||
~CPlayer();
|
||||
|
||||
void Init(int CID);
|
||||
void Reset();
|
||||
|
||||
void TryRespawn();
|
||||
void Respawn();
|
||||
|
|
Loading…
Reference in a new issue