PenUltima Online

It is currently Sun Sep 07, 2008 1:19 am

All times are UTC - 8 hours




Post new topic Reply to topic  [ 9 posts ] 
Author Message
 Post subject: sendsellwindow packet error?
PostPosted: Sun Jan 07, 2007 3:52 pm 
Offline

Joined: Tue Feb 07, 2006 10:36 am
Posts: 52
Location: Rome, Italy
Code:
00:47:43.250 Server -> Client: 0x9E (SendShop), frequ: 1, len: 0x55
0000: 9E 55 00 00 1A 0F 68 00 02 40 01 60 1E 14 10 09 ->.U....h..@.`....
0010: 02 00 01 00 3C 00 1A 61 6E 20 6F 62 73 69 64 69 ->....<..an obsidi
0020: 61 6E 20 70 6C 61 74 65 6D 61 69 6C 20 61 72 6D ->an platemail arm
0030: 73 40 01 60 37 14 12 09 02 00 01 00 26 00 16 61 ->s@.`7.......&..a
0040: 6E 20 6F 62 73 69 64 69 61 6E 20 70 6C 61 74 65 ->n obsidian plate
0050: 20 68 65 6C 6D                                  -> helm

00:47:47.156 Client -> Server: 0x9F (SendShop), frequ: 1, len: 0x0F
0000: 9F 0F 00 00 1A 0F 68 00 01 40 01 60 1E 00 01    ->......h..@.`...

00:47:47.187 Server -> Client: 0x3B (AcceptTrade), frequ: 1, len: 0x08
0000: 3B 08 00 00 1A 0F 68 00                         ->;.....h.


This sequence is wrong, in fact i have sellled a platemail arm but server has answered with packet 0x3b with no item in it. In my backapck remain the item, that actually is only a graphical fake wich i can't use...

CORE Version:
097-2006-10-29 and 097-2007-01-04 and maybe in previous versions...

Ah another old bug:
even if i set fileaccess.cfg so:

Code:
FileAccess
{
   AllowRead 1
   AllowWrite 1
   AllowAppend 1
   AllowRemote 1
   Package *
   Extension .log
}


if i put a scripts in scripts/textcmd/anycmdlevel/
and do a readfile, core crash.

_________________
VenuS Admin Scripter on M4D

http://www.uovenus.net


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 08, 2007 5:25 am 
Offline
POL Developer
User avatar

Joined: Sun Feb 12, 2006 9:50 pm
Posts: 836
Location: Indiana, USA
See if you can reproduce this 100%. I ask because, that 3B it sent to you, is to clear out the sell list. Has nothing to do with what you sold. You need to check in the AI to make sure there was room, etc. Also check to make sure there was no errors returned anywhere.

Now, aside from this, it could even be a bug in moving the item and updating the client involving realms. Try everything, and let me know.

Check your weight also, do it get updated correctly now that item is no longer "suppose" to be in pack?

Is this every item you sell? Or just certain ones, and with certain npcs?

Have you read core-changes about Shini's AOS adjustments involving vendor windows?

Nothing else I can think of atm, maybe more later after you respond :D

_________________
POL Developer - The Penguin Scripter


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 08, 2007 3:15 pm 
Offline

Joined: Tue Feb 07, 2006 10:36 am
Posts: 52
Location: Rome, Italy
I've news.

This "graphical" bug (i say graphical because i've checked the weight is ok, the item is in vendor's container on storage) will disappear if i call a buy window before sell some items.

I mean, if i log in and open a buy window with one merchant (i don't need to buy anything, it's enough open e close the buy list), the next sales with sell window doesn't create this graphical bug. If i log in and i don't use a buy window everytime i make a sale, the sold items remain in my backpack (as a graphic only, obviously).

I've no more time now to go into deeper but tomorrow i will spend more time on this fact.

_________________
VenuS Admin Scripter on M4D

http://www.uovenus.net


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 08, 2007 5:59 pm 
Offline
POL Developer
User avatar

Joined: Sun Feb 12, 2006 9:50 pm
Posts: 836
Location: Indiana, USA
kk, will try to look into it soon before next 096 and 097 releases.

_________________
POL Developer - The Penguin Scripter


Top
 Profile  
 
 Post subject:
PostPosted: Mon Jan 08, 2007 7:15 pm 
Offline
POL Developer
User avatar

Joined: Sun Feb 12, 2006 9:50 pm
Posts: 836
Location: Indiana, USA
What client version, what UOExpansion, what UOFeatureEnable? Do you get the money for the sale?

_________________
POL Developer - The Penguin Scripter


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 09, 2007 9:39 am 
Offline

Joined: Tue Feb 07, 2006 10:36 am
Posts: 52
Location: Rome, Italy
UOFeatureEnable=0x20

Client 4 and 5 with account setted to AOS (with and without VENDOR_SEND_AOS_TOOLTIP flag).
Client 2 with account setted to T2A.

All these configurations (i haven't tried other ones) reproduce the bug.
I get the right amount of money for every sale.

_________________
VenuS Admin Scripter on M4D

http://www.uovenus.net


Last edited by VeNdOr on Tue Jan 09, 2007 10:00 am, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 09, 2007 9:56 am 
Offline

Joined: Tue Feb 07, 2006 10:36 am
Posts: 52
Location: Rome, Italy
I add one thing when i reproduce the bug i receive this:

Code:
18:46:20.62 Server -> Client: 0x3B (AcceptTrade), frequ: 1, len: 0x08
0000: 3B 08 00 00 1A 0F 68 00                         ->;.....h.


When i use the "buy trick" to avoid it i receive this:

Code:
18:47:25.62 Server -> Client: 0x3B (AcceptTrade), frequ: 3, len: 0x08
0000: 3B 08 00 00 1A 0F 68 00                         ->;.....h.

18:47:25.62 Server -> Client: 0x25 (AddSingleItemToContainer), frequ: 5, len: 0x14
0000: 25 40 02 79 BC 14 10 00 00 01 00 2C 00 4A 40 02 ->%@.y.......,.J@.
0010: 79 77 03 EB   


That is, in the second case, in fact server sends to client the packet for moving the object in merchant's container.
But in both of cases the items are sold correctly and moved to the merchant's container.

_________________
VenuS Admin Scripter on M4D

http://www.uovenus.net


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 09, 2007 11:40 am 
Offline
POL Developer
User avatar

Joined: Sun Feb 12, 2006 9:50 pm
Posts: 836
Location: Indiana, USA
Check your AI Script.

I ask because, this packet should be sent regardless, unless the vendor's inventories are not created yet (and created when you use the buy command in the ai, instead of at AI initialize). Mind posting the main part of the AI script?

_________________
POL Developer - The Penguin Scripter


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 10, 2007 8:18 am 
Offline

Joined: Tue Feb 07, 2006 10:36 am
Posts: 52
Location: Rome, Italy
Code:
...

var storage, inv_fs, inv_pb, inv_1c,inv_fk;

var merchant_type := GetObjProperty( Self(), "MerchantType" );

if(!merchant_type)
   SetObjProperty( Self(), "MerchantGroup", "Mage" );
   merchant_type := "Mage";
endif

storage := FindStorageArea( "Merchant Storage" );
if (!storage)
   storage:=CreateStorageArea( "Merchant Storage" );
   if (!storage)   
      syslog( "Unable to FindStorageArea Merchant Storage" );
      exit;
   endif
endif

inv_fs := find_or_create_item( storage, me.serial + " FS", UOBJ_METALCHEST );
inv_pb := find_or_create_item( storage, me.serial + " PB", UOBJ_METALCHEST );
inv_1c := find_or_create_item( storage, me.serial + " 1C", UOBJ_METALCHEST );

if (!inv_fs or !inv_pb or !inv_1c)
   exit;
endif

...

program merchant()
   var none;
   var flags;
   wipe_pb := readgameclock() + WIPEPB_MINUTES*60 + randomint(WIPEPB_MINUTES*6);
   setobjproperty(me,"meserial",me.serial);

   while (1)
      var ev;
      ev := os::wait_for_event(900);
      if (ev)
         case (ev.type)
         EVID_SPEECH:
//            check_lazy_speech(ev.text, ev.speech);
//            RespondToSpeech(me,ev.text);
        if(!CanUseFaction(ev.source))
              Say("I will not sell or buy nothing from you");
              continue;
           endif
            if (ev.text["buy"])
               if(ev.source.z == me.z)
                  var res;
                  flags:=0;
                 if(ev.source.acct.uo_expansion=="AOS")                  
                   flags:=VENDOR_SEND_AOS_TOOLTIP;
                 endif                    
                  res := SendBuyWindow( ev.source, inv_fs, self(), inv_pb,flags  );
                  if (!res)
                     SysLog( "SendBuyWindow failed: " + res.errortext );
                  endif
               endif
            elseif (ev.text["sell"])
               if(ev.source.z == me.z)
                 if(maxgold && curgold>=maxgold)
                    printtextaboveprivate(self(),"I've got no money to pay your goods ,try later!",ev.source);
                else
                    none:=adjustbuyprices(ev.source);
                    flags:=0;
                   if(ev.source.acct.uo_expansion=="AOS")                  
                     flags:=VENDOR_SEND_AOS_TOOLTIP;
                   endif                                                            
                    var res := SendSellWindow( ev.source,self(),  inv_fs, inv_pb,inv_1c,flags );
                    if (res)
                       if(!none)
                          printtextaboveprivate(self(),"You have nothing of interest to me!",ev.source);
                       else
                          PrintTextAbovePrivate( self(), "Can I help thee?", ev.source );
                       endif
                    else
                       SysLog( "SendSellWindow failed: " + res.errortext );
                    endif
                    resetbuyprices(ev.source);
                 endif
               endif
            elseif ( ev.text["vendor train"] or ev.text["merchant train"] )
               if(ev.source.z == me.z)
                  MerchantTrain( me , ev.source , ev.text );
               endif
            endif

         EVID_MERCHANT_BOUGHT:
            if(ev.amount>0)
               PrintTextAbovePrivate( self(), "The total of thy sale is " + ev.amount, ev.source );
            else
               printtextaboveprivate(self(),"I've got no money to pay your goods ,try later!",ev.source);
            endif

         EVID_MERCHANT_SOLD:
            PrintTextAbovePrivate( self(), "The total of thy purchase is " + ev.amount, ev.source );
         EVID_ITEM_GIVEN:
           if(!CanUseFaction(ev.source))
              Say("I will not train you");
              continue;
           endif
            TrainSkill( me , ev.source , ev.item );
         endcase
      endif

      if (ReadGameClock() > next_restock)
         RestockInventory( merchant_type, inv_fs );
         AdjustSellPrices();
         next_restock := next_restock + RESPAWN_MINUTES*60+randomint(RESPAWN_MINUTES*6);
      elseif( readgameclock()> wipe_pb)
        curgold:=0;
         foreach item in enumerateitemsincontainer(inv_pb)
            destroyitem(item);
         endforeach
         wipe_pb:=readgameclock()+WIPEPB_MINUTES*60+randomint(WIPEPB_MINUTES*6);
      endif
   endwhile

endprogram

_________________
VenuS Admin Scripter on M4D

http://www.uovenus.net


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 9 posts ] 

All times are UTC - 8 hours


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subice by phpBBservice.nl