Re: Скриптинг курилка -
OstGot - 23.05.2014
Привет, парни. Вот на днях писал анти-флуд, и возникла проблемка: когда начал вызывать паблик OnPlayerClickTextDraw функцией "CallLocalFunction", мне вышел варнинг, мол, "tag mismatch".
Вызывал я его по-началу вот так:
PHP код:
CallLocalFunction("OnPlayerClickTextDraw", "ii", playerid, clickedid);
При этом лез варнинг, описанный выше. После недолгих поисков, я нашёл, что правильно вызывать это паблик через данную функцию вот так:
PHP код:
CallLocalFunction("OnPlayerClickTextDraw", "ii", playerid, _:clickedid);
Я отлично понимаю из-за чего был варнинг - потому что clickedid объявлен как Text:clickedid, а вызывается он как "i" (integer).
После исправления,варнинг исчез, но я так и не понял, почему нужно было использовать именно "_:" перед нужным нам аргументом.
Как-бы да, с одной стороны покажется странным, я ведь всё исправил, но меня волнует именно причина, ведь нужно самому понимать, что ты пишешь
Re: Скриптинг курилка -
Stepashka - 23.05.2014
А вызвать на прямую что мешало:
pawn Код:
OnPlayerClickTextDraw(playerid, clickedid);
?
А так-то ты просто указал игнорировать так называемый "тип" переменной.
Re: Скриптинг курилка -
OstGot - 23.05.2014
Quote:
Originally Posted by Stepashka
А так-то ты просто указал игнорировать так называемый "тип" переменной.
|
Ясно,спасибо)
Quote:
Originally Posted by Stepashka
А вызвать на прямую что мешало:
pawn Код:
OnPlayerClickTextDraw(playerid, clickedid);
?
|
Не знаю, привычка
Re: Скриптинг курилка -
Urukhay - 25.05.2014
Почему, когда заезжаешь на пикап на машине, он не срабатывает?
Re: Скриптинг курилка -
Eims - 25.05.2014
Quote:
Originally Posted by Urukhay
Почему, когда заезжаешь на пикап на машине, он не срабатывает?
|
Потому что для машин есть специальный тип пикапов -
14
Re: Скриптинг курилка -
Urukhay - 25.05.2014
1. Есть ли такой тип пикапа, который будет браться как в машине, так пешком.
2. Есть ли функция, которая вызывается в тот момент, когда к тягачу присоединилась фура?
Re: Скриптинг курилка -
Eims - 25.05.2014
Quote:
Originally Posted by Urukhay
1. Есть ли такой тип пикапа, который будет браться как в машине, так пешком.
2. Есть ли функция, которая вызывается в тот момент, когда к тягачу присоединилась фура?
|
1) По-моему, нет. Но что мешает поставить обычный пикап и после сделать действие на кнопку с помощью IsPlayerInRangeOfPoint?
2) Опять не, как я знаю - нет. Но что мешает сделать что-то подобное:
PHP код:
stock AttachTrailerToVehicleEx(trailerid, vehicleid)
{
AttachTrailerToVehicle(trailerid, vehicleid);
AttachTrailerToVehicleCallback(trailerid, vehicleid);
return 1;
}
#define AttachTrailerToVehicle AttachTrailerToVehicleEx
forward AttachTrailerToVehicleCallback(trailerid, vehicleid);
public AttachTrailerToVehicleCallback(trailerid, vehicleid)
{
//Нужные действия
return 1;
}
Re: Скриптинг курилка -
Urukhay - 25.05.2014
Quote:
Originally Posted by Eims
1) По-моему, нет. Но что мешает поставить обычный пикап и после сделать действие на кнопку с помощью IsPlayerInRangeOfPoint?
2) Опять не, как я знаю - нет. Но что мешает сделать что-то подобное:
PHP код:
stock AttachTrailerToVehicleEx(trailerid, vehicleid)
{
AttachTrailerToVehicle(trailerid, vehicleid);
AttachTrailerToVehicleCallback(trailerid, vehicleid);
return 1;
}
#define AttachTrailerToVehicle AttachTrailerToVehicleEx
forward AttachTrailerToVehicleCallback(trailerid, vehicleid);
public AttachTrailerToVehicleCallback(trailerid, vehicleid)
{
//Нужные действия
return 1;
}

|
А если она присоединится без вмешательства сценария? Например, когда водитель тягача подъехал, и подцепил ее.
Re: Скриптинг курилка -
Eims - 25.05.2014
Quote:
Originally Posted by Urukhay
А если она присоединится без вмешательства сценария? Например, когда водитель тягача подъехал, и подцепил ее.
|
Хмм, тут уже сложнее. Можно попробовать отследить параметры стандартных колбэков. Возможно, при подобных действиях какой-то из параметров меняется.
Ну а вообще можно попробовать проверять то, в каком авто находится игрок и если в грузовике - раз, например, в 30 секунд проверять IsTrailerAttachedToVehicle. Это самый банальный способ
Re: Скриптинг курилка -
Mutha_X - 25.05.2014
Лол, а коллбек для обновления машин без водителя не фурычит?
Re: Скриптинг курилка -
Jon_De - 27.06.2014
Кавычки ставь
Re: Скриптинг курилка -
lost13 - 29.06.2014
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.
Re: Скриптинг курилка -
lost13 - 29.06.2014
И еще одно, эта функция форматирует не все параметры:
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 все в порядке.
Re: Скриптинг курилка -
OKStyle - 30.06.2014
pawn Код:
format(string, sizeof(string), "You've Set %s's ({FF0000}%d{00FF00}) Health To {FFFFFF}%.1f{00FF00}.", pName, id, amount);
Не?
Re: Скриптинг курилка -
lost13 - 30.06.2014
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);
Не?
|
Что это вообще?))) Ты меня не понял походу)))
Re: Скриптинг курилка -
Stepashka - 30.06.2014
Quote:
Originally Posted by lost13
Что это вообще?))) Ты меня не понял походу)))
|
Это ты не понимаешь что ты хочешь. Ты в курсе что твой вопрос вообще никак не связан с
sscanf?
Re: Скриптинг курилка -
lost13 - 30.06.2014
Quote:
Originally Posted by Stepashka
Это ты не понимаешь что ты хочешь. Ты в курсе что твой вопрос вообще никак не связан с sscanf?
|
Я задал 2 разных вопроса) Посмотри внимательно первый, и он как раз таки напрямую связан со ссканф =/
Re: Скриптинг курилка -
SHOROOP - 30.06.2014
Quote:
Originally Posted by lost13
Я задал 2 разных вопроса) Посмотри внимательно первый, и он как раз таки напрямую связан со ссканф =/
|
За исключением того, что параметры sscanf'ом берутся из строки, вопрос с оным никак не связан.
Цвет текста задается при отсылке - либо как параметр функции SendClientMessage(ToAll), либо в самой строке в фигурных скобках. Чекай, какая из переменных заполнена не так, как нужно, и в зависимости от этого форматируй строку, указывая цвет в том месте, где необходимо.
Re: Скриптинг курилка -
Jon_De - 01.07.2014
----
Re: Скриптинг курилка -
lost13 - 04.07.2014
pawn Код:
[ERROR] CMySQLQuery::Execute[] - (error #2013) Lost connection to MySQL server during query
Это очень плохо? И как восстановить соединение?