Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
ВнизАлгоритм Найти похожие ветки
← →
Pacific (2007-11-03 16:27) [0]Здравствуйте! Есть строка типа(поудалял все лишнее):
npc_begin warrior 18342
[tutorial_gremlin] level=1
acquire_exp_rate=293.9 acquire_sp=20
unsowing=1 clan={} ignore_clan_list={}
base_damage_range={0;0;80;120}
additional_make_multi_list={{{{[adena];70;130;100}};
100}}
npc_end
Нужно:
1) Число которое идет после acquire_exp_rate= умножить на strtoint(form1.edit1.text)
2)Число которое идет после acquire_sp= умножить на strtoint(form1.edit1.text)
3) А теперь самое сложное есть строчки:
additional_make_multi_list={{{{[adena];7650;15280;70}};100};{{{[proof_of_bloo d];1;1;20};{[stem];1;1;17.8349};{[suede];1;1;5.945};{[braided_hemp];1;1;3.567};{ [high_grade_suede];1;1;0.7432};{[compound_braid];1;1;0.5945};{[tunic_of_shrnoen] ;1;1;0.0012};{[hose_of_shrnoen];1;1;0.0019};{[avadon_robe];1;1;0.0008};{[tunic_o f_shrnoen_fabric];1;1;0.2102};{[hose_of_shrnoen_fabric];1;1;0.3192};{[avadon_rob e_fabric];1;1;0.1615};{[rp_demon_s_sword];1;1;0.0068}};1000}}
Таких много, так вот надо после };{{ идет допустим:[avadon_robe_fabric];1;1;0.1615, так вот 1 надо умножить на edit1, еще 1 надо умножить на edit2, а третье число 0.1615 умножить на edit3
Алгоритм такой есть на php, но незнаю как его перевести в delphi.
Заранее благодарен за любые советы
← →
KilkennyCat (2007-11-03 18:02) [1]Читер?
ну и в чем, соббссссно, закавыка?
> };{{
если сие есть уникально, енто и ищем, то бишь, читаем по 4 байта, пока энти 4 байта не сравнятся с сей уникальностью.
Сравнилось? тогда читаем в новую строку, пока не встретится сия уникальность еще раз.
получили строку
> [avadon_rob e_fabric];1;1;0.1615
аналогично читаем, но побайтно... встретилось ], значит, получили наименование, ну и через тчксзпт получаем цифири...
← →
Pacific (2007-11-03 18:21) [2]Понимаете проблема в том что реально это все выглдит так:
npc_begin pet 12077 [pet_wolf_a] level=15 acquire_exp_rate=0 acquire_sp=0 unsowing=1 clan={} ignore_clan_list={} clan_help_range=0 slot_chest=[] slot_rhand=[] slot_lhand=[] shield_defense_rate=0 shield_defense=0 skill_list={@s_race_animals;@s_summon_magic_defence} npc_ai={[pet_wolf_a]} category={} race=animal sex=male undying=0 can_be_attacked=1 corpse_time=1200 no_sleep_mode=0 agro_range=0 ground_high={137;0;0} ground_low={26;0;0} exp=127159 org_hp=123 org_hp_regen=3.95 org_mp=164 org_mp_regen=1.21 collision_radius={13;13} collision_height={11.50;11.50} str=40 int=21 dex=30 wit=20 con=43 men=25 base_attack_type=fist base_attack_range=40 base_damage_range={0;0;80;120} base_rand_dam=7 base_physical_attack=5.544 base_critical=4 physical_hit_modify=4.75 base_attack_speed=250.98 base_reuse_delay=0 base_magic_attack=1.848 base_defend=11.704 base_magic_defend=10.472 physical_avoid_modify=0 soulshot_count=2 spiritshot_count=2 hit_time_factor=0.39 item_make_list={} corpse_make_list={} additional_make_list={} additional_make_multi_list={} hp_increase=0 mp_increase=0 safe_height=100 npc_end
npc_begin pet 12311 [hatchling_of_wind] level=35 acquire_exp_rate=0 acquire_sp=0 unsowing=1 clan={} ignore_clan_list={} clan_help_range=0 slot_chest=[] slot_rhand=[] slot_lhand=[] shield_defense_rate=0 shield_defense=0 skill_list={@s_race_dragons;@s_summon_magic_defence} npc_ai={[hatchling_of_wind];{[PhysicalSpecial]=@s_pet_wild_stun1};{[Buff]=@s_pet _wild_defence1}} category={} race=dragon sex=male undying=0 can_be_attacked=1 corpse_time=1200 no_sleep_mode=0 agro_range=0 ground_high={154;0;0} ground_low={88;0;0} exp=8740424 org_hp=386 org_hp_regen=7.11 org_mp=433 org_mp_regen=1.84 collision_radius={9;9} collision_height={10;10} str=40 int=21 dex=30 wit=20 con=43 men=25 base_attack_type=fist base_attack_range=40 base_damage_range={0;0;80;120} base_rand_dam=7 base_physical_attack=29.568 base_critical=4 physical_hit_modify=4.75 base_attack_speed=250.98 base_reuse_delay=0 base_magic_attack=13.552 base_defend=25.872 base_magic_defend=24.024 physical_avoid_modify=0 soulshot_count=2 spiritshot_count=2 hit_time_factor=0.27 item_make_list={} corpse_make_list={} additional_make_list={} additional_make_multi_list={} hp_increase=0 mp_increase=0 safe_height=100 npc_end
← →
KilkennyCat (2007-11-03 18:36) [3]Да пусть как угодно выглядит. Надо определить сигнатуры, от которых будем плясать, либо еще проще, если известно, что base_magic_attack всегда base_magic_attack, то ищем только base_magic_attack.
тут же элементарно раскладывается.
npc_begin
pet 12077
[pet_wolf_a]
level=15
acquire_exp_rate=0
acquire_sp=0
unsowing=1
clan={}
ignore_clan_list={}
clan_help_range=0
slot_chest=[]
slot_rhand=[]
slot_lhand=[]
shield_defense_rate=0
shield_defense=0
skill_list={@s_race_animals;@s_summon_magic_defence}
npc_ai={[pet_wolf_a]}
category={}
race=animal
sex=male
undying=0
can_be_attacked=1
corpse_time=1200
no_sleep_mode=0
agro_range=0
ground_high={137;0;0}
ground_low={26;0;0}
exp=127159
org_hp=123
org_hp_regen=3.95
org_mp=164
org_mp_regen=1.21
collision_radius={13;13}
collision_height={11.50;11.50}
str=40
int=21
dex=30
wit=20
con=43
men=25
base_attack_type=fist
base_attack_range=40
base_damage_range={0;0;80;120}
base_rand_dam=7
base_physical_attack=5.544
base_critical=4
physical_hit_modify=4.75
base_attack_speed=250.98
base_reuse_delay=0
base_magic_attack=1.848
base_defend=11.704
base_magic_defend=10.472
physical_avoid_modify=0
soulshot_count=2
spiritshot_count=2
hit_time_factor=0.39
item_make_list={}
corpse_make_list={}
additional_make_list={}
additional_make_multi_list={}
hp_increase=0
mp_increase=0
safe_height=100
npc_end
npc_begin
pet 12311
[hatchling_of_wind]
level=35
acquire_exp_rate=0
acquire_sp=0
unsowing=1
clan={}
ignore_clan_list={}
clan_help_range=0
slot_chest=[]
slot_rhand=[]
slot_lhand=[]
shield_defense_rate=0
shield_defense=0
skill_list={@s_race_dragons;@s_summon_magic_defence}
npc_ai={[hatchling_of_wind];{[PhysicalSpecial]=@s_pet_wild_stun1};{[Buff]=@s_pet _wild_defence1}}
category={}
race=dragon
sex=male
undying=0
can_be_attacked=1
corpse_time=1200
no_sleep_mode=0
agro_range=0
ground_high={154;0;0}
ground_low={88;0;0}
exp=8740424
org_hp=386
org_hp_regen=7.11
org_mp=433
org_mp_regen=1.84
collision_radius={9;9}
collision_height={10;10}
str=40
int=21
dex=30
wit=20
con=43
men=25
base_attack_type=fist
base_attack_range=40
base_damage_range={0;0;80;120}
base_rand_dam=7
base_physical_attack=29.568
base_critical=4
physical_hit_modify=4.75
base_attack_speed=250.98
base_reuse_delay=0
base_magic_attack=13.552
base_defend=25.872
base_magic_defend=24.024
physical_avoid_modify=0
soulshot_count=2
spiritshot_count=2
hit_time_factor=0.27
item_make_list={}
corpse_make_list={}
additional_make_list={}
additional_make_multi_list={}
hp_increase=0
mp_increase=0
safe_height=100
npc_end
Ну вот. Зная пробел, начало и старт - легко разобрали.
← →
Pacific (2007-11-03 18:54) [4]Так вот мне надо допусти взять число acquire_exp_rate=0 и умножить на 10
я же не буду
x:=Pos("acquire_exp_rate=", строка);
z:=copy(строка, x+17, 255);
c:=Pos(" ", Z);
b:=copy(z, 17, 17-c-1);
ну и т.п. это же геморно
← →
KilkennyCat (2007-11-03 19:27) [5]
> это же геморно
Ага. Ну можно еще написать так: "Добренький компьютер, умножи-ка, пожайлуста, то, что я хочу на то, что мне надо. спасибо."
Но это, пока ИИ не создадут, будет работать плохо.
Так что, варианты такие: просим программера написать прогу, либо становимся сами программером и живем с гемором.
Во втором варианте подсказываю:
То, что я выше распарсил, легко укладывается в XML.
Если XML не хочется, то это легко закидывается в records. один раз парсится все, а потом работается скок надо. И почти никакого гемора.
← →
KilkennyCat (2007-11-03 20:10) [6]Да, кстати, 0 умножать бессмысленно :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c