Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1192786848
de.
2007-10-19 13:40
2007.11.25
Среда разработки


2-1194122176
SveTTT
2007-11-03 23:36
2007.11.25
подсчет строк в DbGridEh


2-1193782252
vr-online
2007-10-31 01:10
2007.11.25
Жрет память


15-1193263283
ZHVadim
2007-10-25 02:01
2007.11.25
Стандартные Нет компоненты


15-1192464844
oxffff
2007-10-15 20:14
2007.11.25
Yield средствами Delphi. За и против.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский