Jump to content

Recommended Posts

Posted (edited)

Hello.

 

This is a PvP protection system I made a while ago (1-2 years ago).

 

Basically what it is: If a player kills someone 4 consecutive times in a row without 10 seconds passing between each kill, a protection from the killer to the victim is added which means for the next 15 minutes, the killer will not get any rewards from killing the victim (rewards like pvp point and maybe other customs addons you have like on-kill reward). There are also checks for same clan, same ally and same ip. GMs are excluded from the protection.

 

If you find any issues reply here and I will fix them. There are NO CONFIGS, everything is hardcoded but it's basically 3 numbers that you can change on the code.

 

Ignore the l2spike package on PvpProtection class, add it anywhere and change it.

 

I know it can be improved to avoid many tasks, I will do it soon and update the topic.

 

http://pastebin.com/B9W2neb1

 

Use this one (avoid having many tasks by checking the time of each kill): http://pastebin.com/JD1igS6t

 

Also, in L2PcInstance, find setPvpKills(getPvpKills()+1) and ABOVE it add:

		if (PvpProtection.getInstance().protectionExists(this, targetPlayer))
		{
			sendMessage("You did not get any rewards from this kill.");
			return;
		}
		PvpProtection.getInstance().checkKill(this, targetPlayer);

And in GameServer add:

PvpProtection.getInstance();

It was coded on aCis (can't remember revision).

Edited by An4rchy
Posted (edited)

Don't forget AoE

This system checks player -> player kills, so aoe would still count. (since the player using AoE is killing another player, I mean same methods are called to update pvp kills)

Edited by An4rchy
Posted

Similar to your AuctionManager, probably end with ConcurrentException, both on maps and lists. Not sure about int integrity on kills aswell - notably on AoE kills (AtomicInteger is probably a better choice).

Posted (edited)

Similar to your AuctionManager, probably end with ConcurrentException, both on maps and lists. Not sure about int integrity on kills aswell - notably on AoE kills (AtomicInteger is probably a better choice).

I've tested similar systems (map accessed by many players, looped through etc) and never had a ConcurrentException before. Probably because it's too fast or I'm too lucky.

Anyway updated.

Edited by An4rchy
  • 1 year later...
Posted (edited)
    public void addNewProtection(Player killer, Player victim, KillStats ks)
    {
        killStats.remove(ks);
       
  ->      if (protections.containsKey(victim))
  ->         protections.get(victim).add(killer.getObjectId());
        else
        {

on these that i marked i get this warning  : Unlikely argument type Player for containsKey(Object) on a Map<Integer,List<Integer>>

 

what causing this ? i did compile and tested and wasnt working ...

**do we have any other code that protects pvp with hwid ip ?

 

i use 370 acis rev

Edited by Xenokage

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Are You working on a serious server project? Get Yourself a proper Updater / Launcher!   
    • The character stops walking when using a mana potion. any can help me?   IemData item_begin    etcitem    728    [mana_potion]    item_type=etcitem    slot_bit_type={none}    armor_type=none    etcitem_type=potion    recipe_id=0    blessed=0    weight=180    default_action=action_skill_reduce    consume_type=consume_type_stackable    initial_count=1    maximum_count=20    soulshot_count=0    spiritshot_count=0    reduced_soulshot={}    reduced_spiritshot={}    reduced_mp_consume={}    immediate_effect=1    price=0    default_price=2000    item_skill=[s_mana_potion]    critical_attack_skill=[none]    attack_skill=[none]    magic_skill=[none]    item_skill_enchanted_four=[none]    material_type=liquid    crystal_type=none    crystal_count=0    is_trade=1    is_drop=1    is_destruct=1    physical_damage=0    random_damage=0    weapon_type=none    can_penetrate=0    critical=0    hit_modify=0    avoid_modify=0    dual_fhit_rate=0    shield_defense=0    shield_defense_rate=0    attack_range=0    damage_range={}    attack_speed=0    reuse_delay=10000    mp_consume=0    magical_damage=0    durability=0    damaged=0    physical_defense=0    magical_defense=0    mp_bonus=0    category={}    enchanted=0    html=[item_default.htm]    equip_pet={@ALL_PET}    magic_weapon=0    enchant_enable=0    can_equip_sex=-1    can_equip_race={}    can_equip_change_class=-1    can_equip_class={}    can_equip_agit=-1    can_equip_castle=-1    can_equip_castle_num={}    can_equip_clan_leader=-1    can_equip_clan_level=-1    can_equip_hero=-1    can_equip_nobless=-1    can_equip_chaotic=-1    item_end   SkillData   skill_begin    skill_name=[s_mana_potion]    skill_id=50004    level=1    operate_type=A2    magic_level=1    effect={{t_mp;57;3}}    is_magic=0    mp_consume2=0    cast_range=-1    effective_range=-1    skill_hit_time=0    skill_cool_time=0    skill_hit_cancel_time=0    reuse_delay=0    activate_rate=-1    lv_bonus_rate=0    basic_property=none    abnormal_time=15    abnormal_lv=1    abnormal_type=mp_recovery    attribute=attr_none    effect_point=0    target_type=self    affect_scope=single    affect_limit={0;0}    next_action=none    debuff=0    ride_state={@ride_none}    skill_end  
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock