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

В двух инклюдах(vw_skinchange.inc и vw_gunchange.inc) подключенных к одному FS(admins.pwn) используется public OnPlayerClickTextDraw(playerid, Text:clickedid)

Code:
#include "../include/vw_skinchange"
#include "../include/vw_gunchange"
Проблема:
не вызывается OnPlayerClickTextDraw из vw_gunchange.inc

Вот окончания пабликов

vw_skinchange.inc
Code:
public OnPlayerClickTextDraw(playerid, clickedid)
{
....
	#if defined skin_OnPlayerClickTextDraw
		return skin_OnPlayerClickTextDraw(playerid, clickedid);
	#else
		return 0; // Allow other scripts to keep processing OnPlayerConnect
	#endif
}
#if defined _ALS_OnPlayerClickTextDraw
	#undef OnPlayerClickTextDraw
#else
	#define _ALS_OnPlayerClickTextDraw
#endif
#define OnPlayerClickTextDraw skin_OnPlayerClickTextDraw
#if defined skin_OnPlayerClickTextDraw
	forward skin_OnPlayerClickTextDraw(playerid, Text:clickedid);
#endif
vw_gunchange.inc
Code:
public OnPlayerClickTextDraw(playerid, clickedid)
{
....
	#if defined gun_OnPlayerClickTextDraw
		return gun_OnPlayerClickTextDraw(playerid, clickedid);
	#else
		return 0; // Allow other scripts to keep processing OnPlayerConnect
	#endif
}
#if defined _ALS_OnPlayerClickTextDraw
	#undef OnPlayerClickTextDraw
#else
	#define _ALS_OnPlayerClickTextDraw
#endif
#define OnPlayerClickTextDraw gun_OnPlayerClickTextDraw
#if defined gun_OnPlayerClickTextDraw
	forward gun_OnPlayerClickTextDraw(playerid, Text:clickedid);
#endif
Что не так?

Наверно лучше сделать так и не париться
Code:
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
	skin_OnPlayerClickTextDraw(playerid, Text:clickedid);
	gun_OnPlayerClickTextDraw(playerid, Text:clickedid);
	return 0;
}
Reply

Созрел вопрос, позволяет ли самп создавать бота - охранника.
Суть в том, чтобы он ехал за игроком строго по его маршруту на расстоянии 1-2 метров...
Reply

Quote:
Originally Posted by Gettopro
View Post
Созрел вопрос, позволяет ли самп создавать бота - охранника.
Суть в том, чтобы он ехал за игроком строго по его маршруту на расстоянии 1-2 метров...
FCNPC - Fully Controllable NPC (Russian Thread)
Reply

Как убрать срабатывание public OnPlayerClickPlayerTextDraw при двойном щелчке по пункту меню в диалоге со стилем DIALOG_STYLE_LIST?

При нажатии кнопки ОК в диалоге, то public OnPlayerClickPlayerTextDraw не вызывается, т.е. всё нормально.

поставить задержку?

Как отследить в диалоге со стилем DIALOG_STYLE_LIST, что было двойное нажатие по пункту меню, а не просто выбор пункта и нажатие кнопки ОК?
Reply

Если ид ТД 65535 вызовите команду отмены выбора ТД
DIALOG_STYLE_LIST возвращает текст выбраной строки, двойной клик не отследить. При вызове диалога отключи выбор ТД. При завершении верни состояние.
Reply

я знаю что CancelSelectTextDraw и SelectTextDraw вызывают паблик OnPlayerClickPlayerTextDraw.
Но проблема именно при двойном нажатии, т.е. если что то менять, то при нажатии кнопки ОК не будет работать.

Проверка
Code:
	// Handle: They cancelled (with ESC)
	if(clickedid == Text:INVALID_TEXT_DRAW) {
		skinchange_DestroySkinMenu(playerid);
        return 1;.
	}
стоит. Но она не помогает т.к. из таблицы в 21 ячейку, всегда срабатывает ИД 8, т.е. тот который стоит в том месте где находится выбираемая строка диалога. Т.е. получается страница с таблицей текстдровов появляется раньше чем я успеваю нажать второй клик, который закрывает диалог.

Поэтому я сделал задержку выполнения кода. Т.е. появление Меню на 0,1 секунды позже после нажатия кнопки диалога или двойного щелчка.

ПРОВЕРЕНО. РАБОТАЕТ.
Reply

Quote:
Originally Posted by stabker
View Post
Для тех, кто пользуется Notepad++. Случалось ли вам встречаться с подобным багом? Открываешь скобку (предположительно) и ниже, в одно из таких открытий, все летит к чертям http://imgur.com/a/1iJX4
Если кому-то интересно, чтобы избежать этот баг, нужно отключить "снимок сессии и периодическое резервное копирование", а также "резервное копирование" (опции - настройки - резерв. копирование).
Reply

Народ, а что при выгрузке мода обязательно удалять ранее созданные объекты?
Т.е. если я не удалю, и мод снова запустится, то старые останутся?

Вот код, написанный самим Калкором для FS ferriswheel, он удалил:
PHP Code:
public OnFilterScriptExit()
{
    new 
x=0;
    
    
DestroyObject(gFerrisWheel);
    
DestroyObject(gFerrisBase);
    
    
x=0;
    while(
!= NUM_FERRIS_CAGES) {
        
DestroyObject(gFerrisCages[x]);
        
x++;
    }
    return 
1;

Reply

Quote:
Originally Posted by Diman777
View Post
Народ, а что при выгрузке мода обязательно удалять ранее созданные объекты?
Т.е. если я не удалю, и мод снова запустится, то старые останутся?

Вот код, написанный самим Калкором для FS ferriswheel, он удалил:
PHP Code:
public OnFilterScriptExit()
{
    new 
x=0;
    
    
DestroyObject(gFerrisWheel);
    
DestroyObject(gFerrisBase);
    
    
x=0;
    while(
!= NUM_FERRIS_CAGES) {
        
DestroyObject(gFerrisCages[x]);
        
x++;
    }
    return 
1;

FS может быть выгружен или перезагружен, и в OnFilterScriptExit нужно удалять ранее созданные объекты скриптом что бы они не дублировались. Тоже самое и с 3д текстами, транспортом и тому подобным.

При перезагрузке сервера, объекты в OnGameModeExit можно не удалять так как они сами удаляются.
Reply

Хм, всё равно надо проверить, а то мало ли)
Reply

Как правильнее в одну стринговую переменную записать другую переданную через аргументы в функцию?
strcat или format?
Reply

Quote:
Originally Posted by thebatya
View Post
Как правильнее в одну стринговую переменную записать другую переданную через аргументы в функцию?
strcat или format?
Не знаешь как и чем пользоваться? - юзай format, не прогадаешь.
Reply

Quote:
Originally Posted by thebatya
View Post
Как правильнее в одну стринговую переменную записать другую переданную через аргументы в функцию?
strcat или format?
Если массив пустой, то strcat. Если что-то есть или неизвестно, то strmid.
Reply

Не могу разобраться, помогите. Как сделать движение к указанной точке ?
Вот сделал кое что:

Quote:

new Float,Float:y,Float:z,Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
SetPlayerFacingAngle(playerid, a);
SetPlayerPos(playerid, x+5.0*-floatsin(a,degrees), y+5.0*floatcos(a,degrees), z);

Движение туда, куда направлен игрок.
Вот у меня координаты

Quote:

1438.1438,-2287.1487,13.5469

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

Подскажите эдитор для Атач объекта к объекту. Нашёл 2, но работают не правильно(
Reply

Quote:
Originally Posted by Diman777
View Post
Хм, всё равно надо проверить, а то мало ли)
Ну если не веришь, можешь проверить
Reply

Quote:
Originally Posted by thebatya
View Post
Как правильнее в одну стринговую переменную записать другую переданную через аргументы в функцию?
strcat или format?
Можно любым способом.
Если переменная уже имеет какое-то значение, можно сделать так:
PHP Code:
string[0] = '\0';
strcat(stringparams); 
Reply

Quote:
Originally Posted by Eims
View Post
Можно любым способом.
Если переменная уже имеет какое-то значение, можно сделать так:
PHP Code:
string[0] = '\0';
strcat(stringparams); 
Strmid быстрее, чем это.

Quote:
Originally Posted by jakebat
View Post
Как сделать так, чтобы игрок смотрел на эти координаты?
Я уже и радиус вычислял ,шо я только не пробывал. Помогите.
PHP Code:
FloatPlayerFacingAngleToPoint(playeridFloat:XFloat:Y)
{
    new 
Floatp[3];
    
GetPlayerPos(playeridp[0], p[1], p[2]);
    return 
180.0 atan2(p[0] - Xp[1] - Y);

SetPlayerFacingAngle(playerid, PlayerFacingAngleToPoint(playerid, 1438.1438, -2287.1487)); //повернет игрока лицом к нужной точке
Reply

Quote:
Originally Posted by Diman777
View Post
Подскажите эдитор для Атач объекта к объекту. Нашёл 2, но работают не правильно(
Можешь этот попробовать, но для его работы версия сампа не ниже 0.3.7 должна быть.
Для крепления нужно сначала создать эти оба объекта, потом дважды кликнув по одному из них, выбрать в меню "Прикрепить к объекту"
Reply

Quote:
Originally Posted by OstGot
View Post
Можешь этот попробовать, но для его работы версия сампа не ниже 0.3.7 должна быть.
Для крепления нужно сначала создать эти оба объекта, потом дважды кликнув по одному из них, выбрать в меню "Прикрепить к объекту"
Нет, такой не подойдёт, у меня CRMP если помнишь, там 0.3e.
Другой вопрос. А зачем DrawDistance в CreateObject? Я поставил 300.0 и разницы не заметил в расстоянии, на котором будет отображаться объект.
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)