Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 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,282
    Репутация:
    417 ±
    Юзай форич

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

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

    Широко известно, что идеи стоят 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,282
    Репутация:
    417 ±
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от 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 там совсем не к месту
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 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,282
    Репутация:
    417 ±
    Цитата Сообщение от 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от 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;

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

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

    Steve Pavlina

 

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

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

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

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

Ваши права

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