SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 29/10/2015, 06:26 PM   #1
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 217
Reputation: 8
Question При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Здравствуйте, недавно(сегодня) я заметил такой баг. Если игрок1 стреляет по игрок2, то у обойх снимается количество ХП, не-знаю в чём проблема. Впервые такое вижу. Я заметил этот баг при капте(тестил у себя на сервере), но когда начал снимать видео то заметил что такая фигня и при обычной стрельбе. Я записал видео дабы вы сами увидели в чём дело.
Видео:
https://youtu.be/KRNLZdT1cus - незнаю как сделать чтобы проигрователь сработал сразу на форуме.
Надеюсь там видно вся суть проблему. Надеюсь на вашу помощь.
И когда едёт капт територий, и один из игроов умирает выевляеться в консоль такая ошибка:
PHP Code:
[19:10:01] [debug]  Accessing element at index 65535 past array upper bound 999
[19:10:01] [debugAMX backtrace:
[
19:10:01] [debug#0 0004cd98 in public OnPlayerDeath (playerid=0, killerid=65535, reason=255) at D:\Pawn\Corso RPG\gamemodes\Corso.pwn:5046
[19:12:19] [debugRun time error 4"Array index out of bounds"
[19:12:19] [debug]  Accessing element at index 65535 past array upper bound 999 
Код:
PHP Code:
    for(new 049i++)//доработать
    
{
        if(
PlayerToKvadrat(playerid,GZInfo[i][gCoords][0], GZInfo[i][gCoords][1],GZInfo[i][gCoords][2],GZInfo[i][gCoords][3]) && ZoneOnBattle[i] == 1)//5046 строка...
        
{
            if((
PlayerInfo[playerid][pMember] == GZInfo[i][gFrakVlad] || PlayerInfo[playerid][pLeader] == GZInfo[i][gFrakVlad]) && (PlayerInfo[killerid][pMember] == GZInfo[i][gNapad] || PlayerInfo[killerid][pLeader] == GZInfo[i][gNapad]))
            {
                
CaptureDeaths[i][0]++;
                
format(string,sizeof(string),"{0095b6}•{FFFFFF}Территория № %d: %s %s(%d) убил %s %s(%d) счёт %d:%d",
                
i,GetGangName(GZInfo[i][gNapad]),Name(killerid),killerid,GetGangName(GZInfo[i][gFrakVlad]),Name(playerid),playerid,CaptureDeaths[i][0],CaptureDeaths[i][1]);
                
SendFamilyMessage(GZInfo[i][gNapad],COLOR_WHITE,string);
                
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_WHITE,string);
            }
            else if((
PlayerInfo[playerid][pMember] == GZInfo[i][gNapad] || PlayerInfo[playerid][pLeader] == GZInfo[i][gNapad]) && (PlayerInfo[killerid][pMember] == GZInfo[i][gFrakVlad] || PlayerInfo[killerid][pLeader] == GZInfo[i][gFrakVlad]))
            {
                
CaptureDeaths[i][1]++;
                
format(string,sizeof(string),"{0095b6}•{FFFFFF}Территория № %d: %s %s(%d) убил %s %s(%d) счёт %d:%d",
                
i,GetGangName(GZInfo[i][gFrakVlad]),Name(killerid),killerid,GetGangName(GZInfo[i][gNapad]),Name(playerid),playerid,CaptureDeaths[i][1],CaptureDeaths[i][0]);
                
SendFamilyMessage(GZInfo[i][gNapad],COLOR_WHITE,string);
                
SendFamilyMessage(GZInfo[i][gFrakVlad],COLOR_WHITE,string);
            }
            return 
true;
        }
    } 
Johhnyllll is offline   Reply With Quote
Old 29/10/2015, 06:58 PM   #2
stabker
High-roller
 
stabker's Avatar
 
Join Date: Mar 2012
Location: Andromeda Galaxy
Posts: 1,290
Reputation: 84
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Лол. Первая ошибка (где лог крашдетекта) из-за того, что обращаетесь к массиву без проверки на INVALID_PLAYER_ID и IsPlayerConnected, поэтому выходите за его пределы.

А вторая скорее всего из-за кривой системы урона. Ищите изменение хп в OnPlayerWeaponShot/OnPlayerGiveDamage/OnPlayerTakeDamage, оно не должно применяться к стрелку.
__________________
stabker is offline   Reply With Quote
Old 29/10/2015, 07:05 PM   #3
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 217
Reputation: 8
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by stabker View Post
Лол. Первая ошибка (где лог крашдетекта) из-за того, что обращаетесь к массиву без проверки на INVALID_PLAYER_ID и IsPlayerConnected, поэтому выходите за его пределы.

А вторая скорее всего из-за кривой системы урона. Ищите изменение хп в OnPlayerWeaponShot/OnPlayerGiveDamage/OnPlayerTakeDamage, оно не должно применяться к стрелку.
INVALID_PLAYER_ID и IsPlayerConnected я хз незнаю где его ставить в системе.
А вот из OnPlayerWeaponShot/OnPlayerGiveDamage/OnPlayerTakeDamage, есть только последние 2.
PHP Code:
public OnPlayerTakeDamage(playeridissueridFloatamountweaponid)
{
    if(
weaponid == 25 || weaponid == 24 || weaponid == 31 || weaponid == 29)
    {
        if(
togkol[issuerid] == 0)
        {
            
PlayerPlaySound(issuerid64010.00.00.0);
        }
        else if(
togkol[issuerid] == 1) { }
    }
     new 
Float:Dmg[3];//Ниже типа Anti-GM система...
      
GetPlayerArmour(issueridDmg[1]);
    
GetPlayerHealth(issueridDmg[0]);
     if(
Dmg[1] > 0)
      {
           if(
amount Dmg[1])
         {
              
Dmg[2] = amount Dmg[1];
            
Dmg[0] = Dmg[0] - Dmg[2];
             
SetPlayerArmour(issuerid0.0);
              return 
SetPlayerHealth(issueridDmg[0]);
        }
          
Dmg[1] = Dmg[1] - amount;
        
SetPlayerArmour(issueridDmg[1]);
    }
    if(
Dmg[1] < 1)
    {
        
Dmg[0] = Dmg[0] - amount;
        
SetPlayerHealth(issueridDmg[0]);
    }
    return 
true;

PHP Code:
public OnPlayerGiveDamage(playeriddamagedidFloat:amountweaponid)
{
    new 
FloatvidaFloatarmadura;
    
GetPlayerArmour(damagedidarmadura); GetPlayerHealth(damagedidvida);
    if(
IsAPistol(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo2] -= amount;
    }
    else if(
IsAShotgun(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo3] -= amount;
    }
    else if(
IsAMachineGun(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo4] -= amount;
    }
    else if(
IsAnAssault(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo5] -= amount;
    }
    else if(
IsARifle(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo6] -= amount;
    }
    else if(
IsAHeavyAssault(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo7] -= amount;
    }
    else if(
IsAHeavyAssault(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo7] -= amount;
    }
    else if(
IsAGrenade(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo8] -= amount;
    }
    else if(
IsAStuff1(weaponid))
    {
        if(
PlayerInfo[playerid][pAmmo2] < 0) return AntiWeapon(playerid);
        
PlayerInfo[playerid][pAmmo9] -= amount;
    }
    if(
PlayerPaintballing[playerid])
    {
        
SetPVarFloat(playerid,"painthealths",GetPVarFloat(playerid,"painthealths")+1);
        if(
weaponid == 25 || weaponid == 24PlayerInfo[playerid][pUron] += 100;
        if(
weaponid == 31 || weaponid == 29PlayerInfo[playerid][pUron] += 50;
    }
    if(
weaponid == 3)
    {
        if(
IsACop(playerid))
        {
            if(
IsACop(damagedid)) return SendClientMessage(playeridCOLOR_WHITE"Нельзя надедь наручники на законника.");
            new 
randa random(2)+1;
            new 
string[200];
            if(
randa == 1)
            {
                
format(stringsizeof(string), "%s надел наручники на %s (удачно)",PlayerInfo[playerid][pName],PlayerInfo[damagedid][pName]);
                
SetPlayerAttachedObject(damagedid0194186, -0.0110000.028000, -0.022000, -15.600012, -33.699977, -81.7000350.8919991.0000001.168000);
                
SetPlayerSpecialAction(damagedid,SPECIAL_ACTION_CUFFED);
                
ApplyAnimation(damagedid,"PED","BIKE_fall_off",4.1,0,1,1,1,1);
                
TogglePlayerControllable(damagedid0);
                
PlayerCuffed[damagedid] = 2;
                
PlayerCuffedTime[damagedid] = 30;
            }
            else { 
format(stringsizeof(string), "%s попытался надеть наручники на %s (неудачно)",PlayerInfo[playerid][pName],PlayerInfo[damagedid][pName]);}
            
ProxDetector(30.0playeridstringCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
        }
    }
    return 
true;

Johhnyllll is offline   Reply With Quote
Old 29/10/2015, 07:36 PM   #4
OstGot
Gangsta
 
OstGot's Avatar
 
Join Date: Mar 2013
Location: Gomel, Belarus
Posts: 599
Reputation: 247
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by Johhnyllll View Post
INVALID_PLAYER_ID и IsPlayerConnected я хз незнаю где его ставить в системе
Ставить в OnPlayerDeath к killerid ' у.
__________________
aka Nexius
Don't want to always check for updates of my scripts?
Include it the last, after all others
Nexius's Update Checker
OstGot is offline   Reply With Quote
Old 30/10/2015, 10:40 AM   #5
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 217
Reputation: 8
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by OstGot View Post
Ставить в OnPlayerDeath к killerid ' у.
Можно по подробнее ибо я не-понял суть.
Johhnyllll is offline   Reply With Quote
Old 30/10/2015, 11:16 AM   #6
S4D
Huge Clucker
 
S4D's Avatar
 
Join Date: Jun 2014
Posts: 252
Reputation: 9
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Стрельбу по пингу же хочешь, да? Так зачем тогда тебе вообще производить какие-либо манипуляции с чьими-либо ХПшечками? Просто в конфиге сервера поставь lagcompmode = 0. А от этой "типа antigm системы" толку вообще нет.

Выше говорят вообще про http://forum.sa-mp.com/showthread.ph...19#post3593219
S4D is offline   Reply With Quote
Old 30/10/2015, 11:23 AM   #7
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 217
Reputation: 8
Thumbs up Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by S4D View Post
Стрельбу по пингу же хочешь, да? Так зачем тогда тебе вообще производить какие-либо манипуляции с чьими-либо ХПшечками? Просто в конфиге сервера поставь lagcompmode = 0. А от этой "типа antigm системы" толку вообще нет.

Выше говорят вообще про http://forum.sa-mp.com/showthread.ph...19#post3593219
Нет, мне нужна стрельба по скину. Ну-ну, я проверял анти гм с гм-ом от собейта, вроде работает. Надо ещё потестить потом посмотрю. А за сылку спасибо,сейчас сделаю.
PHP Code:
//update 
Только что заметил в моде вот эти строки...
PHP Code:
//из OnPlayerDeath
    
if(killerid != INVALID_PLAYER_ID)
    {
        
PlayerInfo[killerid][pKills]++;
        if(
PlayerInfo[killerid][pPaintDost] < 500PlayerInfo[killerid][pPaintDost]++;
        
PlayerInfo[playerid][pDeaths]++;
    }
    else if(
killerid == INVALID_PLAYER_ID)
    {
        
PlayerInfo[playerid][pDeaths]++;
    } 
//update
Поставил я что ты мне дал, при смерти показываеться 2 раза "wasted"...
Незнаю почему так. Проблема актуальна.
Johhnyllll is offline   Reply With Quote
Old 30/10/2015, 11:56 AM   #8
S4D
Huge Clucker
 
S4D's Avatar
 
Join Date: Jun 2014
Posts: 252
Reputation: 9
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by Johhnyllll View Post
Ну-ну, я проверял анти гм с гм-ом от собейта, вроде работает.
Про NOP'ы слышал?
Quote:
Originally Posted by Johhnyllll View Post
Нет, мне нужна стрельба по скину.
Ну тогда тебе нужно смотреть в сторону OnPlayerGiveDamage/OnPlayerWeaponShot.
Quote:
Originally Posted by Johhnyllll View Post
Поставил я что ты мне дал, при смерти показываеться 2 раза "wasted"...
S4D is offline   Reply With Quote
Old 30/10/2015, 12:04 PM   #9
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 217
Reputation: 8
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by S4D View Post
Про NOP'ы слышал?

Ну тогда тебе нужно смотреть в сторону OnPlayerGiveDamage/OnPlayerWeaponShot.

Слышал.
OnPlayerWeaponShot - нету у меня в моде. А OnPlayerGiveDamage скинул выше.
Дать скрин?
Johhnyllll is offline   Reply With Quote
Old 30/10/2015, 05:01 PM   #10
S4D
Huge Clucker
 
S4D's Avatar
 
Join Date: Jun 2014
Posts: 252
Reputation: 9
Default Re: При стрельбе отнимаеться ХП и у стрелька и у игрока.(больше в теме)

Quote:
Originally Posted by Johhnyllll View Post
Слышал.
OnPlayerWeaponShot - нету у меня в моде. А OnPlayerGiveDamage скинул выше.
Дать скрин?
Понятненько
S4D is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
На сервер не может зайти больше 30 игроков =KempeR= Русский/Russian 31 18/08/2015 09:25 PM
Вектор игрока. QEW Русский/Russian 31 10/05/2013 06:48 PM
Бан диапазона IP по ID игрока Defrago Русский/Russian 15 14/04/2012 10:23 AM
"Секретные" покрасочные работы больше не доступны? Defrago Русский/Russian 13 04/01/2012 03:15 PM


All times are GMT. The time now is 05:05 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.