SHOW:
|
|
- or go back to the newest paste.
1 | local cuffTimer = {} | |
2 | ||
3 | ||
4 | function tazer_func ( player ) | |
5 | ||
6 | if player == client or not client then | |
7 | if isOnDuty(player) then | |
8 | if vioGetElementData ( player, "tazer" ) == 1 then else vioSetElementData ( player, "tazer", 0 ) end | |
9 | if vioGetElementData ( player, "tazer" ) == 0 then | |
10 | if not getPedOccupiedVehicle ( player ) then | |
11 | local posX, posY, posZ = getElementPosition( player ) | |
12 | local tazerSphere = createColSphere( posX, posY, posZ, 3 ) | |
13 | local nearbyPlayers = getElementsWithinColShape( tazerSphere, "player" ) | |
14 | destroyElement( tazerSphere ) | |
15 | local curTazerVicitm = nil | |
16 | local bestDist = 999 | |
17 | for index, nearbyPlayer in pairs ( nearbyPlayers ) do | |
18 | if nearbyPlayer ~= player and not getPedOccupiedVehicle ( nearbyPlayer ) and getPedWeapon ( nearbyPlayer ) < 2 ) then | |
19 | local px, py, pz = getElementPosition ( nearbyPlayer ) | |
20 | local cDist = getDistanceBetweenPoints3D ( posX, posY, posZ, px, py, pz ) | |
21 | if cDist <= bestDist then | |
22 | curTazerVicitm = nearbyPlayer | |
23 | bestDist = cDist | |
24 | end | |
25 | end | |
26 | end | |
27 | if isElement ( curTazerVicitm ) then | |
28 | setPedAnimation( curTazerVicitm, "crack", "crckdeth2",-1,true,true,false) | |
29 | setTimer ( defreeze_tazer, 20000, 1, curTazerVicitm ) | |
30 | vioSetElementData ( player, "tazer", 1 ) | |
31 | setTimer ( reuse_tazer, 2000, 1, player ) | |
32 | local posX, posY, posZ = getElementPosition( player ) | |
33 | local chatSphere = createColSphere( posX, posY, posZ, 10 ) | |
34 | local nearbyPlayers = getElementsWithinColShape( chatSphere, "player" ) | |
35 | destroyElement ( chatSphere ) | |
36 | toggleAllControls ( curTazerVicitm, false, true, false ) | |
37 | local pname = getPlayerName ( player ) | |
38 | outputLog ( pname.." hat "..getPlayerName(curTazerVicitm).." getazert!", "tazer" ) | |
39 | for i=1, #nearbyPlayers do | |
40 | outputChatBox ( pname.." hat "..getPlayerName(curTazerVicitm).." getazert!", nearbyPlayers[i], 100, 0, 200 ) | |
41 | end | |
42 | vioSetElementData ( curTazerVicitm, "tazered", true ) | |
43 | else | |
44 | triggerClientEvent ( player, "infobox_start", getRootElement(), "\nEs ist kein\nSpieler in der\nNähe!", 5000, 125, 0, 0 ) | |
45 | end | |
46 | end | |
47 | else | |
48 | triggerClientEvent ( player, "infobox_start", getRootElement(), "\nTazern ist nur\nalle 25 Sekunden\nmöglich!", 5000, 125, 0, 0 ) | |
49 | end | |
50 | else | |
51 | triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu bist kein\nPolizist im\nDienst!", 5000, 125, 0, 0 ) | |
52 | end | |
53 | end | |
54 | end | |
55 | addEvent ( "tazer", true ) | |
56 | addEventHandler ( "tazer", getRootElement(), tazer_func ) | |
57 | addCommandHandler ( "tazer", tazer_func ) | |
58 | ||
59 | function defreeze_tazer ( player ) | |
60 | if isElement ( player ) then | |
61 | setPedAnimation ( player ) | |
62 | vioSetElementData ( player, "tazered", false ) | |
63 | if vioGetElementData ( player, "nodmzone" ) == 1 then | |
64 | toggleControl (player, "fire", false) | |
65 | toggleControl (player, "next_weapon", false) | |
66 | toggleControl (player, "previous_weapon", false) | |
67 | toggleControl (player, "aim_weapon", false) | |
68 | toggleControl (player, "vehicle_fire", false) | |
69 | toggleControl (player, "vehicle_secondary_fire", false) | |
70 | end | |
71 | if vioGetElementData ( player, "tied" ) then | |
72 | toggleAllControls ( player, true, true, false ) | |
73 | if isTimer ( cuffTimer[player] ) then | |
74 | toggleControl ( player, "sprint", false ) | |
75 | toggleControl ( player, "walk", false ) | |
76 | setControlState ( player, "walk", true ) | |
77 | end | |
78 | end | |
79 | end | |
80 | end | |
81 | ||
82 | function reuse_tazer ( player ) | |
83 | ||
84 | vioSetElementData ( player, "tazer", 0 ) | |
85 | end | |
86 | ||
87 | function accept_func ( player, cmd, add ) | |
88 | ||
89 | if add == "test" then | |
90 | local cop = vioGetElementData ( player, "tester" ) | |
91 | if isElement ( cop ) then | |
92 | local alc = vioGetElementData ( player, "alcoholFlushPoints" ) / 25 | |
93 | local drogen = vioGetElementData ( player, "drugFlushPoints" ) | |
94 | infobox ( player, "\n\n\nDu hast dem\nTest zugestimmt.", 5000, 0, 125, 0 ) | |
95 | local result = "Ergebnis:\nAlkoholgehalt im Blut: "..alc.." Promil,\nTHC-Gehalt im Blut: "..drogen | |
96 | outputChatBox ( result, cop, 200, 200, 0 ) | |
97 | outputChatBox ( result, player, 200, 200, 0 ) | |
98 | else | |
99 | infobox ( player, "\n\n\nNicht möglich.", 5000, 125, 0, 0 ) | |
100 | end | |
101 | end | |
102 | end | |
103 | addCommandHandler ( "accept", accept_func ) | |
104 | ||
105 | ||
106 | function cuff_func ( player, cmd, target ) | |
107 | ||
108 | if player == client or not client then | |
109 | if isOnDuty(player) then | |
110 | local target = getPlayerFromName ( target ) | |
111 | if target then | |
112 | local x1, y1, z1 = getElementPosition ( player ) | |
113 | local x2, y2, z2 = getElementPosition ( target ) | |
114 | if getDistanceBetweenPoints3D ( x1, y1, z1, x2, y2, z2 ) <= 5 then | |
115 | vioSetElementData ( target, "sprint", 1 ) | |
116 | if isTimer ( cuffTimer[target] ) then | |
117 | killTimer ( cuffTimer[target] ) | |
118 | outputChatBox ( "Du hast die Handschellen von "..getPlayerName(target).." erneuert!", player, 0, 125, 0 ) | |
119 | else | |
120 | toggleControl ( target, "sprint", false ) | |
121 | toggleControl ( target, "walk", false ) | |
122 | setControlState ( target, "walk", true ) | |
123 | outputChatBox ( getPlayerName(player).." hat dich gefesselt! Du kannst nicht mehr rennen!", target, 0, 125, 0 ) | |
124 | outputChatBox ( "Du hast "..getPlayerName(target).." Handschellen angelegt!", player, 0, 125, 0 ) | |
125 | takeAllWeapons ( target ) | |
126 | end | |
127 | cuffTimer[target] = setTimer ( reengage_sprint, 30000, 1, target ) | |
128 | else | |
129 | triggerClientEvent ( player, "infobox_start", getRootElement(), "\n\nDu bist zu weit\nentfernt!", 5000, 125, 0, 0 ) | |
130 | end | |
131 | else | |
132 | triggerClientEvent ( player, "infobox_start", getRootElement(), "\n\nUngueltiger Spieler!", 5000, 125, 0, 0 ) | |
133 | end | |
134 | else | |
135 | triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu bist kein\nPolizist im\nDienst!", 5000, 125, 0, 0 ) | |
136 | end | |
137 | end | |
138 | end | |
139 | addEvent ( "cuffGUI", true ) | |
140 | addEventHandler ( "cuffGUI", getRootElement(), cuff_func ) | |
141 | addCommandHandler ( "cuff", cuff_func ) | |
142 | ||
143 | function reengage_sprint ( player ) | |
144 | ||
145 | vioSetElementData ( player, "sprint", 0 ) | |
146 | toggleControl ( player, "sprint", true ) | |
147 | toggleControl ( player, "walk", true ) | |
148 | setControlState ( player, "walk", false ) | |
149 | outputChatBox ( "Du hast deine Fußfesseln gelöst!", player, 0, 125, 0 ) | |
150 | end |