Poprzedni temat :: Następny temat |
djhors Wysłany: Sob 31 Mar, 2007 |
|
|
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 Wysłany: Sob 31 Mar, 2007 |
|
|
Oj.... A by si? odrazu posypa?y posty... ZCHAKOWALI MI FORUM!!! ;) Zapomnij o czym? takim. |
|
djhors Wysłany: 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 Wysłany: 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 Wysłany: 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 Wysłany: Sob 31 Mar, 2007 |
|
|
1. usercp_viewprofile.php, usercp_register.php chyba tylko to.
2. Bra? pod uwag??? Co to znaczy? |
|
djhors Wysłany: 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 Wysłany: 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 Wysłany: Sob 31 Mar, 2007 |
|
|
HM, no tak, juz mi m?zg wysiad? :D zabiore si? za to p?xniej ale piwo mas ;) |
|
KnofeL Wysłany: Sob 31 Mar, 2007 |
|
|
Te? jak mi si? nudzi pisze sobie "engine" takiej gry RPG :) |
|
djhors Wysłany: 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 Wysłany: Sob 31 Mar, 2007 |
|
|
Ja tam chc? to zrobi? na zasadzie Ogame i tego typu gier ;) |
|
They Wysłany: Sob 31 Mar, 2007 |
|
|
KnofeL napisał/aJa tam chc? to zrobi? na zasadzie Ogame i tego typu gier ;)yyy co chcesz zrobi? z tym OGame ? :roll:
ciekawski jestem :mrgreen: |
|
djhors Wysłany: Sob 31 Mar, 2007 |
|
|
KnofeL napisał/aJa 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 Wysłany: Sob 31 Mar, 2007 |
|
|
Dok?adnie... ale krok po kroczku i co? z tego b?dzie :P |
|
|
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
|