21:25
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
серв крашится на ежечасной функции
SanSayДата: Среда, 22.06.2011, 09:34 | Сообщение # 1
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
Короче прабла следующая:
мод - Пен
все работает нормально, но иногда... раз в 2-3 месяца, бывает серв ложится на ровном месте, а именно на пайдае который выполняется раз в час.
там идет проверка всех игроков
for(new i = 0; i <= MAXPLAYERS; i++)
{
if(IsPlayerConnected(i) == 1 && PlayerInfo[i][pLevel] > 0)
{
действие

и вот раз в 2-3 месяца, эта проверка, после перебора всех игроков, вместо того, чтобы пойди дальше выполнять код, берет и начинает эту проверку выполнять постоянно... т.е. зацикленно, серв ессно уходит в глубокий аут, пока не рестартанешь.



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2


Сообщение отредактировал SanSay - Среда, 22.06.2011, 09:35
stepmexДата: Среда, 22.06.2011, 20:31 | Сообщение # 2
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Весь колбек выложи.

И IsPlayerConnected возвращает значений типа bool, не стоит их сравнивать с integer



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
SanSayДата: Среда, 22.06.2011, 21:42 | Сообщение # 3
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
stepmex, паблик то выложу[cut=payday]public PayDay()
{
if (gdebug >= 1){printf("DEBUG PayDay()");}
new string[128];
new pay,account,interest;
new rent = 0;
new rentg = 0;
new hour,minute,second;
MuteConnect = 0;

new Year, Month, Day;
getdate(Year, Month, Day);
if(Year == 2011)
{
NewYearGo = 1;
}

gettime(hour,minute,second);
if (hour > TimesKachOff || hour < TimesKachOn)
{
workkach = 0;
}
if (hour <= TimesKachOff || hour >= TimesKachOn)
{
workkach = 1;
}
for(new i = 0; i <= MAXPLAYERS; i++)
{
if(IsPlayerConnected(i) == 1 && PlayerInfo[i][pLevel] > 0)
{
new playername2[MAX_PLAYER_NAME];
GetPlayerName(i, playername2, sizeof(playername2));
account = PlayerInfo[i][pAccount];
new key = PlayerInfo[i][pPhousekey];
if(key != 255)
{
rent = HouseInfo[key][hRent];
if(strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
{
rent = 0;
}
else if(rent > GetPlayerMoney(i))
{
PlayerInfo[i][pPhousekey] = 255;
SendClientMessage(i, COLOR_WHITE, " Вы были выселены");
rent = 0;
}
HouseInfo[key][hTakings] = HouseInfo[key][hTakings]+rent;
}
new tmpintrate;
if (key != 255 && strcmp(playername2, HouseInfo[key][hOwner], true) == 0)
{
tmpintrate = intrate+HouseInfo[key][hLevel];
}
else
{
tmpintrate = 5;
}
if (PlayerInfo[i][pPgaragekey] !=255)
{
rentg = GarageInfo[PlayerInfo[i][pPgaragekey]][grEntcost];
}
interest = (PlayerInfo[i][pAccount]/1000)*(tmpintrate);
pay = PlayerInfo[i][pLevel]*paycheck;
PlayerInfo[i][pExp]++;
XPLogAll(i,"xpPayday");
PlayerPlayMusic(i);
oSetPlayerMoney(i,PlayerInfo[i][pCash]+(pay-rent-rentg));
PlayerInfo[i][pAccount] = account+interest;
BizzInfo[4][bTakings] = BizzInfo[4][bTakings]+((PlayerInfo[i][pAccount]/1000)+intrate);
SendClientMessage(i, COLOR_WHITE, " |___ СЧЁТ В БАНКЕ ___|");
format(string, sizeof(string), " Баланс: $%d", account);
SendClientMessage(i, COLOR_GRAD1, string);
if (tmpintrate <= 9)
{
format(string, sizeof(string), " Проценты: 0.%d процента",tmpintrate);
}
else if (tmpintrate > 9 && tmpintrate <= 19)
{
format(string, sizeof(string), " Проценты: 1.%d процента",tmpintrate-10);
}
else if (tmpintrate > 19 && tmpintrate <= 29)
{
format(string, sizeof(string), " Проценты: 2.%d процента",tmpintrate-20);
}
else
{
format(string, sizeof(string), " Проценты: 0.%d процента",tmpintrate);
}
SendClientMessage(i, COLOR_GRAD2, string);
format(string, sizeof(string), " Прибыль $%d", interest);
SendClientMessage(i, COLOR_GRAD3, string);
SendClientMessage(i, COLOR_GRAD4, " |--------------------------------------|");
format(string, sizeof(string), " Новый баланс: $%d", PlayerInfo[i][pAccount]);
SendClientMessage(i, COLOR_GRAD5, string);
format(string, sizeof(string), " Аренда: -$%d", rent+rentg);
SendClientMessage(i, COLOR_GRAD5, string);
format(string, sizeof(string), "~y~€APЊ‡AЏA~n~~w~CЌEЏ ~n~~g~$%d", pay);
GameTextForPlayer(i, string, 5000, 1);
if(PlayerInfo[i][pAccount] > maxmoney)//patch SanSay
{
format(string, sizeof(string), " Ваш баланс в банке превышает допустимый лимит %d, деньги уменьшены до лимита.", maxmoney);
SendClientMessage(i, COLOR_LIGHTRED, string);
PlayerInfo[i][pAccount] = maxmoney;
}
rent = 0;
rentg = 0;
if(PlayerInfo[i][pRegenArm] > 0 && PlayerInfo[i][pLevel] < 25)
{
format(string, sizeof(string), "%s[%d] pLevel %d pRegenArm %d.", playername2,i,PlayerInfo[i][pLevel],PlayerInfo[i][pRegenArm]);
CustomLog(string);
PlayerInfo[i][pRegenArm] = 0;
}
if(PlayerInfo[i][pRegenHP] > 0 && PlayerInfo[i][pLevel] < 15)
{
format(string, sizeof(string), "%s[%d] pLevel %d pRegenHP %d.", playername2,i,PlayerInfo[i][pLevel],PlayerInfo[i][pRegenHP]);
CustomLog(string);
PlayerInfo[i][pRegenHP] = 0;
}
// PenOnPlayerUpdate(i);
}
}

UpdateZona();//зоны
Checkprop();
CrashCar();
return 1;
}[/cut]
только с ним все впорядке должно быть, т.к. серв может неделю/две проработать без проблем, но вот раз в 2-3 месяца, а то и реже случается глюк.

Добавлено (22.06.2011, 21:42)
---------------------------------------------

Quote (stepmex)
IsPlayerConnected
действительно чушь написана... чет не обращал внимания... почистил серв от этой фигни.спс



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
GoshikДата: Среда, 22.06.2011, 21:44 | Сообщение # 4
Уверенный в себе
Группа: Пользователи
Сообщений: 280
Награды: 1
Город: ---
Репутация: 18
Замечания: 60%
Статус:
У тебя логирование вижу, уверен что ошибка не в работе с файлами?
SanSayДата: Среда, 22.06.2011, 23:01 | Сообщение # 5
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
Goshik, не ну всякое может быть, но какова вероятность, что запись ведется каждый час, а баг вылазит так редко?
думаю минимальна

и я ж описал симптом - проверка всех игроков почемуто зацикливается... тут и надо искать причину я думаю
т.е. серв когбудто вместо
for(new i = 0; i <= MAXPLAYERS; i++)
воспринимает
while и просто не достигает нужного значения и циклит.



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
GoshikДата: Среда, 22.06.2011, 23:07 | Сообщение # 6
Уверенный в себе
Группа: Пользователи
Сообщений: 280
Награды: 1
Город: ---
Репутация: 18
Замечания: 60%
Статус:
Quote (SanSay)
Goshik, не ну всякое может быть, но какова вероятность, что запись ведется каждый час, а баг вылазит так редко? думаю минимальна

У меня когда мод работал на файлах, тоже крэшилось, только чаще чем у тебя, стабильно раз в 2-3 дня, небыло проверок типа if(File) { запись } при работе с файлом

SanSayДата: Среда, 22.06.2011, 23:50 | Сообщение # 7
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
Goshik, не не, знаю такие баги... "мудреный опытом" этот момент исключен, все файлы существуют.


simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
stepmexДата: Четверг, 23.06.2011, 07:58 | Сообщение # 8
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
а что за странный дефайн MAXPLAYERS и почему равно?


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Fus1Дата: Четверг, 23.06.2011, 11:23 | Сообщение # 9
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Quote (stepmex)
а что за странный дефайн MAXPLAYERS и почему равно?


Это скорее всего для уменьшение нагрузки, чтобы брать не все 500 слотов, а допустим
Code

#if defined MAXPLAYERS  
#undef MAXPLAYERS
#endif
#define    MAXPLAYERS   50 //кол-во слотов

ВеликсДата: Четверг, 23.06.2011, 11:35 | Сообщение # 10
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Fus1, MAXPLAYERS нету в стандарте, есть MAX_PLAYERS


[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
SanSayДата: Четверг, 23.06.2011, 23:21 | Сообщение # 11
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
stepmex, это то что сказал Fus1,
#define MAXPLAYERS GetMaxPlayers()
по поводу "=", хз, в моде чет половину "<=", половину просто "<"
ок, поменяю все на "<"... но это тоже к делу думаю не относится, т.к. число слотов полюбой не более 500 получается



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
Dima-kunДата: Четверг, 23.06.2011, 23:37 | Сообщение # 12
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
[MrVelix], и? нельзя чтоли завести?

а по сабжу: мб не совсем в паблике пайдэй это? а например в UpdateZona();//зоныCheckprop();CrashCar(); чо ниб из этого?



Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
SanSayДата: Пятница, 24.06.2011, 17:29 | Сообщение # 13
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
Morino_Reigan, нет, т.к. до них тупо не доходит
в логах следующее:
DEBUG PayDay()
[21:00:29] DEBUG PlayerPlayMusic(0)
[21:00:29] DEBUG PlayerPlayMusic(2)
[21:00:29] DEBUG PlayerPlayMusic(3)
[21:00:29] DEBUG PlayerPlayMusic(5)
[21:00:29] DEBUG PlayerPlayMusic(6)
[21:00:29] DEBUG PlayerPlayMusic(7)
и т.д.

где
DEBUG PayDay() - это if (gdebug >= 1){printf("DEBUG PayDay()");}
DEBUG PlayerPlayMusic(0) - это PlayerPlayMusic(i);
т.е. один раз в пайдай зашла проверка, а из for(new i = 0; i <= MAXPLAYERS; i++) уже не вышла - зациклилась почемуто



simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
HELKERNДата: Пятница, 24.06.2011, 17:51 | Сообщение # 14
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 767
Награды: 17
Город: Улан-Удэ
Репутация: 206
Замечания: 0%
Статус:
SanSay, во первых вынеси new playername2[MAX_PLAYER_NAME]; перед циклом

Quote (SanSay)
[21:00:29] DEBUG PlayerPlayMusic(0)
[21:00:29] DEBUG PlayerPlayMusic(2)
[21:00:29] DEBUG PlayerPlayMusic(3)
[21:00:29] DEBUG PlayerPlayMusic(5)
[21:00:29] DEBUG PlayerPlayMusic(6)
[21:00:29] DEBUG PlayerPlayMusic(7)


При этом Id 1,4 проходили проверку IsPlayerConnected(i) == 1 && PlayerInfo[i][pLevel] > 0 ?

stepmexДата: Пятница, 24.06.2011, 18:13 | Сообщение # 15
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Я тут перебрал твой пбалик ;)
Code
public PayDay()  
{
  if ( 1 <= gdebug)
  {
   printf("DEBUG PayDay()");
  }
  new string[128];
  new pay,account,interest;
  new rent = 0;
  new rentg = 0;
  new hour,minute,second;
  MuteConnect = 0;

  new Year, Month, Day;
  getdate( Year, Month, Day);
  if ( 2011 == Year)
  {
   NewYearGo = 1;
  }

  gettime( hour, minute, second);
  workkach = ( TimesKachOff < hour < TimesKachOn) ? 0 : 1;

  for ( new i, key, playerName[MAX_PLAYER_NAME], tmpintrate; i < MAXPLAYERS; key = 255, strdel( playerName, 0, MAX_PLAYER_NAME), rent = 0, rentg = 0, i++)
  {
   if ( IsPlayerConnected(i) && 0 < PlayerInfo[i][pLevel])
   {
    GetPlayerName( i, playerName, MAX_PLAYER_NAME);
    account = PlayerInfo[i][pAccount];
    key = PlayerInfo[i][pPhousekey];

    if ( 255 != key)
    {
     rent = HouseInfo[key][hRent];
     if ( !strcmp(playerName, HouseInfo[key][hOwner], false))//нельзя игнорировать заглавные буквы в никах!
     {
      rent = 0;
     }
     else if ( rent > GetPlayerMoney(i))
     {
      PlayerInfo[i][pPhousekey] = 255;
      SendClientMessage( i, COLOR_WHITE, " Вы были выселены.");
      rent = 0;
     }
     HouseInfo[key][hTakings] += rent;
    }

    tmpintrate = 5;
    if ( 255 != key && !strcmp(playerName, HouseInfo[key][hOwner], true))
    {
     tmpintrate = intrate + HouseInfo[key][hLevel];
    }
    if (255 != PlayerInfo[i][pPgaragekey])
    {
     rentg = GarageInfo[PlayerInfo[i][pPgaragekey]][grEntcost];
    }

    interest = (( PlayerInfo[i][pAccount] / 1000) * tmpintrate);
    pay = PlayerInfo[i][pLevel] * paycheck;
    PlayerInfo[i][pExp]++;
    XPLogAll( i, "xpPayday");//код функции в студию
    PlayerPlayMusic(i);
    oSetPlayerMoney( i, PlayerInfo[i][pCash] + pay-rent-rentg);
    PlayerInfo[i][pAccount] = account + interest;
    BizzInfo[4][bTakings] = BizzInfo[4][bTakings] + (( PlayerInfo[i][pAccount] / 1000) + intrate);

    SendClientMessage( i, COLOR_WHITE, " |___ СЧЁТ В БАНКЕ ___|");
    format( string, sizeof(string), " Баланс: $%d", account);
    SendClientMessage( i, COLOR_GRAD1, string);

    if ( tmpintrate <= 9)
    {
     format( string, sizeof(string), " Проценты: 0.%d процента.", tmpintrate);
    }
    else if ( 9 <  tmpintrate <= 19)
    {
     format( string, sizeof(string), " Проценты: 1.%d процента.", tmpintrate-10);
    }
    else if (  19 < tmpintrate <= 29)
    {
     format( string, sizeof(string), " Проценты: 2.%d процента.", tmpintrate-20);
    }
    else
    {
     format(string, sizeof(string), " Проценты: 0.%d процента.", tmpintrate);
    }

    SendClientMessage( i, COLOR_GRAD2, string);
    format( string, sizeof(string), " Прибыль $%d.", interest);
    SendClientMessage( i, COLOR_GRAD3, string);
    SendClientMessage( i, COLOR_GRAD4, " |--------------------------------------|");
    format( string, sizeof(string), " Новый баланс: $%d.", PlayerInfo[i][pAccount]);
    SendClientMessage( i, COLOR_GRAD5, string);
    format( string, sizeof(string), " Аренда: -$%d.", rent + rentg);
    SendClientMessage( i, COLOR_GRAD5, string);

    format( string, sizeof(string), "~y~€APЊ‡AЏA~n~~w~CЌEЏ ~n~~g~$%d", pay);
    GameTextForPlayer( i, string, 5000, 1);

    if ( maxmoney < PlayerInfo[i][pAccount])//patch SanSay
    {
     format( string, sizeof(string), " Ваш баланс в банке превышает допустимый лимит %d, деньги уменьшены до лимита.", maxmoney);//как жестоко >:)
     SendClientMessage( i, COLOR_LIGHTRED, string);
     PlayerInfo[i][pAccount] = maxmoney;
    }

    if ( 0 < PlayerInfo[i][pRegenArm] && PlayerInfo[i][pLevel] < 25)
    {
     format( string, sizeof(string), "%s[%d] pLevel %d pRegenArm %d.", playername2,i,PlayerInfo[i][pLevel],PlayerInfo[i][pRegenArm]);
     CustomLog( string);
     PlayerInfo[i][pRegenArm] = 0;
    }
    if(0 < PlayerInfo[i][pRegenHP] && PlayerInfo[i][pLevel] < 15)
    {
     format( string, sizeof(string), "%s[%d] pLevel %d pRegenHP %d.", playername2,i,PlayerInfo[i][pLevel],PlayerInfo[i][pRegenHP]);
     CustomLog( string);
     PlayerInfo[i][pRegenHP] = 0;
    }
    // PenOnPlayerUpdate(i);
   }
  }

  UpdateZona();//зоны
  Checkprop();
  CrashCar();
  return 1;
}



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua