Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Rocket System
- © by QWER
- credits
- IsObjectInRangeOfPoint = autor thx
- SetObjectLookAt = autor thx
- */
- #include <a_samp>
- #define MAX_ROCKETS 32
- #define EXPLODE
- #define RANGE 150
- new Float:pos[MAX_ROCKETS][3],
- Float:speed[MAX_ROCKETS],
- bool:active[MAX_ROCKETS],
- bool:shoot[MAX_ROCKETS],
- #if defined EXPLODE
- explode[MAX_ROCKETS] = {150,...},
- #endif
- shootid[MAX_ROCKETS] = {-1,...},
- rocket[MAX_ROCKETS],
- RocketCount = -1;
- forward RocketUpdate();
- stock CreateRocket(Float:x,Float:y,Float:z,Float:s=2.0){
- RocketCount++;
- if(RocketCount == 0) SetTimer("RocketUpdate",1250,true);
- pos[RocketCount][0] = x;
- pos[RocketCount][1] = y;
- pos[RocketCount][2] = z+100;
- speed[RocketCount] = s;
- active[RocketCount] = true;
- return RocketCount;
- }
- stock IsObjectInRangeOfPoint( objectid,Float:radi, Float:x, Float:y, Float:z ) {
- new Float:oldposx, Float:oldposy, Float:oldposz;
- new Float:tempposx, Float:tempposy, Float:tempposz;
- GetObjectPos( objectid, oldposx, oldposy, oldposz );
- tempposx = ( oldposx -x );
- tempposy = ( oldposy -y );
- tempposz = ( oldposz -z );
- if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
- {
- return 1;
- } return 0;
- }
- public RocketUpdate(){
- for(new rocketid; rocketid < RocketCount+1;rocketid++){
- if(!shoot[rocketid]){
- for(new i; i < GetMaxPlayers();i++){
- if(IsPlayerConnected(i)){
- if(IsPlayerInRangeOfPoint(i,RANGE,pos[rocketid][0],pos[rocketid][1],pos[rocketid][2])){
- new car = GetVehicleModel(GetPlayerVehicleID(i));
- if(car == 592|| car == 577|| car == 511|| car == 512|| car ==593|| car ==520
- || car ==553|| car ==476|| car ==519|| car ==460|| car ==513|| car ==548
- || car ==425|| car ==417|| car ==48|| car ==488|| car ==497|| car ==563|| car ==447|| car ==469){
- rocket[rocketid] = CreateObject(345,pos[rocketid][0],pos[rocketid][1],pos[rocketid][2],0,0,0);
- shoot[rocketid] = true;
- shootid[rocketid] = i;
- }}}}
- }else{
- new i = shootid[rocketid];
- new Float:X,Float:Y,Float:Z;
- GetPlayerPos(i,X,Y,Z);
- SetObjectLookAt(rocket[rocketid], X, Y);
- MoveObject(rocket[rocketid],X,Y,Z,speed[rocketid]);
- #if defined EXPLODE
- explode[rocketid]-= random(5);
- if(explode[rocketid] > 1) {
- CreateExplosion(X,Y,Z,10,5);
- DestroyObject(rocket[rocketid]);
- shoot[rocketid] = false;
- shootid[rocketid] = -1;
- explode[rocketid] = 150;
- continue;
- }
- #endif
- if(IsObjectInRangeOfPoint(rocket[rocketid],5,X,Y,Z)){
- CreateExplosion(X,Y,Z,7,5);
- DestroyObject(rocket[rocketid]);
- shoot[rocketid] = false;
- shootid[rocketid] = -1;
- }
- }
- }
- }
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- stock SetObjectLookAt(objectid, Float:x, Float:y)
- {
- new Float:Px, Float:Py, Float: Pa;
- GetObjectPos(objectid,Px,Py,Pa);
- Pa = floatabs(atan((y-Py)/(x-Px)));
- if(x <= Px && y >= Py) Pa = floatsub(180.0,Pa);
- else if(x < Px && y < Py) Pa = floatadd(Pa,180.0);
- else if(x >= Px && y <= Py) Pa = floatsub(360.0,Pa);
- Pa = floatsub(Pa,90.0);
- if(Pa >= 360.0) Pa = floatsub(Pa,360.0);
- SetObjectRot(objectid,0,0,Pa);
- return 1;
- }
- public OnGameModeInit()
- {
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- CreateRocket(0,0,3);
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement