Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Проблема с статистикой.

тут можно задать вопрос по скриптингу
Post Reply
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Проблема с статистикой.

Post by myownstyle »

Делаю скрипт на статистику чтоб понять сколько за час копается конкретной руды. Столкнулся с проблемой с такой ошыбкой.

Code: Select all

02:30:51:119 [icq]: Iron 59 // Per Hour 23248
02:30:51:126 [icq]: OldCopper 9 // Per Hour 11331
02:30:51:129 [icq]: Copper 10 // Per Hour 10198
02:30:51:147 [icq]: Exec: [Error] (C:\Users\1\Desktop\MiningV8.sc at 147:1): divide by Zero
Сам скрипт.

Code: Select all

Procedure Statistics_Global_innit;
begin
  Ore_Iron :=        0;
  Ore_OldCopper :=   0;
  Ore_Copper :=      0;
  Ore_Bronze :=      0;
  Ore_Rose :=        0;
  Ore_Shadow :=      0;
  Ore_Silver :=      0;
  Ore_Golden :=      0;
  Ore_Verite :=      0;
  Ore_Valorite :=    0;
  Ore_Marble :=      0;
  Ore_Ice :=         0;
  Ore_BloodRock :=   0;
  Ore_Mytheril :=    0;
  Ore_Amethyst :=    0;
  Ore_Dwarven :=     0;
  Ore_Steel :=       0;
  Ore_SunStone :=    0;
  Ore_BlackRock :=   0;
  Ore_Fire :=        0;
  Ore_Wizzard :=     0;
  Ore_DaemonSteel := 0;
  Ore_Crusader :=    0;
  Ore_Reactive :=    0;
  Ore_Sapphire :=    0;
  Ore_MoonRock :=    0;
end;


Procedure Statistics_Global_Update;
begin
  if GetColor(finditem) = $0000 then Ore_Iron := (Ore_Iron + GetQuantity(finditem));
  if GetColor(finditem) = $0487 then Ore_OldCopper := (Ore_OldCopper + GetQuantity(finditem));
  if GetColor(finditem) = $096D then Ore_Copper := (Ore_Copper + GetQuantity(finditem));
  if GetColor(finditem) = $0972 then Ore_Bronze := (Ore_Bronze + GetQuantity(finditem));
  if GetColor(finditem) = $0B84 then Ore_Rose := (Ore_Rose + GetQuantity(finditem));
  if GetColor(finditem) = $0496 then Ore_Shadow := (Ore_Shadow + GetQuantity(finditem));
  if GetColor(finditem) = $0497 then Ore_Silver := (Ore_Silver + GetQuantity(finditem));
  if GetColor(finditem) = $0494 then Ore_Golden := (Ore_Golden + GetQuantity(finditem));
  if GetColor(finditem) = $089F then Ore_Verite := (Ore_Verite + GetQuantity(finditem));
  if GetColor(finditem) = $08AB then Ore_Valorite := (Ore_Valorite + GetQuantity(finditem));
  if GetColor(finditem) = $0B91 then Ore_Marble := (Ore_Marble + GetQuantity(finditem));
  if GetColor(finditem) = $047F then Ore_Ice := (Ore_Ice + GetQuantity(finditem));
  if GetColor(finditem) = $04C2 then Ore_BloodRock := (Ore_BloodRock + GetQuantity(finditem));
  if GetColor(finditem) = $052D then Ore_Mytheril := (Ore_Mytheril + GetQuantity(finditem));
  if GetColor(finditem) = $0705 then Ore_Amethyst := (Ore_Amethyst + GetQuantity(finditem));
  if GetColor(finditem) = $0794 then Ore_Dwarven := (Ore_Dwarven + GetQuantity(finditem));
  if GetColor(finditem) = $07A1 then Ore_Steel := (Ore_Steel + GetQuantity(finditem));
  if GetColor(finditem) = $0A0A then Ore_SunStone := (Ore_SunStone + GetQuantity(finditem));
  if GetColor(finditem) = $047E then Ore_BlackRock := (Ore_BlackRock + GetQuantity(finditem));
  if GetColor(finditem) = $09EF then Ore_Fire := (Ore_Fire + GetQuantity(finditem));
  if GetColor(finditem) = $09AD then Ore_Wizzard := (Ore_Wizzard + GetQuantity(finditem));
  if GetColor(finditem) = $0493 then Ore_DaemonSteel := (Ore_DaemonSteel + GetQuantity(finditem));
  if GetColor(finditem) = $0A2E then Ore_Crusader := (Ore_Crusader + GetQuantity(finditem));
  if GetColor(finditem) = $07A5 then Ore_Reactive := (Ore_Reactive + GetQuantity(finditem));
  if GetColor(finditem) = $07AB then Ore_Sapphire := (Ore_Sapphire + GetQuantity(finditem));
  if GetColor(finditem) = $0B80 then Ore_MoonRock := (Ore_MoonRock + GetQuantity(finditem));
end;

Procedure Statistics_Global_Write;
begin
  AddToSystemJournal('Iron ' + IntToStr(Ore_Iron) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Iron * 3600)));
  AddToSystemJournal('Old Copper ' + IntToStr(Ore_OldCopper) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_OldCopper * 3600)));
  AddToSystemJournal('Copper ' + IntToStr(Ore_Copper) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Copper * 3600)));
  AddToSystemJournal('Bronze ' + IntToStr(Ore_Bronze) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Bronze * 3600)));
  AddToSystemJournal('Rose ' + IntToStr(Ore_Rose) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Rose * 3600)));
  AddToSystemJournal('Shadow ' + IntToStr(Ore_Shadow) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Shadow * 3600)));
  AddToSystemJournal('Silver ' + IntToStr(Ore_Silver) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Silver * 3600)));
  AddToSystemJournal('Golden ' + IntToStr(Ore_Golden) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Golden * 3600)));
  AddToSystemJournal('Verite ' + IntToStr(Ore_Verite) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Verite * 3600)));
  AddToSystemJournal('Valorite ' + IntToStr(Ore_Valorite) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Valorite * 3600)));
  AddToSystemJournal('Marble ' + IntToStr(Ore_Marble) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Marble * 3600)));
  AddToSystemJournal('Ice ' + IntToStr(Ore_Ice) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Ice * 3600)));
  AddToSystemJournal('Blood Rock ' + IntToStr(Ore_BloodRock) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_BloodRock * 3600)));
  AddToSystemJournal('Mytheril ' + IntToStr(Ore_Mytheril) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Mytheril * 3600)));
  AddToSystemJournal('Amethyst ' + IntToStr(Ore_Amethyst) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Amethyst * 3600)));
  AddToSystemJournal('Dwarven ' + IntToStr(Ore_Dwarven) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Dwarven * 3600)));
  AddToSystemJournal('Steel ' + IntToStr(Ore_Steel) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Steel * 3600)));
  AddToSystemJournal('Sun Stone ' + IntToStr(Ore_SunStone) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_SunStone * 3600)));
  AddToSystemJournal('Black Rock ' + IntToStr(Ore_BlackRock) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_BlackRock * 3600)));
  AddToSystemJournal('Fire ' + IntToStr(Ore_Fire) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Fire * 3600)));
  AddToSystemJournal('Wizzard ' + IntToStr(Ore_Wizzard) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Wizzard * 3600)));
  AddToSystemJournal('Daemon Steel ' + IntToStr(Ore_DaemonSteel) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_DaemonSteel * 3600)));
  AddToSystemJournal('Crusader ' + IntToStr(Ore_Crusader) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Crusader * 3600)));
  AddToSystemJournal('Reactive ' + IntToStr(Ore_Reactive) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Reactive * 3600)));
  AddToSystemJournal('Sapphire ' + IntToStr(Ore_Sapphire) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_Sapphire * 3600)));
  AddToSystemJournal('MoonRock ' + IntToStr(Ore_MoonRock) + ' // Per Hour ' + IntToStr((((timer - t))) / (Ore_MoonRock * 3600)));
  AddToSystemJournal('-----------------------------------------');
end;

nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Проблема с статистикой.

Post by nah nah »

Code: Select all

IntToStr((((timer - t))) / (Ore_MoonRock * 3600)))
а если за час выкопал 0, то будет эта ошибка. делить на ноль нельзя, как известно
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Re: Проблема с статистикой.

Post by myownstyle »

Спосибо, помогло. Есть еше одна проблема. Не пойму как определить и написать в человеку понятном виде время которое скрипт проработал. Можно как ето ети секунды превратить в 00:00:ХХ?
nah nah
Developer
Developer
Posts: 414
Joined: 13.07.2011 11:23
Contact:

Re: Проблема с статистикой.

Post by nah nah »

в одном часу 3600 секунд. нужно разделить общее количество секунд на 3600, полученный результат округлить в меньшую сторону, так получится количество целых часов.
далее из общего количества секунд нужно вычесть количество целых часов, переведённое в секунды ( * 3600). С полученной разности можно вычитать минуты, по аналогии с часами.
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Re: Проблема с статистикой.

Post by myownstyle »

с меня походу не математик, статистика что то не так определяет.

Code: Select all

12:39:25:074 [-]: Iron 118 // Per Hour 9502
12:39:25:078 [-]: Old Copper 8 // Per Hour 14015
12:39:25:083 [-]: Copper 7 // Per Hour 160179
12:39:25:087 [-]: Bronze 7 // Per Hour 160179
12:39:25:091 [-]: Rose 12 // Per Hour 93438
12:39:25:095 [-]: Shadow 14 // Per Hour 80089
12:39:25:099 [-]: Silver 56 // Per Hour 20022
12:39:25:102 [-]: Valorite 17 // Per Hour 65956
12:39:25:107 [-]: Marble 3 // Per Hour 373752
12:39:25:110 [-]: Ice 7 // Per Hour 160179
12:39:25:113 [-]: Blood Rock 10 // Per Hour 112125
12:39:25:117 [-]: Amethyst 6 // Per Hour 186876
12:39:25:120 [-]: Steel 4 // Per Hour 280314
12:39:25:123 [-]: Sun Stone 6 // Per Hour 186876
12:39:25:127 [-]: Black Rock 4 // Per Hour 280314
12:39:25:129 [-]: Daemon Steel 2 // Per Hour 560628
12:39:25:132 [-]: Crusader 4 // Per Hour 280314
12:39:25:136 [-]: Reactive 1 // Per Hour 1121257
12:39:25:141 [-]: MoonRock 2 // Per Hour 560628
12:39:25:144 [-]: -----------------------------------------

Post Reply