Spiel: wkFight

Infos zu Spielen, Bots und Tools.
1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: wkFight

Ungelesener Beitrag von 1. FC Keller » 17.11.2010, 14:21

Ich habe eben den Code so editiert, dass man wieder im Chat schreiben kann während man die Sperre hat.
Wenn man /fight eingibt wird in der Eingabezeile angezeigt wieviele Sekunden man noch gesperrt ist.

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: wkFight

Ungelesener Beitrag von 1. FC Keller » 17.11.2010, 16:22

Ich habe das Script eben um eine HP- und eine Cooldown-Anzeige in der Onlineliste erweitert. Da ich nur im Firefox testen konnte habe ich die Version im ersten Post noch nicht ersetzt. Das folgt sobald ich weiß dass es in den anderen Browsern auch klappt.
Script:Zeigen

Code: Alles auswählen

var fightRaum="fight";
var fightKoRaum="hauptchat"; // hier hin wird man geschoben wenn man KO ist.
var fightDefaultHP=200;
var fightBefehl="/fight";
var fightCoolColor="#0000ff";
var fightHPColor="#ff0000";
var fightWeapons={
  faust:{hp:10, timeout:2500},
  schlag:{hp:9, timeout:2000},
  tritt:{hp:15, timeout:3000},
  hammer:{hp:30, users:["dg", "moni"], timeout:6000},
  atombombe:{hp:3000, users:["dg"], timeout:60000}
}

//feste Variablen des Scripts. Nicht aendern!
var fightLastRoom="";
var fightHP={};
var fightCooldown={};

function fightBefehlsAuswertung(eingabe, sender){
  if(getRoom()!=fightRaum){
    document.write("das Fight-Spiel funktioniert nur im Raum <a href='javascript:sendeText(\"/join "+fightRaum+"\")'>"+fightRaum+"</a>.");
  }
  eingabe=strip_tags(eingabe).split(" ");
  sender=strip_tags(sender);
  var weapon=eingabe[0].toLowerCase();
  if(weapon=="start"){
    if(eingabe.length==1){
      document.write("tritt dem Spiel mit "+fightDefaultHP+" HP bei.");
      if(myNick==sender)fightHP={}; //ggf. leeren falls noch daten von einer frueheren runde vorhanden sind.
      fightHP[sender.toLowerCase()]=fightDefaultHP;
      fightViewHP(sender.toLowerCase());
      if(sender!=myNick)sendeText(fightBefehl+" start "+myNick+" "+fightHP[myNick.toLowerCase()]);
    }else if(sender==eingabe[1]){
      if(typeof(fightHP[sender.toLowerCase()])=="undefined"){
    fightHP[sender.toLowerCase()]=eingabe[2];
    fightViewHP(sender.toLowerCase());
      }
      hideLine();
    }
  }else if(fightWeapons[weapon]){ // z.B. /fight hammer DG
    if(typeof(fightWeapons[weapon].users)!="undefined" && !fightWeapons[weapon].users.inArray(sender.toLowerCase()))document.write("hat versucht "+eingabe[0]+" zu verwenden.");
    else{//user darf waffe verwenden
      var nick=eingabe[1].toLowerCase();
      document.write("bek&auml;mpft "+eingabe[1]+" mit "+eingabe[0]);
      fightHP[nick]-=fightWeapons[weapon].hp;
      fightViewHP(nick);
      if(fightHP[nick]<=0){
   document.write("<br>"+nick+" geht K.O.");
   if(myNick.toLowerCase()==nick){
          sendeText("/join "+fightKoRaum);
          fightHP={};
        }
      }else{
   document.write(". &Uuml;brige HP: "+fightHP[nick]);
      }
      
      if(typeof(fightWeapons[weapon].timeout)!="undefined"){
    if(myNick==sender)blockFight((new Date()).getTime()+fightWeapons[weapon].timeout);
    fightCooldown[sender]=[(new Date()).getTime(), fightWeapons[weapon].timeout];
      }
    }
  }else{
    document.write("kein gueltiger Befehl eingegeben:"+eingabe[0].toLowerCase());
  }
}

function startFight(){
  fightHP[myNick]=fightDefaultHP;
}

function fightCheckRoom(){
  var thisRoom=getRoom();
  if(fightLastRoom!=thisRoom){
    if(thisRoom.toLowerCase()==fightRaum.toLowerCase())sendeText(fightBefehl+" start");
    fightLastRoom=thisRoom;
  }
}

function hideLine(){
  tbls=document.getElementsByTagName("table");
  tbls[tbls.length-1].style.display="none";
}

function blockFight(until){
  if((new Date()).getTime()<=until){
    setTimeout("blockFight("+until+")", 50);
    with(parent.info.document.eingabe.message){
      if(value.match(fightBefehl))value="Fight-Befehl geblockt für "+((until-(new Date()).getTime())/1000)+" Sekunden";
    }
  }else parent.info.document.eingabe.message.value="";
}

function fightCooldownFunc(){
  var now=(new Date()).getTime();
  var s, p, i;
  for(i in fightCooldown){
    if(now>=fightCooldown[i][0]+fightCooldown[i][1]){
      fightViewCool(i, 0);
      delete fightCooldown[i];
    }else{
      s=now-fightCooldown[i][0];
      p=s*100/fightCooldown[i][1];
      fightViewCool(i, parseInt(100-p));
    }
  }
  setTimeout(fightCooldownFunc,50);
}

function fightViewCool(n, p){
  var pNode, coolBar;
  if(coolBar=parent.rightFrame.document.getElementById("fightCool_"+n)){
    coolBar.style.width=p+'%';
  }else if(pNode=parent.rightFrame.document.getElementById(n)){
    coolBar=parent.rightFrame.document.createElement("div");
    coolBar.id="fightCool_"+n;
    coolBar.style.backgroundColor=fightCoolColor;
    coolBar.style.width=p+'%';
    coolBar.style.height='5px';
    pNode.appendChild(coolBar);
  }//else alert("Div nicht gefunden!");
}

function fightViewHP(n){
  var pNode, hpBar, hp, p;
  hp=fightHP[n];
  n1=getNickCase(n);
  p=parseInt(hp*100/fightDefaultHP);
  if(hpBar=parent.rightFrame.document.getElementById("fightHP_"+n1)){
    hpBar.style.width=p+'%';
  }else if(pNode=parent.rightFrame.document.getElementById(n1)){
    pNode.style.width='150px';
    hpBar=parent.rightFrame.document.createElement("div");
    hpBar.id="fightHP_"+n1;
    hpBar.style.backgroundColor=fightHPColor;
    hpBar.style.width=p+'%';
    hpBar.style.height='5px';
    pNode.appendChild(hpBar);
  }//else alert("Div nicht gefunden!");
}

function getNickCase(nick){
  nick=nick.toLowerCase();
  var ol=parent.rightFrame.document.getElementsByTagName("div");
  var i;
  for(i=0;i<ol.length;i++){
    if(ol[i].id && ol[i].id.toLowerCase()==nick)return ol[i].id;
  }
  //alert("nick "+nick+" nicht gefunden!");
}

fightCooldownFunc();
window.setInterval(fightCheckRoom, 550);
Neu sind unter anderem diese beuden Zeilen:

Code: Alles auswählen

var fightCoolColor="#0000ff";
var fightHPColor="#ff0000";
Dort könnt ihr einstellen welche Farben die beiden Balken haben.

Jetzt sieht das schon fast nach einem richtigen beat'em up aus :-)

Maxs
Moderator
Beiträge: 551
Registriert: 09.10.2008, 18:21
Kontaktdaten:

Re: Spiel: wkFight

Ungelesener Beitrag von Maxs » 17.11.2010, 17:19

Im IE klappt es einigermaßen, wenn man wieder nach der Waffe atombombe im Script das Komma entfernt :P
Nur manchmal kann es vorkommen, dass man eine Person nicht "verletzten" kann. Dann steht im Chat nur
[User1] verletzt [User2] mit [Waffe].
User1 und User2 werden entsprechend mit den Usern ersetzt und Waffe mit der entsprechenden Waffe. Das geht solange dann nicht, bis User2 mal wieder /fight start schreibt.
Außerdem wenn jemand neu hinzu kommt, dann steht im Chat der Name des Users, der schon im Raum ist. Ich denke, dass ist dazu da, um dem neuen User den Status mitzuteilen, aber das könnte man ja unischtbar machen ;)
Die Balken funktionieren Perfekt ;)
Wäre es nicht adäquat, den Usus heterogener Termini zu minimieren?

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: wkFight

Ungelesener Beitrag von 1. FC Keller » 17.11.2010, 21:11

Das mit dem Komma und der leeren Zeile ist korrigiert.

Ich habe inzwischen in IE8 und Opera auch nochmal testen können und es schien soweit zu laufen. Daher habe ich das Script auf der ersten Seite des Threads nun durch die aktuelle Verison mit den

nitnelav
Beiträge: 11
Registriert: 09.06.2010, 16:37

Re: Spiel: wkFight

Ungelesener Beitrag von nitnelav » 21.11.2010, 19:28

cool,dass du das fight spiel verbessert hast ;)

Allerdings klappt es bei mir jetzt irgendwie nicht mehr... Wenn ich jetzt in den kampfraum gehe,kommt auch nicht mehr: nitnelav tritt dem Spiel mit 200 HP bei

Was könnte ich denn falsch gemacht haben? ^^

Wäre cool,wenn du / ihr mir helfen könntet o.o

Danke!

mfG nitnelav

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Spiel: wkFight

Ungelesener Beitrag von 1. FC Keller » 21.11.2010, 21:39

Eine geschweifte Klammer hatte gefehlt. Wenn du den Code von der ersten Seite nochmal kopierst sollte es klappen.

nitnelav
Beiträge: 11
Registriert: 09.06.2010, 16:37

Re: Spiel: wkFight

Ungelesener Beitrag von nitnelav » 21.11.2010, 21:52

vielen dank :D es klappt jetzt...
nur irgendwie wird der gegner nicht besiegt,wenn man die atombombe benutzt o.o

EDIT: Mir ist aufgefallen,dass das nicht nur bei Atombombe ist ,sondern man kann schlicht und einfach keinen besiegen...

Lkwmonster
Beiträge: 85
Registriert: 15.01.2012, 10:29
Wohnort: In einem kleinen Bergbaudorf in China wo Kinder schon mit 5 Jahren in einem Bergbau arbeiten müssen.
Kontaktdaten:

Re: Spiel: wkFight

Ungelesener Beitrag von Lkwmonster » 07.03.2012, 19:42

Hallo,
ich habe jetzt ein problem das wenn man in den Raum geht, garnichts angezeigt wird, habe nochmal geguckt, ich habe alles richtig eingegeben trotzdem nichts zu sehen, kann mir jemand helfen?
MfG Lkwmonster
MfG
Lkwmonster

Antworten

Wer ist online?

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