الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   لاضافه الاسكرول الخاصه بتنزيل stat point & Skill Point (https://silkroad4arab.com/vb/showthread.php?t=506732)

StayAlive-Online 03-06-2013 07:45 PM

لاضافه الاسكرول الخاصه بتنزيل stat point & Skill Point
 
السلام عليكم و رحمة الله و بركاته

احنا شوفنا مواضيع كتير فى اكتر من منتدى عن الموضوع ده و الفكرة ان الراجل اللى كتب الموضوع ده مشرحش ازاى ممكن تنفذوا بالتفصيل

ركزوا معايا شويه

فكرة الموضوع ده انو بيعتمد على جدول اسمو dbo._timedjop
الجدول دة بيتسجل فيه اى حاجة الكاركتر بيعملها فى اللعبه بيكون ليها وقت محدد
مثلا
speed drug , premium , و مجموعه تانيه من الاسكرولات

و الموضوع كان عبارة عن اضافه ايتم جديد و فيه سطور لازم تتحط فى Refskill
و اعتقد ان فى ناس كتير جدا شبهى مش بتعرف تتعامل مع الجدول دة بالاخص لان ملفاتو اللى فى الميديا متشفرة و ناس كتير و انا منها مش بنعرف نتعامل مع الملفات المتشفرة دى

ركزوا شويه

البروسيديو اللى موجود فى الموضوع بدايته مكتوب فيها

if(@JobID= '33801')
اللى يهمنا هنا و باين جدا الرقم اللى مكتوب بالازق و الكلمة اللى مكتوبه بالبنى

ايه هما

الكلمة البنى هى خانه موجودة فى جدول Timedjop
بيتكتب فيها رقم زى الرقم اللى مكتوب بالازرق دة

طب ايه هو الرقم الازرق ده

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


طيب دلوقتى فهمنا دوول ايه

طب حنعمل ايه بعد كدة ؟

الجمله بيقولك ان لما يكون فى الخانه jopid مكتوب فيها الرقم 33801
نفذ الامر اللى تحتها و اللى هو
كود PHP:

begin
                        
declare @TotalSP int
                        
declare @TotalSPMastery int
                        SELECT 
@TotalSP SUM(_RefSkill.ReqLearn_SPFROM _RefSkill_CharSkill WHERE _RefSkill.ID=_CharSkill.SkillID AND _CharSkill.CharID=@CharID AND _RefSkill.ReqCommon_MasteryLevel1 <= '120'
                        
SELECT @TotalSPMastery SUM(_RefLevel.Exp_MFROM _CharSkillMastery_RefLevel WHERE _RefLevel.Lvl=_CharSkillMastery.Level AND _CharSkillMastery.CharID=@CharID AND _CharSkillMastery.Level <= '120'
                        
UPDATE _Char SET RemainSkillPoint=RemainSkillPoint+@TotalSP+@TotalSPMastery+200000 WHERE CharID=@CharID
                        DELETE _CharSkill FROM _RefSkill
_CharSkill WHERE _RefSkill.ID=_CharSkill.SkillID AND _CharSkill.CharID=@CharID AND _RefSkill.ReqCommon_MasteryLevel1 <= '120' AND _RefSkill.ID NOT IN (1,70,40,2,8421,9354,9355,11162,9944,8419,8420,11526,10625)
                        
UPDATE _CharSkillMastery SET Level='0' WHERE CharID=@CharID AND Level <= '120'
                        
return -3
                end 

الامر دة عبارة عن ايه ؟

انو حينفذ استعلام ( query ) فى قواعد البيانات حينفذ فيه تنزيل كل الاسكيلات
اللى عند الشخص اللى ضرب الاسكرول دى

ازاى ؟

متنساش ان جدول ال timedjop بيكون فيه خانه مكتوب فيها رقم الاى دى الخاص بالكاركتر اللى ضارب الاسكرول

طب انت بتتكلم كتير و فى الاخر مقولتش حنعمل ايه http://www.stayalive-online.com/vbl2...lies/smile.gif

بصوا من الاخر

انت حتشوف اى ايتم سكرول عندك مش متستخدمها فى الجيم عندك مثلا http://www.rev6.com/img/item/etc/e041225_candy_red.png

و دة الكود بتاعها فى refobjcommon
ITEM_ETC_E041225_CANDY_RED

حتجيب الاى دى بتاعها اللى موجود فى Refobjitem و تمشى فى السطر بتاعو لغايه ما تلاقى اسم الاسكلايه اللى بتشتغل لما بتضرب الاسكرول دى

و تجرى على جدول refskill و تدور على رقم الاى دى الخاص بالاسكلايه دى

و تحطو مكان الرقم اللى مكتوب باللون الازرق

بس كدة انتهى الموضوع ؟

لا حاسب لسه منتهاش http://www.stayalive-online.com/vbl2...lies/smile.gif

حتروح على البروسيديور بتاع _Addtimedjop

حتيجى فى اخرو حتلاقى الجمله دى
كود PHP:

set @NewJobID = @@identity
    
if (@@error <> or @@rowcount 0)
        return -
3
    
return @NewJobID 

و حتروح واخد البروسيديور اللى فى الموضوع و تحطو فوق الجمله دى على طول

مش تحتها زى ما ناس كتير كانت بتعمل

علشان لو حتيطوا تحتها : الامر مش حيتنفذ


و فى الاخر حيكون شكل البروسيديور بتاع Addtimedjop شبه دة و هو دة اللى عندى فى السيرفر بتاعى
كود PHP:

USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_AddTimedJob]    Script Date: 06/03/2013 08:15:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO




ALTER   procedure 
[dbo].[_AddTimedJob]
@
CharID            int,
@
Category        tinyint,
@
JobID            int,
@
TimeToKeep    int,
@
Data1            int,
@
Data2            int,
--
##begin due to develop composite item
@Data3            int,
@
Data4            int,
@
Data5            int,
@
Data6            int,
@
Data7            int,
@
Data8            int,
@
Serial64        bigint,
@
JID            int
--##end due to develop composite item
as
    if (
not exists (select CharID from _Char with (nolockwhere CharID = @CharID))
        return -
1
    
if (@TimeToKeep <= 0)
        return -
2
    
declare @NewJobID int
    set 
@NewJobID 0
    
--##begin due to develop composite item
    
insert into _TimedJob(CharID,Category,JobID,TimeToKeep,Data1,Data2,Data3,Data4,Data5,Data6,Data7,Data8,Serial64,JID)
    
values(@CharID, @Category, @JobID, @TimeToKeep, @Data1, @Data2, @Data3, @Data4, @Data5, @Data6, @Data7, @Data8, @Serial64, @JID)
    --
##end due to develop composite item
        
if(@JobID'3526')
        
begin
            
declare @TotalSP int
            
declare @TotalSPMastery int
            SELECT 
@TotalSP SUM(_RefSkill.ReqLearn_SPFROM _RefSkill_CharSkill WHERE _RefSkill.ID=_CharSkill.SkillID AND _CharSkill.CharID=@CharID AND _RefSkill.ReqCommon_MasteryLevel1 <= '130'
            
SELECT @TotalSPMastery SUM(_RefLevel.Exp_MFROM _CharSkillMastery_RefLevel WHERE _RefLevel.Lvl=_CharSkillMastery.Level AND _CharSkillMastery.CharID=@CharID AND _CharSkillMastery.Level <= '130'
            
UPDATE _Char SET RemainSkillPoint=RemainSkillPoint+@TotalSP+@TotalSPMastery+200000 WHERE CharID=@CharID
            DELETE _CharSkill FROM _RefSkill
_CharSkill WHERE _RefSkill.ID=_CharSkill.SkillID AND _CharSkill.CharID=@CharID AND _RefSkill.ReqCommon_MasteryLevel1 <= '130' AND _RefSkill.ID NOT IN (1,70,40,2,8421,9354,9355,11162,9944,8419,8420,11526,10625)
            
UPDATE _CharSkillMastery SET Level='0' WHERE CharID=@CharID AND Level <= '130'
            
return -3
         END
    
if(@JobID '3527')
        
begin
            
declare @Strength int
            
declare @Intellect int
            
declare @MaxLevel int
            
declare @RemainStatPoint int
            select 
@MaxLevel MaxLevel from _Char where CharID=@CharID
            set 
@RemainStatPoint = (@MaxLevel*3)-3
            set 
@MaxLevel = @MaxLevel+19
            UPDATE _Char SET Strength
=@MaxLevelIntellect=@MaxLevelRemainStatPoint=@RemainStatPoint WHERE CharID=@CharID
            
return -3
        end
    set 
@NewJobID = @@identity
    
if (@@error <> or @@rowcount 0)
        return -
3
    
return @NewJobID 

انا هنا ضايف الاكسرول بتاع RESET STATE & RESET SKILLS

اعتقد انا كدة فهمتكوا الموضوع بكل بساطة

متنسوناش بس

و دة الجزء الخاص لتنزيل الاسكيل
كود PHP:

if(@JobID'3526')
        
begin
            
declare @TotalSP int
            
declare @TotalSPMastery int
            SELECT 
@TotalSP SUM(_RefSkill.ReqLearn_SPFROM _RefSkill_CharSkill WHERE _RefSkill.ID=_CharSkill.SkillID AND _CharSkill.CharID=@CharID AND _RefSkill.ReqCommon_MasteryLevel1 <= '130'
            
SELECT @TotalSPMastery SUM(_RefLevel.Exp_MFROM _CharSkillMastery_RefLevel WHERE _RefLevel.Lvl=_CharSkillMastery.Level AND _CharSkillMastery.CharID=@CharID AND _CharSkillMastery.Level <= '130'
            
UPDATE _Char SET RemainSkillPoint=RemainSkillPoint+@TotalSP+@TotalSPMastery+200000 WHERE CharID=@CharID
            DELETE _CharSkill FROM _RefSkill
_CharSkill WHERE _RefSkill.ID=_CharSkill.SkillID AND _CharSkill.CharID=@CharID AND _RefSkill.ReqCommon_MasteryLevel1 <= '130' AND _RefSkill.ID NOT IN (1,70,40,2,8421,9354,9355,11162,9944,8419,8420,11526,10625)
            
UPDATE _CharSkillMastery SET Level='0' WHERE CharID=@CharID AND Level <= '130'
            
return -3
         END 

و دة الجزء الخاص لتنزيل الاستيت بوينت
كود PHP:

if(@JobID '3527')
        
begin
            
declare @Strength int
            
declare @Intellect int
            
declare @MaxLevel int
            
declare @RemainStatPoint int
            select 
@MaxLevel MaxLevel from _Char where CharID=@CharID
            set 
@RemainStatPoint = (@MaxLevel*3)-3
            set 
@MaxLevel = @MaxLevel+19
            UPDATE _Char SET Strength
=@MaxLevelIntellect=@MaxLevelRemainStatPoint=@RemainStatPoint WHERE CharID=@CharID
            
return -3
        end 

نتمنى نشوفكم على خير ان شاء الله

ELjOkeR 03-06-2013 11:38 PM

Approved #

MyRȝturn 04-06-2013 09:29 AM

الله ينور

Mahmoud Rashwan 04-06-2013 09:43 AM

تسلمـ ايدك

Cool_3la_Tool 04-06-2013 12:09 PM

طيب اكتب اسم صاحب الفكرة دى على الاقل احتراما ليه...

StayAlive-Online 04-06-2013 03:17 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة Cool_3la_Tool (المشاركة 4743167)
طيب اكتب اسم صاحب الفكرة دى على الاقل احتراما ليه...

اولا انا معرفهووش

ثانيا انت سايب الكلام كلو و ماسكلى فى النقطه دى

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

بس انا مش حاخود زنب الناس اللى موجودة بزنب الناس دى

nemo20122 04-06-2013 03:29 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة StayAlive-Online (المشاركة 4743301)
اولا انا معرفهووش

ثانيا انت سايب الكلام كلو و ماسكلى فى النقطه دى

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

بس انا مش حاخود زنب الناس اللى موجودة بزنب الناس دى

اولااا جزاك الله خيرااااااا ولا تندم على فعل الخير ابد ان الله يجزى كل واحد على حسب نيته
واستمر فى مساعدة كل محتاج ولا تستمع الى اى احد يمنعك من زاللك :wavetowel2:

™Anas™ 04-06-2013 03:52 PM

طول عمرك معلم والله عاش الشغل
بس على فكره إسم JanganSRO كان أحلى عليك
حبيبي يا أيمن ^_^

StayAlive-Online 04-06-2013 04:06 PM

اقتباس:

المشاركة الأصلية كتبت بواسطة nemo20122 (المشاركة 4743313)
اولااا جزاك الله خيرااااااا ولا تندم على فعل الخير ابد ان الله يجزى كل واحد على حسب نيته
واستمر فى مساعدة كل محتاج ولا تستمع الى اى احد يمنعك من زاللك :wavetowel2:

اقتباس:

المشاركة الأصلية كتبت بواسطة ™Anas™ (المشاركة 4743333)
طول عمرك معلم والله عاش الشغل
بس على فكره إسم JanganSRO كان أحلى عليك
حبيبي يا أيمن ^_^

تسلمو يا شباب
و ان شاء الله قريباً

اسكرول تديلك سيلك
50 , 100 , 500 , 1000 silk

احنا شغالين فيهم و اول ما اخلصهم و اضفهم فى السيرفر عندنا حنزلكم موضوع بيها.

[GM]Tormentor 04-06-2013 05:37 PM

تمام يا معلم تشكر

[GM]Tormentor 04-06-2013 05:38 PM

وياريت بردو لو هنتعبك معانا تعملنا باقى الموضيع

Yui 04-06-2013 06:57 PM

Nice Jop pro

LEGENDROC 15-11-2013 06:45 PM

Nice

Dallin 15-11-2013 08:16 PM

Nice Job
scroll to give skill point ;)
if(@JobID = '59712') -- Skill 1M
BEGIN
declare @MYNEWSKILL varchar(64)
Select @MYNEWSKILL=RemainSkillPoint from _Char where CharID = @CharID
Update _Char Set RemainSkillPoint = RemainSkillPoint+1000000 Where CharID = @CharID
return -3
End

.-Carica-. 28-12-2013 10:54 PM

انا عملت ال كود Ref SKill فى _Addtimedjop
و جربت السكرول فى الجيم مش عملتشى حاجه
انا عملها على سكرول سبيد و السبيد اضربت !!


الساعة الآن 08:04 PM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.