Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
DistributeSPHandler.java
Package: src.rar [view]
Upload User: gwt600
Upload Date: 2021-06-03
Package Size: 704k
Code Size: 3k
Category:
Games
Development Platform:
Java
- /*
- This file is part of the OdinMS Maple Story Server
- Copyright (C) 2008 Patrick Huy <patrick.huy@frz.cc>
- Matthias Butz <matze@odinms.de>
- Jan Christian Meyer <vimes@odinms.de>
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License version 3
- as published by the Free Software Foundation. You may not use, modify
- or distribute this program under any other version of the
- GNU Affero General Public License.
- 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 Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- package net.sf.odinms.net.channel.handler;
- import net.sf.odinms.client.ISkill;
- import net.sf.odinms.client.MapleCharacter;
- import net.sf.odinms.client.MapleClient;
- import net.sf.odinms.client.MapleStat;
- import net.sf.odinms.client.SkillFactory;
- import net.sf.odinms.net.AbstractMaplePacketHandler;
- import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
- public class DistributeSPHandler extends AbstractMaplePacketHandler {
- private class SP {
- private ISkill skill;
- private MapleClient c;
- SP(MapleClient c, ISkill skill) {
- this.skill = skill;
- this.c = c;
- }
- public ISkill getSkill() {
- return skill;
- }
- public MapleClient getClient() {
- return c;
- }
- }
- private void addSP(SP sp) {
- ISkill skill = sp.getSkill();
- MapleCharacter player = sp.getClient().getPlayer();
- int remainingSp = player.getRemainingSp();
- switch (skill.getId()) {
- case 8:
- case 1003:
- case 1004:
- case 1005:
- player.getClient().disconnect();
- return;
- case 1000:
- case 1001:
- case 1002:
- int snailsLevel = player.getSkillLevel(SkillFactory.getSkill(1000));
- int recoveryLevel = player.getSkillLevel(SkillFactory.getSkill(1001));
- int nimbleFeetLevel = player.getSkillLevel(SkillFactory.getSkill(1002));
- remainingSp = Math.min((player.getLevel() - 1), 6) - snailsLevel - recoveryLevel - nimbleFeetLevel;
- }
- int maxlevel = skill.isFourthJob() ? player.getMasterLevel(skill) : skill.getMaxLevel();
- int curLevel = player.getSkillLevel(skill);
- if (remainingSp > 0 && curLevel + 1 <= maxlevel && skill.canBeLearnedBy(player.getJob())) {
- if (!skill.isBeginnerSkill()) {
- player.setRemainingSp(player.getRemainingSp() - 1);
- }
- player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp());
- player.changeSkillLevel(skill, curLevel + 1, player.getMasterLevel(skill));
- } else if (!skill.canBeLearnedBy(player.getJob())) {
- player.getClient().disconnect();
- return;
- } else if (!(remainingSp > 0 && curLevel + 1 <= maxlevel)) {
- return;
- }
- }
- @Override
- public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
- slea.readInt();
- SP sp = new SP(c, SkillFactory.getSkill(slea.readInt()));
- addSP(sp);
- }
- }