محرك البحث - منظمة قانون التطور - Evolution Law Organization



الرئيسية
نتائج البحث


نتائج البحث عن ردود العضو :salim
عدد النتائج (99) نتيجة
26-04-2021 06:44 مساء
icon ملفات M2Keeper 1.1V | الكاتب :salim |المنتدى: ملفات وكلاينت ماتين2
 
المشاركة الأصلية كتبت بواسطة: LooL
المشاركة الأصلية كتبت بواسطة: salim
لما اعمل باك اب مايبي يضبط الجيم فيه مشكلة 

صور الرسالة الي تطلع


p_19429jr121
26-04-2021 05:47 صباحا
icon ملفات M2Keeper 1.1V | الكاتب :salim |المنتدى: ملفات وكلاينت ماتين2
 لما اعمل باك اب مايبي يضبط الجيم فيه مشكلة 
23-04-2021 06:03 مساء
icon تعديل كويست بيران سيتاو | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: Quest
حط الكويست الاصلي لانه اي مسافة او حرف غلط ما يشتغل



هاهيا الكويست الأصلية
quest dragon_lair_access begin
    state start begin

        function get_settings()
            local settings = {}
            settings.cooldown_time = 3600 -- when can the dragon be killed again?
            settings.group_time = 300 -- how long can players enter after the first one is in the dragon's lair?
            settings.access_item = 30179 -- "Dragon God Symbols"
            settings.dragon_vnum = 2430

            settings.spawn = {}
            settings.spawn.x = 181
            settings.spawn.y = 173

            settings.warp_in = {}
            settings.warp_in.first = {}
            settings.warp_in.last = {}
            settings.warp_in.first.x = 843677
            settings.warp_in.first.y = 1066206
            settings.warp_in.last.x = 844027
            settings.warp_in.last.y = 1067599

            settings.warp_out = {}
            settings.warp_out.first = {}
            settings.warp_out.last = {}
            settings.warp_out.first.x = 9200
            settings.warp_out.first.y = 1206400
            settings.warp_out.last.x = 10900
            settings.warp_out.last.y = 1209100

            settings.room_area = {}
            settings.room_area.first = {}
            settings.room_area.last = {}
            settings.room_area.first.x = 833000
            settings.room_area.first.y = 1062500
            settings.room_area.last.x = 844100
            settings.room_area.last.y = 1071500

            settings.access_item_amount = game.get_event_flag("dragon_lair_amount")
            if (settings.access_item_amount == 0) then
                settings.access_item_amount = 3 -- default value when event flag is not set
            elseif (settings.access_item_amount == -1) then
                settings.access_item_amount = 0 -- no dragon marks needed when event flag -1 (special case)
            end

            return settings
        end

        function get_random_point(area_coordinates)
            return math.random(area_coordinates.first.x, area_coordinates.last.x), math.random(area_coordinates.first.y, area_coordinates.last.y)
        end

        function warp_to_lair()
            local settings = dragon_lair_access.get_settings()
            local x, y = dragon_lair_access.get_random_point(settings.warp_in)
            char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' WARPTOLAIR: x:'.. x ..', y:' .. y)
            pc.warp(x,y)
        end

        function warp_from_lair()
            local settings = dragon_lair_access.get_settings()
            local x, y = dragon_lair_access.get_random_point(settings.warp_out)
            char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' WARPFROMLAIR: x:'.. x ..', y:' .. y)
            pc.warp(x,y)
        end

        function warp_all_from_lair()
            local settings = dragon_lair_access.get_settings()
            warp_all_in_area_to_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y, settings.warp_out.first.x, settings.warp_out.first.y, settings.warp_out.last.x, settings.warp_out.last.y)
            game.set_event_flag("dragon_lair_alive", 0) -- dragon is dead
            char_log(0, 'LAIR', 'WARP ALL')
        end

        function get_time_remaining()
            local settings = dragon_lair_access.get_settings()
            return (game.get_event_flag("dragon_lair_time") + settings.cooldown_time - get_global_time())
        end

        function give_item_to_ghost()
            local settings = dragon_lair_access.get_settings()
            say_title(gameforge.ghost_story._010_sayTitle)
            say(gameforge.dragon_lair_access._130_say)
            say(settings.access_item_amount.."x: ")
            say_item_vnum(settings.access_item)
            local give_item = select(gameforge.dragon_lair_access._140_select, gameforge.locale.cancel)
            if give_item == 1 then
                pc.remove_item(settings.access_item, settings.access_item_amount)
                char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' GIVE ITEM')
                return true
            else
                return false
            end
        end

        function show_time_remaining(time_remaining)
            q.set_title(gameforge.dragon_lair_access._165_sendLetter)
            send_letter(gameforge.dragon_lair_access._165_sendLetter)
            q.set_clock(gameforge.locale.monkey_dungeon.quest_rest_time, time_remaining)
            timer("dragon_lair_timer", time_remaining)
            notice_multiline(string.format(gameforge.dragon_lair_access._170_notice, time_remaining / 60), notice)
            q.start()
        end

        when enter or login begin
            pc.setqf("is_leader", 0)
            q.done()
            if pc.get_map_index() == 208 and not pc.is_gm() then
                dragon_lair_access.warp_from_lair()
            end
        end

        when blue_dragon_timer.server_timer begin
            game.set_event_flag("dragon_lair_timer_used", 0)
            if game.get_event_flag("dragon_lair_alive") == 1 then
                notice_multiline(gameforge.dragon_lair_access._150_notice, notice_all)
            else
                notice_multiline(gameforge.dragon_lair_access._160_notice, notice_all)
            end
            dragon_lair_access.warp_all_from_lair()
        end

        when 30121.chat.gameforge.dragon_lair_access._010_npcChat with pc.get_map_index() != 208 begin
            
            local starttime = game.get_event_flag("dragon_lair_time")
            local current_time = get_global_time()
            local settings = dragon_lair_access.get_settings()
            local time_remaining = dragon_lair_access.get_time_remaining()

            if pc.count_item(settings.access_item) >= settings.access_item_amount then
                if starttime + settings.group_time >= current_time then
                    local password_input;
                    repeat
                        say_title(gameforge.ghost_story._010_sayTitle)
                        say(gameforge.dragon_lair_access._020_say)
                        password_input = tonumber(input())
                        if password_input != game.get_event_flag("dragon_lair_password") then
                            say_title(gameforge.ghost_story._010_sayTitle)
                            say(gameforge.dragon_lair_access._030_say)
                            local again = select(gameforge.dragon_lair_access._040_select, gameforge.locale.cancel)
                            if again == 2 then
                                return
                            end
                        end
                    until password_input == game.get_event_flag("dragon_lair_password")
                    if not dragon_lair_access.give_item_to_ghost() then
                        return
                    end
                    
                    -- right password
                    pc.setqf("time", starttime)
                    dragon_lair_access.warp_to_lair()
                    set_state(kill_dragon)
                elseif time_remaining < 0 and npc.lock() then -- it is the first player talking with the ghost
                    say_title(gameforge.ghost_story._010_sayTitle)
                    say(gameforge.dragon_lair_access._050_say)
                    local abort = select(gameforge.dragon_lair_access._060_select, gameforge.locale.cancel)

                    if abort == 2 then
                        npc.unlock()
                        return
                    end
                    local password_number;
                    repeat
                        say_title(gameforge.ghost_story._010_sayTitle)
                        say(gameforge.dragon_lair_access._070_say)
                        password_number = tonumber(input())
                        local again;
                        if type(password_number) != 'number' then
                            say_title(gameforge.ghost_story._010_sayTitle)
                            say(gameforge.dragon_lair_access._080_say)
                            again = select(gameforge.dragon_lair_access._040_select, gameforge.locale.cancel)
                            if again == 2 then
                                npc.unlock()
                                return
                            end
                        end
                    until type(password_number) == 'number'

                    if not dragon_lair_access.give_item_to_ghost() then
                        npc.unlock()
                        return
                    end
                    
                    if dragon_lair_access.get_time_remaining() > 0 then
                        pc.give_item2(settings.access_item, settings.access_item_amount)
                        npc.unlock()
                        say_title(gameforge.ghost_story._010_sayTitle)
                        say(gameforge.dragon_lair_access._120_say)
                        return
                    end
                    
                    pc.setqf("password", password_number)
                    timer("dragon_lair_warptimer", pc.get_channel_id()*2)
                    
                    npc.unlock()
                else
                    say_title(gameforge.ghost_story._010_sayTitle)
                    say(gameforge.dragon_lair_access._120_say)
                    return
                end

            else
                say_title(gameforge.ghost_story._010_sayTitle)
                say(gameforge.dragon_lair_access._100_say)
                say(gameforge.dragon_lair_access._105_say)
                say(settings.access_item_amount.."x: ")
                say_item_vnum(settings.access_item)
                return
            end
        end

        when 30121.chat.gameforge.dragon_lair_access._110_npcChat with pc.get_map_index() == 208 begin
            say_title(gameforge.ghost_story._010_sayTitle)
            say(gameforge.dragon_lair_access._115_say)
            local warp = select(gameforge.dragon_lair_access._116_select, gameforge.dragon_lair_access._117_select)
            if warp == 1 then
                dragon_lair_access.warp_from_lair() -- so that GMs get ported out, too
                set_state(start)
            end
        end
        
        when dragon_lair_warptimer.timer begin
            local settings = dragon_lair_access.get_settings()
            if dragon_lair_access.get_time_remaining() < 0 then
                local starttime = get_global_time()
                game.set_event_flag("dragon_lair_time", starttime) -- set start time
                char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SET STARTTIME: ' .. starttime)
                pc.setqf("time", starttime)
                
                pc.setqf("is_leader", 1)
                game.set_event_flag("dragon_lair_password", pc.getqf("password")) -- set password
                char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SET PASSWORD: '.. pc.getqf("password"))
                
                server_timer("blue_dragon_timer", settings.cooldown_time)
                
                dragon_lair_access.warp_to_lair()
                set_state(spawn_dragon)
            else
                pc.give_item2(settings.access_item, settings.access_item_amount)
                say_title(gameforge.ghost_story._010_sayTitle)
                say(gameforge.dragon_lair_access._120_say)
            end
            pc.setqf("password", 0)
        end
    end

    state spawn_dragon begin
        when login begin
            local settings = dragon_lair_access.get_settings()
            purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y)
            notice_multiline(string.format(gameforge.dragon_lair_access._090_notice, pc.name), notice_all)
            
            -- spawn all mobs needed
            regen_in_map(208, "locale/_master/map/metin2_map_skipia_dungeon_boss/regen.txt")
            mob.spawn_group(settings.dragon_vnum, settings.spawn.x, settings.spawn.y, 1, 1, 1) -- spawn the dragon
            
            
            game.set_event_flag("dragon_lair_alive", 1) -- dragon is alive
            char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' SPAWN DRAGON')
            
            notice_multiline(string.format(gameforge.dragon_lair_access._145_notice, game.get_event_flag("dragon_lair_password")), notice)
            dragon_lair_access.show_time_remaining(settings.cooldown_time)
            
            set_state(kill_dragon)
        end

        when 30121.chat.gameforge.dragon_lair_access._110_npcChat with pc.get_map_index() == 208 begin
            say_title(gameforge.ghost_story._010_sayTitle)
            say(gameforge.dragon_lair_access._115_say)
            local warp = select(gameforge.dragon_lair_access._116_select, gameforge.dragon_lair_access._117_select)
            if warp == 1 then
                dragon_lair_access.warp_from_lair()
                set_state(start)
            end
        end
        
    end

    state kill_dragon begin

        when dragon_lair_timer.timer begin
            set_state(start)
        end

        when login begin
            if pc.getqf("time") != game.get_event_flag("dragon_lair_time") or dragon_lair_access.get_time_remaining() <= 0 then
                set_state(start)
            else
                dragon_lair_access.show_time_remaining(dragon_lair_access.get_time_remaining())
            end
        end
        
        when button or info begin
            notice_multiline(string.format(gameforge.dragon_lair_access._170_notice, dragon_lair_access.get_time_remaining() / 60), notice)
            local settings = dragon_lair_access.get_settings()
            if (pc.getqf("is_leader") == 1 and settings.cooldown_time-dragon_lair_access.get_time_remaining() < settings.group_time) then
                notice_multiline(string.format(gameforge.dragon_lair_access._145_notice, game.get_event_flag("dragon_lair_password")), notice)
            end
        end

        when 30121.chat.gameforge.dragon_lair_access._110_npcChat with pc.get_map_index() == 208 begin
            say_title(gameforge.ghost_story._010_sayTitle)
            say(gameforge.dragon_lair_access._115_say)
            local warp = select(gameforge.dragon_lair_access._116_select, gameforge.dragon_lair_access._117_select)
            if warp == 1 then
                dragon_lair_access.warp_from_lair()
                set_state(start)
            end
        end

        when 20009.chat.gameforge.dragon_lair_access._190_npcChat or 9012.chat.gameforge.dragon_lair_access._190_npcChat or 30121.chat.gameforge.dragon_lair_access._190_npcChat with pc.get_map_index() != 208  begin
            if pc.getqf("time") > 0 and pc.getqf("time") == game.get_event_flag("dragon_lair_time") then
                dragon_lair_access.warp_to_lair()
            else
                say_title(gameforge.neutral_warp._20_sayTitle)
                say(gameforge.dragon_lair_access._120_say)
                set_state(start)
            end
        end
        when 2493.kill with pc.get_map_index() == 208 begin
            char_log(pc.get_player_id(), 'LAIR', pc.get_channel_id() ..' DRAGON KILLED')
            game.set_event_flag("dragon_lair_alive", 0) -- dragon is dead
            game.drop_item_with_ownership(71123, 1) -- dropping dragon scale
            game.drop_item_with_ownership(71129, 1) -- dropping toe nail
            notice_multiline(string.format(gameforge.dragon_lair_access._180_notice, pc.name), notice_all) -- the dragon has been killed by <name>!
            local settings = dragon_lair_access.get_settings()
            purge_area(settings.room_area.first.x, settings.room_area.first.y, settings.room_area.last.x, settings.room_area.last.y)
        end
    end
