PDA

Zobacz pełną wersję : Ekwipunek



toriam
08-10-2010, 20:33
wciąż trwaja moje prace nad tym silnikiem i dziele sie tym co mam. Dzisiaj ekwipunek
A więc tworzymy tabele `ekwipunek` taka jak w moim module sklepu


CREATE TABLE `<ezrpg>ekwipunek` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`owner` INT( 11 ) NOT NULL ,
`atak` SMALLINT ( 6 ) NOT NULL ,
`stan` INT(1) NOT NULL,
`miejsce` INT( 1 ) NOT NULL ,
`nazwa` VARCHAR(50) NOT NULL
) ENGINE = InnoDB;

i znowu objaśniam że kolumna `miejsce` odnosi się do miejsca na ciele np. 1 - buty, 2 - spodnie itd.
a teraz index


defined('IN_EZRPG') or exit;


class Module_Equip extends Base_Module
{

public function start()
{
requireLogin();

if(isset($_GET['zaloz']))
{
$this->zaloz();
}
if(isset($_GET['zdejmij']))
{
$this->zdejmij();
}

$wiersz_equip = $this->db->execute('SELECT * FROM `ekwipunek` where `stan`=0 AND `miejsce`>1 AND `owner`=?',array($this->player->id));
$equip = $this->db->fetchAll($wiersz_equip);

$wiersz_zalozone = $this->db->execute('SELECT * FROM `ekwipunek` WHERE `stan`=1 AND `owner`=?',array($this->player->id));
$zalozone = $this->db->fetchAll($wiersz_zalozone);

$this->tpl->assign('zalozone',$zalozone);
$this->tpl->assign('equip',$equip);

$this->tpl->display('equip.tpl');

}

private function zaloz()
{

$ite = $this->db->fetchRow('SELECT * FROM `<ezrpg>ekwipunek` WHERE `stan`=0 AND `id`=? AND `owner`=?',array($_GET['zaloz'],$this->player->id));

if ($ite == true)
{
$item = $this->db->fetchRow('SELECT * FROM `<ezrpg>ekwipunek` WHERE `stan`=1 AND `miejsce`=? AND `owner`=?' ,array($ite->miejsce,$this->player->id));


if($ite->miejsce===$item->miejsce)
{
$this->db->execute('UPDATE `<ezrpg>ekwipunek` SET `stan`=1 WHERE `id`=?',array($_GET['zaloz']));
$this->db->execute('UPDATE `<ezrpg>ekwipunek`SET `stan`=0 WHERE `id`=?',array($item->id));
}else
{
$this->db->execute('UPDATE `<ezrpg>ekwipunek` SET `stan`=1 WHERE `id`=?',array($_GET['zaloz']));
}
$msg = 'Przedmiot zalozony';

}else $msg = 'Nie masz takiego przedmiotu';

header('Location: index.php?mod=Equip&msg=' . urlencode($msg));
}

private function zdejmij()
{
$item = $this->db->fetchRow('SELECT * FROM `<ezrpg>ekwipunek` WHERE `stan`=1 AND `id`=? AND `owner`=?',array($_GET['zdejmij'],$this->player->id));

if ($item == true)
{
$this->db->execute('UPDATE `<ezrpg>ekwipunek` SET `stan`=0 WHERE `id`=?',array($_GET['zdejmij']));
$msg = 'przedmiot zdjety';
}else $msg = 'Nie masz takiego przedmiotu';

header('Location: index.php?mod=Equip&msg=' . urlencode($msg));
}

}

oraz smarty UWAGA!!!!
właśnie w smarty wstawione są te miejsca ja przyjąłem że 1 - broÅ„, 2 - koszula, 3 - spodnie, 4 - buty


{include file="header.tpl" TITLE="Ekwipunek"}


<p>
<strong>Założone</strong>
<ul>
{foreach from=$zalozone item=v}
{if $v->miejsce == 1}
<b>Noszona broń</b>: {$v->nazwa} (atak: {$v->atak}) - <a href="index.php?mod=Equip&zdejmij={$v->id}">Zdejmij</a><br /><br />
{elseif $v->miejsce == 2}
<b>Noszona koszula</b>: {$v->nazwa} (obrona: {$v->atak}) - <a href="index.php?mod=Equip&zdejmij={$v->id}">Zdejmij</a><br /><br />
{elseif $v->miejsce == 3}
<b>Noszone spodnie</b>: {$v->nazwa} (obrona: {$v->atak}) - <a href="index.php?mod=Equip&zdejmij={$v->id}">Zdejmij</a><br /><br />
{elseif $v->miejsce == 4}
<b>Noszone buty</b>: {$v->nazwa} (obrona: {$v->atak}) - <a href="index.php?mod=Equip&zdejmij={$v->id}">Zdejmij</a><br /><br />
{else}
<b>Brak</b><br /><br />
{/if}
{/foreach}

</ul>
<strong>Ekwipunek</strong>
{if $equip!=false}
<table width="400">
<tr>
<td width="80%"><p>Nazwa</p></td>
<td width="20%"><p>Akcja:</p></td>
</tr>

{foreach from=$equip item=v}
<tr><td>{$v->nazwa}</td><td><a href="index.php?mod=Equip&zaloz={$v->id}">Załóż</a></td></tr>
{/foreach}
{else}
<p>Pusty ekwipunek</p>
{/if}
</table>
</p>


{include file="footer.tpl"}

P.S mod zawiera funkcję fetchAll() dostępną w wersji 1.0.1 dziękuję za uwagę w przypadku błędów pisać

Alson
09-10-2010, 20:12
Nom, ładnie. Kodu nie sprawdzałem ale fajnie że ktoś się zainteresował tym silnikiem. Nic mi nie pozostaje innego jak zachęcić do roboty :}

Pozdrawiam Alson