Выносливость

Description: Уроки по скриптингу
Moderator: SJplayer

Aleksandr M
Topic author, Модератор
Модератор
Avatar
Aleksandr M
Topic author, Модератор
Модератор
Posts: 55
Joined: 4 Jun 2013
With us: 11 years 6 months

#1by Aleksandr » 22 Jul 2013, 19:23

Выносливость
Автор <BaRReT[T]>

  • При ходьбе/беге увеличивается усталось и растет выносливость
  • Скорость усталости зависит от того как вы бегаете/ходите
  • Если усталость заполнена, то активируется анимка усталости и игрока замораживает пока он не отдохнет

Ко всем переменным:

Code: Select all

new Float:Vin[MAX_PLAYERS];
new 
Float:MaxVin[MAX_PLAYERS];
new 
VinTimer;
new 
Text:Textdraw0[MAX_PLAYERS];
new 
Text:Textdraw1[MAX_PLAYERS]; 


К форвардам:

Code: Select all

forward Vint(); 


В OnPlayerConnect:

Code: Select all

    Vin[playerid] = 100.0;
    
MaxVin[playerid] = 100.0;
    
Textdraw0[playerid] = TextDrawCreate(611.000000104.000000"1");
    
TextDrawBackgroundColor(Textdraw0[playerid], 255);
    
TextDrawFont(Textdraw0[playerid], 1);
    
TextDrawLetterSize(Textdraw0[playerid], 0.0000000.599999);
    
TextDrawColor(Textdraw0[playerid], -1);
    
TextDrawSetOutline(Textdraw0[playerid], 0);
    
TextDrawSetProportional(Textdraw0[playerid], 1);
    
TextDrawSetShadow(Textdraw0[playerid], 1);
    
TextDrawUseBox(Textdraw0[playerid], 1);
    
TextDrawBoxColor(Textdraw0[playerid], 255);
    
TextDrawTextSize(Textdraw0[playerid], 494.0000000.000000);

    
Textdraw1[playerid] = TextDrawCreate(609.000000107.000000"1");
    
TextDrawBackgroundColor(Textdraw1[playerid], 255);
    
TextDrawFont(Textdraw1[playerid], 1);
    
TextDrawLetterSize(Textdraw1[playerid], 0.000000, -0.000000);
    
TextDrawColor(Textdraw1[playerid], -1);
    
TextDrawSetOutline(Textdraw1[playerid], 0);
    
TextDrawSetProportional(Textdraw1[playerid], 1);
    
TextDrawSetShadow(Textdraw1[playerid], 1);
    
TextDrawUseBox(Textdraw1[playerid], 1);
    
TextDrawBoxColor(Textdraw1[playerid], 1263225855);
    
TextDrawTextSize(Textdraw1[playerid], 496.000000, -2.000000);
    
TextDrawHideForPlayer(playerid,Textdraw0[playerid]);
    
TextDrawHideForPlayer(playerid,Textdraw1[playerid]); 


В OnPlayerSpawn:

Code: Select all

    TextDrawShowForPlayer(playerid,Textdraw0[playerid]);
    
TextDrawShowForPlayer(playerid,Textdraw1[playerid]); 


В OnGameModeInit:

Code: Select all

    VinTimer SetTimer("Vint",10,1); 


В OnGameModeExit:

Code: Select all

    KillTimer(VinTimer); 


Сам паблик выносливости в конец мода:

Code: Select all

public Vint()
{
    new 
al[32];
     new 
an[32];
    for(new 
i=0;i<MAX_PLAYERS;i++)
    {
        if(!
IsPlayerConnected(i)) continue;
        
TextDrawHideForPlayer(i,Textdraw1[i]);
        
TextDrawTextSize(Textdraw1[i], 496+109/MaxVin[i]*Vin[i], -2.0);
        
TextDrawShowForPlayer(i,Textdraw1[i]);
        if(!
GetPlayerSpeed(i) && MaxVin[i] > Vin[i]) Vin[i] += 0.01;
        if(
GetPVarInt(i,"Ustal"))
        {
            if(
Vin[i] >= 10)
            {
                
TogglePlayerControllable(i,1);
                
ClearAnimations(i);
                
SetPVarInt(i,"Ustal",0);
            }
            else continue;
        }
        if(!
strcmp(al,"PED") && !strcmp(an,"RUN_PLAYER"))
          {
              if(
GetPlayerSpeed(i) > 130)
              {
                  if(
Vin[i] < 0.05)
                  {
                      
TogglePlayerControllable(i,0);
                      
SetPVarInt(i,"Ustal",1);
                       
ApplyAnimation(i,"FAT","IDLE_tired",4.0,1,0,0,0,0,1);
                }
                  
Vin[i] -= 0.05;
                  
MaxVin[i] += 0.005;
                  continue;
            }
            else if(
GetPlayerSpeed(i) > 50)
            {
                   if(
Vin[i] < 0.02)
                  {
                      
TogglePlayerControllable(i,0);
                      
SetPVarInt(i,"Ustal",1);
                     
ApplyAnimation(i,"FAT","IDLE_tired",4.0,1,0,0,0,0,1);
                }
                  
Vin[i] -= 0.02;
                  
MaxVin[i] += 0.002;
                  continue;
            }
            else if(
GetPlayerSpeed(i) > 0)
            {
                   if(
Vin[i] < 0.005)
                  {
                      
TogglePlayerControllable(i,0);
                      
SetPVarInt(i,"Ustal",1);
                     
ApplyAnimation(i,"FAT","IDLE_tired",4.0,1,0,0,0,0,1);
                }
                  
Vin[i] -= 0.005;
                  
MaxVin[i] += 0.0005;
                  continue;
            }
        }
    }
    return 
1;


Для выносливости нужна функция вычисления скорости движения игрока, её так же в конец мода:

Code: Select all

stock GetPlayerSpeed(playerid)
{
    new 
Float:ST1[4];
    
GetPlayerVelocity(playerid,ST1[0],ST1[1],ST1[2]);
    
ST1[3] = floatsqroot(floatpower(floatabs(ST1[0]), 2.0) + floatpower(floatabs(ST1[1]), 2.0) + floatpower(floatabs(ST1[2]), 2.0)) * 1000;
    return 
floatround(ST1[3]);


Miranda F
Старшина
Старшина
Avatar
Miranda F
Старшина
Старшина
Posts: 143
Joined: 5 Jul 2013
With us: 11 years 5 months

#2by Miranda » 23 Jul 2013, 11:54

Aleksandr wrote:Если усталость заполнена, то активируется анимка усталости и игрока замораживает пока он не отдохнет

Как то ни к чему всё это
Image

Prezident M
Ефрейтор
Ефрейтор
Avatar
Prezident M
Ефрейтор
Ефрейтор
Posts: 28
Joined: 9 Jul 2013
With us: 11 years 4 months

#3by Prezident » 17 Jan 2014, 22:09

Miranda wrote:Как то ни к чему всё это
Ну кому как

Дим M
Администратор
Администратор
Avatar
Дим M
Администратор
Администратор
Posts: 1613
Joined: 5 Apr 2013
With us: 11 years 8 months

#4by Дим » 17 Jan 2014, 22:26

Иногда бесят вот такие "плюшки"
[center]i love you [s]mxIni[/s] Mysql[/center]

SJplayer M
Модератор
Модератор
Avatar
SJplayer M
Модератор
Модератор
Posts: 196
Joined: 25 May 2013
With us: 11 years 6 months

#5by SJplayer » 18 Jan 2014, 10:29

Дим wrote:Иногда бесят вот такие "плюшки"
Хоть какое то разнообразие


Return to “Уроки”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest