[GDRCD 5.] Menu scelte in base alla razza
[GDRCD 5.] Menu scelte in base alla razza postato il 18/01/2020 11:29:32 nel forum programmazione, open source e hosting e modificato da staff shadowland il 18/01/2020 11:35:14
Salve a tutti. Più che un errore, vorrei chiedere un suggerimento/direttive su come sviluppare quanto segue.
Vorrei provare a realizzare un menu legato alla razza del personaggio e che le voci in esso riportate, siano legate unicamente alla opzioni disponibili per la razza di appartenenza senza che siano accessibili indistintamente a tutti.
Ora, ho dato uno sguardo al sistema di scelta delle abilità dove è possibile assegnarle ad una razza specifica e di adattare il codice alle mie esigenze; però nel sistema delle abilità in scheda, il tutto funziona con i punti esperienza (cosa che a me non serve) ed inoltre fornisce all'utente la possibilità di selezionare più voci (tramite i segni + e -) quando a me ne servirebbe solo una per menu - tralasciando che non è un menu a tendina ma una lista -
In chat invece, il sistema delle abilità con comparsa/scomparsa della voce è quanto di più vicino a ciò che vorrei realizzare. Lì ad esempio, una abilità legata alla razza, compare nel menu in base al valore (se 0 non compare nel menu, se 1 compare)
Purtroppo essendo una cosa per me articolata, mi sono persa nel concepire un modo (non troppo complesso) per concatenare le varie cose.
Premetto che a me non serve che queste cose siano visibili in chat ma soltanto nella scheda del personaggio.
Ad esempio:
PG 1 razza Umano -> accesso solo a occhi neri e azzurri
PG 2 razza Elfo -> accesso solo a occhi verdi e blu
PG 3 razza Gnomo -> accesso solo a occhi neri, verdi, castani
ecc...
In questo Menu, la voce da scegliere tra quelle elencate dovrebbe essere soltanto una.
Qualcuno si è cimentato in qualcosa di analogo o ha dei suggerimenti o comunque delle direttive che posso provare a mettere in pratica? c'è qualche parte del codice a me oscura da cui posso prendere spunto?
Grazie per l'attenzione, spero di fare chiarezza nella mia mente.
Pagine → 1
18/01/2020 17:10:15 e modificato da damnedsouls_staff il 18/01/2020 17:15:55
sul menù non saprei aiutarti ma su questo
In chat invece, il sistema delle abilità con comparsa/scomparsa della voce è quanto di più vicino a ciò che vorrei realizzare. Lì ad esempio, una abilità legata alla razza, compare nel menu in base al valore (se 0 non compare nel menu, se 1 compare)
ho usato il tuo stesso sistema, se vuoi ti mando il pezzo che riguarda questa opzione, però mi pare di aver dovuto aggiungere un paio di campi per fare la cosa giusta, forse proprio id_abilità in clspersonaggio abilità
controlla quella variabile se non c'è va aggiunta, e quando metti il comando + per settore l'abilità ad uno la carichi anche in cls personaggio abilità se la memoria non mi inganna. Il pezzo per la visibilità delle abilità possedute dovrebbe essere questo (in frame_chat)
<?php if($PARAMETERS['mode']['skillsystem']=='ON'){ ?>
<div class="casella_chat">
<?php $result = gdrcd_query("SELECT id_abilita, nome FROM abilita WHERE id_abilita IN (SELECT id_abilita FROM clgpersonaggioabilita WHERE nome = '".$_SESSION['login']."') ORDER BY nome", 'result'); ?>
<select name="id_ab" id="id_ab">
<option value="no_skill"></option>
<?php while($row = gdrcd_query($result, 'fetch'))
{ ?>
<option value="<?php echo $row['id_abilita']; ?>">
<?php echo gdrcd_filter('out',$row['nome']); ?>
</option>
<?php }//while
gdrcd_query($result, 'free');
?>
</select>
<?php //}
?>
<br/><span class="casella_info"><?php echo gdrcd_filter('out',$MESSAGE['chat']['commands']['skills']);?></span>
</div>
Potresti più o meno adattare lo stesso principio per il menu
18/01/2020 19:50:07 e modificato da staff shadowland il 18/01/2020 19:55:13
Grazie per la risposta. Ero interessata al principio di inserire il menu a tendina in scheda proprio come funziona in chat (per la chat non mi serve) Insomma non è un qualcosa di legato alle abilità ma soltanto delle scelte da selezionare che compaiono come campi in scheda, venendo appunto smistate per razza e senza px o scelte multiple. Già sono riuscita da tempo a trasporre questo sistema in chat, ma è fare lo stesso in scheda che non mi riesce :/ magari ci lavoro ancora su tenendo anche come riferimento il tuo consiglio :D
P.s. Ho già creato la select e provato a smistare le varie scelte per razza tramite un collegamento da DB tra un campo per le scelte fisiche che è concatenato alla razza, ma sicuramente sbaglio in qualcosa poiché lo smistamento non avviene e tutte le razze possono selezionare cose che non dovrebbero :/
18/01/2020 22:19:03
Ipotizziamo l'esistenza di questa tabella
"Caratteristiche"
razza - occhi1 - occhi2
nel file scheda_modifica dovrà comparire qualcosa di questo tipo
<?php $result = gdrcd_query("SELECT * FROM caratteristiche WHERE razza = ".$record['id_razza']." ");?>
<select name="occhi">
<option value="<?php echo $result['occhi1'];?>" <?php if ($result['occhi1']==$record'occhi']) {echo 'selected';}?>></option>
<option value="<?php echo $result['occhi2'];?>" <?php if ($result['occhi2']==$record'occhi']) {echo 'selected';}?>></option>
</select>
con "occhi" che è per forza di cose una voce presente anche nella tabella "presenti".
Sono poche righe molto banali queste, ma è per farti avere l'idea! (non metto in dubbio che ci siano però altri modi)
19/01/2020 09:01:23
Ciao e grazie per la risposta! Sì ho già provato una cosa del genere prima di aprire il post, il problema resta sullo smistamento razziale. Credo che ci lavorerò ancora su.
20/01/2020 16:45:41
Puoi fare un array che contiene i colori degli occhi per ogni razza.
Con un IF od un SWitch setti tipo che
IF [l]VariabileDellaRazza[/l]=1 { $colori=array("verde","giallo"); }
else IF [l]VariabileDellaRazza[/l]=2 { $colori=array("blu","nero","marrone"); }
e così via per ogni razza.
Poi nel menu a tendina lo crei prendendo i dati dalla variabile $colori che è popolata in maniear diversa per ogni razza, tipo:
foreach($colori as $colore)
{
echo '<option value="'.$colore.'">'.$colore.'</option>';
}
Fatto al volo, più per la logica che per un copiaincolla sia chiaro
22/01/2020 19:40:54
Ci sono quasi. Sono riuscita ad impostare i parametri servendomi del codice riportato nelle abilità e modificandolo per le mie esigenze. L'unico problema che riscontro è che non riesco a far sì che la modifica venga registrata una volta effettuata poiché il salvataggio per le abilità non funziona come quello "modifica" da scheda. Purtroppo non sono ancora riuscita ad integrare le stringhe delle due pagine.
05/02/2020 13:12:08
Dopo diverse prove, sono riuscita parzialmente nel mio intento, non riesco ad individuare l'errore, magari potete essermi di aiuto.
Nel codice seguente le modifiche vengono effettuate senza intoppi ed il campo viene correttamente aggiornato una volta scelta la voce dal menu, l'unico problema è che all'utente compare la lista di tutte le opzioni presenti per le varie razze, cosa che non vorrei fosse possibile relegando le scelte soltanto alla razza di appartenenza.
<!-- Occhi inizio smistamento campo -->
<div class="page_title">
<h2>Occhi</h2>
</div>
<center><?php $query="SELECT id_fisico, lista_occhi FROM fisico_umani ORDER BY lista_occhi"; $fisico_umani_r=gdrcd_query($query, 'result'); ?>
<div class='form_label'>
<?php echo gdrcd_filter('out',$PARAMETERS['names']['classe']['sing']); ?>
</div>
<div class='form_field'>
<select name="modifica_fisico_umani">
<?php while($fisico_umani_row=gdrcd_query($fisico_umani_r, 'fetch')){ ?>
<option value="<?php echo $fisico_umani_row['id_fisico']; ?>" <?php if($fisico_umani_row['id_fisico']==$record['id_fisico']){echo 'selected';} ?> /><?php echo $fisico_umani_row['lista_occhi']; ?></option>
<?php }
gdrcd_query($fisico_umani_r, 'free');
?> </select>
<!-- fine smistamento -->
Ho provato anche in questa maniera dove lo smistamento per razza viene effettuato ma il campo apposito non viene modificato, seppure cliccando il tasto compare la scritta "modifica effettuata"
<!-- Occhi inizio smistamento campo per razza -->
<div class="page_title">
<h2>Occhi</h2>
</div>
<center><?php $query="SELECT id_fisico, lista_occhi FROM fisico_umani WHERE id_razza= ".$record['id_razza']." ORDER BY lista_occhi"; $fisico_umani_r=gdrcd_query($query, 'result'); ?>
<div class='form_label'>
<?php echo gdrcd_filter('out',$PARAMETERS['names']['classe']['sing']); ?>
</div>
<div class='form_field'>
<select name="modifica_fisico_umani">
<?php while($fisico_umani_row=gdrcd_query($fisico_umani_r, 'fetch')){ ?>
<option value="<?php echo $fisico_umani_row['id_fisico']; ?>" <?php if($fisico_umani_row['id_fisico']==$record['id_fisico']){echo 'selected';} ?> /><?php echo $fisico_umani_row['lista_occhi']; ?></option>
<?php }
gdrcd_query($fisico_umani_r, 'free');
?> </select>
<!-- fine smistamento -->
Dove può essere l'errore? ho tralasciato qualcosa?
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Imperion ↗
AlterEgo ↗
Cafuné ↗
New Orleans ↗
Enlisted ↗
War Thunder ↗
Hero Wars ↗