anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mi 20 Nov, 2019 22:47

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Buffs sammeln, aber wie?
BeitragVerfasst: Di 11 Okt, 2011 21:28 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
hiho, ich sitz schon tagelang an einer multiplayer-dungeon, klappt durchaus gut (prototyp muss noch an unsinn gekürzt werden aber der kampf an sich funzt)

stehe aber vor einem problem...
ich möchte, wenn mehrere spieler in der dungeon sind, die buffs aller sammeln (mountbuff, violets buff, etc) und dann auf alle wieder verteilen.... leider werden bei mir zZt 'nur' die buffs an alle geschickt, von dem der gerade eine aktion ausführt...
Bsp:
"Ich geh rein in den kampf incl Mount+Violets Buff, ein weitere Spieler nutz dann grad 'Regeneration'.... dann bekommen alle den Buff 'Regeneration', aber die eigenen Buffs sind weg...."

meine idee ist eig die buffs aller in table `dungeon` spalte `bufflist` zu sammeln und bei jeden neuen seitenaufruf sendet der user sein/e Buff/s zum table und aktualisiert gleichzeit seine eigenen buffs (ohne das buffs doppelt vorkommen)
also $session[bufflist]['mp1'][name]='Regeneration' darf nur 1x vorhanden sein
allerdings kann $session[bufflist]['mount'] öfter vorkommen, da sie sich durch verschiedene tiere im namen unterscheiden
s:4:"name";s:15:"Biss des Wolfes"
s:4:"name";s:9:"Hundebiss" etc


hat wer mein vorhaben verstanden und kann mir weiterhelfen???

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Di 11 Okt, 2011 21:35 
Offline
Profi
Profi

Registriert: Sa 15 Jan, 2011 23:15
Beiträge: 100
*scratch* .. Vielleicht versuchen es irgendwie Rundenbasiert zu machen?

Also wagen wir 3 Spieler sind drin..

Spieler 1 macht xy -> wird abgespeichert in der Tabelle
Spieler 2 macht zz -> abgespeichert
Spieler 3 macht pp -> abgespeichert

So hier prüfen ob alle 3 was getan haben.. und dann erst die Buffs auslesen und ausführen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Di 11 Okt, 2011 22:02 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
Jack hat geschrieben:
*scratch* .. Vielleicht versuchen es irgendwie Rundenbasiert zu machen?

Also wagen wir 3 Spieler sind drin..

Spieler 1 macht xy -> wird abgespeichert in der Tabelle
Spieler 2 macht zz -> abgespeichert
Spieler 3 macht pp -> abgespeichert

So hier prüfen ob alle 3 was getan haben.. und dann erst die Buffs auslesen und ausführen


zZt hab ich autorefresh (alle 2sek bis meine oder moster hp down sind) und bei jedem seitenaufbau

--->
$sql = "SELECT * FROM accounts WHERE loggedin = 1 AND location = '101'
ORDER BY level DESC;
";
$query =db_query($sql);

while($row = db_fetch_assoc($query)){
$sql = "UPDATE accounts SET bufflist='".addslashes($session[user][bufflist])."' WHERE location='101'";
db_query($sql) or die(db_error(LINK));
}
<---

denke mal das mein fehler bei SET bufflist='".addslashes($session[user][bufflist])."' liegt.
gibt es eine möglichkeit buffs zu addieren, statt alles zu überschreiben?

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 12 Okt, 2011 05:57 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3922
Wohnort: Basel
Geschlecht: Männlich
1) Über eine Tabelle "addbuff" und dem Aufrug bei jeder einzelnen Person, um das Buff-Array des aktuellen Users zu verändern
2) Du schreibts das ganze Buffsystem um (was eh mal getan werden müsste) und sorgst dafür, dass die Buffs eh in einer Tabelle liegen - und mit User-ID aktiv bei einem Spieler sind und ohne User-ID (also ähnlich wie bei den Items) als Prototyp funktionieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Do 13 Okt, 2011 21:14 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
hmmmm, hört sich nach noch mehr arbeit an als ich damit eh schon hatte :(

werd mal die Buffs auf ein paar wenige verringern (buffs die den spieler heilen zB) und diese buffs mal versuchen als item(zauber) zu schicken an einen, nicht alle... die werden dann bei eintreffen automatisch ausgelöst und danach das item wieder gelöscht...

das müsste bestimmt leichter sein als alle fähigkeiten umzuschreiben...

meld mich wenn ich soweit bin zurück^^

Edit: FERTIG!!!

habe nun testbuffs(arrays) erstellt und sie in meine dungeon eingebaut...

sieht nun so aus:
PHP:
nach xxxx tests funzt es bestens, buffs kommen alle beim ausgewählten user an....
werde daraus noch eine function mit sämtlichen spezialfähigkeiten bauen, die die fightnav für dungeons ersetzen wird...

if ($HTTP_GET_VARS[buffen]=="test"){
$acctid=$HTTP_GET_VARS[acctid];
$buff = array("name"=>"`1Verteidigungsaura`0","rounds"=>10,"defmod"=>1.1,"activate"=>"roundstart");
$buff=serialize($buff);
db_query("INSERT INTO items (owner,class,buff) VALUES ($acctid,'Buff','$buff')");
redirect($gotolink);
}
if ($HTTP_GET_VARS[buffen]=="test2"){
$acctid=$HTTP_GET_VARS[acctid];
$buff = array("name"=>"`2Aura der Offensive`0","rounds"=>10,"atkmod"=>1.1,"activate"=>"roundstart");
$buff=serialize($buff);
db_query("INSERT INTO items (owner,class,buff) VALUES ($acctid,'Buff','$buff')");
redirect($gotolink);
}

$sql="SELECT * FROM items WHERE class='Buff' AND owner=".$session[user][acctid]." ORDER BY id";
$result=db_query($sql);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
if (strlen($row[buff])>8){
$row[buff]=unserialize($row[buff]);
if ($row['class']='Buff') $session[bufflist][$row[buff][name]]=$row[buff];
db_query("DELETE FROM items WHERE id=$row[id]");
}
}

$sql = "SELECT login,level,name,acctid FROM accounts WHERE acctid<>'".$session[user][acctid]."' AND loggedin = 1 AND location = '101' AND laston>'".date("Y-m-d H:i:s",strtotime("-".getsetting("LOGINTIMEOUT",900)." seconds"))."' ORDER BY level DESC;
";
$query =db_query($sql);

while($row = db_fetch_assoc($query)){
addnav("TESTBUFF");
addnav("`^".$row[name]."`1Test1","test.php?op=fight&buffen=test&acctid=".HTMLEntities($row['acctid']));
addnav("`^".$row[name]."`2Test2","test.php?op=fight&buffen=test2&acctid=".HTMLEntities($row['acctid']));
}


Arrays jetzt noch alle möglichen erstellen, links anpassen und abfragen davor wie zB
if ($session[user][darkartuses]>4 && $session[user][macht]>74 )

oki, damit kann thema geschlossen werden
Dank euch dennoch für antworten, auch wenn ich buffs net mehr sammel, sondern einzel vergebe

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Fr 21 Okt, 2011 22:31 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Darf ich Dir nahe legen, dass $HTTP_{...}_VARS veraltet ist? Nutze doch bitte $_{...}.

PHP:
$get = $HTTP_GET_VARS['get'];
$get = $_GET['get'];


Desweiteren benutze doch bitte Single oder Double Quotes. (Bei den Variablen)


PHP:
$var[var];
=
$var['var']; ($var["var"];)


My.

P.S: Ich lasse den Thread geöffnet, da es eventuell andere User gibt, die ähnliche Fragen oder Probleme haben und sich dann hier melden können.

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: So 23 Okt, 2011 21:27 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
geb dir recht mit veraltet, aber da ich faul bin und meine dungeon ohne probleme laufen, belass ich es erst mal dabei^^
steht natürlich jedem frei wie perfekt sein code ist.
ich geh nach meinem prinzip, da ich sql oder php nie gelernt habe

ich geh nach folgendem vor:
if (weisse Seite) {
--> schauen, woran es liegt
--> evtl Fehler beheben
}else{
--> so lassen, wie es ist
}

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mo 24 Okt, 2011 07:19 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Dieser Ansatz ist natürlich nicht schlecht, denn "Never change a running system!".
Allerdings läufst du so in noch grössere Probleme, sollte dein Hosting-Anbieter irgendwann einmal sein Hosting-System updaten. (Sollte aber bei einem guten Provider vorher angekündigt werden ;))


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mo 24 Okt, 2011 23:05 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
$HTTP_GET_VARS in $_GET, etc ändern bekomm ich hin...
aber mit
Zitat:
$var[var];
=
$var['var']; ($var["var"];)

kann ich nichts anfangen.
wie man merkt, habe ich NULL plan von PHP. Ich bastel nur gern und hab mir selbst durch lesen, lesen, lesen und testen das nötigste beigebracht. Mittlerweil schreib ich selber scripte, die problemlos laufen auch wenn sie vielleicht mit veralteten befehlen ausgeführt werden.
Aber auch da werde ich noch zu lernen^^ (ist halt nur hobby) ;)

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Di 25 Okt, 2011 15:33 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
Hmja, manch Einer macht hier auf dicke Hose, und vergisst dabei wie klein er selbst mal angefangen hat! ;)

Also mal zum mit schreiben: In deinem Beispiel repräsentiert $row ein Array. $row['name'] und $row['class'] sind Felder aus diesem Array. name und class sind Arrayschlüssel. Zu beachten ist, dass mann Arryschlüssel immer quoten sollte, also in Singelquotes einschließen, um eine Verwechselung mit evtl. definierten Konstanten zu vermeiden!

addnav("`^".$row[name]."`1Test1",.... ist also keine korrekte Schreibweise

addnav("`^".$row['name']."`1Test1",.... wäre richtig


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 17:33 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
also ist mit
$var[var];
=
$var['var']; ($var["var"];)

gemeint das ich zB $session[user][acctid] in $session['user']['acctid'] ändern sollte?

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 17:35 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3922
Wohnort: Basel
Geschlecht: Männlich
Ja. Ich hatte dazu irgendwo mal n'erklärenden Artikel geschrieben - nur keine Ahnung mehr, wo der rumliegt. Egal, die Kurzversion:

Strings müssen mit Quotes (Also Single Quotes (eigentlich Minutenstriche bei Gradangaben), ', oder den Double Quotes (eigentlich die Sekundenstriche, im Zusammenhang mit dem imperialien Masseinheiten auch das Zeichen für eine Angabe in Zoll)) umgeben werden, damit der Interpreter, also das Programm, das deinen Code ausführt, weiss, dass es auch eine Zeichenkette ist.
Die Quotes werden erstmal benötigt, um Sätze (mit Leerzeichen, Sonderzeichen und ähnlichem) von Programmcode unterscheidbar zu machen. Jetzt ist es aber so, dass Einwort-Zeichenketten weder Sonder- noch Leerzeichen haben - und deshalb eigentlich auch keine Quotes bräuchte, um den Zusammenhang der Kette kennzuzeichnen.

Benötigt es aber trotzdem. In jeder Programmiersprache - und vor allem bei Interpretersprachen wie bei PHP. Für PHP sind nämlich Zeichenketten ohne Quotes, die keine folgende Klammern haben, nämlich zuerst einmal eine Konstante. Also was ähnliches wie eine Variable, nur ohne $-Zeichen und mit einem festen Wert, der sich niemals während einem Script ändern kann. PHP ist aber so... sagen wir mal, zu gutmüdig, und nimmt, wenn die Konstante nicht definiert ist, dass es sich nur um vergessene Quotes handelt. Deshalb funktioniert auch der in LoGD verbreitete Code ohne "Probleme" (zumindest, wenn man Fehlermeldungen unterdrückt).

Jetzt stell dir aber mal folgendes Beispiel vor:
$this->bbcode_second_pass_code('', '
$user['gold'] = 2300;
$user['gems'] = 5;
')
Wir können nun Tests laufen lassen:
$this->bbcode_second_pass_code('', 'print $user['gold']; // Gibt 2300 aus
print $user['gems']; // Gibt 5 aus
print $user[gold]; // Gibt 2300 aus
print $user[gems]; // Gibt 5 aus.')
Funktioniert scheinbar. Steht aber irgendwo im Code folgendes:
$this->bbcode_second_pass_code('', 'define('gold', 'gems');')
Ändert sich die Ausgabe, die danach kommt:
$this->bbcode_second_pass_code('', 'print $user['gold']; // Gibt 2300 aus
print $user['gems']; // Gibt 5 aus
print $user[gold]; // Gibt 5 aus (!)
print $user[gems]; // Gibt 5 aus.')
Das liegt daran, dass gold nun eine Konstante ist und den Wert 'gems' beinhaltet, also greift die zweitletzte Zeile nicht den Wert des Golds, sondern den der Edelsteine ab.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 17:38 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
verstanden :)

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 17:48 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3922
Wohnort: Basel
Geschlecht: Männlich
Saaxa hat geschrieben:
verstanden :)


Beachte bitte meinen Edit ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 20:20 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
sinn verstanden, aber nach umsetzung.... AAAAAH!

academy.php: überall bei $session[user][...], $row[...] ein ' gesetzt und alle $HTTP_GET_VARS in $_GET geändert.

und nun
PHP:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/......./html/sfinger/academy.php on line 236


line 236:
PHP:
output("`vDer alter Zauberer begutachtet '.$row['name'].'`v. Dann überreicht er dir sorgfältig abgezählt ".($row['gold']?"`^'.$row['gold'].' `vGold":"")." ".($row['gems']?"`#'.$row['gems'].'`v Edelsteine":"")." und lässt den Zauber verschwinden. Wörtlich. ");


sollt ich nun noch was beachten?
vorher waren sämtliche "gems", "gold", etc ohne '

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 20:43 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3922
Wohnort: Basel
Geschlecht: Männlich
Saaxa hat geschrieben:
sinn verstanden, aber nach umsetzung.... AAAAAH!

academy.php: überall bei $session[user][...], $row[...] ein ' gesetzt und alle $HTTP_GET_VARS in $_GET geändert.

und nun
PHP:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/......./html/sfinger/academy.php on line 236


line 236:
PHP:
output("`vDer alter Zauberer begutachtet '.$row['name'].'`v. Dann überreicht er dir sorgfältig abgezählt ".($row['gold']?"`^'.$row['gold'].' `vGold":"")." ".($row['gems']?"`#'.$row['gems'].'`v Edelsteine":"")." und lässt den Zauber verschwinden. Wörtlich. ");


sollt ich nun noch was beachten?
vorher waren sämtliche "gems", "gold", etc ohne '


Oh... An diese Möglichkeit hab ich nicht gedacht. Du musst mit Variablen innerhalb von Strings aufpassen - da setzt man normalerweise keine Quotes, oder Eckklammern drum herum. Immerhin hast du erkannt, dass du die Strings unterbrechen solltest, um eine Variable zu setzen, machst aber den Fehler, dass du einen String, der in Double-Quotes stehst, mit Single-Quotes versuchst umzubrechen.

Hats du keinen Editor mit Syntax-Hervorhebung? Da würdest du den Fehler nämlich entdecken, da die String-Farbe sich trotz deines "Endes" nicht ändert im Editor. Richtig wäre es:

PHP:
output("`vDer alter Zauberer begutachtet ".$row['name']."`v. Dann überreicht er dir sorgfältig abgezählt ".($row['gold']?"`^".$row['gold']." `vGold":"")." ".($row['gems']?"`#".$row['gems']."`v Edelsteine":"")." und lässt den Zauber verschwinden. Wörtlich. ");


Oder (alternativ):
PHP:
output("`vDer alter Zauberer begutachtet {$row['name']}`v. Dann überreicht er dir sorgfältig abgezählt ".($row['gold']?"`^{$row['gold']} `vGold":"")." ".($row['gems']?"`#{$row['gems']}`v Edelsteine":"")." und lässt den Zauber verschwinden. Wörtlich. ");


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Buffs sammeln, aber wie?
BeitragVerfasst: Mi 26 Okt, 2011 20:55 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
hab mich bisher gut mit normalen editor von windows geschlagen^^
wenn datei-übergreifend arbeite, dann nutz ich auch mal TextPad (an html mit phase 5 html-editor)

oki doki, dank dir eli für dein bemühen
werde datei nochmal bearbeiten und erneut uppen


EDIT:
Zitat:
Lektion gelernt (hoff ich^^)
Klappt!

_________________
ERROR!!!


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum