Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 12
  1. #1
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±

    Оптимизация

    Подскажите пожалуйста можно ли оптимизировал этот таймер?


    PHP код:
    public scriptSync(playerid)
        {
            for(new 
    i=0i<MAX_PLAYERSi++)
            {
                if(!
    IsPlayerNPC(i))
                {
                    if(
    IsPlayerInAnyVehicle(i) && NoNeed(GetPlayerVehicleID(i)))
                    {
                        new 
    Float:MaxZ;
                        
    GetVehicleVelocity(GetPlayerVehicleID(i),FP_Speed_Car_C[i][0],FP_Speed_Car_C[i][1],FP_Speed_Car_C[i][2]);
                        
    FP_Speed_Car[i]=floatround(floatsqroot(FP_Speed_Car_C[i][0]*FP_Speed_Car_C[i][0]+FP_Speed_Car_C[i][1]*FP_Speed_Car_C[i][1]+FP_Speed_Car_C[i][2]*FP_Speed_Car_C[i][2])*200.0);
                        if(
    FP_Speed_Car_C[i][2] > MaxZ +0.10 || FP_Speed_Car_C[i][2] < MaxZ -0.10) return 0;
                        
                        if((
    FP_Speed_Car[i]-FP_Speed_Car_1[i])>100)
                        {
                            if(
    GetPlayerState(i)!=PLAYER_STATE_SPECTATING)
                            {
                                new 
    string[256];
                                
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[Спидхак]",playerName(i), i);
                                
    SendMessageToAdmins(redstring);
                                
    SendClientMessage(ired"На сервере запрещены читы!");
                            }
                        }
                        else 
    FP_Speed_Car_1[i]=FP_Speed_Car[i];
                    }
                }
            }
            
            for(new 
    i=0i<MAX_PLAYERSi++)
            {

                new 
    AnimLib[30], AnimName[30];
                
    GetAnimationName(GetPlayerAnimationIndex(i), AnimLibsizeof(AnimLib), AnimNamesizeof(AnimName));
                if(
    GetPlayerSpeed(i) > 60 && strcmp(AnimLib"SWIM"true) == && strcmp(AnimName"SWIM_crawl"true) == 0)
                {
                    new 
    string[256];
                    
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[FLY HACK]",playerName(i), i);
                    
    SendMessageToAdmins(redstring);
                    
    SendClientMessage(ired"На сервере запрещены читы!");
                }
            }

            for(new 
    iGetMaxPlayers(); i++)
            {
                if(
    IsPlayerConnected(i) && countpos[i] != 0)
                {
                    
    countpos[i]++;
                    if(
    countpos[i] == 4)
                    {
                        
    countpos[i] = 0;
                        
    DestroyObject(Flame[i][0]);
                        
    DestroyObject(Flame[i][1]);
                    }
                }
            }
            return 
    true;
        } 

  2. #2
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Юзай форич

  3. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Можно. Объединить весь код в один цикл + использовать foreach + убрать лишние массивы, используя для хранения текста 1 (при том число ячеек так же следует выделять адекватное, а не 256 и т.п.)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #4
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    DeimoS, я не могу понять как сделать все под один цикл, подскажи пожалуйста
    и еще вопрос цвет, например {ffffff} влияет на кол-во ячеек?
    Последний раз редактировалось codeo; 30.05.2014 в 16:24.

  5. #5
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    PHP код:
    public scriptSync(playerid){
            foreach(
    Playeri){
                if(!
    IsPlayerNPC(i)){
                    if(
    IsPlayerInAnyVehicle(i) && NoNeed(GetPlayerVehicleID(i))){
                        new
                            
    Float:MaxZ
                        
    ;
                        
    GetVehicleVelocity(GetPlayerVehicleID(i),FP_Speed_Car_C[i][0],FP_Speed_Car_C[i][1],FP_Speed_Car_C[i][2]);
                        
    FP_Speed_Car[i]=floatround(floatsqroot(FP_Speed_Car_C[i][0]*FP_Speed_Car_C[i][0]+FP_Speed_Car_C[i][1]*FP_Speed_Car_C[i][1]+FP_Speed_Car_C[i][2]*FP_Speed_Car_C[i][2])*200.0);
                        if(
    FP_Speed_Car_C[i][2] > MaxZ +0.10 || FP_Speed_Car_C[i][2] < MaxZ -0.10) return 0;
                        if((
    FP_Speed_Car[i]-FP_Speed_Car_1[i])>100){
                            if(
    GetPlayerState(i)!=PLAYER_STATE_SPECTATING){
                                static const
                                    
    fmt_str[] = "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[Спидхак]"
                                
    ;
                                const
                                    
    fmt_size sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+4
                                
    ;
                                new
                                    
    string[fmt_size]
                                ;
                                
    format(stringsizeof(string),fmt_str,playerName(i), i);
                                
    SendMessageToAdmins(redstring);
                                
    SendClientMessage(ired"На сервере запрещены читы!");
                            }
                        }
                        else 
    FP_Speed_Car_1[i]=FP_Speed_Car[i];
                    }
                }
            }
            foreach(
    Playeri){
                new
                    
    AnimLib[30],
                    
    AnimName[30]
                ;
                
    GetAnimationName(GetPlayerAnimationIndex(i), AnimLibsizeof(AnimLib), AnimNamesizeof(AnimName));
                if(
    GetPlayerSpeed(i) > 60 && strcmp(AnimLib"SWIM"true) == && strcmp(AnimName"SWIM_crawl"true) == 0){
                       static const
                           
    fmt_str0[] = "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[FLY HACK]"
                       
    ;
                    const
                        
    fmt_size0 sizeof(fmt_str0)-2+MAX_PLAYER_NAME-2+4
                    
    ;
                    new
                        
    string[fmt_size0]
                    ;
                    
    format(stringsizeof(string),fmt_str0,playerName(i), i);
                    
    SendMessageToAdmins(redstring);
                    
    SendClientMessage(ired"На сервере запрещены читы!");
                }
            }
            foreach(
    Playeri){
                if(
    IsPlayerConnected(i) && countpos[i] != 0){
                    
    countpos[i]++;
                    if(
    countpos[i] == 4){
                        
    countpos[i] = 0;
                        
    DestroyObject(Flame[i][0]);
                        
    DestroyObject(Flame[i][1]);
                    }
                }
            }
            return 
    1;
        } 
    Компилятор сам считает ячейки.

    - - - Добавлено - - -

    Проверь.

  6. Пользователь сказал cпасибо:
    codeo (30.05.2014)
  7. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от codeo Посмотреть сообщение
    DeimoS, я не могу понять как сделать все под один цикл, подскажи пожалуйста
    и еще вопрос цвет, например {ffffff} влияет на кол-во ячеек?
    Ну так все 3 цикла прогоняют игроков же. В общем, вот:
    PHP код:
    public scriptSync()
    {
        new 
    string[98+MAX_PLAYER_NAME+3], AnimLib[32], AnimName[32];
        foreach(new 
    iPlayer)
        {
            if(
    IsPlayerNPC(i)) continue;
            if(
    IsPlayerInAnyVehicle(i) && NoNeed(GetPlayerVehicleID(i)))
            {
                new 
    Float:MaxZ;
                
    GetVehicleVelocity(GetPlayerVehicleID(i), FP_Speed_Car_C[i][0], FP_Speed_Car_C[i][1], FP_Speed_Car_C[i][2]);
                
    FP_Speed_Car[i] = floatround(floatsqroot(FP_Speed_Car_C[i][0] * FP_Speed_Car_C[i][0] + FP_Speed_Car_C[i][1] * FP_Speed_Car_C[i][1] + FP_Speed_Car_C[i][2] * FP_Speed_Car_C[i][2]) * 200.0);
                if(
    FP_Speed_Car_C[i][2] > MaxZ 0.10 || FP_Speed_Car_C[i][2] < MaxZ 0.10){}
                else
                {
                    if((
    FP_Speed_Car[i] - FP_Speed_Car_1[i]) > 100)
                    {
                        if(
    GetPlayerState(i) != PLAYER_STATE_SPECTATING)
                        {
                            
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[Спидхак]"playerName(i), i);
                            
    SendMessageToAdmins(redstring);
                            
    SendClientMessage(ired"На сервере запрещены читы!");
                        }
                    }
                    else 
    FP_Speed_Car_1[i] = FP_Speed_Car[i];
                }
            }
            
    GetAnimationName(GetPlayerAnimationIndex(i), AnimLibsizeof(AnimLib), AnimNamesizeof(AnimName));
            if(
    GetPlayerSpeed(i) > 60 && strcmp(AnimLib"SWIM"true) == && strcmp(AnimName"SWIM_crawl"true) == 0)
            {
                
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[FLY HACK]"playerName(i), i);
                
    SendMessageToAdmins(redstring);
                
    SendClientMessage(ired"На сервере запрещены читы!");
            }
            if(
    countpos[i])
            {
                
    countpos[i]++;
                if(
    countpos[i] == 4)
                {
                    
    countpos[i] = 0;
                    
    DestroyObject(Flame[i][0]);
                    
    DestroyObject(Flame[i][1]);
                }
            }
        }
        return 
    true;

    playerid там совсем не к месту
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    codeo (30.05.2014)
  9. #7
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    DeimoS,Salvador Спасибо вам, а что изменится если я в паблик добавлю playerid ? ( scriptSync(playerid) )

  10. #8
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от codeo Посмотреть сообщение
    DeimoS,Salvador Спасибо вам, а что изменится если я в паблик добавлю playerid ? ( scriptSync(playerid) )
    ничего.

    А зачем?

  11. #9
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±
    Пришлось заменить античит на спидхак, но теперь проблема, работает только античит на спидхак, а все что ниже не работает..



    PHP код:
    public scriptSync()
    {
        new 
    string[98+MAX_PLAYER_NAME+3], AnimLib[32], AnimName[32];
        foreach(new 
    iPlayer)
        {
            if(
    IsPlayerNPC(i)) continue;
            if(
    IsPlayerConnected(i) && (GetPlayerState(i) == PLAYER_STATE_DRIVER) && NoNeed(GetPlayerVehicleID(i)) && (GetSpeedKM(i) > 250))
            {
                
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[Спидхак]",playerName(i), i);
                
    SendMessageToAdmins(redstring);
                
    SendClientMessage(ired"На сервере запрещены читы!");
                
    //--------------------------------------------------------------
                
    GetAnimationName(GetPlayerAnimationIndex(i), AnimLibsizeof(AnimLib), AnimNamesizeof(AnimName));
                if(
    GetPlayerSpeed(i) > 60 && strcmp(AnimLib"SWIM"true) == && strcmp(AnimName"SWIM_crawl"true) == 0)
                {
                    
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[FLY HACK]"playerName(i), i);
                    
    SendMessageToAdmins(redstring);
                    
    SendClientMessage(ired"На сервере запрещены читы!");
                }
                
    //--------------------------------------------------------------
                
    if(countpos[i])
                {
                    
    countpos[i]++;
                    if(
    countpos[i] == 4)
                    {
                        
    countpos[i] = 0;
                        
    DestroyObject(Flame[i][0]);
                        
    DestroyObject(Flame[i][1]);
                    }
                }
            }
        }
        return 
    true;


  12. #10
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от codeo Посмотреть сообщение
    DeimoS,Salvador Спасибо вам, а что изменится если я в паблик добавлю playerid ? ( scriptSync(playerid) )
    На параметр будет выделяться 4 байта и всё. При том впустую
    И кстати, по поводу
    и еще вопрос цвет, например {ffffff} влияет на кол-во ячеек?
    Да, влиять будет. Любые символы, кроме символов-заполнителей, должны где-то храниться, ведь так? Символы-заполнители заменяются данными, поэтому их учитывать не обязательно, а вот остальное... Даже для пробелов нужны ячейки

    - - - Добавлено - - -

    Цитата Сообщение от codeo Посмотреть сообщение
    Заменил античит на спидхак, но теперь проблема, работает только античит на спидхак, а все что ниже не работает..



    PHP код:
    public scriptSync()
    {
        new 
    string[98+MAX_PLAYER_NAME+3], AnimLib[32], AnimName[32];
        foreach(new 
    iPlayer)
        {
            if(
    IsPlayerNPC(i)) continue;
            if(
    IsPlayerConnected(i) && (GetPlayerState(i) == PLAYER_STATE_DRIVER) && NoNeed(GetPlayerVehicleID(i)) && (GetSpeedKM(i) > 250))
            {
                
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[Спидхак]",playerName(i), i);
                
    SendMessageToAdmins(redstring);
                
    SendClientMessage(ired"На сервере запрещены читы!");
                
    //--------------------------------------------------------------
                
    GetAnimationName(GetPlayerAnimationIndex(i), AnimLibsizeof(AnimLib), AnimNamesizeof(AnimName));
                if(
    GetPlayerSpeed(i) > 60 && strcmp(AnimLib"SWIM"true) == && strcmp(AnimName"SWIM_crawl"true) == 0)
                {
                    
    format(stringsizeof(string), "{FFFF00}Игрок {FF0000}%s{00FFFF}[%d]{FFFF00}: - Подозревается в использовании - {00FF00}[FLY HACK]"playerName(i), i);
                    
    SendMessageToAdmins(redstring);
                    
    SendClientMessage(ired"На сервере запрещены читы!");
                }
                
    //--------------------------------------------------------------
                
    if(countpos[i])
                {
                    
    countpos[i]++;
                    if(
    countpos[i] == 4)
                    {
                        
    countpos[i] = 0;
                        
    DestroyObject(Flame[i][0]);
                        
    DestroyObject(Flame[i][1]);
                    }
                }
            }
        }
        return 
    true;

    Естественно работать не будет. Вы совсем не так вставили... Я же дал готовый код
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •