Jump to content

kodepiko

Member
  • Posts

    397
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Posts posted by kodepiko

  1. Well, I'll try to describe it better now.

    I have maybe 30 quests on server, compilation is without problem.

    make.sh:

    LIST_FILE='quest_list' 
    
    if [ -r $LIST_FILE ]; then 
    
        rm -rdf object 
        mkdir object 
    
        while read line; 
            do 
                ./qc $line 
            done < $LIST_FILE 
    else 
        echo $LIST_FILE' is missing' 
    fi

    Now, every quest is bugged like I write on the top.

    Every quest is bugged and looks like on the screenshot at first post? - so they don't showing any other text than square?

    Check syserr of your game core - it says you all, maybe it's questlib problem or ./make.sh / folder / qc don't have permission to something

    • Love 1
  2. yes I still to login channel, not crash in client but go to login again

     

    sry for my bad english

    If you write ps command at putty/virtualbox console you still see all processes?

    Umm.. you can login again to the server after disconnect? or you need to restart your server?

    It's important because only on that way we can say it's client or game problem

    • Love 1
  3. At now I have problem only with showing item price via private shop viewing by visitor (when I setup my shop I see correct price 2kkk+), if price extends 2kkk+ it shows 0 yang, but when I try to buy it I need real amount (for ex. 4kkk), so anyone can help me - where I should find this value?

     

    I think it's this part: (PythonNetworkStreamPhaseGame.cpp)

     

    case SHOP_SUBHEADER_GC_UPDATE_PRICE:
                PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetShopSellingPrice", Py_BuildValue("(i)", *(int *)&vecBuffer[0]));
                break;
    

    but I don't really know how to deal with it to make it long long (I tried change (int *) to (long long *) but no effect

     

    I have edited (PythonShop.cpp)

    PyObject * shopGetPrivateShopItemPrice(PyObject * poSelf, PyObject * poArgs)
    {
        BYTE bItemWindowType;
        if (!PyTuple_GetInteger(poArgs, 0, &bItemWindowType))
            return Py_BuildException();
        WORD wItemSlotIndex;
        if (!PyTuple_GetInteger(poArgs, 1, &wItemSlotIndex))
            return Py_BuildException();
        long long iValue = CPythonShop::Instance().GetPrivateShopItemPrice(TItemPos(bItemWindowType, wItemSlotIndex));
        return PyLong_FromLongLong(iValue);
    }
    
    and
    
    PyObject * shopAddPrivateShopItemStock(PyObject * poSelf, PyObject * poArgs)
    {
        BYTE bItemWindowType;
        if (!PyTuple_GetInteger(poArgs, 0, &bItemWindowType))
            return Py_BuildException();
        WORD wItemSlotIndex;
        if (!PyTuple_GetInteger(poArgs, 1, &wItemSlotIndex))
            return Py_BuildException();
        int iDisplaySlotIndex;
        if (!PyTuple_GetInteger(poArgs, 2, &iDisplaySlotIndex))
            return Py_BuildException();
        long long iPrice;
        if (!PyTuple_GetLongLong(poArgs, 3, &iPrice))
            return Py_BuildException();
        CPythonShop::Instance().AddPrivateShopItemStock(TItemPos(bItemWindowType, wItemSlotIndex), iDisplaySlotIndex, iPrice);
        return Py_BuildNone();
    }
    
  4. Do you edit your client for client -> server quest communication? If not there is no possibility to not working input

    Test this quest (you need to summon id 20001 npc and talk to him)

     

    quest working begin
        state start begin
            when 20001.chat."Working input" begin
                say_title("TEST")
                say("write smth")
                local something = input()
                chat("INPUT: "..something.." ")
            end
        end
    end
    
  5. You paste here wrong part of quest, I suggest you to paste complete OX quest or in best way you should find working OX event quest

    here it is: (I got it from another site)

    -------------------------------------------------------------- 
    --- For Epvp 
    --- Erza² 
    --- Automatic Ox Event 
    -------------------------------------------------------------- 
    quest automaticoxevent begin 
        state start begin 
            -- Dialogue with Uriel 
            when 20011.chat."GM: Automatic Ox Event" with pc.is_gm() and pc.get_name() == "Erza" begin 
                say_title(mob_name(npc.get_race())..":") 
                say("") 
                 
                say("Do you want to open the Ox Event? ") 
                say("") 
                local s = select(locale.yes,locale.no) 
                if(s == 2) then return end 
                say_title(mob_name(npc.get_race())..":") 
                say("") 
                 
                say("Ox opened the event!. ") 
                say("Please wait. ") 
                server_timer("countdown",10) 
                game.set_event_flag("automatic_oxevent_status",1) 
            end 
             
            --- Start Countdown !. 
            when countdown.server_timer begin 
                if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                else 
                    notice_all("<Automatic-OxEvent> Ox opened the event!. ") 
                    notice_all("<Automatic-OxEvent> 5 Minutes the countdown has begun and Entries will be closed at the end of 5 minutes.. ") 
                    server_timer("countdownone",60) 
                end 
            end 
             
            --- CountDown 2 
            when countdownone.server_timer begin 
                if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event !. ") 
                else 
                    notice_all("<Automatic-OxEvent> Ox closing entries : 4 minutes left") 
                    server_timer("countdowntwo",60) 
                end 
            end 
             
            --- CountDown 3 
            when countdowntwo.server_timer begin 
                if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event !. ") 
                else 
                    notice_all("<Automatic-OxEvent> Ox closing entries : 3 minutes left") 
                    server_timer("countdownthre",60) 
                end 
            end 
             
            --- CountDown 4 
            when countdownthre.server_timer begin 
                if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                else 
                    notice_all("<Automatic-OxEvent> Ox closing entries : 2 minutes left") 
                    server_timer("countdownfour",60) 
                end 
            end 
             
            --- CountDown 5 
            when countdownfour.server_timer begin 
                if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                else 
                    notice_all("<Automatic-OxEvent> Ox closing entries : 1 minutes left") 
                    server_timer("countdownfive",60) 
                end 
            end 
             
            --- Countdown 6 
            when countdownfive.server_timer begin 
                if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                else 
                    notice_all("<Automatic-OxEvent> Ox entries closed. ") 
                    notice_all("<Automatic-OxEvent> Join as a spectator!. ") 
                    server_timer("playercheck",5) 
                    game.set_event_flag("automatic_oxevent_status",2) 
                end 
            end 
             
            --- Player Check 
            when playercheck.server_timer begin 
                if(oxevent.get_attender() == 0) then 
                    notice_all("<Automatic-OxEvent> Event is closed because ; There's no one inside.. ") 
                    game.set_event_flag("automatic_oxevent_status",0) 
                else 
                    server_timer("startox",5) 
                end 
            end 
             
            --- Start Ox Event 
            when startox.server_timer begin 
                setskin(NOWINDOW) 
                quiz = oxevent.quiz(1,30) 
                if(quiz == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                    game.set_event_flag("automatic_oxevent_status",0) 
                    warp_all_to_village() 
                elseif(quiz == 1) then 
                    if(oxevent.get_attender() == 1) then 
                        game.set_event_flag("automatic_oxevent_status",0) 
                        notice_all("<Automatic-OxEvent> Event is over. See you soon ") 
                        warp_all_to_village() 
                    else 
                        server_timer("startoxone",40) 
                    end 
                else 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                    game.set_event_flag("automatic_oxevent_status",0) 
                    warp_all_to_village() 
                end 
            end 
             
            --- Start Ox 1 
            when startoxone.server_timer begin 
                setskin(NOWINDOW) 
                quiz = oxevent.quiz(1,30) 
                if(quiz == 0) then 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                    game.set_event_flag("automatic_oxevent_status",0) 
                    warp_all_to_village() 
                elseif(quiz == 1) then 
                    if(oxevent.get_attender() == 1) then 
                        game.set_event_flag("automatic_oxevent_status",0) 
                        notice_all("<Automatic-OxEvent> Event is over. See you soon ") 
                        warp_all_to_village() 
                    else 
                        server_timer("startox",40) 
                    end 
                else 
                    notice_all("an unexpected error occurred") 
                    notice_all("closing event!. ") 
                    game.set_event_flag("automatic_oxevent_status",0) 
                    warp_all_to_village() 
                end 
            end 
             
            when 20011.chat."Ox Event !. " begin 
                say_title(mob_name(npc.get_race())..":") 
                say("") 
                --- 
                if(game.get_event_flag("automatic_oxevent_status") == 1) then 
                say("Do you want to enter the effectiveness of the Ox") 
                say("") 
                local s = select(locale.yes,locale.no) 
                if(s == 2) then return end 
                pc.warp(896500, 24600) 
                elseif(game.get_event_flag("automatic_oxevent_status") == 2) then 
                say("Do you want to enter the effectiveness of the Ox") 
                say("") 
                local s = select(locale.yes,locale.no) 
                if(s == 2) then return end 
                pc.warp(896300, 28900) 
                elseif(game.get_event_flag("automatic_oxevent_status") == 0) then 
                say("The effectiveness of the Ox now closed") 
                say("") 
                end 
            end 
        end 
    end 
    

    Just replace yours OX EVENT quest and if this quest work and you want I can add for you a OX EVENT MEMBER LIMIT like in old quest

    • Love 1
  6. So none of quests are working for you?

    try simple quest:

     

    quest working begin
        state start begin
            when kill begin
                chat("YOU KILL MOB/PC")
            end
        end
    end
    

    save it as working.quest and put in locale_list or compile it by ./qc and write /reload q in game
    I think it depends on your quest which dumps core for ex. by wrong timer or smth like that

     

    Paste here your OX event quest so we can check it

    • Love 2
  7. did you change the money in uicommon?

    i mean this.

    		money = 0
    		if text and text.isdigit():
    			try:
    				money = long(text)
    			except ValueError:
    				#money = 2110000000
    				money = 19999999999 // This is the money of your shop

    Yes, as I writed this is OnValueUpdate, I do it this way:

     

    def __OnValueUpdate(self):
    		ui.EditLine.OnIMEUpdate(self.inputValue)
    
    		text = self.inputValue.GetText()
    
    		money = 0
    		if text:
    			try:
    				money = long(text)
    			except ValueError:
    				money = 9999999999999
    
    		self.moneyText.SetText(self.moneyHeaderText + localeInfo.NumberToMoneyString(money))

     

    @update It's my fault, I missed some shop item price packets and values in client binary.

    I don't know how to handle this:

    PythonShop.cpp (if I edit it this way I have error -C2665: 'PyTuple_GetInteger' : none of the 4 overloads could convert all the argument types)

     

    PyObject * shopAddPrivateShopItemStock(PyObject * poSelf, PyObject * poArgs)
    {
        BYTE bItemWindowType;
        if (!PyTuple_GetInteger(poArgs, 0, &bItemWindowType))
            return Py_BuildException();
        WORD wItemSlotIndex;
        if (!PyTuple_GetInteger(poArgs, 1, &wItemSlotIndex))
            return Py_BuildException();
        int iDisplaySlotIndex;
        if (!PyTuple_GetInteger(poArgs, 2, &iDisplaySlotIndex))
            return Py_BuildException();
        long long iPrice;
        if (!PyTuple_GetInteger(poArgs, 3, &iPrice))
            return Py_BuildException();
        CPythonShop::Instance().AddPrivateShopItemStock(TItemPos(bItemWindowType, wItemSlotIndex), iDisplaySlotIndex, iPrice);
        return Py_BuildNone();
    }
    
    and how handle PythonNetworkStreamPhaseGame.cpp ???
    
    case SHOP_SUBHEADER_GC_UPDATE_PRICE:
                PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetShopSellingPrice", Py_BuildValue("(i)", *(int *)&vecBuffer[0]));
    

    just change (int *) to (long long *)?

  8. Hello,

    I'm trying to raise limit of maximum item price at (private)shop, I change:

    root/uitooltip.py - def CutMoneyString, int() to long()

    root/uiprivateshopbuilder.py - def AcceptInputPrice, int to long

    root/uicommon.py - __OnValueUpdate, int to long

    root/uipickmoney.py (also for exchange yang) - def OnAccept, int to long

     

    At server/client source I changed everything (when I try to buy an item which is showing 0 yang price, system says I dont have too much yang (for ex. 3.000.000.000) and it's correct - when my yang amount is lower of course :) so price is correct via packets, but I think it's problem by showing that price somewhere in python :/

    I searched for int() but I didn't find anymore...

     

    Maybe some of you did item prices 2kkk+ and can help me?

    Regards

  9.  

    I've got a bug report that if your level is higher than 255, and you want to create a guild, it will fail, and your character will stuck. I will look after this ASAP, but now I don't have so much time. Sorry for this issue.

    It's nice to see that you support this topic and don't forget about this :)

    Yes, and also when you try to login with someone at guild... it disconnect

     

     

  10. Are you kidding me?

    Please read and do the whole tutorial...

    This time you forget to do this:

    guild.h
    Replace this:

    typedef struct SGuildMemberPacketData
    {   
    	DWORD pid;
    	BYTE grade;
    	BYTE is_general;
    	BYTE job;
    	BYTE level;
    	DWORD offer;
    	BYTE name_flag;
    	char name[CHARACTER_NAME_MAX_LEN+1];
    } TGuildMemberPacketData;

    To this:

    typedef struct SGuildMemberPacketData
    {   
    	DWORD pid;
    	BYTE byGrade;
    	BYTE byIsGeneral;
    	BYTE byJob;
    	int	 byLevel;
    	DWORD dwOffer;
    	BYTE byNameFlag;
    } TGuildMemberPacketData;

    If someone do this way, there is no more guild name in packet, so it doesn't appear at guild window.

    I think you forgot about this?

  11. Hello guys,

    maybe you know exactly what sections of source code I need to edit, to properly show for ex. guild member list with correct character lvl if it is more than 255+

    I have properly done showing lvl next to char etc. but have problems with guild member window and character select window (showing lvl of character)

     

    Can someone point me at good way? I tried ofc editing at game side and at client side guild.cpp and packets with guild members etc but after that when I login to game my client turns off :/

    if lvl of character is more than 255 for ex. 280 it show like 24 lvl

    Regards.

  12. I give you idea guys, just create a new state for yours quests, for ex.

     

    state start begin

    -- play sound

    set_state(next)

    end

     

    state next begin

    -- begin quest text etc

    end

     

    Now it works only once and don't spam with music, otherwise may be better option but this is the easiest and not bad.  ^_^

    • Love 1
×
×
  • 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.