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

Привет, парни. Вот на днях писал анти-флуд, и возникла проблемка: когда начал вызывать паблик OnPlayerClickTextDraw функцией "CallLocalFunction", мне вышел варнинг, мол, "tag mismatch".
Вызывал я его по-началу вот так:
PHP код:
CallLocalFunction("OnPlayerClickTextDraw""ii"playeridclickedid); 
При этом лез варнинг, описанный выше. После недолгих поисков, я нашёл, что правильно вызывать это паблик через данную функцию вот так:
PHP код:
CallLocalFunction("OnPlayerClickTextDraw""ii"playerid_:clickedid); 
Я отлично понимаю из-за чего был варнинг - потому что clickedid объявлен как Text:clickedid, а вызывается он как "i" (integer).
После исправления,варнинг исчез, но я так и не понял, почему нужно было использовать именно "_:" перед нужным нам аргументом.
Как-бы да, с одной стороны покажется странным, я ведь всё исправил, но меня волнует именно причина, ведь нужно самому понимать, что ты пишешь
Reply

А вызвать на прямую что мешало:
pawn Код:
OnPlayerClickTextDraw(playerid, clickedid);
?

А так-то ты просто указал игнорировать так называемый "тип" переменной.
Reply

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
А так-то ты просто указал игнорировать так называемый "тип" переменной.
Ясно,спасибо)

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
А вызвать на прямую что мешало:
pawn Код:
OnPlayerClickTextDraw(playerid, clickedid);
?
Не знаю, привычка
Reply

Почему, когда заезжаешь на пикап на машине, он не срабатывает?
Reply

Quote:
Originally Posted by Urukhay
Посмотреть сообщение
Почему, когда заезжаешь на пикап на машине, он не срабатывает?
Потому что для машин есть специальный тип пикапов - 14
Reply

1. Есть ли такой тип пикапа, который будет браться как в машине, так пешком.
2. Есть ли функция, которая вызывается в тот момент, когда к тягачу присоединилась фура?
Reply

Quote:
Originally Posted by Urukhay
Посмотреть сообщение
1. Есть ли такой тип пикапа, который будет браться как в машине, так пешком.
2. Есть ли функция, которая вызывается в тот момент, когда к тягачу присоединилась фура?
1) По-моему, нет. Но что мешает поставить обычный пикап и после сделать действие на кнопку с помощью IsPlayerInRangeOfPoint?
2) Опять не, как я знаю - нет. Но что мешает сделать что-то подобное:
PHP код:
stock AttachTrailerToVehicleEx(traileridvehicleid)
{
    
AttachTrailerToVehicle(traileridvehicleid);
    
AttachTrailerToVehicleCallback(traileridvehicleid);
    return 
1;
}
#define AttachTrailerToVehicle AttachTrailerToVehicleEx
forward AttachTrailerToVehicleCallback(traileridvehicleid);
public 
AttachTrailerToVehicleCallback(traileridvehicleid)
{
    
//Нужные действия
    
return 1;

Reply

Quote:
Originally Posted by Eims
Посмотреть сообщение
1) По-моему, нет. Но что мешает поставить обычный пикап и после сделать действие на кнопку с помощью IsPlayerInRangeOfPoint?
2) Опять не, как я знаю - нет. Но что мешает сделать что-то подобное:
PHP код:
stock AttachTrailerToVehicleEx(traileridvehicleid)
{
    
AttachTrailerToVehicle(traileridvehicleid);
    
AttachTrailerToVehicleCallback(traileridvehicleid);
    return 
1;
}
#define AttachTrailerToVehicle AttachTrailerToVehicleEx
forward AttachTrailerToVehicleCallback(traileridvehicleid);
public 
AttachTrailerToVehicleCallback(traileridvehicleid)
{
    
//Нужные действия
    
return 1;

А если она присоединится без вмешательства сценария? Например, когда водитель тягача подъехал, и подцепил ее.
Reply

Quote:
Originally Posted by Urukhay
Посмотреть сообщение
А если она присоединится без вмешательства сценария? Например, когда водитель тягача подъехал, и подцепил ее.
Хмм, тут уже сложнее. Можно попробовать отследить параметры стандартных колбэков. Возможно, при подобных действиях какой-то из параметров меняется.
Ну а вообще можно попробовать проверять то, в каком авто находится игрок и если в грузовике - раз, например, в 30 секунд проверять IsTrailerAttachedToVehicle. Это самый банальный способ
Reply

Лол, а коллбек для обновления машин без водителя не фурычит?
Reply

Кавычки ставь
Reply

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    dcmd(sethealth, 9, cmdtext);
    return 0;
}
 
