phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
Przesunięty przez: Matteo
09-11-2013, 09:36
Quack! Bone 1.0.0
Autor Wiadomość
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 12-08-2010, 20:43   

Linki poprawione :)

[ Dodano: 12-08-2010, 22:54 ]
W 30% realizuję prośbę użytkownika emiloski94.

Dlaczego 30%? Nie ma jeszcze:
  • Limitu na 2 razy dziennie
  • Nie ma automatycznego dodania do grupy
  • Wiadomość widoczna tylko dla tego użytkownika, który ją wysłał

Ale zawsze zarys jakiś jest. :)
Nie działa z AJAX'owym SB!

shoutbox_view.php
znajdź:
Kod:
        $msg_id = $db->sql_nextid();

        $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
            VALUES($msg_id, $sb_user_id, '" . str_replace("\'", "''", $msg) . "', '" . CR_TIME . "')";
        if ( !($result = $db->sql_query($sql)) )
        {
            message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
        }

zamień na:
Kod:
        if($msg === 'losuj') {
            $msg_id = $db->sql_nextid();
            $quack_bone_min = 0; /* Minimalna wartość */
            $quack_bone_max = 10; /* Maksymalna wartość */
            $quack_bone_ok = 5; /* Wartość, po której wylosowaniu otrzymuje się dostęp do grupy */
            $quack_bone_rand = rand($quack_bone_min, $quack_bone_max);
           
            if($quack_bone_rand === $quack_bone_ok) {
                $quack_bone_gen_msg = 'Gratulacje! Udało Ci się wylosować rangę V.I.P.';
                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                    VALUES($msg_id, $sb_user_id, '" . $quack_bone_gen_msg . "', '" . CR_TIME . "')";
           
                if(!($result = $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
                }
            } else {
                $quack_bone_gen_msg = 'Niestety nie udało się wylosować rangi V.I.P.';
                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                    VALUES($msg_id, $sb_user_id, '" . $quack_bone_gen_msg . "', '" . CR_TIME . "')";
           
                if(!($result = $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
                }
            }
        } else {
            $msg_id = $db->sql_nextid();
           
            $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                VALUES($msg_id, $sb_user_id, '" . str_replace("\'", "''", $msg) . "', '" . CR_TIME . "')";
            if ( !($result = $db->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
            }
        }


I gotowe.

Konfiguracja przez 3 zmienne:
Kod:
            $quack_bone_min = 0; /* Minimalna wartość */
            $quack_bone_max = 10; /* Maksymalna wartość */
            $quack_bone_ok = 5; /* Wartość, po której wylosowaniu otrzymuje się dostęp do grupy */

Im większy przedział wartości (mam na myśli dwie pierwsze zmienne) tym szanse na wylosowanie danej liczby są mniejsze.

Istnieje możliwość zdefiniowania kilku wartości, po których wylosowaniu otrzymuje się dostęp do grupy zmieniając:
Kod:
$quack_bone_ok = 5;

na
Kod:
$quack_bone_ok = array(5,10,15,20);


Nic jednak nie zostało przetestowane.
_________________
The Cephei Family
stuff 'n' stuff
 
     
Gadatliwa Kasia 

   
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 13-08-2010, 03:22   

W instrukcji jest mały błąd ;] A mianowicie teraz jest
Kod:
$quack_bone_gen_msg = $userdata['username'] . ' rzucił(a) ścmi i wylosował(a) ' . $quack_bone_rand . '!';

a powinno być
Kod:
$quack_bone_gen_msg = $userdata['username'] . ' rzucił(a) kośćmi i wylosował(a) ' . $quack_bone_rand . '!';
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 13-08-2010, 13:47   

sebul00000, dzięki poprawiam już.
_________________
The Cephei Family
stuff 'n' stuff
 
     
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 13-08-2010, 14:59   

Hmmm... trochę nie za bardzo tego ogarniam, więc mam pytanie ;] Jak zrobić ograniczenie do tego losowania? Tak jak to jest w tym losowaniu vipa. Zauważyłem, że trzeba zapytanie dodać, ale nie bardzo wiem który jeszcze kod trzeba dodać...
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 13-08-2010, 15:09   

SQL:
Kod:
ALTER TABLE `phpbb_users`
ADD `quack_bone_date` INT NOT NULL

shoutbox_view.php
Kod:
        if($msg === 'losuj') {
            $sql = "SELECT quack_bone_date FROM " . USERS_TABLE . " WHERE user_id = " . $userdata['user_id'];
            $result = $db->sql_query($sql);
            $row = $db->sql_fetchrow($result);
           
            if(time() - 3600 * 24 > $row['quack_bone_date']) {
                $sql = "UPDATE " . USERS_TABLE . "
                    SET quack_bone_date = " . CR_TIME . "
                    WHERE user_id = " . $userdata['user_id'];
               
                if(!($result == $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not update Quack! Bone V.I.P. row', '', __LINE__, __FILE__, $sql);
                }
               
                $msg_id = $db->sql_nextid();
                $quack_bone_min = 0; /* Minimalna wartość */
                $quack_bone_max = 10; /* Maksymalna wartość */
                $quack_bone_rand = rand($quack_bone_min, $quack_bone_max);
                $quack_bone_gen_msg = $userdata['username'] . ' rzucił(a) koścmi i wylosował(a) ' . $quack_bone_rand . '!';
               
                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                    VALUES($msg_id, $sb_user_id, '" . $quack_bone_gen_msg . "', '" . CR_TIME . "')";
               
                if(!($result = $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
                }
            } else {
                $msg_id = $db->sql_nextid();
                $quack_bone_gen_msg = 'Co za dużo to niezdrowo. :) Możesz losować tylko raz na 24 godziny.';
                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                    VALUES($msg_id, $sb_user_id, '" . $quack_bone_gen_msg . "', '" . CR_TIME . "')";
               
                if(!($result = $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
                }
            }
        } else {
            $msg_id = $db->sql_nextid();
           
            $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                VALUES($msg_id, $sb_user_id, '" . str_replace("\'", "''", $msg) . "', '" . CR_TIME . "')";
           
            if ( !($result = $db->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
            }
        }
_________________
The Cephei Family
stuff 'n' stuff
 
     
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 13-08-2010, 18:02   

No i gitara :D Dzięki.


Wyszła optymalizacja do Quack! Bone V.I.P. 1.0.1, więc teraz jak dać ten anty flood tutaj? Tak samo jak w tamtej poprawce? Czy trochę inaczej?
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 13-08-2010, 20:02   

o tak:
Kod:
        if($msg === 'losuj') {
            if(time() - 3600 * 24 > $userdata['quack_bone_date']) {
                $sql = "UPDATE " . USERS_TABLE . "
                    SET quack_bone_date = " . CR_TIME . "
                    WHERE user_id = " . $userdata['user_id'];
               
                if(!($result == $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not update Quack! Bone V.I.P. row', '', __LINE__, __FILE__, $sql);
                }
               
                $msg_id = $db->sql_nextid();
                $quack_bone_min = 0; /* Minimalna wartość */
                $quack_bone_max = 10; /* Maksymalna wartość */
                $quack_bone_rand = rand($quack_bone_min, $quack_bone_max);
                $quack_bone_gen_msg = $userdata['username'] . ' rzucił(a) koścmi i wylosował(a) ' . $quack_bone_rand . '!';
               
                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                    VALUES($msg_id, $sb_user_id, '" . $quack_bone_gen_msg . "', '" . CR_TIME . "')";
               
                if(!($result = $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
                }
            } else {
                $msg_id = $db->sql_nextid();
                $quack_bone_gen_msg = 'Co za dużo to niezdrowo. :) Możesz losować tylko raz na 24 godziny.';
                $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                    VALUES($msg_id, $sb_user_id, '" . $quack_bone_gen_msg . "', '" . CR_TIME . "')";
               
                if(!($result = $db->sql_query($sql))) {
                    message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
                }
            }
        } else {
            $msg_id = $db->sql_nextid();
           
            $sql = "INSERT INTO " . SHOUTBOX_TABLE . "
                VALUES($msg_id, $sb_user_id, '" . str_replace("\'", "''", $msg) . "', '" . CR_TIME . "')";
           
            if ( !($result = $db->sql_query($sql)) )
            {
                message_die(GENERAL_ERROR, 'Could not insert shoutbox message', '', __LINE__, __FILE__, $sql);
            }
        }
_________________
The Cephei Family
stuff 'n' stuff
 
     
Misiek [PL]


Pomógł: 82 razy
Posty: 430
Wysłany: 18-08-2010, 19:43   

Polaczek, możesz napisać instrukcje do finalnej wersji ShoutBox'a w jQuery? (ta wersja gdzie jest limit użycia losuj na dzień).
_________________
instalacja modyfikacji # aktualizacja for # przenoszenie for # naprawa kodowania (krzaczków)
tylko dwie rzeczy są nieskończone - pętla while (TRUE) i ludzka głupota, ale tą pierwszą można przerwać za pomocą break;
 
     
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 31-08-2010, 12:08   

Mam taki pomysł co do tego ograniczenia dziennego (czy jakiego tam się chce), równie dobrze mógłbym napisać to w temacie z vipem, ale tutaj też może być. Dało radę by zrobić, że zamiast tego tekstu "już nie możesz losować" był by licznik ile zostało sekund/godzin/dni do końca ograniczenia? Też wydaje mi się, że dobrym pomysłem była by jakaś dodatkowa tabelka z wynikami, kto ile wylosował z np. top10 userów z największym wynikiem, no i żeby była jakaś możliwość ustawienia kasacji wyników automatycznie co jakiś czas, albo ręcznie (natychmiastowo po naciśnięciu jakiegoś przycisku).
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 31-08-2010, 12:48   

sebul00000, mogę zrobić przy generowaniu wiadomości obliczenie ile zostało czasu.
Co do top10 to będzie kolejne zapytanie do bazy, a wiec może trochę obciążyć. Ale trochę, zobaczymy ;)
Kasacja byłaby wtedy możliwa przez przycisk dla administratora w SB (przy odśwież etc)
_________________
The Cephei Family
stuff 'n' stuff
 
     
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 23-09-2010, 21:23   

Nie to że jestem jakiś natarczywy, itp. ale czy trwają jeszcze jakieś prace nad tym modem? I czy będzie ta tabelka o której pisałem? ;]
Jeszcze jest inny pomysł co do tego losowania... bo teraz można go łatwo podrobić, więc czy można zrobić jakoś tak, że gdy ktoś wpisałby do sb tekst który wyświetla się po losowaniu, to wtedy taki wpis nie wyświetlił by się, albo coś w tym stylu. Wiem, że pewnie wtedy sb stanie się bardziej obciążone, ale przecież zawsze będzie można to sobie usunąć.
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 23-09-2010, 22:39   

sebul00000, nie mam czasu kiedy tym się zająć.
Co do Twojego pomysłu:
shoutbox_view.php
Kod:
        } else {
            $msg_id = $db->sql_nextid();

dodaj przed:
Kod:
} elseif(preg_match('rzucił(a) kośćmi i wylosował(a)', $msg)) {
            $msg_id = $db->sql_nextid();
            $sql = "insert into {$table_prefix}shoutbox values($msg_id, $sb_user_id, 'Nie fałszuj wiadomości!', '" . CR_TIME . "')";
            if(!$result = $db->sql_query($sql)) {
                message_die(GENERAL_ERROR, 'Nie mogę wysłać wiadomości do ShoutBoxa');
            }
_________________
The Cephei Family
stuff 'n' stuff
 
     
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 23-09-2010, 23:57   

Próbowałem na wszelkie sposoby i coś nie działa to... albo ja coś nie tak robię, albo może to po czasie dopiero zadziała?
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Polaczek


Pomógł: 351 razy
Posty: 2297
Wysłany: 24-09-2010, 21:02   

a spróbuj tak zrobić ten preg_match():
Kod:
preg_match('/kośćmi i wylosował/', $msg)
_________________
The Cephei Family
stuff 'n' stuff
 
     
Gadatliwa Kasia 

   
sebul00000


Pomógł: 23 razy
Posty: 451
Wysłany: 24-09-2010, 21:29   

hmmm też nie działa... Ten kod daje przed pierwszym
Kod:
        } else {
            $msg_id = $db->sql_nextid();

Bo jak daje przed drugim to wyskakuje błąd.
_________________
Za niewielką opłatą (przy mniejszych zleceniach, możliwość zapłaty smsem) robię wszystko (no może prawie wszystko ;] ) co jest związane ze skryptem forum phpBB2 by Przemo, między innymi instalacja skryptu przema, wgrywanie modów, itp.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,09 sekundy. Zapytań do SQL: 12
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

Design Cart - Tworzenie sklepu internetowego

iRonin.IT

• Zamów reklamę