 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
серв крашится на ежечасной функции
| |
| 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; }
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
|
 |
|
 | |
| |
|