|
Unofficial modifications nieoficjalne modyfikacje for?w phpBB by Przemo |
|
Pomoc dla modyfikacji - [BBCode Manager] Obs?uga php i mysql
djhors - Sob 31 Mar, 2007 Temat postu: [BBCode Manager] Obs?uga php i mysql Witam czy w tym modzie mo?na przy obs?udze danego bbcode zaimplementowac obs?ug? jakiego? kodu ale w php. tzn ?e np. kod [indeksuj]costam[/inedksuj] wykona zapytanie do bazy
PHP Code: | <?php
$sql = "UPDATE wsgame_users SET postac = '{TEXT}' WHERE user_id = $aktualnyuzytkownik";
$result = $db->sql_query($sql);
$proces = $db->sql_fetchrow($result);
?> |
(taki byle jaki przyk?ad)
ewentualnie jak mniej wi?cej zmodyfikowa? Manager'a by to dzia?a?o ?
KnofeL - Sob 31 Mar, 2007
Oj.... A by si? odrazu posypa?y posty... ZCHAKOWALI MI FORUM!!! Zapomnij o czym? takim.
djhors - Sob 31 Mar, 2007
To mo?e inaczej kwesti? nie jest to aby ka?dy mia? do tego dost?p tzn do danego kodu BBCode. Wko?cu to administrator reguluje jaki kod php wykona u?ytkownik w??czaj?c dany kod BBCode i to moj rozs?dek mi powie (jako Adminowi) co mog? u?y? a co nie. zreszt? u?yj? blokady BBCode dla danego tematu czy forum i dla danego usera
narazie bawi?em si? z Forum AI - Botem odpowiadaj?cym na dane zapytania i wygl?da to tak:
PHP Code: | <?php
$dana = $HTTP_POST_VARS['message'];
$error = 0;
$tablica = explode("||", $dana);
// Wybor postaci
if ($tablica[1] == 'postac' )
{
if ($tablica[2] == 'wybor') {
// Sprawdza czy postac juz nie zostala wybrana
$aktualnyuzytkownik = $userdata['user_id'];
$sql = "SELECT user_id,username,postac FROM wsgame_users WHERE user_id = $aktualnyuzytkownik";
$result = $db->sql_query($sql);
$brakpostaci = $db->sql_fetchrow($result);
$sql = "SELECT topic_id,topic_title FROM wsgame_topics WHERE topic_id = $topic_id";
$result2 = $db->sql_query($sql);
$tematpostow = $db->sql_fetchrow($result2);
$sql = "SELECT forum_id,forum_name FROM wsgame_forums WHERE forum_id = $forum_id";
$result3 = $db->sql_query($sql);
$forumpostow = $db->sql_fetchrow($result3);
if ($tematpostow['topic_title'] == $brakpostaci['username']) {
if ($forumpostow['forum_name'] == 'Postac') {
// Wybieranie postaci
if ($brakpostaci['postac'] == '0')
{
$zakrestablicy = $tablica[4] + $tablica[5] + $tablica[6] + $tablica[7] + $tablica[8] + $tablica[9] + $tablica[10] + $tablica[11];
if ($zakrestablicy <> 80) {
$error = 1;
$iai_message = "Wykorzysta?e? za du?o lub za ma?o punkt?w statystyk (do wykorzystania - 80pkt)!";
}
switch($tablica[3]) {
case 'czlowiek':
$Rasa = "czlowiek";
$WWplus = 20 + $tablica[4]; $USplus = 20 + $tablica[5]; $Kplus = 20 + $tablica[6]; $Odpplus = 20 + $tablica[7]; $Zrplus = 20 + $tablica[8]; $Intplus = 20 + $tablica[9]; $SWplus = 20 + $tablica[10]; $Ogdplus = 20 + $tablica[11]; $Atak = 1; $Zywnosc = 0; $Sila = floor($tablica[6]/10); $Wytrzymalosc = floor($tablica[7]/10); $Szybkosc = 4; $Magia = 0; $Obled = 0; $Przeznaczenie = 0;
break;
case 'elf':
$Rasa = "elf";
$WWplus = 20 + $tablica[4]; $USplus = 30 + $tablica[5]; $Kplus = 20 + $tablica[6]; $Odpplus = 20 + $tablica[7]; $Zrplus = 30 + $tablica[8]; $Intplus = 20 + $tablica[9]; $SWplus = 20 + $tablica[10]; $Ogdplus = 20 + $tablica[11]; $Atak = 1; $Zywnosc = 0; $Sila = floor($tablica[6]/10); $Wytrzymalosc = floor($tablica[7]/10); $Szybkosc = 5; $Magia = 0; $Obled = 0; $Przeznaczenie = 0;
break;
case 'krasnolud':
$Rasa = "krasnolud";
$WWplus = 30 + $tablica[4]; $USplus = 20 + $tablica[5]; $Kplus = 20 + $tablica[6]; $Odpplus = 30 + $tablica[7]; $Zrplus = 10 + $tablica[8]; $Intplus = 20 + $tablica[9]; $SWplus = 20 + $tablica[10]; $Ogdplus = 10 + $tablica[11]; $Atak = 1; $Zywnosc = 0; $Sila = floor($tablica[6]/10); $Wytrzymalosc = floor($tablica[7]/10); $Szybkosc = 3; $Magia = 0; $Obled = 0; $Przeznaczenie = 0;
break;
case 'niziolek':
$Rasa = "niziolek";
$WWplus = 10 + $tablica[4]; $USplus = 30 + $tablica[5]; $Kplus = 10 + $tablica[6]; $Odpplus = 10 + $tablica[7]; $Zrplus = 30 + $tablica[8]; $Intplus = 20 + $tablica[9]; $SWplus = 20 + $tablica[10]; $Ogdplus = 30 + $tablica[11]; $Atak = 1; $Zywnosc = 0; $Sila = floor($tablica[6]/10); $Wytrzymalosc = floor($tablica[7]/10); $Szybkosc = 4; $Magia = 0; $Obled = 0; $Przeznaczenie = 0;
break;
default:
$iai_message = "Niepoprawna rasa!";
$error = 1;
}
switch($tablica[12]) {
case 'akolita':
$plusWW = 5; $plusUS = 5; $plusK = 0; $plusOdp = 5; $plusZr = 0; $plusInt = 10; $plusSW = 10; $plusOgd = 10; $plusA = 0; $plusZyw = 2; $plusS = 0; $plusWt = 0; $plusSz = 0; $plusMag = 0; $umiejetnosci = "czytanie i pisanie, leczenie, nauka (astronomia albo historia), nauka (teologia), przekonywanie, spostrzegawczosc, znajomosc jezyka (klasyczny), znajomosc jezyka (staroswiecki)";
break;
default:
$error = 1;
$iai_message = "Niepoprawna profesja!";
}
}
else {
$iai_message = "Posta? masz ju? stworzon?, nie mo?esz jej sam zmieni?!";
}
}
else { $iai_message = "Posta? mo?na stworzy? tylko na Forum: Postac"; }
}
else { $iai_message = "Posta? mo?na stworzy? tylko w swoim temacie: <Tw?j Nick>"; }
}
else {$iai_message = "Niepe?na lub niepoprawna komenda!";}
}
if ($error == 0)
{
$sql = "UPDATE wsgame_users SET postac = '1', postac_rasa = '$Rasa', postac_WW = '$WWplus', postac_US = '$USplus', postac_K = '$Kplus', postac_Odp = '$Odpplus', postac_Zr = '$Zrplus', postac_Int = '$Intplus', postac_SW = '$SWplus', postac_Ogd = '$Ogdplus', postac_A = '$Atak', postac_Zyw ='$Zywnosc', postac_S = '$Sila', postac_Wt = '$Wytrzymalosc', postac_Sz = '$Szybkosc', postac_Mag = '$Magia', postac_PO = '$Obled', postac_PP = '$Przeznaczenie', postac_WWplus = '$plusWW', postac_USplus = '$plusUS', postac_Kplus = '$plusK', postac_Odpplus = '$pplusOd', postac_Zrplus = '$plusZr', postac_Intplus = '$plusInt', postac_SWplus = '$plusSW', postac_Ogdplus = '$pluOgds', postac_Aplus = '$pluA', postac_Zywplus ='$plusZyw', postac_Splus = '$plusS', postac_Wtplus = '$plusWt', postac_Szplus = '$plusSz', postac_Magplus = '$plusMag', postac_PD ='0', postac_umiejetnosci = '$umiejetnosci' WHERE user_id = $aktualnyuzytkownik";
$result = $db->sql_query($sql);
$proces = $db->sql_fetchrow($result);
$iai_message = "Postac stworzona. Sprawdz swoje statystyki!";
}
if ($tablica[0] == 'KOMENDA:') {
iai_submit_post($iai_mode, $iai_id, $forum_id, $topic_id, $iai_post_id, $iai_topic_type, 1, 1, 1, 1, $bbcode_uid, str_replace("\'", "''", $iai_username), str_replace("\'", "''", $iai_subject), str_replace("\'", "''", $iai_message));
iai_update_post_stats($forum_id, $topic_id, $iai_post_id, $iai_id);
?> |
Nie jest to kod mo?e z byt ambitny ale zostawmy t? kwesti?, tutaj po modyfikacji tabeli user'a jest tworzona posta? dla danego user'a ale chc? to zamieni? na obs?ug? przez BBCode.
DZia?a to na zasadzie takiej ?e kto? pisze posta:
Kod |
KOMENDA::||postac||wybor||elf||10||20||30||5||5||1||5||4||akolita||
|
i tworzona jest postac dla danego user'a. Mam tylko problem z implementacj? tego przy edytowaniu w?asnego profilu aby kody pozostawi? tylko dla mistrz?w gry. Oczywi?cie wcze?niej przed kodem jest zabezpieczenie aby kod zadzia?a? tylko dla danego u?ytkownika, dla danego tematu i jego tytu?u oraz grupy,
Jakies sugestie...?
KnofeL - Sob 31 Mar, 2007
Hmmm nie za bardzo wiem o co chodzi?? Chesz aby tworzenie nowych postaci odbywa?o si? na zasadzie ?e user zak?ada nowy temat z odpowiednio napisanym postem?? Bo je?li tak to jest to troche "dziwny" pomys? no ale je?li chesz to ja bym to zrobi? tak:
- Stworzy? now? tabel? np phpbb_chars
- Ten skrypt kt?ry tu doda?e? umie?ci?bym w jaki? pliku (np. create_char.php)
- Nast?pnie stworzy?bym sobie tag np [NEWCHAR][/NEWCHAR] w kt?rym trzeba by poda? odpowiednie dane np:
Kod | [newchar]KnofeL,Kobieta,Elf,Wojownik,1,2,3,4,5,6,7,8,9,10[/newchar] |
- Kiedy user kliknie wy?lij nast?pi sprawdzenie czy jest to nowy temat, w jakim dziale zosta? napisany. Je?li oba te warunki zostan? spe?nione zostanie do??czony plik create_char.php kt?ry odpowiednio przetworzy sobie zawarto?? tagu [newchar].
Dlaczego proponuje tag, ?eby user m?g? ew doda? jakie? inne informacje - mo?na by w ten spos?b zrobi? wizyt?wk? ka?dego gracza.
Ja bym to tak widzia?, proste i bez zb?dnego kombinowania.
djhors - Sob 31 Mar, 2007
No tak, przy mojej komendzie u?ytkownik mo?e doda? inne informacje gdyz zostan? potraktowane jako nast?pny rekord tablicy, ale to ma?o istotne gdy? wszelkie komendy u?ytkownik b?dzie m?g? wykonywa? tylko w osobnym temacie kt?ry b?dzie swojego rodzaju inrepreterem i nie b?dzie za?mieca? reszty forum. Za? opis postaci b?dzie w innym temacie gdy? temat "interpretera" b?dzie musia? by? zablokowany dla reszty u?ytkownik?w aby nie mieli wgl?du na posta?.
My?la?em te? aby zaimplementowa? to przy rejestracji ale tu spotykam si? z pewnym problemem ot?z wiem ?e do tworzenia nowych p?? w profilu wystarczy mod z tzw. prefix'ami i sufiksami ale tam te? napotykam si? na ograniczeniem niemo?no?ci wciskania kodu php. NIe wiem zabardzo jak "r?cznie" stworzy? nowe pole w profilu kt?rego warto?? b?dzie zapisywana do tablicy a p??niej blokowana do dalszej edycji przez u?ytkownika ale tylko w przypadku gdy jakis_tam_rekord bedzie mia? warto?? 1. Prosz? o ma?? podpowied? kt?re pliki odpowiadaja za pola profilu (jego edycj?, warto?ci itd.) i ich os?ug? - ewentualnie w kt?rej cz??ci skryptu, to ju? sobie powinienem poradzi?.
[ Dodano: Sob 31 Mar, 2007 ]
I co do tego tag'u. Na jakiej instrukcji mia?bym go stworzy? ?eby system forum bra? pod uwag? plik create_char.php - bo trochu nie kapuj? tego.
KnofeL - Sob 31 Mar, 2007
1. usercp_viewprofile.php, usercp_register.php chyba tylko to.
2. Bra? pod uwag??? Co to znaczy?
djhors - Sob 31 Mar, 2007
Ad.1. Dzi?ki
Ad2. NO tak jesli m?j skrypt z warunkami wsadz? w osobny plik to system przy wywo?aniu tagu musi wiedzie? ?e w tym pliku s? warunki do tagu. Ewentualnie pro?ciej: jak stworzy? ten tag. (bo w ko?cu nie chyba przez BBCode manager skoro nie ma tam obs?ugi php)
KnofeL - Sob 31 Mar, 2007
Include tego pliku i przeszukanie zawarto?? postu pod k?tem tagu [newchar]:
Kod | $new_char = preg_replace("#\[newchar\](.*?)\[/newchar\]#si", "\\1", $HTTP_POST_VARS['message'] );
$new_char_data = explode(',', $new_char); |
djhors - Sob 31 Mar, 2007
HM, no tak, juz mi m?zg wysiad? zabiore si? za to p?xniej ale piwo mas
KnofeL - Sob 31 Mar, 2007
Te? jak mi si? nudzi pisze sobie "engine" takiej gry RPG
djhors - Sob 31 Mar, 2007
Hm, fajnie, jak pewnie si? domy?li?e? jad? na Warhamerze'e nowej edycji ale jeszcze kupa roboty prze de mn? bynajmniej b?dzie dzia?a?a na zasadzie sesji prowadzonych przez MG ale gracze bed? mieli sta?e postacie, MG beda mogli obnizaj statystyki (podwy?szanie statystyk tylko w przypadku odpowiedniej ilosci PD) ale te? na pewnych zasadach bota mam bo chce spr?bowac te? z automatycznymi questam'i no nic zabieram si? jutro za pisanie
KnofeL - Sob 31 Mar, 2007
Ja tam chc? to zrobi? na zasadzie Ogame i tego typu gier
They - Sob 31 Mar, 2007
KnofeL napisał/a | Ja tam chc? to zrobi? na zasadzie Ogame i tego typu gier | yyy co chcesz zrobi? z tym OGame ?
ciekawski jestem
djhors - Sob 31 Mar, 2007
KnofeL napisał/a | Ja tam chc? to zrobi? na zasadzie Ogame i tego typu gier |
Tia widzia?em wszystkie produkcje GameFusion.de - takie c?? samemu zrobi? to b?dzie kawa? roboty
KnofeL - Sob 31 Mar, 2007
Dok?adnie... ale krok po kroczku i co? z tego b?dzie
|
|