Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Контр атака ножом - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (4 Страниц) +
  • 1
  • 2
  • 3
  • 4
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Контр атака ножом Оценка: -----

#11
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Обновление

  • Добавлен звук удара ножом;
  • Исправлено удаление ножа;
  • При малом уровне хп удар ножом невозможен;
  • Рандомный урон.


forward Knife100HP(playerid);
forward Knife100HPDO(playerid);

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
        if(((newkeys & 16) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT))
        {
                new weap = GetPlayerWeapon(playerid);
                if(weap == 4) SetTimerEx("Knife100HP", 0, false, "i", playerid);
                return 1;
        }
        return 1;
}

public Knife100HP(playerid)
{
	new Float: health;
	GetPlayerHealth(playerid, health);
        if(health <= 10) return 1;
	new vehid = GetClosestCar(playerid, 5.0);
	for(new i = 0; i < MAX_VEHICLES; i++) if(i == vehid) return 1;
  	ApplyAnimation(playerid, "ped", "FightA_1",4.0,0,0,0,0,0,1);
	SetPlayerAttachedObject(playerid, 6, 335, 5, 0.2, 0.0, 0.0, 0.0, 180.0, 0.0);
	SetTimerEx("Knife100HPDO", 650, false, "i", playerid);
	new Float:p[3];
	foreach(Player, i)
	{
		GetPlayerPos(i,p[0],p[1],p[2]);
 		if(IsPlayerInRangeOfPoint(i,3.0,p[0],p[1],p[2]))
  		{
  			PlayAudioStreamForPlayer(i, "http://bfls.at.ua/phrases/knife1.mp3",p[0],p[1],p[
2], 5.0,true);
    		        if(!IsPlayerConnected(i) || i == playerid) continue;
     		        switch(random(3))
     		        {
     			       case 0: SetPlayerHealth(i,-70.0);
     			       case 1: SetPlayerHealth(i,-85.0);
     			       case 2: SetPlayerHealth(i,-99.0);
     		        }
      	        }
	}
	return 1;
}
public Knife100HPDO(playerid)
{
	if(IsPlayerAttachedObjectSlotUsed(playerid,6)) RemovePlayerAttachedObject(playerid,6);
}

stock GetClosestCar(playerid, Float:dist) 
{ 
    new Float:x,Float:y,Float:z; 
    for(new i = 0; i < MAX_VEHICLES; i++)
    { 
        if(GetVehicleModel(i) == 0) continue;
        GetVehiclePos(i,x,y,z); 
        if(IsPlayerInRangeOfPoint(playerid,dist,x,y,z)) 
        return i;
    }
    return -1; 
} 

Сообщение отредактировал m1n1vv: 04 Июнь 2015 - 11:08

0

#12
Пользователь офлайн   bek 

  • Geebrox Team
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Доработал немного если не против) но если скажешь я удалю свой пост):

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(((newkeys & 16) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT))
    {
        if(GetPlayerWeapon(playerid) == 4) return Knife100HP(playerid);
    }
    return true;
}

public Knife100HP(playerid)
{
    new Float: health;
    GetPlayerHealth(playerid, health);
    if(health <= 10) return true;
    if(GetClosestCar(playerid, 5.0)) return true;
    ApplyAnimation(playerid, "ped", "FightA_1", 4.0, 0, 0, 0, 0, 0, 1);
    SetPlayerAttachedObject(playerid, 6, 335, 5, 0.2, 0.0, 0.0, 0.0, 180.0, 0.0);
    SetTimerEx("Knife100HPDO", 650, false, "i", playerid);
    new Float: p[3];
    GetPlayerPos(playerid, p[0], p[1], p[2]);
    foreach(Player, i)
    {
        if(i == playerid || !IsPlayerInRangeOfPoint(i, 3.0, p[0], p[1], p[2])) continue;
        PlayAudioStreamForPlayer(i, "http://bfls.at.ua/phrases/knife1.mp3", p[0], p[1], p[2], 5.0, true);
        return SetPlayerHealth(i, random(-65 - -99) + -99); 
    }
    return true;
}

public Knife100HPDO(playerid) return RemovePlayerAttachedObject(playerid,6); // не вызовишь паблик не зная что 6 слот занят!

