anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 22 Apr, 2019 23:43

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: NPC-System
BeitragVerfasst: Di 13 Aug, 2013 14:47 
Offline
Profi
Profi

Registriert: Di 20 Jul, 2010 13:27
Beiträge: 137
LoGD: http://www.shibaya-logd.de/source.php
Huhu :)

Ich bin grade dabei, ein NPC-System zusammenzuwurschteln und hab jetzt schon das erste größere Problem bei der Verwaltung.
Formular sieht aus wie es soll, es speichert nur nicht, da gibts ne Fehlermeldung und ich weiß nicht wieso -.-

Code:
UPDATE accounts SET acctid='1', name='`zKe`zks`zpu`zsc`zhe`zl Y`zoi`zch`ziro', sex='0', specialty='2', darkarts='0', magic='1', thievery='0', experience='4010', charisma='0', seenlover='0', gold='8100', weapon='Fists', armor='T-Shirt', seenmaster='0', level='2', defence='56', attack='67', alive='1', goldinbank='0', marriedto='0', playerkills='1', spirits='0', laston='2013-08-13 15:39:06', hitpoints='441', maxhitpoints='441', gems='101407', weaponvalue='0', armorvalue='0', location='0', turns='34', title='Gott', password='cfca94867b4b038d86ac93c32cfd2b80', darkartuses='0', magicuses='1', thieveryuses='0', badguy='creatureid%221\"creaturename%22Mireraband\"creaturelevel%221\"creatureweapon%22Dolch\"creaturelose%22Gut%2520gemacht%2520%2525W%252C%2520ich%2520h%25E4tte%2520wissen%2520sollen%252C%2520dass%2520du%2520etwas%2520gewachsen%2520bist.\"creaturewin%22Wie%2520ich%2520es%2520mir%2520gedacht%2520habe%252C%2520%2525w%252C%2520dein%2520K%253F%25F6nen%2520reicht%2520an%2520das%2520meine%2520nicht%2520heran%2521\"creaturegold%22\"creatureexp%22\"creaturehealth%22-1\"creatureattack%2254\"creaturedefense%2230\"diddamage%221', allowednavs='a:5:{s:22:\"prefs.php?c=126-153906\";b:1;s:21:\"prefs_npc.php?op=save\";b:1;s:54:\"bio.php?char=Yoichiro&ret=%2Fprefs_npc.php%3Fop%3Dsave\";b:1;s:16:\"viewpetition.php\";b:1;s:13:\"invisible.php\";b:1;}', output='
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//DE\">
<html>
  <head>
    <title>Totenwelt Himera</title>
    <link href=\'templates/hime.css\' rel=\'stylesheet\' type=\'text/css\'>
    <script language=\"JavaScript\" type=\"text/javascript\">
        <!--
        document.onkeypress=keyevent;
        function keyevent(e){
                var c;
                var target;
                var altKey;
                var ctrlKey;
                if (window.event != null) {
                        c=String.fromCharCode(window.event.keyCode).toUpperCase();


usw :(

Ich hab mich an der prefs.php orientiert und was ich nicht brauche eben rausgenommen. Es gibt 3 NPC Chars, daher auch 3 form arrays. Ich dachte es liegt daran, dass ich unter jedem array den speichern button hab, aber sobald ich den unter nem array lösche, ist das array weg -.-

Beim ersten NPC steht noch dazu beim Ava "(kein Avatar erlaubt)" und bei den anderen nicht. Ich hänge meine Verwaltung mal an, vielleicht kann jemand helfen :(
Wenns fertig ist und läuft würde ichs auch gerne veröffentlichen, vielleicht gefällts ja jemandem.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: NPC-System
BeitragVerfasst: Di 13 Aug, 2013 22:13 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Hallo Yoichiro,

das ist ehrlich gesagt leider ein bisschen Gemurkse, was du da hast. Ich würde an deiner Stelle vielleicht zuerst versuchen, das für einen NPC lauffähig zu bekommen, und auch das Prinzip zu verstehen, wie und wo Daten gespeichert werden können. Dazu kann ich dir aber ein paar Hinweise geben. Es wäre nebenbei gesagt gut, wenn du zukünftig den kompletten lesbaren Output der Fehlermeldung (ggf. bei der Länge als Anhang) zeigen würdest.

Erstmal wäre jetzt zu klären, in welche Felder du überhaupt etwas in der Datenbank speichert möchtest, denn das Skript ist in der Hinsicht inkonsistent. Von Zeile 12-97 sieht es so aus, als ob du für jede Eigenschaft ein eigenes Feld in der Accounts-Tabelle angelegt hast. Allem Nachfolgenden entnehme ich aber, dass du die Felder prefs_npc, bio_npc(x) und avatar_npc(x) nutzen möchtest. Wenn letzteres stimmt, muss 12-97 komplett rausgestrichen werden.

In Zeile 99 sind bei $nonsettings einige Werte aus den normalen prefs gelistet, aber zwei NPC-Avatare fehlen.
Dann sieht erstmal alles grob ok aus, bis bei 161-169 die Bios ein zweites Mal gespeichert werden sollen. Das kann also wieder raus.

Und dann wird es etwas chaotisch. Ich sehe nicht wirklich den Sinn dahinter, mehrere Formulare zu erstellen, die ja alle auf den selben Pseudo-op weiterleiten. Mach daraus einfach ein großes Formular, so dass du nur einen Aufruf von showform hast. Bei $form1-3 gibt es einen kleinen Fehler, denn bei allen sind die Werte von npc1 verwendet.

Und jetzt kommt zum Abschluss noch ein Problem, dass vermutlich noch nicht berücksichtigt ist. Du nutzt $session['user']['prefs_npc'] als array für die Werte der NPCs, was soweit auch vernünftig ist. Das geht aber nicht so ohne weiteres, wie in den normalen prefs, da diese in der common.php beim laden und speichern der Accountdaten eine kleine "Sonderbehandlung" bekommen. Ein array kann nicht als array in der Datenbank gespeichert werden, sondern muss mit serialize in eine Zeichenkette gewandelt und umgekehrt nach dem Auslesen auch wieder mit unserialize zurückgewandelt werden.

Du hast hier zwei Möglichkeiten:
1) Du sucht die in der common.php die beiden Stellen, an denen $session['user']['prefs'] de-/serialisiert wird und machst das dort analog mit den $session['user']['prefs_npc'].
2) Vor Zeile 98 fügst du ein: $session['user']['prefs_npc']=unserialize($session['user']['prefs_npc']);
Vor Zeile 172 fügst du ein: $session['user']['prefs_npc']=serialize($session['user']['prefs_npc']);
Aus Zeile 190 machst du $prefs = unserialize($session['user']['prefs_npc']);
Zeile 219 und 248 fliegen raus (sind so oder so über)

Wenn du an anderen Stellen später die Daten brauchst (NPC-Bios), brauchst du unserialize() auch wieder.

Alle Angaben aus dem Bauch heraus und ohne Gewähr. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: NPC-System
BeitragVerfasst: Mi 14 Aug, 2013 10:48 
Offline
Profi
Profi

Registriert: Di 20 Jul, 2010 13:27
Beiträge: 137
LoGD: http://www.shibaya-logd.de/source.php
Vielen Dank :)

Ich habs jetzt anders gemacht, die erforderlichen Werte in die accounts Tabelle eingetragen und alles in der prefs.php gelassen.

Das mit den mehreren Formularen wollte ich nur der Übersichtlichkeit halber machen, damit jeder NPC quasi ne eigene Überschrift bekommt. Über die normale prefs.php klappt jetzt aber alles ganz wunderbar. Falls jemand mag, stelle ich auch gerne alles hier rein, vielleicht hat ja jemand Spaß dran oder es dient jemandem als Vorlage für was Eigenes


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: NPC-System
BeitragVerfasst: Mi 14 Aug, 2013 20:15 
Offline
Eingeweihter
Eingeweihter

Registriert: Mi 12 Aug, 2009 18:11
Beiträge: 65
Geschlecht: Männlich
LoGD: http://www.plueschdrache.de
Du kannst innerhalb eines Formulars ja auch mehrere Titelzeilen zur Abgrenzung einsetzen. Aber wie du es umsetzt, ist ja letztlich nur eine Frage von Usability und dem eigenen Geschmack.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum