Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SA-MP Include OnObjectShot
- *
- * Copyright (c) by Kaliber, 2013
- *
- */
- #include <a_samp>
- #if !defined dis
- #define dis 5
- #endif
- #define W_RANGE 50
- static Float:ObjectInfo[MAX_OBJECTS][3],count;
- forward OnObjectShot(playerid,weaponid,objectid);
- forward Stream_OnPlayerKeyStateChange(playerid,newkeys,oldkeys);
- native Stream_CreateObject(modelid,Float:X,Float:Y,Float:Z,Float:r1,Float:r2,Float:r3,Float:Distance) = CreateObject;
- stock _CreateObject(modelid,Float:X,Float:Y,Float:Z,Float:r1,Float:r2,Float:r3,Float:Distance) {
- count++,ObjectInfo[count][0]=X,ObjectInfo[count][1]=Y,ObjectInfo[count][2]=Z;
- return Stream_CreateObject(modelid,X,Y,Z,r1,r2,r3,Distance);
- }
- #if defined _ALS_CreateObject
- #undef CreateObject
- #else
- #define _ALS_CreateObject
- #endif
- #define CreateObject _CreateObject
- forward Check(playerid,x,q,Float:q1,Float:q2,Float:q3);
- public Check(playerid,x,q,Float:q1,Float:q2,Float:q3) {
- if(x==W_RANGE) return 0;
- x++;
- switch(q) {
- case 0: {
- if(q2 > 0) q2++;
- else q2 = floatsub(q2,1);
- }
- case 1,2: {
- if(q2 > 0) q2 = floatsub(q2,1);
- else q2++;
- }
- }
- for(new i; i<MAX_OBJECTS; i++) {
- if(!ObjectInfo[i][0]) continue;
- if(ObjectToPoint(dis,i,q1,q2,q3)) return CallRemoteFunction("OnObjectShot","iii",playerid,GetPlayerWeapon(playerid),i);
- }
- SetTimerEx("Check",10,0,"iiifff",playerid,x,q,q1,q2,q3);
- return 1;
- }
- stock ObjectToPoint(Float:radi, i, Float:x, Float:y, Float:z)
- {
- new Float:Q[6];
- Q[0]=ObjectInfo[i][0],Q[1]=ObjectInfo[i][1],Q[2]=ObjectInfo[i][2];
- //printf("X:%.02f|x:%.02f|Y:%.02f|y:%.02f|Z:%.02f|z:%.02f",Q[0],x,Q[1],y,Q[2],z);
- Q[3] = (Q[0] -x),Q[4] = (Q[1] -y),Q[5] = (Q[2] -z);
- if(((Q[3] < radi) && (Q[3] > -radi)) && ((Q[4] < radi) && (Q[4] > -radi)) && ((Q[5] < radi) && (Q[5] > -radi))) return true;
- return false;
- }
- public OnPlayerKeyStateChange(playerid,newkeys,oldkeys) {
- if(IsPlayerInAnyVehicle(playerid)) return 0;
- switch(newkeys) {
- case 4: {
- new w = GetPlayerWeapon(playerid);
- if(w!=24&&w!=23&&w!=22&&w!=25&&w!=26&&w!=27) return 1;
- new Float:Q[4],x,obj,pres_dis=W_RANGE;
- GetPlayerFacingAngle(playerid,Q[0]);
- GetPlayerPos(playerid,Q[1],Q[2],Q[3]);
- for(new i=1; i<MAX_OBJECTS; i++) {
- if(!ObjectInfo[i][0]) continue;
- x = floatround(GetPlayerDistanceFromPoint(playerid, ObjectInfo[i][0],ObjectInfo[i][1],ObjectInfo[i][2]));
- if(x <= W_RANGE && x <= pres_dis) obj = i,pres_dis = x;
- }
- x = floatround(GetPlayerDistanceFromPoint(playerid, ObjectInfo[obj][0],ObjectInfo[obj][1],ObjectInfo[obj][2]));
- new Float:r=140+floatmul(x,3),Float:u=250-floatmul(x,3),Float:e=52-floatmul(x,3);
- if(Q[0] > r && Q[0] <= u) SetTimerEx("Check",10,0,"iiifff",playerid,0,0,Q[1],Q[2],Q[3]);
- else if(Q[0] > 0 && Q[0] <= e) SetTimerEx("Check",10,0,"iiifff",playerid,0,1,Q[1],Q[2],Q[3]);
- else if(Q[0] > 320+x && Q[0] < 360) SetTimerEx("Check",10,0,"iiifff",playerid,0,2,Q[1],Q[2],Q[3]);
- }
- }
- return 0;
- }
- #if defined _ALS_OnPlayerKeyStateChange
- #undef OnPlayerKeyStateChange
- #else
- #define _ALS_OnPlayerKeyStateChange
- #endif
- #define OnPlayerKeyStateChange Stream_OnPlayerKeyStateChange
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement