Jump to content

lTz

Member
  • Posts

    42
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by lTz

  1. Hi, i just installed the stuff from this post

    What i don't know is how does the new gr2 work
    For example i want to add the wings from the tutorial folder, this have a gr2 file and a dds one
    Till now all my wings  had a mse , mde,  dds file
    i add them like this :
     

    chrmgr.RegisterEffect(chrmgr.EFFECT_REFINED + 29, "Bip01", "d:/ymir work/wings/test/test1.mse")

    But what if i don;t have the mse and mde , just gr2 and dds, is there a convertor ? or based on the post above i can just put them like wing.gr2 and it will work?
    I'm kinda confused on this part so if anyone know and want to share how i will appreciate
    Ty

  2. Hello
    I have a question about the headers
    All systems that i add got no problem but last one is the shop search
    After i press the search button i got dc and the only error is
    Process: UNKNOWN HEADER: 231, LAST HEADER: 0(1), REMAIN BYTES: 4, fd: 20

    Now the problem i have is that i don't have that header and all other are in pair
    server 225, 226 ,227 on CG
    client 225, 226, 227 on CG
    server 226,227 on GC
    client 226, 227 on GC

    this are the last headers and no header 231 , any idea on why i get an undefined header as an err?

    ty
     

  3. so i fixed the part with the yang and won overflow
     

    cmd_general and shop
    
    					long nTotalCheque = ch->GetCheque() + gold;
    
    					if (CHEQUE_MAX <= nTotalCheque)
    					{
    						sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", ch->GetPlayerID(), ch->GetName());
    						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("To much won."));
    						return true;
    					}
    					long long nTotalMoney = ch->GetGold()+count;
    
                        if (nTotalMoney > GOLD_MAX - 1)
                        {
                            sys_err("[OVERFLOW_GOLD] To much yang (GOLD_MAX) id %u name %s sum: %lld", ch->GetPlayerID(), ch->GetName(), 								nTotalMoney);
                            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("To much yang."));
                            return true;
                        }

    but the problem with -won when i buy item with 0 won in inv remain
    i added some chat txt to see if the checks work , but i get no reply

    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough yang or won to buy this item."));

    Ty
     

    Update:

    fixed the won problem with this

    shop.cpp
    
    if ((long long)dwPrice > 0 && (int)dwCheque > nTotalCheque) // Yang-Cheque
    		{
    			if (ch->GetGold() < (long long)dwPrice || ch->GetCheque() < (int)dwCheque)
    			{
    				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough yang or won to buy this item."));
    				return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    			}
    		}
    
    	if ((long long)dwPrice > 0 && (int)dwCheque <= nTotalCheque) // Yang
    		{
    			if (ch->GetGold() < (long long)dwPrice)
    			{
    				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough yang to buy this item."));
    				return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    			}
    		}
    
    	if ((long long)dwPrice <= 0 && (int)dwCheque > nTotalCheque) // cheque
    		{
    			if (ch->GetCheque() < (int)dwCheque)
    				{
    					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough won to buy this item."));
    					return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    				}
    		}


    TY all

  4. Hi, today i added the great offline shop to my test sv so i can make one like the one from IKARUS with that base
    I fixed all i can about it :
    - item dupe
    - the core crash
    and so on

    Now i'm stuck with a problem:
    Even if i put some checks so you can;t buy if won price > your won is not working like when i put the same for yang, it allow me to buy with 0 won and then it goes into negative
    Same if i put the check for yang/won when getting the money from shop and goldget > maxgold -1 so i don't get them if yang overflow
    it should not give me the money and give an lc_text and a return, but it give me the money more like the money disapear

    Here are some lines of code where i have the checks :

     

    shop.cpp
    
    int CShop::Buy(LPCHARACTER ch, BYTE pos)
    {
    	if (r_item.price < 0)
    	{
    		LogManager::instance().HackLog("SHOP_BUY_GOLD_OVERFLOW", ch);
    		return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    	}
    
    #ifdef __ENABLE_CHEQUE_SYSTEM__
    	if (r_item.cheque < 0)
    	{
    		LogManager::instance().HackLog("SHOP_BUY_CHEQUE_OVERFLOW", ch);
    		return SHOP_SUBHEADER_GC_NOT_ENOUGH_CHEQUE;
    	}
    #endif
    #ifdef __ENABLE_CHEQUE_SYSTEM__
    	if ((int)dwPrice>0 && (int)dwCheque > 0) // Yang-Cheque
    	{
    		if (ch->GetGold() < (int)dwPrice || ch->GetCheque() < (int)dwCheque)
    			return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY_CHEQUE;
    	}
    	else if ((int)dwPrice>0 && (int)dwCheque <= 0) // Yang
    	{
    		if (ch->GetGold() < (int)dwPrice)
    			return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    	}
    	else if ((int)dwPrice<=0 && (int)dwCheque > 0) // cheque
    	{
    		if (ch->GetCheque() < (int)dwCheque)
    			return SHOP_SUBHEADER_GC_NOT_ENOUGH_CHEQUE;
    	}
    #else
    	if (ch->GetGold() < r_item.price)
    	{
    		sys_log(1, "Shop::Buy : Not enough money : %s has %d, price %d", ch->GetName(), ch->GetGold(), dwPrice);
    		return SHOP_SUBHEADER_GC_NOT_ENOUGH_MONEY;
    	}
    #endif
    }
    cmd_general.cpp
    
    bool GetGift(LPCHARACTER ch, DWORD id,bool all=false)
    {
    #ifdef FULL_YANG
    				long long nTotalMoney = ch->GetGold()+count;
    
    				if (nTotalMoney > GOLD_MAX-1)
    				{
    					sys_err("[OVERFLOW_GOLD] To much (GOLD_MAX) id %u name %s total: %lld", ch->GetPlayerID(), ch->GetName(), nTotalMoney);
    					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to much yang!."));
    					return;
    				}
    #endif
    #ifdef FULL_YANG
    				long long nTotalMoney = ch->GetCheque() + count;
    
    				if (CHEQUE_MAX <= nTotalMoney)
    				{
    					sys_err("[OVERFLOW_CHEQUE] Overflow (CHEQUE_MAX) id %u name %s", ch->GetPlayerID(), ch->GetName());
    					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[SYSTEM] You cannot exceed the limit of 99 won."));
    					return true;
    				}
    #endif
    
    }


    As you can see from this checks it should work , but not:))
    Any idea why ?

    Ty all

  5. 5 hours ago, Amun said:
      Hide contents

      

     

    That's just some experiment I fucked around with, but it doesn't fix all the ways one could freeze the client(read the comments) and I also consider it unstable(doesn't work at all with py3).

     Had no time to make an update, but anyway, I would avoid going live with it.

    Hi, and ty for answer 

    I already tried with p3 and the only bug i found was that the client crash when over 2 clients are on on multiple occasions(this happen if in dungeon with multiple players but not everytime i think is a memory problem)(just for me idk others)

    I use 2.7 rn and all feels good, i even edited ur code so that it work with right click as well (hope u don't mind that )

    Ty for ur release and have a good time

    If u don't mind i can look into it and give updates 

    • Love 1
  6. HI, first u need to check if the key u want to press is in the right file
    For example if u want to use alt to make the render target show make sure that u have the def for that key in the part u want to open

    Lets say u want to open it from inventory
    U need to have something like this
     

    			elif app.IsPressed(app.DIK_LALT):
    				link = player.GetItemLink(itemSlotIndex)
    				ime.PasteString(link)

    In uiinventory.py and then in uitooltip.py before you call it for the rendertarget

    If u need to make it to idk lets say offlineshop, go in idk offlineshopwindow.py and make sure u have the code about that key for example alt, it does not need to be the same as i posted above but you need to have it implemented so the rendertarget know . Otherwise u need to prerender that by presing alt and moving mouse in and out
    make sure u have the rest of code if that file dont suport app.ispressed

    Hope you solve it 🙂

  7. A server is made from multiple files

    1. Serverfile

    This is what u upload on the freebsd to have the server running
    here u edit quests, drops, spawn, see problems and so on ( this is the ez stuff taht everyone can do)

    2. Mysql Database

    This is where all the information about the server is hold on it also upload in freebsd or some other database server
    Stuff like accounts, items, mobs, players, and so on
    Here u can edit stuff if u want but be carefull to dont fucked up the server:)

    3. GameSource

    This is the place where u include new codes for new sistems or edit code. This send data and receive data from client side
    It work hand to hand with the ClientSource
    This one need to be compiled on the serverside or a virtual machine on ur pc

    4. ClientSource

    This is the same But for Client Side , u add edit code to do stuff
    This to need to be compile with something like visual studio 2022

    5. Client

    In client u have all the resource that u need to make the game work
    Items, mobs, how UI work, txt, etc
    U also can add edit stuff to work with the server and client source
    All of this work hand to hand
    Client side need to be encrypted and crypted after each edit with something like eternexus

    6. Dump Proto

    This is what u need to implement new items/mobs in the game
    and then u move them to locale/ur lang/


    All this said , if u only need a fun server u can do only with the serverfile
    If u need to add ur own stuff u will need a source for them

    For start you can experiment with some from the web
    After i recomend to buy a full one from ppls that have years of experience in this domain and u can be sure that u will have no problems

    There are also other stuff like DBmanager, MSAmaker , but for start focus on what u need

  8. hi , ty all for ur answers
    i finaly found the problem
    That item was somehow dupping in my inventory , and that was what made the sv crash (hard to see that cuz that item was invisible and stacked over another visible one, and no sys)
    but i stil don't get why was crashing the server just when i move the window around , normal login didn;t have any problem
    As for the window freeze i try this one

    and i make it so i cant right click the window to so it avoid game freze

    Ty all

  9. yes is a test server
    all stuff is repaired ,fixed in the limit that i can
    i don't know either why it does that , the problem is that beside that core dump i got nothing else
    and about the move
    the client window when is getting moved at the speed of light it make the game froze and then server crash idk how to how but its happening 🙂
     ty for ur answers

  10. ty for answer
    i tried an /ip all
    i deleted that item nothing worked
    the main problem is that when i log in the game and press start and the loading window come if i move the game window around a lot the server crashes
    if i dont move it is ok

    i gues is because when i move the window the game freeze and data are kept floating and never reaching the server
    this is my ques i may be wrong

  11. Hello, so right now i discovered 1 bug , a big one to


    So when i connect to the server nothing happen all god i can play the game


    When i connect and start to move the game window around the game froze and the server crash


    My only err is in the client side :


    Phase HandShake does not handle this header (header: 86, last: 250, 86)


    idk the reason i will come back later with the core dump , maybe that will help

    Ty


    Edit
    core_dump
     

    #0  CItem::GetName (this=0x50a38740) at item.h:104
    #1  0x08192fd0 in ITEM_MANAGER::CreateItem (this=0xffffa3a8, vnum=41012,
        count=1, id=10003202, bTryMagic=false, iRarePct=-1, bSkipSave=false)
        at item_manager.cpp:178
    #2  0x0816ab87 in CInputDB::ItemLoad (d=<optimized out>,
        c_pData=<optimized out>, this=<optimized out>)
        at ../../common/singleton.h:24
    #3  0x0816d5b6 in CInputDB::Analyze (d=0xffff9cf8,
        c_pData=0x2a019e6e "]participante.", bHeader=0 '\000', this=0x2a8d647c)
        at input_db.cpp:3128
    #4  CInputDB::Process (this=0x2a8d647c, d=0x2a8d6000, orig=0x2af9fe80,
        bytes=21875, r_iBytesProceed=@0xffff9cf8: 1857) at input_db.cpp:3491
    #5  0x0812f7ee in DESC::ProcessInput (this=0x2a8d6000) at desc.cpp:312
    #6  0x08294601 in io_loop (fdw=0x295b1540) at main.cpp:1022
    #7  0x082947a1 in idle () at main.cpp:915
    #8  idle () at main.cpp:884
    #9  0x0807541d in main (argc=<optimized out>, argv=<optimized out>)
        at main.cpp:553

    i don't see why it crash from an item or something cuz it was doing the same crash even before adding that , so rn my only lead is the client sys
    Phase HandShake does not handle this header (header: 86, last: 250, 86)

  12. Edit : i manage to do it after some research
    what i did was something like this:
     

    public:
    	bool test;
    	void SetTest(bool value) {test = value;}
    
    PyObject* miniMapSetChose(PyObject* poSelf, PyObject* poArgs)
    {
        bool bValue;
        if (!PyTuple_GetBoolean(poArgs, 0, &bValue))
            return Py_BuildException();
    
        CPythonCharacterManager::Instance().SetChose(bValue);
    	Tracef("SetChose: %s", bValue ? "True" : "False");
    
        return Py_BuildNone();
    }
    { "SetChose", 				miniMapSetChose, 						METH_VARARGS },
    
    
    TraceF("code chose")
    if (test){
    	do stuff
    	TraceF("true")
    	}
    else{
    	do other sutff
    	TraceF("false")
    	}	
    }
    TraceF("looping rest of code")
    
    
    
    rest of code logic
    
    and in client i call it like miniMap.SetChose(False) or True
    
    

    now i have another problem

    whatever i chose True or False the code is working with the true value the traceback  only show true
    and after some other edits i manage to make it so that is show true or false whatever i chose but when this happen the rest of the code is no longer working the traceback is not showing looping rest of code

    If anyone know a fix or go around

    Ty 🙂

  13. Hi , i'm kinda new here and i want to ask something

    i have something like this in client source

    boll test = true;
    if(test){
    	do stuf
    else{
    	do other stuff
    	}
    }

    now the problem that i don't know how to do and pls don't make fun of me 🙂
    i want a button in  a window to acces this bool and based on the toggle  of that button to select an if
    ty for help:P

  14. Hi , i got a small problem with my items, i cant see the bonus in description 

    I change in navicat , item_proto client and server but same problem

    I get the bonus for ex 2000 hp but i cant see it on the item

    Do someone know where is the problem?

    Here is the code 

    Navicat: 

    55040    test+0   test2+0    35    0    0    1    0    0    0        3000    3000    55041    280    0    10    1    10    0    0    1(hp)    2000(hp value)    0    0    0    0    0    0    0    0    0    0    -1    -1    -1    -1    -1    -1    0    0    0

    item_proto:

    55040    test+0    ITEM_ELEMENTAL    0    1    NONE    NONE    NONE    NONE    3000    3000    55041    280    10    LEVEL    10    LIMIT_NONE    0    APPLY_MAX_HP    2000    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0

     

    or

    <ItemDef Vnum="55040" Name="test+0" LocalizedName="test2+0" Type="255" SubType="0" Weight="0" Size="1" AntiFlags="0" Flags="0" WearFlags="0" ImmuneFlags="0" Gold="3000" ShopBuyPrice="3000" LimitType0="1" LimitValue0="10" LimitType1="0" LimitValue1="0" ApplyType0="1" ApplyValue0="2000" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="55041" RefineSet="280" AlterToMagicItemPercent="10" Specular="0" GainSocketPercent="0" AddonType="0" />

    Ty for hep

  15. Hello, today i just add the new pet system to my server, i fix all the stuff but i get stuck here cuz idk what make this error

    When i sumon the pet in game he vanish after 1 sec

    Serverside sysser is clean

    And cliend sysser is :

    1201 20:40:42657 ::   File "game.py", line 1945, in BINARY_ServerCommand_Run
    
    1201 20:40:42659 ::   File "stringCommander.py", line 63, in Run
    
    1201 20:40:42659 ::   File "stringCommander.py", line 31, in __call__
    
    1201 20:40:42659 ::   File "stringCommander.py", line 20, in __call__
    
    1201 20:40:42659 ::   File "game.py", line 2002, in SetPetEvolution
    
    1201 20:40:42659 :: IndexError
    1201 20:40:42659 :: : 
    1201 20:40:42659 :: list index out of range
    1201 20:40:42659 :: 
    
    1201 20:40:42659 :: Unknown Server Command PetEvolution 4320 | PetEvolution
    1201 20:40:42707 :: Unknown Server Command PetExp 0 300 | PetExp

    I have this commands in server/client but idk why i get this err,

    If someone know the reason or have similar problem and he can tell me

    Ty for help

  16. hi , i need some help cuz is the first time when i work with dump_proto

    So idk how to make dump_proto ok for my files, i added all the stuff like COSTUM_HAIR etc , but when i compile item/mob proto , i get this

    1129 23:23:14585 :: LoadLocaleData - RegisterSkillDesc(locale/en/mob_proto) Error

    An solution will be welcome .

    Ty

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