Сообщений: 982
Тем: 73
Зарегистрирован: Jan 2009
Репутация:
2,862
какой то косяк с БД , может чара не в той локации оставил и вышел или что то через админку добавил?
MiR @ Aion Emu
Продам сборки v2.7 v3.9 v4.7 v4.8 v4.9 v5.1 , сборки мастер сервера v1.9 и v2.7 ,пишу скрипты и квесты на заказ , правки ядра , правки даты , писать в ПМ
Сообщений: 488
Тем: 7
Зарегистрирован: May 2010
Репутация:
860
проблема была в мускуле, ну я так думаю...он у меня тупо эрор кидает...я переустановлю его и отпишусь (кстате заметил на форуме Уников что у некоторых америкошек тоже появилась эта проблема) возможно хроническое....
[SIGPIC][/SIGPIC]
Сообщений: 1
Тем: 0
Зарегистрирован: May 2010
Репутация:
0
парни помогите! Как можно сделать так чтоб в пасив чару добавилось 20к атаки к примеру что прописать и где ? или мож есть какой нить скил? Если кто знает скил дайте ID плиз.
Сообщений: 134
Тем: 22
Зарегистрирован: Mar 2010
Репутация:
1,288
Spels Написал:парни помогите! Как можно сделать так чтоб в пасив чару добавилось 20к атаки к примеру что прописать и где ? или мож есть какой нить скил? Если кто знает скил дайте ID плиз.
смотри в MySQL
Сообщений: 65
Тем: 2
Зарегистрирован: May 2009
Репутация:
-1,170
Spels Написал:парни помогите! Как можно сделать так чтоб в пасив чару добавилось 20к атаки к примеру что прописать и где ? или мож есть какой нить скил? Если кто знает скил дайте ID плиз.
У админа есть команда //kill
Если для обычных персов - делаем свой скил, прописываем ему свои статы и всё.
Сообщений: 134
Тем: 22
Зарегистрирован: Mar 2010
Репутация:
1,288
Taku Написал:У админа есть команда //kill
Если для обычных персов - делаем свой скил, прописываем ему свои статы и всё.
смысла того что ты написал ваще не вижу!
Сообщений: 57
Тем: 7
Зарегистрирован: Apr 2010
Репутация:
-5,687
Здравствуйте! Обновил сборку! и в месте с ней обновился файлик отвечающий за заточку теперь он выглядит так:
Посмотреть
Код: /*
* This file is part of aion-unique <aion-unique.org>.
*
* aion-unique 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.
*
* aion-unique 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 aion-unique. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aionemu.gameserver.services;
import java.util.Set;
import java.util.TreeSet;
import javax.inject.Inject;
import org.apache.log4j.Logger;
import com.aionemu.commons.utils.Rnd;
import com.aionemu.gameserver.configs.main.CustomConfig;
import com.aionemu.gameserver.model.DescriptionId;
import com.aionemu.gameserver.model.gameobjects.Item;
import com.aionemu.gameserver.model.gameobjects.PersistentState;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.gameobjects.player.Storage;
import com.aionemu.gameserver.model.gameobjects.stats.StatEnum;
import com.aionemu.gameserver.model.gameobjects.stats.id.EnchantStatEffectId;
import com.aionemu.gameserver.model.gameobjects.stats.listeners.ItemEquipmentListener;
import com.aionemu.gameserver.model.gameobjects.stats.modifiers.AddModifier;
import com.aionemu.gameserver.model.gameobjects.stats.modifiers.RateModifier;
import com.aionemu.gameserver.model.gameobjects.stats.modifiers.StatModifier;
import com.aionemu.gameserver.model.items.ManaStone;
import com.aionemu.gameserver.model.templates.item.ArmorType;
import com.aionemu.gameserver.model.templates.item.ItemQuality;
import com.aionemu.gameserver.model.templates.item.ItemTemplate;
import com.aionemu.gameserver.model.templates.item.WeaponType;
import com.aionemu.gameserver.network.aion.serverpackets.SM_DELETE_ITEM;
import com.aionemu.gameserver.network.aion.serverpackets.SM_STATS_INFO;
import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
import com.aionemu.gameserver.network.aion.serverpackets.SM_UPDATE_ITEM;
import com.aionemu.gameserver.utils.PacketSendUtility;
/**
* @author ATracer
*
*/
public class EnchantService
{
private static final Logger log = Logger.getLogger(EnchantService.class);
@Inject
private ItemService itemService;
/**
* @param player
* @param targetItem
* @param parentItem
*/
public void breakItem(Player player, Item targetItem, Item parentItem)
{
Storage inventory = player.getInventory();
ItemTemplate itemTemplate = targetItem.getItemTemplate();
ItemQuality quality = itemTemplate.getItemQuality();
int number = 0;
int level = 0;
switch(quality)
{
case COMMON:
case JUNK:
number = Rnd.get(1, 2);
level = Rnd.get(0, 5);
break;
case RARE:
number = Rnd.get(1, 3);
level = Rnd.get(0, 10);
break;
case LEGEND:
case MYTHIC:
number = Rnd.get(1, 3);
level = Rnd.get(0, 15);
break;
case EPIC:
case UNIQUE:
number = Rnd.get(1, 3);
level = Rnd.get(0, 20);
break;
}
int enchantItemLevel = targetItem.getItemTemplate().getLevel() + level;
int enchantItemId = 166000000 + enchantItemLevel;
inventory.removeFromBag(targetItem, true);
PacketSendUtility.sendPacket(player, new SM_DELETE_ITEM(targetItem.getObjectId()));
inventory.removeFromBagByObjectId(parentItem.getObjectId(), 1);
itemService.addItem(player, enchantItemId, number);
}
/**
* @param player
* @param parentItem
* @param targetItem
*/
public boolean enchantItem(Player player, Item parentItem, Item targetItem)
{
int enchantStoneLevel = parentItem.getItemTemplate().getLevel();
int targetItemLevel = targetItem.getItemTemplate().getLevel();
if(targetItemLevel > enchantStoneLevel)
return false;
int qualityCap = 0;
ItemQuality quality = targetItem.getItemTemplate().getItemQuality();
switch(quality)
{
case COMMON:
case JUNK:
qualityCap = 0;
break;
case RARE:
qualityCap = 5;
break;
case LEGEND:
case MYTHIC:
qualityCap = 10;
break;
case EPIC:
case UNIQUE:
qualityCap = 15;
break;
}
int success = 50;
int levelDiff = enchantStoneLevel - targetItemLevel;
int extraSuccess = levelDiff - qualityCap;
if(extraSuccess > 0)
{
success += extraSuccess * 5;
}
if(success >= 95)
success = 95;
boolean result = false;
if(Rnd.get(0, 100) < success)
result = true;
int currentEnchant = targetItem.getEchantLevel();
if(!result)
{
if(currentEnchant > 0)
currentEnchant -= 1;
}
else
{
if(currentEnchant < 10)
currentEnchant += 1;
}
if(targetItem.isEquipped())
onItemUnequip(player, targetItem);
targetItem.setEchantLevel(currentEnchant);
if(targetItem.isEquipped())
onItemEquip(player, targetItem);
PacketSendUtility.sendPacket(player, new SM_UPDATE_ITEM(targetItem));
if(targetItem.isEquipped())
player.getEquipment().setPersistentState(PersistentState.UPDATE_REQUIRED);
else
player.getInventory().setPersistentState(PersistentState.UPDATE_REQUIRED);
if(result)
{
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_ENCHANT_ITEM_SUCCEED(new DescriptionId(Integer
.parseInt(targetItem.getName()))));
}
else
{
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_ENCHANT_ITEM_FAILED(new DescriptionId(Integer
.parseInt(targetItem.getName()))));
}
player.getInventory().removeFromBagByObjectId(parentItem.getObjectId(), 1);
return result;
}
/**
* @param player
* @param parentItem
* @param targetItem
*/
public boolean socketManastone(Player player, Item parentItem, Item targetItem)
{
boolean result = false;
int successRate = 76;
int stoneCount = targetItem.getItemStones().size();
switch(stoneCount)
{
case 1:
successRate = CustomConfig.MSPERCENT;
break;
case 2:
successRate = CustomConfig.MSPERCENT1;
break;
case 3:
successRate = CustomConfig.MSPERCENT2;
break;
case 4:
successRate = CustomConfig.MSPERCENT3;
break;
case 5:
successRate = CustomConfig.MSPERCENT4;
break;
}
if(stoneCount >= 6)
successRate = CustomConfig.MSPERCENT5;
if(Rnd.get(0, 100) < successRate)
result = true;
if(result)
{
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_GIVE_ITEM_OPTION_SUCCEED(new DescriptionId(
Integer.parseInt(targetItem.getName()))));
ManaStone manaStone = itemService.addManaStone(targetItem, parentItem.getItemTemplate().getTemplateId());
if(targetItem.isEquipped())
{
ItemEquipmentListener.addStoneStats(manaStone, player.getGameStats());
PacketSendUtility.sendPacket(player, new SM_STATS_INFO(player));
}
}
else
{
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_GIVE_ITEM_OPTION_FAILED(new DescriptionId(
Integer.parseInt(targetItem.getName()))));
Set<ManaStone> manaStones = targetItem.getItemStones();
if(targetItem.isEquipped())
{
ItemEquipmentListener.removeStoneStats(manaStones, player.getGameStats());
PacketSendUtility.sendPacket(player, new SM_STATS_INFO(player));
}
itemService.removeAllManastone(player, targetItem);
}
PacketSendUtility.sendPacket(player, new SM_UPDATE_ITEM(targetItem));
player.getInventory().removeFromBagByObjectId(parentItem.getObjectId(), 1);
return result;
}
/**
*
* @param player
* @param item
*/
public static void onItemEquip(Player player, Item item)
{
try
{
int enchantLevel = item.getEchantLevel();
if(enchantLevel == 0)
return;
boolean isWeapon = item.getItemTemplate().isWeapon();
boolean isArmor = item.getItemTemplate().isArmor();
if(isWeapon)
{
TreeSet<StatModifier> modifiers = getWeaponModifiers(item);
if(modifiers == null)
return;
EnchantStatEffectId statId = EnchantStatEffectId.getInstance(item.getObjectId(), item
.getEquipmentSlot());
player.getGameStats().addModifiers(statId, modifiers);
return;
}
if(isArmor)
{
TreeSet<StatModifier> modifiers = getArmorModifiers(item);
if(modifiers == null)
return;
EnchantStatEffectId statId = EnchantStatEffectId.getInstance(item.getObjectId(), item
.getEquipmentSlot());
player.getGameStats().addModifiers(statId, modifiers);
}
}
catch(Exception ex)
{
log.error(ex.getCause() != null ? ex.getCause().getMessage() : null);
}
}
/**
*
* @param player
* @param item
*/
public static void onItemUnequip(Player player, Item item)
{
try
{
int enchantLevel = item.getEchantLevel();
if(enchantLevel == 0)
return;
EnchantStatEffectId statId = EnchantStatEffectId.getInstance(item.getObjectId(), item.getEquipmentSlot());
if(player.getGameStats().effectAlreadyAdded(statId))
player.getGameStats().endEffect(statId);
}
catch(Exception ex)
{
log.error(ex.getCause() != null ? ex.getCause().getMessage() : null);
}
}
/**
*
* @param item
* @return
*/
private static TreeSet<StatModifier> getArmorModifiers(Item item)
{
TreeSet<StatModifier> modifiers = null;
ArmorType armorType = item.getItemTemplate().getArmorType();
if(armorType == null)
return null;
int enchantLevel = item.getEchantLevel();
switch(armorType)
{
case ROBE:
switch(item.getEquipmentSlot())
{
case 1 << 3: // torso
modifiers = EnchantWeapon.DEF3.getModifiers(enchantLevel);
break;
case 1 << 5: // boots
modifiers = EnchantWeapon.DEF1.getModifiers(enchantLevel);
break;
case 1 << 11: // pauldrons
modifiers = EnchantWeapon.DEF1.getModifiers(enchantLevel);
break;
case 1 << 12: // pants
modifiers = EnchantWeapon.DEF2.getModifiers(enchantLevel);
break;
case 1 << 4: // gloves
modifiers = EnchantWeapon.DEF1.getModifiers(enchantLevel);
break;
}
break;
case LEATHER:
switch(item.getEquipmentSlot())
{
case 1 << 3: // torso
modifiers = EnchantWeapon.DEF4.getModifiers(enchantLevel);
break;
case 1 << 5: // boots
modifiers = EnchantWeapon.DEF2.getModifiers(enchantLevel);
break;
case 1 << 11: // pauldrons
modifiers = EnchantWeapon.DEF2.getModifiers(enchantLevel);
break;
case 1 << 12: // pants
modifiers = EnchantWeapon.DEF3.getModifiers(enchantLevel);
break;
case 1 << 4: // gloves
modifiers = EnchantWeapon.DEF2.getModifiers(enchantLevel);
break;
}
break;
case CHAIN:
switch(item.getEquipmentSlot())
{
case 1 << 3: // torso
modifiers = EnchantWeapon.DEF5.getModifiers(enchantLevel);
break;
case 1 << 5: // boots
modifiers = EnchantWeapon.DEF3.getModifiers(enchantLevel);
break;
case 1 << 11: // pauldrons
modifiers = EnchantWeapon.DEF3.getModifiers(enchantLevel);
break;
case 1 << 12: // pants
modifiers = EnchantWeapon.DEF4.getModifiers(enchantLevel);
break;
case 1 << 4: // gloves
modifiers = EnchantWeapon.DEF3.getModifiers(enchantLevel);
break;
}
break;
case PLATE:
switch(item.getEquipmentSlot())
{
case 1 << 3: // torso
modifiers = EnchantWeapon.DEF6.getModifiers(enchantLevel);
break;
case 1 << 5: // boots
modifiers = EnchantWeapon.DEF4.getModifiers(enchantLevel);
break;
case 1 << 11: // pauldrons
modifiers = EnchantWeapon.DEF4.getModifiers(enchantLevel);
break;
case 1 << 12: // pants
modifiers = EnchantWeapon.DEF5.getModifiers(enchantLevel);
break;
case 1 << 4: // gloves
modifiers = EnchantWeapon.DEF4.getModifiers(enchantLevel);
break;
}
break;
}
return modifiers;
}
/**
*
* @param item
* @return
*/
private static TreeSet<StatModifier> getWeaponModifiers(Item item)
{
WeaponType weaponType = item.getItemTemplate().getWeaponType();
if(weaponType == null)
return null;
int enchantLevel = item.getEchantLevel();
TreeSet<StatModifier> modifiers = null;
switch(weaponType)
{
case BOOK_2H:
modifiers = EnchantWeapon.SPELLBOOK.getModifiers(enchantLevel);
break;
case DAGGER_1H:
modifiers = EnchantWeapon.DAGGER.getModifiers(enchantLevel);
break;
case BOW:
modifiers = EnchantWeapon.BOW.getModifiers(enchantLevel);
break;
case ORB_2H:
modifiers = EnchantWeapon.ORB.getModifiers(enchantLevel);
break;
case STAFF_2H:
modifiers = EnchantWeapon.STAFF.getModifiers(enchantLevel);
break;
case SWORD_1H:
modifiers = EnchantWeapon.SWORD.getModifiers(enchantLevel);
break;
case SWORD_2H:
modifiers = EnchantWeapon.GREATSWORD.getModifiers(enchantLevel);
break;
case MACE_1H:
modifiers = EnchantWeapon.MACE.getModifiers(enchantLevel);
break;
case POLEARM_2H:
modifiers = EnchantWeapon.POLEARM.getModifiers(enchantLevel);
break;
}
return modifiers;
}
/**
* @author ATracer
*/
private enum EnchantWeapon
{
DAGGER()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 2 * level, true));
return mod;
}
},
SWORD()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 2 * level, true));
return mod;
}
},
GREATSWORD()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 4 * level, true));
return mod;
}
},
POLEARM()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 4 * level, true));
return mod;
}
},
BOW()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 4 * level, true));
return mod;
}
},
MACE()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 3 * level, true));
mod.add(AddModifier.newInstance(StatEnum.BOOST_MAGICAL_SKILL, 20 * level, true));
return mod;
}
},
STAFF()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 3 * level, true));
mod.add(AddModifier.newInstance(StatEnum.BOOST_MAGICAL_SKILL, 20 * level, true));
return mod;
}
},
SPELLBOOK()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 3 * level, true));
mod.add(AddModifier.newInstance(StatEnum.BOOST_MAGICAL_SKILL, 20 * level, true));
return mod;
}
},
ORB()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_ATTACK, 3 * level, true));
mod.add(AddModifier.newInstance(StatEnum.BOOST_MAGICAL_SKILL, 20 * level, true));
return mod;
}
},
SHIELD()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(RateModifier.newInstance(StatEnum.BLOCK, 2 * level, true));
return mod;
}
},
DEF1()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_DEFENSE, 1 * level, true));
return mod;
}
},
DEF2()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_DEFENSE, 2 * level, true));
return mod;
}
},
DEF3()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_DEFENSE, 3 * level, true));
return mod;
}
},
DEF4()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_DEFENSE, 4 * level, true));
return mod;
}
},
DEF5()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_DEFENSE, 5 * level, true));
return mod;
}
},
DEF6()
{
@Override
public TreeSet<StatModifier> getModifiers(int level)
{
TreeSet<StatModifier> mod = new TreeSet<StatModifier>();
mod.add(AddModifier.newInstance(StatEnum.PHYSICAL_DEFENSE, 6 * level, true));
return mod;
}
};
public abstract TreeSet<StatModifier> getModifiers(int level);
}
}
Где менять процент в этом конфге или я чет непонял..
И еще один, РАставил мобов в бездне, Save_spawn, все сохранились как сервер перезагружу так их там нет( Что за фак? ЛЮДИ ХЕЛП!
Сообщений: 610
Тем: 12
Зарегистрирован: Jan 2010
Репутация:
1,021
Открой конфиг из архива с ГС и скопируй оттуда параметры заточки в свой нофиг, и делай что хочешь.
Сообщений: 2
Тем: 0
Зарегистрирован: May 2010
Репутация:
0
05-15-2010, 09:28 PM
(Сообщение последний раз редактировалось: 05-15-2010, 09:56 PM Meloy.)
Помогите плиз геймсервер неконнектится к логин серверу.
ЛС
[INFO] 2010-05-15 22:16:09 - AE Login Server started in 3 seconds.
[INFO] 2010-05-15 22:16:26 - GS connection from: 127.0.0.1
[INFO] 2010-05-15 22:16:26 - recived packet: [C] 0x00 CM_GS_AUTH
[INFO] 2010-05-15 22:16:26 - GameServer [ID:null] 127.0.0.1 requestedID=1 not av iable!
[INFO] 2010-05-15 22:16:26 - sending packet: [S] 0x00 SM_GS_AUTH_RESPONSE and cl osing connection after that.
[INFO] 2010-05-15 22:16:26 - GameServer [ID:null] 127.0.0.1 disconnected
ГС
[INFO] 2010-05-15 22:16:26 - AE Game Server started in 24 seconds. [INFO] 2010-05-15 22:16:26 - Server listening on IP: 127.0.0.1 Port 7777 for Aio n Connections
[INFO] 2010-05-15 22:16:26 - Connecting to LoginServer: localhost/127.0.0.1:9014
[INFO] 2010-05-15 22:16:26 - Connected to LoginServer!
[INFO] 2010-05-15 22:16:26 - sending packet: [S] 0x00 SM_GS_AUTH [INFO] 2010-05-15 22:16:26 - recived packet: [C] 0x00 CM_GS_AUTH_RESPONSE
[WARN] 2010-05-15 22:16:26 - Connection with LoginServer lost...
[FATAL] 2010-05-15 22:16:26 - GameServer is not authenticated at LoginServer sid e, shutting down!
[INFO] 2010-05-15 22:16:26 - Runtime is shutting down now ...
[ERROR] 2010-05-15 22:16:26 - Critical Error - Thread: Thread-1 terminated abnor maly: java.lang.NullPointerException java.lang.NullPointerException at com.aionemu.gameserver.network.loginserver.LoginServer.gameServerDisc onnected(LoginServer.java:375) at com.aionemu.gameserver.ShutdownHook.shutdownHook(ShutdownHook.java:16 0) at com.aionemu.gameserver.ShutdownHook.run(ShutdownHook.java:59) Server is terminated abnormaly ... Server is terminated ...
Сообщений: 488
Тем: 7
Зарегистрирован: May 2010
Репутация:
860
В мускуле идишку и пароль с конфига прописал?
[SIGPIC][/SIGPIC]
|