قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة[ قسم متخصص فى شروحات و البرامج في عمل السيرفرات الخاصة ] [ يرجى عدم وضع الأسئلة والاستفسارات في هذا القسم ]
--------------------------------------------- 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 علي طول