احصائياتى

الردود
3

المشاهدات
156
 
Mawdo3jded
.:: عضو مميز ::.
الإجابات المقدمة: 13

المشاركات
419

+التقييم
0.17

تاريخ التسجيل
Nov 2019

الاقامة
في ارض الله

نظام التشغيل
ادد معرفة

رقم العضوية
2636
2020-10-18, 11:22 AM
المشاركة 1
2020-10-18, 11:22 AM
المشاركة 1
افتراضي تمت الإجابة بخصوص حرب الرانك الي هيه النبتلتي
الان عندي في كلاس اسمو حرب النبتلتي تمام
الحرب ديه مضافة لكن مش شغاله
ودخلت علي كلاس الورد مش موجود فيها المعياد بتاع الحرب؟
دخلت علي كلاس الحرب ده الي داخل الكلاس
//////////////////////////////////////////////
namespace add_m3rfa.game
{
public class nobiltypolewar
{
public const int serf = 0,
// knight = 1,
// baron = 3,
earl = 5,
duke = 7,
prince = 9,
king = 12;

public static sobnpcspawn[] poles = new sobnpcspawn[13];
public static uint[] poleswinners = new uint[13];
public static safedictionary<uint, entity>[] allscores = new safedictionary<uint, entity>[13];

public static datetime warstart;
public static map map;
public static bool iswar = false;
public static bool allpole = false;
private idisposable subscriber;

public nobiltypolewar()
{
map = kernel.maps[1015].makedynamicmap();
subscriber = world.subscribe(work, 1000);

}
public void work(int time)
{
if (iswar)
if (datetime.now > warstart.addminutes(59))
endwar();
if (copra_times.start.nobiltywarpole && !iswar)
startwar();
if (iswar)
{
if (time32.now > scoresendstamp.addseconds(3))
{
scoresendstamp = time32.now;
sendscores();
}
}

if (iswar)
if (datetime.now > warstart.addminutes(59))
{
allpole = true;
foreach (var item in program.values)
{
if (item.map.id == map.id)
{
for (int i = 0; i < poleswinners.length; i++)
{
var winner = poleswinners[i];
if (item.player.uid != winner)
item.player.teleport(1002, 300, 278);
}
}
}
}


}
public static void join(client.gamestate client)
{
if (iswar)
{
var cooord = map.randomcoordinates();
client.player.teleport(map.id, 737, 576);

client.ondisconnect = p =>
{
p.player.teleport(1002, 300, 278);
client.player.pkmode = game.enums.pkmode.pk;
client.send(new data(true) { uid = client.player.uid, id = data.changepkmode, dwparam = (uint)client.player.pkmode });
};
//client.player.ondeath = p =>
//{
// if (p.mapid == map.id)
// {
// var cooordx = map.randomcoordinates();
// p.teleport(map.id, cooordx.item1, cooordx.item2);
// p.bringtolife();
// }
//};
}
}

public static void startwar()
{
try
{
if (iswar)
endwar();
allpole = false;
iswar = true;
warstart = datetime.now;
if (!constants.pkfreemaps.contains(map.id))
constants.pkfreemaps.add(map.id);
poles = new sobnpcspawn[13];
poleswinners = new uint[13];

map.statues.clear();
map.npcs.clear();

start();


summon("king", 730, 584, king);
summon("prince", 730, 563, prince);
summon("duke", 717, 563, duke);
summon("earl", 716, 584, earl);
summon("all", 724, 573, serf);
kernel.sendworldmessage(new message(" nobiltypolewar war began ", color.white, message.center), program.values);
foreach (var client in program.values)
client.messagebox("nobiltypolewar start would you like to join and won claimed the claimed the prize " + serverrates.nobiltypolewar + " cps ?",
p => { p.player.teleport(1002, 342, 272); }, null, 60);


}
catch (exception ex)
{
console.writeline(ex);
program.saveexception(ex);
}
}

public static bool attack(uint addscore, entity entity, sobnpcspawn pole)
{
if (!iswar)
return false;
int _class = (int)entity.nobilityrank;
if (_class >= 13) return false;
var pole = poles[_class];
if (pole != null)
{
if (!allpole)
{
if (pole != pole)
return false;
}
else
{
if (poles[serf] != pole)
return false;
for (int i = 0; i < poleswinners.length; i++)
{
var winner = poleswinners[i];
if (entity.uid != winner)
entity.teleport(1002, 300, 278);
}
}


if (poleswinners[_class] == entity.uid)
return false;

if (addscore > 0)
addscore(addscore, entity, pole);

return true;
}
return false;
}

public static void summon(string name, ushort x, ushort y, int rank)
{

sobnpcspawn base = new sobnpcspawn();
base.uid = map.entityuidcounter2.next;
base.mesh = 8686;
base.type = enums.npctype.stake;
base.sort = 21;
base.showname = true;
base.name = name;
base.hitpoints = base.maxhitpoints = 2000000;
base.mapid = map.id;
base.x = x;
base.y = y;
poles[rank] = base;
if (!map.npcs.containskey(base.uid))
map.npcs.add(base.uid, base);
}

#region score

public static bool firstround = false;
public static time32 scoresendstamp, lastwin;

public static void start()
{
allscores = new safedictionary<uint, entity>[13];
warstart = datetime.now;
firstround = true;
foreach (var c in program.values)
c.player.warscore = 0;
iswar = true;
}

public static void reset(int _class)
{
foreach (var c in program.values.where(p => p.player.nobilityrank == (nobilityrank)_class))
c.player.warscore = 0;
iswar = true;
}

public static void finishround(sobnpcspawn pole, int _class)
{
entity polekeeper;
lastwin = time32.now;
firstround = false;
sortscores(out polekeeper, _class);
if (polekeeper != null)
{
kernel.sendworldmessage(new message("" + polekeeper.name + " has won this round [nobiltypolewar]!", system.drawing.color.red, message.center), program.values);
pole.name = polekeeper.name;
poleswinners[_class] = polekeeper.uid;
}
pole.hitpoints = pole.maxhitpoints;
foreach (var c in program.values)
{
if (c.map.id == map.id)
pole.sendspawn(c);
}
reset(_class);
}

public static void addscore(uint addscore, entity entity, sobnpcspawn pole)
{
if (entity != null)
{
if (pole.hitpoints <= addscore)
pole.hitpoints = 0;
var scores = allscores[(ushort)((int)entity.nobilityrank)];
if (scores == null)
scores = allscores[(ushort)((int)entity.nobilityrank)] = new safedictionary<uint, entity>();

if (!scores.containskey(entity.uid))
scores.add(entity.uid, entity);

entity.warscore += addscore;

if ((int)pole.hitpoints <= 0)
{
finishround(pole, (int)entity.nobilityrank);
return;
}
}
}

public static void sendscores()
{
if (allpole)
{
entity currenttopleader;

var scoremessages= sortscores(out currenttopleader, 0);
for (int c = 0; c < scoremessages.length; c++)
{
message msg = new message(scoremessages[c], system.drawing.color.red, c == 0 ? Message.firstrightcorner : Message.continuerightcorner);
kernel.sendworldmessage(msg, program.values, map.id);
}
return;
}
for (int i = 0; i < allscores.length; i++)
{
var scores = allscores[i];

if (scores == null)
continue;
if (scores.count == 0)
continue;

entity currenttopleader;

var scoremessages = sortscores(out currenttopleader, i);
if (scoremessages == null)
continue;
for (int c = 0; c < scoremessages.length; c++)
{
message msg = new message(scoremessages[c], system.drawing.color.red, c == 0 ? Message.firstrightcorner : Message.continuerightcorner);
foreach (client.gamestate client in program.values)
{
if (client != null)
{
if (client.map.id == map.id)
{
if (client.player.nobilityrank == (nobilityrank)i)
client.send(msg);
}
}
}
}
}
}

private static string[] sortscores(out entity winner, int i)
{
winner = null;
list<string> ret = new list<string>();
int place = 0;

var scores = allscores[i];
if (scores == null) return new string[0];
foreach (var e in scores.values.orderbydescending((p) => p.warscore))
{
if (place == 0)
winner = e;
string str = "no " + (place + 1).tostring() + ": " + e.name + "(" + e.warscore + ")";
ret.add(str);
place++;
if (place == 4)
break;
}

return ret.toarray();
}
#endregion

public static void endwar()
{
kernel.sendworldmessage(new message(" nobiltypole war has ended ", system.drawing.color.red, message.center), program.values);
iswar = false;
map.npcs.clear();
foreach (var client in program.values)
if (client.player.mapid == map.id)
client.player.teleport(1002, 309, 192);
}
public static void getreward(gamestate c, uint cps)
{
for (int i = 0; i < poleswinners.length; i++)
{
var winner = poleswinners[i];


if (c.player.uid == winner)
{
uint cpss = 0;
if (i == 0)
cpss = cps;
else
cpss += cps / 2;

c.player.conquerpoints += serverrates.nobiltypolewar;
c.player.onlinepoints += 30;
// c.player.boundcps += serverrates.bigbtops;
c.player.addtopstatus(update.flags3.conuqersuperye llow, 3, datetime.now.addhours(23));
// c.player.addtopstatus(update.flags3.goldbricksuper , 3, datetime.now.addhours(23));
poleswinners[i] = 0;
add_m3rfa.kernel.sendworldmessage(new message("congratulations " + c.player.name + " the winner nobiltypolewar prize [" + serverrates.nobiltypolewar + "] conquerpoints & [" + serverrates.bigbtops + "] cpsbound & [30] onlinepoints ", system.drawing.color.white, message.center), program.values);
//program.addwarlog("nobiltypolewar", cps.tostring(), c.player.name);
}
}
}

internal static void end()
{
throw new notimplementedexception();
}
}
}
///////////////////////////////////
وده المفرود انو معاد الحرب بس ازي مش موجود في الوراد ولو عاوز اضيف في الورد اضيف اي ؟
+ الحرب مش شغاله عاوز اعدل علي المعاد اخليه كل ساعه مثل
/////////////////////////////////////////
public void work(int time)
{
if (iswar)
if (datetime.now > warstart.addminutes(59))
endwar();
if (copra_times.start.nobiltywarpole && !iswar)
startwar();
if (iswar)
{
if (time32.now > scoresendstamp.addseconds(3))
{
scoresendstamp = time32.now;
sendscores();
}
}

if (iswar)
if (datetime.now > warstart.addminutes(59))
{
allpole = true;
foreach (var item in program.values)
{
if (item.map.id == map.id)
{
for (int i = 0; i < poleswinners.length; i++)
{
var winner = poleswinners[i];
if (item.player.uid != winner)
item.player.teleport(1002, 300, 278);
}
}
}
}


}
//////////////////////////
ممكن تقلولي يا شباب ايه المشكله ؟ ضفت الكلاس وضفت الحرب ؟ ايه المشكله الحرب مشتغلت ليه ولهاش اضافة في الورد ؟ ولو عاوز اغير معدها ؟


أفضل جواب - كتبه Lucifer
انا مقرتش الكود كله اصلا بس انت مقولتش مش شغاله ازاي؟
مش بيجي رسالة بالحرب يعني؟
دا علشان مش متضافه ف world وحلها انك تضيفها وتظبط ميعادها زي ميعاد الانبسي
قديم 2020-10-18, 03:06 PM
المشاركة 2
Lucifer
.:: مشرف اقسام كونكر ::.
الإجابات المقدمة: 134
  • غير متواجد
افتراضي رد: بخصوص حرب الرانك الي هيه النبتلتي
انا مقرتش الكود كله اصلا بس انت مقولتش مش شغاله ازاي؟
مش بيجي رسالة بالحرب يعني؟
دا علشان مش متضافه ف world وحلها انك تضيفها وتظبط ميعادها زي ميعاد الانبسي

قديم 2020-10-18, 03:20 PM
المشاركة 3
ElSaher
.:: مشرف اقسام كونكر ::.
الإجابات المقدمة: 509
  • غير متواجد
افتراضي رد: بخصوص حرب الرانك الي هيه النبتلتي
اعمل زي ما قلق احمد ولو مش اتحلت كلمني فيس بوك وهحلهالك

قديم 2020-10-18, 04:11 PM
المشاركة 4
Mawdo3jded
.:: عضو مميز ::.
الإجابات المقدمة: 13
  • غير متواجد
افتراضي رد: بخصوص حرب الرانك الي هيه النبتلتي
تمام اشتغلت لما مسحت حروب علشان كان فيه حروب كثيره في السورس ف الرسايل كانت بتغطي علي بعض ههه شكر يا رجالة


العلامات المرجعية



الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

الانتقال السريع

المواضيع المتشابهه للموضوع: بخصوص حرب الرانك الي هيه النبتلتي
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مشكلة في الرانك الكنج الاول وباقي الاسماء مش ظاهره Mawdo3jded مشكلات السيرفيرات كونكر الشخصيه 2 2020-10-01 06:12 PM
مشكلة في الرانك يا رجاله ahmedfathy مشكلات السيرفيرات كونكر الشخصيه 2 2020-04-05 03:34 AM
لو تكرمتم اى شخص عندى ف الجيم بيفتح الرانك الاكونت يهنج megokarika مشكلات السيرفيرات كونكر الشخصيه 6 2020-02-20 02:58 PM
حل مشكلة الرانك osama مشكلات السيرفيرات كونكر الشخصيه 19 2019-07-21 01:41 PM


الساعة الآن 12:26 AM