View difference between Paste ID: twqsn88q and UTLj3FCV
SHOW: | | - or go back to the newest paste.
1
// This is a comment
2
// uncomment the line below if you want to write a filterscript
3
//#define FILTERSCRIPT
4
5
#include <a_samp>
6
#define MAX_DYN_OBJECTS 1000
7
new Players[MAX_PLAYERS] = {-1, ...};
8
new players;
9
#define foreachTriga(%0) for(new ouf, %0=Players[ouf]; ouf <players; %0=Players[++ouf])
10
11
public OnFilterScriptInit()
12
{
13
	print("\n--------------------------------------");
14
	print(" Стример на pawn 0.1 by Caypen");
15
	print("--------------------------------------\n");
16
	return 1;
17
}
18
19
public OnFilterScriptExit()
20
{
21
	return 1;
22
}
23
new DynObjects;
24
enum ObjInf
25
{
26
	modelid2,
27
	used,
28
	Float:X2,
29
	Float:Y2,
30
	Float:Z2,
31
	Float:rX2,
32
	Float:rY2,
33
	Float:rZ2,
34
	Float:DrawDistance2
35
};
36
new Oinf[MAX_DYN_OBJECTS][ObjInf];
37
new timerupdate;
38
CreateDynObject(modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance = 0.0)
39
{
40
	if(DynObjects >= MAX_DYN_OBJECTS-1) return INVALID_OBJECT_ID;
41
	new rands = AddObject();
42
	if(rands == INVALID_OBJECT_ID) return INVALID_OBJECT_ID;
43
	Oinf[rands][modelid2] = modelid;
44
	Oinf[rands][X2] = X;
45
	Oinf[rands][Y2] = Y;
46
	Oinf[rands][Z2] = Z;
47
	Oinf[rands][rX2] = rX;
48
	Oinf[rands][rY2] = rY;
49
	Oinf[rands][rZ2] = rZ;
50
	Oinf[rands][DrawDistance2] = DrawDistance;
51
	//CreatePlayerObject(playerid, modelid, X, Y, Z, rX, rY, rZ, DrawDistance)
52
	if(DynObjects < 1) { timerupdate = SetTimer("UpdateObjects",2000,1); }
53
	DynObjects ++;
54
	return rands;
55
}
56
new bool:Created[MAX_PLAYERS][MAX_DYN_OBJECTS];
57
forward UpdateObjects();
58
public UpdateObjects()
59
{
60
    for(new obj = 0;obj < DynObjects;obj++)
61
    {
62
        if(Oinf[obj][used] == 0) continue;
63
        foreachTriga(player)
64
        {
65
        	if(IsPlayerInRangeOfPoint(player,Oinf[obj][DrawDistance2],Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2]))
66
        	{
67
        	    if(Created[player][obj] == false)
68
        	    {
69
        	        CreatePlayerObject(player, Oinf[obj][modelid2], Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2], Oinf[obj][rX2],Oinf[obj][rY2],Oinf[obj][rZ2], Oinf[obj][DrawDistance2]);
70
        	        Created[player][obj] = true;
71
        	    }
72
        	}
73
        	else
74
        	{
75
    	    	if(Created[player][obj] == true)
76
        	    {
77
        	        DestroyPlayerObject(player, obj);
78
        	        Created[player][obj] = false;
79
        	    }
80
        	}
81
        }
82
    }
83
    return true;
84
}
85
AddObject()
86
{
87
    for(new rands = 0;rands < MAX_DYN_OBJECTS;rands++)
88
    {
89
    	if(Oinf[rands][used] == 0)
90
    	{
91
    	    Oinf[rands][used] = 1;
92
    	    return rands;
93
    	}
94
   	}
95
   	return INVALID_OBJECT_ID;
96
}
97
stock DestroyDynObject(objectid)
98
{
99
    Oinf[objectid][used] = 0;
100
	Oinf[objectid][modelid2] = -1;
101
	Oinf[objectid][X2] = -1;
102
	Oinf[objectid][Y2] = -1;
103
	Oinf[objectid][Z2] = -1;
104
	Oinf[objectid][rX2] = -1;
105
	Oinf[objectid][rY2] = -1;
106
	Oinf[objectid][rZ2] = -1;
107
	Oinf[objectid][DrawDistance2] = -1;
108
	DynObjects--;
109
	if(DynObjects < 1) { KillTimer(timerupdate); }
110
	return true;
111
}
112
public OnPlayerConnect(playerid)
113
{
114
	if(IsPlayerNPC(playerid))return true;
115
	Players[players++]=playerid;
116
	return 1;
117
}
118
119
public OnPlayerDisconnect(playerid, reason)
120
{
121
	if(IsPlayerNPC(playerid)) return true;
122
	for(new i=0;i<players;i++)
123
	{
124
		if(Players[i]==playerid)
125
		{
126
			Players[i]=Players[--players];
127
			Players[players]=-1;
128
			break;
129
		}
130
	}
131
 	for(new obj = 0;obj < DynObjects;obj++)
132
    {
133
        if(Oinf[obj][used] == 0) continue;
134
       	if(IsPlayerInRangeOfPoint(playerid,Oinf[obj][DrawDistance2],Oinf[obj][X2],Oinf[obj][Y2],Oinf[obj][Z2]))
135
       	{
136
  	    	if(Created[playerid][obj] == true)
137
   	    	{
138
	        	DestroyPlayerObject(playerid, obj);
139
 	        	Created[playerid][obj] = false;
140
        	}
141
        }
142
        Created[playerid][obj] = false;
143
    }
144
	return 1;
145
}