[FilterScript] Map Markers in Zone 51
#1

Map Markers

Author: Bombo
Version: 2.0



v2.0
[+] Nicknames
[@] Marker speed bug fix
[@] Marker update bug fix



Version 2.0


Version 1.0


Long marker - player
Short marker - NPC


All markers are alive!

v2.0
PHP код:
//Map markers by Bombo
//v2.0
#define FILTERSCRIPT
#include <a_samp>
#include <streamer>
#define ZONE_MARK_INTERVAL 5000
new gPlayerMarker[MAX_PLAYERS];
new 
Text3D:gMarkerText[MAX_PLAYERS];
new 
gTimerPlayerZoneMark;
forward update_player_zone_mark();
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    new 
i;
    
    print(
"\n--------------------------------------");
    print(
" Map markers in Area 51 by Bombo");
    print(
"--------------------------------------\n");
    for(
0MAX_PLAYERS; ++i)
    {
        
gPlayerMarker[i] = INVALID_OBJECT_ID;
    }
    
    
gTimerPlayerZoneMark SetTimer("update_player_zone_mark"ZONE_MARK_INTERVALtrue);
    return 
1;
}
public 
OnFilterScriptExit()
{
    new 
i;
    
    
KillTimer(gTimerPlayerZoneMark);
    for(
0MAX_PLAYERS; ++i)
    {
        if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
        {
            
DestroyDynamicObject(gPlayerMarker[i]);
            
gPlayerMarker[i] = INVALID_OBJECT_ID;
            if(!
IsPlayerNPC(i))
            {
                if(
IsValidDynamic3DTextLabel(gMarkerText[i]))
                    
DestroyDynamic3DTextLabel(gMarkerText[i]);
            }
        }
    }
    return 
1;
}
#else
main()
{
    print(
"\n----------------------------------");
    print(
" Map markers in Area 51 by Bombo");
    print(
"----------------------------------\n");
}
#endif
public OnGameModeInit()
{
    
// Don't use these lines if it's a filterscript
    
SetGameModeText("Blank Script");
    
AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 
1;
}
public 
OnGameModeExit()
{
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    if(
gPlayerMarker[playerid] != INVALID_OBJECT_ID)
    {
        
DestroyDynamicObject(gPlayerMarker[playerid]);
        
gPlayerMarker[playerid] = INVALID_OBJECT_ID;
        if(!
IsPlayerNPC(playerid))
            if(
IsValidDynamic3DTextLabel(gMarkerText[playerid]))
                
DestroyDynamic3DTextLabel(gMarkerText[playerid]);
    }
    return 
1;
}
//area 51 markers
public update_player_zone_mark()
{
    new 
ijcolFloat:height;
    new 
Float:xFloat:yFloat:z;
    new 
Float:x0Float:y0Float:z0Float:pathFloat:speed;
    new 
name[64];
    static 
Float:MarkerXY[MAX_PLAYERS][2];
    for(
0MAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
        {
            
strdel(name0sizeof(name)-1);
            
GetPlayerName(inamesizeof(name));
            
col GetPlayerColor(i);
            
GetPlayerPos(ixyz);
            if(
3000.03000.0;
            if(
< -3000.0)= -3000.0;
            if(
3000.03000.0;
            if(
< -3000.0= -3000.0;
               for(
0height 0.0i; ++j)
            {
                if(
IsPlayerInRangeOfPoint(j200xyz))
                    
height floatadd(height0.04);
            }
            
col = (col>>8)|(0xFF000000);
            
floatsub(221.7,floatmul(3.45,floatdiv(floatadd(3000.0,y),6000.0)));
            
floatadd(1821.1,floatmul(3.45,floatdiv(floatadd(3000.0,x),6000.0)));
            if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
            {
                
GetDynamicObjectPos(gPlayerMarker[i], y0x0z0);
                
path VectorSize(y0-yx0-x0);
                
speed floatdiv(path,floatdiv(ZONE_MARK_INTERVAL.0,1200.0));
                if(
IsPlayerNPC(i))
                    
MoveDynamicObject(gPlayerMarker[i], yx6.81speed);
                else
                {
                    
MoveDynamicObject(gPlayerMarker[i], yx7.41speed);
                    if(
VectorSize(MarkerXY[i][0]-xMarkerXY[i][1]-y0) > 0.03)
                    {
                        if(
IsValidDynamic3DTextLabel(gMarkerText[i]))
                            
DestroyDynamic3DTextLabel(gMarkerText[i]);
                        
gMarkerText[i] = CreateDynamic3DTextLabel(nameGetPlayerColor(i), yxfloatadd(7.51,height), 7.0INVALID_PLAYER_IDINVALID_VEHICLE_ID1);
                        
MarkerXY[i][0] = x;
                        
MarkerXY[i][1] = y;
                    }
                }
            }
            else
            {
                if(
IsPlayerNPC(i))
                    
gPlayerMarker[i] = CreateDynamicObject(2590yx6.81000);
                else
                {
                    
gPlayerMarker[i] = CreateDynamicObject(2590yx7.41000);
                    
gMarkerText[i] = CreateDynamic3DTextLabel(nameGetPlayerColor(i), yxfloatadd(7.51,height), 7.0INVALID_PLAYER_IDINVALID_VEHICLE_ID1);
                }
                if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
                    
SetDynamicObjectMaterial(gPlayerMarker[i], 010770"carrier_sfse""ws_shipmetal4"col);
            }
        }
    }
    for(
0MAX_PLAYERS; ++j)
    {
        if(!
IsPlayerConnected(j))
            continue;
        if(
IsPlayerInRangeOfPoint(j10.022018227.4))
        {
            
GetPlayerPos(jxyz);
            
SetPlayerPos(jfloatadd(x,0.00001), yz);
        }
    }

v1.0
PHP код:
//Map marker by Bombo
//v1.0
#define FILTERSCRIPT
#include <a_samp>
#include <streamer>
#define ZONE_MARK_INTERVAL 5000
new gPlayerMarker[MAX_PLAYERS];
new 
gTimerPlayerZoneMark;
forward update_player_zone_mark();
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    new 
i;
    
    print(
"\n--------------------------------------");
    print(
" Map marker in Area 51 by Bombo");
    print(
"--------------------------------------\n");
    
    for(
0MAX_PLAYERS; ++i)
    {
        
gPlayerMarker[i] = INVALID_OBJECT_ID;
    }
    
    
gTimerPlayerZoneMark SetTimer("update_player_zone_mark"ZONE_MARK_INTERVALtrue);
    return 
1;
}
public 
OnFilterScriptExit()
{
    new 
i;
    
     
KillTimer(gTimerPlayerZoneMark);
    for(
0MAX_PLAYERS; ++i)
    {
        if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
        {
            
DestroyDynamicObject(gPlayerMarker[i]);
            
gPlayerMarker[i] = INVALID_OBJECT_ID;
        }
    }
    return 
1;
}
#else
main()
{
    print(
"\n----------------------------------");
    print(
" Map marker in Area 51 by Bombo");
    print(
"----------------------------------\n");
}
#endif
public OnGameModeInit()
{
    
// Don't use these lines if it's a filterscript
    
SetGameModeText("Blank Script");
    
AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 
1;
}
public 
OnGameModeExit()
{
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    if(
gPlayerMarker[playerid] != INVALID_OBJECT_ID)
    {
        
DestroyDynamicObject(gPlayerMarker[playerid]);
        
gPlayerMarker[playerid] = INVALID_OBJECT_ID;
    }
    return 
1;
}
//zone 51 markers
public update_player_zone_mark()
{
    new 
ijcol;
    new 
Float:xFloat:yFloat:z;
    new 
Float:x0Float:y0Float:z0Float:pathFloat:speed;
    for(
0MAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
        {
            
col GetPlayerColor(i);
            
GetPlayerPos(ixyz);
            if(
3000.03000.0;
            if(
< -3000.0)= -3000.0;
            if(
3000.03000.0;
            if(
< -3000.0= -3000.0;
            
col = (col>>8)|(0xFF000000);
            
221.7 3.45*((3000.0 y)/6000.0);
            
1821.1 3.45*((3000.0 x)/6000.0);
            if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
            {
                
GetDynamicObjectPos(gPlayerMarker[i], y0x0z0);
                
path VectorSize(y0-yx0-x0);
                
speed path/(ZONE_MARK_INTERVAL/1000.0);
                if(
IsPlayerNPC(i))
                    
MoveDynamicObject(gPlayerMarker[i], yx6.81speed);
                else
                    
MoveDynamicObject(gPlayerMarker[i], yx7.41speed);
            }
            else
            {
                if(
IsPlayerNPC(i))
                    
gPlayerMarker[i] = CreateDynamicObject(2590yx6.81000);
                else
                    
gPlayerMarker[i] = CreateDynamicObject(2590yx7.41000);
                if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
                    
SetDynamicObjectMaterial(gPlayerMarker[i], 010770"carrier_sfse""ws_shipmetal4"col);
                for(
0MAX_PLAYERS; ++j)
                {
                    if(!
IsPlayerConnected(j))
                        continue;
                    if(
IsPlayerInRangeOfPoint(j10yx7.4))
                    {
                        
GetPlayerPos(jxyz);
                        
SetPlayerPos(jx+0.001yz);
                    }
                }
            }
        }
    }

Credits:
Incognito


The Streamer by Incognito and any Players Color system are needed.
Reply
#2

Thats Cool. The Markers will be Prominent with Player's colors which we can be seen in TAB?
Reply
#3

Quote:
Originally Posted by SpikY_
Посмотреть сообщение
Thats Cool. The Markers will be Prominent with Player's colors which we can be seen in TAB?
Yes, the same colors.
Reply
#4

Well that is awesome, I'll rate it 5 stars.
Reply
#5

Awesome!
Reply
#6

Quote:
Originally Posted by Markdrifter18
Посмотреть сообщение
Well that is awesome, I'll rate it 5 stars.
Thanks

v2.0
[+] Nicknames
[@] Marker speed bug fix
[@] Marker update bug fix


New version 2.0


PHP код:
//Map markers by Bombo
//v2.0
#define FILTERSCRIPT
#include <a_samp>
#include <streamer>
#define ZONE_MARK_INTERVAL 5000
new gPlayerMarker[MAX_PLAYERS];
new 
Text3D:gMarkerText[MAX_PLAYERS];
new 
gTimerPlayerZoneMark;
forward update_player_zone_mark();
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    new 
i;
    
    print(
"\n--------------------------------------");
    print(
" Map markers in Area 51 by Bombo");
    print(
"--------------------------------------\n");
    for(
0MAX_PLAYERS; ++i)
    {
        
gPlayerMarker[i] = INVALID_OBJECT_ID;
    }
    
    
gTimerPlayerZoneMark SetTimer("update_player_zone_mark"ZONE_MARK_INTERVALtrue);
    return 
1;
}
public 
OnFilterScriptExit()
{
    new 
i;
    
    
KillTimer(gTimerPlayerZoneMark);
    for(
0MAX_PLAYERS; ++i)
    {
        if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
        {
            
DestroyDynamicObject(gPlayerMarker[i]);
            
gPlayerMarker[i] = INVALID_OBJECT_ID;
            if(!
IsPlayerNPC(i))
            {
                if(
IsValidDynamic3DTextLabel(gMarkerText[i]))
                    
DestroyDynamic3DTextLabel(gMarkerText[i]);
            }
        }
    }
    return 
1;
}
#else
main()
{
    print(
"\n----------------------------------");
    print(
" Map markers in Area 51 by Bombo");
    print(
"----------------------------------\n");
}
#endif
public OnGameModeInit()
{
    
// Don't use these lines if it's a filterscript
    
SetGameModeText("Blank Script");
    
AddPlayerClass(01958.37831343.157215.3746269.1425000000);
    return 
1;
}
public 
OnGameModeExit()
{
    return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
    
SetPlayerPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraPos(playerid1958.37831343.157215.3746);
    
SetPlayerCameraLookAt(playerid1958.37831343.157215.3746);
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    if(
gPlayerMarker[playerid] != INVALID_OBJECT_ID)
    {
        
DestroyDynamicObject(gPlayerMarker[playerid]);
        
gPlayerMarker[playerid] = INVALID_OBJECT_ID;
        if(!
IsPlayerNPC(playerid))
            if(
IsValidDynamic3DTextLabel(gMarkerText[playerid]))
                
DestroyDynamic3DTextLabel(gMarkerText[playerid]);
    }
    return 
1;
}
//area 51 markers
public update_player_zone_mark()
{
    new 
ijcolFloat:height;
    new 
Float:xFloat:yFloat:z;
    new 
Float:x0Float:y0Float:z0Float:pathFloat:speed;
    new 
name[64];
    static 
Float:MarkerXY[MAX_PLAYERS][2];
    for(
0MAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
        {
            
strdel(name0sizeof(name)-1);
            
GetPlayerName(inamesizeof(name));
            
col GetPlayerColor(i);
            
GetPlayerPos(ixyz);
            if(
3000.03000.0;
            if(
< -3000.0)= -3000.0;
            if(
3000.03000.0;
            if(
< -3000.0= -3000.0;
               for(
0height 0.0i; ++j)
            {
                if(
IsPlayerInRangeOfPoint(j200xyz))
                    
height floatadd(height0.04);
            }
            
col = (col>>8)|(0xFF000000);
            
floatsub(221.7,floatmul(3.45,floatdiv(floatadd(3000.0,y),6000.0)));
            
floatadd(1821.1,floatmul(3.45,floatdiv(floatadd(3000.0,x),6000.0)));
            if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
            {
                
GetDynamicObjectPos(gPlayerMarker[i], y0x0z0);
                
path VectorSize(y0-yx0-x0);
                
speed floatdiv(path,floatdiv(ZONE_MARK_INTERVAL.0,1200.0));
                if(
IsPlayerNPC(i))
                    
MoveDynamicObject(gPlayerMarker[i], yx6.81speed);
                else
                {
                    
MoveDynamicObject(gPlayerMarker[i], yx7.41speed);
                    if(
VectorSize(MarkerXY[i][0]-xMarkerXY[i][1]-y0) > 0.03)
                    {
                        if(
IsValidDynamic3DTextLabel(gMarkerText[i]))
                            
DestroyDynamic3DTextLabel(gMarkerText[i]);
                        
gMarkerText[i] = CreateDynamic3DTextLabel(nameGetPlayerColor(i), yxfloatadd(7.51,height), 7.0INVALID_PLAYER_IDINVALID_VEHICLE_ID1);
                        
MarkerXY[i][0] = x;
                        
MarkerXY[i][1] = y;
                    }
                }
            }
            else
            {
                if(
IsPlayerNPC(i))
                    
gPlayerMarker[i] = CreateDynamicObject(2590yx6.81000);
                else
                {
                    
gPlayerMarker[i] = CreateDynamicObject(2590yx7.41000);
                    
gMarkerText[i] = CreateDynamic3DTextLabel(nameGetPlayerColor(i), yxfloatadd(7.51,height), 7.0INVALID_PLAYER_IDINVALID_VEHICLE_ID1);
                }
                if(
gPlayerMarker[i] != INVALID_OBJECT_ID)
                    
SetDynamicObjectMaterial(gPlayerMarker[i], 010770"carrier_sfse""ws_shipmetal4"col);
            }
        }
    }
    for(
0MAX_PLAYERS; ++j)
    {
        if(!
IsPlayerConnected(j))
            continue;
        if(
IsPlayerInRangeOfPoint(j10.022018227.4))
        {
            
GetPlayerPos(jxyz);
            
SetPlayerPos(jfloatadd(x,0.00001), yz);
        }
    }

Reply
#7

Make proper credits.
Reply
#8

This is awesome!
Reply
#9

Nice One Bombo
Reply
#10

Very nicely done, reminds me a bit of a chess board .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)