Перейти к содержанию

masone

Постоялец
  • Публикаций

    834
  • Зарегистрирован

  • Посещение

  • Победитель дней

    6
  • Отзывы

    100%

Весь контент masone

  1. Какая версия ациса?
  2. Нормальные люди выпиливают тот мусор которые вы впилили сюда , зачем??? Особенно жабалюшн
  3. купи подписку за 12 евриков и все
  4. Сделайте проверку на поднятую аденку в вашем радиусе, если есть то убиваем таск, если подняли то запускаем
  5. тю,ну сделайте таск, который будет удалять предыдущую адену
  6. не углядел что для ла2 но в обычном штмл так не катит как вы написали
  7. hover при наведении active активный элемент
  8. masone

    Продам домен

    Кому этот мусор нужен?
  9. masone

    бафф агата

    может у вас есть тип TARGET_OWNER ? или скилтайп на DEBUFF попробуйте ещё
  10. ну проверить возможно lifetime в базе, а вообще под спойлер грузите сам xml файл который заливали
  11. если вы даже не знаете как найти, то вам дорогу только в платную сторону.
  12. исходники пв в шаре, берите и делайте) вычисляйте время респауна и бросайте анонс
  13. То есть,вы говорите: проблема ява-емуляторов только в том, что сделать так как нужно не всегда хватает времени или желания За 12 мать его лет существования интерлюда, ява эмули даже не содержут то количество АИ которое в ПТСе
  14. masone

    Вопрос: движок для проэкта

    нет,тут поддержка хтмл , обвязка без использования базы, так что вашу базу даже не сольют
  15. masone

    Вопрос: движок для проэкта

    задумайтесь про get simple на европвп же стоит..
  16. masone

    Вопрос: движок для проэкта

    get-simple возьмите и поставьте авторегу себе
  17. /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package ru.catssoftware.gameserver.network.serverpackets; import ru.catssoftware.Config; import ru.catssoftware.gameserver.model.L2Character; import ru.catssoftware.gameserver.model.L2Summon; import ru.catssoftware.gameserver.model.actor.instance.L2MonsterInstance; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2SiegeFlagInstance; import ru.catssoftware.gameserver.network.L2GameClient; /** * This class ... * * @version $Revision: 1.7.2.4.2.9 $ $Date: 2005/04/11 10:05:54 $ */ public class NpcInfo extends L2GameServerPacket { // ddddddddddddddddddffffdddcccccSSddd dddddc // ddddddddddddddddddffffdddcccccSSddd dddddccffd private static final String _S__22_NPCINFO = "[S] 16 NpcInfo"; private L2Character _activeChar; private int _x, _y, _z, _heading; private int _idTemplate; private boolean _isSummoned; private int _mAtkSpd, _pAtkSpd; private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd, _flWalkSpd, _flyRunSpd, _flyWalkSpd; @SuppressWarnings("unused") private int _rhand; @SuppressWarnings("unused") private int _lhand; @SuppressWarnings("unused") private int _chest; @SuppressWarnings("unused") private int _team; private int _collisionHeight, _collisionRadius; private String _name = ""; private String _title = ""; @SuppressWarnings("unused") private int _form = 0; public NpcInfo(L2NpcInstance cha) { _activeChar = cha; _idTemplate = cha.getTemplate().getIdTemplate(); _rhand = cha.getRightHandItem(); _lhand = cha.getLeftHandItem(); _isSummoned = cha.isShowSummonAnimation(); _collisionHeight = cha.getCollisionHeight(); _collisionRadius = cha.getCollisionRadius(); if(cha.getTemplate().isServerSideName()) { _name = cha.getTemplate().getName(); } else { _name = cha.getName(); } _team = _activeChar.getTeam(); if (cha.isChampion()) { _title = cha.isChampion2() ? Config.CHAMPION_TITLE2 : Config.CHAMPION_TITLE; _team = cha.isChampion2() ? Config.CHAMPION_AURA2 : Config.CHAMPION_AURA; } else if (cha.getTemplate().isServerSideTitle()) { _title = cha.getTemplate().getTitle(); } else { _title = cha.getTitle(); } if (Config.SHOW_NPC_LVL && _activeChar instanceof L2MonsterInstance) { String t = "Lv " + cha.getLevel() + (cha.getAggroRange() > 0 ? "*" : ""); if (_title != null && !_title.isEmpty()) { t += " " + _title; } _title = t; } if (_activeChar instanceof L2SiegeFlagInstance) { _title = cha.getTitle(); } _x = _activeChar.getX(); _y = _activeChar.getY(); _z = _activeChar.getZ(); _heading = _activeChar.getHeading(); _mAtkSpd = _activeChar.getMAtkSpd(); _pAtkSpd = _activeChar.getPAtkSpd(); _runSpd = _activeChar.getTemplate().getBaseRunSpd(); _walkSpd = _activeChar.getTemplate().getBaseWalkSpd(); _swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd; _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd; } public NpcInfo(L2Summon cha, int val) { _activeChar = cha; _idTemplate = cha.getTemplate().getIdTemplate(); _rhand = cha.getWeapon(); _lhand = 0; _chest = cha.getArmor(); int _val = val; _collisionHeight = _activeChar.getTemplate().getCollisionHeight(); _collisionRadius = _activeChar.getTemplate().getCollisionRadius(); if(cha.getTemplate().isServerSideName()) { _name = cha.getTemplate().getName(); } else { _name = cha.getName(); } _title = cha.getOwner() != null ? (cha.getOwner().isOnline() == 0 ? "" : cha.getOwner().getName()) : ""; // when owner online, summon will show in title owner name /* if (cha.isAgathion()) { _name = " "; _title = " "; } */ int npcId = cha.getTemplate().getNpcId(); if (npcId == 16041 || npcId == 16042) { if (cha.getLevel() > 84) { _form = 3; } else if (cha.getLevel() > 79) { _form = 2; } else if (cha.getLevel() > 74) { _form = 1; } } else if (npcId == 16025 || npcId == 16037) { if (cha.getLevel() > 69) { _form = 3; } else if (cha.getLevel() > 64) { _form = 2; } else if (cha.getLevel() > 59) { _form = 1; } } _x = _activeChar.getX(); _y = _activeChar.getY(); _z = _activeChar.getZ(); _heading = _activeChar.getHeading(); _mAtkSpd = _activeChar.getMAtkSpd(); _pAtkSpd = _activeChar.getPAtkSpd(); _runSpd = cha.getPetSpeed(); _walkSpd = cha.isMountable() ? 45 : 30; _swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd; _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd; _team = _activeChar.getTeam(); } @Override protected void writeImpl(L2GameClient client, L2PcInstance activeChar) { if (_activeChar instanceof L2Summon) { if (((L2Summon) _activeChar).getOwner() != null && ((L2Summon) _activeChar).getOwner().getAppearance().isInvisible()) { return; } } writeC(0x16); writeD(_activeChar.getObjectId()); writeD(_idTemplate + 1000000); // npctype id writeD(_activeChar.isAutoAttackable(activeChar) ? 1 : 0); writeD(_x); writeD(_y); writeD(_z); writeD(_heading); writeD(0x00); writeD(_mAtkSpd); writeD(_pAtkSpd); writeD(_runSpd); writeD(_walkSpd); writeD(_swimRunSpd/*0x32*/); // swimspeed writeD(_swimWalkSpd/*0x32*/); // swimspeed writeD(_flRunSpd); writeD(_flWalkSpd); writeD(_flyRunSpd); writeD(_flyWalkSpd); writeF(1.1/*_activeChar.getProperMultiplier()*/); //writeF(1/*_activeChar.getAttackSpeedMultiplier()*/); writeF(_pAtkSpd / 277.478340719); writeF(_collisionRadius); writeF(_collisionHeight); writeD(_rhand); // right hand weapon writeD(0); writeD(_lhand); // left hand weapon writeC(1); // name above char 1=true ... ?? writeC(_activeChar.isRunning() ? 1 : 0); writeC(_activeChar.isInCombat() ? 1 : 0); writeC(_activeChar.isAlikeDead() ? 1 : 0); writeC(_isSummoned ? 2 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation) writeS(_name); writeS(_title); writeD(0); writeD(0); writeD(0000); // hmm karma ?? writeD(_activeChar.getAbnormalEffect()); // C2 writeD(0000); // C2 writeD(0000); // C2 writeD(0000); // C2 writeD(0000); // C2 writeC(0000); // C2 writeC(_team); // C3 team circle 1-blue, 2-red writeF(_collisionRadius); writeF(_collisionHeight); writeD(0x00); // C4 writeD(0x00); // C6 } @Override public boolean canBroadcast(L2PcInstance activeChar) { if (_activeChar instanceof L2Summon && ((L2Summon) _activeChar).getOwner() == activeChar) { return false; } return activeChar != null && activeChar.canSee(_activeChar); } /* (non-Javadoc) * @see ru.catssoftware.gameserver.serverpackets.ServerBasePacket#getType() */ @Override public String getType() { return _S__22_NPCINFO; } }
  18. _name = cha.getName(); -> if(cha.getTemplate().serverSideName) { _name = cha.getTemplate().name; } это так к примеру
  19. masone

    Итем с бафом

    можно,в сторону скроллов l2day смотрите
  20. Показать контент /** * This class contains all RewardInfo of the L2Attackable against the any * attacker L2Character, based on amount of damage done.<BR> * <BR> * <B><U> Data</U> :</B><BR> * <BR> * <li>attacker : The attaker L2Character concerned by this RewardInfo of * this L2Attackable</li> <li>dmg : Total amount of damage done by the * attacker to this L2Attackable (summon + own)</li> */ protected final class RewardInfo { protected L2Character _attacker; protected int _dmg = 0; public RewardInfo(L2Character pAttacker, int pDmg) { this._attacker = pAttacker; this._dmg = pDmg; } public void addDamage(int pDmg) { this._dmg += pDmg; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj instanceof RewardInfo) return (((RewardInfo) obj)._attacker == _attacker); return false; } @Override public int hashCode() { return this._attacker.getObjectId(); } } Hide Показать контент protected void calculateRewards(L2Character lastAttacker) { if (getAggroListRP().isEmpty()) return; if (Config.DROP_LASTATTACKERISMAXDAMAGER && getAggroListRP().size() > 1) { int maxDamage = 0; L2PcInstance attacker = null; for (Map.Entry<L2Character, AggroInfo> entry : getAggroListRP().entrySet()) { if (entry.getKey() != null && entry.getKey().getActingPlayer() != null && entry.getValue()._damage > maxDamage) { maxDamage = entry.getValue()._damage; attacker = entry.getKey().getActingPlayer(); } } if (attacker != null) lastAttacker = attacker; } // Manage Base, Quests and Sweep drops of the L2Attackable doItemDrop(lastAttacker); // Manage drop of Special Events created by GM for a defined period doEventDrop(lastAttacker); if (!getMustRewardExpSP()) return; try { // Creates an empty list of rewards final Map<Integer, RewardInfo> rewards = new FastMap<Integer, RewardInfo>(); int rewardCount = 0; int damage; L2Character attacker, ddealer; RewardInfo reward; // Go through the _aggroList of the L2Attackable for (AggroInfo info : getAggroListRP().values()) { if (info == null) continue; // Get the L2Character corresponding to this attacker attacker = info._attacker; // Get damages done by this attacker damage = info._damage; // Prevent unwanted behavior if (damage > 1 && attacker != null) { // Check if ddealer isn't too far from this (killed monster) if (!Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, attacker, true)) continue; ddealer = attacker.getActingPlayer(); // Calculate real damages (Summoners should get own damage plus summon's damage) reward = rewards.get(ddealer.getObjectId()); if (reward == null) { reward = new RewardInfo(ddealer, damage); rewardCount++; } else reward.addDamage(damage); rewards.put(ddealer.getObjectId(), reward); } } if (!rewards.isEmpty()) { final FastTable<L2Party> parties = new FastTable<L2Party>(); final FastTable<L2PcInstance> rewardedMembers = new FastTable<L2PcInstance>(); L2Party attackerParty; double exp,sp; int levelDiff, partyDmg, partyLvl, partyLevelSum; RewardInfo reward2; double[] tmp; for (RewardInfo reward_f : rewards.values()) { reward = reward_f; if (reward == null) continue; // Attacker to be rewarded attacker = reward._attacker; // Total amount of damage done damage = reward._dmg; // If the attacker is a Pet, get the party of the owner attackerParty = attacker.getParty(); // We must avoid "over damage", if any if (damage > getMaxHp()) damage = getMaxHp(); // If there's NO party in progress if (attackerParty == null) { if (!(attacker instanceof L2PcInstance)) continue; L2PcInstance player = attacker.getActingPlayer(); levelDiff = player.getLevel() - getLevel(); tmp = calculateExpAndSp(levelDiff, damage); exp = tmp[0]; sp = tmp[1]; if (isOverhit() && player == getOverhitAttacker().getActingPlayer()) { long overHitExp = calculateOverhitExp((long)exp); SystemMessage sms = new SystemMessage(SystemMessageId.OVER_HIT); sms.addNumber((int)overHitExp); player.sendPacket(sms); exp += overHitExp; } if (!attacker.isDead()) { long addexp = Math.round(attacker.calcStat(Stats.EXPSP_RATE, exp, null, null)); int addsp = (int) attacker.calcStat(Stats.EXPSP_RATE, sp, null, null); if (attacker instanceof L2PcInstance && !(this instanceof L2ChestInstance)) { // Soul Mastery skill int soulMasteryLevel = attacker.getSkillLevel(L2Skill.SKILL_SOUL_MASTERY); if (soulMasteryLevel > 0) { L2Skill skill = SkillTable.getInstance().getInfo(L2Skill.SKILL_SOUL_MASTERY, soulMasteryLevel); if (skill.getExpNeeded() <= addexp) ((L2PcInstance) attacker).absorbSoulFromNpc(skill, this); } } if (Config.ENABLE_VITALITY) { if (!isChampion() || (isChampion() && Config.CHAMPION_ENABLE_VITALITY)) { player.addVitExpAndSp(addexp, addsp, this); //_log.info("calculateVitalityPoints partyDmg="+damage); player.calculateVitalityPoints(this, damage); } else player.addExpAndSp(addexp, addsp, this); } else player.addExpAndSp(addexp, addsp, this); } } else { if (parties.contains(attackerParty)) continue; parties.add(attackerParty); rewardedMembers.clear(); //share with party members partyDmg = 0; partyLvl = attackerParty.getLevel(); partyLevelSum = 0; // Go through all L2PcInstance in the party List<L2PcInstance> groupMembers = attackerParty.getPartyMembers(); for (L2PcInstance pl : groupMembers) { if (pl == null || pl.isDead()) continue; // Check if ddealer isn't too far from this (killed monster) if (!Util.checkIfInRange(Config.ALT_PARTY_RANGE, this, pl, true)) continue; // Get the RewardInfo of this L2PcInstance from L2Attackable rewards reward2 = rewards.get(pl.getObjectId()); if (reward2 != null) partyDmg += reward2._dmg; // Add L2PcInstance damages to party damages rewardedMembers.add(pl); partyLevelSum += pl.getLevel(); } partyDmg = Math.min(partyDmg, getMaxHp()); int newLevel = 0; for (L2Character member : rewardedMembers) { if (member.getLevel() > newLevel) newLevel = member.getLevel(); } // Calculate the level difference between Party and L2Attackable levelDiff = partyLvl - getLevel(); // Calculate Exp and SP rewards tmp = calculateExpAndSp(levelDiff, partyDmg); double partyMul = (double) partyDmg / getMaxHp(); exp = tmp[0] * partyMul; sp = tmp[1] * partyMul; // Check for an over-hit enabled strike // (When in party, the over-hit exp bonus is given to the whole party and splitted proportionally through the party members) if (isOverhit() && attacker.getActingPlayer() == getOverhitAttacker().getActingPlayer()) { L2PcInstance player = (L2PcInstance) attacker; if (isOverhit() && attacker == getOverhitAttacker()) { player.sendPacket(SystemMessageId.OVER_HIT); exp += calculateOverhitExp((long)exp); } } // Distribute Experience and SP rewards to L2PcInstance Party members in the known area of the last attacker if (partyDmg > 0) attackerParty.distributeXpAndSp((long)exp, (int)sp, rewardedMembers, this, partyDmg, partyLevelSum, isChampion()); } } rewardedMembers.clear(); parties.clear(); rewards.clear(); } } catch (Exception e) { _log.warn("", e); } } Hide сами разберетесь?
  21. так в ацисе и возьмите код класс L2Attackable
  22. есть,просто не кто не шарит, могу одну сборочку с сурсами за пиво отдать
×
×
  • Создать...