المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Quest TreasureBox


youssefabdelmanam
2019-07-12, 09:26 AM
السلام عليكم ورحمة الله وبركاته:emoji9:
طبعا احب اعرفكم بنفسي ابل منبتدي الشرح
معاكم اخوكم يوسف عبدو :)
طبعا انا جديد هنا في المنتدي ودي تعتبر ال موضوعاتي:D

للاسف انا معرفتش احط لوجو المنتدي في الموضوع عشان مش معاية

انا عارف اني رغاي فيلا نخش في الشرح علي طول ;)

دلوقتي انا جيبلكم كوستة بسيطة وهيا كوستة البحث عن الصندايق

طبعا دي كوستة بسيطة بس حبيت انزلها للناس عشان الي محتاجها

فكرة الكوستة انك مثلا بيجيلك رسالة في وقت محدد بيوديك عند ان بي سي الكوستة

بعد كدة بتدخل مابة كبيرة انت بقي تفضل تدور علي الصناديق ياما تكسب ايتم يا سبس يا جولد ياما تموت انت وحظك

بعد 10 دقايق من الكوستة بتخرج تلقأي يلا نخش في الاضافات

اول حاجة اعمل كلاس في اي مكان بأسم TreasureBox

بعد ضيف دا جواه

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using Mr_Panda.Client;
using Mr_Panda.Interfaces;
using Mr_Panda.Network.GamePackets;


namespace Mr_Panda.Game
{
public class TreasureBox
{
static Map Map = Kernel.Maps[3820];
const int MAX_BOXES = 20, ITEMS = 1000, CPSMoney = 1001, LEVEL = 1002, DEATH = 1003, STUN = 1004, KICK = 1005;
static int CurrentBoxes = 0;
static Mr_Panda.Interfaces.INpc npc;
static ushort tempX, tempY = 0;
static uint BaseId = 101002;
static List<Point> VaildOnes = new List<Point>();
public static bool OnGoing;

public static void Generate()
{
try
{
if (CurrentBoxes < MAX_BOXES)
{
if (Map == null)
{
Map = Kernel.Maps[3820];
return;
}
tempX = (ushort)Kernel.Random.Next(0, Map.Floor.Bounds.Width);
tempY = (ushort)Kernel.Random.Next(0, Map.Floor.Bounds.Height);
if (Map.Floor[tempX, tempY, MapObjectType.Item, null])
{
npc = new Network.GamePackets.NpcSpawn();
npc.UID = BaseId++;
npc.Mesh = (ushort)Kernel.RandFromGivingNums(9307, 9277, 9267, 9287, 9287, 9287 ,9257, 9257, 9257, 9257, 9257, 9257, 9307, 9307, 9307, 9307, 9307, 9277, 9267, 9267, 9267, 9277, 9277, 9277, 9277, 9277);
npc.Type = Enums.NpcType.Talker;
npc.MapID = Map.ID;
npc.X = tempX;
npc.Y = tempY;

Map.AddNpc(npc);
CurrentBoxes++;
Kernel.SendWorldMessage(new Message("A new treasure box appeared!", Color.Red, 2012));
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}

}

public static void Reward(GameState client)
{
client.Player.CurrentTreasureBoxes++;
var orders = Kernel.GamePool.Values.OrderByDescending(x => x.Player.CurrentTreasureBoxes).ToArray();
for (int i = 0; i < orders.Length + 1; i++)
{
if (i == 11) break;
Message msg;

if (i == 0)
{
msg = new Message("", System.Drawing.Color.Red, Message.FirstRightCorner);
}
else
{
if (orders[i - 1].Player.CurrentTreasureBoxes == 0) continue;
msg = new Message("No " + i.ToString() + "- " + orders[i - 1].Player.Name + " Opened " + orders[i - 1].Player.CurrentTreasureBoxes.ToString() + " Boxes!", System.Drawing.Color.Red, Message.ContinueRightCorner);
}

Kernel.SendWorldMessage(msg, Program.GamePool, (ushort)3820);
}

int prize = 0;

if (client.Player.Level <= 135)
prize = Kernel.RandFromGivingNums(ITEMS, CPSMoney, KICK, ITEMS, CPSMoney, ITEMS, CPSMoney, DEATH);
else prize = Kernel.RandFromGivingNums(ITEMS, CPSMoney, KICK, ITEMS, CPSMoney, ITEMS, CPSMoney, DEATH);
//#warning TREASURE BOX PRIZE
switch (prize)
{
case CPSMoney:
{
uint amount = (uint)Kernel.Random.Next(10000000,100000000);
if (amount >= 1)
{
client.Player.ConquerPoints += amount;
Kernel.SendWorldMessage(new Message(client.Player.Name + " got " + amount.ToString() + " CPs while opening the TreasureBox!", Color.White, Message.Talk));
}
break;
}
case ITEMS:
{
Database.ConquerItemBaseInformation temp;
uint itemid = (uint)Kernel.RandFromGivingNums(188755, 192935, 192775, 187405, 188105, 188705, 188945, 188515, 192825, 200220, 187855, 200475, 187405, 187415, 187425, 3004124, 183325, 183495, 184305, 184315, 184375, 187305, 187315, 181395, 184405, 184365);
client.Inventory.Add(itemid, 0, 1);
Database.ConquerItemInformation.BaseInformations.T ryGetValue(itemid, out temp);
Kernel.SendWorldMessage(new Message(client.Player.Name + " got " + temp.Name + " while opening the TreasureBox!", Color.White, Message.Talk));
break;
}
case KICK:
{
client.Player.Teleport(1002, 338, 345);
Kernel.SendWorldMessage(new Message(client.Player.Name + " got KICKED-OUT! while opening the TreasureBox!", Color.White, Message.Talk));
break;
}
case DEATH:
{
client.Player.Die(client.Player);
Kernel.SendWorldMessage(new Message(client.Player.Name + " got Death! while opening the TreasureBox!", Color.White, Message.Talk));
break;
}
}

CurrentBoxes--;
client.Player.ConquerPoints += 100000;
//client.Entity.TreasuerPoints += 1;
}
}
}

بعد كدة تخش علي كلاس World.cs

وتبحث عن

private void WorldTournaments

وتضيف دا تحتها

#region TreasureBox
if ((Now64.Minute == 32) && (Now64.Second == 01))
{
TreasureBox.OnGoing = true;
for (int i = 0; i < 10; i++)
Game.TreasureBox.Generate();
Kernel.SendWorldMessage(new Message("The Lost TreasureBox event began!", Color.Red, Message.Center));

foreach (var client in Program.Values)
client.MessageBox("Lost treasure box event has started! Would you like to join? [Prize: 5kk or 1 kk CPs or more]",
(p) => { p.Player.Teleport(1002, 300, 229); }, null);
}
if (TreasureBox.OnGoing)
{
Game.TreasureBox.Generate();
}
if ((Now64.Minute == 37) && TreasureBox.OnGoing)
{
TreasureBox.OnGoing = false;
foreach (var client in Program.Values)
if (client.Player.MapID == 3820)
client.Player.Teleport(1002, 302, 286);
Kernel.SendWorldMessage(new Message("The Lost TreasureBox event ended!", Color.Red, Message.Center));
}
#endregion

ملحوظة: لو حبيت تعدل علي وقت الكوستة

هنا الوقت الي بيبدأ فيه الكوستة

if ((Now64.Minute == 32) && (Now64.Second == 01))

وهنا الوقت الي بينتهي فيه الكوستة وتخرج التون

if ((Now64.Minute == 37) && TreasureBox.OnGoing)

بعد كدة هتدخل علي كلاس Npc.cs

وتبحث عن

switch (client.ActiveNpc)

وتضيف دا تحتية

#region TreasureThief
case 16970:
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("I have lost all my treasure boxes inside the DisCity map when I was doing the quest! now you'll need to find them for me!");
dialog.Option("Send me there.", 1);
dialog.Option("Meh!", 255);
dialog.Send();
break;
}
case 1:
{
if (TreasureBox.OnGoing)
{
client.Player.Teleport(3820, (ushort)Kernel.Random.Next(87, 212), (ushort)Kernel.Random.Next(114, 200));
}
else
{
dialog.Text("I can only send you there when it's xx:32 To xx:37 ");
dialog.Option("Oh I See!.", 255);
dialog.Send();
}
break;
}
}
break;
}
#endregion

بعد كدة تبحث في نفس الكلاس عن

if (client.ActiveNpc >= 101002

وتبدلها كلها بي دي

if (client.ActiveNpc >= 101002 && client.Player.MapID == 3820)
{
client.SendScreen(new Network.GamePackets.Data(true) { UID = client.ActiveNpc, ID = Network.GamePackets.Data.RemoveEntity }, true);
client.Map.RemoveNpc(client.Map.Npcs[client.ActiveNpc]);
Mr_Panda.Game.TreasureBox.Reward(client);
}

بعد كدة هتخش علي كلاس Entity.Cs

وتبحث عن

public class Entity : Writer,

وتضيف دا تحتية

public int CurrentTreasureBoxes = 0;

كدا خلصنا اضافات السي شارب نخش علي اضافات النافي كات

اضافة الان بي سي في الانافي كات

Npc

16970 TreasureBox 2 20337 1002 296 224


بص كدة معاية في اضافة المابة اول حاجة هتروح تضيف المابة دي لو لقيتها اصلا عندك امسها وضيف الي في الموضوع

عشان كلو يبقي شغال معاك تمام

10002 3820 65544 0




كدا تم الاتنهاء بفضل الله دعوه حلوه بقا ملحوظه الي هيطلع ايرور في Mr_Panda يبدلها في اسم البروجكت

والي هيجيلو ايرور في كلمة Player يبدلها بكلمة Entity ;)

وانتظروني في موضوعات اخري :D

والسلام عليكم ورحمة الله وبركاتة :emoji9:

محمد ياسر
2019-07-12, 09:30 AM
جميل بس لسه المسابقه مابدائت هههههههه

youssefabdelmanam
2019-07-12, 09:43 AM
جميل بس لسه المسابقه مابدائت هههههههه

هتبدأ امتي يا حازم

محمد ياسر
2019-07-12, 09:44 AM
لما عدد الاعضاء يبا 400

Users
2019-07-12, 10:21 AM
الله ينور جهز موضوعاتك عشان قربنا
وياريت تشارك المنتدى مع الناس للافاده

ALz3em
2019-07-12, 11:45 AM
جميل أستمر تسلم أيدك

Tefa
2019-07-12, 01:10 PM
عاش موضوع كامل و الاضافه كامله احسنت

MohamedModyAdel
2019-07-12, 05:03 PM
عاش

osama
2019-07-12, 05:35 PM
طيب لما بفتح الصنديق كلها بتدينى سبس عالى انا عاوز السبس يكون صعب علشان السرفر انا عملو صعب يريت يكون من 100 سبس الى 2000 سبس الى يجيى فى الصنديق كلها اعمل اية علشان يحصل كدة ؟

محمد ياسر
2019-07-12, 05:37 PM
طيب لما بفتح الصنديق كلها بتدينى سبس عالى انا عاوز السبس يكون صعب علشان السرفر انا عملو صعب يريت يكون من 100 سبس الى 2000 سبس الى يجيى فى الصنديق كلها اعمل اية علشان يحصل كدة ؟

عدل علي القيمه ده
uint amount = (uint)Kernel.Random.Next(10000000,100000000);

osama
2019-07-12, 06:03 PM
عدل علي القيمه ده
uint amount = (uint)kernel.random.next(10000000,100000000);

