البقاء مسجل دائمآ
الإعلانات
قديم 03-06-2013, 07:45 PM   #1

StayAlive-Online
عضو مجتهد



الصورة الرمزية StayAlive-Online


• الانـتـسـاب » Dec 2012
• رقـم العـضـويـة » 107657
• المشـــاركـات » 122
• الـدولـة »
• الـهـوايـة »
• اسـم الـسـيـرفـر » No Server
• الـجـنـس » Male
• نقـاط التقييم » 46
StayAlive-Online صـاعـد

StayAlive-Online غير متواجد حالياً



(30) لاضافه الاسكرول الخاصه بتنزيل 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 بيكون فيه خانه مكتوب فيها رقم الاى دى الخاص بالكاركتر اللى ضارب الاسكرول

طب انت بتتكلم كتير و فى الاخر مقولتش حنعمل ايه

بصوا من الاخر

انت حتشوف اى ايتم سكرول عندك مش متستخدمها فى الجيم عندك مثلا عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]

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

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

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

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

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

لا حاسب لسه منتهاش

حتروح على البروسيديور بتاع _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 
نتمنى نشوفكم على خير ان شاء الله




رد مع اقتباس
إعلانات google

 


يتصفح الموضوع حالياً : 1 (0 عضو و 1 زائر)
 

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى الردود آخر مشاركة
ازاى اقدر اعمل reset لل skill point بتاعتى و stat point Ahmedovicz قـسـم الاسـئـلـه و الاسـتـفـسـارات حـول الـلـعـبـة 0 16-03-2020 10:28 PM
لو سمحتوا ممكن مساعده انا عايز احلي ال Max Stat Skill Point 480 saksak قسم المواضيع المكررة و المخالفة 1 09-06-2016 08:03 PM
Skill/Stat Point Reset Scroll Deletion omara2007 أخـبـار سـيـلك رود أون لايـن 33 13-02-2013 08:06 AM
عاوز اشترى اى حاجة تعلى بس skill point يا ترا (preimuim-ticket skill point ) ولا اية TeMoN1 قسم المواضيع المكررة و المخالفة 18 18-08-2010 10:07 PM


الساعة الآن 04:13 AM.