Connect Disconnect Textdraws
#1

Hello scripters.

I mapped some text draws using Zamaroht's TD Editor.

I wanna to make a JOIN/QUIT System but not with the death messages, but with the textdraws.

i found a solution that good worked but is one thing in it i want to change it.

First, here is the code :

pawn Код:
// Connect / Disconnect Textdraws © 2010,  Luka P.
#include <a_samp>
#define CONNECT_MESSAGES (5)

new Text:ConnectTextdraw[CONNECT_MESSAGES];
new CurrentIndex;

public OnFilterScriptInit()
{
        for(new i=0; i < CONNECT_MESSAGES; i++)
        {
                ConnectTextdraw[i] = TextDrawCreate(540.000000, 260.000000 + (i * -10), "_");

                TextDrawAlignment(ConnectTextdraw[i], 2);
                TextDrawBackgroundColor(ConnectTextdraw[i], 255);
                TextDrawFont(ConnectTextdraw[i], 1);
                TextDrawLetterSize(ConnectTextdraw[i], 0.200000, 1.000000);
                TextDrawColor(ConnectTextdraw[i], -1);
                TextDrawSetOutline(ConnectTextdraw[i], 1);
                TextDrawSetProportional(ConnectTextdraw[i], 1);
        }
        return 1;
}

public OnPlayerConnect(playerid)
{
        new pname[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, pname, sizeof(pname));

        format(string, sizeof(string), "~g~[Join] ~h~%s(%d)", pname, playerid);

        TextDrawHideForAll(ConnectTextdraw[CurrentIndex]);
        TextDrawSetString(ConnectTextdraw[CurrentIndex], string);
        TextDrawShowForAll(ConnectTextdraw[CurrentIndex]);

        for(new i = 0; i < CONNECT_MESSAGES; i++)
        {
            TextDrawShowForPlayer(playerid, ConnectTextdraw[i]);
        }

        return (CurrentIndex + 1 != CONNECT_MESSAGES) ? (CurrentIndex ++) : (CurrentIndex = 0);
}

public OnPlayerDisconnect(playerid, reason)
{
        new pname[MAX_PLAYER_NAME], string[64];
        GetPlayerName(playerid, pname, sizeof(pname));

        switch(reason)
        {
            case 0: format(string, sizeof(string), "~p~[Timeout] ~h~%s(%d)", pname, playerid);
            case 1: format(string, sizeof(string), "~y~[Quit] ~h~%s(%d)", pname, playerid);
            case 2: format(string, sizeof(string), "~r~[Kick] ~h~%s(%d)", pname, playerid);
        }
       
        TextDrawHideForAll(ConnectTextdraw[CurrentIndex]);
        TextDrawSetString(ConnectTextdraw[CurrentIndex], string);
        TextDrawShowForAll(ConnectTextdraw[CurrentIndex]);

        return (CurrentIndex + 1 != CONNECT_MESSAGES) ? (CurrentIndex ++) : (CurrentIndex = 0);
}

public OnGameModeExit()
{
        for(new i = 0; i < CONNECT_MESSAGES; i++)
        {
            TextDrawDestroy(ConnectTextdraw[i]);
        }
        return 1;
}
there is my mapped 5 text draws:
pawn Код:
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new Text:Textdraw3;
new Text:Textdraw4;

// In OnGameModeInit prefferably, we procced to create our textdraws:
Textdraw0 = TextDrawCreate(540.000000, 220.000000, "~r~~h~[Leave] iFarbod");
TextDrawAlignment(Textdraw0, 2);
TextDrawBackgroundColor(Textdraw0, 255);
TextDrawFont(Textdraw0, 1);
TextDrawLetterSize(Textdraw0, 0.200000, 1.000000);
TextDrawColor(Textdraw0, -1);
TextDrawSetOutline(Textdraw0, 1);
TextDrawSetProportional(Textdraw0, 1);

Textdraw1 = TextDrawCreate(540.000000, 230.000000, "~r~~h~[Leave] iFarbod");
TextDrawAlignment(Textdraw1, 2);
TextDrawBackgroundColor(Textdraw1, 255);
TextDrawFont(Textdraw1, 1);
TextDrawLetterSize(Textdraw1, 0.200000, 1.000000);
TextDrawColor(Textdraw1, -1);
TextDrawSetOutline(Textdraw1, 1);
TextDrawSetProportional(Textdraw1, 1);

Textdraw2 = TextDrawCreate(540.000000, 240.000000, "~r~~h~[Leave] iFarbod");
TextDrawAlignment(Textdraw2, 2);
TextDrawBackgroundColor(Textdraw2, 255);
TextDrawFont(Textdraw2, 1);
TextDrawLetterSize(Textdraw2, 0.200000, 1.000000);
TextDrawColor(Textdraw2, -1);
TextDrawSetOutline(Textdraw2, 1);
TextDrawSetProportional(Textdraw2, 1);

Textdraw3 = TextDrawCreate(540.000000, 250.000000, "~r~~h~[Leave] iFarbod");
TextDrawAlignment(Textdraw3, 2);
TextDrawBackgroundColor(Textdraw3, 255);
TextDrawFont(Textdraw3, 1);
TextDrawLetterSize(Textdraw3, 0.200000, 1.000000);
TextDrawColor(Textdraw3, -1);
TextDrawSetOutline(Textdraw3, 1);
TextDrawSetProportional(Textdraw3, 1);

Textdraw4 = TextDrawCreate(540.000000, 260.000000, "~r~~h~[Leave] iFarbod");
TextDrawAlignment(Textdraw4, 2);
TextDrawBackgroundColor(Textdraw4, 255);
TextDrawFont(Textdraw4, 1);
TextDrawLetterSize(Textdraw4, 0.200000, 1.000000);
TextDrawColor(Textdraw4, -1);
TextDrawSetOutline(Textdraw4, 1);
TextDrawSetProportional(Textdraw4, 1);
i want to messages increase from bottom.
like this :

_
_
_
_
1

then

_
_
_
1
2

then

_
_
1
2
3

then

_
1
2
3
4

then

1
2
3
4
5

then

2
3
4
5
6

...

Someone can help me?

and if it possible how to have a SendConnectMessage() function uses these textdraws.

thanks
Reply
#2

This is the screenshot

http://gyazo.com/219497e11193b405da1d6c445312d4b6

Reply
#3

pawn Код:
new
    Text:ConnectTD[CONNECT_MESSAGES],
    Kill_List_Str[CONNECT_MESSAGES][50]
;

SendConnectMessage(const message[])
{
    for(new idx = 1; idx < CONNECT_MESSAGES; idx++)
        Kill_List_Str[idx - 1] = Kill_List_Str[idx];

    strcat((Kill_List_Str[CONNECT_MESSAGES - 1][0]='\0', Kill_List_Str[CONNECT_MESSAGES - 1]),message,sizeof(Kill_List_Str[]));

    for(new idx = 0; idx < CONNECT_MESSAGES; idx++)
        if(Kill_List_Str[idx][0] != '\0')
        {
            TextDrawSetString(ConnectTD[idx], Kill_List_Str[idx]);
            TextDrawShowForAll(ConnectTD[idx]);
        }
}
Connect_1
Connect_2
Connect_3
Connect_4
Connect_5

In this order must be created in OnGameModeInit
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)