· 8 years ago · Mar 17, 2018, 01:26 PM
1#include < a_samp >
2#include < a_mysql >
3#include < Pawn.CMD >
4#include < foreach >
5
6#define MYSQL_HOST "127.0.0.1"
7#define MYSQL_USER "root"
8#define MYSQL_PASSWORD ""
9#define MYSQL_DATABASE "testkont"
10
11#define MAX_KONTEJNERI 150
12
13#define SCM SendClientMessage
14
15#define NOVAC_MIN 100
16#define NOVAC_MAX 1000
17#define METKOVI_MIN 1
18#define METKOVI_MAX 30
19
20enum kontInfo {
21
22 Float:kontPosX,
23 Float:kontPosY,
24 Float:kontPosZ,
25 Float:kontRotX,
26 Float:kontRotY,
27 Float:kontRotZ,
28 kID,
29 kontID
30}
31
32new MySQL:g_SQL;
33
34new KontInfo[ MAX_KONTEJNERI ][ kontInfo ], Text3D:KontLabel[ sizeof(KontInfo) ], EditKontejner[ MAX_PLAYERS ];
35new bool:PretrazujeKont[ MAX_PLAYERS ], PKontTimer[ MAX_PLAYERS ], KontCooldown[ MAX_PLAYERS ], Iterator:ServerKonts<MAX_KONTEJNERI>;
36
37public OnPlayerConnect(playerid) { KontCooldown[ playerid ] = 0; EditKontejner[ playerid ] = -1; PretrazujeKont[ playerid ] = false; return 1; }
38public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
39
40 if(response == EDIT_RESPONSE_FINAL) {
41 if(EditKontejner[ playerid ] != -1) {
42 new i = EditKontejner[ playerid ], query[ 250 ];
43 KontInfo[ i ][ kontPosX ] = fX;
44 KontInfo[ i ][ kontPosY ] = fY;
45 KontInfo[ i ][ kontPosZ ] = fZ;
46 KontInfo[ i ][ kontRotX ] = fRotX;
47 KontInfo[ i ][ kontRotY ] = fRotY;
48 KontInfo[ i ][ kontRotZ ] = fRotZ;
49 DestroyObject(KontInfo[ i ][ kID ]);
50 KontInfo[ i ][ kID ] = CreateObject(1439, fX, fY, fZ, fRotX, fRotY, fRotZ);
51 KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, fX, fY, fZ, 10.0, 0, 0);
52 SCM(playerid, -1, "Zavrsili ste kreiranje kontejnera.");
53 mysql_format(g_SQL, query, sizeof query, "INSERT INTO `kontejneri` (`Lokacija_X`, `Lokacija_Y`, `Lokacija_Z`, `Rotacija_X`, `Rotacija_Y`, `Rotacija_Z`) VALUES ('%f', '%f', '%f', '%f', '%f', '%f')", KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], KontInfo[ i ][ kontRotX ], KontInfo[ i ][ kontRotY ], KontInfo[ i ][ kontRotZ ]);
54 mysql_tquery(g_SQL, query);
55 EditKontejner[ playerid ] = -1;
56 }
57 }
58 return 1;
59}
60public OnFilterScriptInit() {
61
62 new MySQLOpt: option_id = mysql_init_options();
63 g_SQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
64 if (g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
65 {
66 print("MySQL konekcija neuspesna. Proverite podatke i databazu");
67 SendRconCommand("exit");
68 return 1;
69 }
70
71 print("MySQL konekcija, uspesna");
72 SetupKontTable();
73 mysql_tquery(g_SQL, "SELECT * FROM `kontejneri`", "LoadKonts", "");
74 return 1;
75}
76public OnPlayerDeath(playerid, killerid, reason) {
77
78 if(PretrazujeKont[ playerid ]) { PretrazujeKont[ playerid ] = false; KillTimer(PKontTimer[ playerid ]); }
79 return 1;
80}
81forward PretrazivanjeKont(playerid);
82public PretrazivanjeKont(playerid) {
83
84 PretrazujeKont[ playerid ] = false;
85 TogglePlayerControllable(playerid, true);
86
87 new rand = random(3);
88 switch( rand ) {
89 case 1: {
90 new metkovi, str[ 45 ];
91 metkovi = RandomEx(METKOVI_MIN, METKOVI_MAX);
92 format(str, sizeof(str), "Nasli ste MP5 sa %d metkova u kontejneru.", metkovi);
93 SCM(playerid, -1, str);
94 GivePlayerWeapon(playerid, 29, metkovi);
95 }
96 case 2: {
97 new novac, str[ 45 ];
98 novac = RandomEx(NOVAC_MIN, NOVAC_MAX);
99 format(str, sizeof(str), "Nasli ste %d$ u kontejneru.", novac);
100 SCM(playerid, -1, str);
101 GivePlayerMoney(playerid, novac);
102 }
103 case 3: {
104 SCM(playerid, -1, "Niste pronasli nista u kontejneru.");
105 }
106 }
107 return 1;
108}
109forward LoadKonts();
110public LoadKonts() {
111 new rows = cache_num_rows();
112 if(rows) {
113
114 for(new i; i < rows; i++) {
115
116 new id = Iter_Free(ServerKonts);
117
118 cache_get_value_name_float(i, "Lokacija_X", KontInfo[ id ][ kontPosX ]);
119 cache_get_value_name_float(i, "Lokacija_Y", KontInfo[ id ][ kontPosY ]);
120 cache_get_value_name_float(i, "Lokacija_Z", KontInfo[ id ][ kontPosZ ]);
121 cache_get_value_name_float(i, "Rotacija_X", KontInfo[ id ][ kontRotX ]);
122 cache_get_value_name_float(i, "Rotacija_Y", KontInfo[ id ][ kontRotY ]);
123 cache_get_value_name_float(i, "Rotacija_Z", KontInfo[ id ][ kontRotZ ]);
124
125 KontInfo[ i ][ kID ] = CreateObject(1439, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], KontInfo[ i ][ kontRotX ], KontInfo[ i ][ kontRotY ], KontInfo[ i ][ kontRotZ ]);
126 KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], 10.0, 0, 0);
127
128 Iter_Add(ServerKonts, id);
129 }
130 }
131 return 1;
132}
133
134SetupKontTable() {
135 mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `kontejneri` (`id` int(11) NOT NULL AUTO_INCREMENT,`Lokacija_X` float NOT NULL,`Lokacija_Y` float NOT NULL,`Lokacija_Z` float NOT NULL,`Rotacija_X` float NOT NULL, `Rotacija_Y` float NOT NULL, `Rotacija_Z` float NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`))");
136 return 1;
137}
138
139cmd:kontejner(playerid, params[]) {
140
141 #pragma unused params
142
143 new vreme = gettime(), str[ 60 ];
144 if(PretrazujeKont[ playerid ]) return SCM(playerid, -1, "Vec pretrazujete kontejner.");
145 format(str, sizeof(str), "Nije proslo 10 minuta. Preostalo jos %d sekundi.", KontCooldown[ playerid ]+600-vreme);
146 if(vreme < KontCooldown[ playerid ]+600) return SCM(playerid, -1, str);
147 for(new i; i < MAX_KONTEJNERI; i++) {
148 if(IsPlayerInRangeOfPoint(playerid, 4.0, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ])) {
149 PKontTimer[ playerid ] = SetTimerEx("PretrazivanjeKont", 7000, false, "i", playerid);
150 GameTextForPlayer(playerid, "Pretrazivanje kontejnera, sacekajte...", 7000, 1);
151 PretrazujeKont[ playerid ] = true;
152 TogglePlayerControllable(playerid, false);
153 ApplyAnimation(playerid,"PED","IDLE_tired",3.0,1,0,0,0,0);
154 KontCooldown[ playerid ] = gettime();
155 }
156 }
157 return 1;
158}
159cmd:kreirajkontejner(playerid, params[]) {
160
161 #pragma unused params
162
163 new Float:X, Float:Y, Float:Z;
164 new i = Iter_Free(ServerKonts);
165 if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
166 if(EditKontejner[ playerid ] != -1) return SCM(playerid, -1, "Vec kreirate kontejner.");
167 GetPlayerPos(playerid, X,Y,Z);
168 KontInfo[ i ][ kID ] = CreateObject(1439, X+1, Y+1, Z+1, 0.0, 0.0, 0.0);
169 EditObject(playerid, KontInfo[ i ][ kID ]);
170 EditKontejner[ playerid ] = i;
171 KontInfo[ i ][ kontID ] = i;
172 SCM(playerid, -1, "Zapoceli ste kreiranje kontejnera.");
173 return 1;
174}
175RandomEx(min,max) {
176 return (min+random(max));
177}