SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian > Релизы/Releases

Reply
 
Thread Tools Display Modes
Old 10/03/2012, 01:22 PM   #1
Igorek
Big Clucker
 
Igorek's Avatar
 
Join Date: Oct 2010
Posts: 110
Reputation: 71
Default CursorSystem

Всем привет.
Решил написать свой первый плагин.
Так что, ожидаю любую конструктивную критику

Внимание! Работать будет только на той машине, на которой запущен сервер!
Так что - это всего лишь демонстрация.
Надеюсь, Kye реализует это в sa-mp 0.3e


Функции:

GetCursorX(); - узнать позицию курсора (X)
GetCursorY(); - узнать позицию курсора (Y)
SetCursorPos(x, y); - сменить позицию курсора на экране
BlockCursor(Left, Right, Down, Up); - ограничить перемещение курсора
UnBlockCursor(); - Убрать ограничения

Нахождение положения курсора уже есть в других плагинах.
Например - http://forum.sa-mp.com/showthread.php?t=322695

----------------------------------
Примеры использования:

Для демонстрации написал небольшой фс.
Даже сделал мини-игру
Цель игры наводить мышкой на квадраты в такой последовательности:



Видео:
[ame]http://www.youtube.com/watch?v=G-7ceTmP7AQ[/ame]
[ame]http://www.youtube.com/watch?v=pRNTYjrgJls[/ame]

Код фс:
PHP Code:
//CursorTest by Games Corp
#include <a_samp>

native GetCursorX();
native GetCursorY();
native SetCursorPos(xy);
native BlockCursor(LeftRightDownUp);
native UnBlockCursor();


new 
Text:TestTextDraws[8];
new 
SquaresColors[8] = {255, ...};

forward Update();

public 
OnFilterScriptInit()
{
    
SetTimer("Update"1001);
    
UpdateSquares();
    return 
1;
}

public 
Update()
{
    if(!
IsPlayerConnected(0)) return 1;
    for(new 
ijf8i++)
    {
        if(
GetCursorX() > 245 195 && GetCursorX() < 393 195 && GetCursorY() > 385 179 && GetCursorY() < 547 179)
        {
            if(
SquaresColors[i] == 255)
            {
                
SquaresColors[i] = 1677721855;
                if(
== 0ResetColors();
                else if(
SquaresColors[i] != && SquaresColors[i-1] == 255)
                {
                    
ResetColors();
                    
SetCursorPos(240300);
                }
                if(
== 0SquaresColors[i] = 1677721855;
                    
DestroySquares();
                
UpdateSquares();
                if(
== && SquaresColors[i] == 1677721855)
                {
                    
SendClientMessageToAll(0xFF00FF"You Win!");
                    
ResetColors();
                    
SetCursorPos(240300);
                }
            }
        }
        
j++;
        if(
== 40f++;
    }
    return 
1;
}


public 
OnPlayerConnect(playerid)
{
    for(new 
i8i++)
    {
        
TextDrawShowForPlayer(playeridTestTextDraws[i]);
     }
}

public 
OnPlayerCommandText(playeridcmdtext[])
{
       if(!
strcmp(cmdtext,"/block",true))
    {
        
BlockCursor(1901100245860);
        return 
1;
    }
    
       if(!
strcmp(cmdtext,"/unblock",true))
    {
        
UnBlockCursor();
        return 
1;
    }
    return 
0;
}

stock DestroySquares()
{
    for(new 
i!= 8i++)
    {
        
TextDrawDestroy(TestTextDraws[i]);
    }
}

stock ResetColors()
{
    for(new 
i!= 8i++)
    {
        
SquaresColors[i] = 255;
    }
}

stock UpdateSquares()
{
    for(new 
ixy!= 8i++)
    {
        
CreateTextDrawEx(ixySquaresColors[i]);
        if(
== 30y++;
        else 
x++;
        
TextDrawShowForAll(TestTextDraws[i]);
    }
}

stock CreateTextDrawEx(idX_PosY_Poscolor)
{
    
TestTextDraws[id] = TextDrawCreate(200.000000 98 X_Pos170.00000078*Y_Pos"~n~");
    
TextDrawLetterSize(TestTextDraws[id], 0.5000007.699998);
    
TextDrawSetProportional(TestTextDraws[id], 1);
    
TextDrawSetShadow(TestTextDraws[id], 1);
    
TextDrawUseBox(TestTextDraws[id], 1);
    
TextDrawBoxColor(TestTextDraws[id], color);
    
TextDrawTextSize(TestTextDraws[id], 120.00000098 X_Pos3.000000);

Поставил ограничение, что фс будет работать - когда подключен игрок с ид 0, что вполне нормально если будете тестить.

Скрин:


Команды в фс:
/block - создать ограничение для курсора (190, 1100, 245, 860)
/unblock - убрать ограничение


Для того чтобы использовать ф-ии плагина в любом другом фс, то вверху необходимо добавить:
PHP Code:
native GetCursorX();
native GetCursorY();
native SetCursorPos(xy);
native BlockCursor(LeftRightDownUp);
native UnBlockCursor(); 
Скачать:
Attached Files
File Type: rar CursorSystem.rar (11.2 KB, 33 views)
Igorek is offline   Reply With Quote
Old 10/03/2012, 01:42 PM   #2
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,467
Reputation: 131
Default Re: CursorSystem

Сизисоф труд.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 10/03/2012, 01:50 PM   #3
azen
Big Clucker
 
azen's Avatar
 
Join Date: Apr 2010
Posts: 172
Reputation: 3
Default Re: CursorSystem

Игорь, ты блин слоупок немереных размеров. Шел бы ты отсюда, со своим третьим плагином такого плана
azen is offline   Reply With Quote
Old 03/06/2018, 11:29 AM   #4
DyduShxD
Gangsta
 
DyduShxD's Avatar
 
Join Date: Jan 2013
Location: Romania,Suceava
Posts: 594
Reputation: 6
Default Re: CursorSystem

Yo,Nice idea there. thank you.
DyduShxD is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 04:44 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.