Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SA-MP Include Blitzersystem
- *
- * (c) by Kaliber, 2013
- *
- */
- #include <a_samp>
- #if defined _Blitz
- #endinput
- #endif
- #define _Blitz
- #if !defined _ALS_
- forward public _ALS_();
- _ALS_()<_ALS_:unhooked>{}
- _ALS_()<_ALS_:hooked>{}
- _ALS_()<>{}
- #endif
- #if !defined MAX_BLITZER
- #define MAX_BLITZER 10
- #endif
- #if !defined BLITZ_INTERVAL
- #define BLITZ_INTERVAL 2
- #endif
- #define INVALID_ID -1
- static Float:BlitzInfo[MAX_BLITZER][6],idx;
- @blitz(playerid);
- @timeout(playerid);
- forward OnPlayerBlitz(playerid,speed,MAX_SPEED);
- stock CreateBlitzer(Float:X,Float:Y,Float:Z,Float:A,MAX_SPEED,Float:radius) {
- BlitzInfo[idx][5]=radius,BlitzInfo[idx][3]=CreateObject(1278,X+1,Y+1,Z,0,0,A,300.0),BlitzInfo[idx][0]=X+1,BlitzInfo[idx][1]=Y+1,BlitzInfo[idx][2]=Z,BlitzInfo[idx][4]=MAX_SPEED,idx++;
- return idx-1;
- }
- stock Get_Slot_ID(id) {
- for(new i; i<idx; i++) if(BlitzInfo[idx][3] == id) return i;
- return INVALID_ID;
- }
- stock RemoveBlitzer(id) {
- new x=Get_Slot_ID(id);
- if(x==INVALID_ID) return INVALID_ID;
- DestroyObject(BlitzInfo[x][3]);
- for(new i; i<4; i++) BlitzInfo[x][i] = 0;
- return 1;
- }
- stock GetBlitzerId(playerid) {
- for(new i; i<idx; i++) if(IsPlayerInRangeOfPoint(playerid,BlitzInfo[i][5],BlitzInfo[i][0],BlitzInfo[i][1],BlitzInfo[i][2])) return i;
- return INVALID_ID;
- }
- stock GetPlayerSpeed(playerid) {
- new Float:_Pos[3];
- GetVehicleVelocity(GetPlayerVehicleID(playerid),_Pos[0],_Pos[1],_Pos[2]);
- return floatround(floatsqroot(_Pos[0]*_Pos[0] + _Pos[1]*_Pos[1] + _Pos[2]*_Pos[2]))*170;
- }
- stock EditBlitzer(id, MAX_SPEED, Float:radius) return BlitzInfo[id][4] = MAX_SPEED, BlitzInfo[id][5] = radius;
- public OnPlayerStateChange(playerid,newstate,oldstate) {
- state _ALS_:hooked;
- switch(newstate) {
- case PLAYER_STATE_DRIVER: SetTimerEx("@blitz",BLITZ_INTERVAL*1000,0,"i",playerid);
- }
- return 1;
- }
- forward _OnPlayerStateChange(playerid,newstate,oldstate);
- #if defined _ALS_OnPlayerStateChange
- #undef OnPlayerStateChange
- #else
- #define _ALS_OnPlayerStateChange
- #endif
- public _OnPlayerStateChange(playerid,newstate,oldstate)<_ALS_:unhooked> return 1;
- public _OnPlayerStateChange(playerid,newstate,oldstate) <> return 1;
- #define OnPlayerStateChange(%0,%1,%2) _OnPlayerStateChange(%0,%1,%2)<_ALS_:hooked>
- @timeout(playerid) {
- if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER||!IsPlayerConnected(playerid)) return INVALID_ID;
- return @blitz(playerid);
- }
- @blitz(playerid) {
- if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER||!IsPlayerConnected(playerid)) return INVALID_ID;
- new x = GetBlitzerId(playerid);
- if(x == INVALID_ID) return SetTimerEx("@blitz",BLITZ_INTERVAL*1000,0,"i",playerid);
- if(GetPlayerSpeed(playerid) > BlitzInfo[x][4]) return CallRemoteFunction("OnPlayerBlitz","idd",playerid,GetPlayerSpeed(playerid),BlitzInfo[x][4]),SetTimerEx("@timeout",5000,0,"i",playerid);
- return SetTimerEx("@blitz",BLITZ_INTERVAL*1000,0,"i",playerid);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement