Code: Select all
sub buy()
var ID_Vendor = 0x00000000
UO.Say(',buy regi')
UO.Say(',vendormenu ID_Vendor 2')
endsub
Code: Select all
sub sell()
var ID_Vendor = 0x00000000
repeat
UO.Say(',sell poison')
UO.Say(',vendormenu ID_Vendor 3')
wait(1500)
until not UO.Count(0x0F0A)
endsub
Конструкции не претендуют на шедевр, но работают.
Но это еще не самое ужасное, названия предметов для продажи или покупки на RunUO закодированы. Вот пример листа.
Code: Select all
<shoplist name="regi">
<shopitem name="1023976" want="-1"/>
<shopitem name="1023973" want="-1"/>
<shopitem name="1023974" want="-1"/>
<shopitem name="1023980" want="-1"/>
<shopitem name="1023963" want="-1"/>
<shopitem name="1023962" want="-1"/>
<shopitem name="1023972" want="-1"/>
<shopitem name="1023981" want="-1"/>
</shoplist>
Вот как их вычисляет сервер
Code: Select all
public override int LabelNumber
{
get
{
MultiComponentList mcl = this.Components;
if ( mcl.List.Length > 0 )
return 1020000 + (mcl.List[0].m_ItemID & 0x3FFF);
return base.LabelNumber;
}
}
А теперь на русском, как его вычислить простым смертным.
Берем тип предмета, например NS 0x0F88
Переводим 0F88 в десятичный вид и получаем 3976
1020000 + 3976 = <shopitem name="1023976" ……/>