اللهم صل علي سيدنا محمد وعلي أله وصحبه اجمعين. دلوقتي معانه موضوع VIPDays كامل
السيستم عباره فكره بسيطه
ان هيا ايتم بتاخدها من كويسته او اي ان كان هيا وممكن تبيعها برحتك
الايتم دي مثلا بتدي في اي بي 4 لمده اسبوع ولو انت في اي بي اكبر من 4 الايتم مش هتتضرب طبعا.
ولو انت في اي بي 3 مثلا او اقل , الايتم هتتضرب عادي وهتاخد في اي بي 4 لمده الاسبوع وبعد ما الاسبوع يخلص الفي اي بي بتاعك القديم يرجعلك تاني نخش ع الاضافه.
هتعمل Class في فولدر Game وتسميه VIPDays
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using T3Alo.Database;
namespace T3Alo.Game
{
public class VIPDays
{
public DateTime VIPStartON, VIPEndAt;
public byte VIPLevelDays, OldVIPLevel;
public int VIPLogMessage;
public VIPDays()
{
foreach (Client.GameState client in Program.GamePool)
{
this.VIPLevelDays = 0;
this.OldVIPLevel = client.Entity.VIPLevel;
}
}
public static void READ(Client.GameState client)
{
using (var cmd = new MySqlCommand(MySqlCommandType.SELECT).Select("vipdays").Where("UID", client.Entity.UID))
using (var reader = new MySqlReader(cmd))
{
if (reader.Read())
{
client.VIPDays.VIPLevelDays = reader.ReadByte("VIPLevelDays");
client.VIPDays.OldVIPLevel = reader.ReadByte("OldVIPLevel");
client.VIPDays.VIPStartON = DateTime.FromBinary(reader.ReadInt64("VIPStartON"));
client.VIPDays.VIPEndAt = DateTime.FromBinary(reader.ReadInt64("VIPEndAt"));
}
else
{
using (var cmds = new MySqlCommand(MySqlCommandType.INSERT))
cmds.Insert("vipdays").Insert("Name", client.Entity.Name).Insert("UID", client.Entity.UID).Execute();
}
}
}
public static void SAVE(Client.GameState client)
{
xConquer.Database.MySqlCommand cmd = new xConquer.Database.MySqlCommand(xConquer.Database.MySqlCommandType.UPDATE);
cmd.Update("vipdays")
.Set("VIPLevelDays", client.VIPDays.VIPLevelDays)
.Set("OldVIPLevel", client.VIPDays.OldVIPLevel)
.Set("VIPStartON", client.VIPDays.VIPStartON)
.Set("VIPEndAt", client.VIPDays.VIPEndAt);
cmd.Where("UID", client.Entity.UID);
cmd.Execute();
}
}
}
وتخش علي GameState او GameClient وتحط الكود دا
public Game.VIPDays VIPDays = new Game.VIPDays();
وتخش علي World او Thread على حسب سورسك هتبحث عن CharactersCallback وتحط الكود ده
if (client.VIPDays.VIPLevelDays > 0 && DateTime.Now >= client.VIPDays.VIPEndAt)
{
client.Entity.VIPLevel = client.VIPDays.OldVIPLevel;
client.VIPDays.VIPLevelDays = 0;
client.VIPDays.VIPStartON = Convert.ToDateTime(0);
client.VIPDays.VIPEndAt = Convert.ToDateTime(0);
VIPDays.SAVE(client);
client.Send("Your VIP is end, Try to get other item and unlock it.");
}
وتخش علي PacketHandler وتبحث علي
case 2032:
تحت الكود ده
Npcs dialog = new Npcs(client);
هتضيف دول
if (client.ActiveNpc == 3004121)
{
if (client.Inventory.Contains(client.ActiveNpc, 1))
{
if (req.OptionID == 1)
{
if (client.Entity.VIPLevel > 3)
{
dialog.Text("You are VIPLevel " + client.Entity.VIPLevel + ", So you can't unlock this item.");
dialog.Option("Ohh, Sorry.", 255);
dialog.Send();
}
else
{
if (client.Entity.VIPLevel < 4)
{
dialog.Text("Are you sure you want to unlock this item.");
dialog.Option("Yes I'm sure.", 2);
dialog.Send();
}
}
}
if (req.OptionID == 2)
{
if (client.Entity.VIPLevel < 4)
{
client.VIPDays.OldVIPLevel = client.Entity.VIPLevel;
client.VIPDays.VIPLevelDays = 4;
client.VIPDays.VIPStartON = DateTime.Now;
client.VIPDays.VIPEndAt = DateTime.Now.AddDays(7);
client.Entity.VIPLevel = client.VIPDays.VIPLevelDays;
client.Inventory.Remove(client.ActiveNpc, 1);
client.Send("Congratulations " + client.Entity.Name + ", You have got VIPLevel " + client.VIPDays.VIPLevelDays + " to " + client.VIPDays.VIPEndAt + ".");
VIPDays.SAVE(client);
}
}
}
}
فى فويد
حط دول تحت اى شنطه
case 3004121:
{
Npcs dialog = new Npcs(client);
dialog.Text("Hello " + client.Entity.Name + ", There is VIPLevel 4 For 7 Days. If you want to get it just confirm.");
dialog.Option("Confirm.", 1);
dialog.Option("Cancel.", 255);
dialog.Avatar(318);
dialog.Send();
client.ActiveNpc = item.ID;
break;
}
في EntityTable في الاخر خالص تحت الكود دا
client.Entity.FullyLoaded = true;
تضيف ده
Game.VIPDays.READ(client);
في GameState او GameClient
هتبحث عن
rivate void ShutDown()
تحط الكود ده
Kernel.GamePool.Remove(Entity.UID);
ضيف
VIPDays.SAVE(this);
ارفع دا علي القاعده لرؤية الروابط والمرفقات عليك الرد على الموضوع
لو جابلك ايرور في GameState خليها GameClient
هيجيلك ايرور في اسم البروجيكت T3Alo غيرو باسم البروجيكت بتاعك