|
Много вопросов! |
|
|
ZanozA |
2.11.2012, 11:48
|
Novice
Сообщений: 58
Регистрация: 11.10.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.367
|
(IMG: style_emoticons/default/laugh.gif) Как его отключить? Код using Server; using System; using Server.Mobiles; using Server.RateDef; namespace Server.Misc { public class SkillCheck { private static readonly bool AntiMacroCode = false; //Change this to true to enable anti-macro code public static TimeSpan AntiMacroExpire = TimeSpan.FromMinutes( 5.0 ); //How long do we remember targets/locations? public const int Allowance = 3; //How many times may we use the same location/target for gain private const int LocationSize = 5; //The size of eeach location, make this smaller so players dont have to move as far private static bool[] UseAntiMacro = new bool[] { // true if this skill uses the anti-macro code, false if it does not false,// Alchemy = 0, true,// Anatomy = 1, true,// AnimalLore = 2, true,// ItemID = 3, true,// ArmsLore = 4, false,// Parry = 5, true,// Begging = 6, false,// Blacksmith = 7, false,// Fletching = 8, true,// Peacemaking = 9, true,// Camping = 10, false,// Carpentry = 11, false,// Cartography = 12, false,// Cooking = 13, true,// DetectHidden = 14, true,// Discordance = 15, true,// EvalInt = 16, true,// Healing = 17, true,// Fishing = 18, true,// Forensics = 19, true,// Herding = 20, true,// Hiding = 21, true,// Provocation = 22, false,// Inscribe = 23, true,// Lockpicking = 24, true,// Magery = 25, true,// MagicResist = 26, false,// Tactics = 27, true,// Snooping = 28, true,// Musicianship = 29, true,// Poisoning = 30, false,// Archery = 31, true,// SpiritSpeak = 32, true,// Stealing = 33, false,// Tailoring = 34, true,// AnimalTaming = 35, true,// TasteID = 36, false,// Tinkering = 37, true,// Tracking = 38, true,// Veterinary = 39, false,// Swords = 40, false,// Macing = 41, false,// Fencing = 42, false,// Wrestling = 43, true,// Lumberjacking = 44, true,// Mining = 45, true,// Meditation = 46, true,// Stealth = 47, true,// RemoveTrap = 48, true,// Necromancy = 49, false,// Focus = 50, true,// Chivalry = 51 true,// Bushido = 52 true,//Ninjitsu = 53 true // Spellweaving }; public static void Initialize() { Mobile.SkillCheckLocationHandler = new SkillCheckLocationHandler( Mobile_SkillCheckLocation ); Mobile.SkillCheckDirectLocationHandler = new SkillCheckDirectLocationHandler( Mobile_SkillCheckDirectLocation ); Mobile.SkillCheckTargetHandler = new SkillCheckTargetHandler( Mobile_SkillCheckTarget ); Mobile.SkillCheckDirectTargetHandler = new SkillCheckDirectTargetHandler( Mobile_SkillCheckDirectTarget ); //here is gainrates 4 each skill //for instance .15 would be a 15% chance to gain in the particular skill SkillInfo.Table[0].GainFactor = .15;// Alchemy = 0, SkillInfo.Table[1].GainFactor = .15;// Anatomy = 1, SkillInfo.Table[2].GainFactor = .15;// AnimalLore = 2, SkillInfo.Table[3].GainFactor = .15;// ItemID = 3, SkillInfo.Table[4].GainFactor = .15;// ArmsLore = 4, SkillInfo.Table[5].GainFactor = .15;// Parry = 5, SkillInfo.Table[6].GainFactor = .15;// Begging = 6, SkillInfo.Table[7].GainFactor = .12;// Blacksmith = 7, SkillInfo.Table[8].GainFactor = .15;// Fletching = 8, SkillInfo.Table[9].GainFactor = .15;// Peacemaking = 9, SkillInfo.Table[10].GainFactor = .15;// Camping = 10, SkillInfo.Table[11].GainFactor = .15;// Carpentry = 11, SkillInfo.Table[12].GainFactor = .15;// Cartography = 12, SkillInfo.Table[13].GainFactor = .15;// Cooking = 13, SkillInfo.Table[14].GainFactor = .15;// DetectHidden = 14, SkillInfo.Table[15].GainFactor = .15;// Discordance = 15, SkillInfo.Table[16].GainFactor = .15;// EvalInt = 16, SkillInfo.Table[17].GainFactor = .15;// Healing = 17, SkillInfo.Table[18].GainFactor = .15;// Fishing = 18, SkillInfo.Table[19].GainFactor = .15;// Forensics = 19, SkillInfo.Table[20].GainFactor = .15;// Herding = 20, SkillInfo.Table[21].GainFactor = .15;// Hiding = 21, SkillInfo.Table[22].GainFactor = .15;// Provocation = 22, SkillInfo.Table[23].GainFactor = .15;// Inscribe = 23, SkillInfo.Table[24].GainFactor = .15;// Lockpicking = 24, SkillInfo.Table[25].GainFactor = .15;// Magery = 25, SkillInfo.Table[26].GainFactor = .15;// MagicResist = 26, SkillInfo.Table[27].GainFactor = .15;// Tactics = 27, SkillInfo.Table[28].GainFactor = .15;// Snooping = 28, SkillInfo.Table[29].GainFactor = .15;// Musicianship = 29, SkillInfo.Table[30].GainFactor = .15;// Poisoning = 30 SkillInfo.Table[31].GainFactor = .15;// Archery = 31 SkillInfo.Table[32].GainFactor = .15;// SpiritSpeak = 32 SkillInfo.Table[33].GainFactor = .15;// Stealing = 33 SkillInfo.Table[34].GainFactor = .12;// Tailoring = 34 SkillInfo.Table[35].GainFactor = .15;// AnimalTaming = 35 SkillInfo.Table[36].GainFactor = .15;// TasteID = 36 SkillInfo.Table[37].GainFactor = .15;// Tinkering = 37 SkillInfo.Table[38].GainFactor = .15;// Tracking = 38 SkillInfo.Table[39].GainFactor = .15;// Veterinary = 39 SkillInfo.Table[40].GainFactor = .15;// Swords = 40 SkillInfo.Table[41].GainFactor = .15;// Macing = 41 SkillInfo.Table[42].GainFactor = .15;// Fencing = 42 SkillInfo.Table[43].GainFactor = .15;// Wrestling = 43 SkillInfo.Table[44].GainFactor = .15;// Lumberjacking = 44 SkillInfo.Table[45].GainFactor = .15;// Mining = 45 SkillInfo.Table[46].GainFactor = .15;// Meditation = 46 SkillInfo.Table[47].GainFactor = .15;// Stealth = 47 SkillInfo.Table[48].GainFactor = .15;// RemoveTrap = 48 SkillInfo.Table[49].GainFactor = .15;// Necromancy = 49 SkillInfo.Table[50].GainFactor = .15;// Focus = 50 SkillInfo.Table[51].GainFactor = .15;// Chivalry = 51 } public static bool Mobile_SkillCheckLocation( Mobile from, SkillName skillName, double minSkill, double maxSkill ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; double value = skill.Value; if ( value < minSkill ) return false; // Too difficult else if ( value >= maxSkill ) return true; // No challenge double chance = (value - minSkill) / (maxSkill - minSkill); Point2D loc = new Point2D( from.Location.X / LocationSize, from.Location.Y / LocationSize ); return CheckSkill( from, skill, loc, chance ); } public static bool Mobile_SkillCheckDirectLocation( Mobile from, SkillName skillName, double chance ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; if ( chance < 0.0 ) return false; // Too difficult else if ( chance >= 1.0 ) return true; // No challenge Point2D loc = new Point2D( from.Location.X / LocationSize, from.Location.Y / LocationSize ); return CheckSkill( from, skill, loc, chance ); } public static bool CheckSkill( Mobile from, Skill skill, object amObj, double chance ) { if ( from.Skills.Cap == 0 ) return false; bool success = ( chance >= Utility.RandomDouble() ); //here is modifications 2 skillgains double BaseSkillGain = skill.Info.GainFactor; double LowSkillMod = .005; double aSkillMod = .005; double bSkillMod = .01; double cSkillMod = .07; double dSkillMod = .055; double eSkillMod = .098; double fSkillMod = .085; double gSkillMod = .09; double hSkillMod = .095; double iSkillMod = .096; double jSkillMod = .097; double kSkillMod = .098; //Example: Player Skill is 85.3 - We would take the 12% base chance and subtract 8% - Player now has a 4% chance to gain. // ******************************************************************************** *********************************// double ComputedSkillMod = 0; // holds the percent chance to gain after checking players skill //here is modding gainrates. i.c. under lv 20% lowskillmod added 2 gain rate. from 20 to 40 askillmod substracted from it if ( skill.Base < 40.0 ) ComputedSkillMod = BaseSkillGain + LowSkillMod; else if ( skill.Base < 60.0 ) ComputedSkillMod = BaseSkillGain - aSkillMod; else if ( skill.Base < 80.0 ) ComputedSkillMod = BaseSkillGain - bSkillMod; else if ( skill.Base < 100.0 ) ComputedSkillMod = BaseSkillGain - cSkillMod; else if ( skill.Base < 120.0 ) ComputedSkillMod = BaseSkillGain - dSkillMod; else if ( skill.Base < 121.0 ) ComputedSkillMod = BaseSkillGain - eSkillMod; else if ( skill.Base < 125.0 ) ComputedSkillMod = BaseSkillGain - fSkillMod; else if ( skill.Base < 130.0 ) ComputedSkillMod = BaseSkillGain - gSkillMod; else if ( skill.Base < 135.0 ) ComputedSkillMod = BaseSkillGain - hSkillMod; else if ( skill.Base < 140.0 ) ComputedSkillMod = BaseSkillGain - iSkillMod; else if ( skill.Base < 145.0 ) ComputedSkillMod = BaseSkillGain - jSkillMod; else if ( skill.Base >= 145.0 ) ComputedSkillMod = BaseSkillGain - kSkillMod; //if u make substraction larger than skill gain rate if ( ComputedSkillMod < 0.001 ) ComputedSkillMod = 0.001; //following line used to see chance to gain ingame //from.SendMessage( "Your chance to gain {0} is {1}",skill.Name, ComputedSkillMod ); if ( from is BaseCreature && ((BaseCreature)from).Controlled ) ComputedSkillMod *= 2; ComputedSkillMod *= RateDefinitions.ratebonus; if ( from.Alive && ( ( ComputedSkillMod >= Utility.RandomDouble() && AllowGain( from, skill, amObj ) ) || skill.Base < 10.0 ) ) Gain( from, skill ); return success; } public static bool Mobile_SkillCheckTarget( Mobile from, SkillName skillName, object target, double minSkill, double maxSkill ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; double value = skill.Value; if ( value < minSkill ) return false; // Too difficult else if ( value >= maxSkill ) return true; // No challenge double chance = (value - minSkill) / (maxSkill - minSkill); return CheckSkill( from, skill, target, chance ); } public static bool Mobile_SkillCheckDirectTarget( Mobile from, SkillName skillName, object target, double chance ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; if ( chance < 0.0 ) return false; // Too difficult else if ( chance >= 1.0 ) return true; // No challenge return CheckSkill( from, skill, target, chance ); } private static bool AllowGain( Mobile from, Skill skill, object obj ) { if ( from is PlayerMobile && AntiMacroCode && UseAntiMacro[skill.Info.SkillID] ) return ((PlayerMobile)from).AntiMacroCheck( skill, obj ); else return true; } public enum Stat { Str, Dex, Int } public static void Gain( Mobile from, Skill skill ) { if ( from.Region is Regions.Jail ) return; if ( from is BaseCreature && ((BaseCreature)from).IsDeadPet ) return; if ( skill.SkillName == SkillName.Focus && from is BaseCreature ) return; if ( skill.Base < skill.Cap && skill.Lock == SkillLock.Up ) { int toGain = 1; if ( skill.Base < 20.0 ) toGain = 1; else if ( skill.Base < 40.0 ) toGain = 1; else if ( skill.Base < 60.0 ) toGain = 1; else if ( skill.Base < 90.0 ) toGain = 1; else if ( skill.Base < 120.0 ) toGain = 1; toGain *= RateDefinitions.gainbonus; Skills skills = from.Skills; if ( ( skills.Total / skills.Cap ) >= Utility.RandomDouble() )//( skills.Total >= skills.Cap ) { for ( int i = 0; i < skills.Length; ++i ) { Skill toLower = skills[i]; if ( toLower != skill && toLower.Lock == SkillLock.Down && toLower.BaseFixedPoint >= toGain ) { toLower.BaseFixedPoint -= toGain; break; } } } if ( (skills.Total + toGain) <= skills.Cap ) { skill.BaseFixedPoint += toGain; } } if ( skill.Lock == SkillLock.Up ) { SkillInfo info = skill.Info; if ( from.StrLock == StatLockType.Up && ((info.StrGain / 33.3) + RateDefinitions.StatGainBonus) > Utility.RandomDouble() ) { if( info.StrGain != 0 ) GainStat( from, Stat.Str ); } else if ( from.DexLock == StatLockType.Up && ((info.DexGain / 33.3) + RateDefinitions.StatGainBonus) > Utility.RandomDouble() ) { if( info.DexGain != 0 ) GainStat( from, Stat.Dex ); } else if ( from.IntLock == StatLockType.Up && ((info.IntGain / 33.3) + RateDefinitions.StatGainBonus) > Utility.RandomDouble() ) { if( info.IntGain != 0 ) GainStat( from, Stat.Int ); } //following line used to show chance to gain stats ingame //from.SendMessage( "Str: {0} Dex: {1} Int: {2}",((info.StrGain / 33.3) + RateDefinitions.StatGainBonus),((info.DexGain / 33.3) + RateDefinitions.StatGainBonus),((info.IntGain / 33.3) + RateDefinitions.StatGainBonus) ); } } public static bool CanLower( Mobile from, Stat stat ) { switch ( stat ) { case Stat.Str: return ( from.StrLock == StatLockType.Down && from.RawStr > 10 ); case Stat.Dex: return ( from.DexLock == StatLockType.Down && from.RawDex > 10 ); case Stat.Int: return ( from.IntLock == StatLockType.Down && from.RawInt > 10 ); } return false; } public static bool CanRaise( Mobile from, Stat stat ) { if ( !(from is BaseCreature && ((BaseCreature)from).Controlled) ) { if ( from.RawStatTotal >= from.StatCap ) return false; } switch ( stat ) { case Stat.Str: return ( from.StrLock == StatLockType.Up && from.RawStr < 125 ); case Stat.Dex: return ( from.DexLock == StatLockType.Up && from.RawDex < 125 ); case Stat.Int: return ( from.IntLock == StatLockType.Up && from.RawInt < 125 ); } return false; } public static void IncreaseStat( Mobile from, Stat stat, bool atrophy ) { atrophy = atrophy || (from.RawStatTotal >= from.StatCap); switch ( stat ) { case Stat.Str: { if ( atrophy ) { if ( CanLower( from, Stat.Dex ) && (from.RawDex < from.RawInt || !CanLower( from, Stat.Int )) ) --from.RawDex; else if ( CanLower( from, Stat.Int ) ) --from.RawInt; } if ( CanRaise( from, Stat.Str ) ) ++from.RawStr; break; } case Stat.Dex: { if ( atrophy ) { if ( CanLower( from, Stat.Str ) && (from.RawStr < from.RawInt || !CanLower( from, Stat.Int )) ) --from.RawStr; else if ( CanLower( from, Stat.Int ) ) --from.RawInt; } if ( CanRaise( from, Stat.Dex ) ) ++from.RawDex; break; } case Stat.Int: { if ( atrophy ) { if ( CanLower( from, Stat.Str ) && (from.RawStr < from.RawDex || !CanLower( from, Stat.Dex )) ) --from.RawStr; else if ( CanLower( from, Stat.Dex ) ) --from.RawDex; } if ( CanRaise( from, Stat.Int ) ) ++from.RawInt; break; } } } private static TimeSpan m_StatGainDelay = TimeSpan.FromMinutes( RateDefinitions.statgaindelay ); public static void GainStat( Mobile from, Stat stat ) { switch( stat ) { case Stat.Str: { if( (from.LastStrGain + m_StatGainDelay) >= DateTime.Now ) return; from.LastStrGain = DateTime.Now; break; } case Stat.Dex: { if( (from.LastDexGain + m_StatGainDelay) >= DateTime.Now ) return; from.LastDexGain = DateTime.Now; break; } case Stat.Int: { if( (from.LastIntGain + m_StatGainDelay) >= DateTime.Now ) return; from.LastIntGain = DateTime.Now; break; } } bool atrophy = ( (from.RawStatTotal / (double)from.StatCap) >= Utility.RandomDouble() );
IncreaseStat( from, stat, atrophy ); } } }
|
|
|
|
ZanozA |
2.11.2012, 14:23
|
Novice
Сообщений: 58
Регистрация: 11.10.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.367
|
Цитата(Sergius Grey @ 2.11.2012, 14:13) Нет, я имел ввиду его принцип работы... Или ты что, думаешь что каждой попыткой (действием) например пошить одежду или вскопнуть руду будет повышаться скил? Нет, это не антимакрос и отключение его этого не даст. Он работает не так. Нужно чтоб скилы росли с каждым действием соответствующему скилу - меняй это в том же скрипте. Как ты определил что у тебя антимакрос не отключается? Либо опять кастомного мусора полно, либо ты нихрена не знаешь как действует антимакрос.
Короче смотри! Когда я рублю лес *энное врем* выскакивает табличка на проверку макроса! Тобиж там нужно,выбрать указаны цифры!
|
|
|
|
ZanozA |
2.11.2012, 16:22
|
Novice
Сообщений: 58
Регистрация: 11.10.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.367
|
Хочу сделать чтоб все крафт скилы полегче качались! Я так понял это тут в SkillCheck.cs Код bool success = ( chance >= Utility.RandomDouble() ); double gc = (double)(from.Skills.Cap - from.Skills.Total) / from.Skills.Cap; gc += ( skill.Cap - skill.Base ) / skill.Cap; gc /= 3;
gc += ( 1.0 - chance ) * ( success ? 0.5 : (Core.AOS ? 0.0 : 0.2) ); gc /= 3; где 3 ето есть скорость прокачки? Я поставил другой серв там совсем другой код! Код using Server; using System; using Server.Mobiles; using Server.RateDef; namespace Server.Misc { public class SkillCheck { private static readonly bool AntiMacroCode = false; //Change this to true to enable anti-macro code public static TimeSpan AntiMacroExpire = TimeSpan.FromMinutes( 5.0 ); //How long do we remember targets/locations? public const int Allowance = 3; //How many times may we use the same location/target for gain private const int LocationSize = 5; //The size of eeach location, make this smaller so players dont have to move as far private static bool[] UseAntiMacro = new bool[] { // true if this skill uses the anti-macro code, false if it does not false,// Alchemy = 0, true,// Anatomy = 1, true,// AnimalLore = 2, true,// ItemID = 3, true,// ArmsLore = 4, false,// Parry = 5, true,// Begging = 6, false,// Blacksmith = 7, false,// Fletching = 8, true,// Peacemaking = 9, true,// Camping = 10, false,// Carpentry = 11, false,// Cartography = 12, false,// Cooking = 13, true,// DetectHidden = 14, true,// Discordance = 15, true,// EvalInt = 16, true,// Healing = 17, true,// Fishing = 18, true,// Forensics = 19, true,// Herding = 20, true,// Hiding = 21, true,// Provocation = 22, false,// Inscribe = 23, true,// Lockpicking = 24, true,// Magery = 25, true,// MagicResist = 26, false,// Tactics = 27, true,// Snooping = 28, true,// Musicianship = 29, true,// Poisoning = 30, false,// Archery = 31, true,// SpiritSpeak = 32, true,// Stealing = 33, false,// Tailoring = 34, true,// AnimalTaming = 35, true,// TasteID = 36, false,// Tinkering = 37, true,// Tracking = 38, true,// Veterinary = 39, false,// Swords = 40, false,// Macing = 41, false,// Fencing = 42, false,// Wrestling = 43, true,// Lumberjacking = 44, true,// Mining = 45, true,// Meditation = 46, true,// Stealth = 47, true,// RemoveTrap = 48, true,// Necromancy = 49, false,// Focus = 50, true,// Chivalry = 51 true,// Bushido = 52 true,//Ninjitsu = 53 true // Spellweaving }; public static void Initialize() { Mobile.SkillCheckLocationHandler = new SkillCheckLocationHandler( Mobile_SkillCheckLocation ); Mobile.SkillCheckDirectLocationHandler = new SkillCheckDirectLocationHandler( Mobile_SkillCheckDirectLocation ); Mobile.SkillCheckTargetHandler = new SkillCheckTargetHandler( Mobile_SkillCheckTarget ); Mobile.SkillCheckDirectTargetHandler = new SkillCheckDirectTargetHandler( Mobile_SkillCheckDirectTarget ); //here is gainrates 4 each skill //for instance .15 would be a 15% chance to gain in the particular skill SkillInfo.Table[0].GainFactor = .15;// Alchemy = 0, SkillInfo.Table[1].GainFactor = .15;// Anatomy = 1, SkillInfo.Table[2].GainFactor = .15;// AnimalLore = 2, SkillInfo.Table[3].GainFactor = .15;// ItemID = 3, SkillInfo.Table[4].GainFactor = .15;// ArmsLore = 4, SkillInfo.Table[5].GainFactor = .15;// Parry = 5, SkillInfo.Table[6].GainFactor = .15;// Begging = 6, SkillInfo.Table[7].GainFactor = .12;// Blacksmith = 7, SkillInfo.Table[8].GainFactor = .15;// Fletching = 8, SkillInfo.Table[9].GainFactor = .15;// Peacemaking = 9, SkillInfo.Table[10].GainFactor = .15;// Camping = 10, SkillInfo.Table[11].GainFactor = .15;// Carpentry = 11, SkillInfo.Table[12].GainFactor = .15;// Cartography = 12, SkillInfo.Table[13].GainFactor = .15;// Cooking = 13, SkillInfo.Table[14].GainFactor = .15;// DetectHidden = 14, SkillInfo.Table[15].GainFactor = .15;// Discordance = 15, SkillInfo.Table[16].GainFactor = .15;// EvalInt = 16, SkillInfo.Table[17].GainFactor = .15;// Healing = 17, SkillInfo.Table[18].GainFactor = .15;// Fishing = 18, SkillInfo.Table[19].GainFactor = .15;// Forensics = 19, SkillInfo.Table[20].GainFactor = .15;// Herding = 20, SkillInfo.Table[21].GainFactor = .15;// Hiding = 21, SkillInfo.Table[22].GainFactor = .15;// Provocation = 22, SkillInfo.Table[23].GainFactor = .15;// Inscribe = 23, SkillInfo.Table[24].GainFactor = .15;// Lockpicking = 24, SkillInfo.Table[25].GainFactor = .15;// Magery = 25, SkillInfo.Table[26].GainFactor = .15;// MagicResist = 26, SkillInfo.Table[27].GainFactor = .15;// Tactics = 27, SkillInfo.Table[28].GainFactor = .15;// Snooping = 28, SkillInfo.Table[29].GainFactor = .15;// Musicianship = 29, SkillInfo.Table[30].GainFactor = .15;// Poisoning = 30 SkillInfo.Table[31].GainFactor = .15;// Archery = 31 SkillInfo.Table[32].GainFactor = .15;// SpiritSpeak = 32 SkillInfo.Table[33].GainFactor = .15;// Stealing = 33 SkillInfo.Table[34].GainFactor = .12;// Tailoring = 34 SkillInfo.Table[35].GainFactor = .15;// AnimalTaming = 35 SkillInfo.Table[36].GainFactor = .15;// TasteID = 36 SkillInfo.Table[37].GainFactor = .15;// Tinkering = 37 SkillInfo.Table[38].GainFactor = .15;// Tracking = 38 SkillInfo.Table[39].GainFactor = .15;// Veterinary = 39 SkillInfo.Table[40].GainFactor = .15;// Swords = 40 SkillInfo.Table[41].GainFactor = .15;// Macing = 41 SkillInfo.Table[42].GainFactor = .15;// Fencing = 42 SkillInfo.Table[43].GainFactor = .15;// Wrestling = 43 SkillInfo.Table[44].GainFactor = .15;// Lumberjacking = 44 SkillInfo.Table[45].GainFactor = .15;// Mining = 45 SkillInfo.Table[46].GainFactor = .15;// Meditation = 46 SkillInfo.Table[47].GainFactor = .15;// Stealth = 47 SkillInfo.Table[48].GainFactor = .15;// RemoveTrap = 48 SkillInfo.Table[49].GainFactor = .15;// Necromancy = 49 SkillInfo.Table[50].GainFactor = .15;// Focus = 50 SkillInfo.Table[51].GainFactor = .15;// Chivalry = 51 } public static bool Mobile_SkillCheckLocation( Mobile from, SkillName skillName, double minSkill, double maxSkill ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; double value = skill.Value; if ( value < minSkill ) return false; // Too difficult else if ( value >= maxSkill ) return true; // No challenge double chance = (value - minSkill) / (maxSkill - minSkill); Point2D loc = new Point2D( from.Location.X / LocationSize, from.Location.Y / LocationSize ); return CheckSkill( from, skill, loc, chance ); } public static bool Mobile_SkillCheckDirectLocation( Mobile from, SkillName skillName, double chance ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; if ( chance < 0.0 ) return false; // Too difficult else if ( chance >= 1.0 ) return true; // No challenge Point2D loc = new Point2D( from.Location.X / LocationSize, from.Location.Y / LocationSize ); return CheckSkill( from, skill, loc, chance ); } public static bool CheckSkill( Mobile from, Skill skill, object amObj, double chance ) { if ( from.Skills.Cap == 0 ) return false; bool success = ( chance >= Utility.RandomDouble() ); //here is modifications 2 skillgains double BaseSkillGain = skill.Info.GainFactor; double LowSkillMod = .005; double aSkillMod = .005; double bSkillMod = .01; double cSkillMod = .07; double dSkillMod = .055; double eSkillMod = .098; double fSkillMod = .085; double gSkillMod = .09; double hSkillMod = .095; double iSkillMod = .096; double jSkillMod = .097; double kSkillMod = .098; //Example: Player Skill is 85.3 - We would take the 12% base chance and subtract 8% - Player now has a 4% chance to gain. // ******************************************************************************** *********************************// double ComputedSkillMod = 0; // holds the percent chance to gain after checking players skill //here is modding gainrates. i.c. under lv 20% lowskillmod added 2 gain rate. from 20 to 40 askillmod substracted from it if ( skill.Base < 40.0 ) ComputedSkillMod = BaseSkillGain + LowSkillMod; else if ( skill.Base < 60.0 ) ComputedSkillMod = BaseSkillGain - aSkillMod; else if ( skill.Base < 80.0 ) ComputedSkillMod = BaseSkillGain - bSkillMod; else if ( skill.Base < 100.0 ) ComputedSkillMod = BaseSkillGain - cSkillMod; else if ( skill.Base < 120.0 ) ComputedSkillMod = BaseSkillGain - dSkillMod; else if ( skill.Base < 121.0 ) ComputedSkillMod = BaseSkillGain - eSkillMod; else if ( skill.Base < 125.0 ) ComputedSkillMod = BaseSkillGain - fSkillMod; else if ( skill.Base < 130.0 ) ComputedSkillMod = BaseSkillGain - gSkillMod; else if ( skill.Base < 135.0 ) ComputedSkillMod = BaseSkillGain - hSkillMod; else if ( skill.Base < 140.0 ) ComputedSkillMod = BaseSkillGain - iSkillMod; else if ( skill.Base < 145.0 ) ComputedSkillMod = BaseSkillGain - jSkillMod; else if ( skill.Base >= 145.0 ) ComputedSkillMod = BaseSkillGain - kSkillMod; //if u make substraction larger than skill gain rate if ( ComputedSkillMod < 0.001 ) ComputedSkillMod = 0.001; //following line used to see chance to gain ingame //from.SendMessage( "Your chance to gain {0} is {1}",skill.Name, ComputedSkillMod ); if ( from is BaseCreature && ((BaseCreature)from).Controlled ) ComputedSkillMod *= 2; ComputedSkillMod *= RateDefinitions.ratebonus; if ( from.Alive && ( ( ComputedSkillMod >= Utility.RandomDouble() && AllowGain( from, skill, amObj ) ) || skill.Base < 10.0 ) ) Gain( from, skill ); return success; } public static bool Mobile_SkillCheckTarget( Mobile from, SkillName skillName, object target, double minSkill, double maxSkill ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; double value = skill.Value; if ( value < minSkill ) return false; // Too difficult else if ( value >= maxSkill ) return true; // No challenge double chance = (value - minSkill) / (maxSkill - minSkill); return CheckSkill( from, skill, target, chance ); } public static bool Mobile_SkillCheckDirectTarget( Mobile from, SkillName skillName, object target, double chance ) { Skill skill = from.Skills[skillName]; if ( skill == null ) return false; if ( chance < 0.0 ) return false; // Too difficult else if ( chance >= 1.0 ) return true; // No challenge return CheckSkill( from, skill, target, chance ); } private static bool AllowGain( Mobile from, Skill skill, object obj ) { if ( from is PlayerMobile && AntiMacroCode && UseAntiMacro[skill.Info.SkillID] ) return ((PlayerMobile)from).AntiMacroCheck( skill, obj ); else return true; } public enum Stat { Str, Dex, Int } public static void Gain( Mobile from, Skill skill ) { if ( from.Region is Regions.Jail ) return; if ( from is BaseCreature && ((BaseCreature)from).IsDeadPet ) return; if ( skill.SkillName == SkillName.Focus && from is BaseCreature ) return; if ( skill.Base < skill.Cap && skill.Lock == SkillLock.Up ) { int toGain = 1; if ( skill.Base < 20.0 ) toGain = 1; else if ( skill.Base < 40.0 ) toGain = 1; else if ( skill.Base < 60.0 ) toGain = 1; else if ( skill.Base < 90.0 ) toGain = 1; else if ( skill.Base < 120.0 ) toGain = 1; toGain *= RateDefinitions.gainbonus; Skills skills = from.Skills; if ( ( skills.Total / skills.Cap ) >= Utility.RandomDouble() )//( skills.Total >= skills.Cap ) { for ( int i = 0; i < skills.Length; ++i ) { Skill toLower = skills[i]; if ( toLower != skill && toLower.Lock == SkillLock.Down && toLower.BaseFixedPoint >= toGain ) { toLower.BaseFixedPoint -= toGain; break; } } } if ( (skills.Total + toGain) <= skills.Cap ) { skill.BaseFixedPoint += toGain; } } if ( skill.Lock == SkillLock.Up ) { SkillInfo info = skill.Info; if ( from.StrLock == StatLockType.Up && ((info.StrGain / 33.3) + RateDefinitions.StatGainBonus) > Utility.RandomDouble() ) { if( info.StrGain != 0 ) GainStat( from, Stat.Str ); } else if ( from.DexLock == StatLockType.Up && ((info.DexGain / 33.3) + RateDefinitions.StatGainBonus) > Utility.RandomDouble() ) { if( info.DexGain != 0 ) GainStat( from, Stat.Dex ); } else if ( from.IntLock == StatLockType.Up && ((info.IntGain / 33.3) + RateDefinitions.StatGainBonus) > Utility.RandomDouble() ) { if( info.IntGain != 0 ) GainStat( from, Stat.Int ); } //following line used to show chance to gain stats ingame //from.SendMessage( "Str: {0} Dex: {1} Int: {2}",((info.StrGain / 33.3) + RateDefinitions.StatGainBonus),((info.DexGain / 33.3) + RateDefinitions.StatGainBonus),((info.IntGain / 33.3) + RateDefinitions.StatGainBonus) ); } } public static bool CanLower( Mobile from, Stat stat ) { switch ( stat ) { case Stat.Str: return ( from.StrLock == StatLockType.Down && from.RawStr > 10 ); case Stat.Dex: return ( from.DexLock == StatLockType.Down && from.RawDex > 10 ); case Stat.Int: return ( from.IntLock == StatLockType.Down && from.RawInt > 10 ); } return false; } public static bool CanRaise( Mobile from, Stat stat ) { if ( !(from is BaseCreature && ((BaseCreature)from).Controlled) ) { if ( from.RawStatTotal >= from.StatCap ) return false; } switch ( stat ) { case Stat.Str: return ( from.StrLock == StatLockType.Up && from.RawStr < 125 ); case Stat.Dex: return ( from.DexLock == StatLockType.Up && from.RawDex < 125 ); case Stat.Int: return ( from.IntLock == StatLockType.Up && from.RawInt < 125 ); } return false; } public static void IncreaseStat( Mobile from, Stat stat, bool atrophy ) { atrophy = atrophy || (from.RawStatTotal >= from.StatCap); switch ( stat ) { case Stat.Str: { if ( atrophy ) { if ( CanLower( from, Stat.Dex ) && (from.RawDex < from.RawInt || !CanLower( from, Stat.Int )) ) --from.RawDex; else if ( CanLower( from, Stat.Int ) ) --from.RawInt; } if ( CanRaise( from, Stat.Str ) ) ++from.RawStr; break; } case Stat.Dex: { if ( atrophy ) { if ( CanLower( from, Stat.Str ) && (from.RawStr < from.RawInt || !CanLower( from, Stat.Int )) ) --from.RawStr; else if ( CanLower( from, Stat.Int ) ) --from.RawInt; } if ( CanRaise( from, Stat.Dex ) ) ++from.RawDex; break; } case Stat.Int: { if ( atrophy ) { if ( CanLower( from, Stat.Str ) && (from.RawStr < from.RawDex || !CanLower( from, Stat.Dex )) ) --from.RawStr; else if ( CanLower( from, Stat.Dex ) ) --from.RawDex; } if ( CanRaise( from, Stat.Int ) ) ++from.RawInt; break; } } } private static TimeSpan m_StatGainDelay = TimeSpan.FromMinutes( RateDefinitions.statgaindelay ); public static void GainStat( Mobile from, Stat stat ) { switch( stat ) { case Stat.Str: { if( (from.LastStrGain + m_StatGainDelay) >= DateTime.Now ) return; from.LastStrGain = DateTime.Now; break; } case Stat.Dex: { if( (from.LastDexGain + m_StatGainDelay) >= DateTime.Now ) return; from.LastDexGain = DateTime.Now; break; } case Stat.Int: { if( (from.LastIntGain + m_StatGainDelay) >= DateTime.Now ) return; from.LastIntGain = DateTime.Now; break; } } bool atrophy = ( (from.RawStatTotal / (double)from.StatCap) >= Utility.RandomDouble() );
IncreaseStat( from, stat, atrophy ); } } }
|
|
|
|
ZanozA |
2.11.2012, 16:41
|
Novice
Сообщений: 58
Регистрация: 11.10.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.367
|
Сори не розабралс! Вот макрос я его удалил вышла ошибка ! Как его отключить? MacroGump.csКод using System; using Server; using Server.Gumps; using Server.Network; using Server.Mobiles; using Server.Commands;
public class MacroGump : Gump { private Mobile badBoy;
MGResponseTimer myTimer; int tbutton = 2; private static int StartX = Utility.Random( 10, 100 ); private static int StartY = Utility.Random( 10, 70 ); public MacroGump( Mobile m ) : base( StartX, StartY ) { tbutton = Utility.Random( 1, 6 ); badBoy = m; string Answer1 = "Я тута и нет у меня никакого макроса!"; string Answer2 = "Я на макросе и клал болт на ваши проверки!"; int TextColor1 = Utility.Random( 2, 1000 ); int TextColor2 = Utility.Random( 2, 1000 ); int TextColor3 = Utility.Random( 2, 1000 ); int Gump1 = Utility.Random( 23000, 15 ); int Gump2 = Utility.Random( 23000, 15 ); int Gump3 = Utility.Random( 23000, 15 ); int Gump4 = Utility.Random( 23000, 15 );
Closable = false; Dragable = true; AddPage( 0 ); AddBackground( 0, 0, 420, 320, 5054 ); AddImageTiled( 9, 65, 200, 120, Gump1 ); AddImageTiled( 209, 185, 200, 120, Gump2 ); AddImageTiled( 209, 65, 200, 120, Gump3 ); AddImageTiled( 9, 185, 200, 120, Gump4 ); //AddAlphaRegion( 9, 65, 400, 240 );
AddHtml( 16, 10, 410, 50, @"Это окно проверки на макрос. Если Вы не используете макрос подтвердите своё присутствие.", false, false );
AddButton( 20, 72, 2472, 2473, 5, GumpButtonType.Reply, 0 ); AddLabel( 50, 75, TextColor2, tbutton == 5 ? Answer1 : Answer2 ); AddButton( 20, 112, 2472, 2473, 1, GumpButtonType.Reply, 0 ); AddLabel( 50, 115, TextColor1, tbutton == 1 ? Answer1 : Answer2 ); AddButton( 20, 152, 2472, 2473, 2, GumpButtonType.Reply, 0 ); AddLabel( 50, 155, TextColor3, tbutton == 2 ? Answer1 : Answer2 ); AddButton( 20, 192, 2472, 2473, 3, GumpButtonType.Reply, 0 ); AddLabel( 50, 195, TextColor3, tbutton == 3 ? Answer1 : Answer2 ); AddButton( 20, 232, 2472, 2473, 4, GumpButtonType.Reply, 0 ); AddLabel( 50, 235, TextColor2, tbutton == 4 ? Answer1 : Answer2 ); AddButton( 20, 272, 2472, 2473, 6, GumpButtonType.Reply, 0 ); AddLabel( 50, 275, TextColor1, tbutton == 6 ? Answer1 : Answer2 ); myTimer = new MGResponseTimer( badBoy ); } public override void OnResponse( NetState state, RelayInfo info ) { Mobile m = state.Mobile; if ( myTimer != null ) myTimer.Stop(); if( tbutton == info.ButtonID ) { ( ( PlayerMobile )m ).MacroUses = -100; m.SendMessage( 0x59, "Спасибо. Извините за неудобства. Удачной игры." ); } else { if ( state != null ) state.Dispose(); } } public class MGResponseTimer : Timer { private Mobile BadBoy; public MGResponseTimer( Mobile m ) : base( TimeSpan.FromMinutes(2), TimeSpan.FromMinutes(2) ) { BadBoy = m; this.Start(); } protected override void OnTick() { this.Stop(); if ( !BadBoy.Deleted && BadBoy.NetState != null ) BadBoy.NetState.Dispose(); } } public string Color( string text, int color ) { return String.Format( "<BASEFONT COLOR=#{0:X6}>{1}</BASEFONT>", color, text ); } }
|
|
|
|
Juzzver |
4.11.2012, 20:48
|
Модератор RunUO
Сообщений: 3.425
Регистрация: 1.11.2008 Группа: Супермодераторы Наличность: 22568 Из: Северная Корея
Пользователь №: 11.273
|
Флуд и оскорбления из темы вычищены. Для высказывания негатива используйте личные сообщения. Если не желаете помогать пользователям в связи с какими либо причинами, лучше проигнорируйте обращение, чем высказывать свое мнение в грубой форме.
Ответ по теме: Если имеется гамп "MacroGump", т.е. картинка которая появляется в игре, следовательно есть скрипт, в котором вызывается при каких либо условиях этот гамп. Предположительно такой скрипт может называться Macro.cs. Если данный скрипт не имеет в наличии включения и отключения системы, к примеру "Enable = true/false" и есть необходимость в том, чтобы убрать данную систему с сервера, и Вы не знаете где находятся скрипты этой системы, то достаточно удалить один из комплектующих скрипта, в данном случае это MacroGump.cs, в следствии чего появятся ошибки при загрузке сервера, которые будут ссылаться на определенный скрит(ы), следовательно удаление которых решит проблему с ошибками и уберет систему с сервера.
--------------------
|
|
|
|
ZanozA |
4.11.2012, 23:25
|
Novice
Сообщений: 58
Регистрация: 11.10.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.367
|
Цитата(Juzzver @ 4.11.2012, 20:48) Флуд и оскорбления из темы вычищены. Для высказывания негатива используйте личные сообщения. Если не желаете помогать пользователям в связи с какими либо причинами, лучше проигнорируйте обращение, чем высказывать свое мнение в грубой форме.
Ответ по теме: Если имеется гамп "MacroGump", т.е. картинка которая появляется в игре, следовательно есть скрипт, в котором вызывается при каких либо условиях этот гамп. Предположительно такой скрипт может называться Macro.cs. Если данный скрипт не имеет в наличии включения и отключения системы, к примеру "Enable = true/false" и есть необходимость в том, чтобы убрать данную систему с сервера, и Вы не знаете где находятся скрипты этой системы, то достаточно удалить один из комплектующих скрипта, в данном случае это MacroGump.cs, в следствии чего появятся ошибки при загрузке сервера, которые будут ссылаться на определенный скрит(ы), следовательно удаление которых решит проблему с ошибками и уберет систему с сервера.
Спасибо . И ещё вопрос. У меня при создание акаунта в сумке лежит 1000ка где изменить к примеру на 20000 !
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|