Problema Oggetti GDRCD 5.2 postato il 04/09/2014 16:46:36 nel forum programmazione, gdrcd e open source
Ciao a tutti, ho un ulteriore piccolo problema con gli oggetti.. ovvero ho provato a creare un magazzino, differente da zaino e inventario e a fare in modo che dallo zaino si potessero inviare gli oggetti sia al magazzino che all'inventario cosi da differenziare un pò le cose.. sembra funzionare tutto, salvo il bottone che non invia gli oggetti al magazzino..
il codice è il seguente che io ho provato a riprodurre :
/*Verifico l'esistenza del PG*/
$query = "SELECT nome FROM personaggio WHERE personaggio.nome = '".gdrcd_filter('get',$_REQUEST['pg'])."'";
$result = gdrcd_query($query, 'result');
//Se non esiste il pg
if (gdrcd_query($result, 'num_rows')==0){echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';}
else {
gdrcd_query($result, 'free');
/* Spostamento di un oggetto dal magazzino nell'inventario*/
if (($_POST['op']=="togli") && ($_SESSION['login']==$_REQUEST['pg'])){
gdrcd_query("UPDATE clgpersonaggiooggetto SET posizione = 0 WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' LIMIT 1 ");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['done']).'</div>';
}
/*sposta nello zaino */
if (($_POST['op']=="sposta") && ($_SESSION['login']==$_REQUEST['pg'])){
gdrcd_query("UPDATE clgpersonaggiooggetto SET posizione = 10 WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' LIMIT 1 ");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['done']).'</div>';
}
quindi /*sposta nello zaino */ non funziona.. qualcuno potrebbe darmi gentilmente una mano ?
04/09/2014 20:50:10 e modificato da racewolf il 07/09/2014 16:59:44
il problema è che nella pagina scheda_oggetti originale non c'è proprio l'insert o replicavo anche quello.. l'unica parte che richiama ancora il trasferimento è il bottone.
Ho notato inoltre che se cambio questo parametro ..
if (($_POST['op']=="togli") che io avevo modificato in sposta
praticamente se rimetto togli, manda l'oggetto a tutte e 2 le pagine, se metto sposta non lo manda.. ho cercato come un matto in tutte le pagine ma mica trovo dove setta il comando togli.. qualcuno sa dirmi che file devo guardare ?
15/09/2014 19:41:41
Scusate se insisto, ma ancora non sono arrivato alla soluzione del mio problema.. in pratica ho creato un seocndo zaino e fino a li funziona tutto, qualcuno potrebbe aiutarmi a creare un bottone nel primo zaino che invii gli oggetti al secondo ?
Mi manca solo quello per aprire e vorrei risolvere prima dell'Alpha..
Grazie in anticipo.
15/09/2014 20:35:15
Prima di poter dare una risposta devo capire cosa non funzioni:
• il messaggio di spostamento eseguito viene fuori?
• l'oggetto rimane del tutto in inventario e non si vede nulla in magazzino?
Non basta quel codice.
Serve anche quello del magazzino stesso, per vedere con quale query peschi i dati e soprattutto il form con l'input ci serve, altrimenti possiamo fare solo supposizioni.
15/09/2014 20:38:33
allora in pratica si funziona tutto apparte il fatto che invia l'oggetto contemporaneamente sia nel magazzino che nell'inventario, mentre a me serve che invii solo al magazzino.. in caso che parte di codice posso postare per spiegarmi meglio ?
Il problema è che non capisco l'esatta funzione del codice o capendo quella riuscirei a modificarlo meglio..
15/09/2014 20:42:45
Io non credo che il problema sia un invio.
Tu semplicemente cambi un campo della tabella, non tabella.
Quindi il problema per me non è di cambio, ma di visualizzazione.
Ci serve il codice che pesca dal DB per mostrare l'inventario e il magazzino.
15/09/2014 20:54:36
allora.. provo a ricominciare da capo è l'unica.. ricarico i file originali del gdrcd tanto avevo modificato solo quello.. poi .. setto i parametri aggiungendo il magazzino al file .. includes/costant_values.php e aggiungo il magazzino
/*Posizione degli oggetti*/
define('INVENTARIO',0);
define('ZAINO',1);
define('MANODX',2);
define('MANOSX', 3);
define('TORSO', 4);
define('GAMBE', 5);
define('PIEDI', 6);
define('TESTA', 7);
define('ANELLO', 8);
define('COLLO', 9);
define('MAGAZZINO', 10);
poi prendo la pagina scheda_oggetti.php e la copio rinominandola scheda_magazzino.php... cosi ora ho scheda_equipe.inc, scheda_oggetti.inc e scheda_magazzino.inc..
alla scheda magazzino modifico il codice a riga 60 :
$query="SELECT oggetto.id_oggetto, oggetto.nome AS nome_oggetto, oggetto.descrizione, oggetto.urlimg, oggetto.ubicabile, oggetto.difesa, oggetto.attacco, oggetto.bonus_car0, oggetto.bonus_car1, oggetto.bonus_car2, oggetto.bonus_car3, oggetto.bonus_car4, oggetto.bonus_car5, clgpersonaggiooggetto.* FROM clgpersonaggiooggetto LEFT JOIN oggetto ON clgpersonaggiooggetto.id_oggetto=oggetto.id_oggetto WHERE clgpersonaggiooggetto.nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' AND clgpersonaggiooggetto.posizione = 10 ORDER BY oggetto.nome DESC";
mettendo 10 al posto di 0.. e poi vado ad aggiungere il bottone in scheda_oggetti.. e li viene il difficile..
l'unica parte che trovo che richiama lo spostamento è questa :
/* Spostamento di un oggetto dallo zaino nell'inventario*/
if (($_POST['op']=="togli") && ($_SESSION['login']==$_REQUEST['pg'])){
gdrcd_query("UPDATE clgpersonaggiooggetto SET posizione = 10 WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' LIMIT 1 ");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['done']).'</div>';
}
anche qui mettendo 10 invece che 0 ... e questa :
<!-- Magazzino -->
<form action="main.php?page=scheda_magazzino"
method="post">
<input type="hidden"
value="togli"
name="op" />
<input type="hidden"
value="<?php echo $record['id_oggetto']; ?>"
name="id_oggetto" />
<input type="submit"
value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['put_out']);?>" />
<input type="hidden"
value="<?php echo $_REQUEST['pg']; ?>"
name="pg" />
</form>
Ho aggiunto anche tutti i parametri in config.inc.php e vocabulary.. copiando gli stessi valori dello zaino settandoli per il magazzino.. ma ancora non funziona.. manca ancora qualcosa..
15/09/2014 21:03:37
Sì ma il codice della pagina scheda_oggetti dov'è?
Spero non sia l'ultimo, perché quello processa un form per scheda_magazzino, non scheda_oggetti.
A meno che io non sia totalmente rincretinita (potrebbe benissimo essere eh!) mi sa che ci manca proprio il codice del bottone che ti serve.
15/09/2014 21:37:05
Qui abbiamo un problema: se il codice è della scheda oggetti perché i form rimandano a scheda_magazzino?
Intendo questo:
15/09/2014 21:41:17
scusami, lo avevo corretto io quello.. ti riporto il codice originale della sezione oggetti del gdrcd cosi non ci ho messo mano.. e cancello quello sopra..
<div class="pagina_scheda_oggetti">
<?php /*HELP: */ ?>
<?php
//Se non e' stato specificato il nome del pg
if (isset($_REQUEST['pg'])===FALSE){
echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknonw_character_sheet']).'</div>';
} else {
/*Visualizzo la pagina*/
/*Verifico l'esistenza del PG*/
$query = "SELECT nome FROM personaggio WHERE personaggio.nome = '".gdrcd_filter('get',$_REQUEST['pg'])."'";
$result = gdrcd_query($query, 'result');
//Se non esiste il pg
if (gdrcd_query($result, 'num_rows')==0){echo '<div class="error">'.gdrcd_filter('out',$MESSAGE['error']['unknown_character_sheet']).'</div>';}
else {
gdrcd_query($result, 'free');
/* Spostamento di un oggetto dallo zaino nell'inventario*/
if (($_POST['op']=="togli") && ($_SESSION['login']==$_REQUEST['pg'])){
gdrcd_query("UPDATE clgpersonaggiooggetto SET posizione = 0 WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' LIMIT 1 ");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['done']).'</div>';
}
/* Aggiungi/modifica un commento*/
if ((gdrcd_filter('get',$_POST['op'])=="commenta") && ($_SESSION['login']==$_REQUEST['pg'])){
gdrcd_query("UPDATE clgpersonaggiooggetto SET commento = '".gdrcd_filter('in',$_POST['commento'])."' WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".$_SESSION['login']."' LIMIT 1 ");
echo '<div class="warning">'.gdrcd_filter('out',$MESSAGE['warning']['done']).'</div>';
}
/*Rimuovo un oggetto dall'inventario o dallo zaino*/
if ((gdrcd_filter('get',$_POST['op'])=="abbandona") && ($_SESSION['login']==$_REQUEST['pg'])){ /*Rimuovo un oggetto*/
/*Se ne possiedo più di uno ne rimuovo uno solo*/
if ($_POST['numero']<=1){
$query="DELETE FROM clgpersonaggiooggetto WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' LIMIT 1 ";
} else {
$query="UPDATE clgpersonaggiooggetto SET numero = numero - 1 WHERE id_oggetto = ".gdrcd_filter('num',$_POST['id_oggetto'])." AND nome = '".gdrcd_filter('get',$_REQUEST['pg'])."' LIMIT 1 ";
}
gdrcd_query($query);
echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['warning']['done']);
} ?>
<!-- Elenco oggetti nello zaino -->
<div class="page_title">
<h2><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['menu']['inventory']); ?></h2>
</div>
<div class="page_body">
<div class="panels_box">
<?php /*Oggetti nello zaino*/
$query="SELECT oggetto.id_oggetto, oggetto.nome AS nome_oggetto, oggetto.descrizione, oggetto.urlimg, oggetto.ubicabile, oggetto.difesa, oggetto.attacco, oggetto.bonus_car0, oggetto.bonus_car1, oggetto.bonus_car2, oggetto.bonus_car3, oggetto.bonus_car4, oggetto.bonus_car5, clgpersonaggiooggetto.* FROM clgpersonaggiooggetto LEFT JOIN oggetto ON clgpersonaggiooggetto.id_oggetto=oggetto.id_oggetto WHERE clgpersonaggiooggetto.nome = '".gdrcd_filter('in',$_REQUEST['pg'])."' AND clgpersonaggiooggetto.posizione = 0 ORDER BY oggetto.nome DESC";
$result=gdrcd_query($query, 'result');?>
<!-- Intestazione tabella elenco -->
<div class="elenco_record_gioco">
<table>
<tr>
<td class="casella_titolo">
<div class="titoli_elenco">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['item']); ?>
</div>
</td>
<td class="casella_titolo">
<div class="titoli_elenco">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['stats']['bonus']); ?>
</div>
</td>
<td class="casella_titolo">
<div class="titoli_elenco">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['decription']); ?>
</div>
</td>
<td class="casella_titolo">
<div class="titoli_elenco">
<?php echo " "; ?>
</div>
</td>
</tr>
<?php while ($record=gdrcd_query($result, 'fetch')){ ?>
<tr>
<!-- Oggetto, immagine, quantità -->
<td class="casella_elemento">
<div class="inventario_nome"><?php echo gdrcd_filter('out',$record['nome_oggetto']); ?></div>
<div class="inventario_img">
<img src="themes/<?php echo $PARAMETERS['themes']['current_theme']?>/imgs/items/<?php echo gdrcd_filter('out',$record['urlimg']); ?>" />
</div>
<div class="inventario_quantita">
<?php if ($record['cariche']>0){
echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['charges'].": ".$record['cariche']);
} else { echo ' '; } ?>
</div>
<div class="inventario_quantita"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['pts'].": ".$record['numero']); ?></div>
</td>
<!-- Bonus -->
<td class="casella_elemento">
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['stats']['attack'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['attacco']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['stats']['defence'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['difesa']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$PARAMETERS['names']['stats']['car0'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['bonus_car0']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$PARAMETERS['names']['stats']['car1'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['bonus_car1']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$PARAMETERS['names']['stats']['car2'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['bonus_car2']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$PARAMETERS['names']['stats']['car3'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['bonus_car3']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$PARAMETERS['names']['stats']['car4'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['bonus_car4']; ?>
</div>
</div>
<div class="inventario_riga_proprieta">
<div style="float: left; clear: left;">
<?php echo gdrcd_filter('out',$PARAMETERS['names']['stats']['car5'].": "); ?>
</div>
<div style="float: right; clear: right;">
<?php echo $record['bonus_car5']; ?>
</div>
</div>
<!-- Descrizione e note-->
</td>
<td class="casella_elemento">
<div class="inventario_riga_descrizione">
<?php echo gdrcd_filter('out',$record['descrizione']); ?>
</div><?php if (($record['commento']!='') && ($_SESSION['login']!= gdrcd_filter('get',$_REQUEST['pg']))){?>
<div class="inventario_riga_commento">
<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['notes'].": ".$record['commento']); ?>
</div><?php } else if ($_SESSION['login'] == gdrcd_filter('get',$_REQUEST['pg'])) {//if ?>
<div>
<!-- Commento -->
<form action="main.php?page=scheda_oggetti"
method="post">
<input type="hidden"
value="commenta"
name="op" />
<input type="hidden"
value="<?php echo $record['id_oggetto']; ?>"
name="id_oggetto" />
<textarea type="textbox" name="commento" class="form_textarea"><?php echo $record['commento']; ?></textarea>
<input type="submit"
value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['add_note']);?>" />
<input type="hidden"
value="<?php echo $_REQUEST['pg']; ?>"
name="pg" />
</form>
</div><?php } //else if ?>
</td>
<!-- Comandi elenco -->
<td class="casella_controlli">
<?php if($_SESSION['login']==$_REQUEST['pg']){ ?>
<div class="form_gioco">
<!-- Abbandona -->
<form action="main.php?page=scheda_oggetti"
method="post">
<input type="hidden"
value="abbandona"
name="op" />
<input type="hidden"
value="<?php echo $record['numero']; ?>"
name="numero" />
<input type="hidden"
value="<?php echo $record['id_oggetto']; ?>"
name="id_oggetto" />
<input type="submit"
value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['drop']);?>" />
<input type="hidden"
value="<?php echo $_REQUEST['pg']; ?>"
name="pg" />
</form>
<?php if ($record['ubicabile']>0){ ?>
<!-- Zaino -->
<form action="main.php?page=scheda_equip"
method="post">
<input type="hidden"
value="in_zaino"
name="op" />
<input type="hidden"
value="<?php echo $record['id_oggetto']; ?>"
name="id_oggetto" />
<input type="submit"
value="<?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['put_in']);?>" />
<input type="hidden"
value="<?php echo $_REQUEST['pg']; ?>"
name="pg" />
</form>
<?php } ?>
</div>
<?php } else { echo " "; } ?>
</td>
</tr>
<?php }//while
gdrcd_query($result, 'free');
?>
</table>
</div>
</div>
<!-- Link a piè di pagina -->
<div class="link_back">
<a href="main.php?page=scheda_equip&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['items']['list']['put_in']).'.'; ?></a><br />
<a href="main.php?page=scheda&pg=<?php echo gdrcd_filter('url',$_REQUEST['pg']); ?>"><?php echo gdrcd_filter('out',$MESSAGE['interface']['sheet']['link']['back']); ?></a>
</div>
<?php
/********* CHIUSURA SCHEDA **********/
}//else
}//else
?>
</div>
</div><!-- Pagina -->
15/09/2014 21:51:37 e modificato da steamdoll il 15/09/2014 22:01:36
Se dovessi aggiungere un magazzino farei così:
• sotto "Spostamento di un oggetto dallo zaino nell'inventario"
Discussione seguita da
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
mirmidone ha risposto alla discussione: Una land con forti elementi d'ispirazione di Dragonero?