Kayıt ol!             
Şifremi unuttum ?
   

  
 

Karakter Boyutu:  

Etiketler: hata nerede arkadaslar

Yazar Mesaj

JohnywaLker

U-Ser

Online durumu

Nereden: Afghanistan Kurtlarvadisi
Meslek: Bekci
Yaş:
U-S Puan: 0
  0  

#183080   2007-03-04 11:55 GMT      


Kod:
using System;
using System.Collections;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Gumps;
using Server.Prompts;
using Server.Targeting;
using Server.Misc;

namespace Server.Mobiles
{
public class VendorItem
{
private int m_Price;
private string m_Description;
private Item m_Item;

public VendorItem( Item item, int price, string description )
{
m_Item = item;
m_Price = price;
m_Description = description;
}

public Item Item{ get{ return m_Item; } }
public int Price{ get{ return m_Price; } set{ m_Price = value; } }
public string Description{ get{ return m_Description; } set{ m_Description = value; } }

public bool IsForSale{ get{ return ( m_Item != null && !m_Item.Deleted && m_Price > 0 ); } }
}

public class VendorBackpack : Backpack
{
[Constructable]
public VendorBackpack()
{
Layer = Layer.Backpack;
Weight = 1.0;
}

public override int MaxWeight{ get{ return 0; } }

public override bool CheckContentDisplay( Mobile from )
{
object root = this.RootParent;

if ( root is PlayerVendor && ((PlayerVendor)root).IsOwner( from ) )
return true;
else
return base.CheckContentDisplay( from );
}

public override bool CheckHold( Mobile m, Item item, bool message, bool checkItems )
{
if ( !base.CheckHold( m, item, message, checkItems ) )
return false;

Multis.BaseHouse house = Multis.BaseHouse.FindHouseAt( this );

if ( house != null && house.IsAosRules && !house.CheckAosStorage( 1 + item.TotalItems ) )
{
if ( message )
m.SendLocalizedMessage( 1061839 ); // This action would exceed the secure storage limit of the house.

return false;
}

return true;
}

public override bool IsAccessibleTo( Mobile m )
{
return true;
}

public override bool CheckItemUse( Mobile from, Item item )
{
if ( !base.CheckItemUse( from, item ) )
return false;

object root = this.RootParent;

if ( root is PlayerVendor && ((PlayerVendor)root).IsOwner( from ) )
return true;

if ( item is Container || item is Engines.BulkOrders.BulkOrderBook )
return true;

from.SendLocalizedMessage( 500447 ); // That is not accessible.
return false;
}

public override bool CheckTarget( Mobile from, Target targ, object targeted )
{
if ( !base.CheckTarget( from, targ, targeted ) )
return false;

object root = this.RootParent;

if ( root is PlayerVendor && ((PlayerVendor)root).IsOwner( from ) )
return true;

return ( targ is PlayerVendor.PVBuyTarget );
}

public override void OnSingleClickContained( Mobile from, Item item )
{
if ( RootParent is PlayerVendor )
{
PlayerVendor vend = (PlayerVendor)RootParent;

VendorItem vi = (VendorItem)vend.SellItems[item];

if ( vi != null )
{
if ( vi.IsForSale )
item.LabelTo( from, 1043304, vi.Price.ToString() ); // Price: ~1_COST~
else
item.LabelTo( from, 1043307 ); // Price: Not for sale.

if ( vi.Description != null && vi.Description != "" )
item.LabelTo( from, 1043305, vi.Description ); // Description: ~1_DESC~
}
}

base.OnSingleClickContained( from, item );
}

public VendorBackpack( Serial serial ) : base( serial )
{
}

public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

writer.Write( (int) 0 ); // version
}

public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );

int version = reader.ReadInt();
}
}

public class PlayerVendor : Mobile
{
private Hashtable m_SellItems;
private Mobile m_Owner;
private int m_BankAccount;
private int m_HoldGold;
private Timer m_PayTimer;
private bool m_Destroying;

public bool Destroying
{
get{ return m_Destroying; }
set{ m_Destroying = value; }
}

[CommandProperty( AccessLevel.GameMaster )]
public Mobile Owner{ get{ return m_Owner; } set{ m_Owner = value; } }

public override bool CanBeDamaged()
{
return m_Destroying;
}

public PlayerVendor( Mobile owner )
{
m_Owner = owner;

m_BankAccount = 1000;
m_HoldGold = 0;
m_SellItems = new Hashtable();

CantWalk = true;

if ( !Core.AOS )
NameHue = 0x35;

InitStats( 75, 75, 75 );
InitBody();
InitOutfit();

m_PayTimer = new PayTimer( this );
m_PayTimer.Start();
}

public override DeathMoveResult GetInventoryMoveResultFor( Item item )
{
return DeathMoveResult.MoveToCorpse;
}

public PlayerVendor( Serial serial ) : base( serial )
{
}

public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

writer.Write( (int)0 );//version
writer.Write( m_Owner );
writer.Write( m_BankAccount );
writer.Write( m_HoldGold );

ArrayList list = new ArrayList( m_SellItems.Values );

writer.Write( list.Count );
for (int i=0;i<list.Count;i++)
{
VendorItem vi = (VendorItem)list[i];
writer.Write( vi.Item );
writer.Write( vi.Price );
writer.Write( vi.Description );
}
}

public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );

int version = reader.ReadInt();

switch ( version )
{
case 0:
{
m_Owner = reader.ReadMobile();
m_BankAccount = reader.ReadInt();
m_HoldGold = reader.ReadInt();

int count = reader.ReadInt();
m_SellItems = new Hashtable();
for (int i=0;i<count;i++)
{
Item item = reader.ReadItem();
int p = reader.ReadInt();
string d = reader.ReadString();

if ( item != null && !item.Deleted )
m_SellItems[item] = new VendorItem( item, p, d );
}
break;
}
}

m_PayTimer = new PayTimer( this );
m_PayTimer.Start();

Blessed = false;

if ( Core.AOS && NameHue == 0x35 )
NameHue = -1;
}

public void InitBody()
{
Hue = Utility.RandomSkinHue();
SpeechHue = 0x3B2;

if ( !Core.AOS )
NameHue = 0x35;

if ( this.Female = Utility.RandomBool() )
{
this.Body = 0x191;
this.Name = NameList.RandomName( "female" );
}
else
{
this.Body = 0x190;
this.Name = NameList.RandomName( "male" );
}
}

public virtual void InitOutfit()
{
Item item = new FancyShirt( Utility.RandomNeutralHue() );
item.Layer = Layer.InnerTorso;
AddItem( item );
AddItem( new LongPants( Utility.RandomNeutralHue() ) );
AddItem( new BodySash( Utility.RandomNeutralHue() ) );
AddItem( new Boots( Utility.RandomNeutralHue() ) );
AddItem( new Cloak( Utility.RandomNeutralHue()) );

Item hair = new Item( Utility.RandomList( 0x203B, 0x2049, 0x2048, 0x204A ) );
hair.Hue = Utility.RandomNondyedHue();
hair.Layer = Layer.Hair;
hair.Movable = false;
AddItem( hair );

Container pack = new VendorBackpack();
pack.Movable = false;
AddItem( pack );
}

[CommandProperty( AccessLevel.GameMaster )]
public int BankAccount
{
get { return m_BankAccount; }
set { m_BankAccount = value; }
}

[CommandProperty( AccessLevel.GameMaster )]
public int HoldGold
{
get { return m_HoldGold; }
set { m_HoldGold = value; }
}

public int ChargePerDay
{
get
{
int total = 0;
foreach (VendorItem v in m_SellItems.Values)
{
total += v.Price;
}

total -= 500;

if ( total < 0 )
total = 0;

return 20 + (total / 500);
}
}

