 |
|

07.08.2015, 13:53
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Как я говорил про аугментацию в том посте? Так а что там изменилось, ничего осталось на том же уровне.
[QUOTE="Спойлер"]
[COLOR="#363940"]
package core.gameserver.tables;
import gnu.trove.list.array.TDoubleArrayList;
import gnu.trove.map.hash.TIntObjectHashMap;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import javax.xml.parsers.DocumentBuilderFactory;
import core.commons.crypt.CryptUtil;
import core.commons.util.Rnd;
import core.gameserver.Config;
import core.gameserver.stats.Stats;
import core.gameserver.stats.funcs.Func;
import core.gameserver.stats.funcs.FuncAdd;
import core.gameserver.stats.triggers.TriggerInfo;
import core.gameserver.stats.triggers.TriggerType;
import core.gameserver.templates.item.ItemTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
public class AugmentationData
{
private static final Logger _log = LoggerFactory.getLogger(AugmentationData.class);
private static AugmentationData _Instance;
public static AugmentationData getInstance()
{
if(_Instance == null)
_Instance = new AugmentationData();
return _Instance;
}
// stats
private static final int STAT_START = 1;
private static final int STAT_END = 14560;
private static final int STAT_BLOCKSIZE = 3640;
//private static final int STAT_NUMBEROF_BLOCKS = 4;
private static final int STAT_SUBBLOCKSIZE = 91;
//private static final int STAT_NUMBEROF_SUBBLOCKS = 40;
private static final int STAT_NUM = 13;
private static final byte[] STATS1_MAP = new byte[STAT_SUBBLOCKSIZE];
private static final byte[] STATS2_MAP = new byte[STAT_SUBBLOCKSIZE];
// skills
private static final int BLUE_START = 14561;
// private static final int PURPLE_START = 14578;
// private static final int RED_START = 14685;
private static final int SKILLS_BLOCKSIZE = 178;
// basestats
private static final int BASESTAT_STR = 16341;
private static final int BASESTAT_CON = 16342;
private static final int BASESTAT_INT = 16343;
private static final int BASESTAT_MEN = 16344;
// accessory
private static final int ACC_START = 16669;
private static final int ACC_BLOCKS_NUM = 10;
private static final int ACC_STAT_SUBBLOCKSIZE = 21;
private static final int ACC_STAT_NUM = 6;
private static final int ACC_RING_START = ACC_START;
private static final int ACC_RING_SKILLS = 18;
private static final int ACC_RING_BLOCKSIZE = ACC_RING_SKILLS + 4 * ACC_STAT_SUBBLOCKSIZE;
private static final int ACC_RING_END = ACC_RING_START + ACC_BLOCKS_NUM * ACC_RING_BLOCKSIZE - 1;
private static final int ACC_EAR_START = ACC_RING_END + 1;
private static final int ACC_EAR_SKILLS = 18;
private static final int ACC_EAR_BLOCKSIZE = ACC_EAR_SKILLS + 4 * ACC_STAT_SUBBLOCKSIZE;
private static final int ACC_EAR_END = ACC_EAR_START + ACC_BLOCKS_NUM * ACC_EAR_BLOCKSIZE - 1;
private static final int ACC_NECK_START = ACC_EAR_END + 1;
private static final int ACC_NECK_SKILLS = 24;
private static final int ACC_NECK_BLOCKSIZE = ACC_NECK_SKILLS + 4 * ACC_STAT_SUBBLOCKSIZE;
private static final int ACC_END = ACC_NECK_START + ACC_BLOCKS_NUM * ACC_NECK_BLOCKSIZE;
private static final byte[] ACC_STATS1_MAP = new byte[ACC_STAT_SUBBLOCKSIZE];
private static final byte[] ACC_STATS2_MAP = new byte[ACC_STAT_SUBBLOCKSIZE];
private List[] _augStats = new ArrayList[4];
private List[] _augAccStats = new ArrayList[4];
private List[] _blueSkills = new ArrayList[10];
private List[] _purpleSkills = new ArrayList[10];
private List[] _redSkills = new ArrayList[10];
private List[] _yellowSkills = new ArrayList[10];
private TIntObjectHashMap _allSkills = new TIntObjectHashMap();
public AugmentationData()
{
_log.info("Initializing AugmentationData.");
_augStats[0] = new ArrayList();
_augStats[1] = new ArrayList();
_augStats[2] = new ArrayList();
_augStats[3] = new ArrayList();
_augAccStats[0] = new ArrayList();
_augAccStats[1] = new ArrayList();
_augAccStats[2] = new ArrayList();
_augAccStats[3] = new ArrayList();
// Lookup tables structure: STAT1 represent first stat, STAT2 - second.
// If both values are the same - use solo stat, if different - combined.
int idx;
// weapon augmentation block: solo values first
// 00-00, 01-01 ... 11-11,12-12
for(idx = 0; idx ();
_purpleSkills[I]= new ArrayList();
_redSkills[I]= new ArrayList();
_yellowSkills[I]= new ArrayList();
}
load();
// Use size*4: since theres 4 blocks of stat-data with equivalent size
_log.info("AugmentationData: Loaded: " + _augStats[0].size() * 4 + " augmentation stats.");
_log.info("AugmentationData: Loaded: " + _augAccStats[0].size() * 4 + " accessory augmentation stats.");
for(int i = 0; i = _singleSize || i = _combinedSize || i ) _blueSkills[k]).add(augmentationId);
else if(type.equalsIgnoreCase("purple"))
((List) _purpleSkills[k]).add(augmentationId);
else if(type.equalsIgnoreCase("red"))
((List) _redSkills[k]).add(augmentationId);
_allSkills.put(augmentationId, new TriggerInfo(skillId, skillLvL, t, chance));
}
if(badAugmantData != 0)
_log.info("AugmentationData: " + badAugmantData + " bad skill(s) were skipped.");
}
catch(Exception e)
{
_log.error("Error parsing augmentation_skillmap.xml.", e);
return;
}
// Load the stats from xml
for(int i = 1; i ) _augStats[(i - 1)]).add(new augmentationStat(Stats.valueOfXml(statName), soloValues, combinedValues));
}
}
catch(Exception e)
{
_log.error("Error parsing augmentation_stats" + i + ".xml.", e);
return;
}
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setIgnoringComments(true);
File file = new File(Config.DATAPACK_ROOT, "data/xml/augmentation/augmentation_jewel_stats" + i + ".xml");
FileInputStream stream = new FileInputStream(file);
InputStream output;
if((byte)stream.read() == 0x00)
{
byte[] bytes = new byte[0];
output = new ByteArrayInputStream(bytes);
output = CryptUtil.decrypt(stream, output);
}
else
output = new FileInputStream(file);
Document doc = factory.newDocumentBuilder().parse(output);
for(Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())
if("list".equalsIgnoreCase(n.getNodeName()))
for(Node d = n.getFirstChild(); d != null; d = d.getNextSibling())
if("stat".equalsIgnoreCase(d.getNodeName()))
{
NamedNodeMap attrs = d.getAttributes();
String statName = attrs.getNamedItem("name").getNodeValue();
double soloValues[] = null, combinedValues[] = null;
for(Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
if("table".equalsIgnoreCase(cd.getNodeName()))
{
attrs = cd.getAttributes();
String tableName = attrs.getNamedItem("name").getNodeValue();
StringTokenizer data = new StringTokenizer(cd.getFirstChild().getNodeValue()) ;
TDoubleArrayList array = new TDoubleArrayList();
while(data.hasMoreTokens())
array.add(Double.parseDouble(data.nextToken()));
if(tableName.equalsIgnoreCase("#soloValues"))
{
soloValues = new double[array.size()];
int x = 0;
for(double value : array.toArray())
soloValues[x++] = value;
}
else
{
combinedValues = new double[array.size()];
int x = 0;
for(double value : array.toArray())
combinedValues[x++] = value;
}
}
// store this stat
((List) _augAccStats[(i - 1)]).add(new augmentationStat(Stats.valueOfXml(statName), soloValues, combinedValues));
}
}
catch(Exception e)
{
_log.error("Error parsing jewel augmentation_stats" + i + ".xml.", e);
return;
}
}
}
public int generateRandomAugmentation(int lifeStoneLevel, int lifeStoneGrade, int bodyPart)
{
switch(bodyPart)
{
case ItemTemplate.SLOT_L_FINGER:
case ItemTemplate.SLOT_R_FINGER:
case ItemTemplate.SLOT_L_FINGER | ItemTemplate.SLOT_R_FINGER:
case ItemTemplate.SLOT_L_EAR:
case ItemTemplate.SLOT_R_EAR:
case ItemTemplate.SLOT_L_EAR | ItemTemplate.SLOT_R_EAR:
case ItemTemplate.SLOT_NECK:
return generateRandomAccessoryAugmentation(lifeStoneLevel , bodyPart);
default:
return generateRandomWeaponAugmentation(lifeStoneLevel, lifeStoneGrade);
}
}
private int generateRandomWeaponAugmentation(int lifeStoneLevel, int lifeStoneGrade)
{
// Note that stat12 stands for stat 1 AND 2 (same for stat34 ;p )
// this is because a value can contain up to 2 stat modifications
// (there are two int values packed in one integer value, meaning 4 stat modifications at max)
// for more info take a look at getAugStatsById(...)
// Note: lifeStoneGrade: (0 means low grade, 3 top grade)
// First: determine whether we will add a skill/baseStatModifier or not
// because this determine which color could be the result
int stat12 = 0;
int stat34 = 0;
boolean generateSkill = false;
boolean generateGlow = false;
//lifestonelevel is used for stat Id and skill level, but here the max level is 9
lifeStoneLevel = Math.min(lifeStoneLevel, 9);
switch(lifeStoneGrade)
{
case 0:
generateSkill = Rnd.chance(Config.AUGMENTATION_NG_SKILL_CHANCE);
generateGlow = Rnd.chance(Config.AUGMENTATION_NG_GLOW_CHANCE);
break;
case 1:
generateSkill = Rnd.chance(Config.AUGMENTATION_MID_SKILL_CHANCE);
generateGlow = Rnd.chance(Config.AUGMENTATION_MID_GLOW_CHANCE);
break;
case 2:
generateSkill = Rnd.chance(Config.AUGMENTATION_HIGH_SKILL_CHANCE);
generateGlow = Rnd.chance(Config.AUGMENTATION_HIGH_GLOW_CHANCE);
break;
case 3:
generateSkill = Rnd.chance(Config.AUGMENTATION_TOP_SKILL_CHANCE);
generateGlow = Rnd.chance(Config.AUGMENTATION_TOP_GLOW_CHANCE);
break;
}
if(!generateSkill && Rnd.get(1, 100) = 2)
offset = lifeStoneLevel * STAT_SUBBLOCKSIZE + (temp - 2) * STAT_BLOCKSIZE + lifeStoneGrade * 10 * STAT_SUBBLOCKSIZE + 1;
else
offset = lifeStoneLevel * STAT_SUBBLOCKSIZE + (temp - 2) * STAT_BLOCKSIZE + Rnd.get(0, 1) * 10 * STAT_SUBBLOCKSIZE + 1;
}
else if(!generateGlow)
offset = lifeStoneLevel * STAT_SUBBLOCKSIZE + Rnd.get(0, 1) * STAT_BLOCKSIZE + 1;
else
offset = lifeStoneLevel * STAT_SUBBLOCKSIZE + Rnd.get(0, 1) * STAT_BLOCKSIZE + (lifeStoneGrade + resultColor) / 2 * 10 * STAT_SUBBLOCKSIZE + 1;
stat12 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE - 1);
return ((stat34
|
|
|

07.08.2015, 13:57
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
|
|
|

07.08.2015, 14:01
|
|
Участник форума
Регистрация: 06.08.2015
Сообщений: 113
С нами:
5668104
Репутация:
0
|
|
Я конечно извиняюсь, но тему тогда можно переименовывать, ибо 99% кода из оригинального овера. Выводы очевидны - работы было сделано маловато.
|
|
|

07.08.2015, 14:05
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Сообщение от melcor
Я конечно извиняюсь, но тему тогда можно переименовывать, ибо 99% кода из оригинального овера. Выводы очевидны - работы было сделано маловато.
Нет, это всё вранье
https://grind-team.net/index.php?/to...ge-2-emulator/
Работа над данной игровой платформой была начата в 2012 году. За 3 года они достигли успехов в реализации
|
|
|

07.08.2015, 14:13
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Смотрим каптчу и видим порт с некстгена.
Давайте посмотрим рыбалку и её реализацию. Рыбалка осталась на том же уровне, притом и награда за неё и прочее. Так вот а как же дневная и ночная рыбалка? как бы есть оно, но тут такого нету.
Сообщение от Спойлер
public class ExFishingStart extends L2GameServerPacket
{
private int _charObjId;
private Location _loc;
private int _fishType;
private boolean _isNightLure;
public ExFishingStart(Creature character, int fishType, Location loc, boolean isNightLure)
{
_charObjId = character.getObjectId();
_fishType = fishType;
_loc = loc;
_isNightLure = isNightLure;
}
@Override
protected final void writeImpl()
{
writeEx(0x1e);
writeD(_charObjId);
writeD(_fishType); // fish type
writeD(_loc.x); // x poisson
writeD(_loc.y); // y poisson
writeD(_loc.z); // z poisson
writeC(_isNightLure ? 0x01 : 0x00); // 0 = day lure 1 = night lure
writeC(0x01); // result Button
}
}
У нас забита нулями, что не верно.
|
|
|

07.08.2015, 14:16
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Краски смотрим офф скрипт и смотрим реализацию у гринда:
Сообщение от Спойлер
dye_begin dye_name=[dye_s1c3_d] dye_id=1 dye_item_id=4445 dye_level=28 str=1 con=-3 dex=0 int=0 men=0 wit=0 need_count=10 wear_fee=37000 cancel_count=5 cancel_fee=7400 wear_class={11;26;39;1;4;7;19;22;32;35;45;47;54;56 ;15;29;42;50;125;126} dye_end
И смотрим а где реализация dye_level=28 need_count=10 wear_fee=37000 cancel_count=5 cancel_fee=7400 ? Правильно не где. Но при этом заявление сборка реализована согласна официальному серверу
|
|
|

07.08.2015, 14:21
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Давайте посмотрим ту же реализацию трансформов которая реализована не верно.
Сообщение от Спойлер
transform_begin // 오닉스 비스트
id = 1 type = COMBAT can_swim = 0 normal_attackable = 1
female_begin
common_begin
collision_box = {12;14.5}
moving_speed = {30; 125; 50; 50; 0; 0; 0; 0}
skill = {[s_transform_power_claw1];[s_transform_fast_moving1];[s_transform_dispel1];[s_transform_slow_attack1]}
additional_skill = {}
action = {1;2;3;4;5;6;7;8;9;11;15;16;17;18;19;21;22;23;32;3 6;39;40;41;42;43;44;45;46;47;48;50;52;53;54;55;56; 57;63;64;65;70;1000;1001;1003;1004;1005;1006;1007; 1008;1009;1010;1011;1012;1013;1014;1015;1016;1017; 1018;1019;1020;1021;1022;1023;1024;1025;1026;1027; 1028;1029;1030;1031;1032;1033;1034;1035;1036;1037; 1038;1039;1040;1041;1042;1043;1044;1045;1046;1047; 1048;1049;1050;1051;1052;1053;1054;1055;1056;1057; 1058;1059;1060;1061;1062;1063;1064;1065;1066;1067; 1068;1069;1070;1071;1072;1073;1074;1075;1076;1077; 1078;1079;1080;1081;1082;1083;1084;1089;1090;1091; 1092;1093;1094;1095;1096;1097;1098}
base_attack_type = sword
// 맨손인 경우에 필요한 것들
base_attack_range = 20
base_random_damage = 10
base_attack_speed = 300
base_critical_prob = 5
base_physical_attack = 5
base_magical_attack = 5
common_end
combat_begin
basic_stat= {40;21;43;30;11;25} // str;int;con;dex;wit;men
base_defend = {31;18;12;7;8;3;1} //맨몸 방어력. {상체;하체;투구;부츠;장갑;속옷;망토} 순서.
base_magic_defend = {9;9;5;5;13} //맨몸 마법 방어력. {오른귀걸이;왼귀걸이;오른반지;왼반 ;목} 순서.
//HP, MP, CP 기본 회복량 : {Lv1; Lv2; Lv3; ... ; Lv99}의 각 레벨별 회복량 집합
org_hp_regen = {2;2.05;2.1;2.15;2.2;2.25;2.3;2.35;2.4;2.45;2.5;2. 6;2.7;2.8;2.9;3;3.1;3.2;3.3;3.4;3.5;3.6;3.7;3.8;3. 9;4;4.1;4.2;4.3;4.4;4.5;4.6;4.7;4.8;4.9;5;5.1;5.2; 5.3;5.4;5.5;5.6;5.7;5.8;5.9;6;6.1;6.2;6.3;6.4;6.5; 6.6;6.7;6.8;6.9;7;7.1;7.2;7.3;7.4;7.5;7.6;7.7;7.8; 7.9;8;8.1;8.2;8.3;8.4;8.5;8.6;8.7;8.8;8.9;9;9.1;9. 2;9.3;9.4;9.5;9.6;9.7;9.8;9.9;10;10.1;10.2;10.3;10 .4;10.5;10.6;10.7;10.8;10.9;11;11.1;11.2;11.3}
org_mp_regen = {0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;1.2;1.2;1 .2;1.2;1.2;1.2;1.2;1.2;1.2;1.2;1.5;1.5;1.5;1.5;1.5 ;1.5;1.5;1.5;1.5;1.5;1.8;1.8;1.8;1.8;1.8;1.8;1.8;1 .8;1.8;1.8;2.1;2.1;2.1;2.1;2.1;2.1;2.1;2.1;2.1;2.1 ;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.7;2.7;2 .7;2.7;2.7;2.7;2.7;2.7;2.7;2.7;3;3;3;3;3;3;3;3;3;3 ;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3}
org_cp_regen = {2;2;2;2;2;2;2;2;2;2;2.5;2.5;2.5;2.5;2.5;2.5;2.5;2 .5;2.5;2.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5 ;4.5;4.5;4.5;4.5;4.5;4.5;4.5;4.5;4.5;4.5;5.5;5.5;5 .5;5.5;5.5;5.5;5.5;5.5;5.5;5.5;6.5;6.5;6.5;6.5;6.5 ;6.5;6.5;6.5;6.5;6.5;7.5;7.5;7.5;7.5;7.5;7.5;7.5;7 .5;7.5;7.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5 ;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8 .5;8.5;8.5;8.5;8.5;8.5;8.5}
level_bonus = {0.90;0.91;0.92;0.93;0.94;0.95;0.96;0.97;0.98;0.99 ;1.00;1.01;1.02;1.03;1.04;1.05;1.06;1.07;1.08;1.09 ;1.10;1.11;1.12;1.13;1.14;1.15;1.16;1.17;1.18;1.19 ;1.20;1.21;1.22;1.23;1.24;1.25;1.26;1.27;1.28;1.29 ;1.30;1.31;1.32;1.33;1.34;1.35;1.36;1.37;1.38;1.39 ;1.40;1.41;1.42;1.43;1.44;1.45;1.46;1.47;1.48;1.49 ;1.50;1.51;1.52;1.53;1.54;1.55;1.56;1.57;1.58;1.59 ;1.60;1.61;1.62;1.63;1.64;1.65;1.66;1.67;1.68;1.69 ;1.70;1.71;1.72;1.73;1.74;1.75;1.76;1.77;1.78;1.79 ;1.80;1.81;1.82;1.83;1.84;1.85;1.86;1.87;1.88}
str_bonus = {-70;-69;-68;-66;-65;-64;-63;-61;-60;-58;-57;-55;-54;-52;-50;-49;-47;-45;-43;-41;-39;-37;-34;-32;-29;-27;-24;-22;-19;-16;-13;-10;-6;-3;1;4;8;12;16;20;24;29;33;38;43;48;54;59;65;71;77; 83;90;97;104;111;119;127;135;143;152;161;171;180;1 91;201;212;223;235;247;259;272;286;299;314;329;344 ;360;377;394;412;430;449;469;489;511;533;555;579;6 03;629;655;682;710;739;770;801;833;867}
int_bonus = {-45;-44;-43;-42;-41;-39;-38;-37;-36;-35;-33;-32;-31;-29;-28;-26;-25;-23;-22;-20;-19;-17;-15;-14;-12;-10;-8;-6;-5;-3;-1;1;3;5;7;10;12;14;16;19;21;23;26;28;31;34;36;39;4 2;45;47;50;53;57;60;63;66;69;73;76;80;83;87;91;95; 99;102;107;111;115;119;124;128;133;137;142;147;152 ;157;162;167;173;178;184;189;195;201;207;213;219;2 26;232;239;246;253;260;267;274;282}
con_bonus = {-54;-53;-52;-50;-49;-47;-46;-44;-42;-41;-39;-37;-35;-33;-31;-29;-27;-25;-23;-20;-18;-15;-13;-10;-7;-5;-2;1;4;7;10;14;17;21;24;28;32;36;40;44;48;53;58;62; 67;72;77;83;88;94;100;106;112;118;125;131;138;145; 153;160;168;176;184;193;202;211;220;230;240;250;26 0;271;282;294;306;318;330;343;356;370;384;399;414; 429;445;461;478;496;513;532;551;570;590;611;633;65 4;677;700;724}
dex_bonus = {-15;-14;-14;-13;-12;-11;-10;-10;-9;-8;-7;-6;-6;-5;-4;-3;-2;-1;0;1;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18 ;19;20;21;22;24;25;26;27;28;29;30;32;33;34;35;36;3 8;39;40;41;43;44;45;47;48;49;51;52;53;55;56;57;59; 60;62;63;65;66;68;69;71;72;74;75;77;78;80;82;83;85 ;87;88;90;92;93;95;97;99;100;102;104}
wit_bonus = {-60;-58;-56;-54;-52;-49;-47;-44;-42;-39;-36;-32;-29;-25;-22;-18;-14;-9;-5;0;5;10;16;22;28;34;41;48;55;63;71;80;89;98;108;1 18;129;141;153;165;179;193;207;223;239;256;273;292 ;312;332;354;376;400;425;452;479;508;539;570;604;6 39;676;715;756;799;843;891;940;992;1047;1104;1164; 1227;1294;1364;1437;1514;1594;1679;1768;1861;1959; 2062;2170;2284;2403;2528;2660;2798;2943;3095;3255; 3422;3598;3783;3977;4181;4395;4620}
men_bonus = {1;2;3;4;5;6;7;8;9;11;12;13;14;15;16;17;19;20;21;2 2;23;25;26;27;28;30;31;32;34;35;36;38;39;40;42;43; 45;46;48;49;50;52;53;55;57;58;60;61;63;65;66;68;70 ;71;73;75;76;78;80;82;84;85;87;89;91;93;95;97;99;1 01;103;105;107;109;111;113;115;117;120;122;124;126 ;129;131;133;135;138;140;143;145;147;150;152;155;1 58;160;163;165;168}
hp_table = {80.8;92.7483;104.8279;117.0388;129.381;143.259;15 5.9886;168.8508;181.8456;194.973;210.2745;223.7984 ;237.4562;251.2479;265.1735;281.944;296.2752;310.7 416;325.3432;340.08;374.535;406.0035;437.7555;469. 791;502.11;539.805;573.0042;606.4896;640.2612;674. 319;715.3485;750.3054;785.5512;821.0859;856.9095;9 01.368;938.1096;975.1428;1012.4676;1050.084;1110.8 19;1162.2234;1214.0202;1266.2094;1318.791;1384.35; 1438.206;1492.458;1547.106;1616.715;1672.659;1729. 0026;1785.7458;1826.286;1883.31;1923.087;1980.3774 ;2019.3624;2057.6742;2075.535;2091.621;2105.9106;2 139.78;2129.0142;2137.785;2144.673;2149.6566;2176. 902;2178.5808;2178.294;2176.02;2171.7372;2165.424; 2184.7134;2203.11;2220.603;2237.1816;2252.835;2267 .5524;2281.323;2294.136;2305.9806;2316.846;2326.72 14;2335.596;2343.459;2350.2996;2356.107;2360.8704; 2364.579;2367.222;2368.7886;2369.268;2368.6494;236 6.922;2364.075;2360.0976;2354.979;2348.7084}
mp_table = {30.3;35.8146;41.3898;47.0256;52.722;59.058;64.933 2;70.8696;76.8672;82.926;89.919;96.1608;102.4644;1 08.8298;115.257;122.928;129.5424;136.2192;142.9584 ;149.76;161.595;172.0845;182.6685;193.347;204.12;2 17.035;228.1014;239.2632;250.5204;261.873;275.8995 ;287.5518;299.3004;311.1453;323.0865;338.256;350.5 032;362.8476;375.2892;387.828;412.674;434.0925;455 .6745;477.42;499.329;526.185;548.625;571.23;594;62 2.5435;645.8535;669.33;692.973;710.325;734.085;751 .119;774.99;791.694;808.1175;816.48;824.103;830.97 75;845.55;842.445;847.02;850.8105;853.8075;865.62; 867.24;868.041;868.014;867.15;865.44;873.9375;882. 063;889.812;897.18;904.1625;910.755;916.953;922.75 2;928.1475;933.135;937.71;941.868;945.6045;948.915 ;951.795;954.24;956.2455;957.807;958.92;959.58;959 .7825;959.523;958.797;957.6;955.9275;953.775}
cp_table = {40.4;46.37415;52.41395;58.5194;64.6905;71.6295;77 .9943;84.4254;90.9228;97.4865;105.13725;111.8992;1 18.7281;125.62395;132.58675;140.972;148.1376;155.3 708;162.6716;170.04;187.2675;203.00175;218.87775;2 34.8955;251.055;269.9025;286.5021;303.2448;320.130 6;337.1595;357.67425;375.1527;392.7756;410.54295;4 28.45475;450.684;469.0548;487.5714;506.2338;525.04 2;555.4095;581.1117;607.0101;633.1047;659.3955;692 .175;719.103;746.229;773.553;808.3575;836.3295;864 .5013;892.8729;913.143;941.655;961.5435;990.1887;1 009.6812;1028.8371;1037.7675;1045.8105;1052.9553;1 069.89;1064.5071;1068.8925;1072.3365;1074.8283;108 8.451;1089.2904;1089.147;1088.01;1085.8686;1082.71 2;1092.3567;1101.555;1110.3015;1118.5908;1126.4175 ;1133.7762;1140.6615;1147.068;1152.9903;1158.423;1 163.3607;1167.798;1171.7295;1175.1498;1178.0535;11 80.4352;1182.2895;1183.611;1184.3943;1184.634;1184 .3247;1183.461;1182.0375;1180.0488;1177.4895;1174. 3542}
combat_end
female_end
male_begin
common_begin
collision_box = {12;14.5}
moving_speed = {30; 125; 50; 50; 0; 0; 0; 0}
skill = {[s_transform_power_claw1];[s_transform_fast_moving1];[s_transform_dispel1];[s_transform_slow_attack1]}
additional_skill = {}
action = {1;2;3;4;5;6;7;8;9;11;15;16;17;18;19;21;22;23;32;3 6;39;40;41;42;43;44;45;46;47;48;50;52;53;54;55;56; 57;63;64;65;70;1000;1001;1003;1004;1005;1006;1007; 1008;1009;1010;1011;1012;1013;1014;1015;1016;1017; 1018;1019;1020;1021;1022;1023;1024;1025;1026;1027; 1028;1029;1030;1031;1032;1033;1034;1035;1036;1037; 1038;1039;1040;1041;1042;1043;1044;1045;1046;1047; 1048;1049;1050;1051;1052;1053;1054;1055;1056;1057; 1058;1059;1060;1061;1062;1063;1064;1065;1066;1067; 1068;1069;1070;1071;1072;1073;1074;1075;1076;1077; 1078;1079;1080;1081;1082;1083;1084;1089;1090;1091; 1092;1093;1094;1095;1096;1097;1098}
base_attack_type = sword
// 맨손인 경우에 필요한 것들
base_attack_range = 20
base_random_damage = 10
base_attack_speed = 300
base_critical_prob = 5
base_physical_attack = 5
base_magical_attack = 5
common_end
combat_begin
basic_stat= {40;21;43;30;11;25}
base_defend = {31;18;12;7;8;3;1} //맨몸 방어력. {상체;하체;투구;부츠;장갑;속옷;망토} 순서.
base_magic_defend = {9;9;5;5;13} //맨몸 마법 방어력. {오른귀걸이;왼귀걸이;오른반지;왼반 ;목} 순서.
//HP, MP, CP 기본 회복량 : {Lv1; Lv2; Lv3; ... ; Lv99}의 각 레벨별 회복량 집합
org_hp_regen = {2;2.05;2.1;2.15;2.2;2.25;2.3;2.35;2.4;2.45;2.5;2. 6;2.7;2.8;2.9;3;3.1;3.2;3.3;3.4;3.5;3.6;3.7;3.8;3. 9;4;4.1;4.2;4.3;4.4;4.5;4.6;4.7;4.8;4.9;5;5.1;5.2; 5.3;5.4;5.5;5.6;5.7;5.8;5.9;6;6.1;6.2;6.3;6.4;6.5; 6.6;6.7;6.8;6.9;7;7.1;7.2;7.3;7.4;7.5;7.6;7.7;7.8; 7.9;8;8.1;8.2;8.3;8.4;8.5;8.6;8.7;8.8;8.9;9;9.1;9. 2;9.3;9.4;9.5;9.6;9.7;9.8;9.9;10;10.1;10.2;10.3;10 .4;10.5;10.6;10.7;10.8;10.9;11;11.1;11.2;11.3}
org_mp_regen = {0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;0.9;1.2;1.2;1 .2;1.2;1.2;1.2;1.2;1.2;1.2;1.2;1.5;1.5;1.5;1.5;1.5 ;1.5;1.5;1.5;1.5;1.5;1.8;1.8;1.8;1.8;1.8;1.8;1.8;1 .8;1.8;1.8;2.1;2.1;2.1;2.1;2.1;2.1;2.1;2.1;2.1;2.1 ;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.4;2.7;2.7;2 .7;2.7;2.7;2.7;2.7;2.7;2.7;2.7;3;3;3;3;3;3;3;3;3;3 ;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3}
org_cp_regen = {2;2;2;2;2;2;2;2;2;2;2.5;2.5;2.5;2.5;2.5;2.5;2.5;2 .5;2.5;2.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5;3.5 ;4.5;4.5;4.5;4.5;4.5;4.5;4.5;4.5;4.5;4.5;5.5;5.5;5 .5;5.5;5.5;5.5;5.5;5.5;5.5;5.5;6.5;6.5;6.5;6.5;6.5 ;6.5;6.5;6.5;6.5;6.5;7.5;7.5;7.5;7.5;7.5;7.5;7.5;7 .5;7.5;7.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5 ;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8.5;8 .5;8.5;8.5;8.5;8.5;8.5;8.5}
level_bonus = {0.90;0.91;0.92;0.93;0.94;0.95;0.96;0.97;0.98;0.99 ;1.00;1.01;1.02;1.03;1.04;1.05;1.06;1.07;1.08;1.09 ;1.10;1.11;1.12;1.13;1.14;1.15;1.16;1.17;1.18;1.19 ;1.20;1.21;1.22;1.23;1.24;1.25;1.26;1.27;1.28;1.29 ;1.30;1.31;1.32;1.33;1.34;1.35;1.36;1.37;1.38;1.39 ;1.40;1.41;1.42;1.43;1.44;1.45;1.46;1.47;1.48;1.49 ;1.50;1.51;1.52;1.53;1.54;1.55;1.56;1.57;1.58;1.59 ;1.60;1.61;1.62;1.63;1.64;1.65;1.66;1.67;1.68;1.69 ;1.70;1.71;1.72;1.73;1.74;1.75;1.76;1.77;1.78;1.79 ;1.80;1.81;1.82;1.83;1.84;1.85;1.86;1.87;1.88}
str_bonus = {-70;-69;-68;-66;-65;-64;-63;-61;-60;-58;-57;-55;-54;-52;-50;-49;-47;-45;-43;-41;-39;-37;-34;-32;-29;-27;-24;-22;-19;-16;-13;-10;-6;-3;1;4;8;12;16;20;24;29;33;38;43;48;54;59;65;71;77; 83;90;97;104;111;119;127;135;143;152;161;171;180;1 91;201;212;223;235;247;259;272;286;299;314;329;344 ;360;377;394;412;430;449;469;489;511;533;555;579;6 03;629;655;682;710;739;770;801;833;867}
int_bonus = {-45;-44;-43;-42;-41;-39;-38;-37;-36;-35;-33;-32;-31;-29;-28;-26;-25;-23;-22;-20;-19;-17;-15;-14;-12;-10;-8;-6;-5;-3;-1;1;3;5;7;10;12;14;16;19;21;23;26;28;31;34;36;39;4 2;45;47;50;53;57;60;63;66;69;73;76;80;83;87;91;95; 99;102;107;111;115;119;124;128;133;137;142;147;152 ;157;162;167;173;178;184;189;195;201;207;213;219;2 26;232;239;246;253;260;267;274;282}
con_bonus = {-54;-53;-52;-50;-49;-47;-46;-44;-42;-41;-39;-37;-35;-33;-31;-29;-27;-25;-23;-20;-18;-15;-13;-10;-7;-5;-2;1;4;7;10;14;17;21;24;28;32;36;40;44;48;53;58;62; 67;72;77;83;88;94;100;106;112;118;125;131;138;145; 153;160;168;176;184;193;202;211;220;230;240;250;26 0;271;282;294;306;318;330;343;356;370;384;399;414; 429;445;461;478;496;513;532;551;570;590;611;633;65 4;677;700;724}
dex_bonus = {-15;-14;-14;-13;-12;-11;-10;-10;-9;-8;-7;-6;-6;-5;-4;-3;-2;-1;0;1;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18 ;19;20;21;22;24;25;26;27;28;29;30;32;33;34;35;36;3 8;39;40;41;43;44;45;47;48;49;51;52;53;55;56;57;59; 60;62;63;65;66;68;69;71;72;74;75;77;78;80;82;83;85 ;87;88;90;92;93;95;97;99;100;102;104}
wit_bonus = {-60;-58;-56;-54;-52;-49;-47;-44;-42;-39;-36;-32;-29;-25;-22;-18;-14;-9;-5;0;5;10;16;22;28;34;41;48;55;63;71;80;89;98;108;1 18;129;141;153;165;179;193;207;223;239;256;273;292 ;312;332;354;376;400;425;452;479;508;539;570;604;6 39;676;715;756;799;843;891;940;992;1047;1104;1164; 1227;1294;1364;1437;1514;1594;1679;1768;1861;1959; 2062;2170;2284;2403;2528;2660;2798;2943;3095;3255; 3422;3598;3783;3977;4181;4395;4620}
men_bonus = {1;2;3;4;5;6;7;8;9;11;12;13;14;15;16;17;19;20;21;2 2;23;25;26;27;28;30;31;32;34;35;36;38;39;40;42;43; 45;46;48;49;50;52;53;55;57;58;60;61;63;65;66;68;70 ;71;73;75;76;78;80;82;84;85;87;89;91;93;95;97;99;1 01;103;105;107;109;111;113;115;117;120;122;124;126 ;129;131;133;135;138;140;143;145;147;150;152;155;1 58;160;163;165;168}
hp_table = {80.8;92.7483;104.8279;117.0388;129.381;143.259;15 5.9886;168.8508;181.8456;194.973;210.2745;223.7984 ;237.4562;251.2479;265.1735;281.944;296.2752;310.7 416;325.3432;340.08;374.535;406.0035;437.7555;469. 791;502.11;539.805;573.0042;606.4896;640.2612;674. 319;715.3485;750.3054;785.5512;821.0859;856.9095;9 01.368;938.1096;975.1428;1012.4676;1050.084;1110.8 19;1162.2234;1214.0202;1266.2094;1318.791;1384.35; 1438.206;1492.458;1547.106;1616.715;1672.659;1729. 0026;1785.7458;1826.286;1883.31;1923.087;1980.3774 ;2019.3624;2057.6742;2075.535;2091.621;2105.9106;2 139.78;2129.0142;2137.785;2144.673;2149.6566;2176. 902;2178.5808;2178.294;2176.02;2171.7372;2165.424; 2184.7134;2203.11;2220.603;2237.1816;2252.835;2267 .5524;2281.323;2294.136;2305.9806;2316.846;2326.72 14;2335.596;2343.459;2350.2996;2356.107;2360.8704; 2364.579;2367.222;2368.7886;2369.268;2368.6494;236 6.922;2364.075;2360.0976;2354.979;2348.7084}
mp_table = {30.3;35.8146;41.3898;47.0256;52.722;59.058;64.933 2;70.8696;76.8672;82.926;89.919;96.1608;102.4644;1 08.8298;115.257;122.928;129.5424;136.2192;142.9584 ;149.76;161.595;172.0845;182.6685;193.347;204.12;2 17.035;228.1014;239.2632;250.5204;261.873;275.8995 ;287.5518;299.3004;311.1453;323.0865;338.256;350.5 032;362.8476;375.2892;387.828;412.674;434.0925;455 .6745;477.42;499.329;526.185;548.625;571.23;594;62 2.5435;645.8535;669.33;692.973;710.325;734.085;751 .119;774.99;791.694;808.1175;816.48;824.103;830.97 75;845.55;842.445;847.02;850.8105;853.8075;865.62; 867.24;868.041;868.014;867.15;865.44;873.9375;882. 063;889.812;897.18;904.1625;910.755;916.953;922.75 2;928.1475;933.135;937.71;941.868;945.6045;948.915 ;951.795;954.24;956.2455;957.807;958.92;959.58;959 .7825;959.523;958.797;957.6;955.9275;953.775}
cp_table = {40.4;46.37415;52.41395;58.5194;64.6905;71.6295;77 .9943;84.4254;90.9228;97.4865;105.13725;111.8992;1 18.7281;125.62395;132.58675;140.972;148.1376;155.3 708;162.6716;170.04;187.2675;203.00175;218.87775;2 34.8955;251.055;269.9025;286.5021;303.2448;320.130 6;337.1595;357.67425;375.1527;392.7756;410.54295;4 28.45475;450.684;469.0548;487.5714;506.2338;525.04 2;555.4095;581.1117;607.0101;633.1047;659.3955;692 .175;719.103;746.229;773.553;808.3575;836.3295;864 .5013;892.8729;913.143;941.655;961.5435;990.1887;1 009.6812;1028.8371;1037.7675;1045.8105;1052.9553;1 069.89;1064.5071;1068.8925;1072.3365;1074.8283;108 8.451;1089.2904;1089.147;1088.01;1085.8686;1082.71 2;1092.3567;1101.555;1110.3015;1118.5908;1126.4175 ;1133.7762;1140.6615;1147.068;1152.9903;1158.423;1 163.3607;1167.798;1171.7295;1175.1498;1178.0535;11 80.4352;1182.2895;1183.611;1184.3943;1184.634;1184 .3247;1183.461;1182.0375;1180.0488;1177.4895;1174. 3542}
combat_end
male_end
transform_end
У лыжи более менее верно.
А теперь смотрим дальше
Сообщение от Спойлер
Основано всё на базе npc и прописаны тут data/npc - и в корне не верно.
А так же мега реализация в Player:
/**
* Устанавливает режим трансформаии
*
* @param transformationId идентификатор трансформации
* Известные режимы:
* 0 - стандартный вид чара
* 1 - Onyx Beast
* 2 - Death Blader
* etc.
*/
public void setTransformation(int transformationId)
{
if(transformationId == _transformationId || _transformationId != 0 && transformationId != 0)
return;
// Для каждой трансформации свой набор скилов
if(transformationId == 0) // Обычная форма
{
// Останавливаем текущий эффект трансформации
for(Effect effect : getEffectList().getAllEffects())
if(effect != null && effect.getEffectType() == EffectType.Transformation)
{
if (effect.calc() == 0) // Не обрываем Dispel
continue;
effect.exit();
preparateToTransform(effect.getSkill());
break;
}
// Удаляем скилы трансформации
if(!_transformationSkills.isEmpty())
{
for(Skill s : _transformationSkills.values())
if(!s.isCommon() && !SkillAcquireHolder.getInstance().isSkillPossible( this, s) && !s.isHeroic())
super.removeSkill(s);
_transformationSkills.clear();
}
}
else
{
int _id = 0;
int _level = 1;
final int baseClassId = getBaseClassIdRvRMode();
switch(baseClassId)
{
case 97://Cardinal
_id = 24001;
break;
case 98://Hierophant
_id = 24002;
break;
case 100://SwordMuse
_id = 24003;
break;
case 105://EvaSaint
_id = 24004;
break;
case 107://SpectralDancer
_id = 24005;
break;
case 112://ShillienSaint
_id = 24006;
break;
case 115://Dominator
_id = 24007;
break;
case 116://Doomcryer
_id = 24008;
break;
}
Skill _skill = SkillTable.getInstance().getInfo(_id, _level);
if(_skill != null)
{
super.removeSkill(_skill);
removeSkillFromShortCut(_skill.getId());
}
if(!isCursedWeaponEquipped())
{
// Добавляем скилы трансформации
for(Effect effect : getEffectList().getAllEffects())
if(effect != null && effect.getEffectType() == EffectType.Transformation)
{
if(effect.getSkill() instanceof Transformation && ((Transformation) effect.getSkill()).isDisguise)
{
for(Skill s : getAllSkills())
if(s != null && (s.isActive() || s.isToggle()))
_transformationSkills.put(s.getId(), s);
}
else
for(AddedSkill s : effect.getSkill().getAddedSkills())
if(s.level == 0) // трансформация позволяет пользоваться обычным скиллом
{
int s2 = getSkillLevel(s.id);
if(s2 > 0)
_transformationSkills.put(s.id, SkillTable.getInstance().getInfo(s.id, s2));
}
else if(s.level == -2) // XXX: дикий изжоп для скиллов зависящих от уровня игрока
{
int learnLevel = Math.max(effect.getSkill().getMagicLevel(), 40);
int maxLevel = SkillTable.getInstance().getBaseLevel(s.id);
int curSkillLevel = 1;
if(maxLevel > 3)
curSkillLevel += getLevel() - learnLevel;
else
curSkillLevel += (getLevel() - learnLevel) / ((76 - learnLevel) / maxLevel); // не спрашивайте меня что это такое
curSkillLevel = Math.min(Math.max(curSkillLevel, 1), maxLevel);
_transformationSkills.put(s.id, SkillTable.getInstance().getInfo(s.id, curSkillLevel));
}
else
_transformationSkills.put(s.id, s.getSkill());
preparateToTransform(effect.getSkill());
break;
}
}
else
preparateToTransform(null);
if(!isInOlympiadMode() && !isCursedWeaponEquipped() && _hero && baseClassId == getActiveClassId())
{
// Добавляем хиро скиллы проклятому трансформу
_transformationSkills.put(395, SkillTable.getInstance().getInfo(395, 1));
_transformationSkills.put(396, SkillTable.getInstance().getInfo(396, 1));
_transformationSkills.put(1374, SkillTable.getInstance().getInfo(1374, 1));
_transformationSkills.put(1375, SkillTable.getInstance().getInfo(1375, 1));
_transformationSkills.put(1376, SkillTable.getInstance().getInfo(1376, 1));
}
for(Skill s : _transformationSkills.values())
addSkill(s, false);
}
_transformationId = transformationId;
sendPacket(new ExBasicActionList(this));
sendPacket(new SkillList(this));
sendPacket(new ShortCutInit(this));
for(int shotId : getAutoSoulShot())
sendPacket(new ExAutoSoulShot(shotId, true));
broadcastUserInfo(true);
}
|
|
|

07.08.2015, 14:22
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Единственно, что верное в трансформах так это скилы сделаны у гринда, и то не совсем даже и верно
|
|
|

07.08.2015, 15:08
|
|
Познающий
Регистрация: 14.10.2011
Сообщений: 45
С нами:
7673366
Репутация:
-1
|
|
Давай уже сразу фул сет скриптов OFF HF
А то по кусочках
|
|
|

07.08.2015, 15:10
|
|
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами:
5952720
Репутация:
6527
|
|
Сообщение от Creo
Давай уже сразу фул сет скриптов OFF HF
А то по кусочках
А я не даю с скриптов OFF HF, я даю только с шарных скриптов Freya.
Скрипт - Freya scripts
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|