غيرت الاركام الكبيرة ومفيش فيدة بردو بيظر تحت ارقام زى منا عاوز بس بيجى فى الايتم سبس كتير بردو + لما بيجي جرمنت يجى معها سبس بردو ولما افتح صندوق ويطردنى فى التون يجى سبس بردو اعمل اية ؟؟

saeed
2019-07-12, 06:06 PM
غيرت الاركام الكبيرة ومفيش فيدة بردو بيظر تحت ارقام زى منا عاوز بس بيجى فى الايتم سبس كتير بردو + لما بيجي جرمنت يجى معها سبس بردو ولما افتح صندوق ويطردنى فى التون يجى سبس بردو اعمل اية ؟؟

عدل على الرقم دا باللى انت عاوزه
client.Player.ConquerPoints += 100000;

saeed
2019-07-12, 06:14 PM
عدل على الرقم دا باللى انت عاوزه
client.player.conquerpoints += 100000;

وعلى فكرة اللى قاله حازم صح بس دا تكملة للى قاله حازم مش أكتر ...
وياريت ترد تقولنا المشكلة اتحلت ولا لا

Tefa
2019-07-12, 06:16 PM
طيب لما بفتح الصنديق كلها بتدينى سبس عالى انا عاوز السبس يكون صعب علشان السرفر انا عملو صعب يريت يكون من 100 سبس الى 2000 سبس الى يجيى فى الصنديق كلها اعمل اية علشان يحصل كدة ؟

ف تريجر بوكس حط الكود ده بدل الي عندك و متنساش تعدل علي الريورد

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using Mr_Panda.Client;
using Mr_Panda.Interfaces;
using Mr_Panda.Network.GamePackets;


namespace Mr_Panda.Game
{
public class TreasureBox
{
static Map Map = Kernel.Maps[3820];
const int MAX_BOXES = 20, ITEMS = 1000, CPSMoney = 1001, LEVEL = 1002, DEATH = 1003, STUN = 1004, KICK = 1005;
static int CurrentBoxes = 0;
static Mr_Panda.Interfaces.INpc npc;
static ushort tempX, tempY = 0;
static uint BaseId = 101002;
static List<Point> VaildOnes = new List<Point>();
public static bool OnGoing;

public static void Generate()
{
try
{
if (CurrentBoxes < MAX_BOXES)
{
if (Map == null)
{
Map = Kernel.Maps[3820];
return;
}
tempX = (ushort)Kernel.Random.Next(0, Map.Floor.Bounds.Width);
tempY = (ushort)Kernel.Random.Next(0, Map.Floor.Bounds.Height);
if (Map.Floor[tempX, tempY, MapObjectType.Item, null])
{
npc = new Network.GamePackets.NpcSpawn();
npc.UID = BaseId++;
npc.Mesh = (ushort)Kernel.RandFromGivingNums(9307, 9277, 9267, 9287, 9287, 9287 ,9257, 9257, 9257, 9257, 9257, 9257, 9307, 9307, 9307, 9307, 9307, 9277, 9267, 9267, 9267, 9277, 9277, 9277, 9277, 9277);
npc.Type = Enums.NpcType.Talker;
npc.MapID = Map.ID;
npc.X = tempX;
npc.Y = tempY;

Map.AddNpc(npc);
CurrentBoxes++;
Kernel.SendWorldMessage(new Message("A new treasure box appeared!", Color.Red, 2012));
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}

}

public static void Reward(GameState client)
{
client.Player.CurrentTreasureBoxes++;
var orders = Kernel.GamePool.Values.OrderByDescending(x => x.Player.CurrentTreasureBoxes).ToArray();
for (int i = 0; i < orders.Length + 1; i++)
{
if (i == 11) break;
Message msg;

if (i == 0)
{
msg = new Message("", System.Drawing.Color.Red, Message.FirstRightCorner);
}
else
{
if (orders[i - 1].Player.CurrentTreasureBoxes == 0) continue;
msg = new Message("No " + i.ToString() + "- " + orders[i - 1].Player.Name + " Opened " + orders[i - 1].Player.CurrentTreasureBoxes.ToString() + " Boxes!", System.Drawing.Color.Red, Message.ContinueRightCorner);
}

Kernel.SendWorldMessage(msg, Program.GamePool, (ushort)3820);
}

int prize = 0;

if (client.Player.Level <= 135)
prize = Kernel.RandFromGivingNums(ITEMS, CPSMoney, KICK, ITEMS, CPSMoney, ITEMS, CPSMoney, DEATH);
else prize = Kernel.RandFromGivingNums(ITEMS, CPSMoney, KICK, ITEMS, CPSMoney, ITEMS, CPSMoney, DEATH);
//#warning TREASURE BOX PRIZE
switch (prize)
{
case CPSMoney:
{
uint amount = (uint)Kernel.Random.Next(100,2000);
if (amount <= 2000)
{
client.Player.ConquerPoints += amount;
Kernel.SendWorldMessage(new Message(client.Player.Name + " got " + amount.ToString() + " CPs while opening the TreasureBox!", Color.White, Message.Talk));
}
break;
}
case ITEMS:
{
Database.ConquerItemBaseInformation temp;
uint itemid = (uint)Kernel.RandFromGivingNums(188755, 192935, 192775, 187405, 188105, 188705, 188945, 188515, 192825, 200220, 187855, 200475, 187405, 187415, 187425, 3004124, 183325, 183495, 184305, 184315, 184375, 187305, 187315, 181395, 184405, 184365);
client.Inventory.Add(itemid, 0, 1);
Database.ConquerItemInformation.BaseInformations.T ryGetValue(itemid, out temp);
Kernel.SendWorldMessage(new Message(client.Player.Name + " got " + temp.Name + " while opening the TreasureBox!", Color.White, Message.Talk));
break;
}
case KICK:
{
client.Player.Teleport(1002, 338, 345);
Kernel.SendWorldMessage(new Message(client.Player.Name + " got KICKED-OUT! while opening the TreasureBox!", Color.White, Message.Talk));
break;
}
case DEATH:
{
client.Player.Die(client.Player);
Kernel.SendWorldMessage(new Message(client.Player.Name + " got Death! while opening the TreasureBox!", Color.White, Message.Talk));
break;
}
}

CurrentBoxes--;

//client.Entity.TreasuerPoints += 1;
}
}
}

osama
2019-07-12, 06:41 PM
ف تريجر بوكس حط الكود ده بدل الي عندك و متنساش تعدل علي الريورد

using system;
using system.collections.generic;
using system.drawing;
using system.linq;
using system.text;
using system.threading;
using mr_panda.client;
using mr_panda.interfaces;
using mr_panda.network.gamepackets;


namespace mr_panda.game
{
public class treasurebox
{
static map map = kernel.maps[3820];
const int max_boxes = 20, items = 1000, cpsmoney = 1001, level = 1002, death = 1003, stun = 1004, kick = 1005;
static int currentboxes = 0;
static mr_panda.interfaces.inpc npc;
static ushort tempx, tempy = 0;
static uint baseid = 101002;
static list<point> vaildones = new list<point>();
public static bool ongoing;

public static void generate()
{
try
{
if (currentboxes < max_boxes)
{
if (map == null)
{
map = kernel.maps[3820];
return;
}
tempx = (ushort)kernel.random.next(0, map.floor.bounds.width);
tempy = (ushort)kernel.random.next(0, map.floor.bounds.height);
if (map.floor[tempx, tempy, mapobjecttype.item, null])
{
npc = new network.gamepackets.npcspawn();
npc.uid = baseid++;
npc.mesh = (ushort)kernel.randfromgivingnums(9307, 9277, 9267, 9287, 9287, 9287 ,9257, 9257, 9257, 9257, 9257, 9257, 9307, 9307, 9307, 9307, 9307, 9277, 9267, 9267, 9267, 9277, 9277, 9277, 9277, 9277);
npc.type = enums.npctype.talker;
npc.mapid = map.id;
npc.x = tempx;
npc.y = tempy;

map.addnpc(npc);
currentboxes++;
kernel.sendworldmessage(new message("a new treasure box appeared!", color.red, 2012));
}
}
}
catch (exception e)
{
console.writeline(e.tostring());
}

}

public static void reward(gamestate client)
{
client.player.currenttreasureboxes++;
var orders = kernel.gamepool.values.orderbydescending(x => x.player.currenttreasureboxes).toarray();
for (int i = 0; i < orders.length + 1; i++)
{
if (i == 11) break;
message msg;

if (i == 0)
{
msg = new message("", system.drawing.color.red, message.firstrightcorner);
}
else
{
if (orders[i - 1].player.currenttreasureboxes == 0) continue;
msg = new message("no " + i.tostring() + "- " + orders[i - 1].player.name + " opened " + orders[i - 1].player.currenttreasureboxes.tostring() + " boxes!", system.drawing.color.red, message.continuerightcorner);
}

kernel.sendworldmessage(msg, program.gamepool, (ushort)3820);
}

int prize = 0;

if (client.player.level <= 135)
prize = kernel.randfromgivingnums(items, cpsmoney, kick, items, cpsmoney, items, cpsmoney, death);
else prize = kernel.randfromgivingnums(items, cpsmoney, kick, items, cpsmoney, items, cpsmoney, death);
//#warning treasure box prize
switch (prize)
{
case cpsmoney:
{
uint amount = (uint)kernel.random.next(100,2000);
if (amount <= 2000)
{
client.player.conquerpoints += amount;
kernel.sendworldmessage(new message(client.player.name + " got " + amount.tostring() + " cps while opening the treasurebox!", color.white, message.talk));
}
break;
}
case items:
{
database.conqueritembaseinformation temp;
uint itemid = (uint)kernel.randfromgivingnums(188755, 192935, 192775, 187405, 188105, 188705, 188945, 188515, 192825, 200220, 187855, 200475, 187405, 187415, 187425, 3004124, 183325, 183495, 184305, 184315, 184375, 187305, 187315, 181395, 184405, 184365);
client.inventory.add(itemid, 0, 1);
database.conqueriteminformation.baseinformations.t rygetvalue(itemid, out temp);
kernel.sendworldmessage(new message(client.player.name + " got " + temp.name + " while opening the treasurebox!", color.white, message.talk));
break;
}
case kick:
{
client.player.teleport(1002, 338, 345);
kernel.sendworldmessage(new message(client.player.name + " got kicked-out! While opening the treasurebox!", color.white, message.talk));
break;
}
case death:
{
client.player.die(client.player);
kernel.sendworldmessage(new message(client.player.name + " got death! While opening the treasurebox!", color.white, message.talk));
break;
}
}

currentboxes--;

//client.entity.treasuerpoints += 1;
}
}
}


تم حل المشكلة شكرا جدا على مجهودكو

youssefabdelmanam
2019-07-12, 08:19 PM
الله ينور جهز موضوعاتك عشان قربنا
وياريت تشارك المنتدى مع الناس للافاده
انا شغال بنشر المنتدي بين جميع الناس عشان كلو يستفاد :D
وانشاء الله المنتدي دا يكون من افضل المنتديات الي اتعملت :emoji9:
سؤال هو هيتم اعلان بداء المسابقة لما عدد الاعضاء يوصل 400

محمد ياسر
2019-07-12, 08:33 PM
ايو المسابقه اتبداء لما يوصل عدد الاعضاء ل400
واتستمر 15 يوم

MHMOUDr6
2019-07-12, 11:16 PM
جممميل عاش ي غالي