anpera.net
https://anpera.dyndns.org/phpbb3/

RPG-Chars
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=3636
Seite 1 von 1

Autor:  Rantanplan [ Di 15 Mai, 2007 11:37 ]
Betreff des Beitrags:  RPG-Chars

Hi...kann mir einer sagen, was ich ändern muss, damit die RPG Chars in den Feldern nicht mehr angegriffen werden können, ohne das ich bei allen extra den PVP-Schutz einstellen muss?
Ich hatte hier gesucht aber nichts gefunden...Naja schwer kann es ja nich sein, aber bevor ich wieder Mist bau frag ich lieber...
MfG Rantanplan

Autor:  Nightborn [ Di 15 Mai, 2007 11:57 ]
Betreff des Beitrags: 

nimm sie einfach aus der pvplist.php raus...

wenn du da die nummern in einen array steckst, und dann dort mit in_array() prüfst... sollte das möglich sein.

so machs ich bei 1.x.x und der PvP Begrenzung (und Admin Immunität)

Autor:  Rantanplan [ Di 15 Mai, 2007 13:17 ]
Betreff des Beitrags: 

hm, ich habe garkeine pvplist.php :(

Autor:  Nightborn [ Di 15 Mai, 2007 15:13 ]
Betreff des Beitrags: 

valider Punkt, die gibts in der 0.97 nichts als Bibliothek.
Ok.

pvp.php

zeile 40

$this->bbcode_second_pass_code('', ' for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$biolink="bio.php?char=".rawurlencode($row[login])."&ret=".urlencode($_SERVER['REQUEST_URI']);
addnav("", $biolink);
if($row[pvpflag]>$pvptimeout){
output("<tr class='".($i%2?"trlight":"trdark")."'><td>$row[name]</td><td>$row[level]</td><td>[ <a href='$biolink'>Bio</a> | `iimmun`i ]</td></tr>",true);
}else{
output("<tr class='".($i%2?"trlight":"trdark")."'><td>$row[name]</td><td>$row[level]</td><td>[ <a href='$biolink'>Bio</a> | <a href='pvp.php?act=attack&name=".rawurlencode($row[login])."'>Angriff</a> ]</td></tr>",true);
addnav("","pvp.php?act=attack&name=".rawurlencode($row[login]));
}
}')

kommentare:
a) db_num_rows gehört nicht in die bedingung, bei 400 usern wird 400 mal durchgezählt, immer derselbe wert. -> unfug
b) eliwoods signatur: $session['user'] ... $row['login']


1)ok, wenn du also hier einen oder mehrere chars rausnehmen willst, dann bau eine abfrage ein, wenn du text dazu anzeigen lassen willst

2)oder schneide die einfach aus der pvplist raus ...

1+2)
z.B. außerhalb der for:
[php]$rpg_chars=array("MeinChar","SuperChar","Blabla"); //logins(login field) der RPG chars[/php]

1)
z.B. in Zeile 42 nach dem db_fetch:
[php]if (in_array($row['login'],$rpg_chars)) {
output("<tr class='".($i%2?"trlight":"trdark")."'><td>$row['name']</td><td>$row['level']</td><td>[ <a href='$biolink'>Bio</a> | `igöttlich geschützt`i ]</td></tr>",true);
continue;
}[/php]

2)
z.B. in Zeile 42 nach dem db_fetch:
[php]if (in_array($row['login'],$rpg_chars)) continue; //cut out the chars[/php]


ohne Gewähr! das ist jetzt frei Hand, da ich keine 0.97 laufen habe.

Autor:  Kamui [ Di 15 Mai, 2007 15:24 ]
Betreff des Beitrags: 

o.o Warum denn so umständlich erweiter einfach die Abfrage für die Auflistung der Spieler und fertig aus ich weiss nicht was daran ein Problem sein sollte...
Naja mach es so:
Suche:
[php]
$sql = "SELECT name,alive,location,sex,level,laston,loggedin,login,pvpflag FROM accounts WHERE
(locked=0) AND
(age > $days OR dragonkills > 0 OR pk > 0 OR experience > $exp) AND
(level >= ".($session['user']['level']-1)." AND level <= ".($session['user']['level']+2).") AND
(alive=1 AND location=0) AND
(race>0 AND specialty>0) AND
(dragonkills >= ".($session['user']['dragonkills']-5).") AND
(laston < '".date("Y-m-d H:i:s",strtotime(date("r")."-".getsetting("LOGINTIMEOUT",900)." sec"))."' OR loggedin=0) AND
(acctid <> ".$session['user']['acctid'].")
ORDER BY level DESC";
[/php]

Ersetze es mit:
[php]
$sql = "SELECT name,alive,location,sex,level,laston,loggedin,login,pvpflag,rpchar FROM accounts WHERE
(locked=0) AND
(rpchar=0) AND
(age > $days OR dragonkills > 0 OR pk > 0 OR experience > $exp) AND
(level >= ".($session['user']['level']-1)." AND level <= ".($session['user']['level']+2).") AND
(alive=1 AND location=0) AND
(race>0 AND specialty>0) AND
(dragonkills >= ".($session['user']['dragonkills']-5).") AND
(laston < '".date("Y-m-d H:i:s",strtotime(date("r")."-".getsetting("LOGINTIMEOUT",900)." sec"))."' OR loggedin=0) AND
(acctid <> ".$session['user']['acctid'].")
ORDER BY level DESC";
[/php]

Und fertig ;) Hmm naja das Feld in der accounts Tabelle "rpchar"
kann abweichen das müsste man lediglich anpassen aber ein RP Char kann dann mit sicherheit nicht mehr angegriffen werden ;)

Autor:  Harthas [ Di 15 Mai, 2007 15:57 ]
Betreff des Beitrags: 

Kamui... Ein kleiner Hinweis. Du brauchst das Feld `rpchar` nicht erst aus der Tabelle zu wählen, um es auch in der WHERE-Klausel zu verwenden. Nur WHERE genügt ;-)

Autor:  Nightborn [ Di 15 Mai, 2007 19:44 ]
Betreff des Beitrags: 

:D woher soll ich wissen, daß ihr für rpchars ein flag in der accounts tabelle habt? =)

Autor:  Eliwood [ Di 15 Mai, 2007 21:29 ]
Betreff des Beitrags: 

Nightborn hat geschrieben:
:D woher soll ich wissen, daß ihr für rpchars ein flag in der accounts tabelle habt? =)


Das weiss eigentlich niemand.. Fehlende Normen, verstehst? ;)

Achja. Was ist über dich gekommen, dass du hier so oft Support gibst? :)

Autor:  Nightborn [ Mi 16 Mai, 2007 00:20 ]
Betreff des Beitrags: 

:lol:
ich missioniere :P

zuerst muß man die Herde aus dem finsteren (Bug)Tal führen...

Autor:  Rantanplan [ Sa 19 Mai, 2007 20:00 ]
Betreff des Beitrags: 

Besten Dank, kappt natürlich :D

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/