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

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

    Faction Mini Missions (вам мини-миссии фракции.)

    Здравствуйте, я хотел бы представить вам мини-миссии фракции.

    видео:
    https://www.youtube.com/watch?v=uMpS2SaWmB0
    https://www.youtube.com/watch?v=_1mHqL4_KbQ

    Пример кода:
    Код:
    #include <Streamer>
    #include <colandreas>
    #include <route_rand>
    #include <3DTryg>
    #include <ExtendedGrenade> //optional for gas pipe
    #include <Missions>
    
    public OnPlayerEnterPatrol(playerid,mobid){
    	if(GetPlayerTeam(playerid) == TEAM_POLICEMAN) return 1; //полицейский очистить опасную зону
    	return 0; //игрока ограбят
    }
    
    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 OnPlayerFixedGasPipe(playerid,mobid){
    	SendClientMessage(playerid,0xFFFFFFFF,"Gas pipe 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::Enable(MISSIONS_TYPE_GASPIPE);
    	
    	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::SetSpawnRectangle(MISSIONS_TYPE_GASPIPE,-3000.0,-3000.0,3000.0,3000.0);
    	
    	Missions::Generate(); //принудительно сгенерировать миссию после перезапуска сервера
    	
    	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,"Używaj /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;
    }
    Функции:
    Код:
    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);
    Обратные вызовы:
    Код:
    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);
    OnPlayerFixedGasPipe(playerid,mobid);
    Скачать:
    Missions.inc
    route_rand.inc
    route_rand.bin (put in /scriptfiles)
    3DTryg.inc
    ExtendedGrenade.inc (optional for gas pipe)
    ColAndreas Plugin

    Уведомление:
    Скрипт фильтров не существует, потому что скрипты фильтров имеют ограничения.
    Он был заменен на include, имеющий автоматическую установку , эффективный GameMode / FilterScript.


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

  2. Пользователь сказал cпасибо:
    execution (23.08.2021)
  3. #2
    Аватар для AbyssMorgan
    Пользователь

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

    - Причина смерти от огня изменена на WEAPON_CONFLAGRATION

    - Добавлена возможность перезаписывать спавны "Scrap".
    Код:
    new Float:Missions_ScrapSpawns[][4] = {
    	{2080.634033,896.861389,7.863133,1.398017},
    	{2142.217529,1012.950622,10.820312,268.473632},
    	{2142.012451,854.660888,13.809225,177.629562}
    };
    #include <Missions>
    - Улучшена библиотека охранников

    - Добавлена мини-миссия Повреждена газовая труба доступная только с ExtendedGrenade

    - Добавлен обратный вызов:
    Код:
    OnPlayerFixedGasPipe(playerid,mobid);
    - Добавлены определения:
    Код:
    MISSIONS_MAX_GASPIPE - default 30, can be redefined
    MISSIONS_GASPIPE_DOT - default 5.0, can be redefined
    видео:
    https://www.youtube.com/watch?v=_1mHqL4_KbQ
    Последний раз редактировалось AbyssMorgan; 21.08.2021 в 23:00.
    SA:MP Scripts
    https://adm.ct8.pl

  4. Пользователь сказал cпасибо:
    execution (23.08.2021)
 

 

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

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

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

Ваши права

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