To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

1.12.7 i starsze - Robocik 2.0.1

koziolek - 21-06-2008, 14:46

tomekxz napisał/a:
Siema. tak se dzisiaj zjechałem na sam początek sb i widze taki błąd
Kod:
Warning: Invalid argument supplied for foreach() in /home/jaco1992/public_html/shoutbox_view.php on line 242


mam zainstalowanego robocika modyfikacji koziołka i nic więcej z sb nie robiłem.
ooo...

w pliku shoutbox_view.php znajdź:
Kod:
                    foreach ( $orig_word as $key => $val )
                    {
                        if ( strstr(strtolower($msg), $val) )
                        {
                            $robot_wulg_message = ( $userdata['user_wulg'] >= ($shoutbox_config['robocik_max_user_wulg'] - 1) ) ? $shoutbox_config['robocik_warning_text_warn'] : $shoutbox_config['robocik_warning_text_wulg'];
                            $robot_wulg_message = str_replace('{$name}', $userdata['username'], $robot_wulg_message);
                           
                            $sql = "UPDATE " . USERS_TABLE . " SET user_wulg = ( `user_wulg` + 1 ) WHERE user_id = '$sb_user_id'";
                            if ( !($result = $db->sql_query($sql)) )
                            {
                                message_die(GENERAL_ERROR, 'Could not update user_wulg', '', __LINE__, __FILE__, $sql);
                            }
                           
                            $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                                VALUES(NULL, '" . $shoutbox_config['robocik_id'] . "', '$robot_wulg_message', '" . (CR_TIME+2) . "')";
                            if ( !($result = $db->sql_query($sql)) )
                            {
                                message_die(GENERAL_ERROR, 'Could not insert robot message', '', __LINE__, __FILE__, $sql);
                            }
                        }
                    }
i zamień na:
Kod:
                    if( is_array($orig_word) )
                    {
                        foreach ( $orig_word as $key => $val )
                        {
                            if ( strstr(strtolower($msg), $val) )
                            {
                                $robot_wulg_message = ( $userdata['user_wulg'] >= ($shoutbox_config['robocik_max_user_wulg'] - 1) ) ? $shoutbox_config['robocik_warning_text_warn'] : $shoutbox_config['robocik_warning_text_wulg'];
                                $robot_wulg_message = str_replace('{$name}', $userdata['username'], $robot_wulg_message);
                               
                                $sql = "UPDATE " . USERS_TABLE . " SET user_wulg = ( `user_wulg` + 1 ) WHERE user_id = '$sb_user_id'";
                                if ( !($result = $db->sql_query($sql)) )
                                {
                                    message_die(GENERAL_ERROR, 'Could not update user_wulg', '', __LINE__, __FILE__, $sql);
                                }
                               
                                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                                    VALUES(NULL, '" . $shoutbox_config['robocik_id'] . "', '$robot_wulg_message', '" . (CR_TIME+2) . "')";
                                if ( !($result = $db->sql_query($sql)) )
                                {
                                    message_die(GENERAL_ERROR, 'Could not insert robot message', '', __LINE__, __FILE__, $sql);
                                }
                            }
                        }
                    }



tomekxz napisał/a:
Przydało by się też zabezpieczenie przed odpisywaniem na własne wiadomości robocika, ustawiłem sobie teksty na słowo "tak" i "nie",
w pliku shoutbox_view.php znajdź:
Kod:
if ( strstr(strtolower($msg), strtolower($user_word)) )
i zamień na:
Kod:
if ( strstr(strtolower($msg), strtolower($user_word)) && $sb_user_id != $shoutbox_config['robocik_id'] )



RuseK napisał/a:
Potem może go nawet zainstaluję, przejrzę kod, zobaczę co spieprzy..., znaczy się, co dodałeś nowego
:mrgreen: :mrgreen: :mrgreen:
Radek - 22-06-2008, 17:48

Fajnie że pamiętałeś o moim nicku w instrukcji ( :mrgreen: ) ale usuń adres rawaxa, bo tej strony nie ma od minimum roku :)

Ok, w pliku shoutbox_view.php ten kod:
Kod:
                if ( $row = $db->sql_fetchrow($result) )
                {
                    do
                    {
                        $robocik_randtxt[$row['cat_id']][] = $row['rand_text'];
                    }
                    while ( $row = $db->sql_fetchrow($result) );
                }

zamień na:
Kod:

while ( $row = $db->sql_fetchrow($result) )
{
$robocik_randtxt[$row['cat_id']][] = $row['rand_text'];
}


Kolejny fragment:
Kod:
               
                if ( $row = $db->sql_fetchrow($result) )
                {
                    do
                    {
                        $robocik_words[$row['user_word']] = $row['robot_word'];
                    }
                    while ( $row = $db->sql_fetchrow($result) );
                }

zastąp tym:
Kod:

while ( $row = $db->sql_fetchrow($result) )
{
$robocik_words[$row['user_word']] = $row['robot_word'];
}


I dalej ten kod:
Kod:
                        if ( $row = $db->sql_fetchrow($result) )
                        {
                            do
                            {
                                $orig_word[] = str_replace('\*', '', $row['word']);
                                $word_list[$row['word']] = $row['replacement'];
                            }
                            while ( $row = $db->sql_fetchrow($result) );
                        }

zamień na:
Kod:

while ( $row = $db->sql_fetchrow($result) )
{
$word_list[$row['word']] = $row['replacement']; // I tak zapisywales tylko word_list, orig_word nie uzywales
}

I tak to chyba wszystko, te fragmenty wykonuja sie tylko, jezeli zapytania sie sa w /cache/ ale poprawek wprowadzic nie zaszkodzi :>

Pliku admin_robocik.php nie sprawdzałem jeszcze i raczej nie będę.
Przy okazji poprawiłbym też instalację - przed wykonaniem zapytań ( pierwsze uruchomienie pliku administracyjnego ) dodałbym okienko z polem na wpisanie nicku robota i przy instalacji zapytanie, ktore dodaje usera o wprowadzonym nicku do bazy :>

jaco1992 - 22-06-2008, 18:08

Dzięki działa ;)
Jarek 11 - 24-06-2008, 23:02

Ja bym proponował dodać coś takiego np.
User pisze:
Kod:
Robocik spadaj stąd

Robicik odpowiada:
Kod:
papa ide sobie i czekam na przeprosiny

I dopóki ten user nie napisze robocik przepraszam to robocik nie będzie reagował na jego komendy.
2.
Coś takiego pisze się:
Kod:
imieniny

Robocik pisze:
Kod:
dziś są imieniny tej i tej osoby

3.
Pisze się:
Kod:
godziny

Robocik odpowiada
Kod:
np. jest godzina 11:30

Seraphe - 25-06-2008, 09:57

Jarek 11 napisał/a:
a bym proponował dodać coś takiego np.
User pisze:
Kod:
Robocik spadaj stąd

Robicik odpowiada:
Kod:
papa ide sobie i czekam na przeprosiny

I dopóki ten user nie napisze robocik przepraszam to robocik nie będzie reagował na jego
komendy.


A ja bym proponował aby umiał pocieszyć gdy dostaniesz jedynkę w szkole, lub gdy rzuci Cię dziewczyna!

A i żeby telepatycznie wykrywał jaki humor ma dany user.

kamilko - 28-06-2008, 11:43

Czy działa on w SB 3.0 Sheryego?
Jarek 11 - 03-07-2008, 13:33

Mam problem:
Kod:

[Dzisiaj 14:32] Jarek24:  elo
[Dzisiaj 14:32] Robocik:  siemanko Jarek24 ;)
[Dzisiaj 14:32] Robocik:  siemanko Jarek24 ;)

Czemu odpowiada 2 razy

koziolek - 03-07-2008, 16:03

hmmm... tylko na to "elo" tak działa? czy na jakieś inne teksty też?

może masz np. ustawione żeby odpowiadał na: "elo", "el" lub "lo" i dlatego jest 2x

Jarek 11 - 03-07-2008, 16:46

na wszystko odpowiada podwujnie
koziolek - 03-07-2008, 17:03

hmmm... dobrze wyedytowałeś pliki?
Jarek 11 - 03-07-2008, 17:08

pliki wrzuciłem te gotowe.

[ Dodano: 03-07-2008, 18:08 ]
Znalazłem proble dwa razy dodałem kod bo jeden plik ręcznie edytowałem.

Tavaro - 09-07-2008, 21:18

Mam zainstalowanego Robocika od kilku tygodni i muszę powiedzieć, że jestem zadowolony :D koziolek, jak zwykle dobrze wykonana robota.

Mam tylko jedną propozycję: czy dałoby się wprowadzić jakąś blokadę, by Robocik nie dodawał warnów administratorom? :> Albo przynajmniej głównemu adminowi (ID 2) - bo efektem mojej zabawy z cenzurą słów (sprawdzałem jak skuteczne jest zamienianie po fragmentach wyrazów) było to, że musiałem się odblokowywać przez PhpMyAdmina :lol:

chomik - 10-07-2008, 08:59

@koziolek
wielkie dzięki za moda

koziolek - 10-07-2008, 10:18

Tavaro, w pliku shoutbox_view.php znajdź:
Kod:
if ( strstr(strtolower($msg), $val) )
i zamień na:
Kod:
if ( strstr(strtolower($msg), $val) && $userdata['user_level'] != ADMIN )


chomik, notioty nać pańńńńńń :mrgreen:

Radek - 10-07-2008, 17:55

Aby Robocik był jeszcze lepszy, wymyśliłem system pluginów.
Teraz każdy będzie mógł sprawdzić, że jego Robot będzie wyświetlał czas / datę, mówił, kto ma dziś imieniny, wyświetlał wiadomości albo cytaty z basha (lub kretyna, jak kto woli ;) ).
Pluginy są niczym nie ograniczone, więc każdy będzie mógł napisać swój własny plugin z własnymi fajnymi funkcjami :D
Pluginy instalujemy kopiujac jeden plik i kilkając 'uruchom' w pa.
Wersja rc już dziś! (ew. jutro)



Powered by phpBB modified by Przemo © 2003 phpBB Group