Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Выносливость [All]

Статус
В этой теме нельзя размещать новые ответы.

<BaRReT[T]>

Новичок
Вообщем, не поставил префикс "All" и тему удалили видимо. Пишу заного

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

Ко всем переменным:
Код:
new Float:Vin[MAX_PLAYERS];
new Float:MaxVin[MAX_PLAYERS];
new VinTimer;
new Text:Textdraw0[MAX_PLAYERS];
new Text:Textdraw1[MAX_PLAYERS];
К форвардам:

Код:
forward Vint();
В OnPlayerConnect:
Код:
	Vin[playerid] = 100.0;
	MaxVin[playerid] = 100.0;
	Textdraw0[playerid] = TextDrawCreate(611.000000, 104.000000, "1");
	TextDrawBackgroundColor(Textdraw0[playerid], 255);
	TextDrawFont(Textdraw0[playerid], 1);
	TextDrawLetterSize(Textdraw0[playerid], 0.000000, 0.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.000000, 0.000000);

	Textdraw1[playerid] = TextDrawCreate(609.000000, 107.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:
Код:
	TextDrawShowForPlayer(playerid,Textdraw0[playerid]);
	TextDrawShowForPlayer(playerid,Textdraw1[playerid]);
В OnGameModeInit:
Код:
	VinTimer = SetTimer("Vint",10,1);
В OnGameModeExit:
Код:
	KillTimer(VinTimer);
Сам паблик выносливости в конец мода:
Код:
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") && GetPlayerState(i) == PLAYER_STATE_ONFOOT)
  		{
  		    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;
}
Для выносливости нужна функция вычисления скорости движения игрока, её так же в конец мода:
Код:
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]);
}
Автор я
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу