[CF-Devel] Python/casino stuff
crossfire-devel-admin at archives.real-time.com
crossfire-devel-admin at archives.real-time.com
Fri Oct 24 15:24:07 CDT 2003
Nicolas Weeger wrote:
>>
It'd be really help to post a plugin snippet that exhibits the bug.
>
>
>
Actually it's easy to show (my apologies for not giving enough details
>
once again *writes down 'give enough details next time').
>
Start server, goto Goth's tavern, to the casino machine.
>
Drop some gold coins, and play until you get some gain.
>
Notice the gold coin #, you'll see it's incoherent
>
(you drop 50 coins, play machine, gain some, and there are only 5 on the
>
ground, for instance)
>
>>
IF what your doing is doing is calling the function to create the
>>
object, and then the function to set the nrof, then the behaviour
>>
above is correct. The setquantity has no idea of past object state,
>>
so thus doesn't know if it should set the value absolute or add to it.
>>
>>
The correct method then in the script would be to call getquanity on
>>
the item, and then add onto that.
>
>
>
I think the bug is that createobject, as used in the script, is assumed
>
to return a newly created object with nrof == 1. Thus using setquantity
>
is ok.
>
Which works most of the time, but not when there is already some objects
>
like the one being created (they get merged, thus nrof != 1)
>
>
Nicolas 'Ryo'
>
The way the objects are being created now is as follows (pretend this is
pseudo code even though it is Python :))
object = CFPython.CreateObject(cointype,(x,y)) <-- creates object
CFPython.SetQuantity(object, payoff) <-- sets quantity
I thought the second time through (you leave the coins on the floor)
the new coin object would be seperate until merged (when does this happen?)
This code I shamelessly lifted from the IPO scripts before I knew
anything about crossfire functions (like I do now ;)). As there has not
been much work done with the scritps there may be a better way this
should be done. For example I found out the hard way NEVER us
CFPython.RemoveObject without checking for the object first.
I am trying to write some reusable scripts to show/do common things like
add or remove X number of items safely or to call call the server paths
so any input on this would be great.
_______________________________________________
crossfire-devel mailing list
crossfire-devel at lists.real-time.com
https://mailman.real-time.com/mailman/listinfo/crossfire-devel
More information about the crossfire
mailing list