Проблема с фрагами
#1

У меня такая проблема: фраги в игре даются только одной команде, у второй же проблема...Когда, играя за вторую, убиваешь игрока из первой, у него причина смерти - Падение, а урон снимается вообще только тогда, если стрелять оружия, ID которых написан в функции, а при стрельбе, например, из Deagle ничего не происходит.

Код:
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid,bodypart) //Диалог выбора команды
{
	if((gTeam[issuerid] == gTeam[playerid]) || (ANTISK[playerid] == 1))
	{
	}
	else
	{
	 if(bodypart == 9)
	 {
      SendClientMessage(issuerid,COLOR_WHITE,"Ïîïàäàíèå â ãîëîâó!");
      SetPlayerHealth(playerid, 0.0);
	  InHead[playerid] += 1;
	 }
	 else
	 {
	  new Float:armor;
	  GetPlayerArmour(playerid, armor);
	  if(weaponid == 31){if(armor >= 1 && armor <= 150){GivePlayerArmor(playerid, -16);}else{GivePlayerHealth(playerid, -16);}}
	  else if(weaponid == 30){if(armor >= 1 && armor <= 150){GivePlayerArmor(playerid, -21);}else{GivePlayerHealth(playerid, -21);}}
	  else if((weaponid == 34)||(weaponid == 33)){if(armor >= 1 && armor <= 150){GivePlayerArmor(playerid, -73);}else{GivePlayerHealth(playerid, -73);}}
	  else if((weaponid == 29)||(weaponid == 22)||(weaponid == 23)){if(armor >= 1 && armor <= 150){GivePlayerArmor(playerid, -13);}else{GivePlayerHealth(playerid, -13);}}
	  else{}
	 }
     PlayerPlaySound(issuerid, 17802, 0, 0, 0);
    }
    return 1;
}
Может это тоже поможет

