What's new

System sprzeda?y postaci

Status
Not open for further replies.

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
No wi?c zacznijmy. Na dzi? napisa?em system sprzeda?y postaci, kt?ry polega na tym, ?e po zalogowaniu si? na strone i wej?ciu w odpowiedni? zak?adke mo?emy wybra? posta? z naszej listy, kt?ra zostanie wystawiona na sprzeda?. Wystawiamy j? za dan? ilo?? punkt?w premium do czego dodawana zostaje suma, kt?ra wpiszemy w config.php. Kupuj?cy za? musi posiada? t? ilo?? punkt?w na koncie, a by m?c zakupi? posta?. Po zfinalizowanej tranzakcji posta? przechodzi na konto kupuj?cego. Oczywi?cie po wystawieniu postaci na sprzeda? nie mo?emy si? na ni? zalogowa?.
Przejd?my do instalacji.
1. Wykonujemy zapytanie MySQL'a:
Code:
ALTER TABLE `players` ADD `sell` tinyint(1) NOT NULL default '0'
ALTER TABLE `players` ADD `pp_sell` int(10) NOT NULL default '0'
2. Tworzymy plik auctionchar.php i wrzucamy do niego to:
PHP:
<?
/*   `sell` tinyint(1) NOT NULL default '0',
  `pp_sell` int(10) NOT NULL default '0' */
$id = (int) $_GET['id'];
$buy = $_GET['buy'];
if ($logged){  
	$player = $SQL->query('SELECT * FROM players WHERE id = '.$id.' LIMIT 1')->fetch();
	if ($player){
		if (isset($id) && !isset($buy)){		
			if ($player['sell']){
				$main_content .= 'Czy jeste? peweien, ?e chcesz kupi? posta? o nicku <b>'.$player['name'].'</b> za <b>'.$player['pp_sell'].'</b> punkt?w premium? Je?li tak, kliknij <a href="?subtopic=buycharacter&id='.$id.'&buy=true">tutaj</a>.';
			}
		}
		if (isset($id) && $player['sell']){
			if ($buy == 'true'){
			if ($account_logged->getCustomField('premium_points') > $player['pp_sell']){
				$points = $player['pp_sell'];
				$pl_id = $player['id'];
				$SQL->query('UPDATE accounts SET premium_points = premium_points + '.$points.' WHERE id = '.$pl_id.' LIMIT 1');
				$account_logged->setCustomField('premium_points', $account_logged->getCustomField('premium_points')-$player['pp_sell']);
				$SQL->query('UPDATE players SET account_id = '.$account_logged->getID().', sell = 0, pp_sell = 0 WHERE id = '.$id.' LIMIT 1');
				$main_content .= 'Kupi?e? posta? <b>'.$player['name'].'</b>. Od teraz ta posta? jest na twoim koncie.';
			}
		else{
			$errors [] = 'Masz za ma?o punkt?w premium aby zakupi? t? posta?.';
		}
		}
		}
		else{
			$errors [] = 'Ta posta? nie jest na sprzeda?.';
		}
	}
	else{
		$errors [] = 'Nie ma takiej postaci w bazie.';
	}
	if (!empty($errors)){
		$main_content .= '<div class="SmallBox" >  <div class="MessageContainer" >    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="ErrorMessage" >      <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>Wyst?pi?y poni?sze b??dy:</b><br/>';
			foreach($errors as $error) {
				$main_content .= '<li>'.$error;
			}
		$main_content .= '</div>    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>  </div></div><br/>';
	}
}
else{
Header('Location: ?subtopic=accountmanagement');
}
?>
3. Tworzymy plik sellchar.php i uzupe?niamy go tym:
PHP:
<?PHP
if ($logged){
$main_content = '<fieldset><center>';
$account_players = $account_logged->getPlayersList();
	if ($account_players > 0){
		$main_content .= '<form action = "" method="post"><select name="player">';
		foreach($account_players as $acc_player){
			if ($acc_player->getCustomField('sell') == 0){
				$main_content .= '<option name="'.$acc_player.'">'.$acc_player.'</option>';
			}
		}
		$main_content .= '</select></br>Ile punkt?w premium ma kosztowa? posta?:<br> <input type="text" name="pp"><br><input type="submit" value="Sprzedaj posta?!" name="sub"></form>';
	}
	else{
		$errors[] = 'Nie masz ?adnej postaci.';
	}
	$main_content .= '</center></fieldset>';
	$list_sell_char = $SQL->query('SELECT id, name, level, vocation, promotion, pp_sell FROM players WHERE sell = 1 AND group_id < 2 ORDER BY level')->fetchAll();
	if ($list_sell_char){
		$counter = 0;
		$main_content .='<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=1 WIDTH=100%></TABLE><TABLE BORDER=0 CELLPADDING=4 CELLSPACING=1 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD WIDTH=20% CLASS=white><B><center>Name</center></B></TD><TD WIDTH=15% CLASS=white><B><center>Level</center></B></TD><TD WIDTH=25% CLASS=white><b><center>Vocation</center></B></TD><TD WIDTH=15% CLASS=white><b><center>Buy</center></B></TD><TD WIDTH=20% CLASS=white><b><center>Price</center></B></TD></TR>';
		foreach($list_sell_char as $sell_char){
			$counter++;
			if(is_int($counter / 2))
				$bgcolor = $config['site']['darkborder'];
			else
				$bgcolor = $config['site']['lightborder'];
			$voc = $player_voc = $vocation_name[0][$sell_char['promotion']][$sell_char['vocation']];
			$main_content .= '<tr bgcolor="'.$bgcolor.'"><td><a href="?subtopic=characters&name='.$sell_char['name'].'"><center>'.$sell_char['name'].' </center></a></td><td><center>'.$sell_char['level'].'</center></td><td><center>'.$voc.'</center></td><td><center><a href="?subtopic=buycharacter&id='.$sell_char['id'].'">Buy</a></center></td><td>'.$sell_char['pp_sell'].' premium points!</td>';
		}
		$main_content .= '</table>';
	}
	else{
		$main_content .= 'Nie ma ?adnej postaci na sprzeda?.';
	}
	if (isset($_POST['sub'])){
		if (is_numeric($_POST['pp'])){
			if ($SQL->query('UPDATE players SET sell = true, pp_sell = '.$_POST['pp'].'+100 WHERE name = "'.$_POST['player'].'" LIMIT 1')){
				$main_content .= 'Twoja posta? zosta?a dodana do listy.';
			}
		}
		else{
			$errors[] = 'Ilo?? punkt?w premium musi by? liczb?!.';
		}
	}
	if (!empty($errors)){
		$main_content .= '<div class="SmallBox" >  <div class="MessageContainer" >    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="ErrorMessage" >      <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>Wyst?pi?y poni?sze b??dy:</b><br/>';
			foreach($errors as $error) {
				$main_content .= '<li>'.$error;
			}
		$main_content .= '</div>    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>  </div></div><br/>';
	}
}
else{
Header('Location: ?subtopic=accountmanagement');
}
$main_content .= '<p align = "right"><small>System created by <a href="http://tibia.net.pl/members/kowol.html">Kowol</a>.</small></p>';    
?>
4. Przechodzimy do /config/config.php i dodajemy linijk? (przez ?>):
PHP:
$config['site']['char_cost_plus'] = 100; // ile doda punkt?w do ka?dego wystawionej postaci
5. Teraz przechodzimy do pliku index.php i dodajemy:
PHP:
	case "buycharacter":
		$topic = "Buy Character";
		$subtopic = "buycharacter";
		include("auctionchar.php");
	break;
		case "sellchar";
		$topic = "Sell character";
		$subtopic = "sellchar";
		include("sellchar.php");
	break;
Dodajemy to oczywi?cie pod np.
Code:
        case "highscores";
                $topic = "Highscores";
                $subtopic = "highscores";
                include("highscores.php");
        break;
6. Dodajemy odpowiedni kod do /layouts/twoj_lay/layout.php, kt?ry jest zale?ny od layoutu, wi?c ka?dy musi si? sam wysili?.
7. Przechodzimy do silnika, a nast?pnie do folderu /data/creaturescripts/scripts/ i tworzymy plik sellCheck.lua i uzupe?niamy go poni?szym kodem:
Code:
function onLogin(cid)
local sellquery = db.getResult("SELECT sell FROM players WHERE name = '"..getCreatureName(cid).."' LIMIT 1")
local sell = sellquery:getDataInt("sell")
sellquery:free()
if sell == 1 then
  doPlayerPopupFYI(cid, "Twoja postac zostala wystawiona na sprzedaz, nie mozesz sie na nia teraz zalogowac")
  doRemoveCreature(cid)
end
return TRUE
end
8. Otwieramy plik /data/creaturescripts/creaturescripts.xml i dopisujemy poni?sz? linijk?:
Code:
<event type="login" name="sellCheck" event="script" value="sellCheck.lua"/>
To ju? wszystko! Poni?ej przedstawi? screen z systemu:'
tnetkowol.jpg
 

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Odp: #3 System sprzeda?y postaci - Kowol

Odp: #3 System sprzeda?y postaci - Kowol

?wietny skrypt, na pewno u?atwi i zabezpieczy transakcje, wi?c na otsach z tym systemem nie b?dzie miejsca na kantowanie za pomoc? handlu postaciami, kt?re nie s? nasz? w?asno?ci?. Brakuje mi tu jednak zabezpiecze? - po hacku, kto? mo?e od razu przes?a? sobie na konto posta?... Og?lna ocena to 8/10.
 

Aqvis

User
Joined
May 19, 2008
Messages
33
Reaction score
1
Odp: System sprzeda?y postaci

Nie mam poj?cia co jest grane ?
B??d

zapytanie SQL:

ALTER TABLE `players` ADD `sell` tinyint( 1 ) NOT NULL default '0' ALTER TABLE `players` ADD `pp_sell` int( 10 ) NOT NULL default '0'

MySQL zwr?ci? komunikat: Dokumentacja
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER TABLE `players` ADD `pp_sell` int(10) NOT NULL default '0'' at line 2
 

Mefiks

Advanced User
Joined
Aug 30, 2010
Messages
190
Reaction score
34
Odp: System sprzeda?y postaci

Skrypt jest bardzo ?adny i estetycznie wykonany.
Pierwszy raz widz? go na oczy i na pewno wielu osobom si? to przyda.
 

snipers

Advanced User
Joined
Oct 24, 2009
Messages
366
Reaction score
20
Odp: System sprzeda?y postaci

Bardzo fajny i praktyczny pomys?. :)
Tyle ?e mo?na by by?o dorobi? do tego co? jak licytacja.
Okre?la si? liczb? dni i pocz?tkowe punkty kto da wi?cej to wygra!
 

BaXoN

Active User
Joined
Sep 11, 2010
Messages
78
Reaction score
10
Odp: System sprzeda?y postaci

Kurcze tego szuka?em:) ++rep
Skrypt Dobry, ju? przetestowa?em i mog? powiedzie? z uszanowaniem ?e wszystko dzia?a.
 

DudoCriz

Active User
Joined
Aug 29, 2009
Messages
123
Reaction score
3
Age
30
Odp: System sprzeda?y postaci

Super Skrypt! Napewno go uzyje do mojego otsa,tylko czy ten system jest rzeczywi?cie niezawodny?Nie bedzie problemow z jakimis prubami oszustwa?
 
Joined
Sep 15, 2010
Messages
12
Reaction score
1
Odp: System sprzeda?y postaci

Ja go testowa?em i dzia?a?. Nie by?o ?adnego zaniedbania i oszustw ;p POlecam
 

Aqvis

User
Joined
May 19, 2008
Messages
33
Reaction score
1
Odp: System sprzeda?y postaci

Wszystko zrobi?em jak nale?y jednak mam b??d:

query('SELECT * FROM players WHERE id = '.$id.' LIMIT 1')->fetch(); if ($player){ if (isset($id) && !isset($buy)){ if ($player['sell']){ $main_content .= 'Czy jeste� peweien, �e chcesz kupi� posta� o nicku '.$player['name'].' za '.$player['pp_sell'].' punkt�w premium? Je�li tak, kliknij tutaj.'; } } if (isset($id) && $player['sell']){ if ($buy == 'true'){ if ($account_logged->getCustomField('premium_points') > $player['pp_sell']){ $points = $player['pp_sell']; $pl_id = $player['id']; $SQL->query('UPDATE accounts SET premium_points = premium_points + '.$points.' WHERE id = '.$pl_id.' LIMIT 1'); $account_logged->setCustomField('premium_points', $account_logged->getCustomField('premium_points')-$player['pp_sell']); $SQL->query('UPDATE players SET account_id = '.$account_logged->getID().', sell = 0, pp_sell = 0 WHERE id = '.$id.' LIMIT 1'); $main_content .= 'Kupi�e� posta� . Od teraz ta posta� jest na twoim koncie.'; } else{ $errors [] = 'Masz za ma�o punkt�w premium aby zakupi� t� posta�.'; } } } else{ $errors [] = 'Ta posta� nie jest na sprzeda�.'; } } else{ $errors [] = 'Nie ma takiej postaci w bazie.'; } if (!empty($errors)){ $main_content .= '
Wyst�pi�y poni�sze b��dy:
# '; foreach($errors as $error) { $main_content .= ''.$error; } $main_content .= '
 

kuba1418

Banned
Joined
Apr 12, 2008
Messages
178
Reaction score
17
Odp: System sprzeda?y postaci

@up
Zamie? auctionchar.php na to
PHP:
   <?PHP
/*   `sell` tinyint(1) NOT NULL default '0',
  `pp_sell` int(10) NOT NULL default '0' */
$id = (int) $_GET['id'];
$buy = $_GET['buy'];
if ($logged){  
    $player = $SQL->query('SELECT * FROM players WHERE id = '.$id.' LIMIT 1')->fetch();
    if ($player){
        if (isset($id) && !isset($buy)){        
            if ($player['sell']){
                $main_content .= 'Czy jeste? peweien, ?e chcesz kupi? posta? o nicku <b>'.$player['name'].'</b> za <b>'.$player['pp_sell'].'</b> punkt?w premium? Je?li tak, kliknij <a href="?subtopic=buycharacter&id='.$id.'&buy=true">tutaj</a>.';
            }
        }
        if (isset($id) && $player['sell']){
            if ($buy == 'true'){
            if ($account_logged->getCustomField('premium_points') > $player['pp_sell']){
                $points = $player['pp_sell'];
                $pl_id = $player['id'];
                $SQL->query('UPDATE accounts SET premium_points = premium_points + '.$points.' WHERE id = '.$pl_id.' LIMIT 1');
                $account_logged->setCustomField('premium_points', $account_logged->getCustomField('premium_points')-$player['pp_sell']);
                $SQL->query('UPDATE players SET account_id = '.$account_logged->getID().', sell = 0, pp_sell = 0 WHERE id = '.$id.' LIMIT 1');
                $main_content .= 'Kupi?e? posta? <b>'.$player['name'].'</b>. Od teraz ta posta? jest na twoim koncie.';
            }
        else{
            $errors [] = 'Masz za ma?o punkt?w premium aby zakupi? t? posta?.';
        }
        }
        }
        else{
            $errors [] = 'Ta posta? nie jest na sprzeda?.';
        }
    }
    else{
        $errors [] = 'Nie ma takiej postaci w bazie.';
    }
    if (!empty($errors)){
        $main_content .= '<div class="SmallBox" >  <div class="MessageContainer" >    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="ErrorMessage" >      <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>Wyst?pi?y poni?sze b??dy:</b><br/>';
            foreach($errors as $error) {
                $main_content .= '<li>'.$error;
            }
        $main_content .= '</div>    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>  </div></div><br/>';
    }
}
else{
Header('Location: ?subtopic=accountmanagement');
}
?>
 

BaXoN

Active User
Joined
Sep 11, 2010
Messages
78
Reaction score
10
Odp: System sprzeda?y postaci

Przepraszam mam ma?y problem, po wystawieniu postaci posta? znika mi z konta, a po zakupie nie zostaje wykupiona. ?aden b??d nie wyskakuje.

Pozdrawiam i z g?ry dzi?kuje.

Edit@
Problem rozwi?zany.
 
Last edited:

lolej66

Advanced User
Joined
Aug 3, 2008
Messages
320
Reaction score
17
Odp: System sprzeda?y postaci

Zauwa?y?em jedn? rzecz. Nie wiem czy to b?dzie zmienione czy tylko ja tak mam ale...
Posta? elegancko wystawia mi si? do sprzeda?y, lecz kiedy kupuje posta? z innego konta to na tym co sprzedawa?o posta? nie przychodzi liczba punkt?w, kt?re by?y limitem kupna.
Czyli tak:
Wystawiam posta?>Kupuj? drugim kontem i zabiera mi punkty>A konto kt?re sprzedawa?o nie dostaje tych punkt?w.
Czy jest mo?liwo?? dodania tej opcji lub poprawy?
 

Mefisto94

Senior User
Joined
Jun 22, 2010
Messages
656
Reaction score
24
Odp: System sprzeda?y postaci

@Up

No wlasnie zauwazylem to samo system moim zdaniem bezsensu trzeba by to chyba poprawic po co ktos ma z tego ze sprzeda postac?
 

Mefisto94

Senior User
Joined
Jun 22, 2010
Messages
656
Reaction score
24
Odp: System sprzeda?y postaci

Poprawi ktos ten skrypt moze?
 

Arvia

Active User
Joined
Jul 11, 2010
Messages
73
Reaction score
11
Odp: System sprzeda?y postaci

Najlepiej by by?o, gdyby te pkt. kt?re kto? dostaj? za sprzedanie konta zosta?y przelane na inne konto, lub pokazywa?by si? np. kod premium
 
Joined
Mar 27, 2010
Messages
32
Reaction score
3
Odp: System sprzeda?y postaci

Bardzo rozbudowany skrypt :) Mam nadziej?, ?e to twoja w?asna praca!
 
Status
Not open for further replies.
Top