public Hashtable SellItems { get{ return m_SellItems; } }

public bool IsOwner( Mobile m )
{
return ( m == m_Owner || m.AccessLevel >= AccessLevel.GameMaster );
}

public override bool OnBeforeDeath()
{
if ( !base.OnBeforeDeath() )
return false;

Item shoes = this.FindItemOnLayer( Layer.Shoes );

if ( shoes is Sandals )
shoes.Hue = 0;

return true;
}

public override void OnAfterDelete()
{
m_PayTimer.Stop();
}

public override bool IsSnoop( Mobile from )
{
return false;
}

public override bool OnDragDrop( Mobile from, Item item )
{
if ( IsOwner( from ) )
{
if ( item is Gold )
{
SayTo( from, 503210 ); // I'll take that to fund my services.
m_BankAccount += item.Amount;
item.Delete();
return true;
}
else
{
Container pack = Backpack;

if ( pack != null && pack.TryDropItem( from, item, false ) )
{
GiveItem( from, item, null );
return true;
}
else
{
SayTo( from, 503211 ); // I can't carry any more.
return false;
}
}
}
else
{
SayTo( from, 503209 );// I can only take item from the shop owner.
return false;
}
}

private void GiveItem( Mobile from, Item item, Item target )
{
if ( !(target is Container) )
target = null;

if ( target != null )
{
VendorItem targetVI = (VendorItem) m_SellItems[target];

if ( targetVI != null && targetVI.IsForSale )
return;
}

VendorItem vi;
string name;

vi = AddInfo( item, target );

if ( item.Name != null && item.Name != "" )
name = item.Name;
else
name = item.ItemData.Name;

from.SendLocalizedMessage( 1043303, name  ); // Type in a price and description for ~1_ITEM~ (ESC=not for sale)
from.Prompt = new VendorPricePrompt( this, item, target, vi );
}

private VendorItem AddInfo( Item item, Item target )
{
int defPrice = 999;
VendorItem vi;

if ( item is BaseBook || ( item is Container && item.Items.Count == 0 ) )//|| item is KeyRing )
{
defPrice = 0;
}
else if ( target != null )
{
vi = (VendorItem)m_SellItems[target];

if ( vi != null && vi.Price > 0 )
defPrice = 0;
}

vi = new VendorItem( item, defPrice, "" );
m_SellItems[item] = vi;

if ( defPrice == 0 )
{
for (int i=0;i<item.Items.Count;i++)
AddInfo( (Item)item.Items[i], null );
}

item.InvalidateProperties();

return vi;
}

public override bool CheckNonlocalDrop( Mobile from, Item item, Item target )
{
if ( IsOwner( from ) )
{
GiveItem( from, item, target );
return true;
}
else
{
SayTo( from, 503209 );// I can only take item from the shop owner.
return false;
}
}

public void RemoveInfo( Item item )
{
m_SellItems.Remove( item );
for (int i=0;i<item.Items.Count;i++)
RemoveInfo( (Item)item.Items[i] );

item.InvalidateProperties();
}

public override bool CheckNonlocalLift( Mobile from, Item item )
{
if ( IsOwner( from ) )
{
RemoveInfo( item );
return true;
}
else
{
SayTo( from, 503223 );// If you'd like to purchase an item, just ask.
return false;
}
}

public override void OnDoubleClick( Mobile from )
{
if ( IsOwner( from ) )
{
from.SendGump( new PlayerVendorOwnerGump( this, from ) );
}
else
{
Container pack = Backpack;

if ( pack != null )
{
SayTo( from, 503208 );// Take a look at my goods.
pack.DisplayTo( from );
}
}
}

public override void GetChildProperties( ObjectPropertyList list, Item item )
{
base.GetChildProperties( list, item );

VendorItem vi = (VendorItem)m_SellItems[item];

if ( vi != null )
{
if ( !vi.IsForSale )
list.Add( 1043307 ); // Price: Not for sale.
else if ( vi.Price <= 0 )
list.Add( 1043306 ); // Price: FREE!
else
list.Add( 1043304, vi.Price.ToString() ); // Price: ~1_COST~

if ( vi.Description != null && vi.Description.Length > 0 )
list.Add( 1043305, vi.Description ); // Description: ~1_DESC~
}
}

public void GiveGold( Mobile from )
{
if ( m_HoldGold > 0 )
{
Item item = null;

if ( m_HoldGold < 1000000 )
{
if ( m_HoldGold < 5000 )
item = new Gold( m_HoldGold );
else
item = new BankCheck( m_HoldGold );

m_HoldGold = 0;
}
else
{
item = new BankCheck( 1000000 );
m_HoldGold -= 1000000;
}

if ( item != null )
{
from.BankBox.DropItem( item );
SayTo( from, 503234 ); // All the gold I have been carrying for you has been deposited into your bank account.
}
}
else
{
SayTo( from, 503215 ); // I am holding no gold for you.
}
}

private void Dismiss( Mobile from )
{
Container pack = this.Backpack;

if ( pack != null && pack.Items.Count > 0 )
{
SayTo( from, 503229 ); // Thou canst replace me until thy removest all the item from my stock.
return;
}

GiveGold( from );

if ( m_HoldGold > 0 )
{
from.AddToBackpack( new BankCheck( m_HoldGold ) );
m_HoldGold = 0;
}

Delete();
}

public override void DisplayPaperdollTo( Mobile m )
{
Container pack = Backpack;

if ( pack != null )
{
SayTo( m, 503208 );// Take a look at my goods.
pack.DisplayTo( m );
}
}

public override bool HandlesOnSpeech( Mobile from )
{
return ( from.GetDistanceToSqrt( this ) <= 3 );
}

public bool WasNamed( string speech )
{
string name = this.Name;

return ( name != null && Insensitive.StartsWith( speech, name ) );
}

public override void OnSpeech( SpeechEventArgs e )
{
Mobile from = e.Mobile;

if ( e.Handled )
return;

if ( e.HasKeyword( 0x3C ) || (e.HasKeyword( 0x171 ) && WasNamed( e.Speech ))  ) // vendor buy, *buy*
{
if ( IsOwner( from ) )
{
SayTo( from, 503212 ); // You own this shop, just take what you want.
}
else
{
from.SendLocalizedMessage( 503213 );// Select the item you wish to buy.
from.Target = new PVBuyTarget();
e.Handled = true;
}
}
else if ( e.HasKeyword( 0x3D ) || (e.HasKeyword( 0x172 ) && WasNamed( e.Speech )) ) // vendor browse, *browse
{
Container pack = Backpack;

if ( pack != null )
{
SayTo( from, IsOwner( from ) ? 1010642 : 503208 );// Take a look at my/your goods.
pack.DisplayTo( from );
e.Handled = true;
}
}
else if ( e.HasKeyword( 0x3E ) || (e.HasKeyword( 0x173 ) && WasNamed( e.Speech )) ) // vendor collect, *collect
{
if ( IsOwner( from ) )
{
GiveGold( from );
e.Handled = true;
}
}
else if ( e.HasKeyword( 0x3F ) || (e.HasKeyword( 0x174 ) && WasNamed( e.Speech )) ) // vendor status, *status
{
if ( IsOwner( from  ) )
{
from.SendGump( new PlayerVendorOwnerGump( this, from ) );
e.Handled = true;
}
else
{
SayTo( from, 503226 ); // What do you care? You don't run this shop.
}
}
else if ( e.HasKeyword( 0x40 ) || (e.HasKeyword( 0x175 ) && WasNamed( e.Speech )) ) // vendor dismiss, *dismiss
{
if ( IsOwner( from ) )
Dismiss( from );
}
else if ( e.HasKeyword( 0x41 ) || (e.HasKeyword( 0x176 ) && WasNamed( e.Speech )) ) // vendor cycle, *cycle
{
if ( IsOwner( from ) )
this.Direction = this.GetDirectionTo( from );
}
}