GetClosestCar(playerid, Float:dist)
{
    new Float: x, Float: y, Float: z;
    for(new i = GetVehiclePoolSize(); i != 0; --i)
    {
        if(!GetVehicleModel(i)) continue;
        GetVehiclePos(i, x, y, z);
        if(IsPlayerInRangeOfPoint(playerid, dist, x, y, z))
        return i;
    }
    return false;
}


Сообщение отредактировал bek: 05 Июнь 2015 - 14:32

1

#13
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Пойдет

Вот только звук должен быть выше, а то убийца не услышит.
0

#14
Пользователь офлайн   bek 

  • Geebrox Team
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
немного подправил
0

#15
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияbek (05 Июнь 2015 - 13:25) писал:

немного подправил

 if(i = playerid || !IsPlayerInRangeOfPoint(i, 3.0, p[0], p[1], p[2])) continue;

Варнинг 211
0

#16
Пользователь офлайн   bek 

  • Geebrox Team
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияm1n1vv (05 Июнь 2015 - 13:50) писал:

 if(i = playerid || !IsPlayerInRangeOfPoint(i, 3.0, p[0], p[1], p[2])) continue;

Варнинг 211


Исправил :biggrin:
0

#17
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Вряд ли так правильно. Получается кто наносит удар не буде слышать звук ножа.
0

#18
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Самый оптимальный вариант

        new Float:p[3];
	GetPlayerPos(playerid,p[0],p[1],p[2]);
	foreach(Player, i)
	{
 		if(IsPlayerInRangeOfPoint(i,3.0,p[0],p[1],p[2]))
  		{
  			PlayAudioStreamForPlayer(i, "http://bfls.at.ua/phrases/knife1.mp3",p[0],p[1],p[
2], 5.0,true);
    		        if(!IsPlayerConnected(i) || i == playerid) continue;
     		        return SetPlayerHealth(i, random(-65 - -99) + -99); 
      	        } 
	}

Сообщение отредактировал m1n1vv: 05 Июнь 2015 - 18:57

1

#19
Пользователь офлайн   bek 

  • Geebrox Team
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
ты прав

Сообщение отредактировал bek: 05 Июнь 2015 - 21:37

0

#20
Пользователь офлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Обновление 0.3
  • Оптимизация

forward Knife100HP(playerid);
forward Knife100HPDO(playerid);

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
        if(((newkeys & 16) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT))
        {
                new weap = GetPlayerWeapon(playerid);
                if(weap == 4) SetTimerEx("Knife100HP", 0, false, "i", playerid);
                return 1;
        }
        return 1;
}

public Knife100HP(playerid)
{
	new Float: health;
	GetPlayerHealth(playerid, health);
        if(health <= 10) return 1;
	new vehid = GetClosestCar(playerid, 5.0);
	for(new i = 0; i < MAX_VEHICLES; i++) if(i == vehid) return 1;
  	ApplyAnimation(playerid, "ped", "FightA_1",4.0,0,0,0,0,0,1);
	SetPlayerAttachedObject(playerid, 6, 335, 5, 0.2, 0.0, 0.0, 0.0, 180.0, 0.0);
	SetTimerEx("Knife100HPDO", 650, false, "i", playerid);
	new Float:p[3];
	GetPlayerPos(playerid,p[0],p[1],p[2]);
	foreach(Player, i)
	{
 		if(IsPlayerInRangeOfPoint(i,3.0,p[0],p[1],p[2]))
  		{
  		        PlayAudioStreamForPlayer(i, "http://bfls.at.ua/phrases/knife1.mp3",p[0],p[1],p[
2], 5.0,true);
    		        if(!IsPlayerConnected(i) || i == playerid) continue;
     		        return SetPlayerHealth(i, random(-65 - -99) + -99); 
      	        }
	}
	return 1;
}
public Knife100HPDO(playerid) return RemovePlayerAttachedObject(playerid,6);

stock GetClosestCar(playerid, Float:dist) 
{ 
    new Float:x,Float:y,Float:z; 
    for(new i = 0; i < MAX_VEHICLES; i++)
    { 
        if(GetVehicleModel(i) == 0) continue;
        GetVehiclePos(i,x,y,z); 
        if(IsPlayerInRangeOfPoint(playerid,dist,x,y,z)) 
        return i;
    }
    return -1; 
} 

Сообщение отредактировал m1n1vv: 16 Июнь 2015 - 11:35

1

Поделиться темой:


  • (4 Страниц) +
  • 1
  • 2
  • 3
  • 4
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей