HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 07.08.2015, 13:53
kick
Флудер
Регистрация: 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
 
Ответить с цитированием

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

Репутация: 6527


По умолчанию

Прежде чем называть, что у всех гавно прочитать следует данный стих:

От всенощной вечор идя домой (Пушкин) — Викитека
 
Ответить с цитированием

  #33  
Старый 07.08.2015, 14:01
melcor
Участник форума
Регистрация: 06.08.2015
Сообщений: 113
С нами: 5668104

Репутация: 0
По умолчанию

Я конечно извиняюсь, но тему тогда можно переименовывать, ибо 99% кода из оригинального овера. Выводы очевидны - работы было сделано маловато.
 
Ответить с цитированием

  #34  
Старый 07.08.2015, 14:05
kick
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами: 5952720

Репутация: 6527


По умолчанию

Цитата:
Сообщение от melcor  

Я конечно извиняюсь, но тему тогда можно переименовывать, ибо 99% кода из оригинального овера. Выводы очевидны - работы было сделано маловато.
Нет, это всё вранье

https://grind-team.net/index.php?/to...ge-2-emulator/

Работа над данной игровой платформой была начата в 2012 году. За 3 года они достигли успехов в реализации
 
Ответить с цитированием

  #35  
Старый 07.08.2015, 14:13
kick
Флудер
Регистрация: 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

}

}
У нас забита нулями, что не верно.
 
Ответить с цитированием

  #36  
Старый 07.08.2015, 14:16
kick
Флудер
Регистрация: 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 ? Правильно не где. Но при этом заявление сборка реализована согласна официальному серверу
 
Ответить с цитированием

  #37  
Старый 07.08.2015, 14:21
kick
Флудер
Регистрация: 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);

}
 
Ответить с цитированием

  #38  
Старый 07.08.2015, 14:22
kick
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами: 5952720

Репутация: 6527


По умолчанию

Единственно, что верное в трансформах так это скилы сделаны у гринда, и то не совсем даже и верно
 
Ответить с цитированием

  #39  
Старый 07.08.2015, 15:08
0wn3d
Познающий
Регистрация: 14.10.2011
Сообщений: 45
С нами: 7673366

Репутация: -1
По умолчанию

Давай уже сразу фул сет скриптов OFF HF

А то по кусочках
 
Ответить с цитированием

  #40  
Старый 07.08.2015, 15:10
kick
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами: 5952720

Репутация: 6527


По умолчанию

Цитата:
Сообщение от Creo  

Давай уже сразу фул сет скриптов OFF HF
А то по кусочках
А я не даю с скриптов OFF HF, я даю только с шарных скриптов Freya.

Скрипт - Freya scripts
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.