private class PayTimer : Timer
{
private PlayerVendor m_Vendor;

public PayTimer( PlayerVendor vend ) : base( TimeSpan.FromMinutes( Clock.MinutesPerUODay ), TimeSpan.FromMinutes( Clock.MinutesPerUODay ) )
{
m_Vendor = vend;
Priority = TimerPriority.OneMinute;
}

protected override void OnTick()
{
int pay = m_Vendor.ChargePerDay;
if ( m_Vendor.BankAccount < pay )
{
pay -= m_Vendor.BankAccount;
m_Vendor.BankAccount = 0;

if ( m_Vendor.HoldGold < pay )
{
m_Vendor.Say( 503235 ); // I regret nothing!postal
m_Vendor.Destroying = true;
m_Vendor.Blessed = false;
m_Vendor.Kill();
}
else
{
m_Vendor.HoldGold -= pay;
}
}
else
{
m_Vendor.BankAccount -= pay;
}
}
}

public class PVBuyTarget : Target
{
public PVBuyTarget() : base( 3, false, TargetFlags.None )
{
AllowNonlocal = true;
}

protected override void OnTarget( Mobile from, object targeted )
{
if ( targeted is Item )
{
Item item = (Item)targeted;

PlayerVendor vendor = item.RootParent as PlayerVendor;

if ( vendor == null )
return;

VendorItem vi = (VendorItem)vendor.SellItems[item];

if ( vi != null )
{
if ( vi.IsForSale )
from.SendGump( new PlayerVendorBuyGump( item, vendor, vi ) );
else
vendor.SayTo( from, 503202 ); // This item is not for sale.

return;
}

vendor.SayTo( from, 503216 ); // You can't buy that.
}
}
}
}
}

namespace Server.Prompts
{
public class VendorPricePrompt : Prompt
{
private PlayerVendor m_Vendor;
private Item m_Item;
private Item m_Cont;
private VendorItem m_VI;

public VendorPricePrompt( PlayerVendor vendor, Item item, Item target, VendorItem vi )
{
m_Vendor = vendor;
m_Item = item;
m_Cont = target;
m_VI = vi;
}

private void RecurseClearSales( Container cont )
{
ArrayList items = cont.Items;

for ( int i = 0; i < items.Count; ++i )
{
Item item = (Item)items[i];

m_Vendor.SellItems.Remove( item );
item.InvalidateProperties();

if ( item is Container )
RecurseClearSales( (Container) item );
}
}

private void SetInfo( Mobile from, int price, string desc )
{
bool allowed = true;

if ( price <= 0 )
{
VendorItem vi = null;

if ( m_Cont != null )
vi = (VendorItem)m_Vendor.SellItems[m_Cont];

if ( vi == null || vi.Price == 0 )
{
if ( m_Item is Container )
{
if ( m_Item is LockableContainer && ((LockableContainer)m_Item).Locked )
{
price = 999;
m_Vendor.SayTo( from, 1043298 ); // Locked items may not be made not-for-sale.
}
else if ( m_Item.Items.Count > 0 )
{
price = 999;
m_Vendor.SayTo( from, 1043299 ); // To be not for sale, all items in a container must be for sale.
}
}
else if ( !(m_Item is BaseBook) && !(m_Item is Engines.BulkOrders.BulkOrderBook) )
{
m_Vendor.SayTo( from, 1043301 );// Only the following may be made not-for-sale: books, containers, keyrings, and items in for-sale containers.
allowed = false;
}
}
}

if ( price > 0 && m_Item is Container )
RecurseClearSales( (Container) m_Item );

if ( allowed )
{
m_VI.Price = price;
m_VI.Description = desc;

m_VI.Item.InvalidateProperties();
}
}

public override void OnResponse( Mobile from, string text )
{
int space = text.IndexOf( ' ' );
if ( space == -1 )
space = text.Length;
int price = 0;
string desc = "";

try
{
price = Convert.ToInt32( text.Substring( 0, space ) );
}
catch
{
price = 0;
}

if ( space < text.Length )
desc = text.Substring( space+1 );

SetInfo( from, price, desc );
}

public override void OnCancel( Mobile from )
{
SetInfo( from, 0, "" );
}
}
}



