open.mp forum
[Filterscript] Hunting System - Printable Version

+ open.mp forum (https://forum.open.mp)
-- Forum: SA-MP (https://forum.open.mp/forumdisplay.php?fid=3)
--- Forum: Releases (https://forum.open.mp/forumdisplay.php?fid=13)
---- Forum: Filterscripts (https://forum.open.mp/forumdisplay.php?fid=30)
---- Thread: [Filterscript] Hunting System (/showthread.php?tid=1916)



Hunting System - AbyssMorgan - 2021-04-18

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.



RE: Hunting System - AbyssMorgan - 2021-09-17

Update v1.4.4:



- Changed movement sequence