[Tutorial] BanTemp Player
Let's get to the tutorial friends
WarZ_Server.sln
search:
Code:
if(strncmp(cmd, "/ban", 3) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_Ban(plr, cmd);
Add bellow:
Code:
if(strncmp(cmd, "/temp", 3) == 0 && plr->profile_.ProfileData.isDevAccount)
return Cmd_BanTemp(plr, cmd); // DouglasPRO Based :: {FDR}
search:
Code:
int ServerGameLogic::Cmd_Ban(obj_ServerPlayer* plr, const char* cmd)
{
char buf[128] = {0};
char reason[255] = {0};
char banned[64] = {0};
if(sscanf(cmd, "%s %s %[^\t\n]", buf, banned, reason) < 2)
return 1;
if(reason[0] == 0)
strcpy(reason, "Banned in Server by Admin, No Reason Specifiqued");
obj_ServerPlayer* plrBan = FindPlayer(banned);
if(plrBan)
{
CJobBan* ban = new CJobBan(plrBan);
ban->CustomerID = plrBan->profile_.CustomerID;
strcpy(ban->BanReason, reason);
g_AsyncApiMgr->AddJob(ban);
plrBan->isFFbanned = true;
LogCheat(plr->peerId_, PKT_S2C_CheatWarning_s::CHEAT_Data, 0, "Admin Ban user", "CustomerID: %d | GAMERTAG: %s | TARGET GAMERTAG: %s", plr->profile_.CustomerID, plr->userName, plrBan->userName);
}
else
{
char message[64] = {0};
sprintf(message, "Player '%s' not found", banned);
PKT_C2C_ChatMessage_s n2;
n2.userFlag = 0;
n2.msgChannel = 1;
r3dscpy(n2.msg, message);
r3dscpy(n2.gamertag, "<System>");
p2pSendToPeer(plr->peerId_, plr, &n2, sizeof(n2));
return 1;
}
return 0;
}
Add Bellow :
Code:
int ServerGameLogic::Cmd_BanTemp(obj_ServerPlayer* plr, const char* cmd){
char buf[128] = {0};
char reason[255] = {0};
char banned[64] = {0};
if(sscanf(cmd, "%s %s %[^\t\n]", buf, banned, reason) < 2) // DouglasPRO Based :: {FDR}
return 1;
if(reason[0] == 0)
strcpy(reason, "Banned in Server by Admin for 24 HRS, No Reason Specifiqued");
obj_ServerPlayer* plrBan = FindPlayer(banned);
if(plrBan)
{
CJobBanTemp* ban = new CJobBanTemp(plrBan); // DouglasPRO Based :: {FDR}
ban->CustomerID = plrBan->profile_.CustomerID;
strcpy(ban->BanReason, reason);
g_AsyncApiMgr->AddJob(ban);
plrBan->isFFbanned = true;
LogCheat(plr->peerId_, PKT_S2C_CheatWarning_s::CHEAT_Data, 0, "Admin Ban user temp", "CustomerID: %d | GAMERTAG: %s | TARGET GAMERTAG: %s", plr->profile_.CustomerID, plr->userName, plrBan->userName);
}
else
{
char message[64] = {0};
sprintf(message, "Player '%s' not found", banned);
PKT_C2C_ChatMessage_s n2;
n2.userFlag = 0;
n2.msgChannel = 1;
r3dscpy(n2.msg, message);
r3dscpy(n2.gamertag, "<System>");
p2pSendToPeer(plr->peerId_, plr, &n2, sizeof(n2));
return 1;
}
return 0;
}
search:
Code:
int Cmd_Ban(obj_ServerPlayer* plr, const char* cmd);
Add Bellow
Code:
int Cmd_BanTemp(obj_ServerPlayer* plr, const char* cmd);
search:
Add Bellow
search:
Code:
lastWeapDataRep = r3dGetTime();
Add Bellow
Code:
isFFbanned = false;
search:
Code:
int CJobBan::Exec(){
CWOBackendReq req("api_BanPlayer.aspx");
req.AddParam("skey1", g_ServerApiKey);
req.AddSessionInfo(CustomerID, SessionID);
req.AddParam("BanReason", BanReason);
if(!req.Issue())
{
r3dOutToLog("!!!! CJobBan failed, code: %d\n", req.resultCode_);
return req.resultCode_;
}
return 0;
}
void CJobBan::OnSuccess()
{
ServerGameLogic::peerInfo_s& peer = gServerLogic.GetPeer(peerId);
if(peer.CustomerID != CustomerID || peer.SessionID != SessionID)
return;
}
Add Bellow
Code:
int CJobBanTemp::Exec() // DouglasPRO Based :: {FDR}{
CWOBackendReq req("api_BanPlayerTemp.aspx");
req.AddParam("skey1", g_ServerApiKey);
req.AddSessionInfo(CustomerID, SessionID);
req.AddParam("BanReason", BanReason);
if(!req.Issue())
{
r3dOutToLog("!!!! CJobBanTemp failed, code: %d\n", req.resultCode_);
return req.resultCode_;
}
return 0;
}
void CJobBanTemp::OnSuccess() // DouglasPRO Based :: {FDR}
{
ServerGameLogic::peerInfo_s& peer = gServerLogic.GetPeer(peerId);
if(peer.CustomerID != CustomerID || peer.SessionID != SessionID)
return;
}
API ADD ::
https://mega.nz/#!odBHlDKQ!02q1bqut0...p5-NI9XfeeRkYY
CREDITS:
@
DouglasPro :: Tutorial and codes
@
fdrgamer :: For some codes
Like and reputation :ott:
Re: [Tutorial] BanTemp Player
Good tutorial, but it lacked the SQL function "ADMIN_BanUserTemp"
Re: [Tutorial] BanTemp Player
Quote:
Originally Posted by
Marreco
Good tutorial, but it lacked the SQL function "ADMIN_BanUserTemp"
-- ----------------------------
-- Procedure structure for [ADMIN_BanUserTemp]
-- ----------------------------
------------- DouglasPRO -----------------
----------------------------------------------
ALTER PROCEDURE [dbo].[ADMIN_BanUser]
@in_CustomerID int,
@in_BanReason nvarchar(256)
AS
BEGIN
SET NOCOUNT ON;
if(LEN(@in_BanReason) < 4) begin
select 'GIVE PROPER REASON'
return
end
declare @email varchar(128)
select @email=email from dbo.Accounts where CustomerID=@in_CustomerID
-- do not ban multiple times
declare @AccountStatus int = 0
declare @AccountType int = 0
declare @BanCount int = 0
declare @BanReason nvarchar(512)
select
@AccountStatus=AccountStatus,
@accountType=AccountType,
@BanCount=BanCount,
@BanReason=BanReason
from UsersData where CustomerID=@in_CustomerID
if(@AccountStatus = 200 or @AccountStatus = 201) begin
select 0 as ResultCode, 'already banned' as ResultMsg, @email as 'email'
return
end
-- clear his login session
update dbo.LoginSessions set SessionID=0 where CustomerID=@in_CustomerID
-- set his all alive chars to respawned mode
update dbo.UsersChars set Alive=2 where CustomerID=@in_CustomerID and Alive=1
if(@BanReason is null) set @BanReason = @in_BanReason
else set @BanReason = @in_BanReason + ', ' + @BanReason
-- guest ban, permament
if(@AccountType = 3) begin
set @BanReason = '[GUEST_BAN] ' + @BanReason
set @BanCount = 99;
end
declare @BannedHWID VARCHAR(128)
SELECT @BannedHWID = HardwareID from HWID_Log where HardwareID IS NOT NULL AND HardwareID NOT LIKE '%0x%' AND CustomerID = @in_CustomerID
INSERT INTO HWID_Ban VALUES (@BannedHWID, @in_BanReason)
-- ban
if(@BanCount > 0)
begin
insert into dbo.DBG_BanLog values (@in_CustomerID, GETDATE(), 2000, @in_BanReason)
update UsersData set
AccountStatus=200,
BanReason=@BanReason,
BanTime=GETDATE(),
BanCount=(BanCount+1),
BanExpireDate='2030-1-1'
where CustomerID=@in_CustomerID
select 0 as ResultCode, 'Permanent BAN' as ResultMsg, @email as 'email', @BanReason as 'BanReason'
return
end
else
begin
declare @BanTime int = 24 -- By DouglasPRO
insert into dbo.DBG_BanLog values (@in_CustomerID, GETDATE(), @BanTime, @in_BanReason)
update UsersData set
AccountStatus=201,
BanReason=@BanReason,
BanTime=GETDATE(),
BanCount=(BanCount+1),
BanExpireDate=DATEADD(hour, @BanTime, GETDATE())
where CustomerID=@in_CustomerID
select 0 as ResultCode, 'temporary ban' as ResultMsg, @email as 'email', @BanReason as 'BanReason'
return
end
END
- - - Updated - - -
only create a query for this up
Re: [Tutorial] BanTemp Player
Re: [Tutorial] BanTemp Player
Quote:
Originally Posted by
Returnerzx
what is BanTemp Player ?
Banish Temporarily player within the server!!
Re: [Tutorial] BanTemp Player
Hey @DouglasPro very thanks for this tutor, more you can re-upload file from mega.nz ?
Re: [Tutorial] BanTemp Player
Re: [Tutorial] BanTemp Player
Quote:
Originally Posted by
DouglasPro
I am very grateful for your cooperation, thank you. :}