PlayerVendor.cs Dosyasına geldiğim zaman hepinizin bildiği korkutucu vendor para buguyla karsı karsıya kalıyoruz ancak benim sanırım bir hatam var.

Değiştirdiğim bölüm


Kod:
public int ChargePerDay
{
get
{
int total = 0;
foreach (VendorItem v in m_SellItems.Values)
{
total += v.Price;
}

total -= 500;

if ( total < 0 )
total = 0;

return 20 + (total / 500);
}
}




Ve Buda Eklediğim Bölüm

Kod:
public int ChargePerRealWorldDay
{
get
{
if ( BaseHouse.NewVendorSystem )
{
long total = 0;
foreach ( VendorItem vi in m_SellItems.Values )
{
total += vi.Price;
}

return (int)(60 + (total / 500) * 3);
}
else
{
return ChargePerDay * 12;
}
}
}



Ancak bug yine oluyor 24 saat sonra vendora yine para geliyor :S Hatam nerede anlamış değilim Yardım ederseniz sevinirim.


Kanfelaketi

U-Ser

Online durumu

Nereden: Turkey istanbul
Meslek: Öğrenci
Yaş: 20
U-S Puan: 0.03
  -1  

#251752   2007-09-24 21:32 GMT      


ummmm


-I never imagined my life could turn out this way
-yeah ! since 10 july 2008 ı cant skate anymore.

Earl

U-Ser

Online durumu

Nereden: Turkey Göztepe.
Meslek: Öğrenci.
Yaş: 17
U-S Puan: 0
  1  

#251753   2007-09-24 21:37 GMT      


Bu para bugunun ne olduğunu bilmediğim için birşey söyleyemiycem bide onun ne olduğunu anlatsan ona göre yardım etsek ?



Aspirat primo fortuna labori
Me duce tutus eris
Vox populi vox dei
Ad maiorem dei gloriam...
Ad infinitum

wrak

U-Ser

Online durumu

Nereden: Turkey istanbul
Meslek: Öğrenci
Yaş: 18
U-S Puan: 0
  0  

#253576   2007-10-03 21:58 GMT      



oguz12

Banned

Online durumu

Nereden: Turkmenistan ULTİMA WORLD
Meslek: Öğrenci
Yaş:
U-S Puan: 0
  0  

#277742   2008-02-03 23:47 GMT      


birde benmde sorucam bişe war bankanın üstüne doğru merdiveni nasıl yapabilirim


imza



İlgili Başlıklar:

BaşlıklarBaşlık Yazarı
Soyadi Sistemi Hata Varmahmure
hues mul ve login hatasıbysalazar
Sphere server exception hatalariAkillis
-9 HatasıTuna221
Kendim yazdım iki script süper ama hata var :((PoliceX
  Online:
  7 site üyesi, 22 misafir
    toplam 29 kişi  
Giris sayfan olarak ayarla Sik Kullanilanlara Ekle Yenile Burdan bize ulasabilirsiniz

 
ANASAYFA | FORUMLAR | DÖKÜMANLAR | DOSYALAR | SCRIPTLER | SUNUCULAR | İLETİŞİM
Copyright (c) 2004-09 Ultima-Strike. All rights reserved.
Tasarım / Programlama: Uğur GÖK

Sistem Yapısı Seditio
Sayfa açılma süresi 1.896 sn.
SQL toplam zamanı: 1.258 sn. - SQL sorgusu: 33 - Ortalama SQL zamanı: 0.03813 sn.
Hosting Hizmetleri