При онлайне участок паблика не вызывается
#1

В общем я перевел некотрые моменты на один таймер и почему то при онлайне некотрые участки не всегда срабатывают

new secondAll = 1;
Паблик ниже вызывается таймером с обновлением в одну секунду, я вырезал только участок. Проблема том что паблик действует не на всех игроков хотя я выставил цикл
PHP код:
Process(TimeUpdate()){
    for(new 
i;i<MAX_PLAYERS;i++)
    if(
IsPlayerConnected(i)){
        if(
secondAll%== 0){ // эт участок каждые 2 секунды
        
if (PlayerToPoint(2.0i,948.3940,2439.8352,11.1896 ) && GetPlayerState(i) == PLAYER_STATE_ONFOOT)     // lift1
          
{
                
MoveObject(lift1,948.7943122439.68994142.391544,10.0);
                
SetTimerEx("CloseAPGate"100000"ii"8i);
        }
        if (
PlayerToPoint(2.0i,956.9346,2432.8330,43.7468 ) && GetPlayerState(i) == PLAYER_STATE_ONFOOT)     // lift2
        
{
                
MoveObject(lift2,957.2704472432.76416081.292969,10.0);
                
SetTimerEx("CloseAPGate"100000"ii"9i);
        }
        if (
PlayerToPoint(2.0i,957.2200,2443.4250,82.4810 ) && GetPlayerState(i) == PLAYER_STATE_ONFOOT)     // lift3
        
{
                
MoveObject(lift3,956.3643192442.081299198.766342,10.0);
                
SetTimerEx("CloseAPGate"200000"ii"10i);
        }
        if(
IsApplyAnimation(i"FALL_fall") && letai[i] == && full[i] == && PData[i][spawned])
        {
        
GivePlayerWeapon(i,46,1);
        }
         if(
PlayerInfo[i][God] == 1SetPlayerHealth(i,100000);
        if(
PlayerInfo[i][GodCar] == && IsPlayerInAnyVehicle(i)) SetVehicleHealth(GetPlayerVehicleID(i),10000);
        }}
    if(
secondAll%(60*60) == 0secondAll 0;
    return 
secondAll++;

Еще раз суть проблемы в том что, в этом паблике у меня проверки различные на читеров, открытие ворот, но дело в том что не на всех игроков выполняется паблик, одного может показать с миниганом а второй хотя у него он точно есть не покажет так же и с воротами
Reply
#2

Если честно то что-то вы мудрите с лифтами, создавать столько таймеров если я не схожу с точки. Пересмотрите ваши "лифты".
Reply
#3

Ну это не ворота, это платформа поднимает игрока, те таймеры что после вызываются после выполнения возвращают платформу на место
Reply
#4

PHP код:
new Lift[MAX_GATE char];
Process(TimeUpdate())
{
    if(
secondAll%== 0)
    { 
// ýò ó÷àñòîê êàæäûå 2 ñåêóíäû
        
for(new iMAX_PLAYERSi++)
        if(
IsPlayerConnected(i))
        {
            if(
GetPlayerState(i) == PLAYER_STATE_ONFOOT)
            {
                if (
PlayerToPoint(2.0i,948.3940,2439.8352,11.1896) && Lift{8} == 0)     // lift1
                
{
                    
Lift{8}=1;
                    
MoveObject(lift1,948.7943122439.68994142.391544,10.0);
                    
SetTimerEx("CloseAPGate"100000"ii"8i);
                }
                if (
PlayerToPoint(2.0i,956.9346,2432.8330,43.7468) && Lift{9} == 0)     // lift2
                
{
                    
Lift{9}=1;
                    
MoveObject(lift2,957.2704472432.76416081.292969,10.0);
                    
SetTimerEx("CloseAPGate"100000"ii"9i);
                }
                if (
PlayerToPoint(2.0i,957.2200,2443.4250,82.4810) && Lift{10} == 0)     // lift3
                
{
                    
Lift{10}=1;
                    
MoveObject(lift3,956.3643192442.081299198.766342,10.0);
                    
SetTimerEx("CloseAPGate"200000"ii"10i);
                }
            }
            if(
IsApplyAnimation(i"FALL_fall") && letai[i] == && full[i] == && PData[i][spawned])
            {
                
GivePlayerWeapon(i,46,1);
            }
            if(
PlayerInfo[i][God] == 1SetPlayerHealth(i,100000.0);
            if(
PlayerInfo[i][GodCar] == && IsPlayerInAnyVehicle(i)) SetVehicleHealth(GetPlayerVehicleID(i),10000.0);
        }
    }
    if(
secondAll%(60*60) == 0secondAll 0;
    return 
secondAll++;

Lift{i}=0; в CloseAPGate примерно так делай хотябы.
Reply
#5

Да не, все работает исправно, игрок как только становится в точку моментально поднимается так что процесс только раз выполняется, проблема возникла когда я делал рендеринг по таймеру, когда на сервере игрока 4 все отлично когда >8 некоторые участки для некоторых игроков просто не выполняются.
И такого рода вопрос, большая ли разница если будут несколько таймеров один на 1 секунду второй на час а третий 5 минут или все же лучше вариант с рендерингом, но вот у меня просто некотрых игроков минует выполнение
Reply
#6

Quote:

Да не, все работает исправно, игрок как только становится в точку моментально поднимается так что процесс только раз выполняется

За-то таймеров запускается на их закрытие...
Quote:

И такого рода вопрос, большая ли разница если будут несколько таймеров один на 1 секунду второй на час а третий 5 минут или все же лучше вариант с рендерингом, но вот у меня просто некотрых игроков минует выполнение

Если ко всему голову правильно приложить. Проведите дебаг и увидите где "срывает".
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)