قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة[ قسم متخصص فى شروحات و البرامج في عمل السيرفرات الخاصة ] [ يرجى عدم وضع الأسئلة والاستفسارات في هذا القسم ]
--------------------------------------------- Black Shield -----------------------------------------------
---------------------------------------- [Silk Per Level System] -----------------------------------------
----------------------------------------------- S T A R T ------------------------------------------------
DECLARE @charname varchar(max) = ( select charname16 from sro_vt_shard.._char where charid = @charid )
DECLARE @jid int = (select UserJID from SRO_VT_SHARD.._User where CharID = @CharID)
if (@eventid = 22 and not exists ( select * from SRO_VT_SHARDLOG.._silkperlvl where charid = @charid and [level]=@data2 ))
BEGIN
update SRO_VT_ACCOUNT..SK_Silk set silk_own = silk_own +@Data2 where JID = @jid
insert into SRO_VT_SHARDLOG.._silkperLvl values (@CharID,@data2,getdate())
if exists ( select * from SRO_VT_SHARDLOG..silkperlvl_anticheat where jid=@jid and [level]=@data2 )
BEGIN
update SRO_VT_ACCOUNT..SK_Silk set silk_own = silk_own-@Data2 where JID = @jid
END
insert into SRO_VT_SHARDLOG..SilkPerLvl_AntiCheat values (@charname,@jid,@data2)
END
------------------------------------------------- E n d --------------------------------------------------
Gold Per Level System
هانعمل Create للـ table ده
كود PHP:
USE [SRO_VT_SHARDLOG]
كود PHP:
GO
/****** Object: Table [dbo].[_GoldPerLvl] Script Date: 14/03/2016 06:42:10 م ******/
SET ANSI_NULLS ON
GO
--------------------------------------------- Black Shield -----------------------------------------------
---------------------------------------- [Gold Per Level System] -----------------------------------------
----------------------------------------------- S T A R T ------------------------------------------------
DECLARE @charname varchar(max) = ( select charname16 from sro_vt_shard.._char where charid = @charid )
DECLARE @jid int = (select UserJID from SRO_VT_SHARD.._User where CharID = @CharID)
if (@eventid = 22 and not exists ( select * from SRO_VT_SHARDLOG.._goldperlvl where charid = @charid and [level]=@data2 ))
BEGIN
update SRO_VT_SHARD.._Char set RemainGold = RemainGold+@Data2*100000 where charid = @CharID
insert into SRO_VT_SHARDLOG.._goldperLvl values (@CharID,@data2,getdate())
END
------------------------------------------------- E n d --------------------------------------------------
## FQA ##
اقتباس:
المشاركة الأصلية كتبت بواسطة gameman
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
هي نسبة الsilk & gold اغيرها منين ؟
اقتباس:
المشاركة الأصلية كتبت بواسطة Black Shield
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
بالنسبه للـSilk هي معادلة تقدر تغيرها حسب ما انت عاوز
انا عاملها تضيف قيمة الـ Level الي انت فيه يعني دلوقتي انت Level 1 معاك 0 Silk
بقيت Level 2 الـSystem هايضيف القيمة الي هي 2 + قيمة الـSilk الي هي 0 = 2 سيلك
بقيت Level 3 الـSystem هايضيف القيمة الي هي 3 + قيمة الـSilk الي هي 2 = 5 سيلك
ممكن تغيرها حسب ما انت عاوز و ممكن تعمل جدول بالقيم الي انت عاوزها لكل Level
كود:
update SRO_VT_ACCOUNT..SK_Silk set silk_own = silk_own +@Data2 where JID = @jid
بالنسبة للـGold
كود:
update SRO_VT_SHARD.._Char set RemainGold = RemainGold+@Data2*100000 where charid = @CharID
نفس الفكرة بس انا ضايف في المعادلة انه يضرب قيمة الـ Level في 10000
لو عندك فكرة و عاوز تطبقها قول لي و ان شاء الله نعملها
لو عــجـبــكـمـ الــمـوضــوع أرجــو الـتــقــيـم
جميعـ الحقوقـ محفوظه
All Rights Reserved®2011~2016
التعديل الأخير تم بواسطة Black Shield ; 16-03-2016 الساعة 03:41 PM
تمام ، الله ينور :)
حبيت اشارك بنسخة متطورة شوية من الكويري
استخمت الـ JOIN عشان يلم الموضوع كله في select واحد و يزود الـ performance
و ضفت جزء الـ anticheat مع اول if ، كدا افضل من انك تضيف السيلك و تمسحه بعدين
استخدمت procedure CGI_WebPurchaseSilk لانه بينزل السيلك من غير متحتاج teleport
كود PHP:
---------------------------------------- [Silk Per Level System] ----------------------------------------- ----------------------------------------------- S T A R T ------------------------------------------------ DECLARE @charname varchar(max), @jid INT, @UserName varchar(max) SELECT @charname=C.CharName16,@jid=U.UserJID,@UserName=TU.StrUserID FROM SRO_VT_SHARD.._Char C INNER JOIN SRO_VT_SHARD.._User U ON C.CharID=U.CharID INNER JOIN SRO_VT_ACCOUNT..TB_User TU ON U.UserJID=TU.JID WHERE C.CharID=@CharID if ((@eventid = 22) and (not exists ( select * from SRO_VT_SHARDLOG.._silkperlvl where charid = @charid and [level]=@data2 )) and (not exists ( select * from SRO_VT_SHARDLOG..silkperlvl_anticheat where jid=@jid and [level]=@data2 ))) BEGIN EXEC SRO_VT_ACCOUNT.CGI.CGI_WebPurchaseSilk null,@UserName,null,@Data2,null insert into SRO_VT_SHARDLOG.._silkperLvl values (@CharID,@data2,getdate()) insert into SRO_VT_SHARDLOG..SilkPerLvl_AntiCheat values (@charname,@jid,@data2) END ------------------------------------------------- E n d --------------------------------------------------
في الكويري ده لميت الموضوع في Select واحد
و ضفت الجولد بـ += بدل remaingold+@data ، هي مش فارقة كتير. بس اريحلك و انت بتكتب الكويري و اوضح و انت بتقراه
كود PHP:
---------------------------------------- [Gold Per Level System] ----------------------------------------- ----------------------------------------------- S T A R T ------------------------------------------------ DECLARE @charname varchar(max), @jid int SELECT @charname=C.CharName16,@jid=U.UserJID FROM SRO_VT_SHARD.._Char C INNER JOIN SRO_VT_SHARD.._User U ON C.CharID=U.CharID WHERE C.CharID=@CharID if (@eventid = 22 and not exists ( select * from SRO_VT_SHARDLOG.._goldperlvl where charid = @charid and [level]=@data2 )) BEGIN update SRO_VT_SHARD.._Char set RemainGold +=(@Data2*100000) where charid = @CharID insert into SRO_VT_SHARDLOG.._goldperLvl values (@CharID,@data2,getdate()) END ------------------------------------------------- E n d --------------------------------------------------
تحياتي و شكرا جزيلا علي الموضوع الجميل :)
علي فكرة : انا كنت مشاركك في اكونت phbot قبل كدا زمااااان بس للأسف رقمك طار من عندي لما غيرت الموبايل :/
المشاركة الأصلية كتبت بواسطة Ahmed Seliem
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
تمام ، الله ينور :)
حبيت اشارك بنسخة متطورة شوية من الكويري
استخمت الـ JOIN عشان يلم الموضوع كله في select واحد و يزود الـ performance
و ضفت جزء الـ anticheat مع اول if ، كدا افضل من انك تضيف السيلك و تمسحه بعدين
استخدمت procedure CGI_WebPurchaseSilk لانه بينزل السيلك من غير متحتاج teleport
كود PHP:
---------------------------------------- [Silk Per Level System] -----------------------------------------
----------------------------------------------- S T A R T ------------------------------------------------
DECLARE @charname varchar(max), @jid INT, @UserName varchar(max)
SELECT @charname=C.CharName16,@jid=U.UserJID,@UserName=TU.StrUserID FROM SRO_VT_SHARD.._Char C INNER JOIN SRO_VT_SHARD.._User U ON C.CharID=U.CharID INNER JOIN SRO_VT_ACCOUNT..TB_User TU ON U.UserJID=TU.JID WHERE C.CharID=@CharID
if ((@eventid = 22) and (not exists ( select * from SRO_VT_SHARDLOG.._silkperlvl where charid = @charid and [level]=@data2 )) and (not exists ( select * from SRO_VT_SHARDLOG..silkperlvl_anticheat where jid=@jid and [level]=@data2 )))
BEGIN
EXEC SRO_VT_ACCOUNT.CGI.CGI_WebPurchaseSilk null,@UserName,null,@Data2,null
insert into SRO_VT_SHARDLOG.._silkperLvl values (@CharID,@data2,getdate())
insert into SRO_VT_SHARDLOG..SilkPerLvl_AntiCheat values (@charname,@jid,@data2)
END
------------------------------------------------- E n d --------------------------------------------------
في الكويري ده لميت الموضوع في Select واحد
و ضفت الجولد بـ += بدل remaingold+@data ، هي مش فارقة كتير. بس اريحلك و انت بتكتب الكويري و اوضح و انت بتقراه
كود PHP:
---------------------------------------- [Gold Per Level System] -----------------------------------------
----------------------------------------------- S T A R T ------------------------------------------------
DECLARE @charname varchar(max), @jid int
SELECT @charname=C.CharName16,@jid=U.UserJID FROM SRO_VT_SHARD.._Char C INNER JOIN SRO_VT_SHARD.._User U ON C.CharID=U.CharID WHERE C.CharID=@CharID
if (@eventid = 22 and not exists ( select * from SRO_VT_SHARDLOG.._goldperlvl where charid = @charid and [level]=@data2 ))
BEGIN
update SRO_VT_SHARD.._Char set RemainGold +=(@Data2*100000) where charid = @CharID
insert into SRO_VT_SHARDLOG.._goldperLvl values (@CharID,@data2,getdate())
END
------------------------------------------------- E n d --------------------------------------------------
تحياتي و شكرا جزيلا علي الموضوع الجميل :)
علي فكرة : انا كنت مشاركك في اكونت phbot قبل كدا زمااااان بس للأسف رقمك طار من عندي لما غيرت الموبايل :/
بالنسبة لموضوع الجولد ،، معلومة ليك يعني ،، متخليهوش يضيف الجولد إلا على EventID التليبورت او ال Log off / Log in
ليه بقا ،،
عشان الجولد لو هو عامل بارتي وحصل إيفنت الليفل أب وقت ما البارتي شغال وشغل البروسيدور وزود الجولد ،،
لو هو لم 1 جولد بس كافي انه يرجع قيمة الجولد للي كانت معاه + 1 جولد اللي لمه ،، لأن السرو كلينت بيخزن قيمة الجولد فيه مش بيجيبه اول بأول من الداتا بيز ،، ولو عاوز تجربها ادخل في dbo._Char ونقص او زود الجولد بس الكراكتر يكون مفتوح ومجهزه انه يلم جولد او توقع منه جولد ع الأرض ،، ولاحظ التغيير اللي هيحصل في dbo._Char
المشاركة الأصلية كتبت بواسطة Dev. iLegend
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
بالنسبة لموضوع الجولد ،، معلومة ليك يعني ،، متخليهوش يضيف الجولد إلا على EventID التليبورت او ال Log off / Log in
ليه بقا ،،
عشان الجولد لو هو عامل بارتي وحصل إيفنت الليفل أب وقت ما البارتي شغال وشغل البروسيدور وزود الجولد ،،
لو هو لم 1 جولد بس كافي انه يرجع قيمة الجولد للي كانت معاه + 1 جولد اللي لمه ،، لأن السرو كلينت بيخزن قيمة الجولد فيه مش بيجيبه اول بأول من الداتا بيز ،، ولو عاوز تجربها ادخل في dbo._Char ونقص او زود الجولد بس الكراكتر يكون مفتوح ومجهزه انه يلم جولد او توقع منه جولد ع الأرض ،، ولاحظ التغيير اللي هيحصل في dbo._Char
كلامك صح، او ممكن تعمل بوت يعمل reload للكركتر في مكانه بعد متدي الجولد
ازاي بقي؟ يعمل movetouser xx وراها recalluser xx علي طول
المشاركة الأصلية كتبت بواسطة Dev. iLegend
عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
بالنسبة لموضوع الجولد ،، معلومة ليك يعني ،، متخليهوش يضيف الجولد إلا على EventID التليبورت او ال Log off / Log in
ليه بقا ،،
عشان الجولد لو هو عامل بارتي وحصل إيفنت الليفل أب وقت ما البارتي شغال وشغل البروسيدور وزود الجولد ،،
لو هو لم 1 جولد بس كافي انه يرجع قيمة الجولد للي كانت معاه + 1 جولد اللي لمه ،، لأن السرو كلينت بيخزن قيمة الجولد فيه مش بيجيبه اول بأول من الداتا بيز ،، ولو عاوز تجربها ادخل في dbo._Char ونقص او زود الجولد بس الكراكتر يكون مفتوح ومجهزه انه يلم جولد او توقع منه جولد ع الأرض ،، ولاحظ التغيير اللي هيحصل في dbo._Char