Ошибки в логе сервера от crashdetect'a
#1

Доброе время суток.
В логе сервера появляются ошибки от CD'a
PHP код:
[23:14:16Вызван PickUp №54
[23:14:16] [debugRun time error 4"Array index out of bounds"
[23:14:16] [debug]  Accessing element at negative index -1
[23:14:16] [debugAMX backtrace:
[
23:14:16] [debug#0 000c1400 in public Streamer_OnPlayerPickUpPickup (playerid=0, pickupid=54) at C:\Users\Александр\Desktop\engine\gamemodes\newmode.pwn:11715
[23:14:16] [debug#1 native CallLocalFunction () [00472e50] from samp-server.exe
[23:14:16] [debug#2 000079d0 in public OnPlayerPickUpPickup (playerid=0, pickupid=54) at C:\Users\Александр\Desktop\engine\pawno\include\streamer.inc:424
[23:14:17Вызван PickUp №55
[23:14:17] [debugRun time error 4"Array index out of bounds"
[23:14:17] [debug]  Accessing element at negative index -1
[23:14:17] [debugAMX backtrace:
[
23:14:17] [debug#0 000c1400 in public Streamer_OnPlayerPickUpPickup (playerid=0, pickupid=55) at C:\Users\Александр\Desktop\engine\gamemodes\newmode.pwn:11715
[23:14:17] [debug#1 native CallLocalFunction () [00472e50] from samp-server.exe
[23:14:17] [debug#2 000079d0 in public OnPlayerPickUpPickup (playerid=0, pickupid=55) at C:\Users\Александр\Desktop\engine\pawno\include\streamer.inc:424 
смысл в то, что только для данного порядкового id PickUp'a
Reply
#2

У тебя в логи два идишника, а ошибка о том что ты обращаешься в несуществующую ячейку массива.
Весь колбек в студию.
Reply
#3

PHP код:
public OnPlayerPickUpPickup(playeridpickupid)
{
    
printf("Вызван PickUp №: %d",pickupid);
    if(
pickupid == oldpickup[playerid]) return 1;
    
oldpickup[playerid] = pickupid;
    new 
Float:z;
    
GetPlayerPos(playeridPickupX[playerid], PickupY[playerid], z);
    for(new 
idx 1idx <= TOTALHOUSEidx++)
    {
        if(
pickupid == HouseInfo[idx][hPickup])
        {
            
SetPVarInt(playerid"PlayerHouse"idx);
               if(!
strcmp(HouseInfo[idx][hOwner],"None",true))
              {
                
format(string,sizeof(string),"Номер дома:\t№%d\n\nСтоимость:\t%d\nТип:\t\t%s",idx,GetInflationPrice(HouseInfo[idx][hPrice]),HouseInfo[idx][hDiscript]);
                   return 
ShowPlayerDialog(playeridD_JOINHOUSE0,"Дом",string,"Купить","Отмена");
            }
            else
            {
                
format(string,sizeof(string),"Номер дома:\t№%d\n\nВладелец:\t%s\nТип:\t\t%s",idx,HouseInfo[idx][hOwner],HouseInfo[idx][hDiscript]);
                return 
ShowPlayerDialog(playeridD_JOINHOUSE0,"Дом",string,"Войти","Отмена");
            }
        }
        if(
pickupid == HouseInfo[idx][hPickupExit])
        {
            
SetPVarInt(playerid"PlayerHouse"idx);
            return 
ShowPlayerDialog(playeridD_JOINHOUSE+10,"Дом","Вы хотите выйти из дома?","Да","Нет");
        }
    }
    for(new 
idx 1idx <= TOTALBIZZidx++)
    {
        if(
pickupid == BizzInfo[idx][bPickup])
        {
                 if(!
strcmp(BizzInfo[idx][bOwner],"None",true))
              {
                  
SetPVarInt(playerid"PlayerBizz"idx);
                 
format(string,90,"Номер бизнеса:\t№%i\nСтоимость:\t\t%i\n\nВы хотите войти в бизнес?",idx,GetInflationPrice(BizzInfo[idx][bPrice]));
                  if(
BizzInfo[idx][bType] != 2) return ShowPlayerDialog(playeridD_HEAL+90"Бизнес"string"Да""Нет");
              }
              else
              {
                  
SetPVarInt(playerid"PlayerBizz"idx);
                  if(
BizzInfo[idx][bType] == || BizzInfo[idx][bType] == 5)
                  {
                      if(
BizzInfo[idx][bEnter] > 0format(string64"Цена входа: %i долларов\n\nВы хотите войти в бизнес?"BizzInfo[idx][bEnter]);
                      else 
format(string64"Вход бесплатный\n\nВы хотите войти в бизнес?");
                      
ShowPlayerDialog(playeridD_HEAL+260"Бизнес"string"Да""Нет");
                      return 
1;
                  }
                  if(
BizzInfo[idx][bType] != 2) return ShowPlayerDialog(playeridD_HEAL+90"Бизнес""Вы хотите войти в бизнес?""Да""Нет");
              }
        }
        if(
pickupid == BizzInfo[idx][bPickupExit])
        {
            
SetPVarInt(playerid"PlayerBizz"idx);
            return 
ShowPlayerDialog(playeridD_HEAL+80"Бизнес""Вы хотите выйти из бизнеса?""Да""Нет");
        }
    }
    for(new 
t=0;t<TOTALENTER;t++)
       {
        if(
GetPVarInt(playerid,"TELEPORTS") < gettime())
        {
            if(
pickupid == EnterInfo[t][ePick][0])
            {
                
SetPlayerPos(playeridEnterInfo[t][erX], EnterInfo[t][erY], EnterInfo[t][erZ]);
                
SetPlayerInterior(playeridEnterInfo[t][erInt]);
                
SetPlayerVirtualWorld(playeridEnterInfo[t][erVW]);
                
SetPlayerFacingAngle(playeridEnterInfo[t][erAngel]);
                
SetCameraBehindPlayer(playerid);
                
SetPVarInt(playerid,"TELEPORTS",gettime()+7);
                break;
               }
            else if(
pickupid == EnterInfo[t][ePick][1])
            {
                   
SetPlayerPos(playeridEnterInfo[t][eX], EnterInfo[t][eY], EnterInfo[t][eZ]);
                
SetPlayerInterior(playeridEnterInfo[t][eInt]);
                
SetPlayerVirtualWorld(playeridEnterInfo[t][eVW]);
                
SetPlayerFacingAngle(playeridEnterInfo[t][eAngel]);
                
SetCameraBehindPlayer(playerid);
                
SetPVarInt(playerid,"TELEPORTS",gettime()+7);
                break;
            }
            return 
true;
        }
    }
     
/*for(new i = 0; i < 8; i++)
     {
         if(pickupid == MatsFact[i])
         {
            if(!IsAGang(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Вы должны состоять в банде!");
             if(PlayerInfo[playerid][pMats] > 750) return SendClientMessage(playerid, COLOR_GREY, "У вас достаточно единиц оружия!");
             if(Mats[0] < 250) return SendClientMessage(playerid, COLOR_GREY, "На складе нет единиц оружия!");
             ApplyAnimation(playerid,"BD_FIRE","wash_up",4.1,1,1,1,1,1);
             MatsFactTime[playerid] = 15;
         }
     }*/
    
if(pickupid == cPickup[0]) return ShowPlayerDialog(playeridD_JOINCARS0"Купить транспорт""Вы хотите перейти к покупке транспорта?""Да""Нет");
    if(
pickupid == cPickup[1]) return ShowPlayerDialog(playeridD_JOINCARS+10"Купить транспорт""Вы хотите перейти к покупке транспорта?""Да""Нет");
    if(
pickupid == cPickup[2]) return ShowPlayerDialog(playeridD_JOINCARS+20"Купить транспорт""Вы хотите перейти к покупке транспорта?""Да""Нет");
    if(
pickupid == Pickup[0])
    {
        if(
Pick == false) return SendClientMessage(playeridCOLOR_GREY"В штате нет выборов!");
        if(
PlayerInfo[playerid][pPick] > 0) return SendClientMessage(playeridCOLOR_GREY"Вы уже голосовали на этих выборах!");
        new 
str[256], srrt[256], full 0;
        for(new 
07i++)
        {
             if(
strcmp(PickName[i],"None",false))
               {
                
format(strsizeof(str), "Проголосовать за - %s\n"PickName[i]);
                
strcat(srrtstr);
                
full++;
            }
          }
          if(
full == 0strcat(srrt"Кандидатов нет"), ShowPlayerDialog(playeridD_NULL0"Выборы"srrt"Закрыть""");
          else 
ShowPlayerDialog(playeridD_PICKDIALOG_STYLE_LIST"Выборы"srrt"Принять""Отмена");
          return 
1;
    }
    if(
pickupid == Pickup[2]) // lspd
    
{
        if(
PlayerInfo[playerid][pMember] == F_POLICE_LS || PlayerInfo[playerid][pMember] == F_MAYOR && PlayerInfo[playerid][pRank] == 1)
        {
            if(
GetPVarInt(playerid"GunTimeTake") > gettime()) return SendClientMessage(playeridCOLOR_GREY"Брать оружие можно раз в 5 минут!");
            if(
Mats[1] <= 0) return SendClientMessage(playeridCOLOR_GREY"На складе нет единиц оружия!");
            
GiveWeapon(playerid24100);
            
GiveWeapon(playerid41100);
            
GiveWeapon(playerid3100);
            
GiveWeapon(playerid31100);
            
SetHealth(playerid100);
            
SetArmour(playerid100);
            
SendClientMessage(playeridCOLOR_LIGHTGREEN"Выдано: {ffffff}Nightstick, Desert Eagle, M4");
            
Mats[1]--;
            
format(string50"Единиц оружия: {9ACD32}%i / 1000"Mats[1]);
            
Update3DTextLabelText(tPickup[3], 0xFFFFFFFFstring);
            
SetOtherInt("lspdmats"Mats[1]);
            
SetPVarInt(playerid"GunTimeTake"gettime()+300);
        }
        else 
SendClientMessage(playeridCOLOR_GREY"Вы не можете взять комплект оружия!");
        return 
1;
    }
    if(
pickupid == Pickup[3]) // sfpd
    
{
         if(
PlayerInfo[playerid][pMember] != F_POLICE_SF) return SendClientMessage(playeridCOLOR_GREY"Вы не можете взять комплект оружия!");
        if(
GetPVarInt(playerid"GunTimeTake") > gettime()) return SendClientMessage(playeridCOLOR_GREY"Брать оружие можно раз в 5 минут!");
        if(
Mats[2] <= 0) return SendClientMessage(playeridCOLOR_GREY"На складе нет единиц оружия!");
        
GiveWeapon(playerid24100);
        
GiveWeapon(playerid41100);
        
GiveWeapon(playerid3100);
        
GiveWeapon(playerid31100);
        
SetHealth(playerid100);
        
SetArmour(playerid100);
        
SendClientMessage(playeridCOLOR_LIGHTGREEN"Выдано: {ffffff}Nightstick, Desert Eagle, M4");
        
Mats[2]--;
        
SetOtherInt("sfpdmats"Mats[2]);
        
SetPVarInt(playerid"GunTimeTake"gettime()+300);
        
format(string50"Единиц оружия: {9ACD32}%i / 1000"Mats[2]);
        
Update3DTextLabelText(tPickup[4], 0xFFFFFFFFstring);
        return 
1;
    }
    if(
pickupid == Pickup[4]) // fbi
    
{
         if(
PlayerInfo[playerid][pMember] != F_FBI) return SendClientMessage(playeridCOLOR_GREY"Вы не можете взять комплект оружия!");
        if(
GetPVarInt(playerid"GunTimeTake") > gettime()) return SendClientMessage(playeridCOLOR_GREY"Брать оружие можно раз в 5 минут!");
        if(
Mats[4] <= 0) return SendClientMessage(playeridCOLOR_GREY"На складе нет единиц оружия!");
        
GiveWeapon(playerid24100);
        
GiveWeapon(playerid41100);
        
GiveWeapon(playerid29100);
        
GiveWeapon(playerid31100);
        
SetHealth(playerid100);
        
SetArmour(playerid100);
        
SendClientMessage(playeridCOLOR_LIGHTGREEN"Выдано: {ffffff}Desert Eagle, MP5, M4");
        
Mats[4]--;
        
SetOtherInt("fbimats"Mats[4]);
        
SetPVarInt(playerid"GunTimeTake"gettime()+300);
        
format(string50"Единиц оружия: {9ACD32}%i / 1000"Mats[4]);
        
Update3DTextLabelText(tPickup[6], 0xFFFFFFFFstring);
        return 
1;
    }
    if(
pickupid == Pickup[5]) // army
    
{
        if(
PlayerInfo[playerid][pMember] != F_ARMY) return SendClientMessage(playeridCOLOR_GREY"Вы не можете взять комплект оружия!");
        if(
GetPVarInt(playerid"GunTimeTake") > gettime()) return SendClientMessage(playeridCOLOR_GREY"Брать оружие можно раз в 5 минут!");
        if(
Mats[0] > 0)
        {
            
GiveWeapon(playerid24100);
            
GiveWeapon(playerid41100);
            
GiveWeapon(playerid29100);
            
GiveWeapon(playerid31100);
            
SetHealth(playerid100);
            
SetArmour(playerid100);
            
SendClientMessage(playeridCOLOR_LIGHTGREEN"Выдано: {ffffff}Desert Eagle, MP5, M4");
            
Mats[0]--;
            
SetOtherInt("armymats"Mats[0]);
            
SetPVarInt(playerid"GunTimeTake"gettime()+300);
            
format(string50"Единиц оружия: {9ACD32}%i / 1000"Mats[0]);
            
Update3DTextLabelText(tPickup[5], 0xFFFFFFFFstring);
            
Update3DTextLabelText(tPickup[12], 0xFFFFFFFFstring);
        }
        else 
SendClientMessage(playeridCOLOR_GREY"На складе нет единиц оружия!");
        return 
1;
    }
    if(
pickupid == cashcp// 25
    
{
         new 
full 0full_ 0;
        for(new 
04i++)
        {
            if(
getReg_player[playerid][i] != -1full_++;
        }
        if(
full_ 0ShowPlayerDialog(playeridD_NULL0"{ffffff}Очередь""{FF6347}Вы уже зарегестрированы в очереди""Закрыть""");
        else
        {
            for(new 
04i++)
            {
                if(
RegInfo[i][rStatus] == truefull++;
            }
            if(
full 0ShowPlayerDialog(playeridD_JOB+250"Банк""Вы хотите занять очередь?""Да""Нет");
            else 
ShowPlayerDialog(playeridD_NULL0"Банк""Кассиров на дежурстве нет""Закрыть""");
        }
    }
    if(
pickupid == Pickup[6] || pickupid == Pickup[7]) ShowPlayerDialog(playeridD_JOB+310"Одежда""Вы хотите перейти к выбору одежды?""Да""Нет");
    if(
pickupid == Pickup[8]) return ShowPlayerDialog(playeridD_JOB+360"Купить транспорт""Вы хотите перейти к покупке транспорта?""Да""Нет");
    if(
pickupid == Pickup[9]) return ShowPlayerDialog(playeridD_JOB+370"Купить транспорт""Вы хотите перейти к покупке транспорта?""Да""Нет"); // 36-37
    
if(pickupid == Pickup[19])
    {
        new 
pdddialog[2148];
        
format(pdddialogsizeof(pdddialog), "%s%s%s%s%s%s%s%s%s%s%s"newPlayer[0], newPlayer[1], newPlayer[2], newPlayer[3],newPlayer[4], newPlayer[5], newPlayer[6], newPlayer[7],
        
newPlayer[8], newPlayer[9], newPlayer[10]);
        return 
ShowPlayerDialog(playeridD_NULL0"{ffffff}"pdddialog"Закрыть""");
    }
    if(
pickupid == Pickup[20]) return ShowPlayerDialog(playeridD_NULL0"{ffffff}""{ffffff}В разработке""Закрыть""");
    if(
pickupid == Pickup[21])
    {
        new 
pdddialog[2148];
        
format(pdddialogsizeof(pdddialog), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"pddMSG[0], pddMSG[1], pddMSG[2], pddMSG[3], pddMSG[4], pddMSG[5], pddMSG[6], pddMSG[7]
        , 
pddMSG[8], pddMSG[9], pddMSG[10], pddMSG[11], pddMSG[12], pddMSG[13], pddMSG[14], pddMSG[15], pddMSG[16]);
        
ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"{33AAFF}ПДД"pdddialog"Закрыть""");
    }
    if(
pickupid == Pickup[22])
    {
        
format(string256"{ffffff}Введите кол-во кг рыбы:\n\nВы имеете {8d8dff}%i{ffffff} кг рыбы\nНа {8D8DFF}1{ffffff} единицу кг рыбы приходиться {8D8DFF}8 {ffffff}долларов"PlayerInfo[playerid][pFish]);
        
ShowPlayerDialog(playeridD_JOB+601"Рыба"string"Принять""Отмена");
    }
    if(
pickupid == Pickup[23])
    {
         if(
GetPVarInt(playerid"Noun") > 0) return SendClientMessage(playeridCOLOR_GREY"Вы уже работаете на другой работе!");
        if(
PlayerInfo[playerid][pMember] > 0) return SendClientMessage(playeridCOLOR_GREY"Сначало увольтесь из организации!");
        if(
GetPVarInt(playerid"Miner") == 0ShowPlayerDialog(playeridD_JOB+610"Шахтер""Вы хотите начать работу шахтера?""Да""Нет");
        else 
ShowPlayerDialog(playeridD_JOB+620"Шахтер""Вы хотите завершить работу шахтера?""Да""Нет");
    }
    if(
pickupid == Pickup[24])
    {
        new 
pdddialog[2148];
        
format(pdddialogsizeof(pdddialog), "%s%s%s%s%s%s%s%s"minerMSG[0], minerMSG[1], minerMSG[2], minerMSG[3], minerMSG[4], minerMSG[5], minerMSG[6], minerMSG[7]);
        
ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"{33AAFF}"pdddialog"Закрыть""");
    }
    if(
pickupid == Pickup[25])
    {
        new 
pdddialog[2148];
        
format(pdddialogsizeof(pdddialog), "%s%s%s%s%s%s"miner_MSG[0], miner_MSG[1], miner_MSG[2], miner_MSG[3], miner_MSG[4], miner_MSG[5]);
        
ShowPlayerDialog(playerid,D_NULL,DIALOG_STYLE_MSGBOX,"{33AAFF}"pdddialog"Закрыть""");
    }
    if(
pickupid == Pickup[26])
    {
        if(
GetPVarInt(playerid"Miner") > 0) return SendClientMessage(playeridCOLOR_GREY"Вы уже работаете на другой работе!");
        if(
PlayerInfo[playerid][pMember] > 0) return SendClientMessage(playeridCOLOR_GREY"Сначало увольтесь из организации!");
        if(
PlayerInfo[playerid][pLic][0] == 0) return SendClientMessage(playeridCOLOR_GREY"У вас нет водительских прав!");
        if(
GetPVarInt(playerid"Noun") == 0ShowPlayerDialog(playeridD_JOB+630"Работа на бульдозере""Вы хотите начать работу на бульдозере?""Да""Нет");
        else 
ShowPlayerDialog(playeridD_JOB+640"Работа на бульдозере""Вы хотите закончить работу на бульдозере?""Да""Нет");
    }
    if(
pickupid == Pickup[27] || pickupid == Pickup[28] || pickupid == Pickup[29])
    {
        if(
PlayerInfo[playerid][pLevel] > 1) return SendClientMessage(playeridCOLOR_GREY"Функция доступная только 1 уровню!");
        
SetHealth(playerid100);
        return 
1;
    }
    if(
pickupid == Pickup_Mech[GetPVarInt(playerid"PlayerMechVehID")])
    {
        
SetPVarInt(playerid"PlayerMechTime"10);
         
ApplyAnimation(playerid,"CASINO","dealone",4.1,1,1,1,1,1);
         return 
1;
    }
    if(
pickupid == Pickup[30]) return ShowPlayerDialog(playeridD_NULL0"{ffffff}""{ffffff}В разработке""Закрыть""");
    if(
pickupid == Pickup[31])
    {
        new 
frname[6][100];
        for(new 
1<= 5i++)
        {
            
format(frname[i], 32"");
            if(
MafiaMatsSlot[i] != 0format(frname[i], 100"%s{ffffff}\t(Металла:{ffff00} %i{ffffff} кг)"FracInfo[MafiaMatsSlot[i]][fName], MafiaMetal[i]);
            else 
format(frname[i], 32"Пусто");
        }
        new 
fr MafiaInfo[1][mFraction];
        
format(string512"{ffffff}Владелец:\t\t\t\t{ffff00}%s\n{ffffff}Аренда помещения (Минута):\t{ffff00}%i{ffffff} долларов\n\n{ffffff}Руды на складе:\t\t\t{ffff00}%i{ffffff} кг\nРуды на переплавке:\t\t\t{ffff00}%i{ffffff} кг\n\n{ffffff}Слот №1:\t\t\t\t{ffff00}%s\n{ffffff}Слот №2:\t\t\t\t{ffff00}%s\n{ffffff}Слот №3:\t\t\t\t{ffff00}%s\n{ffffff}Слот №4:\t\t\t\t{ffff00}%s\n{ffffff}Слот №5:\t\t\t\t{ffff00}%s\n"
        
,FracInfo[fr][fName], MafiaInfo[1][mMatsPrice]*5MafiaInfo[1][mMineral], MafiaFarrieryfrname[1], frname[2], frname[3], frname[4], frname[5]);
        
ShowPlayerDialog(playeridD_NULL0"Завод"string"Закрыть""");
    }
    if(
pickupid == Pickup[32])
    {
        if(
IsAMafia(playerid) || IsAGang(playerid))
        {
            if(
PlayerInfo[playerid][pRank] < 5) return SendClientMessage(playeridCOLOR_GREY"Функция доступна с 5 ранга!");
            new 
full;
            for(new 
0<= GetMaxPlayers(); i++)
            {
                if(!
IsPlayerConnected(i) || PlayerLogged[i] == 0) continue;
                if(
PlayerInfo[i][pMember] == MafiaInfo[1][mFraction] && PlayerInfo[i][pRank] > && PlayerToKvadrat(i,MafiaInfo[1][mCoord][0], MafiaInfo[1][mCoord][1],MafiaInfo[1][mCoord][2],MafiaInfo[1][mCoord][3])) full++;
            }
            if(
full 0) return SendMes(playeridCOLOR_GREY"Поблизости есть члены мафии: %s"FracInfo[MafiaInfo[1][mFraction]][fName]);
            
ShowPlayerDialog(playeridD_JOB+1141"Слот""Введите номер слота и минуты через запятую:\n\nПример: 1, 20""Принять""Отмена");
        }
        else 
SendClientMessage(playeridCOLOR_GREYYouCanNot);
    }
    if(
pickupid == Pickup[33])
    {
        new 
frnam[5][100];
        for(new 
1<= 4i++)
        {
            
format(frnam[i], 32"");
            if(
MafiaDrugSlot[i] != 0format(frnam[i], 100"%s{ffffff}"FracInfo[MafiaDrugSlot[i]][fName]);
            else 
format(frnam[i], 32"Пусто");
        }
        new 
fr MafiaInfo[2][mFraction];
        
format(string512"{ffffff}Владелец:\t\t\t\t{ffff00}%s\n{ffffff}Аренда помещения (Минута):\t{ffff00}%i{ffffff} долларов\n\n{ffffff}Слот №1:\t\t\t\t{ffff00}%s\n{ffffff}Слот №2:\t\t\t\t{ffff00}%s\n{ffffff}Слот №3:\t\t\t\t{ffff00}%s\n{ffffff}Слот №4:\t\t\t\t{ffff00}%s\n"
        
,FracInfo[fr][fName], MafiaInfo[2][mDrugsPrice]*13,  frnam[1], frnam[2], frnam[3], frnam[4]);
        
ShowPlayerDialog(playeridD_NULL0"Ферма"string"Закрыть""");
    }
    if(
pickupid == Pickup[34])
    {
        if(
IsAMafia(playerid) || IsAGang(playerid))
        {
            if(
PlayerInfo[playerid][pRank] < 5) return SendClientMessage(playeridCOLOR_GREY"Функция доступна с 5 ранга!");
            new 
full;
            for(new 
0<= GetMaxPlayers(); i++)
            {
                if(!
IsPlayerConnected(i) || PlayerLogged[i] == 0) continue;
                if(
PlayerInfo[i][pMember] == MafiaInfo[2][mFraction] && PlayerInfo[i][pRank] > && PlayerToKvadrat(i,MafiaInfo[2][mCoord][0], MafiaInfo[2][mCoord][1],MafiaInfo[2][mCoord][2],MafiaInfo[2][mCoord][3])) full++;
            }
            if(
full 0) return SendMes(playeridCOLOR_GREY"Поблизости есть члены мафии: %s"FracInfo[MafiaInfo[2][mFraction]][fName]);
            
ShowPlayerDialog(playeridD_JOB+1191"Слот""Введите номер слота и минуты через запятую:\n\nПример: 1, 20""Принять""Отмена");
        }
        else 
SendClientMessage(playeridCOLOR_GREYYouCanNot);
    }
    new 
nearest GetNearestVehicleMafia(playerid);
    if(
pickupid == MatsPickup[nearest] && GetPVarInt(playerid"RobMineral") == && !PlayerToKvadrat(playerid,MafiaInfo[1][mCoord][0], MafiaInfo[1][mCoord][1],MafiaInfo[1][mCoord][2],MafiaInfo[1][mCoord][3])
    && !
PlayerToKvadrat(playerid,MafiaInfo[2][mCoord][0], MafiaInfo[2][mCoord][1],MafiaInfo[2][mCoord][2],MafiaInfo[2][mCoord][3]))
    {
        if(
ProductKG[nearest] >= 5000) return SendClientMessage(playeridCOLOR_GREY"В транспорте нет места!");
        if(
IsPlayerAttachedObjectSlotUsed(playerid3))
        {
            
ProductKG[nearest] += 1000;
             
format(string50"Загруженно\n{ffff00}%d / 5000{ffffff} кг",ProductKG[nearest]);
            
Update3DTextLabelText(MatsText[nearest], 0xffffffffstring);
               
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,0);
            
RemovePlayerAttachedObject(playerid,3);
        }
        
SetPlayerCheckpoint(playerid366.0245,862.0482,20.40631.4);
        
SetPVarInt(playerid"RobMineral"1);
        
SendClientMessage(playeridCOLOR_YELLOW"Следуйте на красный чекпоинт");
        return 
1;
    }
    if(
pickupid == MatsPickup[nearest] && GetPVarInt(playerid"FactoryPlaceSF") > && PlayerToKvadrat(playerid,MafiaInfo[1][mCoord][0], MafiaInfo[1][mCoord][1],MafiaInfo[1][mCoord][2],MafiaInfo[1][mCoord][3]))
    {
        if(
GetPVarInt(playerid"FactoryPlaceSF") == 0) return SendClientMessage(playeridCOLOR_GREY"Сначала начните работать на раб. столе!");
        if(
GetPVarInt(playerid"FactoryGunSF") == 0) return 1;
        if(
GunKG[nearest] >= 100) return SendClientMessage(playeridCOLOR_GREY"В транспорте нет места!");
        if(
IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid,3);
        
ClearAnimations(playerid);
        
DeletePVar(playerid"FactoryGunSF");
        
ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
        new 
slot GetPVarInt(playerid"FactorySlot");
        if(
slot == 1SetPlayerCheckpoint(playerid, -2155.5325,-264.1970,36.51561.4);
        if(
slot == 2SetPlayerCheckpoint(playerid, -2158.9153,-264.2672,36.51561.4);
        if(
slot == 3SetPlayerCheckpoint(playerid, -2162.3665,-264.2671,36.51561.4);
        if(
slot == 4SetPlayerCheckpoint(playerid, -2165.8293,-264.2680,36.51561.4);
        if(
slot == 5SetPlayerCheckpoint(playerid, -2169.3394,-264.2683,36.51561.4);
        
ClearAnimations(playerid);
        
ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
        
GunKG[nearest]++;
        
SendMes(playeridCOLOR_YELLOW"Вы доставили {ffffff}1 {ffff00}единицу оружия. Единиц оружия в транспорте: {ffffff}%i"GunKG[nearest]);
        
format(string100"Загруженно\n{ffff00}%d / 100{ffffff} единиц оружия",GunKG[nearest]);
        
Update3DTextLabelText(MatsText[nearest], 0xffffffffstring);
    }
    if(
pickupid == MatsPickup[nearest] && DrugsStatus[nearest] == true && PlayerToKvadrat(playerid,MafiaInfo[2][mCoord][0], MafiaInfo[2][mCoord][1],MafiaInfo[2][mCoord][2],MafiaInfo[2][mCoord][3]))
    {
        if(
GetPVarInt(playerid"DrugsPlayerVeh") == 0)
        {
            new 
full;
            for(new 
1<= 5i++)
            {
                if(
MafiaDrugSlot[i] == PlayerInfo[playerid][pMember] && MafiaDrugSlot[i] != 0full i;
            }
            if(
full == 0) return SendClientMessage(playeridCOLOR_GREY"У вашей организации нет слота на поле!");
            if(
MaxMafiaDrugs[full] == -1) return SendClientMessage(playeridCOLOR_GREY"Урожай собран наркотиков на полет нет!");
            
SetPVarInt(playerid"MafiaDrugsPlace"full);
            new 
slot GetPVarInt(playerid"MafiaDrugsPlace");
            
SendClientMessage(playeridCOLOR_YELLOW"Вы начанли сбор наркотиков, следуйте на чекпоинт");
            
SetPVarInt(playerid"DrugsPlayerVeh"1);
               new 
Float:XFloat:YFloat:Z;
               new 
maxx MaxMafiaDrugs[slot];
            for(new 
0maxx+1i++)
            {
                if(
SeedObjectStatus[slot][i] == true)
                {
                    
GetObjectPos(SeedObject[slot][i], XYZ);
                    
SetPlayerCheckpoint(playeridX-1.0YZ1.6);
                    
SetPVarInt(playerid"DrugsPlayerVeh"1);
                    
SetPVarInt(playerid"DrugsPlayerID"i+1);
                    
SeedObjectStatus[slot][i] = false;
                    break;
                }
            }
            return 
1;
        }
        if(
GetPVarInt(playerid"DrugsPlayerVeh") == 1) return SendClientMessage(playeridCOLOR_GREY"Сначала возьмите наркотики в руки!");
        if(
GetPVarInt(playerid"DrugsPlayerVeh") >= 2)
        {
              new 
slot GetPVarInt(playerid"MafiaDrugsPlace");
            if(
MaxMafiaDrugs[slot] == -1) return SendClientMessage(playeridCOLOR_GREY"Урожай собран наркотиков на полет нет!");
            if(
IsPlayerAttachedObjectSlotUsed(playerid3)) RemovePlayerAttachedObject(playerid,3);
            
ClearAnimations(playerid);
            
ApplyAnimation(playerid,"PED","IDLE_tired",4.1,0,1,1,0,1);
            new 
Float:XFloat:YFloat:Z;
            new 
maxx MaxMafiaDrugs[slot];
            for(new 
0maxx+1i++)
            {
                if(
SeedObjectStatus[slot][i] == true)
                {
                    
GetObjectPos(SeedObject[slot][i], XYZ);
                      
SetPlayerCheckpoint(playeridX-1.0YZ1.6);
                      
SetPVarInt(playerid"DrugsPlayerVeh"1);
                        
SetPVarInt(playerid"DrugsPlayerID"i+1);
                      
SeedObjectStatus[slot][i] = false;
                    break;
                }
            }
            
DrugsKG[nearest]+=100;
            
SendMes(playeridCOLOR_YELLOW"Вы доставили {ffffff}100 {ffff00}грамм наркотиков. Наркотиков в транспорте: {ffffff}%i {ffff00}грамм"DrugsKG[nearest]);
            
format(string100"Загруженно\n{ffff00}%d / 2000{ffffff} грамм",DrugsKG[nearest]);
            
Update3DTextLabelText(MatsText[nearest], 0xffffffffstring);
               if(
GetPVarInt(playerid"DrugsPlayerVeh") - == maxx)
            {
                   
MaxMafiaDrugs[slot] = -1;
                for(new 
05p++) MafiaDrugs[slot][p] = false;
                
DeletePVar(playerid"DrugsPlayerVeh");
                
DeletePVar(playerid"DrugsPlayerID");
                
DeletePVar(playerid"MafiaDrugsPlace");
                for(new 
0GetMaxPlayers(); p++)
                {
                    if(!
IsPlayerConnected(p) || PlayerLogged[p] == || == playerid) continue;
                    if(
GetPVarInt(p"DrugsPlayerVeh") > && PlayerInfo[p][pMember] == PlayerInfo[playerid][pMember])
                    {
                        
DeletePVar(p"DrugsPlayerVeh");
                        
DeletePVar(p"DrugsPlayerID");
                    }
                }
            }
        }
    }
    return 
1;

Reply
#4

Код:
for(new idx = 1; idx <= TOTALBIZZ; idx++)
ту случаем должно быть не так:
Код:
for(new idx = 0; idx < TOTALBIZZ; idx++)
А ещё строки сопоставь, или укажи на какой строке находится public OnPlayerPickUpPickup(playerid, pickupid) ?
Reply
#5

Находится с 11297 по 11755
Но у меня есть догадки.
Проблема скорее всего кроется в Динамичных пикапах.
Но не могу понять где именно.

PHP код:
new TOTALENTER;
#define MAXENTER 100
enum eInfo
{
    
id,
    
eType,
    
eModel,
    
Float:eX,
    
Float:eY,
    
Float:eZ,
    
eInt,
    
eVW,
    
Float:eAngel,
    
Float:erX,
    
Float:erY,
    
Float:erZ,
    
erInt,
    
erVW,
    
Float:erAngel,
    
ePick[2]
};
new 
EnterInfo[MAXENTER][eInfo];
//загрузка из БД
forward LoadEnter();
public 
LoadEnter()
{
    new 
time GetTickCount();
    new 
rowsfields;
    
cache_get_data(rowsfields);
    if(
rows 0)
    {
        for(new 
0rowst++)
        {
            
cache_get_field_content(t"type"string);            EnterInfo[TOTALENTER][eType] = strval(string);//floatstr(
            
cache_get_field_content(t"model"string);        EnterInfo[TOTALENTER][eModel] = strval(string);
            
cache_get_field_content(t"x"string);            EnterInfo[TOTALENTER][eX] = floatstr(string);
            
cache_get_field_content(t"y"string);            EnterInfo[TOTALENTER][eY] = floatstr(string);
            
cache_get_field_content(t"z"string);            EnterInfo[TOTALENTER][eZ] = floatstr(string);
            
cache_get_field_content(t"in"string);            EnterInfo[TOTALENTER][eInt] = strval(string);
            
cache_get_field_content(t"vw"string);            EnterInfo[TOTALENTER][eVW] = strval(string);
            
cache_get_field_content(t"ang"string);            EnterInfo[TOTALENTER][eAngel] = floatstr(string);
            
cache_get_field_content(t"rx"string);            EnterInfo[TOTALENTER][erX] = floatstr(string);
            
cache_get_field_content(t"ry"string);            EnterInfo[TOTALENTER][erY] = floatstr(string);
            
cache_get_field_content(t"rz"string);            EnterInfo[TOTALENTER][erZ] = floatstr(string);
            
cache_get_field_content(t"rin"string);            EnterInfo[TOTALENTER][erInt] = strval(string);
            
cache_get_field_content(t"rvw"string);            EnterInfo[TOTALENTER][erVW] = strval(string);
            
cache_get_field_content(t"rang"string);            EnterInfo[TOTALENTER][erAngel] = floatstr(string);
            
EnterInfo[TOTALENTER][ePick][0] = CreatePickup(EnterInfo[TOTALENTER][eType], 23EnterInfo[TOTALENTER][eX], EnterInfo[TOTALENTER][eY], EnterInfo[TOTALENTER][eZ], EnterInfo[TOTALENTER][eVW]);
            
EnterInfo[TOTALENTER][ePick][1] = CreatePickup(EnterInfo[TOTALENTER][eType], 23EnterInfo[TOTALENTER][erX], EnterInfo[TOTALENTER][erY], EnterInfo[TOTALENTER][erZ], EnterInfo[TOTALENTER][erVW]);
            
TOTALENTER++;
        }
    }
    
printf("[Загрузка входов/выходов]: Было загружено - %d потрачено %d (ms)"TOTALENTER,GetTickCount() - time);
    return 
true;
}
//создание пикапа из игры
//это функция из диалога
if(sscanf(inputtext,"p<,>ii",EnterInfo[TOTALENTER][eType],EnterInfo[TOTALENTER][eModel])) return ShowPlayerDialog(playeridD_ADDNED+21"Добавить пикап""ВАЖНО: Вы должны стоять спиной к стене\n\nПРИМЕР: 1318 , 1","Принять""Отмена");
            
GetPlayerPos(playeridEnterInfo[TOTALENTER][eX], EnterInfo[TOTALENTER][eY], EnterInfo[TOTALENTER][eZ]);
            
GetPlayerFacingAngle(playeridEnterInfo[TOTALENTER][eAngel]);
            
EnterInfo[TOTALENTER][eInt] = GetPlayerInterior(playerid);
            
EnterInfo[TOTALENTER][eVW] = GetPlayerVirtualWorld(playerid);
            
SendClientMessage(playeridCOLOR_LIGHTRED"Координаты созданы. Установите выходные координаты: /ppc");
            
PPC[playerid] = true;
CMD:ppc(playerid)
{
    new 
str1[244];
    if(
PlayerLogged[playerid] == 0) return 1;
       if(
PlayerInfo[playerid][pAdmin] < 1337 || AdminLogged[playerid] == false) return 1;
    if(
PPC[playerid] == false) return SendClientMessage(playeridCOLOR_GREY"Для устоновки выход, создайте вход. Используйте /add");
    
GetPlayerPos(playeridEnterInfo[TOTALENTER][erX], EnterInfo[TOTALENTER][erY], EnterInfo[TOTALENTER][erZ]);
    
GetPlayerFacingAngle(playeridEnterInfo[TOTALENTER][erAngel]);
    
EnterInfo[TOTALENTER][erInt] = GetPlayerInterior(playerid);
    
EnterInfo[TOTALENTER][erVW] = GetPlayerVirtualWorld(playerid);
    
format(str1sizeof(str1), "'%d', '%d', '%f', '%f', '%f', '%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%f'",EnterInfo[TOTALENTER][eType], EnterInfo[TOTALENTER][eModel],EnterInfo[TOTALENTER][eX],EnterInfo[TOTALENTER][eY],EnterInfo[TOTALENTER][eZ],EnterInfo[TOTALENTER][eInt],EnterInfo[TOTALENTER][eVW],EnterInfo[TOTALENTER][eAngel],EnterInfo[TOTALENTER][erX],EnterInfo[TOTALENTER][erY],EnterInfo[TOTALENTER][erZ],EnterInfo[TOTALENTER][erInt],EnterInfo[TOTALENTER][erVW],EnterInfo[TOTALENTER][erAngel]);
    
format(query,sizeof query,"INSERT INTO "TABLE_ENTER" (`type`, `model`, `x`, `y`, `z`, `in`, `vw`, `ang`, `rx`, `ry`, `rz`, `rin`, `rvw`, `rang`) VALUES (%s)"str1);
    
mysql_tquery(dbHandlequery"""");
    
EnterInfo[TOTALENTER][ePick][0] = CreatePickup(EnterInfo[TOTALENTER][eType], 23EnterInfo[TOTALENTER][eX], EnterInfo[TOTALENTER][eY], EnterInfo[TOTALENTER][eZ], EnterInfo[TOTALENTER][eVW]);
    
EnterInfo[TOTALENTER][ePick][1] = CreatePickup(EnterInfo[TOTALENTER][eType], 23EnterInfo[TOTALENTER][erX], EnterInfo[TOTALENTER][erY], EnterInfo[TOTALENTER][erZ], EnterInfo[TOTALENTER][erVW]);
    
SendMes(playeridCOLOR_WHITE"Вы успешно добавили вход/выход № %d"TOTALENTER);
    
PPC[playerid] = false;
    
TOTALENTER++;
    return 
true;
}
//цикл при взаимодействии с пикапом
for(new t=0;t<TOTALENTER;t++)
       {
        if(
GetPVarInt(playerid,"TELEPORTS") < gettime())
        {
            if(
pickupid == EnterInfo[t][ePick][0])
            {
                
SetPlayerPos(playeridEnterInfo[t][erX], EnterInfo[t][erY], EnterInfo[t][erZ]);
                
SetPlayerInterior(playeridEnterInfo[t][erInt]);
                
SetPlayerVirtualWorld(playeridEnterInfo[t][erVW]);
                
SetPlayerFacingAngle(playeridEnterInfo[t][erAngel]);
                
SetCameraBehindPlayer(playerid);
                
SetPVarInt(playerid,"TELEPORTS",gettime()+7);
                break;
               }
            else if(
pickupid == EnterInfo[t][ePick][1])
            {
                   
SetPlayerPos(playeridEnterInfo[t][eX], EnterInfo[t][eY], EnterInfo[t][eZ]);
                
SetPlayerInterior(playeridEnterInfo[t][eInt]);
                
SetPlayerVirtualWorld(playeridEnterInfo[t][eVW]);
                
SetPlayerFacingAngle(playeridEnterInfo[t][eAngel]);
                
SetCameraBehindPlayer(playerid);
                
SetPVarInt(playerid,"TELEPORTS",gettime()+7);
                break;
            }
            return 
true;
        }
    } 
Reply
#6

подниму
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)