Jump to content

raihan3

Member
  • Posts

    226
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by raihan3

  1. On 17.4.2014 at 3:59 PM, Yiv said:

    Dear community,

     

    this is my first guide for you in which I will show you how you change the older Granny 2.4 version which is the client using to the newer Granny 2.9 version.

    For this tutorial I'm using the mainline_released client source (all client sources are the same as I heard).

     

    DO NOT FORGET TO CREATE BACKUPS!

     

    1. Step:

    Navigate to novalineSrcsToolsRAD Game Toolsgrannycommon and unzip the file granny_common_2_9_12_0_release.zip. You will receive some folders. Now you navigate into the folder include and copy the granny.h file to the include folder of your client (for me it's mainline_releasedSrcsExterninclude). Then you go into the libwin32 folder and copy all the *.lib and *.pdb files into your lib folder of your client.

     

    2. Step:

    Open your client source and navigate to the project EterGrnLib.

    Open Mesh.cpp.

    Search for this:

    
    int * boneIndices = GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding);

    Replace with this:

    
    int * boneIndices = (int*)GrannyGetMeshBindingToBoneIndices(pgrnMeshBinding);

    Search for this:

    
    return GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp);

    Replace with this:

    
    return (int*)GrannyGetMeshBindingToBoneIndices(m_pgrnMeshBindingTemp);

    Search for this:

    
    m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal);

    Replace with this:

    
    m_pgrnMeshDeformer = GrannyNewMeshDeformer(pgrnInputType, pgrnOutputType, GrannyDeformPositionNormal, GrannyAllowUncopiedTail);

    -----

    Open ModelInstanceUpdate.cpp.

    Search for this:

    
    GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix);

    Replace with this:

    
    GrannyUpdateModelMatrix(m_pgrnModelInstance, fSecondsElapsed, (const float *) pMatrix, (float *) pMatrix, false);

    -----

    Open Material.cpp.

    Search for this:

    
    granny_variant twoSideResult = GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided");
    
    if (NULL != twoSideResult.Type)
    	GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided);

    Replace with this:

    
    granny_variant twoSideResult;
    
    if (GrannyFindMatchingMember(pgrnMaterial->ExtendedData.Type, pgrnMaterial->ExtendedData.Object, "Two-sided", &twoSideResult)  
    	&& NULL != twoSideResult.Type)
    	GrannyConvertSingleObject(twoSideResult.Type, twoSideResult.Object, TwoSidedFieldType, &twoSided, NULL);

    -----

    Open ModelInstanceModel.cpp

    Search for this:

    
    return GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);

    Replace with this:

    
    return (int*)GrannyGetMeshBindingToBoneIndices(m_vct_pgrnMeshBinding[iMeshBinding]);

    -----

    Navigate to the UserInterface project.

    Open UserInterface.cpp.

    Search for this (it's at the end of the file):

    
    static void GrannyError(granny_log_message_type Type,
    						granny_log_message_origin Origin,
    						char const *Error,
    						void *UserData)
    {
        TraceError("GRANNY: %s", Error);
    }

    Replace with this:

    
    static void GrannyError(granny_log_message_type Type,
    						granny_log_message_origin Origin,
    						char const* File,
    						granny_int32x Line,
    						char const *Error,
    						void *UserData)
    {
        TraceError("GRANNY: %s", Error);
    }

    Now rebuild the whole project!

     

     

    3. Step:

    Go to the folder where we unziped the things of the first step and go to the lib folder. Copy the granny2.dll into your main client directory.

     

     

    Now you're finished and you have Granny 2.9.

    I hope this guide helped you!

     

     

    Special Thanks to Cryfact!

     

    Regards

    got this error


    Z81agHl.png

  2. error

     


    QUEST : snow_dungeon
    STATE : start
    WHEN  : 9010.chat ("Spawn Statue")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Jump level 9")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Jump level 10")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Spawn Boss")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Ending")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Spawn create Cords Test level 5")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Create Key level 5")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : 9010.chat ("TESTSERVER: SnowD Get cord from Level")
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    FUNCTION get_settings()
    FUNCTION is_TestServerMode()
    FUNCTION is_nemeres_dungeon()
    WHEN  : 20395.chat ("Join your group again")
            with ( party . is_party ( ) and d . find ( party . getf ( "ice_dungeon_map_index" ) ) )
    WHEN  : 20395.chat ("Nemeres waiting")
    WHEN  : 20397.chat ("The battle begin")
    WHEN  : make_dungeon.timer
    FUNCTION _ClearAlls()
    FUNCTION _CheckMembersLevel()
    WHEN  : logout
    WHEN  : login
    FUNCTION _GetLastTime()
    WHEN  : Jp_OutAllFailNotice.server_timer
    WHEN  : CheckLevelAndCountKillOnMobs.server_timer
    WHEN  : Jp_2.server_timer
    WHEN  : 30331.use
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : Jp_3.server_timer
    WHEN  : Jp_4.server_timer
    WHEN  : Jp_5.server_timer
    FUNCTION _DropKeyOnLevel5()
    FUNCTION _Create_Stones_level5()
    WHEN  : 20398.take
    WHEN  : Jp_6.server_timer
    WHEN  : Jp_7.server_timer
    WHEN  : Jp_8.server_timer
    WHEN  : 30333.use
            with snow_dungeon . is_nemeres_dungeon ( ) == true
    WHEN  : Jp_9.server_timer
    WHEN  : Jp_Boss.server_timer
    WHEN  : kill
    WHEN  : Jp_OutAll.server_timer
    FUNCTION _ExitAll()
    Calls undeclared function! :
    LIB_duration
    d.get_unique_vid
    d.getf_from_map_index
    d.new_jump_party
    d.setqf2
    d.spawn_mob_dir
    game.drop_item_and_select
    npc.get_vid
    party.get_leader_pid
    party.get_member_pids
    pc.give_item2_select
    q.begin_other_pc_block
    q.end_other_pc_block
    say_npc
    Abort (core dumped)
     

  3. root@freebsd:~/workspace/Server # gmake all
    --------------------------------------
    Full Build Start
    --------------------------------------
    gmake -C libserverkey dep
    gmake[1]: Entering directory '/root/workspace/Server/libserverkey'
    touch Depend
    g++  -Wall -O2 -pipe -mcpu=i686 -D_THREAD_SAFE -fno-exceptions  -MM *.cpp > Depend
    g++: not found
    Makefile:37: recipe for target 'dep' failed
    gmake[1]: *** [dep] Error 127
    gmake[1]: Leaving directory '/root/workspace/Server/libserverkey'
    Makefile:60: recipe for target 'all' failed
    gmake: *** [all] Error 2
    root@freebsd:~/workspace/Server # cd /root/workspace/Server/game/src/
    root@freebsd:~/workspace/Server/game/src # gmake
    gmake: *** No rule to make target '/usr/include/c++/4.2/cstdlib', needed by 'OBJDIR/BattleArena.o'.  Stop.
    root@freebsd:~/workspace/Server/game/src #
     

  4. i uploaded file on icon and item epk and added on local item list

    syserr : 

    0213 12:10:06684 :: invalid idx 0
    0213 12:10:13234 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR
    0213 12:10:13625 ::  CArea::LoadObject Property(2887841106) Load ERROR
    0213 12:10:13625 ::  CArea::LoadObject Property(1860707685) Load ERROR
    0213 12:10:13625 ::  CArea::LoadObject Property(1431524033) Load ERROR
    0213 12:10:14133 ::  CArea::LoadObject Property(1368853377) Load ERROR
    0213 12:10:14371 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010).  Automatic conversion will be attempted.
    0213 12:10:15154 :: CEffectManager::RegisterEffect - LoadScript(D:/ymir work/pc/common/effect/armor/armor-4-2-3.mse) Error
    0213 12:10:15154 :: CInstanceBase::RegisterEffect(eEftType=252, c_szEftAttachBone=Bip01, c_szEftName=D:/ymir work/pc/common/effect/armor/armor-4-2-3.mse, isCache=0) - Error
    0213 12:10:15154 :: CEffectManager::RegisterEffect - LoadScript(D:/ymir work/pc/common/effect/armor/armor-4-2-4.mse) Error
    0213 12:10:15154 :: CInstanceBase::RegisterEffect(eEftType=258, c_szEftAttachBone=Bip01, c_szEftName=D:/ymir work/pc/common/effect/armor/armor-4-2-4.mse, isCache=0) - Error
    0213 12:10:15154 :: CEffectManager::RegisterEffect - LoadScript(D:/ymir work/pc/common/effect/armor/armor-4-2-5.mse) Error
    0213 12:10:15154 :: CInstanceBase::RegisterEffect(eEftType=261, c_szEftAttachBone=Bip01, c_szEftName=D:/ymir work/pc/common/effect/armor/armor-4-2-5.mse, isCache=0) - Error
    0213 12:10:15154 :: CEffectManager::RegisterEffect - LoadScript(D:/ymir work/pc/common/effect/armor/armor-4-2-6.mse) Error
    0213 12:10:15154 :: CInstanceBase::RegisterEffect(eEftType=262, c_szEftAttachBone=Bip01, c_szEftName=D:/ymir work/pc/common/effect/armor/armor-4-2-6.mse, isCache=0) - Error
    0213 12:10:15209 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/buff/buff_item1.mse) Error
    0213 12:10:15209 :: CInstanceBase::RegisterEffect(eEftType=104, c_szEftAttachBone=, c_szEftName=d:/ymir work/effect/etc/buff/buff_item1.mse, isCache=0) - Error
    0213 12:10:15211 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/buff/buff_item3.mse) Error
    0213 12:10:15211 :: CInstanceBase::RegisterEffect(eEftType=106, c_szEftAttachBone=, c_szEftName=d:/ymir work/effect/etc/buff/buff_item3.mse, isCache=0) - Error
    0213 12:10:15212 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/buff/buff_item4.mse) Error
    0213 12:10:15212 :: CInstanceBase::RegisterEffect(eEftType=107, c_szEftAttachBone=, c_szEftName=d:/ymir work/effect/etc/buff/buff_item4.mse, isCache=0) - Error
    0213 12:10:15212 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/buff/drugup_green.mse) Error
    0213 12:10:15212 :: CInstanceBase::RegisterEffect(eEftType=108, c_szEftAttachBone=, c_szEftName=d:/ymir work/effect/etc/buff/drugup_green.mse, isCache=0) - Error
    0213 12:10:15212 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/buff/buff_item5.mse) Error
    0213 12:10:15212 :: CInstanceBase::RegisterEffect(eEftType=109, c_szEftAttachBone=, c_szEftName=d:/ymir work/effect/etc/buff/buff_item5.mse, isCache=0) - Error
    0213 12:10:15212 :: CEffectManager::RegisterEffect - LoadScript(d:/ymir work/effect/etc/buff/buff_item6.mse) Error
    0213 12:10:15212 :: CInstanceBase::RegisterEffect(eEftType=110, c_szEftAttachBone=, c_szEftName=d:/ymir work/effect/etc/buff/buff_item6.mse, isCache=0) - Error

     

  5. hi i used this quest 

     

    quest oxevent_manager begin
            state start begin
                    when 20011.chat."The Intelligence-Competition" begin
                            say_title("Uriel:")
                            say("")
                            say("Hey - You there!")
                            say("Yes, yes, exactly you - You look quite intelligent")
                            say("There is a test,")
                            say("it's called Intelligence-Competition!!!")
                            say("There are great rewards if you win.")
                            say("")
                            wait()

                            if game.get_event_flag("oxevent_status") == 0 then
                                    say_title("Uriel:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("When the competition start I can let you")
                                    say("participate in it, but you could also")
                                    say("just watch.")
                                    say("")
                                    say("The start time is still not determined")
                                    say("I will let you know, so be ready.")
                                    say("")
                            elseif game.get_event_flag("oxevent_status") == 1 then
                                    say_title("Uriel:")
                                    say("")
                                    say("Do you want to participate now?")
                                    say("Of course you can also just watch...")
                                    say("")

                                    local s = select("Participate", "Watch", "Cancel")

                                    if s == 1 then
                                            say_title("Uriel:")
                                            say("")
                                            say("Do you want to try it out?")
                                            say("Okay - Let's start.")
                                            say("")

                                            wait()

                                            pc.warp(896500, 24600)
                                    elseif s == 2 then
                                            say_title("Uriel:")
                                            say("")
                                            say("Watching?")
                                            say("Okay - Then you can watch here.")
                                            say("When you participate, then you have to stay here to the end.")
                                            say("")

                                            wait()

                                            pc.warp(896300, 28900)
                                    end
                            elseif game.get_event_flag("oxevent_status") == 2 then
                                    say_title("Uriel:")
                                    say("")
                                    ----"12345678901234567890123456789012345678901234567890"|
                                    say("The competition has already started.")
                                    say("This time you can't participate anymore!")
                                    say("Soon a next competition might start,")
                                    say("you will of course be informed.")
                                    say("At least you can still watch!")
                                    say("Do you want at least to watch?")
                                    say("")

                                    local s = select("Watch", "Cancel")
                                    if s == 1 then
                                            say_title("Uriel:")
                                            say("")
                                            say("Hmm, Hmm, are you watching?")
                                            say("To watch it a couple of times will benefit you,")
                                            say("if you are going to participate yourself.")
                                            say("")

                                            wait()

                                            pc.warp(896300, 28900)
                                    end
                            end
                    end

            when 20358.chat."OX event for GM" with pc.is_gm() begin

                local stat = oxevent.get_status()

                if stat == 0 then
                    say("now: OX Event Ends")
                    say("")

                    local s = select("Start Event", "End")

                    if s == 1 then
                        local v = oxevent.open()

                        if v == 0 then
                            say("Failed to load OX quiz, please check")
                            say("your files and try again.")
                            say("")
                            say("")
                        elseif v == 1 then
                            say("Load OX quiz successfully.")
                            say("Event starts!")
                            say("")

                            notice_all("Get ready for OX event!")
                            notice_all("Talk to Uriel to participate")
                        else
                            say("OX Event Error")
                            say("")
                        end
        end
                elseif stat == 1 then
                        say("now: OX Event starts")
                        say("User count "..oxevent.get_attender().." players")
                        say("")

                        local s = select("Close sign up", "End")

                        if s == 1 then
                            oxevent.close()

                            say("Now the sign up is closed you can start quiz.")
                            say("")
                            say("")
                        end
                elseif stat == 2 then
                        say("now: OX Event sign up is closed")
                        say("")

                        local s = select("Ask Question", "Restart the Event", "Close Event", "End")

                        if s == 1 then
                            local v = oxevent.quiz(1, 30)

                            if v == 0 then
                                say("Failed to start quiz")
                                say("")
                            elseif v == 1 then
                                say("Start quiz successfully")
                                say("")
                            else
                                say("OX Event Error")
                                say("")
                            end
                        elseif s == 2 then
                            oxevent.end_event()

                            notice_all("Attention everyone!")
                            notice_all("OX event will start again shortly")
                            notice_all("Participants will now be teleported to the city.")

                            say("OX Event Restart")
                            say("")
                        elseif s == 3 then
                            oxevent.end_event()

                            notice_all("OX event is over.")
                            notice_all("Participants will now be teleported to the city.")

                            say("End OX Event")
                            say("")
                        end
                elseif stat == 3 then
                        say("now: Loading quiz, please wait.")
                        say("")
                        say("")
                    else
                        say("now: Error")
                    end
                end

            when 20358.chat."Shut Down OX Event" with pc.is_gm() begin
                say("Force to shut down OX Event might cause problem,")
                say("are you sure you want to continue?")
                say("")
                say("")

                local s = select("Yes", "No")

                if s == 1 then
                    oxevent.end_event_force()

                    say("OX Event was forced to shut down")
                end
            end

            when 20358.chat."Give OX event reward " with pc.is_gm() begin
                say("Reward winners. Please enter item ID.")
                say("")

                local item_vnum = input()

                say("Please enter the quantitiy.")
                say("")

                local item_count = input()

                oxevent.give_item(item_vnum, item_count)

                say("You reward item to "..oxevent.get_attender().."")
                say("")
            end
            end
    end

     

     

    when i click on nameless flower it        say("Failed to start quiz") and quiz not load 

  6. On 17/11/2014 at 8:14 PM, iwitrag said:

    Hello metin2dev community!

     

    I'm new here and I'm learning how to mod metin.

    Yesterday I have been trying to work with item_proto and I must say - it's really difficult to find everything item_proto related (packers, converters, etc...)

     

    So I have made 2 converters and now I want to share 'em with this great community.

     

     

    HOW TO UNPACK/CONVERT/PACK ITEM_PROTO

    (this tutorial is only for people using 40K+ item_proto without TXT files (for example vanilla core)

     

    What we are going to do:

    1. Unpack item_proto (so we will get XML file)

    2. Convert this XML to SQL (for Navicat query)

    3. Convert SQL back to XML (so we can pack it again)

    4. Pack item_proto (from XML) 

     

    What we will need:

    1. Proto archiver (download) - http://stevecraft.cz/hracky/proto_archiver.rar

    2. My XML to SQL converter I have written (no download) - http://www.stevecraft.cz/hracky/xml_to_sql.php

    3. My SQL to XML converter I have written (no download) - http://www.stevecraft.cz/hracky/sql_to_xml.php

     

    How to do it:

    1. First of all we need to download and extract proto_archiver.rar (use WinRar or 7zip)

    2. Then we need to move our item_proto to folder, where we have extracted proto_archiver.rar

    3. Run unpack_item_proto.bat and item_proto.xml will appear

    4. Open item_proto.xml

    5. Open XML to SQL converter

    5. Make sure, that lines from item_proto.xml looks like example in XML to SQL converter (for example there must be column LocalizedName)

    6. Paste the content of item_proto.xml into textarea in XML to SQL converter.

    7. Click Convert and wait for action to be done

    8. Fix errors if any and try again (for example you can have , in name column so converter will think that that name are 2 columns separated by ,)

    9. After you have your conversion done, you can make query to your item_proto table.

    10. Do what you want (changes in DB, additional queries, ...)

    11. Now you need to dump SQL file (right click to item_proto table - dump SQL file)

    12. Save it somewhere and open it

    13. Delete everything on the start so only lines with INSERT INTO will remain

    14. Copy everything and paste it into SQL to XML converter and click Convert

    15. Everything should be ok now, so copy your XML result and save it into file item_proto.xml

    16. Run pack_item_proto.bat and it will make from new item_proto.xml packed item_proto

     

    DONE

     

     

    after xml to sql when i use query game not work so where is problem

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.