Вопросы по PAWN скриптингу

Gabriel__

Известный
Проверенный
411
183
Как остановить звук проигранный функцией PlayerPlaySound();
 

VADE

Новичок
36
1
Помогите пожалуйста! Я сделал чат, но при вводе какого либо текста, вместо ника пишет пароль!
Вот код:
Код:
public OnPlayerText(playerid, text[])
{
    new string[128];
    if(Login[playerid] == false)
    {
        SCM(playerid, COLOR_GREY, "Âû íå àâòîðèçîâàíû!");
        Kickk(playerid);
        return 0;
    }
    f("%s: %s", GN(playerid), text);
    ProxDetector(20.0, playerid, string, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_GREY, COLOR_GREY);
    SetPlayerChatBubble(playerid, text, COLOR_WHITE, 20.0, 5000);
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
        ApplyAnimation(playerid, "PED", "IDLE_chat", 4.1, 0, 1, 1, 1, 1);
        SetTimerEx("ClearAnim", 3000, false, "i", playerid);
    }
    return 0;
}
 
Последнее редактирование модератором:

2Shae

Известный
149
8
Помогите пожалуйста! Я сделал чат, но при вводе какого либо текста, вместо ника пишет пароль!
Вот код:
Код:
public OnPlayerText(playerid, text[])
{
    new string[128];
    if(Login[playerid] == false)
    {
        SCM(playerid, COLOR_GREY, "Âû íå àâòîðèçîâàíû!");
        Kickk(playerid);
        return 0;
    }
    f("%s: %s", GN(playerid), text);
    ProxDetector(20.0, playerid, string, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_GREY, COLOR_GREY);
    SetPlayerChatBubble(playerid, text, COLOR_WHITE, 20.0, 5000);
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
        ApplyAnimation(playerid, "PED", "IDLE_chat", 4.1, 0, 1, 1, 1, 1);
        SetTimerEx("ClearAnim", 3000, false, "i", playerid);
    }
    return 0;
}
В skype напиши, помогу.
a.k.a-murcielago
 

Gabriel__

Известный
Проверенный
411
183
Есть такой простенький античит на телепортацию. Но в нем есть баг если разогнаться на машине и выпрыгнуть из неё, то произойдет ложное срабатывание.

C++:
public AC_CheckPlayerPos(playerid) /* Секундный таймер*/
{
    new Float:max_distance;
      
    if( IsPlayerInAnyVehicle(playerid) ||
    GetPlayerSurfingVehicleID(playerid) != INVALID_VEHICLE_ID) // Если игрок в транспорте или стоит на нем
    {
       max_distance = 150.0;
    }
    else    // На ногах
    {
       max_distance = 40.0;
    }

    // Get distance
    new Float:distance = GetPlayerDistanceFromPoint(playerid,
    AC_pData[playerid][pPos][0],
    AC_pData[playerid][pPos][1],
    AC_pData[playerid][pPos][2]
    );
    // Check distance
    if(distance > max_distance)
    {
       Kick(playerid); // Кикаем
    }
    else
    {
       // Обновляем переменные
       GetPlayerPos(playerid,
        AC_pData[playerid][pPos][0],
        AC_pData[playerid][pPos][1],
        AC_pData[playerid][pPos][2]);
    }
}

Если пофиксить этот баг таким образом.
C++:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) /* Игрок покинул машину*/
    {
    
GetPlayerPos(playerid,
        AC_pData[playerid][pPos][0],
        AC_pData[playerid][pPos][1],
        AC_pData[playerid][pPos][2]
        );
    }
    return 1;
}
То получается уязвимость античита. Достаточно просто телепортироваться в машине в любое место на карте и в собейте нажать на N.
 

SR_team

like pancake
BH Team
4,809
6,488
Есть такой простенький античит на телепортацию. Но в нем есть баг если разогнаться на машине и выпрыгнуть из неё, то произойдет ложное срабатывание.

C++:
public AC_CheckPlayerPos(playerid) /* Секундный таймер*/
{
    new Float:max_distance;
     
    if( IsPlayerInAnyVehicle(playerid) ||
    GetPlayerSurfingVehicleID(playerid) != INVALID_VEHICLE_ID) // Если игрок в транспорте или стоит на нем
    {
       max_distance = 150.0;
    }
    else    // На ногах
    {
       max_distance = 40.0;
    }

    // Get distance
    new Float:distance = GetPlayerDistanceFromPoint(playerid,
    AC_pData[playerid][pPos][0],
    AC_pData[playerid][pPos][1],
    AC_pData[playerid][pPos][2]
    );
    // Check distance
    if(distance > max_distance)
    {
       Kick(playerid); // Кикаем
    }
    else
    {
       // Обновляем переменные
       GetPlayerPos(playerid,
        AC_pData[playerid][pPos][0],
        AC_pData[playerid][pPos][1],
        AC_pData[playerid][pPos][2]);
    }
}

Если пофиксить этот баг таким образом.
C++:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) /* Игрок покинул машину*/
    {
   
GetPlayerPos(playerid,
        AC_pData[playerid][pPos][0],
        AC_pData[playerid][pPos][1],
        AC_pData[playerid][pPos][2]
        );
    }
    return 1;
}
То получается уязвимость античита. Достаточно просто телепортироваться в машине в любое место на карте и в собейте нажать на N.
Я бы тебе сказал 1 способ. Но он нигде не учитывается, так что пусть остается тайной, а то потом даже на 1 метр нельзя будет телепортироваться
 

Nexius

Известный
34
29
Я бы тебе сказал 1 способ. Но он нигде не учитывается, так что пусть остается тайной, а то потом даже на 1 метр нельзя будет телепортироваться
Какой смысл тогда об этом писать? Ключевое слово здесь "бы", потому пост никакой полезности не имеет.

То получается уязвимость античита. Достаточно просто телепортироваться в машине в любое место на карте и в собейте нажать на N.
Имхо, кроме как в таком случае поставить вместе с этим античит на тп в автомобиле, лучше вариантов скорее всего нет.
 

Mark Horn

Новичок
1
0
Что делать если я пытаюсь изменить строки у меня вообще больше не меняется НЕЧЕГО!