Скриптинг курилка

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
В данный момент у меня есть такой код:
PHP код:
stock GetPlayerID(name[]) { 
    for(new 
playerid 0playerid <= GetPlayerPoolSize(); playerid++) { 
        if(!
IsPlayerConnected(playerid)) continue; 
        if(!
strcmp(namePlayerInfo[playerid][pName], true)) { 
            return 
playerid
        } 
    } 
    return 
INVALID_PLAYER_ID
}
/*
    PlayerInfo[playerid][pName] - Переменная которая хранит имя игрока. При коннекте записывается, при дисконнекте очищается.
*/ 
Хочу сделать тоже самое, только через sscanf (Потому что этот вариант быстрей работает):
PHP код:
stock GetPlayerID(name[]) {
    new 
playerid;
    
sscanf(name"u"playerid);
    return 
playerid;

Только возникла проблема, через sscanf оно может также искать по части ника, а мне нужно это отключить.
Опиши где ты используешь эту функцию, что-то я не вижу области применения для неё.
Reply

Например, команда offban:
PHP код:
new userID GetPlayerID("ИМЯ_ИГРОКА");
if(
IsPlayerConnected(userID)) {
    
Kick(userID);

Reply

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
Например, команда offban:
PHP код:
new userID GetPlayerID("ИМЯ_ИГРОКА");
if(
IsPlayerConnected(userID)) {
    
Kick(userID);

Можно использовать обычный sscanf с u, затем проверять количество совпадений, и, в случае их наличия, выдавать сообщение об ошибке и показывать список найденных игроков. Так будет гораздо удобнее.
Пример кода это реализующее можно найти здесь: https://sampforum.blast.hk/showthread.php?tid=602923

Я реализовывал команду /id, которая выводит список всех игроков, ники которых совпадают с введённой частью. Плюс к этому, введённая часть у каждого ника подсвечивается, посмотреть можно здесь, может пригодится.
Reply

crashdetect не отображает строки с ошибками в логе. Только какие то цифры в скобках. Че это?
Компилирую всегда с ключом -d. Как надо при нем всплывает информация об используемой памяти, а на строки не указывает, только на каллбеки.

Кто то подскажет что нибудь?
Reply

Quote:
Originally Posted by Mcc
Посмотреть сообщение
crashdetect не отображает строки с ошибками в логе. Только какие то цифры в скобках. Че это?
Компилирую всегда с ключом -d. Как надо при нем всплывает информация об используемой памяти, а на строки не указывает, только на каллбеки.

Кто то подскажет что нибудь?
Надо компилировать с ключом -d2 или -d3.
Reply

Имел ввиду -d3. Писал с дикого спросоня.
Решил возвратом родного-родимого компилятора, теперь все отлично.
Reply

Что-то я не врубаюсь, как такое возможно https://*********/jltvc-GCFa0?t=1m49s

Чувак стоит в 10 метров от остальных, в том же виртуальном мире, в том же интерьере, в состоянии ON_FOOT, не АФК, но его никто не видит.

Как чит это делает?
Reply

Quote:
Originally Posted by stabker
Посмотреть сообщение
Что-то я не врубаюсь, как такое возможно https://*********/jltvc-GCFa0?t=1m49s

Чувак стоит в 10 метров от остальных, в том же виртуальном мире, в том же интерьере, в состоянии ON_FOOT, не АФК, но его никто не видит.

Как чит это делает?
Инвиз может ?
Reply

Quote:
Originally Posted by cm666
Посмотреть сообщение
Инвиз может ?
Наверное. Поискал, и похоже на то, что из этого собейта https://www.youtube.com/watch?v=nwNe4mRjXV8
Сегодня проверю.
Reply

Quote:
Originally Posted by stabker
Посмотреть сообщение
Что-то я не врубаюсь, как такое возможно https://*********/jltvc-GCFa0?t=1m49s

Чувак стоит в 10 метров от остальных, в том же виртуальном мире, в том же интерьере, в состоянии ON_FOOT, не АФК, но его никто не видит.

Как чит это делает?
Если не ошибаюсь, у данного читера будет surfingvehicleid равно 1, даже если данного транспорта нету рядом с игроком.
Reply

Короче, проблема в том, что этот чит (невидимка) присылает серверу невалидные координаты surfing offsets, из-за чего игрока не видно и админы "уходят в загрузку" при слежке. По ходу, адекватно отловить можно только через плагины.
Reply

Quote:
Originally Posted by stabker
Посмотреть сообщение
Короче, проблема в том, что этот чит (невидимка) присылает серверу невалидные координаты surfing offsets, из-за чего игрока не видно и админы "уходят в загрузку" при слежке. По ходу, адекватно отловить можно только через плагины.
Могу посоветовать плагин RakNet Manager. Достаточно проверять значения surfing offsets на NaN.

Вот псевдокод (я был одним из тех, кто нашел этот способ невидимки в 2013), который показывает работу этой невидимки на стороне клиента:
PHP код:
stOnFootData::sSurfingVehicleID nearestVehicleID
stOnFootData::fSurfingOffsets[0] = NaN
stOnFootData::fSurfingOffsets[1] = NaN
stOnFootData::fSurfingOffsets[2] = NaN
sendOnFootData(); 
Reply

Quote:
Originally Posted by YourShadow
Посмотреть сообщение
Могу посоветовать плагин RakNet Manager. Достаточно проверять значения surfing offsets на NaN.

Вот псевдокод (я был одним из тех, кто нашел этот способ невидимки в 2013), который показывает работу этой невидимки на стороне клиента:
PHP код:
stOnFootData::sSurfingVehicleID nearestVehicleID
stOnFootData::fSurfingOffsets[0] = NaN
stOnFootData::fSurfingOffsets[1] = NaN
stOnFootData::fSurfingOffsets[2] = NaN
sendOnFootData(); 
Я уже так и сделал Спасибо за плагин.

Вот код, мб кому еще пригодится

PHP код:
#define ID_PLAYER_SYNC  (207)
public OnPlayerReceivedPacket(player_idpacket_idBitStream:bs)
{
    if(
packet_id == ID_PLAYER_SYNC)
    {
        new 
surfingvehidFloatsurfingoffsets[3];
        
BS_SetReadOffset(bs408); // packet id + unused data
        
BS_ReadValue(bsRNM_FLOATsurfingoffsets[0], RNM_FLOATsurfingoffsets[1], RNM_FLOATsurfingoffsets[2], RNM_UINT16surfingvehid);
        if(
surfingvehid != && surfingvehid != INVALID_VEHICLE_ID)
        {
            new 
model GetVehicleModel(surfingvehid);
            
            if(!(
400 <= model <= 611))
            {
                
//невалидная машина, возможно читер
            
}
            else
            {
                new 
Floatbiggest_axis vehicle_size[model 400][1];
                if(
vehicle_size[model 400][0] > biggest_axis)
                {
                    
biggest_axis vehicle_size[model 400][0];
                }
                if(
vehicle_size[model 400][2] > biggest_axis)
                {
                    
biggest_axis vehicle_size[model 400][2];
                }
                
biggest_axis *= 2.0;
                
                if(
surfingoffsets[0] != surfingoffsets[0] || surfingoffsets[1] != surfingoffsets[1] || surfingoffsets[2] != surfingoffsets[2] ||
                !(-
biggest_axis <= surfingoffsets[0] <= biggest_axis) || !(-biggest_axis <= surfingoffsets[1] <= biggest_axis) || !(-biggest_axis <= surfingoffsets[2] <= biggest_axis))
                {
                    
//читер
                    
return 1;
                }
            }
        }
    }
    return 
1;

Меня, конечно, смущает, что все пакеты будут пропускаться через pawn...

UPD: На случай, если кто-то будет использовать этот код, учтите, что тут кроме NaN еще стоит проверка на серфиг за границами размера машины (по размерам самой большой оси * 2), и я не уверен, но скорее всего могут быть ошибочные кики, даже несмотря на всю предосторожность.
Reply

Существует ли адекватный способ слать email через SMTP?
Reply

Quote:
Originally Posted by TheMallard
Посмотреть сообщение
Существует ли адекватный способ слать email через SMTP?
А в чем собственно проблема?
Reply

Нашел плагин от Владокса.
Reply

Quote:
Originally Posted by TheMallard
Посмотреть сообщение
Нашел плагин от Владокса.
Можно без плагина обойтись.
Reply

Приветствую. Есть ли у кого то скринт "При попадании в человека, или ударе, звучит колокол".
Reply

Снова приветствую. Есть ли у кого то скрипт "SMS сообщение по ID"?
Reply

Не до конца понял. Просто в игре например пишешь /смс [ид_игрока] [текст], и этому игроку в чате пишет сообщение?)
Reply


Forum Jump:


Users browsing this thread: 16 Guest(s)