end  
23-04-2021 05:58 مساء
icon تعديل كويست بيران سيتاو | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: Quest
حط الكويست الاصلي لانه اي مسافة او حرف غلط ما يشتغل


حسنا اخي ممكن تشوف رسالة الى ارسلت لك
09-09-2020 12:55 صباحا
icon نظام الالتقاط التلقائي | الكاتب :salim |المنتدى: انظمة ماتين2
 النظام حلو تسلم على النشر
04-09-2020 12:35 صباحا
icon [طلب]نظام حفظ المكان | الكاتب :salim |المنتدى: قسم طلبات ماتين2
 يسلمووو على النظام
03-09-2020 04:25 صباحا
icon [طلب]نظام حفظ المكان | الكاتب :salim |المنتدى: قسم طلبات ماتين2
 ؟؟؟؟؟؟؟؟؟
01-09-2020 11:51 مساء
icon كومبايل سورس بفروزن | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: anas
وعليكم السلام اخوي
ذول الملفين يتركبون في هذا المسار 
usr /game/share/bin
رح تلاقي مجلدين نفس اسم المجلدين ذول 
احذف القديمات واستبدلهم بالجديدات 
واعمل ريبوت
وباذن الله يصير 
والسلام عليكم


يسلمووو صديقي مالاحضت بيكونو ب ملف bin كنت بضن أنهم بيتحطو ب مسار /usr/game/share متل ملفات ثانية
 
01-09-2020 06:29 مساء
icon كومبايل سورس بفروزن | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 ؟؟؟؟؟؟؟؟؟؟؟؟؟؟
31-08-2020 09:23 مساء
icon [C++,PYTHON] نظام المبارزه مقابل يانغ | الكاتب :salim |المنتدى: انظمة ماتين2
 
المشاركة الأصلية كتبت بواسطة: 7asan
المشاركة الأصلية كتبت بواسطة: shehabdasten
يعطيك العافية نظام جديد وجميل 

لكن هل احد جرب ركبة واشتغل وياه؟ لان في ناس سوى لهم مشاكل


ركبته نظام تمام شغال rolleyes cool


ضفتو انا وركب تمام بس اليانغ ماينحسب مابعرف ليش
29-08-2020 06:45 مساء
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: dooooodi
المشاركة الأصلية كتبت بواسطة: salim
المشاركة الأصلية كتبت بواسطة: dooooodi
بعيداً عن كل الهبد اللي جالس اشوفه بس جرب تخلي سطر البروتو بالصيغة ذي يمكن فعلا مشكلتك من السطر

87002    aura_01_1    ITEM_COSTUME    COSTUME_AURA    1    ANTI_STACK    NONE    NONE    NONE    0    0    0    0    100    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    1    85002    0    1    85002    0    100    0    0    

 


ماش من السطر عملت السطر الى عطيتني ونفس المشكلة


protoreader.cpp احذف كل اللي اضفته فيها وروح ل static string arSub28[]

وخليها كذا 

static string arSub28[] = {"COSTUME_BODY", "COSTUME_HAIR", "COSTUME_SASH", "COSTUME_WEAPON", "COSTUME_AURA"};


و item_length.h برضو نفس الشي احذف كل اللي اضفته فيها

وتحت COSTUME_WEAPON,

ضيف 
COSTUME_AURA,


وكومبايل وجرب

+ اذا ماضبطت دور النظام وحمله من مكان ثاني لان غالبا اللي عندك ناقص : $


اها بجرب هل يمكنك ترد سؤالي بالخاص
29-08-2020 06:08 مساء
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: dooooodi
بعيداً عن كل الهبد اللي جالس اشوفه بس جرب تخلي سطر البروتو بالصيغة ذي يمكن فعلا مشكلتك من السطر

87002    aura_01_1    ITEM_COSTUME    COSTUME_AURA    1    ANTI_STACK    NONE    NONE    NONE    0    0    0    0    100    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    1    85002    0    1    85002    0    100    0    0    

 


ماش من السطر عملت السطر الى عطيتني ونفس المشكلة
29-08-2020 04:00 صباحا
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
28-08-2020 03:28 صباحا
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: DrCanon
المشاركة الأصلية كتبت بواسطة: salim
المشاركة الأصلية كتبت بواسطة: DrCanon
المشاركة الأصلية كتبت بواسطة: salim
السلام عليكم ورحمة الله وبركاته 


ضفت نظام الهالة ولما حطيته بأيتيم بروتو ماشغل السيرفر هاهوا سيسر

SYSERR: Aug 25 04:55:55.125121 :: pid_init: 
Start of pid: 3372

SYSERR: Aug 25 04:55:55.126041 :: Start: TABLE_POSTFIX not configured use default
SYSERR: Aug 25 04:56:19.740669 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 3, col: 3, value: COSTUME_AURA)
SYSERR: Aug 25 04:56:19.761820 :: Set_Proto_Item_Table:     0 ~ 3 Values: 49001,0,28,
SYSERR: Aug 25 04:56:25.348725 :: pid_init: 
Start of pid: 3393

SYSERR: Aug 25 04:56:25.349199 :: Start: TABLE_POSTFIX not configured use default
SYSERR: Aug 25 04:56:34.150027 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 3, col: 3, value: COSTUME_AURA)
SYSERR: Aug 25 04:56:34.150297 :: Set_Proto_Item_Table:     0 ~ 3 Values: 49001,0,28,
SYSERR: Aug 25 04:56:39.200602 :: pid_init: 
Start of pid: 3394


مع أني حطيت COSTUME_AURA بملف ProtoReader مابدو يشتغل 
لو أحد ركب النظام يفيدنا.. sad


 
أهلا بك...
أولا:تقبل مروري 
يظهر أمامك أن عدد الأرقم الخاصة ب49001 لا تتوافق مع item_proto هناك زياده في بعض الأرقام (توضيح بصيغة عامية)
يمكنك نسخ كود أخر مثل الوشاح علي سبيل المثال 
 
85001    New_sash    ITEM_COSTUME    COSTUME_SASH    1    ANTI_STACK    LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    1    85002    0    1    85002    0    100    0    0    
 
    

ستجد في النهايات 0    0 أو عدد الأصفار المتواجده لديك أنسخ نفس السطر حق الوشاح وكرره علي ملابس الهاله مع تغير الدوال والكود وتنسيق الأرقام وستعمل معك بإنتظار ردك...


يسلمو اخي بس انا جربت الى قولت لي من قبل وماضبطت ولو تقصد الكود حقهم غلط بجرب أغيره


للتاكد أن المشكله ليست من الأيتيم بورتو قم بتغير  COSTUME_AURA   إلي COSTUME_SASH
لو ظبط انه يشتغل مثل الوشاح بتكون المشكله خارج الأيتيم بورتو لو فضلت المشكله مثل ما هي بتكون من أيتيم بورتو وخبرني ..


المشكلة خارج أيتيم بروتو عملت الى قولت شغل السيرفر 
 
28-08-2020 03:16 صباحا
icon مشكلة الآيتم بروتو في ملفات زيتا | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: Sjelr
السلام عليكم ورحمة الله وبركاته 
زي ماهو واضح بالعنوان 
إذا عدلت على الآيتم بروتو ورفعته تصير مشكله بالسيرفر
​سواء عدلت على السعر او الميزات او تكديس الصناديق 
+ عدلت بالدومب 

الرجاء عدم الخروج عن الموضوع 
إذا عندك حل أو معلومه عن المشكلة ذي ياليت تفيدنا
لكن الرجاء عدم تغيير مسار الموضوع بتقييم الملفات وغيرها 
اي رد خارج عن الموضوع بينحذف


لو سويته بالنوتباد بيتغير لازم تفتح أيتيم بروتو بورقة عادية ماش النوتباد
+ مابنصحك بيها ملفات مسربة فيها مشاكل كتيرة
28-08-2020 01:58 صباحا
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: DrCanon
المشاركة الأصلية كتبت بواسطة: salim
السلام عليكم ورحمة الله وبركاته 


ضفت نظام الهالة ولما حطيته بأيتيم بروتو ماشغل السيرفر هاهوا سيسر

SYSERR: Aug 25 04:55:55.125121 :: pid_init: 
Start of pid: 3372

SYSERR: Aug 25 04:55:55.126041 :: Start: TABLE_POSTFIX not configured use default
SYSERR: Aug 25 04:56:19.740669 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 3, col: 3, value: COSTUME_AURA)
SYSERR: Aug 25 04:56:19.761820 :: Set_Proto_Item_Table:     0 ~ 3 Values: 49001,0,28,
SYSERR: Aug 25 04:56:25.348725 :: pid_init: 
Start of pid: 3393

SYSERR: Aug 25 04:56:25.349199 :: Start: TABLE_POSTFIX not configured use default
SYSERR: Aug 25 04:56:34.150027 :: Set_Proto_Item_Table: ItemProto Reading Failed : Invalid value. (index: 3, col: 3, value: COSTUME_AURA)
SYSERR: Aug 25 04:56:34.150297 :: Set_Proto_Item_Table:     0 ~ 3 Values: 49001,0,28,
SYSERR: Aug 25 04:56:39.200602 :: pid_init: 
Start of pid: 3394


مع أني حطيت COSTUME_AURA بملف ProtoReader مابدو يشتغل 
لو أحد ركب النظام يفيدنا.. sad


 
أهلا بك...
أولا:تقبل مروري 
يظهر أمامك أن عدد الأرقم الخاصة ب49001 لا تتوافق مع item_proto هناك زياده في بعض الأرقام (توضيح بصيغة عامية)
يمكنك نسخ كود أخر مثل الوشاح علي سبيل المثال 
 
85001    New_sash    ITEM_COSTUME    COSTUME_SASH    1    ANTI_STACK    LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    1    85002    0    1    85002    0    100    0    0    
 
    

ستجد في النهايات 0    0 أو عدد الأصفار المتواجده لديك أنسخ نفس السطر حق الوشاح وكرره علي ملابس الهاله مع تغير الدوال والكود وتنسيق الأرقام وستعمل معك بإنتظار ردك...


يسلمو اخي بس انا جربت الى قولت لي من قبل وماضبطت ولو تقصد الكود حقهم غلط بجرب أغيره
28-08-2020 12:36 صباحا
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: dooooodi
المشاركة الأصلية كتبت بواسطة: salim
المشاركة الأصلية كتبت بواسطة: dooooodi
ماني شايف اي غلط بس جرب بدون ال 
#ifdef KYGN_AURA
#endif
يمكن تضبط : $
 


يب صراحه جربت كلشي قبل مابنزل الموضوع ماضبطت


أضفت الجزء الخاص بال item_length.h و server.h ؟؟
أذا ايه فا واحدة من الاثنين ياان النظام ناقص فيه شي انا مااعرفه ياانه عندك مشكلة في الكومبايل : /
+ مااظن ان جزء ال server.h له علاقة بالبروتو ريدر بس اتأكد يعني لعل وعسى


يب ضفتهم بس بعيد أتاكد منهم لو رفعتهم بسورس 
بسألك لو ضفت شي بملفات الى في common لازم أعمل كومبايل لكلشي
أو في أمر له
28-08-2020 12:21 صباحا
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: dooooodi
ماني شايف اي غلط بس جرب بدون ال 
#ifdef KYGN_AURA
#endif
يمكن تضبط : $
 


يب صراحه جربت كلشي قبل مابنزل الموضوع ماضبطت
27-08-2020 11:53 مساء
icon نظام الهالةنظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: dooooodi
البروتو لا يستطيع قراءة النظام تأكد من إضافة جميع الدوال في المكان الصحيح وبطريقة صحيحة وخصوصا في ال protoreader.cpp  في سورس السيرفر اولا وسورس الدمب ثانياً


يب تأكدت منهم كل شي بمكانو ومابدو يشتغل

هاهوا الملف protoreader.cpp

#include "stdafx.h"

#include <math.h>
#include "ProtoReader.h"

#include "CsvReader.h"

#include <sstream>

#define __COSTUME_ATTR_TRANSFER__
#define KYGN_AURA

using namespace std;

inline string trim_left(const string& str)
{
    string::size_type n = str.find_first_not_of(" \t\v\n\r");
    return n == string::npos ? str : str.substr(n, str.length());
}

inline string trim_right(const string& str)
{
    string::size_type n = str.find_last_not_of(" \t\v\n\r");
    return n == string::npos ? str : str.substr(0, n + 1);
}

string trim(const string& str){return trim_left(trim_right(str));}

static string* StringSplit(string strOrigin, string strTok)
{
    int     cutAt;                            //자르는위치
    int     index     = 0;                    //문자열인덱스
    string* strResult = new string[30];          //결과return 할변수

    //strTok을찾을때까지반복
    while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
    {
       if (cutAt > 0)  //자르는위치가0보다크면(성공시)
       {
            strResult[index++] = strOrigin.substr(0, cutAt);  //결과배열에추가
       }
       strOrigin = strOrigin.substr(cutAt+1);  //원본은자른부분제외한나머지
    }

    if(strOrigin.length() > 0)  //원본이아직남았으면
    {
        strResult[index++] = strOrigin.substr(0, cutAt);  //나머지를결과배열에추가
    }

    for( int i=0;i<index;i++)
    {
        strResult[i] = trim(strResult[i]);
    }

    return strResult;  //결과return
}



int get_Item_Type_Value(string inputString)
{
    string arType[] = {"ITEM_NONE", "ITEM_WEAPON",
        "ITEM_ARMOR", "ITEM_USE", 
        "ITEM_AUTOUSE", "ITEM_MATERIAL",
        "ITEM_SPECIAL", "ITEM_TOOL", 
        "ITEM_LOTTERY", "ITEM_ELK",                    //10개

        "ITEM_METIN", "ITEM_CONTAINER", 
        "ITEM_FISH", "ITEM_ROD", 
        "ITEM_RESOURCE", "ITEM_CAMPFIRE",
        "ITEM_UNIQUE", "ITEM_SKILLBOOK", 
        "ITEM_QUEST", "ITEM_POLYMORPH",                //20개

        "ITEM_TREASURE_BOX", "ITEM_TREASURE_KEY",
        "ITEM_SKILLFORGET", "ITEM_GIFTBOX", 
        "ITEM_PICK", "ITEM_HAIR", 
        "ITEM_TOTEM", "ITEM_BLEND", 
        "ITEM_COSTUME", "ITEM_DS",                    //30개
    
        "ITEM_SPECIAL_DS",    "ITEM_EXTRACT",
        "ITEM_SECONDARY_COIN",                        //33개

        "ITEM_RING",
        "ITEM_BELT",                                //35개 (EItemTypes 값으로 치면 34)
#ifdef ENABLE_CHEQUE_SYSTEM
        "ITEM_WON",                                    //35 won
#endif
#ifdef __COSTUME_ATTR_TRANSFER__
        "ITEM_TRANSFER_SCROLL",
#endif
    };

    
    int retInt = -1;
    //cout << "Type : " << typeStr << " -> ";
    for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) {
        string tempString = arType[j];
        if    (inputString.find(tempString)!=string::npos && tempString.find(inputString)!=string::npos) {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;

}

int get_Item_SubType_Value(int type_value, string inputString)
{
    static string arSub1[] = {"WEAPON_SWORD", "WEAPON_DAGGER", "WEAPON_BOW", "WEAPON_TWO_HANDED", "WEAPON_BELL", "WEAPON_FAN", "WEAPON_ARROW", "WEAPON_UNLIMITED_ARROW", "WEAPON_MOUNT_SPEAR", "WEAPON_CLAW"};
    static string arSub2[] = {"ARMOR_BODY", "ARMOR_HEAD", "ARMOR_SHIELD", "ARMOR_WRIST", "ARMOR_FOOTS", "ARMOR_NECK", "ARMOR_EAR", "ARMOR_NUM_TYPES"};
    static string arSub3[] = {"USE_POTION", "USE_TALISMAN", "USE_TUNING", "USE_MOVE", "USE_TREASURE_BOX", "USE_MONEYBAG", "USE_BAIT", "USE_ABILITY_UP", "USE_AFFECT", "USE_CREATE_STONE", "USE_SPECIAL", "USE_POTION_NODELAY", "USE_CLEAR", "USE_INVISIBILITY", "USE_DETACHMENT", "USE_BUCKET", "USE_POTION_CONTINUE", "USE_CLEAN_SOCKET", "USE_CHANGE_ATTRIBUTE", "USE_ADD_ATTRIBUTE", "USE_ADD_ACCESSORY_SOCKET", "USE_PUT_INTO_ACCESSORY_SOCKET", "USE_ADD_ATTRIBUTE2", "USE_RECIPE", "USE_CHANGE_ATTRIBUTE2", "USE_TIME_CHARGE_PER", "USE_TIME_CHARGE_FIX", "USE_PUT_INTO_BELT_SOCKET", "USE_PUT_INTO_RING_SOCKET", "USE_BIND", "USE_UNBIND", "USE_COSTUME_ENCHANT", "USE_COSTUME_TRANSFORM"};
    static string arSub4[] = {"AUTOUSE_POTION", "AUTOUSE_ABILITY_UP", "AUTOUSE_BOMB", "AUTOUSE_GOLD", "AUTOUSE_MONEYBAG", "AUTOUSE_TREASURE_BOX"};
    static string arSub5[] = {"MATERIAL_LEATHER", "MATERIAL_BLOOD", "MATERIAL_ROOT", "MATERIAL_NEEDLE", "MATERIAL_JEWEL", "MATERIAL_DS_REFINE_NORMAL", "MATERIAL_DS_REFINE_BLESSED", "MATERIAL_DS_REFINE_HOLLY"};
    static string arSub6[] = {"SPECIAL_MAP", "SPECIAL_KEY", "SPECIAL_DOC", "SPECIAL_SPIRIT"};
    static string arSub7[] = {"TOOL_FISHING_ROD"};
    static string arSub8[] = {"LOTTERY_TICKET", "LOTTERY_INSTANT"};
    static string arSub10[] = {"METIN_NORMAL", "METIN_GOLD"};
    static string arSub12[] = {"FISH_ALIVE", "FISH_DEAD"};
    static string arSub14[] = {"RESOURCE_FISHBONE", "RESOURCE_WATERSTONEPIECE", "RESOURCE_WATERSTONE", "RESOURCE_BLOOD_PEARL", "RESOURCE_BLUE_PEARL", "RESOURCE_WHITE_PEARL", "RESOURCE_BUCKET", "RESOURCE_CRYSTAL", "RESOURCE_GEM", "RESOURCE_STONE", "RESOURCE_METIN", "RESOURCE_ORE", "RESOURCE_AURA"};
    static string arSub16[] = {"UNIQUE_NONE", "UNIQUE_BOOK", "UNIQUE_SPECIAL_RIDE", "UNIQUE_3", "UNIQUE_4", "UNIQUE_5", "UNIQUE_6", "UNIQUE_7", "UNIQUE_8", "UNIQUE_9", "USE_SPECIAL"};
    static string arSub28[] = {"COSTUME_BODY", "COSTUME_HAIR", "COSTUME_AURA", "COSTUME_SASH", "COSTUME_WEAPON", "COSTUME_MOUNT"};
    static string arSub29[] = {"DS_SLOT1", "DS_SLOT2", "DS_SLOT3", "DS_SLOT4", "DS_SLOT5", "DS_SLOT6"};
    static string arSub31[] = {"EXTRACT_DRAGON_SOUL", "EXTRACT_DRAGON_HEART"};
    static string* arSubType[] = {0, arSub1, arSub2, arSub3, arSub4, arSub5, arSub6, arSub7, arSub8, 0, arSub10, 0, arSub12, 0, arSub14, 0, arSub16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, arSub28, arSub29, arSub29, arSub31, 0, 0, 0, 0,
#ifdef __COSTUME_ATTR_TRANSFER__
    0,
#endif
    };
    static int arNumberOfSubtype[_countof(arSubType)] = {0, sizeof(arSub1)/sizeof(arSub1[0]), sizeof(arSub2)/sizeof(arSub2[0]), sizeof(arSub3)/sizeof(arSub3[0]), sizeof(arSub4)/sizeof(arSub4[0]), sizeof(arSub5)/sizeof(arSub5[0]), sizeof(arSub6)/sizeof(arSub6[0]), sizeof(arSub7)/sizeof(arSub7[0]), sizeof(arSub8)/sizeof(arSub8[0]), 0, sizeof(arSub10)/sizeof(arSub10[0]), 0, sizeof(arSub12)/sizeof(arSub12[0]), 0, sizeof(arSub14)/sizeof(arSub14[0]), 0, sizeof(arSub16)/sizeof(arSub16[0]), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, sizeof(arSub28)/sizeof(arSub28[0]), sizeof(arSub29)/sizeof(arSub29[0]), sizeof(arSub29)/sizeof(arSub29[0]), sizeof(arSub31)/sizeof(arSub31[0]), 0, 0, 0, 0,
#ifdef __COSTUME_ATTR_TRANSFER__
    0,
#endif
    };

    assert(_countof(arSubType) > type_value && "Subtype rule: Out of range!!");
    if (_countof(arSubType) <= type_value)
    {
        sys_err("SubType : Out of range!! (type_value: %d, count of registered subtype: %d", type_value, _countof(arSubType));
        return -1;
    }

    if (arSubType[type_value] == 0)
    {
        return 0;
    }

    int retInt = -1;
    for (int j=0;j<arNumberOfSubtype[type_value];j++)
    {
        string tempString = arSubType[type_value][j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString) == 0)
        {
            retInt =  j;
            break;
        }
    }

    return retInt;
}

int get_Item_AntiFlag_Value(string inputString)
{
    string arAntiFlag[] = {"ANTI_FEMALE", "ANTI_MALE", "ANTI_MUSA", "ANTI_ASSASSIN", "ANTI_SURA", "ANTI_MUDANG", "ANTI_GET", "ANTI_DROP", "ANTI_SELL", "ANTI_EMPIRE_A", "ANTI_EMPIRE_B", "ANTI_EMPIRE_C", "ANTI_SAVE", "ANTI_GIVE", "ANTI_PKDROP", "ANTI_STACK", "ANTI_MYSHOP", "ANTI_SAFEBOX", "ANTI_WOLFMAN", "ANTI_BIND", "ANTIFLAG_SHOP_SECONDARY", "ANTIFLAG_SHOP_TRIPLE"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");
    for(int i =0;i<sizeof(arAntiFlag)/sizeof(arAntiFlag[0]);i++)
    {
        string tempString = arAntiFlag[i];
        for (int j=0; j<30 ; j++)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString) == 0)
            {
                retValue = retValue + pow((float)2,(float)i);
            }

            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;

    return retValue;
}

int get_Item_Flag_Value(string inputString) 
{

    string arFlag[] = 
        {
            "ITEM_TUNABLE", 
            "ITEM_SAVE", 
            "ITEM_STACKABLE", 
            "COUNT_PER_1GOLD", 
            "ITEM_SLOW_QUERY", 
            "ITEM_UNIQUE",
            "ITEM_MAKECOUNT", 
            "ITEM_IRREMOVABLE", 
            "CONFIRM_WHEN_USE", 
            "QUEST_USE",
            "QUEST_USE_MULTIPLE",
            "QUEST_GIVE", 
            "ITEM_QUEST", 
            "LOG",
            "ITEM_APPLICABLE",
            "ITEM_RARE_ABILITY"
        };


    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //프로토 정보 내용을 단어별로 쪼갠 배열.
    for(int i =0;i<sizeof(arFlag)/sizeof(arFlag[0]);i++) {
        string tempString = arFlag[i];
        for (int j=0; j<30 ; j++)        //최대 30개 단어까지. (하드코딩)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //일치하는지 확인.
                retValue = retValue + pow((float)2,(float)i);
            }
            
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Flag : " << flagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Item_WearFlag_Value(string inputString) 
{

    string arWearrFlag[] = {
                                "WEAR_BODY",
                                "WEAR_HEAD",
                                "WEAR_FOOTS",
                                "WEAR_WRIST",
                                "WEAR_WEAPON",
                                "WEAR_NECK",
                                "WEAR_EAR",
                                "WEAR_SHIELD",
                                "WEAR_UNIQUE",
                                "WEAR_ARROW",
                                "WEAR_HAIR",
                                "WEAR_ABILITY",
#ifdef KYGN_AURA
                                "WEAR_COSTUME_AURA",
#endif
                                "WEAR_COSTUME_BODY",
                                "WEAR_COSTUME_HAIR",
                                "WEAR_COSTUME_SASH",
                                "WEAR_COSTUME_WEAPON",
                                "WEAR_COSTUME_MOUNT",
                                "WEAR_RING1",
                                "WEAR_RING2",
                                "WEAR_BELT"
    };


    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //프로토 정보 내용을 단어별로 쪼갠 배열.
    for(int i =0;i<sizeof(arWearrFlag)/sizeof(arWearrFlag[0]);i++) {
        string tempString = arWearrFlag[i];
        for (int j=0; j<30 ; j++)        //최대 30개 단어까지. (하드코딩)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //일치하는지 확인.
                retValue = retValue + pow((float)2,(float)i);
            }
            
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "WearFlag : " << wearFlagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Item_Immune_Value(string inputString) 
{

    string arImmune[] = {"PARA","CURSE","STUN","SLEEP","SLOW","POISON","TERROR"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, "|");                //프로토 정보 내용을 단어별로 쪼갠 배열.
    for(int i =0;i<sizeof(arImmune)/sizeof(arImmune[0]);i++) {
        string tempString = arImmune[i];
        for (int j=0; j<30 ; j++)        //최대 30개 단어까지. (하드코딩)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //일치하는지 확인.
                retValue = retValue + pow((float)2,(float)i);
            }
            
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Immune : " << immuneStr << " -> " << retValue << endl;

    return retValue;
}




int get_Item_LimitType_Value(string inputString)
{
    string arLimitType[] = {"LIMIT_NONE", "LEVEL", "STR", "DEX", "INT", "CON", "PC_BANG", "REAL_TIME", "REAL_TIME_FIRST_USE", "TIMER_BASED_ON_WEAR"};
    
    int retInt = -1;
    //cout << "LimitType : " << limitTypeStr << " -> ";
    for (int j=0;j<sizeof(arLimitType)/sizeof(arLimitType[0]);j++) {
        string tempString = arLimitType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0)
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}


int get_Item_ApplyType_Value(string inputString)
{
    string arApplyType[] = {"APPLY_NONE", "APPLY_MAX_HP", "APPLY_MAX_SP", "APPLY_CON", "APPLY_INT", "APPLY_STR", "APPLY_DEX", "APPLY_ATT_SPEED", "APPLY_MOV_SPEED", "APPLY_CAST_SPEED", "APPLY_HP_REGEN", "APPLY_SP_REGEN", "APPLY_POISON_PCT", "APPLY_STUN_PCT", "APPLY_SLOW_PCT", "APPLY_CRITICAL_PCT", "APPLY_PENETRATE_PCT", "APPLY_ATTBONUS_HUMAN", "APPLY_ATTBONUS_ANIMAL", "APPLY_ATTBONUS_ORC", "APPLY_ATTBONUS_MILGYO", "APPLY_ATTBONUS_UNDEAD", "APPLY_ATTBONUS_DEVIL", "APPLY_STEAL_HP", "APPLY_STEAL_SP", "APPLY_MANA_BURN_PCT", "APPLY_DAMAGE_SP_RECOVER", "APPLY_BLOCK", "APPLY_DODGE", "APPLY_RESIST_SWORD", "APPLY_RESIST_TWOHAND", "APPLY_RESIST_DAGGER", "APPLY_RESIST_BELL", "APPLY_RESIST_FAN", "APPLY_RESIST_BOW", "APPLY_RESIST_FIRE", "APPLY_RESIST_ELEC", "APPLY_RESIST_MAGIC", "APPLY_RESIST_WIND", "APPLY_REFLECT_MELEE", "APPLY_REFLECT_CURSE", "APPLY_POISON_REDUCE", "APPLY_KILL_SP_RECOVER", "APPLY_EXP_DOUBLE_BONUS", "APPLY_GOLD_DOUBLE_BONUS", "APPLY_ITEM_DROP_BONUS", "APPLY_POTION_BONUS", "APPLY_KILL_HP_RECOVER", "APPLY_IMMUNE_STUN", "APPLY_IMMUNE_SLOW", "APPLY_IMMUNE_FALL", "APPLY_SKILL", "APPLY_BOW_DISTANCE", "APPLY_ATT_GRADE_BONUS", "APPLY_DEF_GRADE_BONUS", "APPLY_MAGIC_ATT_GRADE", "APPLY_MAGIC_DEF_GRADE", "APPLY_CURSE_PCT", "APPLY_MAX_STAMINA", "APPLY_ATTBONUS_WARRIOR", "APPLY_ATTBONUS_ASSASSIN", "APPLY_ATTBONUS_SURA", "APPLY_ATTBONUS_SHAMAN", "APPLY_ATTBONUS_MONSTER", "APPLY_MALL_ATTBONUS", "APPLY_MALL_DEFBONUS", "APPLY_MALL_EXPBONUS", "APPLY_MALL_ITEMBONUS", "APPLY_MALL_GOLDBONUS", "APPLY_MAX_HP_PCT", "APPLY_MAX_SP_PCT", "APPLY_SKILL_DAMAGE_BONUS", "APPLY_NORMAL_HIT_DAMAGE_BONUS", "APPLY_SKILL_DEFEND_BONUS", "APPLY_NORMAL_HIT_DEFEND_BONUS", "APPLY_PC_BANG_EXP_BONUS", "APPLY_PC_BANG_DROP_BONUS", "APPLY_EXTRACT_HP_PCT", "APPLY_RESIST_WARRIOR", "APPLY_RESIST_ASSASSIN", "APPLY_RESIST_SURA", "APPLY_RESIST_SHAMAN", "APPLY_ENERGY",    "APPLY_DEF_GRADE", "APPLY_COSTUME_ATTR_BONUS", "APPLY_MAGIC_ATTBONUS_PER", "APPLY_MELEE_MAGIC_ATTBONUS_PER", "APPLY_RESIST_ICE", "APPLY_RESIST_EARTH", "APPLY_RESIST_DARK", "APPLY_ANTI_CRITICAL_PCT", "APPLY_ANTI_PENETRATE_PCT", "APPLY_BLEEDING_PCT", "APPLY_BLEEDING_REDUCE", "APPLY_ATTBONUS_WOLFMAN", "APPLY_RESIST_WOLFMAN", "APPLY_RESIST_CLAW", "APPLY_ANTI_RESIST_MAGIC",};

    int retInt = -1;
    for (int j=0;j<sizeof(arApplyType)/sizeof(arApplyType[0]);j++)
    {
        string tempString = arApplyType[j];
        string tempInputString = trim(inputString);
        if (tempInputString.compare(tempString) == 0)
        {
            retInt =  j;
            break;
        }
    }

    return retInt;
}

//몬스터 프로토도 읽는다.


int get_Mob_Rank_Value(string inputString) 
{
    string arRank[] = {"PAWN", "S_PAWN", "KNIGHT", "S_KNIGHT", "BOSS", "KING"};

    int retInt = -1;
    //cout << "Rank : " << rankStr << " -> ";
    for (int j=0;j<sizeof(arRank)/sizeof(arRank[0]);j++) {
        string tempString = arRank[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0) 
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}


int get_Mob_Type_Value(string inputString)
{
    string arType[] = { "MONSTER", "NPC", "STONE", "WARP", "DOOR", "BUILDING", "PC", "POLYMORPH_PC", "HORSE", "GOTO"};

    int retInt = -1;
    //cout << "Type : " << typeStr << " -> ";
    for (int j=0;j<sizeof(arType)/sizeof(arType[0]);j++) {
        string tempString = arType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0) 
        {
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}

int get_Mob_BattleType_Value(string inputString) 
{
    string arBattleType[] = { "MELEE", "RANGE", "MAGIC", "SPECIAL", "POWER", "TANKER", "SUPER_POWER", "SUPER_TANKER"};

    int retInt = -1;
    //cout << "Battle Type : " << battleTypeStr << " -> ";
    for (int j=0;j<sizeof(arBattleType)/sizeof(arBattleType[0]);j++) {
        string tempString = arBattleType[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0) 
        { 
            //cout << j << " ";
            retInt =  j;
            break;
        }
    }
    //cout << endl;

    return retInt;
}

int get_Mob_Size_Value(string inputString)
{
    string arSize[] = { "SMALL", "MEDIUM", "BIG"};

    int retInt = 0;
    //cout << "Size : " << sizeStr << " -> ";
    for (int j=0;j<sizeof(arSize)/sizeof(arSize[0]);j++) {
        string tempString = arSize[j];
        string tempInputString = trim(inputString);
        if    (tempInputString.compare(tempString)==0) 
        {
            //cout << j << " ";
            retInt =  j + 1;
            break;
        }
    }
    //cout << endl;

    return retInt;
}

int get_Mob_AIFlag_Value(string inputString)
{
    string arAIFlag[] = {"AGGR","NOMOVE","COWARD","NOATTSHINSU","NOATTCHUNJO","NOATTJINNO","ATTMOB","BERSERK","STONESKIN","GODSPEED","DEATHBLOW","REVIVE"};


    int retValue = 0;
    string* arInputString = StringSplit(inputString, ",");                //프로토 정보 내용을 단어별로 쪼갠 배열.
    for(int i =0;i<sizeof(arAIFlag)/sizeof(arAIFlag[0]);i++) {
        string tempString = arAIFlag[i];
        for (int j=0; j<30 ; j++)        //최대 30개 단어까지. (하드코딩)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //일치하는지 확인.
                retValue = retValue + pow((float)2,(float)i);
            }
            
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "AIFlag : " << aiFlagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Mob_RaceFlag_Value(string inputString)
{
    string arRaceFlag[] = {"ANIMAL","UNDEAD","DEVIL","HUMAN","ORC","MILGYO","INSECT","FIRE","ICE","DESERT","TREE",
        "ATT_ELEC","ATT_FIRE","ATT_ICE","ATT_WIND","ATT_EARTH","ATT_DARK"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, ",");                //프로토 정보 내용을 단어별로 쪼갠 배열.
    for(int i =0;i<sizeof(arRaceFlag)/sizeof(arRaceFlag[0]);i++) {
        string tempString = arRaceFlag[i];
        for (int j=0; j<30 ; j++)        //최대 30개 단어까지. (하드코딩)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //일치하는지 확인.
                retValue = retValue + pow((float)2,(float)i);
            }
            
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Race Flag : " << raceFlagStr << " -> " << retValue << endl;

    return retValue;
}

int get_Mob_ImmuneFlag_Value(string inputString)
{
    string arImmuneFlag[] = {"STUN","SLOW","FALL","CURSE","POISON","TERROR", "REFLECT"};

    int retValue = 0;
    string* arInputString = StringSplit(inputString, ",");                //프로토 정보 내용을 단어별로 쪼갠 배열.
    for(int i =0;i<sizeof(arImmuneFlag)/sizeof(arImmuneFlag[0]);i++) {
        string tempString = arImmuneFlag[i];
        for (int j=0; j<30 ; j++)        //최대 30개 단어까지. (하드코딩)
        {
            string tempString2 = arInputString[j];
            if (tempString2.compare(tempString)==0) {                //일치하는지 확인.
                retValue = retValue + pow((float)2,(float)i);
            }
            
            if(tempString2.compare("") == 0)
                break;
        }
    }
    delete []arInputString;
    //cout << "Immune Flag : " << immuneFlagStr << " -> " << retValue << endl;


    return retValue;
}

#ifndef __DUMP_PROTO__

//몹 테이블을 셋팅해준다.
bool Set_Proto_Mob_Table(TMobTable *mobTable, cCsvTable &csvTable,std::map<int,const char*> &nameMap)
{
    int col = 0;
    str_to_number(mobTable->dwVnum, csvTable.AsStringByIndex(col++));
    strlcpy(mobTable->szName, csvTable.AsStringByIndex(col++), sizeof(mobTable->szName));

    //3. 지역별 이름 넣어주기.
    map<int,const char*>::iterator it;
    it = nameMap.find(mobTable->dwVnum);
    if (it != nameMap.end()) {
        const char * localeName = it->second;
        strlcpy(mobTable->szLocaleName, localeName, sizeof (mobTable->szLocaleName));
    } else {
        strlcpy(mobTable->szLocaleName, mobTable->szName, sizeof (mobTable->szLocaleName));
    }

    //RANK
    int rankValue = get_Mob_Rank_Value(csvTable.AsStringByIndex(col++));
    mobTable->bRank = rankValue;
    //TYPE
    int typeValue = get_Mob_Type_Value(csvTable.AsStringByIndex(col++));
    mobTable->bType = typeValue;
    //BATTLE_TYPE
    int battleTypeValue = get_Mob_BattleType_Value(csvTable.AsStringByIndex(col++));
    mobTable->bBattleType = battleTypeValue;

    str_to_number(mobTable->bLevel, csvTable.AsStringByIndex(col++));
    //SIZE
    int sizeValue = get_Mob_Size_Value(csvTable.AsStringByIndex(col++));
    mobTable->bSize = sizeValue;
    //AI_FLAG
    int aiFlagValue = get_Mob_AIFlag_Value(csvTable.AsStringByIndex(col++));
    mobTable->dwAIFlag = aiFlagValue;
    //mount_capacity;
    col++;
    //RACE_FLAG
    int raceFlagValue = get_Mob_RaceFlag_Value(csvTable.AsStringByIndex(col++));
    mobTable->dwRaceFlag = raceFlagValue;
    //IMMUNE_FLAG
    int immuneFlagValue = get_Mob_ImmuneFlag_Value(csvTable.AsStringByIndex(col++));
    mobTable->dwImmuneFlag = immuneFlagValue;

    str_to_number(mobTable->bEmpire, csvTable.AsStringByIndex(col++));  //col = 11

    strlcpy(mobTable->szFolder, csvTable.AsStringByIndex(col++), sizeof(mobTable->szFolder));

    str_to_number(mobTable->bOnClickType, csvTable.AsStringByIndex(col++));    

    str_to_number(mobTable->bStr, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bDex, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bCon, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bInt, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwDamageRange[0], csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwDamageRange[1], csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwMaxHP, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bRegenCycle, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bRegenPercent,    csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwGoldMin, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwGoldMax, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwExp,    csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->wDef, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->sAttackSpeed, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->sMovingSpeed, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bAggresiveHPPct, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->wAggressiveSight, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->wAttackRange, csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->dwDropItemVnum, csvTable.AsStringByIndex(col++));    //32
    str_to_number(mobTable->dwResurrectionVnum, csvTable.AsStringByIndex(col++));
    for (int i = 0; i < MOB_ENCHANTS_MAX_NUM; ++i)
        str_to_number(mobTable->cEnchants[i], csvTable.AsStringByIndex(col++));

    for (int i = 0; i < MOB_RESISTS_MAX_NUM; ++i)
        str_to_number(mobTable->cResists[i], csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->fDamMultiply, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwSummonVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->dwDrainSP, csvTable.AsStringByIndex(col++));

    //Mob_Color
    ++col;

    str_to_number(mobTable->dwPolymorphItemVnum, csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->Skills[0].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[0].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[1].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[1].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[2].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[2].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[3].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[3].dwVnum, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[4].bLevel, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->Skills[4].dwVnum, csvTable.AsStringByIndex(col++));

    str_to_number(mobTable->bBerserkPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bStoneSkinPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bGodSpeedPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bDeathBlowPoint, csvTable.AsStringByIndex(col++));
    str_to_number(mobTable->bRevivePoint, csvTable.AsStringByIndex(col++));

    sys_log(0, "MOB #%-5d %-24s level: %-3u rank: %u empire: %d", mobTable->dwVnum, mobTable->szLocaleName, mobTable->bLevel, mobTable->bRank, mobTable->bEmpire);

    return true;
}

bool Set_Proto_Item_Table(TItemTable *itemTable, cCsvTable &csvTable,std::map<int,const char*> &nameMap)
{
    int col = 0;

    int dataArray[33];
    for (int i=0; i<sizeof(dataArray)/sizeof(dataArray[0]);i++) {
        int validCheck = 0;
        if (i==2) {
            dataArray[i] = get_Item_Type_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==3) {
            dataArray[i] = get_Item_SubType_Value(dataArray[i-1], csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==5) {
            dataArray[i] = get_Item_AntiFlag_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==6) {
            dataArray[i] = get_Item_Flag_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==7) {
            dataArray[i] = get_Item_WearFlag_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==8) {
            dataArray[i] = get_Item_Immune_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==14) {
            dataArray[i] = get_Item_LimitType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==16) {
            dataArray[i] = get_Item_LimitType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==18) {
            dataArray[i] = get_Item_ApplyType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==20) {
            dataArray[i] = get_Item_ApplyType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else if (i==22) {
            dataArray[i] = get_Item_ApplyType_Value(csvTable.AsStringByIndex(col));
            validCheck = dataArray[i];
        } else {
            str_to_number(dataArray[i], csvTable.AsStringByIndex(col));
        }

        if (validCheck == -1)
        {
            std::ostringstream dataStream;

            for (int j = 0; j < i; ++j)
                dataStream << dataArray[j] << ",";

            //fprintf(stderr, "ItemProto Reading Failed : Invalid value.\n");
            sys_err("ItemProto Reading Failed : Invalid value. (index: %d, col: %d, value: %s)", i, col, csvTable.AsStringByIndex(col));
            sys_err("\t%d ~ %d Values: %s", 0, i, dataStream.str().c_str());

            exit(0);
        }
        
        col = col + 1;
    }

    // vnum 및 vnum range 읽기.
    {
        std::string s(csvTable.AsStringByIndex(0));
        int pos = s.find("~");
        // vnum 필드에 '~'가 없다면 패스
        if (std::string::npos == pos)
        {
            itemTable->dwVnum = dataArray[0];
            itemTable->dwVnumRange = 0;
        }
        else
        {
            std::string s_start_vnum (s.substr(0, pos));
            std::string s_end_vnum (s.substr(pos +1 ));

            int start_vnum = atoi(s_start_vnum.c_str());
            int end_vnum = atoi(s_end_vnum.c_str());
            if (0 == start_vnum || (0 != end_vnum && end_vnum < start_vnum))
            {
                sys_err ("INVALID VNUM %s", s.c_str());
                return false;
            }
            itemTable->dwVnum = start_vnum;
            itemTable->dwVnumRange = end_vnum - start_vnum;
        }
    }

    strlcpy(itemTable->szName, csvTable.AsStringByIndex(1), sizeof(itemTable->szName));
    //지역별 이름 넣어주기.
    map<int,const char*>::iterator it;
    it = nameMap.find(itemTable->dwVnum);
    if (it != nameMap.end()) {
        const char * localeName = it->second;
        strlcpy(itemTable->szLocaleName, localeName, sizeof (itemTable->szLocaleName));
    } else {
        strlcpy(itemTable->szLocaleName, itemTable->szName, sizeof (itemTable->szLocaleName));
    }
    itemTable->bType = dataArray[2];
    itemTable->bSubType = dataArray[3];
    itemTable->bSize = dataArray[4];
    itemTable->dwAntiFlags = dataArray[5];
    itemTable->dwFlags = dataArray[6];
    itemTable->dwWearFlags = dataArray[7];
    itemTable->dwImmuneFlag = dataArray[8];
    itemTable->dwGold = dataArray[9];
    itemTable->dwShopBuyPrice = dataArray[10];
    itemTable->dwRefinedVnum = dataArray[11];
    itemTable->wRefineSet = dataArray[12];
    itemTable->bAlterToMagicItemPct = dataArray[13];
    itemTable->cLimitRealTimeFirstUseIndex = -1;
    itemTable->cLimitTimerBasedOnWearIndex = -1;

    int i;

    for (i = 0; i < ITEM_LIMIT_MAX_NUM; ++i)
    {
        itemTable->aLimits[i].bType = dataArray[14+i*2];
        itemTable->aLimits[i].lValue = dataArray[15+i*2];

        if (LIMIT_REAL_TIME_START_FIRST_USE == itemTable->aLimits[i].bType)
            itemTable->cLimitRealTimeFirstUseIndex = (char)i;

        if (LIMIT_TIMER_BASED_ON_WEAR == itemTable->aLimits[i].bType)
            itemTable->cLimitTimerBasedOnWearIndex = (char)i;

    }

    for (i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
    {
        itemTable->aApplies[i].bType = dataArray[18+i*2];
        itemTable->aApplies[i].lValue = dataArray[19+i*2];
    }

    for (i = 0; i < ITEM_VALUES_MAX_NUM; ++i)
        itemTable->alValues[i] = dataArray[24+i];

    //column for 'Specular'
    itemTable->bGainSocketPct = dataArray[31];
    itemTable->sAddonType = dataArray[32];

    //test
    str_to_number(itemTable->bWeight, "0");
            
    return true;
}

#endif
27-08-2020 10:37 مساء
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 مافي حل؟؟
26-08-2020 05:47 مساء
icon نظام الهالة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
23-08-2020 03:36 صباحا
icon خطأ بنظام | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: Baba Voss
المشاركة الأصلية كتبت بواسطة: salim
السلام عليكم شباب 
صفت نظام لمعات وكلما دخلت للسيرفر بيتطلع اللعبة بالكامل
السيسر
0821 03:19:11018 :: 
networkModule.py(line:209) SetSelectCharacterPhase
system.py(line:147) __pack_import
system.py(line:127) _process_result
introSelect.py(line:31) <module>
system.py(line:147) __pack_import
system.py(line:127) _process_result
interfaceModule.py(line:12) <module>
system.py(line:147) __pack_import

networkModule.SetSelectCharacterPhase - <type 'exceptions.TypeError'>:compile() expected string without null bytes

0821 03:19:11018 :: ============================================================================================================
0821 03:19:11018 :: Abort!!!!



بتمنى يفيدني أحد وشكرا




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


شكرا على النصيحة .. مع الأسف ماأنحلت وشيلت النظام بالكامل يسلموو شباب على الرد
21-08-2020 07:56 مساء
icon خطأ بنظام | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
18-08-2020 11:21 مساء
icon مشكلة تفعيلات دائمة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 
المشاركة الأصلية كتبت بواسطة: borashid
المشاركة الأصلية كتبت بواسطة: salim
السلام عليكم
ركبت نظام حق تفعيلات دائمة ولكن طلعت لي مشكلة لما أدخل للحساب تفصل اللعبة بالكامل هاهوا سيسر
0817 19:17:16754 :: 
networkModule.py(line:209) SetSelectCharacterPhase
system.py(line:147) __pack_import
system.py(line:127) _process_result
introSelect.py(line:24) <module>
system.py(line:147) __pack_import
system.py(line:127) _process_result
uiAffectShower.py(line:356) <module>
uiAffectShower.py(line:464) AffectShower

networkModule.SetSelectCharacterPhase - <type 'exceptions.AttributeError'>:'module' object has no attribute 'TOOLTIP_AFFECT_POTION_7'

0817 19:17:16754 :: ============================================================================================================
0817 19:17:16754 :: Abort!!!!




افتح ملف locale وبحث عن ورقة locale_game.txt وفكها بالنوت باد+
وضيف 


TOOLTIP_AFFECT_POTION_1    اضف اللون    SNA
TOOLTIP_AFFECT_POTION_2    اضف اللون    SNA
TOOLTIP_AFFECT_POTION_3    اضف اللون    SNA
TOOLTIP_AFFECT_POTION_4    اضف اللون    SNA
TOOLTIP_AFFECT_POTION_5    اضف اللون    SNA
TOOLTIP_AFFECT_POTION_6    اضف اللون    SNA
TOOLTIP_AFFECT_POTION_7    اضف اللون    SNA


وسوي حفظ وضغط الملف وجرب شغل 

اذا أفدتك ادعو لي بالتوفيق فقط.


حليت المشكلة بس طلعت لي دي المشكلة هاهوا سيسر
0818 15:44:07766 :: 
networkModule.py(line:209) SetSelectCharacterPhase
system.py(line:147) __pack_import
system.py(line:127) _process_result
introSelect.py(line:31) <module>
system.py(line:147) __pack_import
system.py(line:127) _process_result
interfaceModule.py(line:12) <module>
system.py(line:147) __pack_import

networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unexpected indent (uiInventory.py, line 830)

0818 15:44:07766 :: ============================================================================================================
0818 15:44:07766 :: Abort!!!!



هاهي صورة لسطر ماشفت فيه غلط 
p_16915amlu1
17-08-2020 11:19 مساء
icon مشكلة تفعيلات دائمة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 معلش حل؟؟؟
17-08-2020 08:43 مساء
icon مشكلة تفعيلات دائمة | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
16-08-2020 06:54 مساء
icon نظام مبارزة بيانغ | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
16-08-2020 12:59 صباحا
icon نظام مبارزة بيانغ | الكاتب :salim |المنتدى: قسم المشاكل والاستفسارات
 مع طلع معي خطأ في تركيب انا بس مايبي ينسحب اليانغ ولما تقتل أحد ماتقدر تحصل عليه
14-08-2020 07:44 مساء
icon جعل الجرع خضراء وبنفسجية وتفعيلات التنين دائمة | الكاتب :salim |المنتدى: قسم طلبات ماتين2
 يسلموو شباب ماقصرتو
14-08-2020 03:05 مساء
icon جعل الجرع خضراء وبنفسجية وتفعيلات التنين دائمة | الكاتب :salim |المنتدى: قسم طلبات ماتين2

الصفحة 1 من 4 < 1 2 3 4 > الأخيرة »