dcmd_sethealth(playerid, params[])
{
    if(IsPlayerAdmin(playerid)) // IsPlayerAdmin check (we want only RCON admins to use this command (error message at bottom if the player isn't logged into RCON)
    {
        new id, Float:amount, string[70], pName[MAX_PLAYER_NAME]; // Create the variables needed for this command. id = the id we want to set the health of, amount = the amount we're gonna set id's health to and pName is just where we store id's name.
        if(sscanf(params, "uf", id, amount)) return SendClientMessage(playerid, 0xFF0000AA, "Usage: /sethealth (id) (amount)");
        // Here sscanf checks if the command was typed with the correct usage, it were not, so lets send an error message.
        // the "ud" part in the code means: u = playerid or part of player's name, f = the float amount we will set ids health to (So you can also type 100.0 instead of just 100)
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "This player is not connected."); // ID is not connected, send an error message
            else
        {
            GetPlayerName(id, pName, MAX_PLAYER_NAME); // Getting id's name and storing the name in the variable pName
            SetPlayerHealth(id, amount); // Setting id's health to what the user typed as the amount
            format(string, sizeof(string), "You've Set %s's (%d) Health To %d.", pName, id, amount); // Formating the string wich will say how much we set id's health to.
            SendClientMessage(playerid, 0x00FF00AA, string); // Sending the message to the player who typed the command
            return 1; // The command was successfully processed
        }
    }
    else return SendClientMessage(playerid, 0xFF0000AA, "Looks like you forgot the commands! Use /commands for a list of commands."); // Sending the error message to the player who typed the command because he's not logged into RCON
}
Всем привет! Недавно стал юзать sscanf, можно ли сделать выделение цветом отдельного не введенного параметра? В данном случае id и amount.
Reply

И еще одно, эта функция форматирует не все параметры:
pawn Код:
stock Message(playerid, color, msg[], {Float,_}:...){
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;

    if(n){
    new message[128], arg_start, arg_end;
    #emit CONST.alt msg
    #emit LCTRL 5
    #emit ADD
    #emit STOR.S.pri arg_start

    #emit LOAD.S.alt n
    #emit ADD
    #emit STOR.S.pri arg_end
    do{
    #emit LOAD.I
    #emit PUSH.pri
    arg_end -= BYTES_PER_CELL;
    #emit LOAD.S.pri arg_end
    }
    while (arg_end > arg_start);
    // Push the static format parameters.
    #emit PUSH.S msg
    #emit PUSH.C 128
    #emit PUSH.ADR message

    n += BYTES_PER_CELL * 3;
    #emit PUSH.S n
    #emit SYSREQ.C format

    n += BYTES_PER_CELL;
    #emit LCTRL 4
    #emit LOAD.S.alt n
    #emit ADD
    #emit SCTRL 4

    return SendClientMessage(playerid, color, message);
    }else{
    return SendClientMessage(playerid, color, msg);}}
Вот пример, форматирует только playerid и text, а имя игрока нет, причем если урать текст, то имя показываться будет:
pawn Код:
Message(playerid, -1, "%d %s: '%s'",playerid, GetName(playerid), text);
С GetName все в порядке.
Reply

pawn Код:
format(string, sizeof(string), "You've Set %s's ({FF0000}%d{00FF00}) Health To {FFFFFF}%.1f{00FF00}.", pName, id, amount);
Не?
Reply

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
pawn Код:
format(string, sizeof(string), "You've Set %s's ({FF0000}%d{00FF00}) Health To {FFFFFF}%.1f{00FF00}.", pName, id, amount);
Не?
Что это вообще?))) Ты меня не понял походу)))
Reply

Quote:
Originally Posted by lost13
Посмотреть сообщение
Что это вообще?))) Ты меня не понял походу)))
Это ты не понимаешь что ты хочешь. Ты в курсе что твой вопрос вообще никак не связан с sscanf?
Reply

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Это ты не понимаешь что ты хочешь. Ты в курсе что твой вопрос вообще никак не связан с sscanf?
Я задал 2 разных вопроса) Посмотри внимательно первый, и он как раз таки напрямую связан со ссканф =/
Reply

Quote:
Originally Posted by lost13
Посмотреть сообщение
Я задал 2 разных вопроса) Посмотри внимательно первый, и он как раз таки напрямую связан со ссканф =/
За исключением того, что параметры sscanf'ом берутся из строки, вопрос с оным никак не связан.
Цвет текста задается при отсылке - либо как параметр функции SendClientMessage(ToAll), либо в самой строке в фигурных скобках. Чекай, какая из переменных заполнена не так, как нужно, и в зависимости от этого форматируй строку, указывая цвет в том месте, где необходимо.
Reply

----
Reply

pawn Код:
[ERROR] CMySQLQuery::Execute[] - (error #2013) Lost connection to MySQL server during query
Это очень плохо? И как восстановить соединение?
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)