Код:
if(dialogid == DIALOG_TEAM)
   {
   if(response)
   {
    switch(listitem)
   {
    case 0:
   {
   	new mag = PlayerInfo[playerid][pMaxAmmo];
    if(Map == 0){SetSpawnInfo(playerid,0,287, -2626.8000500,2251.1001000,7.7000000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else if(Map == 1){SetSpawnInfo(playerid,0,287, 2498.3000500,-2640.3999000,13.2000000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else{SetSpawnInfo(playerid,0,287, 2403.6001000,-1402.4000200,23.600000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    
    gFG[playerid] = MP;
    gSG[playerid] = MM;
    SetPlayerTeam(playerid,0);
    
	if(Logged[playerid] == 1){}
	else{Logged[playerid] += 1;}
	gTeam[playerid] = gTeam[playerid] - gTeam[playerid];
	SpawnPlayer(playerid);
   }
    case 1:
   {
  	new mag = PlayerInfo[playerid][pMaxAmmo];
    if(Map == 0){SetSpawnInfo(playerid,1,285, -2279.5000000,2288.3000500,4.5000000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else if(Map == 1){SetSpawnInfo(playerid,1,285, 2744.8999000,-2444.8999000,13.200000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else{SetSpawnInfo(playerid,1,285, 2722.6999500,-1176.9000200,68.8000000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    
    gFG[playerid] = MP;
    gSG[playerid] = MM;
    SetPlayerTeam(playerid,1);
    
	gTeam[playerid] = gTeam[playerid] - gTeam[playerid] +1;
	if(Logged[playerid] == 1){}
	else{Logged[playerid] += 1;}
	SpawnPlayer(playerid);
   }
   }
   }
   return 1;
   }
Reply
#2

PHP код:
/* (ANTISK[playerid] == 1) - Как оно работает? */
if(gTeam[issuerid] != gTeam[playerid]))
    {
     if(
bodypart == 9)
     {
      
SendClientMessage(issuerid,COLOR_WHITE,"Ïîïàäàíèå â ãîëîâó!");
      
SetPlayerHealth(playerid0.0);
      
InHead[playerid] += 1;
     }
     else
     {
      new 
Float:armor;
      
GetPlayerArmour(playeridarmor);
      if(
weaponid == 31){if(armor >= && armor <= 150){GivePlayerArmor(playerid, -16);}else{GivePlayerHealth(playerid, -16);}}
      else if(
weaponid == 30){if(armor >= && armor <= 150){GivePlayerArmor(playerid, -21);}else{GivePlayerHealth(playerid, -21);}}
      else if((
weaponid == 34)||(weaponid == 33)){if(armor >= && armor <= 150){GivePlayerArmor(playerid, -73);}else{GivePlayerHealth(playerid, -73);}}
      else if((
weaponid == 29)||(weaponid == 22)||(weaponid == 23)){if(armor >= && armor <= 150){GivePlayerArmor(playerid, -13);}else{GivePlayerHealth(playerid, -13);}}
      else{}
     }
     
PlayerPlaySound(issuerid17802000); 
PHP код:
/* Тут в чем проблема ? */
if(dialogid == DIALOG_TEAM)
   {
   if(
response)
   {
    switch(
listitem)
   {
    case 
0:
   {
       new 
mag PlayerInfo[playerid][pMaxAmmo];
    if(
Map == 0){SetSpawnInfo(playerid,0,287, -2626.8000500,2251.1001000,7.700000022930*mag2217*mag41);}
    else if(
Map == 1){SetSpawnInfo(playerid,0,2872498.3000500,-2640.3999000,13.200000022930*mag2217*mag41);}
    else{
SetSpawnInfo(playerid,0,2872403.6001000,-1402.4000200,23.60000022930*mag2217*mag41);}
    
    
gFG[playerid] = MP;
    
gSG[playerid] = MM;
    
SetPlayerTeam(playerid,0);
    
    if(
Logged[playerid] == 1){}
    else{
Logged[playerid] += 1;}
    
gTeam[playerid] = gTeam[playerid] - gTeam[playerid];
    
SpawnPlayer(playerid);
   }
    case 
1:
   {
      new 
mag PlayerInfo[playerid][pMaxAmmo];
    if(
Map == 0){SetSpawnInfo(playerid,1,285, -2279.5000000,2288.3000500,4.500000022930*mag2217*mag41);}
    else if(
Map == 1){SetSpawnInfo(playerid,1,2852744.8999000,-2444.8999000,13.20000022930*mag2217*mag41);}
    else{
SetSpawnInfo(playerid,1,2852722.6999500,-1176.9000200,68.800000022930*mag2217*mag41);}
    
    
gFG[playerid] = MP;
    
gSG[playerid] = MM;
    
SetPlayerTeam(playerid,1);
    
    
gTeam[playerid] = gTeam[playerid] - gTeam[playerid] +1;
    if(
Logged[playerid] == 1){}
    else{
Logged[playerid] += 1;}
    
SpawnPlayer(playerid);
   }
   }
   }
   return 
1;
   } 
Reply
#3

Quote:

/* (ANTISK[playerid] == 1) - Как оно работает? */

Это антиспаункилл, как-то так, это нормально работает, отключается там...по таймеру, но с ним все нормально
Quote:

/* Тут в чем проблема ? */ - и то что ниже

Я сам хочу узнать, что вообще за проблема, а именно тут все нормально, я думаю
Я думаю в целом проблема в OnPlayerTakeDamage
Reply
#4

Лады, сделай так
PHP код:
if(gTeam[issuerid] != gTeam[playerid] || !ANTISK[playerid])
    { 
И дай public OnPlayerDeath
Эти паблики здесь не при чем
Reply
#5

Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    SetTimerEx("OnED", 2500, false, "i", killerid);
    TextDrawShowForPlayer(killerid,ED);
    new mag = PlayerInfo[playerid][pMaxAmmo];
    SendDeathMessage(killerid,playerid,reason);
    
    gFG[playerid] = MP;
    gSG[playerid] = MM;

    PlayerInfo[playerid][pDeaths1] = PlayerInfo[playerid][pDeaths1] + 1;
    PlayerInfo[killerid][pKills1] = PlayerInfo[killerid][pKills1] + 1;
    PlayerInfo[killerid][pPoints1] = PlayerInfo[killerid][pPoints1] + 5;

    medkit[playerid] = medkit[playerid] - medkit[playerid];
    repkit[playerid] = repkit[playerid] - repkit[playerid];

    if(Map == 2)
    {
     if(gTeam[killerid] == 0)
     {
     TeamOneScore += 1;
     }
	 if(gTeam[killerid] == 1)
     {
	 TeamTwoScore += 1;
     }
    }

	if(gTeam[playerid] == 0)
	{
    if(Map == 0){SetSpawnInfo(playerid,0,287, -2626.8000500,2251.1001000,8.000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else if(Map == 1){SetSpawnInfo(playerid,0,287, 2498.3000500,-2640.3999000,14.00000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else{SetSpawnInfo(playerid,0,287, 2403.6001000,-1402.4000200,24.000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
	}
	else
    {
    if(Map == 0){SetSpawnInfo(playerid,0,285, -2279.5000000,2288.3000500,5.000000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else if(Map == 1){SetSpawnInfo(playerid,0,285, 2744.8999000,-2444.8999000,14.0000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    else{SetSpawnInfo(playerid,0,285, 2722.6999500,-1176.9000200,69.000, 2, 29, 30*mag, 22, 17*mag, 4, 1);}
    }

	if(InHead[playerid] == 1)
	{
	 reason = 53;
	 PlayerInfo[killerid][pHeadshots] += 1;
	}
    
    GivePlayerMoney(killerid,1000);
	PlayerInfo[killerid][pMoney] += 1000;

    return 1;
}
Вот так...
Reply
#6

Dreamerzzz, пожалуйста, используйте правильные BB коды.
Reply
#7

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Dreamerzzz, пожалуйста, используйте правильные BB коды.
Я понятия не имею какие и как
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)