[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Код дайсомета
Ivancheg
Приветствую. Очень надеюсь на вашу помощь, множество ошибок преодолел, но тут не могу найти в чем дело.
Собственно проблемный участок кода:
if($irc_cmd == '/d')
{
$iii = 3;
$di = 40;
$plusi = 40;
do
{
$dpos = substr($txt, $iii, 1);
if ($dpos == 'd') {$di = $iii}
if ($dpos == '+') {$plusi = $iii}
$iii += 1;
} while (($dpos != '/') | ($iii != 30));
if ((substr($txt, $iii, 1) == '/') & ($di<$iii) & ($plusi < $iii))
{
$dcount = substr($txt, 3, $di-3);
$dnum = substr($txt, $di+1, $plusi-($di+1));
$dplus = substr($txt, $plusi+1, $iii-($plusi+1));
$iii = 0;
unset($dres);
$dicemessage = 'Бросок ' . $dcount . 'd' . $dnum . '+' . $dplus . ':';
$ores = 0;
do
{
$dres[] = mt_rand(1, $dnum);
$dicemessage = $dicemessage . $dres[$iii]+',';
$ores = $ores+$dres[$iii];
$iii += 1;
]
while ($iii != $dcount);
$ores = $ores+$dplus;
$dicemessage = $dicemessage . ' Общий результат:' . $ores;
$this->send(new Message($type, $this->userid, $GLOBALS['fc_config']['liveSupportMode']?$this->roomid:null, 'test', $this->color));
}
$this->send(new Message($type, $this->userid, $GLOBALS['fc_config']['liveSupportMode']?$this->roomid:null, 'test', $this->color));
return 'ok';
}


Во всем файле описываются команды для чата по такому же типу.
После команды некоторое время висит, потом отвисает.
Тестовые сообщения:
$this->send(new Message($type, $this->userid, $GLOBALS['fc_config']['liveSupportMode']?$this->roomid:null, 'test', $this->color));

Не выводит. Вместо 'test' должна стоять переменная $dicemessage которая потом должна выводится в чат. Дело точно не в неправильной работе с функцией вывода в чат(проверял другой командой только со строкой вывода - все работало)
Значит ошибка в самом коде дайса. Буду очень благодарен помощи.



Спустя 12 минут, 45 секунд (5.11.2010 - 20:45) Invis1ble написал(а):
Ivancheg
Цитата
    } while (($dpos != '/') | ($iii != 30));
    if ((substr($txt, $iii, 1) == '/') & ($di<$iii) & ($plusi < $iii))

вот этот кусок меня смущает... | и & - битовые операции, скорее всего там должно быть || и &&
Дальше я не углублялся в твой код, попробуй пока это поменять и сообщи о результатах

Спустя 3 минуты, 34 секунды (5.11.2010 - 20:49) Invis1ble написал(а):
Цитата
$dicemessage = $dicemessage . $dres[$iii]+',';

вот эта конструкция тоже по-ходу неправильная - ты к строковому типу данных применяешь арифметическую операцию..
Цитата
$iii += 1;

это делается так
$iii ++;
хотя тут принципиальной разницы нет..
Вообще, тут всё очень запущено

Спустя 8 минут, 49 секунд (5.11.2010 - 20:58) Guest написал(а):
Цитата (Invis1ble @ 5.11.2010 - 17:45)
Ivancheg
Цитата
     } while (($dpos != '/') | ($iii != 30));
     if ((substr($txt, $iii, 1) == '/') & ($di<$iii) & ($plusi < $iii))

вот этот кусок меня смущает... | и & - битовые операции, скорее всего там должно быть || и &&
Дальше я не углублялся в твой код, попробуй пока это поменять и сообщи о результатах

Битовые операции поменял, но дело оказалось в неправильном условии while. Теперь второе тестовое сообщение выдается. Но в if с обработчиком не попадает. Буду разбираться.
$dicemessage = $dicemessage . $dres[$iii]+',';

Забыл поменять.
Цитата
Вообще, тут всё очень запущено

Согласен, как не печально... Но данный скрипт очень необходим. Приходится в спешном порядке хоть как то изучать пхп.

Спустя 1 час, 4 минуты, 55 секунд (5.11.2010 - 22:03) Sanchopansa написал(а):
Вот участок кода что мне очень не нравиться...

do
{
$dres[] = mt_rand(1, $dnum);
$dicemessage = $dicemessage . $dres[$iii]+',';
$ores = $ores+$dres[$iii];
$iii += 1;
] while ($iii != $dcount);


ну во-первых
] while ($iii != $dcount);

правим на
} while ($iii != $dcount);


во-вторых:
Кто сказал что в массиве $dres есть уже индекс $iii?
$dicemessage = $dicemessage . $dres[$iii].',';

потому как вот тут индекс не задается
$dres[] = mt_rand(1, $dnum);

Спустя 26 минут, 42 секунды (5.11.2010 - 22:29) Invis1ble написал(а):
Sanchopansa
там вообще очень много ляпов, я не стал углубляться особо.. ))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.