Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.25;
Скачать: CL | DM;

Вниз

Алгоритм   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
15-1192724934
Ученик
2007-10-18 20:28
2007.11.25
Как переустановить ipaq file store?


2-1193946555
Вовка
2007-11-01 22:49
2007.11.25
Помогите нужна лаба


1-1188801005
KOSS
2007-09-03 10:30
2007.11.25
CorelDraw


2-1194021209
Riply
2007-11-02 19:33
2007.11.25
Не юникодные платформы.


2-1193732460
NikolayGa
2007-10-30 11:21
2007.11.25
with