Короче народ мне надоело ждать ! Как я понял Ассасин не доделает уроки!
Короче вот вам бой!
С ВАС +СЫ☺☺☻☻
Надеюсь разрабы Блиц Скулл простят меня т.к некоторые материалы взяты у них)☺☻☺☺☻☻
/*Справочник зон! ну куда бить будем☺*/
CREATE TABLE `body_zones` (
`BZ_ID` SMALLINT(1) unsigned NOT NULL DEFAULT 0,
`BZ_NAME` CHAR(20) NOT NULL DEFAULT '',
PRIMARY KEY (`BZ_ID`)
) TYPE=MyISAM;
INSERT INTO body_zones(BZ_ID,BZ_NAME) values(1,'Голова');
INSERT INTO body_zones(BZ_ID,BZ_NAME) values(2,'Торс');
INSERT INTO body_zones(BZ_ID,BZ_NAME) values(3,'Пояс');
INSERT INTO body_zones(BZ_ID,BZ_NAME) values(4,'Ноги');
CREATE TABLE `battle` (
`BAT_ID` BIGINT unsigned NOT NULL auto_increment, /*ID поединка*/
`USER1_ID` bigint(20), /*ID 1 игрока*/
`USER2_ID` bigint(20), /*ID 2 игрока*/
`TIMEOUT` SMALLINT(2), /*Таймаут*/
`STARTTIME` DATETIME, /*время начала поединка*/
`M1` SMALLINT(1) unsigned NOT NULL DEFAULT 0, /*Ход первого*/
`M2` SMALLINT(1) unsigned NOT NULL DEFAULT 0, /*Ход второго*/
`LASTMOVE` DATETIME, /*время последнего хода*/
`STATUS` SMALLINT(1), /*статус поединка 1-идет,2-завершен*/
PRIMARY KEY (`BAT_ID`)
) TYPE=MyISAM;
/* Таблица детализации поединка один на один */
CREATE TABLE `battledetails` (
`BATDET_ID` BIGINT unsigned NOT NULL auto_increment, /*ID строчки хода*/
`BAT_ID` BIGINT unsigned NOT NULL DEFAULT 1, /*ID поединка*/
`USERID` bigint(20), /*ID игрока сделавшего ход*/
`ATTACK` SMALLINT(1) unsigned NOT NULL DEFAULT 0, /*Зона атаки*/
`DEFEND` SMALLINT(1) unsigned NOT NULL DEFAULT 0, /*Зона защиты*/
`MESSAGE` CHAR(255) NOT NULL DEFAULT '', /*Описание действия*/
PRIMARY KEY (`BATDET_ID`)
) TYPE=MyISAM;
// узнаем каким номером мы находимсяя в строке боя 1 или 2, кто наш противник
// и кто уже успел сделать ход ?
$query = "SELECT BAT_ID,CHAR1_NAME,CHAR2_NAME,M1,M2 FROM battle WHERE CHAR1_NAME='$aNickName' OR CHAR2_NAME='$aNickName'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aBattleID = $aRow["BAT_ID"];
$aChar1 = $aRow["CHAR1_NAME"];
$aChar2 = $aRow["CHAR2_NAME"];
$aMove1 = $aRow["M1"];
$aMove2 = $aRow["M2"];
// определим некоторые параметры 1 и 2
// 1
$query = "SELECT * FROM users WHERE Nick_Name='$aChar1'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aStrength1 = $aRow["Character_Strength"];
$aEndurance1 = $aRow["Character_Endurance"];
$aCurHealth1 = $aRow["Character_CurHealth"];
// 2
$query = "SELECT * FROM users WHERE Nick_Name='$aChar2'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aStrength2 = $aRow["Character_Strength"];
$aEndurance2 = $aRow["Character_Endurance"];
$aCurHealth2 = $aRow["Character_CurHealth"];
if ( $aNickName == $aChar1 ){ // Мы под первым номером $aShowEndurance1 = $aEndurance1;
$aShowHealth1 = $aCurHealth1;
$aShowEndurance2 = $aEndurance2;
$aShowHealth2 = $aCurHealth2;
$aOrder = 1;
$aOpponentNick = $aChar2;
// Проверим походил ли соперник
if (($aMove1 == 1) & ($aMove2 == 0)){
print('<SCRIPT>location.href="wait.phtml?NickName='.$aNickName.'&bat_id='.$aBattleID.'";</SCRIPT>');
}
if ($aMove1 == 0){
// мы не делали ход, делаем его сейчас!
if (!empty($_POST['attack'])) {
$aAttack = $_POST['attack'];
$aDefend = $_POST['defend'];
$query = "INSERT INTO battledetails (BAT_ID,CHAR_NAME,ATTACK,DEFEND) values ($aBattleID,'$aNickName',$aAttack,$aDefend)";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
// установим флаг хода для 1 игрока
$query = "UPDATE battle set M1=1 where CHAR1_NAME='$aNickName'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
print('<SCRIPT>location.href="battle.phtml?NickName='.$aNickName.'";</SCRIPT>');
}
}
if (($aMove1 == 1) & ($aMove2 == 1)){ // расчитываем damage для обоих персонажей
CalcDamage($aChar1,$aChar2,$aBattleID); // считаем повреждения
print('<SCRIPT>location.href="battle.phtml?NickName='.$aNickName.'";</SCRIPT>');
}
} else { ....
function CalcDamage($aChar1,$aChar2,$aBattleID){
// обнуляем флаги ходов игроков
$query = "UPDATE battle set M1=0, M2=0 where BAT_ID=$aBattleID";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
// параметры 1 игрока
$query = "SELECT * FROM users WHERE Nick_Name='$aChar1'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aStrength1 = $aRow["Character_Strength"];
$aCharLevel = $aRow["Character_Level"];
$aCurHealth1 = $aRow["Character_CurHealth"];
// параметры 2 игрока
$query = "SELECT * FROM users WHERE Nick_Name='$aChar1'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aStrength2 = $aRow["Character_Strength"];
$aCharLevel2 = $aRow["Character_Level"];
$aCurHealth2 = $aRow["Character_CurHealth"];
// кто куда ударил и что блокировал
// первый игрок
$query = "select * from battledetails WHERE CHAR_NAME='$aChar1' order by batdet_id DESC limit 1";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aAttack1 = $aRow["ATTACK"];
$aDefend1 = $aRow["DEFEND"];
// второй игрок
$query = "select * from battledetails WHERE CHAR_NAME='$aChar2' order by batdet_id DESC limit 1";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$aRow = mysql_fetch_array( $result);
$aAttack2 = $aRow["ATTACK"];
$aDefend2 = $aRow["DEFEND"];
// считаем повреждения, с учетом блоков
// куда бил игрок 1 и что блокировал игрок 2 ?
if ( ! Blocked($aAttack1,$aDefend2) ){
$aCurHealth2 = $aCurHealth2 - $aStrength1;
$aCurHealth2 = $aCurHealth2 < 0 ? 0 : $aCurHealth2;
$query = "UPDATE users set Character_CurHealth=$aCurHealth2 where Nick_Name='$aChar2'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
}
// куда бил игрок 2 и что блокировал игрок 1 ?
if ( ! Blocked($aAttack2,$aDefend1) ){
$aCurHealth1 = $aCurHealth1 - $aStrength2;
$aCurHealth1 = $aCurHealth1 < 0 ? 0 : $aCurHealth1;
$query = "UPDATE users set Character_CurHealth=$aCurHealth1 where Nick_Name='$aChar1'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
}
}
function Blocked($a,$d){
$def = array(1=>'12',2=>'23',3=>'34',4=>'41');
if( strpos($def[$d],$a) === false ){
$retv = false;
}else{
$retv = true;
}
return ($retv);
}
ВОТ ну както так )Думаю ошибки есть ну всерано хоть чтото ☺ Это бой ПВП А НЕ МОБОВСКИХ ХОТЯ МОЖНО ПОДРЕДАКТИРОВАТЬ И БУДЕТ МОБОВСКИЙ!!!