Welcome, Guest |
You have to register before you can post on our site.
|
Online Users |
There are currently 201 online users. » 0 Member(s) | 199 Guest(s) Bing, Google
|
Latest Threads |
[HELP]How to Retrieve and...
Forum: Pawn Scripting
Last Post: CharlesGorski
58 minutes ago
» Replies: 2
» Views: 794
|
Offensive-Core: TDM
Forum: Gamemodes
Last Post: bevisjason0405
2 hours ago
» Replies: 3
» Views: 2,666
|
SA-MP 0.3DL Huge Map RPG/...
Forum: Gamemodes
Last Post: bevisjason0405
2 hours ago
» Replies: 3
» Views: 5,464
|
Santorini OMP
Forum: Gamemodes
Last Post: bevisjason0405
2 hours ago
» Replies: 3
» Views: 2,773
|
Discord server - Ban Appe...
Forum: Chat
Last Post: joshcoconutard
Yesterday, 06:42 PM
» Replies: 0
» Views: 20
|
I know Kalcor left the bu...
Forum: Questions and Suggestions
Last Post: NoxxeR
Yesterday, 02:22 PM
» Replies: 4
» Views: 119
|
Desolation Roleplay
Forum: Gamemodes
Last Post: Nikore
Yesterday, 07:04 AM
» Replies: 2
» Views: 4,537
|
Battlefields - TDM (Team ...
Forum: Gamemodes
Last Post: Nikore
Yesterday, 04:14 AM
» Replies: 3
» Views: 2,786
|
Will there be a higher pl...
Forum: General Discussions
Last Post: Armeat2005
2025-04-21, 08:40 AM
» Replies: 0
» Views: 31
|
DOF2.1 (DOF2 Updated)
Forum: Libraries
Last Post: GracieStith
2025-04-21, 04:51 AM
» Replies: 1
» Views: 874
|
|
|
Vehicle Missile Launcher |
Posted by: AbyssMorgan - 2021-04-18, 01:30 PM - Forum: Filterscripts
- No Replies
|
 |
Hi I would like to present include for Vehicle Missile Launcher.
Video:
- Vehicle Missile (Beta)
- Vehicle Missile (ColAndreas)
- Marica Mortar V1
- Heavy Marica Mortar
- Congreve Rocket
- Marica Mortar V2
- New Vehicle Missile
Code: //Functions Mini Missile:
ToggleVehicleMiniMissile(vehicleid,toggle);
IsToggleVehicleMiniMissile(vehicleid);
Float:GetVehicleMiniMissileSpeed(vehicleid);
SetVehicleMiniMissileSpeed(vehicleid,Float:speed);
GetVehicleMiniMissileReload(vehicleid);
SetVehicleMiniMissileReload(vehicleid,time);
Float:GetVehicleMiniMissileDistance(vehicleid);
SetVehicleMiniMissileDistance(vehicleid,Float:distance);
GetVehicleMiniMissileKey(vehicleid);
SetVehicleMiniMissileKey(vehicleid,key);
GetVehicleMiniMissileAmmo(vehicleid);
SetVehicleMiniMissileAmmo(vehicleid,ammo);
Float:GetVehicleMiniMissileDMG(vehicleid);
SetVehicleMiniMissileDMG(vehicleid,Float:damage);
Float:GetVehicleMiniMissileVehDMG(vehicleid);
SetVehicleMiniMissileVehDMG(vehicleid,Float:damage);
//Functions Heavy Missile:
ToggleVehicleHeavyMissile(vehicleid,toggle);
IsToggleVehicleHeavyMissile(vehicleid);
Float:GetVehicleHeavyMissileSpeed(vehicleid);
SetVehicleHeavyMissileSpeed(vehicleid,Float:speed);
GetVehicleHeavyMissileReload(vehicleid);
SetVehicleHeavyMissileReload(vehicleid,time);
Float:GetVehicleHeavyMissileDistance(vehicleid);
SetVehicleHeavyMissileDistance(vehicleid,Float:distance);
GetVehicleHeavyMissileKey(vehicleid);
SetVehicleHeavyMissileKey(vehicleid,key);
GetVehicleHeavyMissileAmmo(vehicleid);
SetVehicleHeavyMissileAmmo(vehicleid,ammo);
Float:GetVehicleHeavyMissileDMG(vehicleid);
SetVehicleHeavyMissileDMG(vehicleid,Float:damage);
Float:GetVehicleHeavyMissileVehDMG(vehicleid);
SetVehicleHeavyMissileVehDMG(vehicleid,Float:damage);
//Functions Rhino Missile:
ToggleVehicleRhinoMissile(vehicleid,toggle);
IsToggleVehicleRhinoMissile(vehicleid);
GetVehicleRhinoMissileReload(vehicleid);
SetVehicleRhinoMissileReload(vehicleid,time);
Float:GetVehicleRhinoMissileDistance(vehicleid);
SetVehicleRhinoMissileDistance(vehicleid,Float:distance);
GetVehicleRhinoMissileKey(vehicleid);
SetVehicleRhinoMissileKey(vehicleid,key);
GetVehicleRhinoMissileAmmo(vehicleid);
SetVehicleRhinoMissileAmmo(vehicleid,ammo);
Float:GetVehicleRhinoMissileDMG(vehicleid);
SetVehicleRhinoMissileDMG(vehicleid,Float:damage);
Float:GetVehicleRhinoMissileVehDMG(vehicleid);
SetVehicleRhinoMissileVehDMG(vehicleid,Float:damage);
//Functions Bomber Missile:
ToggleVehicleBomberMissile(vehicleid,toggle);
IsToggleVehicleBomberMissile(vehicleid);
Float:GetVehicleBomberMissileSpeed(vehicleid);
SetVehicleBomberMissileSpeed(vehicleid,Float:speed);
GetVehicleBomberMissileReload(vehicleid);
SetVehicleBomberMissileReload(vehicleid,time);
Float:GetVehicleBomberMissileDistance(vehicleid);
SetVehicleBomberMissileDistance(vehicleid,Float:distance);
GetVehicleBomberMissileKey(vehicleid);
SetVehicleBomberMissileKey(vehicleid,key);
GetVehicleBomberMissileAmmo(vehicleid);
SetVehicleBomberMissileAmmo(vehicleid,ammo);
Float:GetVehicleBomberMissileDMG(vehicleid);
SetVehicleBomberMissileDMG(vehicleid,Float:damage);
Float:GetVehicleBomberMissileVehDMG(vehicleid);
SetVehicleBomberMissileVehDMG(vehicleid,Float:damage);
//Functions Mortar Missile:
ToggleVehicleMortarMissile(vehicleid,toggle);
IsToggleVehicleMortarMissile(vehicleid);
Float:GetVehicleMortarMissileSpeed(vehicleid);
SetVehicleMortarMissileSpeed(vehicleid,Float:speed);
GetVehicleMortarMissileReload(vehicleid);
SetVehicleMortarMissileReload(vehicleid,time);
Float:GetVehicleMortarMissileDistance(vehicleid);
SetVehicleMortarMissileDistance(vehicleid,Float:distance);
GetVehicleMortarMissileKey(vehicleid);
SetVehicleMortarMissileKey(vehicleid,key);
Float:GetVehicleMortarMissileHeight(vehicleid);
SetVehicleMortarMissileHeight(vehicleid,Float:height);
Float:GetVehicleMortarMissileRotation(vehicleid);
SetVehicleMortarMissileRotation(vehicleid,Float:rotation);
GetVehicleMortarMissileAmmo(vehicleid);
SetVehicleMortarMissileAmmo(vehicleid,ammo);
GetVehicleMortarMissileAimSys(vehicleid);
SetVehicleMortarMissileAimSys(vehicleid,toggle);
Float:GetVehicleMortarMissileDMG(vehicleid);
SetVehicleMortarMissileDMG(vehicleid,Float:damage);
Float:GetVehicleMortarMissileVehDMG(vehicleid);
SetVehicleMortarMissileVehDMG(vehicleid,Float:damage);
//Functions Mega Missile:
ToggleVehicleMegaMissile(vehicleid,toggle);
IsToggleVehicleMegaMissile(vehicleid);
Float:GetVehicleMegaMissileSpeed(vehicleid);
SetVehicleMegaMissileSpeed(vehicleid,Float:speed);
GetVehicleMegaMissileReload(vehicleid);
SetVehicleMegaMissileReload(vehicleid,time);
Float:GetVehicleMegaMissileDistance(vehicleid);
SetVehicleMegaMissileDistance(vehicleid,Float:distance);
GetVehicleMegaMissileKey(vehicleid);
SetVehicleMegaMissileKey(vehicleid,key);
Float:GetVehicleMegaMissileHeight(vehicleid);
SetVehicleMegaMissileHeight(vehicleid,Float:height);
Float:GetVehicleMegaMissileRotation(vehicleid);
SetVehicleMegaMissileRotation(vehicleid,Float:rotation);
GetVehicleMegaMissileAmmo(vehicleid);
SetVehicleMegaMissileAmmo(vehicleid,ammo);
GetVehicleMegaMissileAimSys(vehicleid);
SetVehicleMegaMissileAimSys(vehicleid,toggle);
Float:GetVehicleMegaMissileDMG(vehicleid);
SetVehicleMegaMissileDMG(vehicleid,Float:damage);
Float:GetVehicleMegaMissileVehDMG(vehicleid);
SetVehicleMegaMissileVehDMG(vehicleid,Float:damage);
//Functions Congreve Rocket:
ToggleVehicleCongreve(vehicleid,toggle);
IsToggleVehicleCongreve(vehicleid);
Float:GetVehicleCongreveSpeed(vehicleid);
SetVehicleCongreveSpeed(vehicleid,Float:speed);
GetVehicleCongreveReload(vehicleid);
SetVehicleCongreveReload(vehicleid,time);
Float:GetVehicleCongreveDistance(vehicleid);
SetVehicleCongreveDistance(vehicleid,Float:distance);
GetVehicleCongreveKey(vehicleid);
SetVehicleCongreveKey(vehicleid,key);
Float:GetVehicleCongreveSpread(vehicleid);
SetVehicleCongreveSpread(vehicleid,Float:spread);
GetVehicleCongreveSalvo(vehicleid);
SetVehicleCongreveSalvo(vehicleid,salvo);
GetVehicleCongreveAmmo(vehicleid);
SetVehicleCongreveAmmo(vehicleid,ammo);
Float:GetVehicleCongreveDMG(vehicleid);
SetVehicleCongreveDMG(vehicleid,Float:damage);
Float:GetVehicleCongreveVehDMG(vehicleid);
SetVehicleCongreveVehDMG(vehicleid,Float:damage);
//Functions Havoc Rocket:
ToggleVehicleHavoc(vehicleid,toggle);
IsToggleVehicleHavoc(vehicleid);
Float:GetVehicleHavocSpeed(vehicleid);
SetVehicleHavocSpeed(vehicleid,Float:speed);
GetVehicleHavocReload(vehicleid);
SetVehicleHavocReload(vehicleid,time);
Float:GetVehicleHavocDistance(vehicleid);
SetVehicleHavocDistance(vehicleid,Float:distance);
GetVehicleHavocKey(vehicleid);
SetVehicleHavocKey(vehicleid,key);
Float:GetVehicleHavocSpread(vehicleid);
SetVehicleHavocSpread(vehicleid,Float:spread);
GetVehicleHavocSalvo(vehicleid);
SetVehicleHavocSalvo(vehicleid,salvo);
GetVehicleHavocAmmo(vehicleid);
SetVehicleHavocAmmo(vehicleid,ammo);
Float:GetVehicleHavocDMG(vehicleid);
SetVehicleHavocDMG(vehicleid,Float:damage);
Float:GetVehicleHavocVehDMG(vehicleid);
SetVehicleHavocVehDMG(vehicleid,Float:damage);
//Functions Flare:
ToggleVehicleFlare(vehicleid,toggle);
IsToggleVehicleFlare(vehicleid);
Float:GetVehicleFlareSpeed(vehicleid);
SetVehicleFlareSpeed(vehicleid,Float:speed);
GetVehicleFlareReload(vehicleid);
SetVehicleFlareReload(vehicleid,time);
Float:GetVehicleFlareDistance(vehicleid);
SetVehicleFlareDistance(vehicleid,Float:distance);
GetVehicleFlareKey(vehicleid);
SetVehicleFlareKey(vehicleid,key);
GetVehicleFlareSalvo(vehicleid);
SetVehicleFlareSalvo(vehicleid,salvo);
GetVehicleFlareAmmo(vehicleid);
SetVehicleFlareAmmo(vehicleid,ammo);
GetVehicleFlareType(vehicleid);
SetVehicleFlareType(vehicleid,type);
//Functions Ground Bomb:
ToggleVehicleGroundBomb(vehicleid,toggle);
IsToggleVehicleGroundBomb(vehicleid);
Float:GetVehicleGroundBombSpeed(vehicleid);
SetVehicleGroundBombSpeed(vehicleid,Float:speed);
GetVehicleGroundBombReload(vehicleid);
SetVehicleGroundBombReload(vehicleid,time);
Float:GetVehicleGroundBombDistance(vehicleid);
SetVehicleGroundBombDistance(vehicleid,Float:distance);
GetVehicleGroundBombKey(vehicleid);
SetVehicleGroundBombKey(vehicleid,key);
GetVehicleGroundBombAmmo(vehicleid);
SetVehicleGroundBombAmmo(vehicleid,ammo);
Float:GetVehicleGroundBombDMG(vehicleid);
SetVehicleGroundBombDMG(vehicleid,Float:damage);
Float:GetVehicleGroundBombVehDMG(vehicleid);
SetVehicleGroundBombVehDMG(vehicleid,Float:damage);
//Functions Ground Bomb (Extended Grenade):
GetVehicleGroundBombType(vehicleid);
SetVehicleGroundBombType(vehicleid,special_weaponid);
GetVehicleGroundBombEffect(vehicleid);
SetVehicleGroundBombEffect(vehicleid,effectid);
Float:GetVehicleGroundBombEffectDMG(vehicleid);
SetVehicleGroundBombEffectDMG(vehicleid,Float:damage);
Float:GetVehicleGroundBombEffectVDMG(vehicleid);
SetVehicleGroundBombEffectVDMG(vehicleid,Float:veh_damage);
GetVehicleGroundBombEffectTime(vehicleid);
SetVehicleGroundBombEffectTime(vehicleid,seconds);
//Player Functions:
GetMiniMissileRemainingTime(playerid);
GetHeavyMissileRemainingTime(playerid);
GetRhinoMissileRemainingTime(playerid);
GetBomberMissileRemainingTime(playerid);
GetMortarMissileRemainingTime(playerid);
GetMegaMissileRemainingTime(playerid);
GetCongreveRemainingTime(playerid);
GetHavocRemainingTime(playerid);
GetGroundBombRemainingTime(playerid);
GetFlareRemainingTime(playerid);
IsVehicleMissileAimSysReady(playerid);
SetVehicleMissileAimTarget(playerid,Float:x=0.0,Float:y=0.0);
//Extended Functions:
Float:GetMissileStreamDistance();
SetMissileStreamDistance(Float:streamdistance);
DisarmVehicleMissile(vehicleid);
SetVehicleMissileDefaultConfig(vehicleid);
ToggleMissileAutoDisarm(bool:toggle);
bool:IsToggleMissileAutoDisarm();
OnVehicleShot(playerid,type);
OnVehicleMissileInit();
GetMissileRemainingTime(playerid,type);
GetVehicleMissileAmmo(vehicleid,type);
SetVehicleMissileAmmo(vehicleid,type,ammo);
//Callbacks:
OnVehicleArmed(playerid,vehicleid);
OnVehicleMissileRequestLaunch(playerid,type,vehicleid);
OnVehicleMissileLaunched(playerid,type,vehicleid);
Default control:
Code: Mini Missile - LALT
Rhino Missile - LALT
Heavy Missile - ALT GR / LCTRL / NUM0
Bomber Missile - Y
Mortar Missile - Y
Mega Missile - Y
Congreve Rocket - N
Havoc Rocket - Y
Ground Bomb - Y
Definitions:
Code: //Vehicle Missile Types:
VEHICLE_MISSILE_TYPE_MINI
VEHICLE_MISSILE_TYPE_HEAVY
VEHICLE_MISSILE_TYPE_BOMBER
VEHICLE_MISSILE_TYPE_RHINO
VEHICLE_MISSILE_TYPE_MORTAR
VEHICLE_MISSILE_TYPE_MEGA
VEHICLE_MISSILE_TYPE_CON
VEHICLE_MISSILE_TYPE_HAVOC
VEHICLE_MISSILE_TYPE_BOMB
VEHICLE_MISSILE_TYPE_FLARE
//default projectile speed
VEHICLE_MISSILE_SPEED_MINI
VEHICLE_MISSILE_SPEED_HEAVY
VEHICLE_MISSILE_SPEED_BOMBER
VEHICLE_MISSILE_SPEED_MORTAR
VEHICLE_MISSILE_SPEED_MEGA
VEHICLE_MISSILE_SPEED_CON
VEHICLE_MISSILE_SPEED_HAVOC
VEHICLE_MISSILE_SPEED_BOMB
VEHICLE_MISSILE_SPEED_FLARE
//default reload time in milisecond
VEHICLE_MISSILE_RELOAD_MINI
VEHICLE_MISSILE_RELOAD_HEAVY
VEHICLE_MISSILE_RELOAD_BOMBER
VEHICLE_MISSILE_RELOAD_RHINO
VEHICLE_MISSILE_RELOAD_MORTAR
VEHICLE_MISSILE_RELOAD_MEGA
VEHICLE_MISSILE_RELOAD_CON
VEHICLE_MISSILE_RELOAD_HAVOC
VEHICLE_MISSILE_RELOAD_BOMB
VEHICLE_MISSILE_RELOAD_FLARE
//default maximum distance that can be overcome missile
VEHICLE_MISSILE_DISTANCE_MINI
VEHICLE_MISSILE_DISTANCE_HEAVY
VEHICLE_MISSILE_DISTANCE_BOMBER
VEHICLE_MISSILE_DISTANCE_RHINO
VEHICLE_MISSILE_DISTANCE_MORTAR
VEHICLE_MISSILE_DISTANCE_MEGA
VEHICLE_MISSILE_DISTANCE_CON
VEHICLE_MISSILE_DISTANCE_HAVOC
VEHICLE_MISSILE_DISTANCE_BOMB
VEHICLE_MISSILE_DISTANCE_FLARE
//default key
VEHICLE_MISSILE_KEY_MINI
VEHICLE_MISSILE_KEY_HEAVY
VEHICLE_MISSILE_KEY_BOMBER
VEHICLE_MISSILE_KEY_RHINO
VEHICLE_MISSILE_KEY_MORTAR
VEHICLE_MISSILE_KEY_MEGA
VEHICLE_MISSILE_KEY_CON
VEHICLE_MISSILE_KEY_HAVOC
VEHICLE_MISSILE_KEY_BOMB
VEHICLE_MISSILE_KEY_FLARE
VEHICLE_MISSILE_HEIGHT_MORTAR? // default arc height for Mortar Missile
VEHICLE_MISSILE_HEIGHT_MEGA? ? // default arc height for Mega Missile
VEHICLE_MISSILE_ROTATION? ? ? ? // default mortar/mega rotation
VEHICLE_MISSILE_SPREAD_CON? ? ? // default spread for Congreve Rocket
VEHICLE_MISSILE_SALVO_CON? ? ? // default salvo (number of projectiles) for Congreve Rocket
VEHICLE_MISSILE_SPREAD_HAVOC? ? // default spread for Havoc Missile
VEHICLE_MISSILE_SALVO_HAVOC? ? // default salvo (number of projectiles) for Havoc Missile
VEHICLE_MISSILE_SALVO_FLARE? ? // default salvo (number of projectiles) for Flare
//infinity ammo
VEHICLE_WEAPON_AMMO_INFINITY
Weapon Vehicle Recommendation:
Code: VEHICLE_MISSILE_TYPE_MINI - Any vehicle
VEHICLE_MISSILE_TYPE_HEAVY - All air vehicles (Causes turbulence)
VEHICLE_MISSILE_TYPE_BOMBER - All air vehicles
VEHICLE_MISSILE_TYPE_RHINO - Recommended for use only RC Tiger
VEHICLE_MISSILE_TYPE_MORTAR - Any vehicle (Recomended Air Vehicle)
VEHICLE_MISSILE_TYPE_MEGA - Any vehicle (Recomended Air Vehicle)
VEHICLE_MISSILE_TYPE_CON - Hydra
VEHICLE_MISSILE_TYPE_HAVOC - Andromada
VEHICLE_MISSILE_TYPE_BOMB - Rustler
VEHICLE_MISSILE_TYPE_FLARE - Hydra
Example Code:
Code: public OnGameModeInit(){
ToggleMissileAutoDisarm(true);
return 1;
}
public OnVehicleArmed(playerid,vehicleid){
SetVehicleMiniMissileDMG(vehicleid,100.0);
SetVehicleMiniMissileVehDMG(vehicleid,500.0);
SetVehicleHeavyMissileDMG(vehicleid,200.0);
SetVehicleHeavyMissileVehDMG(vehicleid,1000.0);
SetVehicleBomberMissileDMG(vehicleid,100.0);
SetVehicleBomberMissileVehDMG(vehicleid,500.0);
SetVehicleRhinoMissileDMG(vehicleid,50.0);
SetVehicleRhinoMissileVehDMG(vehicleid,500.0);
SetVehicleMortarMissileDMG(vehicleid,100.0);
SetVehicleMortarMissileVehDMG(vehicleid,1000.0);
SetVehicleMegaMissileDMG(vehicleid,200.0);
SetVehicleMegaMissileVehDMG(vehicleid,2000.0);
SetVehicleCongreveDMG(vehicleid,50.0);
SetVehicleCongreveVehDMG(vehicleid,1500.0);
SetVehicleHavocDMG(vehicleid,500.0);
SetVehicleHavocVehDMG(vehicleid,5000.0);
SetVehicleGroundBombDMG(vehicleid,500.0);
SetVehicleGroundBombVehDMG(vehicleid,5000.0);
switch(GetVehicleModel(vehicleid)){
case 564: { //rc tiger
ToggleVehicleRhinoMissile(vehicleid,1);
}
case 553: { //nevada
ToggleVehicleBomberMissile(vehicleid,1);
}
case 592: { //andromada
ToggleVehicleBomberMissile(vehicleid,1);
SetVehicleBomberMissileSpeed(vehicleid,60.0);
SetVehicleBomberMissileReload(vehicleid,500);
}
case 520: { //hydra
ToggleVehicleBomberMissile(vehicleid,1);
SetVehicleBomberMissileSpeed(vehicleid,80.0);
SetVehicleBomberMissileReload(vehicleid,500);
ToggleVehicleHeavyMissile(vehicleid,1);
SetVehicleHeavyMissileSpeed(vehicleid,90.0);
SetVehicleHeavyMissileKey(vehicleid,KEY_CROUCH);
}
case 476: { //rustler
ToggleVehicleMiniMissile(vehicleid,1);
SetVehicleMiniMissileSpeed(vehicleid,80.0);
ToggleVehicleBomberMissile(vehicleid,1);
SetVehicleBomberMissileSpeed(vehicleid,80.0);
SetVehicleBomberMissileReload(vehicleid,500);
}
case 548, 497, 469: { //Cargobob, Police Maverik, Sparrow
ToggleVehicleMiniMissile(vehicleid,1);
ToggleVehicleBomberMissile(vehicleid,1);
}
case 512: { //Cropduster
ToggleVehicleBomberMissile(vehicleid,1);
}
case 513: { //stuntplane
ToggleVehicleBomberMissile(vehicleid,1);
}
case 519: { //shamal
ToggleVehicleMiniMissile(vehicleid,1);
SetVehicleMiniMissileSpeed(vehicleid,80.0);
}
case 432: { //rhino
ToggleVehicleMegaMissile(vehicleid,1);
SetVehicleMegaMissileSpeed(vehicleid,50.0);
SetVehicleMegaMissileHeight(vehicleid,VEHICLE_MISSILE_HEIGHT_MEGA);
SetVehicleMegaMissileDistance(vehicleid,VEHICLE_MISSILE_DISTANCE_MEGA);
SetVehicleMegaMissileAimSys(vehicleid,1);
}
}
return 1;
}
Remaining Time / Ammo detection:
Code: public OnVehicleMissileRequestLaunch(playerid,type,vehicleid){
new c_time = GetMissileRemainingTime(playerid,type);
if(c_time > 0){
new buffer[32];
format(buffer,sizeof(buffer),"Remaining Time~n~~w~%.2f second",c_time / 1000.0);
GameTextForPlayer(playerid,buffer,2500,4);
} else if(GetVehicleMissileAmmo(vehicleid,type) == 0){
new buffer[32];
format(buffer,sizeof(buffer),"No ammunition");
GameTextForPlayer(playerid,buffer,2500,4);
}
if((type == VEHICLE_MISSILE_TYPE_MORTAR && GetVehicleMortarMissileAimSys(vehicleid)) || (type == VEHICLE_MISSILE_TYPE_MEGA && GetVehicleMegaMissileAimSys(vehicleid))){
if(!IsVehicleMissileAimSysReady(playerid)){
GameTextForPlayer(playerid,"Select target in map",2500,4);
}
}
return 1;
}
public OnVehicleMissileLaunched(playerid,type,vehicleid){
new ammo = GetVehicleMissileAmmo(vehicleid,type);
if(ammo != VEHICLE_WEAPON_AMMO_INFINITY){
new buffer[32];
format(buffer,sizeof(buffer),"Vehicle Ammo~n~~w~%d",ammo);
GameTextForPlayer(playerid,buffer,2500,4);
}
return 1;
}
Advanced Mortar Control (if AimSys is disabled):
Code: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
if(IsToggleVehicleMegaMissile(GetPlayerVehicleID(playerid))){
if(KEY_PRESSED(KEY_ANALOG_UP)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMegaMissileDistance(vid), buf[128];
val = 5.0;
if(val > 800.0) val = 800.0;
SetVehicleMegaMissileDistance(vid,val);
format(buf,sizeof buf,"Mortar Distance: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
} else if(KEY_PRESSED(KEY_ANALOG_DOWN)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMegaMissileDistance(vid), buf[128];
val -= 5.0;
if(val < 50.0) val = 50.0;
SetVehicleMegaMissileDistance(vid,val);
format(buf,sizeof buf,"Mortar Distance: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
} else if(KEY_PRESSED(KEY_ANALOG_RIGHT)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMegaMissileHeight(vid), buf[128];
val = 5.0;
if(val > 400.0) val = 400.0;
SetVehicleMegaMissileHeight(vid,val);
format(buf,sizeof buf,"Mortar Height: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
} else if(KEY_PRESSED(KEY_ANALOG_LEFT)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMegaMissileHeight(vid), buf[128];
val -= 5.0;
if(val < 25.0) val = 25.0;
SetVehicleMegaMissileHeight(vid,val);
format(buf,sizeof buf,"Mortar Height: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
}
} else if(IsToggleVehicleMortarMissile(GetPlayerVehicleID(playerid))){
if(KEY_PRESSED(KEY_ANALOG_UP)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMortarMissileDistance(vid), buf[128];
val = 5.0;
if(val > 600.0) val = 600.0;
SetVehicleMortarMissileDistance(vid,val);
format(buf,sizeof buf,"Mortar Distance: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
} else if(KEY_PRESSED(KEY_ANALOG_DOWN)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMortarMissileDistance(vid), buf[128];
val -= 5.0;
if(val < 50.0) val = 50.0;
SetVehicleMortarMissileDistance(vid,val);
format(buf,sizeof buf,"Mortar Distance: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
} else if(KEY_PRESSED(KEY_ANALOG_RIGHT)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMortarMissileHeight(vid), buf[128];
val = 5.0;
if(val > 300.0) val = 300.0;
SetVehicleMortarMissileHeight(vid,val);
format(buf,sizeof buf,"Mortar Height: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
} else if(KEY_PRESSED(KEY_ANALOG_LEFT)){
new vid = GetPlayerVehicleID(playerid), Float:val = GetVehicleMortarMissileHeight(vid), buf[128];
val -= 5.0;
if(val < 25.0) val = 25.0;
SetVehicleMortarMissileHeight(vid,val);
format(buf,sizeof buf,"Mortar Height: ~g~%.0f",val);
GameTextForPlayer(playerid,buf,1000,4);
}
}
return 1;
}
Download:
VehicleMissileCol.inc
Missile.inc
3DTryg.inc
ExtendedGrenade.inc
ColAndreas Plugin
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
Hyperion Mega Ship Battle |
Posted by: AbyssMorgan - 2021-04-18, 01:27 PM - Forum: Filterscripts
- No Replies
|
 |
Hello, I would like to present you the Hyperion Mega Ship Battle.
It is a war of two large warships in which between 6 and 42 players can participate (21 per ship)
![[Image: lDN2lRH.png]](https://i.imgur.com/lDN2lRH.png)
Video:
https://www.youtube.com/watch?v=Ut7iBj7SRGk
Installation:
Code: #include <streamer>
#include <colandreas>
#include <3DTryg>
#include <Missile>
#include <progress>
//#define HYPERION_START_TIME 90
//#define HYPERION_VW 0
#include <Hyperion>
public IsAllowedToJoinHyperion(playerid){
return 1;
}
public OnHyperionPlayerDeath(playerid,killerid){
SendDeathMessage(killerid,playerid,51);
return 1;
}
public OnHyperionHelpPresented(playerid){
ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX,"Hyperion Mega Ship","Control:\nUse your mouse to aim\nUse LMB or Ctrl to shot","OK","");
return 1;
}
public OnPlayerEnteringHyperion(playerid,teamid){
//player teleported to Hyperion Battle
return 1;
}
public OnPlayerExitHyperion(playerid){
//player death on hyperion or battle is finished
return 1;
}
public OnHyperionStateChange(hyperion_state){
switch(hyperion_state){
case HYPERION_STATE_OFF: { //attention this state cannot call when Hyperion battle finish
SendClientMessageToAll(0xFFFFFFFF,"Hyperion Battle cannot start due to lack of players.");
}
case HYPERION_STATE_STARTING: {
new buffer[128];
format(buffer,sizeof(buffer),"Hyperion Battle will start in %d seconds.",HYPERION_START_TIME);
SendClientMessageToAll(0xFFFFFFFF,buffer);
}
case HYPERION_STATE_ON: {
SendClientMessageToAll(0xFFFFFFFF,"Hyperion Battle has been started.");
}
}
return 1;
}
public OnHyperionBattleFinished(teamid){
switch(teamid){
case HYPERION_TEAM_BLUE: {
SendClientMessageToAll(0xFFFFFFFF,"Hyperion Battle was finished the blue team wins.");
}
case HYPERION_TEAM_GREEN: {
SendClientMessageToAll(0xFFFFFFFF,"Hyperion Battle was finished the green team wins.");
}
case HYPERION_TEAM_INTERRUPT: {
SendClientMessageToAll(0xFFFFFFFF,"Hyperion Battle was interrupted due to a lack of players.");
}
}
return 1;
}
public OnHyperionBattleResults(playerid,isdead,iswinner){
switch(iswinner){
case 0: {
SendClientMessage(playerid,0xFFFFFFFF,"You team lose the Hyperion Battle.");
}
case 1: {
SendClientMessage(playerid,0xFFFFFFFF,"You team win the Hyperion Battle.");
}
}
return 1;
}
CMD:hyperion(playerid){
if(!CallLocalFunction("IsAllowedToJoinHyperion","d",playerid)) return 1;
if(Hyperion::IsPlayerSaved(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"You are already queued for Hyperion Battle.");
if(Hyperion::CountPlayers() >= HYPERION_MAX_QUEUE) return SendClientMessage(playerid,0xFFFFFFFF,"Queue for Hyperion Battle is already full.");
Hyperion::SavePlayer(playerid,true);
SendClientMessage(playerid,0xFFFFFFFF,"You have signed up for Hyperion Battle Queue.");
return 1;
}
CMD:hyperionexit(playerid){
if(!Hyperion::IsPlayerSaved(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"You are not queued for Hyperion Battle.");
Hyperion::SavePlayer(playerid,false);
SendClientMessage(playerid,0xFFFFFFFF,"You left the Hyperion Battle queue.");
return 1;
}
Functions:
Code: Hyperion::IsPlayerSaved(playerid);
Hyperion::SavePlayer(playerid,bool:state);
Hyperion::IsPlayerOnArea(playerid);
Hyperion::CountPlayers();
Callbacks:
Code: IsAllowedToJoinHyperion(playerid);
OnHyperionBattleResults(playerid,isdead,iswinner);
OnPlayerEnteringHyperion(playerid,teamid);
OnPlayerExitHyperion(playerid);
OnHyperionStateChange(hyperion_state);
OnHyperionBattleFinished(teamid);
OnHyperionHelpPresented(playerid);
Download:
Hyperion.inc
3DTryg.inc
Missile.inc
progress.inc
ColAndreas Plugin
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
Faction Missions |
Posted by: AbyssMorgan - 2021-04-18, 01:23 PM - Forum: Filterscripts
- Replies (1)
|
 |
Hello, I would like to present you the Faction Mini Missions.
Video:
https://www.youtube.com/watch?v=uMpS2SaWmB0
Example Code:
Code: #include <Streamer>
#include <colandreas>
#include <route_rand>
#include <3DTryg>
#include <Missions>
public OnPlayerEnterPatrol(playerid,mobid){
if(GetPlayerTeam(playerid) == TEAM_POLICEMAN) return 1; //policeman clear unsafe zone
return 0; //player get robbed
}
public OnPlayerDestroyPatrol(playerid,mobid){
//give mission prize
GivePlayerMoney(playerid,100);
return 1;
}
public OnPlayerRobbed(playerid,mobid,mission_state){
switch(mission_state){
case MISSIONS_STATE_FAIL_ROBBERY: {
SendClientMessage(playerid,0xFFFFFFFF,"The thief stumbled and you managed to escape :)");
}
case MISSIONS_STATE_ROBBED: {
SendClientMessage(playerid,0xFFFFFFFF,"You lose $100 by robbers");
GivePlayerMoney(playerid,-100);
}
}
return 1;
}
public OnPlayerFoundCorpse(playerid,mobid){
if(GetPlayerTeam(playerid) == TEAM_MEDIC) return 1;
return 0; //player able hit corpse (if in vehicle)
}
public OnPlayerHitCorpse(playerid,mobid){
SendClientMessage(playerid,0xFFFFFFFF,"You hit corpse by vehicle, you got mandate $100");
GivePlayerMoney(playerid,-100);
return 1;
}
public OnPlayerHealCorpse(playerid,mobid){
if(GetPlayerTeam(playerid) == TEAM_MEDIC){
SendClientMessage(playerid,0xFFFFFFFF,"You healed the corpse");
return 1;
}
return 0;
}
public OnPlayerFoundScrap(playerid,mobid){
if(GetPlayerTeam(playerid) == TEAM_METAL_SCRAPPER) return 1; //player able to pickup Scrap (Only for vehicle 578)
return 0;
}
public OnPlayerTakeScrap(playerid,mobid,mission_state,count_items){
switch(mission_state){
case MISSIONS_SCRAP_FULL: {
SendClientMessage(playerid,0xFFFFFFFF,"Your vehicle cargo is full");
}
case MISSIONS_SCRAP_LOADED: {
SendClientMessage(playerid,0xFFFFFFFF,"You picked up scrap metal");
}
}
return 1;
}
public OnPlayerExceededSpeed(playerid,mobid,Float:speed,Float:max_speed){
new buffer[256];
format(buffer,sizeof(buffer),"You exceeded the maximum speed %.1f mph you were driving %.1f mph",max_speed,speed);
SendClientMessage(playerid,0xFFFFFFFF,buffer);
//mandate or something :D
return 1;
}
public OnPlayerPutOutFire(playerid,mobid){
SendClientMessage(playerid,0xFFFFFFFF,"You put out fire");
return 1;
}
public OnPlayerVehicleDamagedByRoad(playerid,mobid,old_health,new_health,veh_damage){
return 1;
}
public OnPlayerDestroyedTreeOnRoad(playerid,mobid){
SendClientMessage(playerid,0xFFFFFFFF,"You destroyed tree on road");
return 1;
}
public OnPlayerUnloadingScrap(playerid,count_items){
if(Item::InCircle(playerid,item_player,0.0,0.0,10.0)){
SendClientMessage(playerid,0xFFFFFFFF,"You unloading scrap");
return 1;
}
return 0;
}
public OnPlayerTryDisarmBomb(playerid,mobid){
if(GetPlayerTeam(playerid) == TEAM_ARMY) return 1;
return 0;
}
public OnPlayerDisarmBomb(playerid,mobid,mission_state){
switch(mission_state){
case MISSIONS_BOMB_DISARM_FAIL: {
SendClientMessage(playerid,0xFFFFFFFF,"Failed to disarm bomb !!!");
}
case MISSIONS_BOMB_DISARM_SUCCESS: {
SendClientMessage(playerid,0xFFFFFFFF,"Bomb disarmed");
}
case MISSIONS_BOMB_DISARM_TOO_LATE: {
SendClientMessage(playerid,0xFFFFFFFF,"Is too late to disarm bomb !!!");
}
}
return 1;
}
public OnPlayerFixedRoad(playerid,mobid){
SendClientMessage(playerid,0xFFFFFFFF,"Road fixed");
return 1;
}
public OnGameModeInit(){
Missions::SetMissionsScrapKey(KEY_YES);
Missions::SetMissionsCorpseKey(KEY_YES);
Missions::SetMissionsBombKey(KEY_YES);
Missions::Enable(MISSIONS_TYPE_BOMB);
Missions::Enable(MISSIONS_TYPE_WOOD);
Missions::Enable(MISSIONS_TYPE_SCRAP);
Missions::Enable(MISSIONS_TYPE_CORPSE);
Missions::Enable(MISSIONS_TYPE_DMGROUTE);
Missions::Enable(MISSIONS_TYPE_FIRE);
Missions::Enable(MISSIONS_TYPE_PATROL);
Missions::SetSpawnRectangle(MISSIONS_TYPE_BOMB,-3000.0,-3000.0,3000.0,3000.0);
Missions::SetSpawnRectangle(MISSIONS_TYPE_CORPSE,-3000.0,-3000.0,3000.0,3000.0);
Missions::SetSpawnRectangle(MISSIONS_TYPE_FIRE,-3000.0,-3000.0,3000.0,3000.0);
Missions::SetSpawnRectangle(MISSIONS_TYPE_WOOD,-3000.0,-3000.0,3000.0,3000.0);
Missions::SetSpawnRectangle(MISSIONS_TYPE_SCRAP,-3000.0,-3000.0,3000.0,3000.0);
Missions::SetSpawnRectangle(MISSIONS_TYPE_DMGROUTE,-3000.0,-3000.0,3000.0,3000.0);
Missions::SetSpawnRectangle(MISSIONS_TYPE_PATROL,-3000.0,-3000.0,3000.0,3000.0);
Missions::Generate(); //force mission generate after server restart
return 1;
}
CMD:speedcamera_del(playerid,params[]){
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Leave vehicle");
new mobid;
if(sscanf(params,"d",mobid)) return SendClientMessage(playerid,0xFFFFFFFF,"Usage /speedcamera_del <id>");
if(mobid < 0 || mobid >= MISSIONS_MAX_RADAR) return SendClientMessage(playerid,0xFFFFFFFF,"Wrong speed camera ID (0 - 99)");
if(!Missions::RadarData[mobid][f_active]) return SendClientMessage(playerid,0xFFFFFFFF,"Speed camera is not active");
Missions::DestroyRadar(mobid);
SendClientMessage(playerid,0xFFFFFFFF,"Speed camera deleted");
return 1;
}
CMD:speedcamera_add(playerid,params[]){
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Leave vehicle");
new Float:speed;
if(sscanf(params,"f",speed)) return SendClientMessage(playerid,0xFFFFFFFF,"Uzywaj /speedcamera_add <max_speed>");
new Float:x,Float:y,Float:z,Float:z_angle;
GetPlayerPos(playerid,x,y,z);
GetPointInFrontOfPlayer(playerid,x,y,1.0);
GetPlayerFacingAngle(playerid,z_angle);
if(Missions::CreateRadar(x,y,z,z_angle,0,0,speed)){
SendClientMessage(playerid,0xFFFFFFFF,"Speed camera added");
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,0,0,0,0);
} else {
SendClientMessage(playerid,0xFFFFFFFF,"Unable to add speed camera (limit exceeded)");
}
return 1;
}
Functions:
Code: Missions::SetMissionsScrapKey(key);
Missions::SetMissionsCorpseKey(key);
Missions::SetMissionsBombKey(key);
Missions::CountVehicleScrap(vehicleid);
Missions::DropScrap(vehicleid);
Missions::HealCorpse(playerid);
Missions::CreateRadar(Float:x,Float:y,Float:z,Float:rz,worldid=0,interiorid=0,Float:speed=80.0);
Missions::DestroyRadar(mobid);
Missions::SetSpawnRectangle(mission_type,Float:minx,Float:miny,Float:maxx,Float:maxy,bool:spawn_validation=true);
Missions::SetSpawnPolygon(mission_type,Float:points[],maxpoints=sizeof(points),bool:spawn_validation=true);
Callbacks:
Code: OnPlayerEnterPatrol(playerid,mobid);
OnPlayerDestroyPatrol(playerid,mobid);
OnPlayerRobbed(playerid,mobid,mission_state);
OnPlayerFoundCorpse(playerid,mobid);
OnPlayerHitCorpse(playerid,mobid);
OnPlayerFoundScrap(playerid,mobid);
OnPlayerTakeScrap(playerid,mobid,mission_state,count_items);
OnPlayerExceededSpeed(playerid,mobid,Float:speed,Float:max_speed);
OnPlayerPutOutFire(playerid,mobid);
OnPlayerVehicleDamagedByRoad(playerid,mobid,old_health,new_health,veh_damage);
OnPlayerDestroyedTreeOnRoad(playerid,mobid);
OnPlayerUnloadingScrap(playerid,count_items);
OnPlayerHealCorpse(playerid,mobid);
OnPlayerTryDisarmBomb(playerid,mobid);
OnPlayerDisarmBomb(playerid,mobid,mission_state);
OnPlayerFixedRoad(playerid,mobid);
Download:
Missions.inc
route_rand.inc
route_rand.bin (put in /scriptfiles)
3DTryg.inc
ColAndreas Plugin
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
Santa Gifts |
Posted by: AbyssMorgan - 2021-04-18, 01:07 PM - Forum: Filterscripts
- No Replies
|
 |
Hello, I would like to present a simple script to automatically deploy gifts on the map.
Description:
- On the map there is a prescribed amount of gifts. (Default 100)
- They appear in random locations on the map, in addition to water.
- What definite time reset location. (Default 2 hours)
- After collecting gifts a player receives award. (To set)
- After collecting gift changing locations.
- Nobody, not even the admin does not know gift location.
The script can be used to:
- Christmas
- Easter
- Halloween
Installation:
Code: //#define SANTA_IS_EASTER_EVENT? ? //Change to Easter Event
//#define SANTA_IS_EASTER_HALLOWEEN //Change to Halloween Event
#include <streamer>
#include <ColAndreas>
#include <3DTryg>
#include <Santa>
public OnGameModeInit(){
//Santa::SetSpawnRectangle(Float:minx,Float:miny,Float:maxx,Float:maxy,bool:reset=true);
//Santa::SetSpawnPolygon(Float:points[],maxpoints=sizeof(points),bool:reset=true);
return 1;
}
public OnSantaPickupReward(playerid){
//edit this
GivePlayerMoney(playerid,250);
return 1;
}
Download:
Santa.inc
3DTryg.inc
ColAndreas Plugin
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
Missile (Missile Launcher) |
Posted by: AbyssMorgan - 2021-04-18, 01:03 PM - Forum: Libraries
- No Replies
|
 |
Hi I would like to present include for Missile Launcher.
Video:
- Sniper Missile
- Vehicle Missile (MapAndreas Version)
- Vehicle Missile (ColAndreas Update)
- Marica Mortar V1
- Heavy Marica Mortar
- Missile Launcher Aim Player
- Congreve Rocket
- Marica Mortar V2
- New Vehicle Missile
- Flares
Functions:
Code: Missile::Launch(type,Float:detection_range,Float:explode_radius,Float:speed,Float:x,Float:y,Float:z,worldid,interiorid,playerid,Float:streamdistance,missile_object,Float:tx,Float:ty,Float:tz,byplayerid=INVALID_PLAYER_ID,teamid=ANY_TEAM,bool:remote=false,remote_count=MAX_MISSILE_REMOTE_TARGET,remote_height=1.0,Float:arc_roll=0.0,Float:damage=-1.0,Float:vehicle_damage=-1.0);
type - explosion type //https://wiki.sa-mp.com/wiki/Explosion_List
Float:detection_range - detection range player/vehicle
Float:explode_radius - the explosion range (the same as in CreateExplosion)
Float:speed - projectile speed
Float:x, Float:y, Float:z - Starting position
worldid, interiorid, playerid, Float:streamdistance - the same as in CreateDynamicObject
missile_object: MISSILE_OBJECT_NORMAL / MISSILE_OBJECT_BIG / MISSILE_OBJECT_HYDRA / MISSILE_OBJECT_BOMB / MISSILE_OBJECT_BOMB_STATIC / MISSILE_OBJECT_FLARE
Float:tx, Float:ty, Float:tz - Target position
byplayerid - selected player will be immune to detection range
teamid - player team will be immune to detection range
remote - enable remote targeting (for Vehicle Missile Mortar)
remote_count - number of remote targeting 1 - 32
remote_height - arc height
arc_roll - rotation Y axis
Float:damage - player damage on explosion created
Float:vehicle_damage - vehicle damage on explosion created
Rotation: Auto!
Missile::LaunchAimPlayer(targetid,type,Float:detection_range,Float:explode_radius,Float:speed,Float:x,Float:y,Float:z,worldid,interiorid,playerid,Float:streamdistance,missile_object,Float:tx,Float:ty,Float:tz,byplayerid=INVALID_PLAYER_ID,teamid=ANY_TEAM,Float:damage=-1.0,Float:vehicle_damage=-1.0);
Missile::StopAimPlayer(mobid);
Missile::Destroy(mobid,type,playerid);
Missile::RemoteTarget(mobid,Float:tx,Float:ty,Float:tz,Float:speed = 0.0);
Missile::GetExplodeVisibility();
Missile::SetExplodeVisibility(Float:explode_stream);
Missile::DisableAllAim(playerid);
Misile::GetObject(mobid);
Misile::GetArea(mobid);
Misile::GetType(mobid);
Misile::GetExplode(mobid);
Misile::GetPlayer(mobid);
Misile::GetTeamID(mobid);
Misile::GetVehicle(mobid);
Misile::GetRemoteCount(mobid);
Misile::GetRemoteID(mobid);
Misile::GetSpeed(mobid);
Misile::GetTargetID(mobid);
Misile::GetDamage(mobid);
Misile::GetVehicleDamage(mobid);
Callbacks:
Code: OnMissileDestroy(mobid,Float:x,Float:y,Float:z,type,killerid,byplayerid);
types:
MISSILE_DESTROY_TYPE_TARGET? //When rocket reaches its destination (always killerid=INVALID_PLAYER_ID)
MISSILE_DESTROY_TYPE_DETECT? //When rocket has been destroyed by detection range
MISSILE_DESTROY_TYPE_KILL? ? //When rocket has been destroyed by player
OnMissileDetectPlayer(playerid,killerid); //called when a player is within range of detection range
OnMissileRequestLaunch(Float:x,Float:y,Float:z,playerid,targetid);
Example Code:
Code: public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ){
if(weaponid == 34){
new Float:x, Float:y, Float:z,
Float:tx, Float:ty, Float:tz,
Float:rx, Float:rz,
vw, int, Float:dist;
GetPlayerPos(playerid,x,y,z);
GetRotationFor2Point3D(x,y,z,fX,fY,fZ,rx,rz);
dist = GetDistanceBetweenPoints3D(x,y,z,fX,fY,fZ);
vw = GetPlayerVirtualWorld(playerid);
int = GetPlayerInterior(playerid);
GetPointInFront3D(x,y,z,rx,rz,4.0,tx,ty,tz);
Missile::Launch(MISSILE_TYPE_EXPLODE_HUGE,4.0,25.0,35.0,tx,ty,tz,vw,int,-1,300.0,MISSILE_OBJECT_HYDRA,fX,fY,fZ,playerid,.damage=100.0,.vehicle_damage=1000.0);
GetPointInFront3D(x,y,z,rx,rz,3.0,tx,ty,tz);
Missile::Launch(MISSILE_TYPE_EXPLODE_HUGE,4.0,25.0,35.0,tx,ty,tz.0,vw,int,-1,300.0,MISSILE_OBJECT_HYDRA,fX,fY,fZ.0,playerid,.damage=100.0,.vehicle_damage=1000.0);
Missile::Launch(MISSILE_TYPE_EXPLODE_HUGE,4.0,25.0,35.0,tx,ty,tz-3.0,vw,int,-1,300.0,MISSILE_OBJECT_HYDRA,fX,fY,fZ-3.0,playerid,.damage=100.0,.vehicle_damage=1000.0);
GetPointInFront3D(tx,ty,tz,rx,rz.0,3.0,x,y,z);
GetPointInFront3D(x,y,z,rx,rz,dist,fX,fY,fZ);
Missile::Launch(MISSILE_TYPE_EXPLODE_HUGE,4.0,25.0,35.0,x,y,z,vw,int,-1,300.0,MISSILE_OBJECT_HYDRA,fX,fY,fZ,playerid,.damage=100.0,.vehicle_damage=1000.0);
GetPointInFront3D(tx,ty,tz,rx,rz-90.0,3.0,x,y,z);
GetPointInFront3D(x,y,z,rx,rz,dist,fX,fY,fZ);
Missile::Launch(MISSILE_TYPE_EXPLODE_HUGE,4.0,25.0,35.0,x,y,z,vw,int,-1,300.0,MISSILE_OBJECT_HYDRA,fX,fY,fZ,playerid,.damage=100.0,.vehicle_damage=1000.0);
}
return 1;
}
Bullet example:
Code: Missile::Launch(MISSILE_TYPE_EXPLODE_NONE,1.0,1.0,20.0,Float:x,Float:y,Float:z,worldid,interiorid,playerid,Float:streamdistance,MISSILE_OBJECT_BULLET,Float:tx,Float:ty,Float:tz,byplayerid=INVALID_PLAYER_ID,teamid=ANY_TEAM,.damage=5.0,.vehicle_damage=25.0);
How to check is player kill by missile (this is not required if you using custom missile damage):
Code: enums:
last_missile_shot
last_missile_player
public OnMissileDestroy(mobid,Float:x,Float:y,Float:z,type,killerid,byplayerid){
if(type == MISSILE_DESTROY_TYPE_DETECT && killerid != INVALID_PLAYER_ID){
PlayerInfo[killerid][last_missile_shot] = GetTickCount();
PlayerInfo[killerid][last_missile_player] = byplayerid;
}
return 1;
}
public OnMissileDetectPlayer(playerid,killerid){
if(killerid != INVALID_PLAYER_ID){
PlayerInfo[playerid][last_missile_shot] = GetTickCount();
PlayerInfo[playerid][last_missile_player] = killerid;
}
? ? return 1;
}
public OnPlayerDeath(playerid, killerid, reason){
if(PlayerInfo[playerid][last_missile_player] != INVALID_PLAYER_ID && reason > 46 && playerid != killerid){
if(GetTickCount()-PlayerInfo[playerid][last_missile_shot] < 2000){
killerid = PlayerInfo[playerid][last_missile_player];
reason = 51;
}
}
//your code
return 1;
}
Download:
Missile.inc
3DTryg.inc
ColAndreas Plugin
|
|
|
Hunting System |
Posted by: AbyssMorgan - 2021-04-18, 12:54 PM - Forum: Filterscripts
- Replies (1)
|
 |
Hello, I would like to present you the Hunting System.
Video:
https://www.youtube.com/watch?v=gySSTtjFRB0
Functions:
Code: Hunting::Create(type,Float:x,Float:y,Float:z,Float:health,respawntime,worldid=-1,interiorid=-1,playerid=-1,Float:streamdistance=200.0,moving_area = 0);
Hunting::Destroy(mobid);
Hunting::Respawn(mobid);
Hunting::ForceRespawn(mobid,Float:x,Float:y,Float:z);
Hunting::Kill(mobid,playerid=INVALID_PLAYER_ID);
Hunting::Stop(mobid,delay=-1);
Hunting::GoTo(mobid,Float:x,Float:y,bool:disable_moving=false);
Hunting::GetDrop(mobid);
Hunting::SetDrop(mobid,drop);
Hunting::GetPos(mobid,Float:x,Float:y,Float:z);
Hunting::SetPos(mobid,Float:x,Float:y,Float:z,bool:disable_moving=false);
Hunting::GetScaredRange(mobid);
Hunting::SetScaredRange(mobid,Float:range);
Hunting::GetHealth(mobid);
Hunting::SetHealth(mobid,Float:health);
Hunting::GetSpawnHealth(mobid);
Hunting::SetSpawnHealth(mobid,Float:health);
Hunting::GetRespawnTime(mobid);
Hunting::SetRespawnTime(mobid,respawntime);
Hunting::GetSpawn(mobid,&Float:x,&Float:y,&Float:z);
Hunting::SetSpawn(mobid,Float:x,Float:y,Float:z);
Hunting::GetInterior(mobid);
Hunting::SetInterior(mobid,interiorid);
Hunting::GetVirtualWorld(mobid);
Hunting::SetVirtualWorld(mobid,worldid);
Hunting::GetSpeed(mobid);
Hunting::SetSpeed(mobid,Float:speed);
Hunting::GetPressTime(mobid);
Hunting::SetPressTime(mobid,miliseconds);
Hunting::GetFacingAngle(mobid);
Hunting::SetCalmTime(mobid,time=0);
Hunting::IsPlayerInRange(playerid,mobid,Float:range);
Hunting::IsToggledMoving(mobid);
Hunting::ToggleMoving(mobid,toggle);
Hunting::IsValid(mobid);
Hunting::IsSpawned(mobid);
Hunting::IsDead(mobid);
Hunting::IsScared(mobid);
Hunting::IsStopped(mobid);
Hunting::IsMoving(mobid);
Extended Functions:
Code: Hunting::Count();
Hunting::GetKey();
Hunting::SetKey(key);
Hunting::GetFreeID();
Hunting::GetActiveMob(playerid,mob_state);
Callbacks:
Code: OnPlayerTakeHuntDrop(playerid,mobid,drop);
OnPlayerKillHuntAnimal(playerid,mobid);
OnPlayerApproachingAnimal(playerid,mobid,mob_state);
OnPlayerExitApproachingAnimal(playerid,mobid,mob_state);
OnAnimalTakeDamage(mobid,playerid,Float:amount,weaponid);
OnHuntAnimalRespawn(mobid);
OnAnimalScareStateChanged(mobid,playerid,isscared);
OnPlayerHuntDropStateChange(playerid,mobid,drop_state); //only called if press time > 0
Definitions:
Code: //Config
MAX_HUNTING_ANIMALS? ? //default is 100 allowed to redefine
HUNTING_UPDATE_INTERVAL //default is 500 allowed to redefine
//Animal types
HUNTING_TYPE_COW
HUNTING_TYPE_DEER
//Animal state
HUNTING_STATE_DESTROYED //animal not exist
HUNTING_STATE_SPAWNED? //animal is spawned
HUNTING_STATE_DEAD? ? ? //animal is dead
//Drop State
HUNTING_DROP_STATE_FINISH
HUNTING_DROP_STATE_START
HUNTING_DROP_STATE_INTERRUPT
//Other
INVALID_HUNTING_ID
HUNTING_NO_AUTO_RESPAWN //disable auto respawn (respawntime param)
Example Pawn Code:
Code: #include <a_samp>
#include <streamer>
#include <ColAndreas>
#include <3DTryg>
#include <Hunting>
public OnFilterScriptInit(){
new my_zone = CreateDynamicRectangle(-100.0,-100.0,100.0,100.0);
for(new i = 0; i < 5; i){
Hunting::Create(HUNTING_TYPE_COW,0.0,0.0,3.0,55.0,30,.moving_area=my_zone);
Hunting::Create(HUNTING_TYPE_DEER,5.0,0.0,3.0,55.0,30,.moving_area=my_zone);
}
return 1;
}
public OnPlayerTakeHuntDrop(playerid,mobid,drop){
if(drop){
SendClientMessage(playerid,-1,"You received $2500");
GivePlayerMoney(playerid,2500);
}
return 0; //set drop flag 0
}
public OnPlayerKillHuntAnimal(playerid,mobid){
SendClientMessage(playerid,-1,"Animal has been killed !");
return 1;
}
public OnPlayerApproachingAnimal(playerid,mobid,mob_state){
if(mob_state == HUNTING_STATE_DEAD){
SendClientMessage(playerid,-1,"Press Y to raise prize.");
}
return 1;
}
public OnPlayerExitApproachingAnimal(playerid,mobid,mob_state){
return 1;
}
public OnAnimalTakeDamage(mobid,playerid,Float:amount,weaponid){
if(weaponid != 34) return 0; //sniper only :D
return 1;
}
public OnHuntAnimalRespawn(mobid){
return 1;
}
public OnAnimalScareStateChanged(mobid,playerid,isscared){
return 1;
}
//only called if press time > 0
public OnPlayerHuntDropStateChange(playerid,mobid,drop_state){
switch(drop_state){
case HUNTING_DROP_STATE_FINISH: {
//your code
}
case HUNTING_DROP_STATE_START: {
//your code
}
case HUNTING_DROP_STATE_INTERRUPT: {
//your code
}
}
return 1;
}
Download:
Hunting.inc
3DTryg.inc
ColAndreas Plugin
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
PortalGun |
Posted by: AbyssMorgan - 2021-04-18, 12:51 PM - Forum: Filterscripts
- No Replies
|
 |
Hello, I would like to present you the Portal Gun Script
Video:
https://www.youtube.com/watch?v=pHGUVNh9y3c
https://www.youtube.com/watch?v=wDBgtBY-cPs
Download:
PortalGun.inc
3DTryg.inc
ColAndreas Plugin
Installation:
Code: #include <3DTryg>
#include <PortalGun>
Functions:
Code: TogglePrivatePortalGun(bool:toggle);? ? ? ? ? ? //default: false
bool:IsTogglePrivatePortalGun();
ToggleUseTeamPortalGun(bool:toggle);? ? ? ? ? ? //default: false
bool:IsToggleUseTeamPortalGun();
TogglePortalGunForAll(bool:toggle);? ? ? ? ? ? //default: true
bool:IsTogglePortalGunForAll();
TogglePortalGunForPlayer(playerid,toggle);? ? ? //default: 0
IsTogglePortalGunForPlayer(playerid);
Float:GetPortalGunSpeed(playerid);
SetPortalGunSpeed(playerid,Float:speed);
Float:GetPortalGunStreamDistance();
SetPortalGunStreamDistance(Float:streamdistance);
ForceOpenPortalGunRing(playerid,portal_id,Float:ox,Float:oy,Float:oz,Float:tx,Float:ty,Float:tz,worldid,interiorid);
ForceClosePortalGunRing(playerid);
Activation:
Code: Weapon: Country Rifle
Y - Change Ring
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
Military Dynamic Mines System |
Posted by: AbyssMorgan - 2021-04-18, 12:48 PM - Forum: Filterscripts
- No Replies
|
 |
Hello, I would like to present a dynamic system landmines.
Video:
https://www.youtube.com/watch?v=SXwb26E-kkU
https://www.youtube.com/watch?v=_E3tw_qYzhI
Functions:
Code: Mines::Create(type,Float:detection_range,Float:explode_radius,Float:health,respawntime,Float:x,Float:y,Float:z,worldid,interiorid,playerid,Float:streamdistance,mine_object = MINE_OBJECT_STANDARD,teamid = ANY_TEAM,detect_type = MINE_DETECT_TYPE_ALL,byplayerid = INVALID_PLAYER_ID,Float:damage=-1.0,Float:vehicle_damage=-1.0);
type - explosion type //https://wiki.sa-mp.com/wiki/Explosion_List
Float:detection_range - detection range player/vehicle
Float:explode_radius - the explosion range (the same as in CreateExplosion)
Float:health - mine health (set MINE_INFINITY_HEALTH to be indestructible)
respawntime - respawn time in seconds
Float:x, Float:y, Float:z, worldid, interiorid, playerid, Float:streamdistance - the same as in CreateDynamicObject
mine_object - mine object
teamid - player team will be immune to detection range or destroy mine
detect_type - specify which elements are to be detected (MINE_DETECT_TYPE_ALL / MINE_DETECT_TYPE_PLAYER / MINE_DETECT_TYPE_VEHICLE)
Float:damage - player damage on explosion created
Float:vehicle_damage - vehicle damage on explosion created
Mines::CreateEx(objectid,type,Float:detection_range,Float:explode_radius,Float:health,respawntime,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz,worldid,interiorid,playerid,Float:streamdistance,teamid = ANY_TEAM,detect_type = MINE_DETECT_TYPE_ALL,byplayerid = INVALID_PLAYER_ID,Float:damage=-1.0,Float:vehicle_damage=-1.0);
Mines::Destroy(mobid);
Mines::GetExplodeVisibility();
Mines::SetExplodeVisibility(Float:streamdistance);
Mines::ForceRespawn(mobid);
Mines::Count();
Mines::GetObjectID(mobid);
Mines::GetAreaID(mobid);
Mines::GetPos(mobid,&Float:x,&Float:y,&Float:z);
Mines::SetPos(mobid,Float:x,Float:y,Float:z);
Mines::GetRot(mobid,&Float:rx,&Float:ry,&Float:rz);
Mines::SetRot(mobid,Float:rx,Float:ry,Float:rz);
Mines::GetDetectionRange(mobid,&Float:detection_range);
Mines::SetDetectionRange(mobid,Float:detection_range);
Mines::GetExplodeRadius(mobid,&Float:explode_radius);
Mines::SetExplodeRadius(mobid,Float:explode_radius);
Mines::GetHealth(mobid,&Float:health);
Mines::SetHealth(mobid,Float:health);
Mines::GetMaxHealth(mobid,&Float:health);
Mines::SetMaxHealth(mobid,Float:health);
Mines::GetVirtualWorld(mobid);
Mines::SetVirtualWorld(mobid,worldid);
Mines::GetInterior(mobid);
Mines::SetInterior(mobid,interiorid);
Mines::GetStreamDistance(mobid,&Float:streamdistance);
Mines::SetStreamDistance(mobid,Float:streamdistance);
Mines::GetTeam(mobid);
Mines::SetTeam(mobid,teamid);
Mines::GetType(mobid);
Mines::SetType(mobid,type);
Mines::GetRespawnTime(mobid);
Mines::SetRespawnTime(mobid,respawntime);
Mines::GetDamage(mobid);
Mines::SetDamage(mobid,Float:damage);
Mines::GetVehicleDamage(mobid);
Mines::SetVehicleDamage(mobid,Float:damage);
Mines::Update(variable);
Extended Grenade Functions:
Mines::GetEffectVisibility();
Mines::SetEffectVisibility(Float:streamdistance);
Mines::GetSpecialWeapon(mobid);
Mines::SetSpecialWeapon(mobid,special_weaponid);
Mines::GetEffectID(mobid);
Mines::SetEffectID(mobid,effectid);
Mines::GetEffectDMG(mobid);
Mines::SetEffectDMG(mobid,Float:damage);
Mines::GetEffectVDMG(mobid);
Mines::SetEffectVDMG(mobid,Float:veh_damage);
Mines::GetEffectTime(mobid);
Mines::SetEffectTime(mobid,seconds);
Callbacks:
Code: OnMineDestroy(mobid,Float:x,Float:y,Float:z,type,killerid,Float:radius,damagerid);
types:
MINE_DESTROY_TYPE_DETECT? //When mine has been destroyed by detection range
MINE_DESTROY_TYPE_KILL? ? //When mine has been destroyed by player shoot
Mine Object:
Code: MINE_OBJECT_STANDARD //default
MINE_OBJECT_UNDERWATER
MINE_OBJECT_LASER
MINE_OBJECT_PIZZA
Example Pawn Code:
Code: #include <a_samp>
#include <streamer>
#include <3DTryg>
#include <Mines>
public OnFilterScriptInit(){
/*
simply enter the coordinates of /save
AddPlayerClass(71,-0.3440,0.2275,3.1172,65.1647,0,0,0,0,0,0); //
and select other parameters
*/
// not recommended set worldid and interiorid -1
Mines::Create(MINE_TYPE_EXPLODE_HUGE, 2.0, 0.1, 200.0, 60, 10.0,0.0,3.1172, 0,0,-1, 300.0, MINE_OBJECT_STANDARD);
Mines::Create(MINE_TYPE_EXPLODE_SMALL, 1.5, 0.01, 100.0, 15, 0.0, 0.0, 3.1172, 0,0, -1, 200.0,MINE_OBJECT_PIZZA);
Mines::Create(MINE_TYPE_EXPLODE_HUGE, 6.0, 0.01, 2000.0, 120, 71.8122, 175.3036, -0.5547, 0,0,-1,200.0, MINE_OBJECT_UNDERWATER);
return 1;
}
Example Command:
Code: CMD:addmine(playerid,params[]){
if(!IsPlayerAdmin(playerid)) return 0;
new buffer[128], type, Float:detection_range, Float:explode_radius, Float:health, respawntime,
Float:x, Float:y, Float:z, worldid, interiorid, Float:streamdistance, mine_object = MINE_OBJECT_STANDARD, teamid = ANY_TEAM;
GetPlayerPos(playerid,x,y,z);
worldid = GetPlayerVirtualWorld(playerid);
interiorid = GetPlayerInterior(playerid);
if(sscanf(params,"dfffdfD(-1)D(-1)",type,detection_range,explode_radius,health,respawntime,streamdistance,mine_object,teamid)) return SendClientMessage(playerid,-1,"/addmine <type> <detection r> <explode r> <hp> <respawn> <stream distance> [obj] [team]");
if(mine_object == -1) mine_object = MINE_OBJECT_STANDARD;
if(teamid == -1) teamid = ANY_TEAM;
new mobid = Mines::Create(type,detection_range,explode_radius,health,respawntime,x,y,z,worldid,interiorid,-1,streamdistance,mine_object,teamid);
format(buffer,sizeof buffer,"Added mine id %d",mobid);
SendClientMessage(playerid,-1,buffer);
/*
Mines::SetSpecialWeapon(mobid,GRENADE_SPECIAL_WEAPON_TEARGAS);
Mines::SetEffectID(mobid,GRENADE_EFFECT_HUGE_SMOKE_1);
Mines::SetEffectDMG(mobid,1.0);
Mines::SetEffectVDMG(mobid,0.0);
Mines::SetEffectTime(mobid,25);
*/
return 1;
}
CMD:delmine(playerid,params[]){
if(!IsPlayerAdmin(playerid)) return 0;
new buffer[128], mobid = INVALID_MINE_ID;
if(sscanf(params,"d",mobid)) return SendClientMessage(playerid,-1,"/delmine <mobid>");
if(MineComponent[mobid][mine_status] != MINE_STATUS_UNACTIVE){
Mines::Destroy(mobid);
format(buffer,sizeof buffer,"Removed mine id %d",mobid);
SendClientMessage(playerid,-1,buffer);
} else {
format(buffer,sizeof buffer,"Mine id %d not exist",mobid);
SendClientMessage(playerid,-1,buffer);
}
return 1;
}
Download:
Mines.inc
3DTryg.inc
ExtendedGrenade.inc
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
Stingers (Cops and Robbers) |
Posted by: AbyssMorgan - 2021-04-18, 12:42 PM - Forum: Filterscripts
- No Replies
|
 |
Hello, I would like to present you the Stingers Script (Cops and Robbers)
Video:
https://www.youtube.com/watch?v=nslVT5RC3J0
Download:
Stingers.inc
3DTryg.inc
Installation:
Code: #include <3DTryg>
#include <Stingers>
Functions:
Code: CreateDynamicStinger(type,Float:x,Float:y,Float:z,Float:rx,Float:ty,Float:rz,worldid=-1,interiorid=-1,playerid=-1,Float:streamdistance=100.0,teamid=ANY_TEAM,byplayerid=INVALID_PLAYER_ID);
DestroyDynamicStinger(mobid);
bool:IsDynamicStingerActive(mobid);
GetDynamicStingerObjectID(mobid);
GetDynamicStingerTeam(mobid);
SetDynamicStingerTeam(mobid,teamid);
GetDynamicStingerPlayerID(mobid);
SetDynamicStingerPlayerID(mobid,byplayerid);
GetPlayerActiveDynamicStinger(playerid);
ToggleDynamicStingerDamage(mobid,bool:toggle);
Callbacks:
Code: //called on vehicle damage updated by stinger
OnVehicleDamageByStinger(playerid,killerid,mobid,old_tires,new_tires);
Definitions:
Code: STINGER_TYPE_SMALL //Object: 2899
STINGER_TYPE_BIG? //Object: 2892
Example code:
Code: public OnVehicleDamageByStinger(playerid,killerid,mobid,old_tires,new_tires){
if(killerid != INVALID_PLAYER_ID){
new p_name[MAX_PLAYER_NAME],string[144];
GetPlayerName(killerid,p_name,sizeof(p_name));
format(string,sizeof(string),"{00AAFF}Your vehicle has been damaged by {00FF00}%s {00AAFF}stinger.",p_name);
SendClientMessage(playerid,-1,string);
}
return 1;
}
new StingerObj[MAX_PLAYERS];
public OnPlayerDisconnect(playerid,reason){
if(StingerObj[playerid] != 0){
DestroyDynamicStinger(StingerObj[playerid]);
StingerObj[playerid] = 0;
}
return 1;
}
CMD:stinger(playerid,params[]){
if(!strcmp(params,"destroy",true)){
DestroyDynamicStinger(StingerObj[playerid]);
StingerObj[playerid] = 0;
return SendClientMessage(playerid,-1,"Stinger Destroyed");
}
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"First get out of the vehicle");
if(GetPlayerActiveDynamicStinger(playerid)) return SendClientMessage(playerid,-1,"You are near another stinger");
new type;
if(!strcmp(params,"big",true)){
type = STINGER_TYPE_BIG;
} else if(!strcmp(params,"small",true)){
type = STINGER_TYPE_SMALL;
} else {
if(!IsGM(playerid)){
return SendClientMessage(playerid,-1,"Usage /stinger <big/small/destroy>");
} else {
return SendClientMessage(playerid,-1,"Usage /stinger <big/small/destroy>");
}
}
new Float:x,Float:y,Float:z,Float:z_angle;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,z_angle);
DestroyDynamicStinger(StingerObj[playerid]);
StingerObj[playerid] = CreateDynamicStinger(type,x,y,z-0.9,0.0,0.0,CompRotationFloat(z_angle.0),-1,-1,-1,100.0,ANY_TEAM,playerid);
return SendClientMessage(playerid,-1,"Stinger added");
}
Issues:
- Stinger can not be located near to another stinger
Notice:
Filterscript not exist because filterscripts have limits.
This has been replaced by include, having automatic installation, efficient GameMode/FilterScript.
|
|
|
|