Вторник, 26 Ноября 2024, 20:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
еше одна задумка модуля боя
DizelistДата: Суббота, 26 Февраля 2011, 22:01 | Сообщение # 1
частый гость
Сейчас нет на сайте
у меня такая задумка, может кто подскажет как реализовать...
есть параметры сила ловка вынос и (скорость ударов)
бой происходит не по принципу нажал ударил а удары наносятся по времени! допустим если у игрока1 скорость ударов = 6 то удар наносится каждые 6 сек а у игрока2 скорость ударов = 3 то он бьет каждые 3 сек! и так пока у одного из игроков не кончится жизнь!
возможно ли такое реализовать? подскажите,если можно в примерах!
DeadcowДата: Воскресенье, 27 Марта 2011, 21:03 | Сообщение # 2
был не раз
Сейчас нет на сайте
Ну что, разбиваешь бой на временную шкалу по 0.5 секунд, принимаешь этот интервал как "шаг" в бою. Высчитываешь на каком шагу кто будет наносить удар. По сути тебе не нужно знать на какой секунде кто нанес удар, тебе нужно знать только очередность. В общем не сложно, если знаешь основы программирования - формулу составить не составит труда, что на ЯваСкрипт, что на php.
Но тут у тебя возникнет проблема - очень часто удары двух игроков будут наноситься одновременно. Необходимо определить, чей удар засчитается первым, либо учитывать возможность ничьей (если ударив одновременно оба игрока умрут сразу). Определить очередность можно косвенно высчитывая исходя из уровня персонажа, ловкости, выностивости, и добавить рандома...

Добавлено (27.03.2011, 21:03)
---------------------------------------------
Только не понятно, бой происходит реалтайм или моментально выводится логом. Участвует ли в процессе игрок или автоматически высчитывается? В принципе всё это можно реализовать и довольно не сложно..

DizelistДата: Понедельник, 28 Марта 2011, 02:20 | Сообщение # 3
частый гость
Сейчас нет на сайте
долго мучился и написал вот такую ерунду)))
Code

<?
set_time_limit(0);
ob_implicit_flush();
echo str_repeat(" ", 200000)."<pre>"; flush();
include "conf.php";
$data = mysql_connect($base_name, $base_user, $base_pass);
mysql_select_db($db_name);
$my_id=$_POST['my_id'];
$pl_id=$_POST['pl_id'];

   
function now_time() {  
return date('H:i:s', time());  
}  

for($i=1; $i>=0; $i) { //цикл
  $query = "SELECT * FROM users WHERE id='".$my_id."'";  
  $result = mysql_query ($query) or die ("Ошибка получения ID".mysql_error());  
  $my_row = mysql_fetch_array($result);  
   
  $time_atack=$my_row['time_atack']; // скорость нанисения удара  
  $my_hp=$my_row['hp'];//мои жизни
  $my_dmg=10;//*rand(1, 3);//урон  
//--------------
  $query = "SELECT * FROM users WHERE id='".$pl_id."'";  
  $result = mysql_query ($query) or die ("Ошибка получения ID".mysql_error());  
  $pl_row = mysql_fetch_array($result);  
   
  $pl_hp=$pl_row['hp'];//жизни противника

   
if ($my_hp<=0) { //проверка
echo "вы мертвы";flush();
sleep(1);
break;
} elseif($pl_id==0) { //проверка
echo "нет цели<br/>";flush();
sleep(1);
//for($i=1; $i>=0; $i) { //цикл, ожидание выбора противника
//if($pl_id>=1) {
//break;  
//}
//}
} elseif ($pl_hp<=0) { //проверка
echo "противник мертв";flush();
sleep(1);
break;  
}

$now = time();
if ($now - $time_atack >= $start) {  
$pl_hp=$pl_hp-$my_dmg;
$query = mysql_query("UPDATE users SET hp='$pl_hp' WHERE id='$pl_id'");  
echo "мои жихни ".$my_hp."<br/>";flush();
echo "удар нанесен в ".now_time()." осталос жихни ".$pl_hp."<br/>";flush();
sleep(0.1);
$start = time();  
print ('<script> window.scrollBy(0,1000000)</script>');
}
    
}

?>

это в цикле и все очень глючит(
подскажи как это реализовать??

Quote (Deadcow)
Ну что, разбиваешь бой на временную шкалу по 0.5 секунд, принимаешь этот интервал как "шаг" в бою

я хочу зделать так чтоб не было очереди хода, а при начале боя они сразу бились (урон базовый+20 по рандому)...
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг