[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
[FAQ]Энергия
NauticaДата: Воскресенье, 13.03.2011, 16:05 | Сообщение # 1
Main
Группа: Администраторы
Сообщений: 63
Репутация: 3
Статус: Offline
Система работает так:Если вы бежите быстро,прыгаете,или бьёте
(именно бьёте,стоит проверка на оружие,так что бага со стрельбой не будет!)
то система отнимает энергию,если она равна 0,то вам ставится анимация одышки.
Скрипт прост,но думаю будет многим интересен!

И так начнём добавляем следующие форварды

Код
forward Energy();//Создаём паблик,который будет прибавлять енергию игроку
forward TiredCheck();//проверяет действия игрока,и отнимает энергию игрока

Далее добавляем

Код
new Tired[MAX_PLAYERS];//флажок
new sprint[MAX_PLAYERS];//флажок

Далее в паблик OnPlayerKeyStateChange добавляем проверку на бег и удары

Код
if(GetPlayerState(playerid) == 1)
{
if(newkeys == 8 && GetPlayerState(playerid) == 1 ) sprint[playerid]=1;
if(oldkeys == 8 && sprint[playerid] == 1) sprint[playerid]=0;
}
if(newkeys & KEY_JUMP || newkeys & KEY_SPRINT )
{
if(IsPlayerConnected(playerid))
{
if(Tired[playerid] != 1)
{
if(IsPlayerInAnyVehicle(playerid)){}
if(PlayerInfo[playerid][pEnergy] <= 0)
{}
else if(PlayerInfo[playerid][pEnergy] <= 5)
{PlayerInfo[playerid][pEnergy] -= 1;}
else{PlayerInfo[playerid][pEnergy] -= 2;
}
}
}
}
if(newkeys & KEY_FIRE )
{
if(GetPlayerWeapon(playerid) == 0 && GetPlayerSpecialAction(playerid) == 0 && Tired[playerid] != 1)
{
PlayerInfo[playerid][pEnergy] -= 5;
}
else if(GetPlayerWeapon(playerid) != 0 || GetPlayerSpecialAction(playerid) != 0)
{}
}
В OnGameModeInit:

Код
SetTimer("Energy",1600,1);
SetTimer("TiredCheck",900,1);

в конец:

Код
public TiredCheck()
{
for(new i = 0; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(!IsPlayerInAnyVehicle(i))
{
if(Tired[i] == 0)
{
if(sprint[i] != 0)
{
PlayerInfo[i][pEnergy] -= 1;
}
if(PlayerInfo[i][pEnergy] <= 1)
{
ApplyAnimation(i,"PED","IDLE_tired",4.1,0,1,1,1,1);
Tired[i] = 1;
}
}
else
{
if(PlayerInfo[i][pEnergy] >= 5)
{
Tired[i] = 0;
ClearAnimations(i);
}
if(PlayerInfo[i][pEnergy] <= 4)
{
ApplyAnimation(i,"PED","IDLE_tired",4.1,0,1,1,1,1);
}
}
}
}
}
return 1;
}

public Energy()
{
for(new i = 0; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pEnergy] <= 99 && sprint[i] != 1)
{
PlayerInfo[i][pEnergy]++;
}
return 1;
}
}
return 1;
}
к new

Код
new Text:TextDrawForEnergy[MAX_PLAYERS];

в onplayerconnect:

Код
TextDrawForEnergy[playerid] = TextDrawCreate(1.0,440.0," ");
TextDrawAlignment(Text:TextDrawForEnergy[playerid],1);
TextDrawSetShadow(Text:TextDrawForEnergy[playerid],1);
TextDrawFont(Text:TextDrawForEnergy[playerid],3);
TextDrawSetOutline(Text:TextDrawForEnergy[playerid],1);
TextDrawLetterSize(Text:TextDrawForEnergy[playerid],0.361999,0.800000);
TextDrawBoxColor(Text:TextDrawForEnergy[playerid], 0x00000070);
TextDrawTextSize(Text:TextDrawForEnergy[playerid], 800, 105);
TextDrawUseBox(Text:TextDrawForEnergy[playerid], 1);

TextDrawShowForPlayer(playerid,Text:TextDrawForEnergy[playerid]);

в OnPlayerUpdate:

Код
new bride[64];
format(bride,sizeof(bride),"Energy:%d",PlayerInfo[playerid][pEnergy]);
TextDrawSetString(Text:TextDrawForEnergy[playerid],bride);
TextDrawShowForPlayer(playerid,Text:TextDrawForEnergy[playerid]);

В OnPlayerDisconnect
Код
TextDrawDestroy(TextDrawForEnergy[playerid]);

Автор: Неизвестный.

 
  • Страница 1 из 1
  • 1
Поиск:

All rights reserved Copyright © 2010 Site.Ru Сайт управляется системой uCoz ulde.net