anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 28 Mär, 2024 19:14

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 93 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di 22 Mai, 2007 21:08 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Nightborn hat geschrieben:
Richtig, das ist es.

Das problem: wir haben immer noch keine Clientsoftware und keinen Livestream, wo der Server weiß, daß alle da sind ;)

wenn jetzt von den 5 einer aussteigt, dann dürfen die anderen 4 solange warten, bis der timeout kommt... also bei 5 minuten timeout ... und sagen wir 20 runden... lassen wir mal durchschnittlich (man muß ja refreshen) 2 minuten pro mann vergehen.... dann haben wir 40 Minuten pro Kampf.
Goil.

hoffentlich sind da alle durchgehend online =)

ne, das ist das problem. logd ist passiv, kein dauernder stream, keine software die serverseitig permanent läuft. jede seite wird nach dem "ankommen->verarbeiten->abschicken" prinzip gemacht. kein ankommen, kein abschicken.

da liegt der hase im pfeffer begraben. da wäre weit mehr nötig, ;) und auf freehosts bräuchtest das dann nichtmal ansatzweise mehr laufen lassen, wenn es ein dauernd aktives programm ist (und zwar ein echtes, kein PHP zeugs mehr)


Mh. Zumindest als PVP-Version ist es möglich, wenn man sich an das Prinzip aus Anperas Arena hält (Die Züge können gemacht werden, wann man will).

Aber ja, das Problem sehe ich. Doof.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 22 Mai, 2007 22:36 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Fr 06 Jan, 2006 01:33
Beiträge: 459
Wohnort: Simmern
Geschlecht: Männlich
LoGD: http://www.morpheus-lotgd.de
Hmmm, ich bin alles andere als ein Programmiergenie, aber ich denke, daß sowas, eine Jagd für 3-5 Spieler durchaus möglich sein könnte, allerdings nicht ganz in der angedachten Form, sondern in einer Art "Mogelpackung". Vielleicht kann ich anhand eines Bespiels verdeutlichen, wie ich es meine:

5 Personen wollen zusammen jagen. Diese 5 bestimmen vorher einen Anführer, der seinen, und die Namen der anderen Personen, in 5 Felder eingibt. Das System ließt die Werte der Spieler aus (LPs, At/Def) und schafft daraus quasi einen virtuellen Char, der nun Gruppe heißt. Die Gruppe zieht los und trifft auf programmierte Monster, deren Werte sich an den Anfangswerten der Gruppe orientiert (und zwar alle,nicht nur das erste Monster), es kommmt zum Kampf, der nur rundenbasiert passiert.
Das Monster macht nun Schaden an LPs und das System weist jedem der Spieler eine bestimmte Anzahl davon zu. Als Prinzp dafür könnte der Zufall her halten (dann kann es auch passieren, das 1 Spieler fast alle Schadenspunkte hat und 1 keine) oder es muß ein System erdacht werden. Stirbt eine Spieler bei dem Kampf, wird die Gruppe entsprechend geschwächt (die At/Def Werte des Spielers werden abgezogen).

Was die Heilung nach einem Kampf betrifft, so könnte man verschiedene Systeme andenken:

- eine bestimmte Anzahl von Besuchen beim Heiler, die die Gruppe machen darf, sind die aufgebraucht, heißt es Zähne zusammen beißen (5 Spieler bei 5 Kämpfen, 12 Besuche möglich, waren wenigstens 3 Personen insgesamt 12 mal beim Heiler, war es das)
- Besuch des Heilers immer erst nach 2 Kämpfen möglich aber dafür ganz normal
- jeder einzelne Spieler bekommt nur eine bestimmte Anzahl von möglichen Heilerbesuchen zugewiesen (bei 5 Kämpfen z.B. 3)
Es könnten auch verschiedene dieser Überlegungen kombiniert werden.

Tiere
Entweder scheiden die Tiere bei diesen Jagden aus, oder es sind nur bestimmte zugelassen, deren Wert dann ebenfals addiert wird (z.B. keine Einhörner zugelassen).

Fähigkeiten
Auch hier: entweder scheiden sie aus, oder es wird, wenn einer eine startet, verfahren wie bei einem Spieler, der alle Fähigkeiten besitzen würde, die in der Gruppe vertretten sind.

Das ist jetzt etwas, was mir spontan einfiel, wäre wie gesagt eine Mogelpackung und ich weiß auch nicht, ob das so einfach umsetzbar wäre bzw. Spielspaß bringen würde, da ja 4 nur den Chat hätten und 1 das Klickvergnügen. Sinnvoll wäre jedenfalls eine Pause nach jedem Kampf und ein Chat in dem Spielbildschirm, dann wäre es für RPler bestimmt eine feine Sache, Waldkämpfe und RP zu verknüpfen, der Beginn des nächsten Kampfes würde eingeläutet, wenn der Anführer auf einen Weiter Nav drückt, den nur er als solcher sehen kann.

Just my 2 Cents, äußert Euch ihr Experten, aber denkt daran, ich bin kein Top Programmierer. Könnte ich so gut Programmieren wie ich Ideen habe, hätte ich schon mein eigenes Spiel gemacht... :D :wink:

_________________
Ich bin das Land, meine Augen sind der Himmel, meine Glieder die Bäume, ich bin der Fels, die Wassertiefe. Ich bin nicht hier, um die Natur zu beherrschen oder sie auszubeuten. Ich bin selbst Natur.

(Hopi)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 22 Mai, 2007 22:38 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
Dann wäre aber das bisherige Kämpfen normal möglich. Und kein Kampf hat Einfluß auf das was in der PVP Arena geht.

Da ich aber keine 3 normalen Specialties hab, sondern unbegrenzt, müsste man sich da überlegen, ob man die erlaubt... weil die ja alle dann für "jetzt setzt der Gegner die ein" programmieren müsste... und ich hab an die zehn installiert, mit je mind. 5 buffs....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 04 Jun, 2007 05:15 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mi 27 Sep, 2006 10:58
Beiträge: 133
Ist es möglich die Ausgabe einer Waffe zu verhindern, wenn der Spieler diese schon in der Hand oder im Inventar besitzt?

Ich habe einen kleinen Ort mit einem Monster, bei dem man eine Waffe bekommt, wenn man es besiegt.
Da die Waffe aber eine Rarität bleiben soll, wäre es erfreulich wenn man die Ausgabe eindämmen könnte.
Nach dem Motto "zwei Waffen dieser Güte kannst Du leider nicht tragen". :?

edit: Upsa, falsches Forum. :pein:
Vielleicht wird mir ja trotzdem geholfen. :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 04 Jun, 2007 07:02 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Fr 06 Jan, 2006 01:33
Beiträge: 459
Wohnort: Simmern
Geschlecht: Männlich
LoGD: http://www.morpheus-lotgd.de
Klar geht das, schaffe ein Feld für die Waffe im table Acounts, das auf 1 gesetzt wird, wenn der Spieler die Waffe erhält und in das Modul ein Abfrage, ob er sie hat. Wenn die Waffe über den DK erhalten bleiben soll, nicht vergessen, es in der dragon.php noch zu ergänzen... :wink:

_________________
Ich bin das Land, meine Augen sind der Himmel, meine Glieder die Bäume, ich bin der Fels, die Wassertiefe. Ich bin nicht hier, um die Natur zu beherrschen oder sie auszubeuten. Ich bin selbst Natur.

(Hopi)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 04 Jun, 2007 08:04 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 21 Feb, 2005 17:26
Beiträge: 323
Wohnort: Köln
Morpheus hat geschrieben:
Klar geht das, schaffe ein Feld für die Waffe im table Acounts, das auf 1 gesetzt wird, wenn der Spieler die Waffe erhält und in das Modul ein Abfrage, ob er sie hat. Wenn die Waffe über den DK erhalten bleiben soll, nicht vergessen, es in der dragon.php noch zu ergänzen... :wink:


Wieso, oder wozu noch ein Feld? LoGD nutzt so schon genug DB-Felder (meine Meinung).
Ich nehme mal an, die Waffe hat einen einzigartigen Namen oder etwas in der Art?
[php]If($session['user']['weapon'] != 'Waffenname')
{
#Bekommt die Waffe
}[/php]
Eventuell müsste auch in die Items gesehen werden, ob der User da schon die Waffe besitzt.

Mfg Garlant


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 04 Jun, 2007 18:10 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Im Anpera-System muss man den Namen der Waffe & Die Inventartabelle prüfen. Wie man den Waffennamen prüft, ist ja bereits angegeben, die Inventartabelle kann man absuchen:

[php]$res = db_squeryf('SELECT count(`itemid`) FROM `items` WHERE `name` = "%s"', 'Waffenname'); [/php]

Wobei `name` eventuell auch `itemname` ist, sicher bin ich mir da nicht mehr.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 05 Jun, 2007 02:22 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mi 27 Sep, 2006 10:58
Beiträge: 133
DankeschÖn! :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ideen & Wünsche
BeitragVerfasst: Di 07 Jul, 2009 14:49 
Offline
Eingeweihter
Eingeweihter

Registriert: Mo 07 Nov, 2005 20:33
Beiträge: 63
LoGD: http://lotgd.elements-of-darkness.de
Skype: sirblacksoul
So ich habe zwei Ideen für Addons die aber meiner meinung nach ziemlich schwer zu programmieren sein sollten, und da ich noch nicht alzuviele erfahrungen mit php und MySql gemacht habe auch für mich schwer umsetzbar wären. Jedoch habe bereits begonnen mich mit php und MySql auseinanderzusetzten so das ich (falls niemand anderster kann/möchte) villeicht selbst der idee hingebe. Nunja lange rede kurzer sinn, jetzt zu den Ideen:

Idee 1:

Einen Mod für das Gilden/Clan system, bei dem eine komplette Gilde/Clan oder einfach nur eine gruppe von spielern gegen eine gruppe von anderen spielern antretten kann. (Dazu evtl noch einen eintrag in die Ruhmeshalle wer zurzeit die beste gilde/ der beste Clan ist) Also im Prinzip eine Arena für Gruppen vs. Gruppen kampf.

Idee 2:

Ein Eventsystem, das beinhaltet eine zusätzlicher Usergruppe (wie z.B. Mod oder Admin) genannt, Eventleiter. Diese haben die Fähigkeit ein Event zu starten. (Evtl einen eigenen Raum) in dem eine gewisse Anzahl von Spielern rein kann. In diesem Raum gibt der Eventleiter einen Denkanstoß der die Spieler dazu verleiten soll mit rpg durch ein kleines Abenteuer zu reisen. Dabei begleitet der Eventleiter dieses Abenteuer durch gewisse ereignisse, und hat die möglichkeit Spieler zu belohnen oder zu bestrafen. (Wie z.B. Spieler xy findet eine Waffe) usw. Doch hierzu sollten die Spieler bevor sie an dem Event teilnnehmen einer art AGB zustimmen müssen, in der sie bestätigen das sie rpg getreu spielen, (Also nicht schreiben: Mein char metztelt alle monster nieder bekommt 1000 gold und 100 gems) und das sie sich verpflichten sich in diesem raum gut zu verhalten also nicht das rpg anderer kaputt machen. Hilfreich hierzu wäre es evtl. das man vorher bei einem Mentor system erfolgreich teilgenommen hat. Wo man richtig rpg schreiben gelehrt bekommen hat. Der Eventleiter sollte trotz allem aber auch noch die fähigkeit haben spieler aus dem Raum zu kicken und kommentare zu löschen falls doch mal einer aus der reihe tanzen sollte.

Feedback ist gerne erwünscht ^.^ und wie gesagt ihr dürft euch (falls ihr möchtet) gerne dran machen und diese Ideen umsetzten. *gg* auch wenn ich dann nicht wirklich was gemacht hab wäre es cool wenn ihr hinzufügen würdet das die idee von sirblacksoul stammt :D xDD


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ideen & Wünsche
BeitragVerfasst: Di 07 Jul, 2009 20:12 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Da hast du dir aber ganz schöne Granaten ausgesucht ;-)
Zunächst einmal: Realisieren kann man beides sicherlich, allerdings würde ich an deiner stelle mit dem Eventsystem anfangen, da man hier schon mit recht wenig viel anstellen kann. Für Multiple Kämpfe würde ich mich mal an Nightborn wenden, der hat das meines Wissens nach für die 1.1.xer entwickelt.

Aber zurück zum Eventsystem. Hier kannst du schön schrittweise vorgehen und bereits bestehendes Verwenden:
Für den Raum den du haben willst, kannst du wohl am ehesten selbst anfangen. Im Prinzip ja eine Art gesperrter Bereich vergleichbar mit den Häusern. Im Prinzip kannst du sogar das Verfahren "Zugang per Item" vom Wohnviertel übernehmen.
Für die Spielleiterfunktion bieten sich Meteoras RPG-Commands an. Die könntest du noch etwas erweitern, aber die wichtigsten Dinge dürften ja schon bestehen. Die AGB davor zu schalten dürfte nicht das Problem sein. Wenn du Items als Schlüssel benutzen möchtest, könntest du gleich hvalue2 oder so benutzen um abzusichern, ob der User schon zugestimmt hat.

Ich hoffe, ich konnte dir weiter helfen,
Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ideen & Wünsche
BeitragVerfasst: Mi 08 Jul, 2009 06:43 
Offline
Eingeweihter
Eingeweihter

Registriert: Mo 07 Nov, 2005 20:33
Beiträge: 63
LoGD: http://lotgd.elements-of-darkness.de
Skype: sirblacksoul
hmm wobei ich mir dann glaub nur einen teil von der schlüsselfunktion kopieren würde, weil ich es glaub in eine art ticket system umschreiben möchte das evtl. per zufall oder per wahl des eventleiters vergeben wird und man das ticket nur 1 mal benutzen kann und dann automatisch verfällt (ansonsten nach einer gewissen zeit) was haltet ihr von der idee? :D




////////// EDIT: 9 Juli 2009

hab grad gemerkt das sich anscheinend schon jemand die mühe gemacht hat:
$this->bbcode_second_pass_code('', '
<?php


/*****************************************************
GVG-Arena by Banshee 2007
for Eliwood's Gilden 1.5b
with Banshee's diplomacy extensions
based on
PvP-Arena by anpera 2004
For "Legend of the Green Dragon" 0.9.7 by Eric Stevens
Needs modifications on several files and in value5base!
SEE INSTALLATION INSTRUCTIONS AT:
http://www.anpera.net/forum/viewtopic.php?t=369
Modified with an idea by LordRaven:
Superuser is able to end fights.
Sorry, but I shortened the copyright, because in it, there were lots of searchstrings to modify this file. ;-)
If you want me to change it again, please tell me! x-wg@gmx.net
*****************************************************/

require_once "common.php";
require_once "lib/gilden.php";
page_header("Gildenarena");

//$out contains page output to pretend function output being called too often
$out = "";


function stats($row){ // Shows player stats
global $session,$out;
if ($row[bufflist1]) $row[bufflist1]=unserialize($row[bufflist1]);
if ($row[bufflist2]) $row[bufflist2]=unserialize($row[bufflist2]);
if ($row[bufflist1]) reset($row[bufflist1]);
if ($row[bufflist2]) reset($row[bufflist2]);
if ($row[acctid1]==$session[user][acctid]){
$atk=$row[att1];
$def=$row[def1];
while (list($key,$val)=each($row[bufflist1])){
$buffs.=appoencode("`#$val[name] `7($val[rounds] Runden übrig)`n");
if (isset($val[atkmod])) $atk *= $val[atkmod];
if (isset($val[defmod])) $def *= $val[defmod];
}
if ($row[bufflist2]){
while (list($key,$val)=each($row[bufflist2])){
if (isset($val[badguyatkmod])) $atk *= $val[badguyatkmod];
if (isset($val[badguydefmod])) $def *= $val[badguydefmod];
}
}
$atk = round($atk, 2);
$def = round($def, 2);
$atk = ($atk == $row[att1] ? "`^" : ($atk > $row[att1] ? "`@" : "`$")) . "`b$atk`b`0";
$def = ($def == $row[def1] ? "`^" : ($def > $row[def1] ? "`@" : "`$")) . "`b$def`b`0";
if (count($row[bufflist1])==0){
$buffs.=appoencode("`^Keine`0");
}
$out.= "<table align='center'>
<caption class='charhead' style='padding:10px'>`^Vital Info für diesen Kampf`0</caption>
<tr>
<th style='padding:3px 10px' class='charinfo'>`&Level: `^</th><td style='padding:3px 10px'>$row[lvl1]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Lebenspunkte:`0</th><td style='padding:3px 10px'>`^$row[hp1]/`0$row[maxhp1]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Angriff: `0</th><td style='padding:3px 10px'>`^`b$atk`b</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Verteidigung:`0</th><td style='padding:3px 10px'>`^`b$def`b</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Waffe:`0</th><td style='padding:3px 10px'>`^$row[weapon1]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Rüstung: </th><td style='padding:3px 10px'>`^$row[armor1]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Aktionen:</th>
<td style='padding:3px 10px'>$buffs`0</td></tr>";
} elseif ($row[acctid2]==$session[user][acctid]){
$atk=$row[att2];
$def=$row[def2];
while (list($key,$val)=each($row[bufflist2])){
$buffs.=appoencode("`#$val[name] `7($val[rounds] Runden übrig)`n");
if (isset($val[atkmod])) $atk *= $val[atkmod];
if (isset($val[defmod])) $def *= $val[defmod];
}
if ($row[bufflist1]){
while (list($key,$val)=each($row[bufflist1])){
if (isset($val[badguyatkmod])) $atk *= $val[badguyatkmod];
if (isset($val[badguydefmod])) $def *= $val[badguydefmod];
}
}
$atk = round($atk, 2);
$def = round($def, 2);
$atk = ($atk == $row[att2] ? "`^" : ($atk > $row[att2] ? "`@" : "`$")) . "`b$atk`b`0";
$def = ($def == $row[def2] ? "`^" : ($def > $row[def2] ? "`@" : "`$")) . "`b$def`b`0";
if (count($row[bufflist2])==0){
$buffs.=appoencode("`^Keine`0");
}
$out.= "<table align='center'>
<caption class='charhead' style='padding:10px'>`^Vital Info für diesen Kampf`0</caption>
<tr>
<th style='padding:3px 10px' class='charinfo'>`&Level: `^</th><td style='padding:3px 10px'>$row[lvl2]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Lebenspunkte:`0</th><td style='padding:3px 10px'>`^$row[hp2]/`0$row[maxhp2]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Angriff: `0</th>
<td style='padding:3px 10px'>`^`b$atk`b</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Verteidigung:`0</th><td style='padding:3px 10px'>`^`b$def`b</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Waffe:`0</th><td style='padding:3px 10px'>`^$row[weapon2]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Rüstung: </th><td style='padding:3px 10px'>`^$row[armor2]</td>
</tr><tr>
<th style='padding:3px 10px' class='charinfo'>`&Aktionen:</th>
<td style='padding:3px 10px'>$buffs`0</td></tr>";
}
$out.= "</tr></table>`n";
if ($row[bufflist1]) $row[bufflist1]=serialize($row[bufflist1]);
if ($row[bufflist2]) $row[bufflist2]=serialize($row[bufflist2]);
$result = db_query ("SELECT *, accounts.name
FROM commentary
LEFT JOIN accounts
ON accounts.acctid = commentary.author
WHERE section = 'gvgarena'
ORDER BY commentid
LIMIT 10");
if (db_num_rows($result)) {
$out.= "`nAus der Ferne hörst du das Gebrüll aus der Arena:`n";
while ($row = db_fetch_assoc ($result)) {
$out.= "(".date("H:i",strtotime($row['postdate'])).") - $row[name] $row[comment]`0`n\n";
}
}
}

function arenanav($row){ // Navigation during fight
global $out;
if ($row[turn]==1){
$badguy = array("acctid"=>$row[acctid2],"guild"=>$row[guild2],"name"=>$row[name2],"level"=>$row[lvl2],"hitpoints"=>$row[hp2],"attack"=>$row[att2],"defense"=>$row[def2],"weapon"=>$row[weapon2],"armor"=>$row[armor2],"bufflist"=>$row[bufflist2]);
$goodguy = array("acctid"=>$row[acctid1],"guild"=>$row[guild1],"name"=>$row[name1],"level"=>$row[lvl1],"hitpoints"=>$row[hp1],"maxhitpoints"=>$row[maxhp1],"attack"=>$row[att1],"defense"=>$row[def1],"weapon"=>$row[weapon1],"armor"=>$row[armor1],"bufflist"=>$row[bufflist1]);
} elseif ($row[turn]==2){
$badguy = array("acctid"=>$row[acctid1],"guild"=>$row[guild1],"name"=>$row[name1],"level"=>$row[lvl1],"hitpoints"=>$row[hp1],"attack"=>$row[att1],"defense"=>$row[def1],"weapon"=>$row[weapon1],"armor"=>$row[armor1],"bufflist"=>$row[bufflist1]);
$goodguy = array("acctid"=>$row[acctid2],"guild"=>$row[guild2],"name"=>$row[name2],"level"=>$row[lvl2],"hitpoints"=>$row[hp2],"maxhitpoints"=>$row[maxhp2],"attack"=>$row[att2],"defense"=>$row[def2],"weapon"=>$row[weapon2],"armor"=>$row[armor2],"bufflist"=>$row[bufflist2]);
}
if ($goodguy[hitpoints]>0 && $badguy[hitpoints]>0) {
$out.= "<h2>`\$Kampf`0</h2>";
$out.= "`@Du hast den Gegner `^$badguy[name]`@ entdeckt, der sich mit seiner Waffe `%$badguy[weapon]`@";
// Let's display what buffs the opponent is using - oh yeah
$buffs="";
$disp[bufflist]=unserialize($badguy[bufflist]);
reset($disp[bufflist]);
while (list($key,$val)=each($disp[bufflist])){
$buffs.=" `@und `#$val[name] `7($val[rounds] Runden)";
}
if (count($disp[bufflist])==0){
$buffs.=appoencode("");
}
$out.= "$buffs";
$out.= " `@auf dich stürzt!`0`n`n";
$out.= "`2Level: `6$badguy[level]`0`n";
$out.= "`2`bErgebnis der letzten Runde:`b`n";
$out.= "`2$badguy[name]`2's Lebenspunkte: `6$badguy[hitpoints]`0`n";
$out.= "`2DEINE Lebenspunkte: `6$goodguy[hitpoints]`0`n";
$out.= "$row[lastmsg]";
addnav("Kampf");
addnav("Kämpfen","guildarena.php?op=fight&act=fight");
} else {
addnav("Ausgang");
addnav("zurück zur Gildenarena","guildarena.php");
}

}

function activate_buffs($tag) { // activate buffs (from battle.php with modifications for multiplayer battle)
global $goodguy,$badguy,$message,$out;
reset($goodguy['bufflist']);
reset($badguy['bufflist']);
$result = array();
$result['invulnerable'] = 0; // not in use
$result['dmgmod'] = 1;
$result['badguydmgmod'] = 1; // not in use
$result['atkmod'] = 1;
$result['badguyatkmod'] = 1; // not in use
$result['defmod'] = 1;
$result['badguydefmod'] = 1;
$result['lifetap'] = array();
$result['dmgshield'] = array();
while(list($key,$buff) = each($goodguy['bufflist'])) {
if (isset($buff['startmsg'])) {
$msg = $buff['startmsg'];
$msg = str_replace("{badguy}", $badguy[name], $msg);
$out.= "`%$msg`0";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
unset($goodguy['bufflist'][$key]['startmsg']);
}
$activate = strpos($buff['activate'], $tag);
if ($activate !== false) $activate = true; // handle strpos == 0;
// If this should activate now and it hasn't already activated,
// do the round message and mark it.
if ($activate && !$buff['used']) {
// mark it used.
$goodguy['bufflist'][$key]['used'] = 1;
// if it has a 'round message', run it.
if (isset($buff['roundmsg'])) {
$msg = $buff['roundmsg'];
$msg = str_replace("{badguy}", $badguy[name], $msg);
$out.= "`)$msg`0`n";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
}
}
// Now, calculate any effects and run them if needed.
if (isset($buff['invulnerable'])) {
$result['invulnerable'] = 1;
}
if (isset($buff['atkmod'])) {
$result['atkmod'] *= $buff['atkmod'];
}
if (isset($buff['badguyatkmod'])) {
$result['badguyatkmod'] *= $buff['badguyatkmod'];
}
if (isset($buff['defmod'])) {
$result['defmod'] *= $buff['defmod'];
}
if (isset($buff['badguydefmod'])) {
$result['badguydefmod'] *= $buff['badguydefmod'];
}
if (isset($buff['dmgmod'])) {
$result['dmgmod'] *= $buff['dmgmod'];
}
if (isset($buff['badguydmgmod'])) {
$result['badguydmgmod'] *= $buff['badguydmgmod'];
}
if (isset($buff['lifetap'])) {
array_push($result['lifetap'], $buff);
}
if (isset($buff['damageshield'])) {
array_push($result['dmgshield'], $buff);
}
if (isset($buff['regen']) && $activate) {
$hptoregen = (int)$buff['regen'];
$hpdiff = $goodguy['maxhitpoints'] -
$goodguy['hitpoints'];
// Don't regen if we are above max hp
if ($hpdiff < 0) $hpdiff = 0;
if ($hpdiff < $hptoregen) $hptoregen = $hpdiff;
$goodguy['hitpoints'] += $hptoregen;
// Now, take abs value just incase this was a damaging buff
$hptoregen = abs($hptoregen);
if ($hptoregen == 0) $msg = $buff['effectnodmgmsg'];
else $msg = $buff['effectmsg'];
$msg = str_replace("{badguy}", $badguy[name], $msg);
$msg = str_replace("{damage}", $hptoregen, $msg);
$out.= "`)$msg`0`n";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
}
if (isset($buff['minioncount']) && $activate) {
$who = -1;
if (isset($buff['maxbadguydamage'])) {
if (isset($buff['maxbadguydamage'])) {
$buff['maxbadguydamage'] = stripslashes($buff['maxbadguydamage']);
eval("\$buff['maxbadguydamage'] = $buff[maxbadguydamage];");
}
$max = $buff['maxbadguydamage'];

if (isset($buff['minbadguydamage'])) {
$buff['minbadguydamage'] = stripslashes($buff['minbadguydamage']);
eval("\$buff['minbadguydamage'] = $buff[minbadguydamage];");
}
$min = $buff['minbadguydamage'];

$who = 0;
} else {
$max = $buff['maxgoodguydamage'];
$min = $buff['mingoodguydamage'];
$who = 1;
}
for ($i = 0; $who >= 0 && $i < $buff['minioncount']; $i++) {
$damage = e_rand($min, $max);
if ($who == 0) {
$badguy[hitpoints] -= $damage;
} elseif ($who == 1) {
$goodguy[hitpoints] -= $damage;
}
if ($damage < 0) {
$msg = $buff['effectfailmsg'];
} elseif ($damage == 0) {
$msg = $buff['effectnodmgmsg'];
} elseif ($damage > 0) {
$msg = $buff['effectmsg'];
}
if ($msg>"") {
$msg = str_replace("{badguy}", $badguy['name'], $msg);
$msg = str_replace("{goodguy}", $session['user']['name'], $msg);
$msg = str_replace("{damage}", $damage, $msg);
$out.= "`)$msg`0`n";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
}
}
}
}
while(list($key,$buff) = each($badguy['bufflist'])) { // check badguy buffs
$activate = strpos($buff['activate'], $tag);
if ($activate !== false) $activate = true;
if ($activate && !$buff['used']) {
$badguy['bufflist'][$key]['used'] = 1;
}
if (isset($buff['atkmod'])) {
$result['badguyatkmod'] *= $buff['atkmod'];
}
if (isset($buff['defmod'])) {
$result['badguydefmod'] *= $buff['defmod'];
}
if (isset($buff['badguyatkmod'])) {
$result['atkmod'] *= $buff['badguyatkmod'];
}
if (isset($buff['badguydefmod'])) {
$result['defmod'] *= $buff['badguydefmod'];
}
if (isset($buff['badguydmgmod'])) {
$result['dmgmod'] *= $buff['badguydmgmod'];
}
}
return $result;
}
function process_lifetaps($ltaps, $damage) {
global $goodguy,$badguy,$message;
reset($ltaps);
while(list($key,$buff) = each($ltaps)) {
$healhp = $goodguy['maxhitpoints'] -
$goodguy['hitpoints'];
if ($healhp < 0) $healhp = 0;
if ($healhp == 0) {
$msg = $buff['effectnodmgmsg'];
} else {
if ($healhp > $damage * $buff['lifetap'])
$healhp = $damage * $buff['lifetap'];
if ($healhp < 0) $healhp = 0;
if ($damage > 0) {
$msg = $buff['effectmsg'];
} elseif ($damage == 0) {
$msg = $buff['effectfailmsg'];
} elseif ($damage < 0) {
$msg = $buff['effectfailmsg'];
}
}
$goodguy['hitpoints'] += $healhp;
$msg = str_replace("{badguy}",$badguy['name'], $msg);
$msg = str_replace("{damage}",$healhp, $msg);
if ($msg > ""){
$out.= "`)$msg`n";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
}
}
}

function process_dmgshield($dshield, $damage) {
global $session,$badguy,$message;
reset($dshield);
while(list($key,$buff) = each($dshield)) {
$realdamage = $damage * $buff['damageshield'];
if ($realdamage < 0) $realdamage = 0;
if ($realdamage > 0) {
$msg = $buff['effectmsg'];
} elseif ($realdamage == 0) {
$msg = $buff['effectnodmgmsg'];
} elseif ($realdamage < 0) {
$msg = $buff['effectfailmsg'];
}
$badguy[hitpoints] -= $realdamage;
$msg = str_replace("{badguy}",$badguy['name'], $msg);
$msg = str_replace("{damage}",$realdamage, $msg);
if ($msg > ""){
$out.= "`)$msg`n";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
}
}
}
function expire_buffs() {
global $goodguy,$badguy;
reset($goodguy['bufflist']);
reset($badguy['bufflist']);
while (list($key, $buff) = each($goodguy['bufflist'])) {
if ($buff['used']) {
$goodguy['bufflist'][$key]['used'] = 0;
$goodguy['bufflist'][$key]['rounds']--;
if ($goodguy['bufflist'][$key]['rounds'] <= 0) {
if ($buff['wearoff']) {
$msg = $buff['wearoff'];
$msg = str_replace("{badguy}", $badguy['name'], $msg);
$out.= "`)$msg`n";
$message=$message.$goodguy[name].": \"`i$msg`i\"`n";
}
unset($goodguy['bufflist'][$key]);
}
}
}
} //function expire_buffs

addcommentary();

//anfang hauptskript

switch ($_REQUEST['op']) {
case "challenge":
page_title ("Eintrag in die Kämpferliste");
if ($_REQUEST['id'] == "") {
$result = db_query ("SELECT DISTINCT gildenid,gildenname FROM gilden
LEFT JOIN gvg ON gilden.gildenid = gvg.guild2
WHERE gvg.guild1 = {$session['guild']['gildenid']}
AND gvg.acctid1 != {$session['user']['acctid']}
AND gvg.acctid2 = 0");
if (db_num_rows($result)) {
$out.= "Siegesgewiss schlenderst Du zur Gildenarena, um Deinen Namen in die Liste der kampfbereiten ".($session['user']['sex']?"Kriegerinnen":"Krieger")."
einzutragen. `n
Beachte, dass du dich in diese Liste mit all deinen Fähigkeiten und deinen Waffen einträgst. Solltest du zwischenzeitlich eine andere Waffe
kaufen oder durch Waldkämpfe mehr Erfahrung gewinnen, ist das für diesen Kampf nicht wichtig. `n
`bAchtung:`b Da du zur Herausforderergilde gehörst, kann sich jeder Krieger der Gegnergilde entscheiden, gegen dich zu kämpfen. Es kann
also passieren, dass du einen Gegner bekommst, der dir haushoch überlegen ist.`n";
if ($session['user']['pvpflag']=="5013-10-06 00:42:00"){
$out.="`n`&Du hast PvP-Immunität gekauft. Diese verfällt, wenn du dich in diese Liste einträgst!`0`n`n";
}
$result2 = db_query ("SELECT acctid1 FROM gvg WHERE acctid1 = {$session['user']['acctid']}");
$out.= "Deine Gilde hat folgenden Gilden den Kriegszustand erklärt:";
$out.= "<ul>";
while ($row = db_fetch_assoc($result)) {
$link = "guildarena.php?op=challenge&id=$row[gildenid]";
$out.= "<li><a href='$link'>$row[gildenname]</a></li>";
allownav ($link);
addnav ("$row[gildenname]",$link);
}
$out.="</ul>\n";
} else {
$out.= "Schummeln gilt nicht!";
}
} else {
$result = db_query ("SELECT id FROM gvg
WHERE acctid1 = {$session['user']['acctid']}
OR acctid2 = {$session['user']['acctid']}");
if (db_num_rows($result)) {
$out.= "`\$Du hast dich bereits für einen Gildenkampf eingetragen.
Du kannst immer nur an einem Gildenkampf gleichzeitig teilnehmen!`0";
} else {
$temp = unserialize ($session[user][bufflist]);
if ($temp['mount'] != "") {
$mountbuff ['mount'] = $temp['mount'];
} else {
$mountbuff = array();
}
$mountbuff = addslashes(serialize ($mountbuff));
db_query ("UPDATE gvg SET
acctid1 = {$session['user']['acctid']},
name1 = '".addslashes($session['user']['name'])."',
lvl1 = {$session['user']['level']},
hp1 = {$session[user][hitpoints]},
maxhp1 = {$session[user][maxhitpoints]},
att1 = {$session[user][attack]},
def1 = {$session[user][defence]},
weapon1 = '".addslashes($session[user][weapon])."',
armor1 = '".addslashes($session[user][armor])."',
bufflist1 = '$mountbuff'
WHERE guild1 = {$session['guild']['gildenid']}
AND guild2 = {$_REQUEST['id']}
AND acctid2 = 0 LIMIT 1");
if ($session['user']['pvpflag']=="5013-10-06 00:42:00"){
$session['user']['pvpflag'] = "1986-10-06 00:42:00";
}
$out.= "Du hast Dich in die Liste für den Gildenkampf eingetragen.`n
In den nächsten Tagen solltest Du eine YOM deines Gegners erhalten.";
}
}
addnav ("zurück in die Gilde","gilden.php");
break;
case "view":
$result = db_query ("SELECT *,gilden.gildenname AS gildenname FROM gvg
LEFT JOIN gilden ON gilden.gildenid = gvg.guild1
WHERE guild2 = {$session['guild']['gildenid']}
AND acctid1 > 0
AND acctid2 = 0 ORDER BY lvl1 DESC");
if (db_num_rows($result)) {
$out.= "Du betrachtest die gegnerischen Kämpfer, die für einen Gildenkampf bereitstehen.`n
Hier kannst du dir einen Kämpfer aussuchen, mit dem du um die Ehre und um 10%
des Gildenschatzes deiner (oder seiner ^^) Gilde kämpfen möchtest.
<table align='center'><tr>
<th style='padding:3px 10px'>Name</th>
<th style='padding:3px 10px'>Gilde</th>
<th style='padding:3px 10px'>Level</th>
<th style='padding:3px 10px'>Lebenspunkte</th>
<th style='padding:3px 10px'>max. Lebenspunkte</th>
<th style='padding:3px 10px'>Angriff</th>
<th style='padding:3px 10px'>Verteidigung</th>
</tr>";
while ($row = db_fetch_assoc ($result)) {
$link = "guildarena.php?op=accept&acctid=$row[acctid1]";
allownav ($link);
addnav ("$row[name1]",$link);
$out.= "<th style='padding:3px 10px'><a href='$link'>$row[name1]`n\n</th>\n
<td style='padding:3px 10px'>$row[gildenname]</td>
<td style='padding:3px 10px'>$row[lvl1]</td>
<td style='padding:3px 10px'>$row[hp1]</td>
<td style='padding:3px 10px'>$row[maxhp1]</td>
<td style='padding:3px 10px'>$row[att1]</td>
<td style='padding:3px 10px'>$row[def1]</td>
</tr>";
}
$out.="</table>\n";
addnav ("Lieber doch nicht","gilden.php");
} else {
$out.= "Zur Zeit stehen keine Kämpfer für einen Gildenkampf bereit.";
addnav ("zum Aufenthaltsraum","gilden.php");
}
break;
case "showlist":
$sql = "SELECT acctid1,acctid2,guild1,guild2 FROM gvg
WHERE acctid1 > 0";
addnav("Ausgang");
if ($_REQUEST['id'] != "") {
$sql.= " AND (guild1 = $_REQUEST[id] OR guild2 = $_REQUEST[id])";
addnav ("Zurück in den Aufenthaltsraum","gilden.php");
} else {
addnav ("Zurück zur Gildenarena","guildarena.php");
}
$sql.= " ORDER BY guild1,guild2,lvl1 DESC,lvl2 DESC";
$result = db_query ($sql);
if (db_num_rows($result)) {
$out.= "Hier siehst Du, welche Gilden sich gerade im Kampf befinden und wie die Gegner aufgestellt sind.
<table><tr>
<th style='padding:3px 10px'>Angreifergilde</th>
<th style='padding:3px 10px'>Verteidigergilde</th>
<th style='padding:3px 10px'>Angreifer</th>
<th style='padding:3px 10px'>Verteidiger</th></tr>";
while ($row = db_fetch_assoc ($result)) {
$guild1 = db_fetch_assoc (db_query ("SELECT gildenname FROM gilden WHERE gildenid = $row[guild1]"));
$guild2 = db_fetch_assoc (db_query ("SELECT gildenname FROM gilden WHERE gildenid = $row[guild2]"));
$name1 = db_fetch_assoc (db_query ("SELECT name FROM accounts WHERE acctid = $row[acctid1]"));
$name1 = $name1['name'];
if ($row[acctid1] == $session['user']['acctid'] && $row[acctid2] == 0) {
if ($_REQUEST['id'] != "") {
$id= "&id=".$session['guild']['gildenid'];
} else {
$id = "";
}
$name1.=" <a href='guildarena.php?op=withdraw$id'>zurückziehen</a>";
allownav ("guildarena.php?op=withdraw$id");
}
if ($row[acctid2] > 0) {
$name2 = db_fetch_assoc (db_query ("SELECT name FROM accounts WHERE acctid = $row[acctid2]"));
$name2 = $name2['name'];
} else {
$name2 = "Niemand";
}
$out.= "<tr>
<td style='padding:3px 10px'>$guild1[gildenname]</td>
<td style='padding:3px 10px'>$guild2[gildenname]</td>
<td style='padding:3px 10px'>$name1</td>
<td style='padding:3px 10px'>$name2</td></tr>";
}
$out.= "</table>";
} else {
$out.= "Zur Zeit finden keine Kämpfe statt oder es gibt keine Angreifer";
}
break;
case "withdraw":
db_query ("UPDATE gvg SET acctid1 = 0 WHERE acctid1 = {$session['user']['acctid']} LIMIT 1");
if ($_REQUEST['id'] != "") {
$id= "&id=".$session['guild']['gildenid'];
} else {
$id = "";
}
redirect ("guildarena.php?op=showlist$id");
$session['user']['reputation']-=5;
$session['user']['charme']-=1;
break;
case "accept":
if (db_num_rows(db_query ("SELECT acctid2 FROM gvg
WHERE acctid1 = {$session['user']['acctid']}
OR acctid2 = {$session['user']['acctid']}"))) {
$out.= "Du hast dich bereits in eine Liste eingetragen. Du kannst nur an einem Gildenkampf gleichzeitig teilnehmen.";
} else {
$result = db_query ("SELECT acctid2 FROM gvg
WHERE acctid1 = $_REQUEST[acctid]
AND acctid2 > 0");
if (db_num_rows($result)) {
$row = db_fetch_assoc ($result);
$name = db_fetch_assoc (db_query ("SELECT name FROM accounts
WHERE acctid = $row[acctid1]"));
$out.= "$name[name] ist dir zuvorgekommen. Du hast bislang noch keinen Gegner für den Gildenkampf\n";
} else {
$temp = unserialize ($session[user][bufflist]);
if ($temp['mount'] != "") {
$mountbuff ['mount'] = $temp['mount'];
} else {
$mountbuff = array();
}
$mountbuff = addslashes(serialize ($mountbuff));
db_query ("UPDATE gvg SET
acctid2 = {$session['user']['acctid']},
name2 = '".addslashes($session['user']['name'])."',
lvl2 = {$session['user']['level']},
hp2 = {$session[user][hitpoints]},
maxhp2 = {$session[user][maxhitpoints]},
att2 = {$session[user][attack]},
def2 = {$session[user][defence]},
weapon2 = '".addslashes($session[user][weapon])."',
armor2 = '".addslashes($session[user][armor])."',
bufflist2 = '$mountbuff'
WHERE acctid1 = {$_REQUEST['acctid']}");
systemmail ($_REQUEST['acctid'],"Gildenkampf","{$session['user']['name']} hat deine Herausforderung angenommen. Gehe in die Gildenarena und kämpfe um die Ehre deiner Gilde");
$out.= "Du hast Dich eingetragen - nun kann der Kampf beginnen! Eine Nachricht wird an deinen Gegner geschickt.";
addnav ("zur Gildenarena","guildarena.php");
}
}
break;
case "fight":
$sql="SELECT * FROM gvg
WHERE acctid1=".$session[user][acctid]."
OR acctid2=".$session[user][acctid]."";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
if ($row[turn]==1){
$badguy = array("acctid"=>$row[acctid2],"guild"=>$row[guild2],"name"=>$row[name2],"level"=>$row[lvl2],"hitpoints"=>$row[hp2],"attack"=>$row[att2],"defense"=>$row[def2],"weapon"=>$row[weapon2],"armor"=>$row[armor2],"bufflist"=>$row[bufflist2]);
$goodguy = array("acctid"=>$row[acctid1],"guild"=>$row[guild1],"name"=>$row[name1],"level"=>$row[lvl1],"hitpoints"=>$row[hp1],"maxhitpoints"=>$row[maxhp1],"attack"=>$row[att1],"defense"=>$row[def1],"weapon"=>$row[weapon1],"armor"=>$row[armor1],"bufflist"=>$row[bufflist1]);
} elseif ($row[turn]==2){
$badguy = array("acctid"=>$row[acctid1],"guild"=>$row[guild1],"name"=>$row[name1],"level"=>$row[lvl1],"hitpoints"=>$row[hp1],"attack"=>$row[att1],"defense"=>$row[def1],"weapon"=>$row[weapon1],"armor"=>$row[armor1],"bufflist"=>$row[bufflist1]);
$goodguy = array("acctid"=>$row[acctid2],"guild"=>$row[guild2],"name"=>$row[name2],"level"=>$row[lvl2],"hitpoints"=>$row[hp2],"maxhitpoints"=>$row[maxhp2],"attack"=>$row[att2],"defense"=>$row[def2],"weapon"=>$row[weapon2],"armor"=>$row[armor2],"bufflist"=>$row[bufflist2]);
}
stats($row);
$adjustment=1;
$goodguy[bufflist]=unserialize($goodguy[bufflist]);
$badguy[bufflist]=unserialize($badguy[bufflist]);
if ($goodguy[hitpoints]>0 && $badguy[hitpoints]>0) {
$out.= "<h2>`\$Kampf`0</h2>";
$out.= "`@Du hast den Gegner `^$badguy[name]`@ entdeckt, der sich mit seiner Waffe `%$badguy[weapon]`@";

// Let's display what buffs the opponent is using - oh yeah
$buffs="";
$disp[bufflist]=$badguy[bufflist];
reset($disp[bufflist]);
while (list($key,$val)=each($disp[bufflist])) {
$buffs.=" `@und `#$val[name] `7($val[rounds] Runden)";
}
if (count($disp[bufflist])==0){
$buffs.=appoencode("");
}
$out.= "$buffs";
$out.= " `@auf dich stürzt!`0`n`n";
$out.= "`2Level: `6$badguy[level]`0`n";
$out.= "`2`bBeginn der Runde:`b`n";
$out.= "`2$badguy[name]`2's Lebenspunkte: `6$badguy[hitpoints]`0`n";
$out.= "`2DEINE Lebenspunkte: `6$goodguy[hitpoints]`0`n";
}
if (isset ($goodguy['bufflist'])) {
reset($goodguy['bufflist']);
}
while (list($key,$buff)=each($goodguy['bufflist'])){
$buff[used]=0;
}
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0){
$buffset = activate_buffs("roundstart");
$creaturedefmod=$buffset['badguydefmod'];
$creatureatkmod=$buffset['badguyatkmod'];
$atkmod=$buffset['atkmod'];
$defmod=$buffset['defmod'];
}
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0){
$adjustedcreaturedefense = $badguy[defense];
$creatureattack = $badguy[attack]*$creatureatkmod;
$adjustedselfdefense = ($goodguy[defense] * $adjustment * $defmod);
while($creaturedmg==0 && $selfdmg==0){
$atk = $goodguy[attack]*$atkmod;
if (e_rand(1,20)==1) $atk*=3;
$patkroll = e_rand(0,$atk);
$catkroll = e_rand(0,$adjustedcreaturedefense);
$creaturedmg = 0-(int)($catkroll - $patkroll);
if ($creaturedmg<0) {
$creaturedmg = (int)($creaturedmg/2);
$creaturedmg = round($buffset[badguydmgmod]*$creaturedmg,0);
}
if ($creaturedmg > 0) {
$creaturedmg = round($buffset[dmgmod]*$creaturedmg,0);
}
$pdefroll = e_rand(0,$adjustedselfdefense);
$catkroll = e_rand(0,$creatureattack);
$selfdmg = 0-(int)($pdefroll - $catkroll);
if ($selfdmg<0) {
$selfdmg=(int)($selfdmg/2);
$selfdmg = round($selfdmg*$buffset[dmgmod], 0);
}
if ($selfdmg > 0) {
$selfdmg = round($selfdmg*$buffset[badguydmgmod], 0);
}
}
}
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0){
$buffset = activate_buffs("offense");
if ($atk > $goodguy[attack]) {
if ($atk > $goodguy[attack]*3){
if ($atk>$godguy[attack]*4){
$out.= "`&`bDu holst zu einem <font size='+1'>MEGA</font> Powerschlag aus!!!`b`n";
}else{
$out.= "`&`bDu holst zu einem DOPPELTEN Powerschlag aus!!!`b`n";
}
}else{
if ($atk>$goodguy[attack]*2){
$out.= "`&`bDu holst zu einem Powerschlag aus!!!`b`0`n";
}elseif ($atk>$goodguy['attack']*1.25){
$out.= "`7`bDu holst zu einem kleinen Powerschlag aus!`b`0`n";
}
}
}
if ($creaturedmg==0){
$out.= "`4Du versuchst `^$badguy[name]`4 zu treffen, aber `\$TRIFFST NICHT!`n";
$message=$message."`^$goodguy[name]`4 versucht dich zu treffen, aber `\$TRIFFT NICHT!`n";
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0) process_dmgshield($buffset[dmgshield], 0);
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0) process_lifetaps($buffset[lifetap], 0);
}elseif ($creaturedmg<0){
$out.= "`4Du versuchst `^$badguy[name]`4 zu treffen, aber der `\$ABWEHRSCHLAG `4trifft dich mit `\$".(0-$creaturedmg)."`4 Schadenspunkten!`n";
$message=$message."`^$goodguy[name]`4 versucht dich zu treffen, aber dein `\$ABWEHRSCHLAG`4 trifft mit `\$".(0-$creaturedmg)."`4 Schadenspunkten!`n";
$badguy['diddamage']=1;
$goodguy[hitpoints]+=$creaturedmg;
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0) process_dmgshield($buffset[dmgshield],-$creaturedmg);
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0) process_lifetaps($buffset[lifetap],$creaturedmg);
}else{
$out.= "`4Du triffst `^$badguy[creaturename]`4 mit `^$creaturedmg`4 Schadenspunkten!`n";
$message=$message."`^$goodguy[name]`4 trifft dich mit `^$creaturedmg`4 Schadenspunkten!`n";
$badguy[hitpoints]-=$creaturedmg;
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0) process_dmgshield($buffset[dmgshield],-$creaturedmg);
if ($badguy[hitpoints]>0 && $goodguy[hitpoints]>0) process_lifetaps($buffset[lifetap],$creaturedmg);
}
// from hardest punch mod -- remove if not installed!!
if ($creaturedmg>$session[user][punch]){
$session[user][punch]=$creaturedmg;
$out.= "`@`b`c--- DAS WAR DEIN BISHER HÄRTESTER SCHLAG! ---`c`b`n";
}
// end hardest punch
}
if ($goodguy[hitpoints]>0 && $badguy[hitpoints]>0) $buffset = activate_buffs("defense");
expire_buffs();
if ($goodguy[hitpoints]>0 && $badguy[hitpoints]>0){
$out.= "`2`bEnde der Runde:`b`n";
$out.= "`2$badguy[name]`2's Lebenspunkte: `6$badguy[hitpoints]`0`n";
$out.= "`2DEINE Lebenspunkte: `6".$goodguy[hitpoints]."`0`n";
}

$goodguy[bufflist]=serialize($goodguy[bufflist]);
$badguy[bufflist]=serialize($badguy[bufflist]);
if ($row[acctid1]) { // battle still in DB? Result of round:
if ($badguy[hitpoints]>0 and $goodguy[hitpoints]>0){
$message=addslashes($message);
if ($row[turn]==1)
$sql = "UPDATE gvg SET hp1=$goodguy[hitpoints],hp2=$badguy[hitpoints],bufflist1='".addslashes($goodguy[bufflist])."',lastmsg='$message',turn=2 WHERE acctid1=".$session[user][acctid]."";
elseif ($row[turn]==2)
$sql = "UPDATE gvg SET hp1=$badguy[hitpoints],hp2=$goodguy[hitpoints],bufflist2='".addslashes($goodguy[bufflist])."',lastmsg='$message',turn=1 WHERE acctid2=".$session[user][acctid]."";
db_query($sql) or die(db_error(LINK));
if (db_affected_rows(LINK)<=0) {
$out.= "`\$Du wurdest von $badguy[name] besiegt!`0`n`n";
} else {
$out.= "<p>`2Du erwartest den Zug deines Gegners.`0</p>";
addnav("Aktualisieren","guildarena.php");
}
addnav ("Ausgang");
addnav("Zurück zum Gildenviertel","gildenstrasse.php");
}elseif ($badguy[hitpoints]<=0){
$exp=$badguy[level]*10-(abs($goodguy[level]-$badguy[level])*10);
if ($badguy[level]<=$goodguy[level]){
$session[user][battlepoints]+=2;
}else{
$session[user][battlepoints]+=3*($badguy[level]-$goodguy[level]);
}
$session[user][reputation]+=5;
$out.= "`n`&Kurz vor deinem finalen Todesstoß beendet der Schiedsrichter euren Kampf und erklärt dich zum Sieger!`0`n";
$out.= "`b`\$Du hast $badguy[name] `\$besiegt!`0`b`n";
$session['user']['donation']+=1;
$exp = round(getsetting("pvpdeflose",5)*10,0);
$session['user']['experience']+=$exp;
$sql = "UPDATE accounts SET charm=charm-1,experience=experience-$exp WHERE acctid=$badguy[acctid]";
db_query($sql);
$mailmessage = "`^$goodguy[name]`2 hat dich mit %p `^".$goodguy['weapon']."`2 in der Gildenarena besiegt!"
." `n`n%o hatte am Ende noch `^".$goodguy['hitpoints']."`2 Lebenspunkte übrig."
." `n`nDu hast `\$$exp`2 deiner Erfahrungspunkte verloren.";
addnav ("Ausgang");
addnav ("zurück zur Gildenarena","guildarena.php");
$mailmessage = str_replace("%p",($session['user']['sex']?"ihre(r/m)":"seine(r/m)"),$mailmessage);
$mailmessage = str_replace("%o",($session['user']['sex']?"Sie":"Er"),$mailmessage);
systemmail($badguy['acctid'],"`2Du wurdest in der Gildenarena besiegt",$mailmessage);
addnews("`\$$goodguy[name]`6 besiegt `\$$badguy[name]`6 bei einem Kampf in der `8Gildenarena`6!");
db_query ("UPDATE gilden_data SET value5 = value5 +1 WHERE gildenid = $goodguy[guild]");
$sql = "DELETE FROM gvg
WHERE (acctid1 = ".$goodguy[acctid]."
AND acctid2 = ".$badguy[acctid].")
OR (acctid1 = ".$badguy[acctid]."
AND acctid2 = ".$goodguy[acctid].")";
db_query($sql) or die(db_error(LINK));
}elseif ($goodguy[hitpoints]<=0){
$exp=$badguy[level]*10-(abs($goodguy[level]-$badguy[level])*10);
if ($badguy[level]>=$goodguy[level]){
$points=2;
}else{
$points=3*($goodguy[level]-$badguy[level]);
}
$sql = "SELECT taunt FROM taunts ORDER BY rand(".e_rand().") LIMIT 1";
$result = db_query($sql) or die(db_error(LINK));
$taunt = db_fetch_assoc($result);
$taunt = str_replace("%s",($session[user][sex]?"sie":"ihn"),$taunt[taunt]);
$taunt = str_replace("%o",($session[user][sex]?"sie":"er"),$taunt);
$taunt = str_replace("%p",($session[user][sex]?"ihr(e/n)":"sein(e/n)"),$taunt);
$taunt = str_replace("%x",($session[user][weapon]),$taunt);
$taunt = str_replace("%X",$badguy[weapon],$taunt);
$taunt = str_replace("%W",$badguy[name],$taunt);
$taunt = str_replace("%w",$session[user][name],$taunt);
$badguy[acctid]=(int)$badguy[acctid];
systemmail($badguy[acctid],"`2 du warst in der Gildenarena erfolgreich! ","`^".$session[user][name]."`2 hat in der Gildenarena verloren!`n`nDafür hast du `^$exp`2
Erfahrungspunkte erhalten!");
$sql = "UPDATE accounts SET experience=experience+$exp,donation=donation+1, battlepoints=battlepoints+$points,reputation=reputation+5 WHERE acctid=$badguy[acctid]";
db_query($sql);
$exp = round(getsetting("pvpdeflose",5)*10,0);
$session[user][experience]-=$exp;
$out.= "`n`b`&Du wurdest von `%$badguy[name]`& besiegt!!!`n";
$out.= "$taunt";
$out.= "`n`4Du hast `^$exp Erfahrungspunkte verloren!`n";
if ($session[user][charm]>0) $session[user][charm]--;
addnews("`\$$badguy[name]`6 besiegt `\$$goodguy[name]`6 bei einem Kampf in der `8Gildenarena`6!");
db_query ("UPDATE gilden_data SET value5 = value5 +1 WHERE gildenid = $goodguy[guild]");
$sql = "DELETE FROM gvg
WHERE (acctid1 = ".$goodguy[acctid]."
AND acctid2 = ".$badguy[acctid].")
OR (acctid1 = ".$badguy[acctid]."
AND acctid2 = ".$goodguy[acctid].")";
db_query($sql) or die(db_error(LINK));
}
}else{
$out.= "`6Euer Kampf wurde vorzeitig beendet. Die Nutzungsgebühr kommt dem Ausbau der Gildenarena zugute.";
} break;
break;
case "del":
$sql="UPDATE gvg SET acctid1 = 0, acctid2 = 0 WHERE acctid1=$_GET[kid1] AND acctid2=$_GET[kid2]";
db_query($sql);
$out.= "Du beendest einen langweiligen Kampf.";
systemmail($_GET[kid1],"`2Dein Arenakampf wurde beendet!","`@Dein Kampf in der Gildenarena wurde vom Kampfrichter beendet.");
systemmail($_GET[kid2],"`2Dein Arenakampf wurde beendet!","`@Dein Kampf in der Gildenarena wurde vom Kampfrichter beendet.");
addnav("Zur Gildenarena","guildarena.php"); break;
case "explanation":
include ("./builds/guildwar_explanation.php");
default:
$sql="SELECT * FROM gvg WHERE acctid1=".$session[user][acctid]." OR acctid2=".$session[user][acctid]."";
$result = db_query($sql) or die(db_error(LINK));
$row = db_fetch_assoc($result);
if($row[acctid1]==$session[user][acctid] && $row[turn]==1){
arenanav($row);
stats($row);
}elseif($row[acctid1]==$session[user][acctid] && $row[turn]==2 && $row[acctid2] > 0){
$out.= "<p>`6Dein Gegner `&$row[name2]`6 hat seinen Zug noch nicht gemacht.`0</p>";
stats($row);
addnav("Aktualisieren","guildarena.php");
addnav("Ausgang");
addnav("zurück zum Gildenviertel","gildenstrasse.php");
}elseif($row[acctid2]==$session[user][acctid] && $row[turn]==1){
$out.= "<p>`6Dein Gegner `&$row[name1]`6 hat seinen Zug noch nicht gemacht.`0</p>";
stats($row);
addnav("Aktualisieren","guildarena.php");
addnav("Ausgang");
addnav("zurück zum Gildenviertel","gildenstrasse.php");
}elseif($row[acctid2]==$session[user][acctid] && $row[turn]==2){
arenanav($row);
stats($row);
}else {
checkday();
$out.="<p>`6Du betrittst die kleine Arena im Gildenviertel. Sie ist ausschließlich den Kämpfen zwischen Mitgliedern unterschiedlicher Gilden vorbehalten.`0`n</p>\n";
$result = db_query ("SELECT gilden.gildenname AS name,gilden_data.gildenid,value2,value5 AS punkte FROM gilden_data
LEFT JOIN gilden ON gilden.gildenid = gilden_data.gildenid
WHERE name = 'diplomatie'
AND value4 = 1");
if (db_num_rows ($result)) {
$out.= "<p>Auf einer Tafel steht angeschlagen, welche Gilden sich derzeit im Krieg befinden:</p>
<table align='center'><tr>
<th style='padding:3px 10px'>Herausforderergilde</th>
<th style='padding:3px 10px'>Verteidigergilde</th>
<th style='padding:3px 10px'>Punktestand</th>
</tr>";
while ($angreifer = db_fetch_assoc ($result)) {
$verteidiger = db_fetch_assoc(db_query ("SELECT gilden.gildenname AS name,gilden.gildenid AS gildenid,value5 AS punkte
FROM gilden_data
LEFT JOIN gilden ON gilden.gildenid = gilden_data.gildenid
WHERE name = 'diplomatie'
AND gilden_data.gildenid = $angreifer[value2]
AND value2 = $angreifer[gildenid]"));
$out.= "<tr><td style='padding:3px 10px'>$angreifer[name]</td>
<td style='padding:3px 10px'>$verteidiger[name]</td>
<td style='padding:3px 10px'>$angreifer[punkte] : $verteidiger[punkte]</td></tr>";
if ($angreifer['punkte'] + $verteidiger['punkte'] == 3) {
if ($angreifer[punkte] >= 2) {
//angreifer hat gewonnen
$gewinner = $angreifer['gildenid'];
$verlierer = $verteidiger['gildenid'];
} else {
// angreifer hat verloren
$gewinner = $verteidiger['gildenid'];
$verlierer = $angreifer['gildenid'];
}
//und jetzt die grosse abrechnung...
$gewinn = db_fetch_assoc (db_query ("SELECT leaderid,gildenname,gold,gems,gildenpunkte FROM gilden WHERE gildenid = $verlierer"));
$gold = round ($gewinn['gold']*.1);
$gems = round ($gewinn['gems']*.1);
$gildenpunkte = round ($gewinn['gildenpunkte']*.1);

db_query ("UPDATE gilden SET gold = gold + $gold,gems = gems + $gems, gildenpunkte = gildenpunkte + $gildenpunkte WHERE gildenid = $gewinner");
db_query ("UPDATE gilden SET gold = gold - $gold,gems = gems - $gems, gildenpunkte = gildenpunkte - $gildenpunkte WHERE gildenid = $verlierer");
db_query ("UPDATE gilden_data SET value3 = 4,value4 = 0,value5 = 0
WHERE name = 'diplomatie'
AND ((gildenid = $gewinner
AND value2 = $verlierer)
OR (gildenid = $verlierer
AND value2 = $gewinner))");

addnews("Die Gilde $verlierer[name] wurde von $gewinner[name] in einem fairen Kampf in der Gildenarena besiegt. 10% des Gildenschatzes,
also $gold Gold, $gems Edelsteine und $gildenpunkte Gildenpunkte gingen an den Gewinner!");
//jetzt noch schnell nachrichten an die leader, zugegeben, die variable des verliers ist etwas seltsam
$gewinner = db_fetch_assoc (db_query ("SELECT leaderid,gildenname FROM gilden WHERE gildenid = $gewinner"));
systemmail ($gewinn['leaderid'],"Gildenkampf verloren!","Die Gilde $gewinner[gildenname] hat deine Gilde in einem fairen Kampf besiegt.`n
Bei der folgenden Plünderung hat Deine Gilde 10% ihres Gildenschatzes verloren.`n`n
Im Einzelnen handelt es sich hierbei um:`n
$gold Goldstücke`n
$gems Edelsteine und`n
$gildenpunkte Gildenpunkte`n`n
Vielleicht solltest Du $gewinner[gildenname] zum Kampf herausfordern, um die Schätze Deiner Gilde zurückzuholen?");
systemmail ($gewinner['leaderid'],"Gildenkampf gewonnen!","Die Gilde $gewinn[gildenname] hat in einem fairen Kampf verloren.`n
Bei der folgenden Plünderung hat Deine Gilde 10% ihres Gildenschatzes von $gewinn[gildenname] an sich gebracht.`n`n
Im Einzelnen handelt es sich hierbei um:`n
$gold Goldstücke`n
$gems Edelsteine und`n
$gildenpunkte Gildenpunkte`n`n
Sieh Dich vor, $gewinn[gildenname] könnte sich rächen wollen...");
} //wenn der krieg vorbei ist :-)
}
$out.= "</table>\n";
}
$sql="SELECT * FROM gvg WHERE acctid1 AND acctid2";
$result = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result)){
$out.="<p>Du beobachtest das bunte Treiben auf dem Platz eine Weile.</p>
<p>Folgende Krieger kämpfen gerade gegeneinander:</p>
<table border='0' cellpadding='3' cellspacing='0'><tr><td style='padding:3px 10px' align='center'>`bHerausforderer`b</td><td style='padding:3px 10px' align='center'>`bVerteidiger`b</td><td style='padding:3px 10px' align='center'>`bStand (LP)`b</td>".($session[user][superuser]>2?"<td style='padding:3px 10px'>Ops</td>":"")."</tr>";
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$out.="<tr class='".($i%2?"trlight":"trdark")."'><td style='padding:3px 10px'>$row[name1]</td><td style='padding:3px 10px'>$row[name2]</td><td style='padding:3px 10px'>$row[hp1] : $row[hp2]</td>".($session[user][superuser]>2?"<td style='padding:3px 10px'><a href='guildarena.php?op=del&kid1=$row[acctid1]&kid2=$row[acctid2]'>Löschen</a></td>":"")."</tr>";
if ($session[user][superuser]>2) addnav("","guildarena.php?op=del&kid1=$row[acctid1]&kid2=$row[acctid2]");
}
$out.="</table>`n`n";
}
output ($out,true);
$out = "";
viewcommentary("gvgarena","Rufen:",10,"ruft");
$result =db_query("SELECT newsdate,newstext FROM news WHERE newstext LIKE '%Gildenarena%' ORDER BY newsid DESC LIMIT 10");
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$out.="<p>$row[newsdate]: $row[newstext]</p>";
}
addnav ("Arenaverwaltung");
addnav("Listen einsehen","guildarena.php?op=showlist");
addnav ("Hinweistafel","guildarena.php?op=explanation");
addnav ("Ausgang");
addnav("Zurück zum Gildenviertel","gildenstrasse.php");
} //default hauptif
} //switch
output ($out,true);

page_footer();

// this is not the end ;)
?>
')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ideen & Wünsche
BeitragVerfasst: Do 09 Jul, 2009 22:07 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Wie wärs den mal mit der php / code Funktion? :roll:

Idee: Klingt recht schön.

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Ideen & Wünsche
BeitragVerfasst: Do 25 Aug, 2011 20:21 
Offline
Newbie

Registriert: Mi 16 Feb, 2011 22:00
Beiträge: 3
*ausgrab*

Was auch total cool wäre, wenn man im Geschenkeladen Geschenke auch im Namen des Knappen verschicken könnte. Bei den Geschenken ist ja oft der Name des Main eingebaut, damit sich der beschenkte erinnert, von wem das ist *g* Da aber viele oft den mehr Spielen als den Main.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 93 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 32 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:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum