Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1

Тема: Missile

  1. #1
    Аватар для AbyssMorgan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.08.2016
    Сообщений
    33
    Репутация:
    15 ±

    Missile

    Привет, я хотел бы представить библиотекудля ракетной установки.

    видео:
    - 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

    Функции:
    Код:
    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 - тип взрыва
    Float:detection_range - дальность обнаружения игрок / транспортное средство
    Float:explode_radius - диапазон взрыва (такой же, как в CreateExplosion)
    Float:speed - скорость снаряда
    Float:x, Float:y, Float:z - Начальная позиция
    worldid, interiorid, playerid, Float:streamdistance - так же, как в 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 - Целевая позиция
    byplayerid - выбранный игрок будет невосприимчив к дальности обнаружения
    teamid - команда игрока будет невосприимчива к дальности обнаружения
    remote - enable remote targeting (for Vehicle Missile Mortar)
    remote_count - количество удаленного наведения 1 - 32
    remote_height - высота дуги
    arc_roll - ось Y вращения
    Float:damage - нанесен урон игроку при взрыве
    Float:vehicle_damage - повреждение транспортного средства при взрыве нанесено
    
    Вращение: Авто!
    
    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);
    Обратные вызовы:
    Код:
    OnMissileDestroy(mobid,Float:x,Float:y,Float:z,type,killerid,byplayerid);
    
    types:
    MISSILE_DESTROY_TYPE_TARGET  //Когда ракета достигает пункта назначения (всегда killerid=INVALID_PLAYER_ID)
    MISSILE_DESTROY_TYPE_DETECT  //Когда ракета уничтожена дальностью обнаружения
    MISSILE_DESTROY_TYPE_KILL    //Когда ракета была уничтожена игроком
    
    OnMissileDetectPlayer(playerid,killerid); //вызывается, когда игрок находится в пределах диапазона обнаружения
    
    OnMissileRequestLaunch(Float:x,Float:y,Float:z,playerid,targetid);
    Example 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+3.0,vw,int,-1,300.0,MISSILE_OBJECT_HYDRA,fX,fY,fZ+3.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+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);
    		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;
    }
    Пример пули:
    Код:
    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);
    Как проверить, убит ли игрок ракетой (это не требуется, если вы используете настраиваемый урон от ракет):
    Код:
    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;
    }
    Скачать:
    Missile.inc
    3DTryg.inc
    ColAndreas Plugin

    Эта тема переведена, автор не может полностью помочь на русском языке.
    Последний раз редактировалось AbyssMorgan; 17.08.2021 в 19:33.
    SA:MP Scripts
    https://adm.ct8.pl

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •