PDA

View Full Version : [Gunny] Hướng dẫn tăng VIP lên lv 6 khi đăng ký 6 tháng cho Newbie



huyvannet
12-05-14, 03:19 AM
:D Mình cũng newbie, viết bài cho vui nhằm học hỏi!. Có gì mọi người share thêm học hỏi nhé.

Lọ mọ ngồi nghịch tìm hiểu cách fix VIP lên lv6 khi gia hạn 6 tháng, dùng source r30 bác gì gì đã share đấy.

Lúc đầu mình làm như thế này:
- Trong OpenVipHandler mình thấy nó gọi hàm VIPRenewal(text, num, ref now); để add VIP.
Soi vào thì thấy gọi SQL trong [dbo].[SP_VIPRenewal_Single], các bạn xóa hết đi và copy cái này Update vào:


-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SP_VIPRenewal_Single]
@NickName Nvarchar(200),
@RenewalDays int ,
@ExpireDayOut datetime out

AS
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
else
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
else
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
update [Sys_VIP_Info] set
[typeVIP] = 1
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
,[LastVIPPackTime] = GETDATE()
,[CanTakeVipReward] = 1
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

return 1

Ở trên mình thêm vào đoạn:


<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
else
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
:D để check RenewalDays xem có bằng 6 tháng ko, nếu có thì set lv = 6, exp max khi đạt lv6 là 4000.
Nhưng có điều là khi hiển thị nó chỉ hiển thị là vip lv 1. X_X phải reset lại game mới thấy lv6.

Chã nhẽ thế thì phiền. bắt đầu mình xem code tiếp thì thấy gọi hàm: OpenVIP(now);
thì chậc, sửa ở đây là xong :D chỉ cần thêm cái check RenewalDays vào là Ok,

Để sửa thì các bạn vào GamePlayer trong GameObjects tìm hàm:


public void OpenVIP(DateTime ExpireDayOut)

Rồi sửa lại như sau:


public void OpenVIP(int renewalDays, DateTime ExpireDayOut)
{
if (renewalDays == 180)
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 6;
this.m_character.VIPExp = 4000;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}
else
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 1;
this.m_character.VIPExp = 0;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}
}

Xong các bạn nhớ quay lại OpenVipHandler sửa mấy chỗ có đoạn:

client.Player.OpenVIP(now);

thành

client.Player.OpenVIP(renewalDays, now);

:D chú ý: Nếu sửa kiểu SQL rồi thì ko cần làm cái dưới và ngược lại. Khuyên là dùng cách dưới hay hơn.
Vậy là xong rồi đó! :D

fastclient1998
12-05-14, 06:12 AM
Hehe... kỳ này anh đã trở thành 1 pro dev gunny rùi :D mong là r30 sẽ hoàn thiện :)

hoang7625
12-05-14, 10:38 AM
:D Mình cũng newbie, viết bài cho vui nhằm học hỏi!. Có gì mọi người share thêm học hỏi nhé.

Lọ mọ ngồi nghịch tìm hiểu cách fix VIP lên lv6 khi gia hạn 6 tháng, dùng source r30 bác gì gì đã share đấy.

Lúc đầu mình làm như thế này:
- Trong OpenVipHandler mình thấy nó gọi hàm VIPRenewal(text, num, ref now); để add VIP.
Soi vào thì thấy gọi SQL trong [dbo].[SP_VIPRenewal_Single], các bạn xóa hết đi và copy cái này Update vào:


-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[SP_VIPRenewal_Single]
@NickName Nvarchar(200),
@RenewalDays int ,
@ExpireDayOut datetime out

AS
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
else
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
else
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
update [Sys_VIP_Info] set
[typeVIP] = 1
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
,[LastVIPPackTime] = GETDATE()
,[CanTakeVipReward] = 1
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

return 1

Ở trên mình thêm vào đoạn:


<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
else
begin
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
end
:D để check RenewalDays xem có bằng 6 tháng ko, nếu có thì set lv = 6, exp max khi đạt lv6 là 4000.
Nhưng có điều là khi hiển thị nó chỉ hiển thị là vip lv 1. X_X phải reset lại game mới thấy lv6.

Chã nhẽ thế thì phiền. bắt đầu mình xem code tiếp thì thấy gọi hàm: OpenVIP(now);
thì chậc, sửa ở đây là xong :D chỉ cần thêm cái check RenewalDays vào là Ok,

Để sửa thì các bạn vào GamePlayer trong GameObjects tìm hàm:


public void OpenVIP(DateTime ExpireDayOut)

Rồi sửa lại như sau:


public void OpenVIP(int renewalDays, DateTime ExpireDayOut)
{
if (renewalDays == 180)
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 6;
this.m_character.VIPExp = 4000;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}
else
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 1;
this.m_character.VIPExp = 0;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}
}

Xong các bạn nhớ quay lại OpenVipHandler sửa mấy chỗ có đoạn:

client.Player.OpenVIP(now);

thành

client.Player.OpenVIP(renewalDays, now);

:D chú ý: Nếu sửa kiểu SQL rồi thì ko cần làm cái dưới và ngược lại. Khuyên là dùng cách dưới hay hơn.
Vậy là xong rồi đó! :D

có cẽ như sẽ bị lỗi mãi ở Vip 6 nếu up víp = tiếp phí haha

huyvannet
12-05-14, 02:22 PM
có cẽ như sẽ bị lỗi mãi ở Vip 6 nếu up víp = tiếp phí haha

Chắc thêm check trường hợp của this.m_character.VIPLevel để lấy lv hiện tại :D

Bác có cao kiến gì không ^^ :P

hoang7625
12-05-14, 02:53 PM
Chắc thêm check trường hợp của this.m_character.VIPLevel để lấy lv hiện tại :D

Bác có cao kiến gì không ^^ :P

làm gì mà lắm lệnh thế, lắm lệnh thì càng nặng sever + cpu phải sử lý nhiều
thêm vài đoạn code trong Game.Server.Packets là ok cmnr, chỉnh gì mả cả Db_Tank ;));));));));));));))

public void OpenVIP(int thoigian, DateTime ExpireDayOut)
{
int Level = this.m_character.VIPLevel;
if(Level < 6 && thoigian == 180)
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 6;
this.m_character.VIPExp = 4000;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}
else
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 1;
this.m_character.VIPExp = 0;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}

}
public void ContinousVIP(int thoigian, DateTime ExpireDayOut)
{
int Level = this.m_character.VIPLevel;
if (Level < 6 && thoigian == 180)
{
this.m_character.VIPLevel = 6;
this.m_character.VIPExp = 4000;
this.m_character.VIPExpireDay = ExpireDayOut;
}
else
{
this.m_character.VIPExpireDay = ExpireDayOut;
}
}

huyvannet
12-05-14, 03:48 PM
:P Cái SQL là do tui mò lúc đầu, sau mới mò vào code đó chứ.

Thành ra là 2 cách.

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

hoang7625
12-05-14, 07:51 PM
:P Cái SQL là do tui mò lúc đầu, sau mới mò vào code đó chứ.

Thành ra là 2 cách.

<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>

đọc code mà ko hiểu à

public void OpenVIP(int thoigian, DateTime ExpireDayOut) // kích hoạt víp
{
int Level = this.m_character.VIPLevel;
if(Level < 6 && thoigian == 180)// ( nếu lv vip <6 mà thời gian kích hoạt là 6 tháng thì sẽ cho lv vip lên 6 và exp tương ứng lv6 là 4000)
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 6;
this.m_character.VIPExp = 4000;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}
else // không phải < lv 6 và ko phải 6 tháng thì mở bình thường
{
this.m_character.typeVIP = 1;
this.m_character.VIPLevel = 1;
this.m_character.VIPExp = 0;
this.m_character.VIPExpireDay = ExpireDayOut;
this.m_character.VIPLastDate = DateTime.Now;
this.m_character.VIPNextLevelDaysNeeded = 0;
this.m_character.CanTakeVipReward = true;
}

}
public void ContinousVIP(int thoigian, DateTime ExpireDayOut) // tiếp phí vip
{
int Level = this.m_character.VIPLevel;
if (Level < 6 && thoigian == 180) //nếu lv <6 và tiếp phí là 6 tháng thì cho lên lv6 + 4000 exp tương ứng+ thêm thời gian vip tưng ứng
{
this.m_character.VIPLevel = 6;
this.m_character.VIPExp = 4000;
this.m_character.VIPExpireDay = ExpireDayOut;
}
else //(tiếp phí khi víp >=6 và tiếp phí là 6 tháng thì tăng thời gian tương ứng) hoặc (vip <6 nhưng thời gian ko phải là tiếp phí 6 tháng thì tăng thời gian tương ứng)
{
this.m_character.VIPExpireDay = ExpireDayOut;
}
}

trminhpc
13-05-14, 05:02 PM
làm gì mà lắm lệnh thế, lắm lệnh thì càng nặng sever + cpu phải sử lý nhiều
thêm vài đoạn code trong Game.Server.Packets là ok cmnr, chỉnh gì mả cả Db_Tank ;));));));));));));))

Không liên quan nhưng tôi không đồng ý quan điểm của bạn :-?.

nhokvip99
13-05-14, 05:07 PM
Không liên quan nhưng tôi không đồng ý quan điểm của bạn :-?.
Bác trminh dạo này tham gia diễn đàn lại rồi à!!!!!

laibixoa
15-05-14, 06:47 PM
Không liên quan nhưng tôi không đồng ý quan điểm của bạn :-?.

ý bác minh là không muốn là làm được thi im lặng không được share. share như zậy , mây hôm nay người chơi bên serveer bác kéo đi hết rồi' it ai chơi lắm , vào mà xem...... lỗ nặng rồi....:P:P:P:P:P:P:P=D>=D>=D>=D>=D>=D>=D>

datdn74
16-05-14, 10:00 PM
con mèo là gái thật à vs lại mod Hung đâu rồi ko thấy nhì

hung3020
16-05-14, 10:28 PM
con mèo là gái thật à vs lại mod Hung đâu rồi ko thấy nhì

Ta đã từ giã mod, mà chú tìm ta có việc j k?

ymh158
16-10-14, 05:53 PM
Newbie làm k dc :((((rrrrrrrrrrrrrrrrrr

trong0981
17-10-14, 02:09 AM
Không liên quan cơ mà Mèo thấy bạn hiểu sai rồi đó <b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b> (<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>)

Bác ấy đang bị ATSM đó mà, với trminhpc sửa vụ tiếp phí này trong 1 nốt nhạc. Việc người khác hưong dẫn fix mấy lỗi từ tính năng mà lão dev ra chả ảnh hưởng gì tới lão :3

francis.nguyen
16-04-15, 10:48 PM
Các bạn ơi cho mình hỏi phải bài viết này nói về cách kích hoạt lên vip6 ko mọi người?????

francis.nguyen
16-04-15, 10:59 PM
Nếu phải ai chỉ mình cách nhập các dòng code như chủ thớt hướng dẫn với .thks

francis.nguyen
17-04-15, 11:07 AM
AD nào làm Mod Gunny chỉ giúp em với :(