The following warnings occurred:
Warning [2] Use of undefined constant SAPI_NAME - assumed 'SAPI_NAME' (this will throw an Error in a future version of PHP) - Line: 3388 - File: inc/functions.php PHP 7.4.33-nmm7 (Linux)
File Line Function
/inc/functions.php 3388 errorHandler->error
/showthread.php 116 build_archive_link
Warning [2] Use of undefined constant IN_ARCHIVE - assumed 'IN_ARCHIVE' (this will throw an Error in a future version of PHP) - Line: 3331 - File: inc/functions.php PHP 7.4.33-nmm7 (Linux)
File Line Function
/inc/functions.php 3331 errorHandler->error
/inc/functions.php 3324 build_forum_breadcrumb
/showthread.php 195 build_forum_breadcrumb
Warning [2] Use of undefined constant IN_ARCHIVE - assumed 'IN_ARCHIVE' (this will throw an Error in a future version of PHP) - Line: 3331 - File: inc/functions.php PHP 7.4.33-nmm7 (Linux)
File Line Function
/inc/functions.php 3331 errorHandler->error
/showthread.php 195 build_forum_breadcrumb
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 786 - File: showthread.php PHP 7.4.33-nmm7 (Linux)
File Line Function
/showthread.php 786 errorHandler->error






Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Shop Sell packet
Author Message
Skul
Master
**

Posts: 413
Likes Given: 0
Likes Received: 19 in 15 posts
Joined: Jun 2012
Reputation: 9



Post: #1
Shop Sell packet
I redid the Shop Sell packet on my server and I'm having a problem that I can't understand. When trying to buy from a provisioner NPC, I get a total packet length of 1002 characters and spheresvr.exe returns a 'Packet Too Big' error. This does not allow anyone to buy from a provisioner. Then on the other hand I can buy from an armorer even though the packet length is over 3000 characters.

Here's the code:
Code:
[function f_packet_0x09e]
if (<uid.<argn2>.ischar>)
    if (<uid.<argn2>.npc>==brain_vendor)
        ctag.buysell=<argn1>
        if (<dargn1>==1)
            if (<uid.<argn2>.findlayer.28.rescount>)
                forcont <findlayer.21>
                    if (<uid.<argn2>.findlayer.28.findid.<baseid>>)
                        if (<tag0.override.value>) || (<value>)
                            if (<dlocal.x> < <ddef0.vendor_limit_sell>)
                                local.x += 1
                                local.uid<dlocal.x>=<uid>
                                local.uid<dlocal.x>.amount=<amount>
                                if (<tag0.override.value>)
                                    local.uid<dlocal.x>.value=<tag0.override.value>
                                else
                                    local.uid<dlocal.x>.value=<value>
                                endif
                            endif
                        endif
                    endif
                endfor
                if (<local.x>)
                    for x 1 <local.x>
                        if (strmatch(<local.packet>,0))
                            local.packet=d<local.uid<dlocal.x>> w<uid.<local.uid<dlocal.x>>.dispiddec> w<uid.<local.uid<dlocal.x>>.color> w<uid.<local.uid<dlocal.x>>.amount> w<uid.<local.uid<dlocal.x>>.value> w<qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <eval strlen(<uid.<local.uid<dlocal.x>>.name>)>:<ddef0.vendor_limit_names>> <qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <asc <uid.<local.uid<dlocal.x>>.name>>:<strsub 0 <eval <eval <ddef0.vendor_limit_names> *4> +-1> <asc <uid.<local.uid<dlocal.x>>.name>>>>
                        else
                            local.packet=<local.packet> d<local.uid<dlocal.x>> w<uid.<local.uid<dlocal.x>>.dispiddec> w<uid.<local.uid<dlocal.x>>.color> w<uid.<local.uid<dlocal.x>>.amount> w<uid.<local.uid<dlocal.x>>.value> w<qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <eval strlen(<uid.<local.uid<dlocal.x>>.name>)>:<ddef0.vendor_limit_names>> <qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <asc <uid.<local.uid<dlocal.x>>.name>>:<strsub 0 <eval <eval <ddef0.vendor_limit_names> *4> +-1> <asc <uid.<local.uid<dlocal.x>>.name>>>>
                        endif
                        local.packetlength += <eval <qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <eval strlen(<uid.<local.uid<dlocal.x>>.name>)>:<ddef0.vendor_limit_names>> +14>
                    endfor
                    if (<dlocal.x> > 5)
                        uid.<argn2>.speak You have many items I am interested in.
                    else
                        uid.<argn2>.speak What would you like to sell?
                    endif
                    sendpacket 09e w<eval <local.packetlength> +9> d<argn2> w<local.x> <local.packet>
                else
                    uid.<argn2>.speak Sorry you have nothing of interest.
                endif
            else
                uid.<argn2>.speak Sorry I am not buying any items at this time.
            endif
        else
            if (<uid.<argn2>.findlayer.26.rescount>)
                forcont <uid.<argn2>.findlayer.26>
                    if (<tag0.override.value>) || (<value>)
                        if (<dlocal.x> < <ddef0.vendor_limit_buy>)
                            local.x += 1
                            local.uid<dlocal.x>=<uid>
                            if (<tag0.override.value>)
                                local.uid<dlocal.x>.value=<tag0.override.value>
                            else
                                local.uid<dlocal.x>.value=<value>
                            endif
                        endif
                    endif
                endfor
            endif
            if (<uid.<argn2>.findlayer.27.rescount>)
                forcont <uid.<argn2>.findlayer.27>
                    if (<tag0.override.value>) || (<value>)
                        if (<dlocal.x> < <ddef0.vendor_limit_buy>)
                            local.x += 1
                            local.uid<dlocal.x>=<uid>
                            if (<tag0.override.value>)
                                local.uid<dlocal.x>.value=<tag0.override.value>
                            else
                                local.uid<dlocal.x>.value=<value>
                            endif
                        endif
                    endif
                endfor
            endif
            if (<local.x>)
                for x 1 <local.x>
                    if (strmatch(<local.packet>,0))
                        local.packet=d<local.uid<dlocal.x>> w<uid.<local.uid<dlocal.x>>.dispiddec> w<uid.<local.uid<dlocal.x>>.color> w<uid.<local.uid<dlocal.x>>.amount> w<uid.<local.uid<dlocal.x>>.value> w<qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <eval strlen(<uid.<local.uid<dlocal.x>>.name>)>:<ddef0.vendor_limit_names>> <qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <asc <uid.<local.uid<dlocal.x>>.name>>:<strsub 0 <eval <eval <ddef0.vendor_limit_names> *4> +-1> <asc <uid.<local.uid<dlocal.x>>.name>>>>
                    else
                        local.packet=<local.packet> d<local.uid<dlocal.x>> w<uid.<local.uid<dlocal.x>>.dispiddec> w<uid.<local.uid<dlocal.x>>.color> w<uid.<local.uid<dlocal.x>>.amount> w<uid.<local.uid<dlocal.x>>.value> w<qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <eval strlen(<uid.<local.uid<dlocal.x>>.name>)>:<ddef0.vendor_limit_names>> <qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <asc <uid.<local.uid<dlocal.x>>.name>>:<strsub 0 <eval <eval <ddef0.vendor_limit_names> *4> +-1> <asc <uid.<local.uid<dlocal.x>>.name>>>>
                    endif
                    local.packetlength += <eval <qval <eval strlen(<uid.<local.uid<dlocal.x>>.name>)> < <ddef0.vendor_limit_names> ? <eval strlen(<uid.<local.uid<dlocal.x>>.name>)>:<ddef0.vendor_limit_names>> +14>
                endfor
                if (<dlocal.x> > 5)
                    uid.<argn2>.speak I have many goods for sale.
                else
                    uid.<argn2>.speak What would you like to buy?
                endif
                ctag.buysell=
                serv.b <eval strlen(<local.packet>)>
                sendpacket 09e w<eval <local.packetlength> +9> d<argn2> w<local.x> <local.packet>
            else
                uid.<argn2>.speak Sorry I do not have any items in for sale at this time.
            endif
        endif
    endif
endif
return 1
Any feedback? Looks complicated but this line here:
Code:
                serv.b <eval strlen(<local.packet>)>
returns the total packet length.

How is it that 1002 characters is 'Too Big' while over 3000 characters is not?

Any feedback is much appreciated, thank you.

"I ask a question to the answer I already know."

Marchadium :: http://www.marchadium.ca/ :: Join us!
06-15-2014 11:57 AM
Visit this user's website Find all posts by this user Like Post Quote this message in a reply
Post Reply 


Messages In This Thread
Shop Sell packet - Skul - 06-15-2014 11:57 AM
RE: Shop Sell packet - Feeh - 06-15-2014, 01:34 PM
RE: Shop Sell packet - Skul - 06-16-2014, 02:19 AM
RE: Shop Sell packet - Feeh - 06-16-2014, 02:53 AM
RE: Shop Sell packet - Skul - 06-16-2014, 03:29 AM
RE: Shop Sell packet - Feeh - 06-16-2014, 04:24 AM
RE: Shop Sell packet - Skul - 06-16-2014, 04:58 AM
RE: Shop Sell packet - mrkarlo - 06-19-2014, 08:14 AM
RE: Shop Sell packet - Skul - 06-19-2014, 11:11 AM
RE: Shop Sell packet - mrkarlo - 06-19-2014, 06:28 PM
RE: Shop Sell packet - Skul - 06-20-2014, 03:19 AM
RE: Shop Sell packet - mrkarlo - 06-21-2014, 09:39 PM
RE: Shop Sell packet - Skul - 06-22-2014, 01:37 AM
RE: Shop Sell packet - Skul - 06-22-2014, 02:50 AM
RE: Shop Sell packet - mrkarlo - 06-22-2014, 03:14 AM
RE: Shop Sell packet - Skul - 06-22-2014, 03:16 AM
RE: Shop Sell packet - XuN - 06-23-2014, 04:03 AM
RE: Shop Sell packet - Skul - 06-23-2014, 04:18 AM
RE: Shop Sell packet - Feeh - 06-23-2014, 05:12 AM
RE: Shop Sell packet - Skul - 06-23-2014, 05:28 AM

Forum Jump:


User(s) browsing this thread: 2 Guest(s)