Главная » 2011 » Май » 29 » Своя RPG\TBS на GLScene. Часть 3. Описываем магию персонажа.
20:24
Своя RPG\TBS на GLScene. Часть 3. Описываем магию персонажа.

Теперь мы опишем магию персонажам, т.к. это пример то я упростил все. Вообще по идее нужно делать выбор цели, убирать привязку к игрокам т.е. вообще всю логику заклинаний надо перестроить. Но так как наш проект из разряда не очень сложно (например удивить друзей), то этого будет достаточно. Мы опишем всю магию для каждого персонажа по 2 набора , маг или паладин. Кстати советаю для интереса потавить в уроне небольшой разброс (например 10 - 15) , это можно сделать с помощью счетчика случайных чисел, random(6) и у нас будет 0...5. 
Сразу скажу часть я закомментировал лишнего уже в процессе написания статьи )))

В GLSceneViewer1MouseDown пишем:

     // Magic Player 1 Mage
if fNewGame=true then begin
 //if (Player1.Magic1Name='Thor_p1') or (Player1.Magic2Name='Thor_p1') or (Player1.Magic3Name='Thor_p1') or (Player1.Magic4Name='Thor_p1') then begin
  if (DCGUI.FindChild('DCPlayer1',true)).Visible=true then   begin
   if Player1.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Thor_p1',true))) then
      begin
       if Player1.Mana>=10 then begin
        Player1.Attack(10,Player2);
        Player1.Mana:=Player1.Mana-10;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;

        ThorFx.Target.X:=6;
        DCThor.Visible:=true;
        Timer1.Enabled:=true;
        ThorFx.Vibrate:=0;
       end;
    end;
   end;
 end;
 end;
// end;

 if fNewGame=true then begin
 // if (Player1.Magic1Name='Volcano_p1') or (Player1.Magic2Name='Volcano_p1') or (Player1.Magic3Name='Volcano_p1') or (Player1.Magic4Name='Volcano_p1') then begin
  if (DCGUI.FindChild('DCPlayer1',true)).Visible=true then   begin
   if Player1.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Volcano_p1',true))) then
      begin
       if Player1.Mana>=20 then begin
        Player1.Attack(20,Player2);
        Player1.Mana:=Player1.Mana-20;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;

        DCVolcano.Position.X:=6;
        Timer1.Enabled:=true;
        DCVolcano.Visible:=true;
        TGLSourcePFXEffect(DCVolcano.Effects[0]).PositionDispersion:=0.5;
       end;
    end;
    end;
    end;
   end;
// end;

 if fNewGame=true then begin
//  if (Player1.Magic1Name='Flesh_p1') or (Player1.Magic2Name='Flesh_p1') or (Player1.Magic3Name='Flesh_p1') or (Player1.Magic4Name='Flesh_p1') then begin
  if (DCGUI.FindChild('DCPlayer1',true)).Visible=true then   begin
   if Player1.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Flesh_p1',true))) then
      begin
       if Player1.Mana>=30 then begin
        Player1.Attack(30,Player2);
        Player1.Mana:=Player1.Mana-30;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;

        ThorFx.Target.X:=6;
        DCThor.Visible:=true;
        Timer1.Enabled:=true;
        ThorFx.Vibrate:=2;
       end;
     end;
     end;
    end;
   end;
// end;        

 if fNewGame=true then begin
// if (Player1.Magic1Name='HellTornado_p1') or (Player1.Magic2Name='HellTornado_p1') or (Player1.Magic3Name='HellTornado_p1') or (Player1.Magic4Name='HellTornado_p1') then begin
  if (DCGUI.FindChild('DCPlayer1',true)).Visible=true then   begin
   if Player1.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('HellTornado_p1',true))) then
      begin
       if Player1.Mana>=40 then begin
        Player1.Attack(40,Player2);
        Player1.Mana:=Player1.Mana-40;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;

        DCVolcano.Position.X:=6;
        Timer1.Enabled:=true;
        DCVolcano.Visible:=true;
        TGLSourcePFXEffect(DCVolcano.Effects[0]).PositionDispersion:=0;
       end;
     end;
    end;
   end;
 end;
// end;


  //Magic Player 1 paladin

   if  Player1.PlayerType='Paladin' then begin
    if (DCGUI.FindChild('DCPlayer1',true)).Visible=true then   begin
   if Player1.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Hammer_p1',true))) then
      begin
       if Player1.Mana>=10 then begin
        Player2.Health:=Player2.Health-10;
        Player1.Mana:=Player1.Mana-10;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;

       end;
    end;
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Shield_p1',true))) then
      begin
       if Player1.Mana>=20 then begin
         
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;


       end;
    end;
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Burning_p1',true))) then
      begin
       if Player1.Mana>=30 then begin
        Player2.Health:=Player2.Health-30;
        Player1.Mana:=Player1.Mana-40;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;

        DCVolcano.Position.X:=6;
        Timer1.Enabled:=true;
        DCVolcano.Visible:=true;
        TGLSourcePFXEffect(DCVolcano.Effects[0]).PositionDispersion:=0;
       end;
    end;
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer1',true)).FindChild('Spirit_p1',true))) then
      begin
       if Player1.Mana>=40 then begin
        Player1.Health:=Player1.Health+40;

        Player1.Mana:=Player1.Mana-40;
        Player1.EndHod:=true;
        Player2.EndHod:=false;

           ShowTurnSprite;


       end;
    end;


     end;
  end;
 end;
  // Magic Player 2 Paladin

 
   if  Player2.PlayerType='Paladin' then begin
    if (DCGUI.FindChild('DCPlayer2',true)).Visible=true then   begin
   if Player2.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Hammer_p2',true))) then
      begin
       if Player2.Mana>=10 then begin
        Player1.Health:=Player1.Health-10;
        Player2.Mana:=Player2.Mana-10;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;

       end;
    end;
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Shield_p2',true))) then
      begin
       if Player2.Mana>=20 then begin

        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;


       end;
    end;
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Burning_p2',true))) then
      begin
       if Player2.Mana>=30 then begin
        Player1.Health:=Player1.Health-30;
        Player2.Mana:=Player2.Mana-40;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;

        DCVolcano.Position.X:=1;
        Timer1.Enabled:=true;
        DCVolcano.Visible:=true;
        TGLSourcePFXEffect(DCVolcano.Effects[0]).PositionDispersion:=0;
       end;
    end;
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Spirit_p2',true))) then
      begin
       if Player2.Mana>=40 then begin
        Player2.Health:=Player2.Health+40;

        Player2.Mana:=Player2.Mana-40;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;


       end;
    end;


     end;
  end;
 end;


   //Magic Player 2 mage

if fNewGame=true then begin
 //if (Player1.Magic1Name='Thor_p1') or (Player1.Magic2Name='Thor_p1') or (Player1.Magic3Name='Thor_p1') or (Player1.Magic4Name='Thor_p1') then begin
  if (DCGUI.FindChild('DCPlayer2',true)).Visible=true then   begin
   if Player2.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Thor_p2',true))) then
      begin
       if Player2.Mana>=10 then begin
        Player2.Attack(10,Player1);
        Player2.Mana:=Player2.Mana-10;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;

        ThorFx.Target.X:=1;
        DCThor.Visible:=true;
        Timer1.Enabled:=true;
        ThorFx.Vibrate:=0;
       end;
    end;
   end;
 end;
 end;
// end;

 if fNewGame=true then begin
 // if (Player1.Magic1Name='Volcano_p1') or (Player1.Magic2Name='Volcano_p1') or (Player1.Magic3Name='Volcano_p1') or (Player1.Magic4Name='Volcano_p1') then begin
  if (DCGUI.FindChild('DCPlayer2',true)).Visible=true then   begin
   if Player2.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Volcano_p2',true))) then
      begin
       if Player2.Mana>=20 then begin
        Player2.Attack(20,Player1);
        Player2.Mana:=Player2.Mana-20;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;

        DCVolcano.Position.X:=1;
        Timer1.Enabled:=true;
        DCVolcano.Visible:=true;
        TGLSourcePFXEffect(DCVolcano.Effects[0]).PositionDispersion:=0.5;
       end;
    end;
    end;
    end;
   end;
// end;

 if fNewGame=true then begin
//  if (Player1.Magic1Name='Flesh_p1') or (Player1.Magic2Name='Flesh_p1') or (Player1.Magic3Name='Flesh_p1') or (Player1.Magic4Name='Flesh_p1') then begin
  if (DCGUI.FindChild('DCPlayer2',true)).Visible=true then   begin
   if Player2.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('Flesh_p2',true))) then
      begin
       if Player2.Mana>=30 then begin
        Player2.Attack(30,Player1);
        Player2.Mana:=Player2.Mana-30;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;

        ThorFx.Target.X:=1;
        DCThor.Visible:=true;
        Timer1.Enabled:=true;
        ThorFx.Vibrate:=2;
       end;
     end;
     end;
    end;
   end;
// end;        

 if fNewGame=true then begin
// if (Player1.Magic1Name='HellTornado_p1') or (Player1.Magic2Name='HellTornado_p1') or (Player1.Magic3Name='HellTornado_p1') or (Player1.Magic4Name='HellTornado_p1') then begin
  if (DCGUI.FindChild('DCPlayer2',true)).Visible=true then   begin
   if Player2.EndHod=false then begin
    if ClickOnSprite(x,y,TGLHudSprite((DCGUI.FindChild('DCPlayer2',true)).FindChild('HellTornado_p2',true))) then
      begin
       if Player2.Mana>=40 then begin
        Player2.Attack(40,Player1);
        Player2.Mana:=Player2.Mana-40;
        Player2.EndHod:=true;
        Player1.EndHod:=false;

           ShowTurnSprite;

        DCVolcano.Position.X:=1;
        Timer1.Enabled:=true;
        DCVolcano.Visible:=true;
        TGLSourcePFXEffect(DCVolcano.Effects[0]).PositionDispersion:=0;
       end;
     end;
    end;
   end;
 end;

Категория: Статьи | Просмотров: 464 | Добавил: De:Light | Теги: Paladin, TBS, GLScene, RPG, mage, DELPHI | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вы вошли как: Гость
12:54
Вы вошли как: Гость
Календарь
«  Май 2011  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Категории
Новости [11]
Статьи [23]
GLscene,Web Design,IT,etc...
Счетчик

Онлайн всего: 1
Гостей: 1
Пользователей: 0