SA-MP Forums Archive
[Include] Extended Actor Functions - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Filterscripts (https://sampforum.blast.hk/forumdisplay.php?fid=17)
+---- Forum: Includes (https://sampforum.blast.hk/forumdisplay.php?fid=83)
+---- Thread: [Include] Extended Actor Functions (/showthread.php?tid=604223)



Extended Actor Functions - Admigo - 02.04.2016

Since Emmet_ has left SA-MP i will maintain this include by releasing new updates and fixing bugs.

I don't want to take any credit for his work.

Actor functions


Here are some useful functions related to actors. The purpose of this library is to extend the functionality of actors.

Function list
pawn Code:
// Resynchronize an actor.
forward ResyncActor(actorid);
// Respawns an actor.
forward RespawnActor(actorid);
// Checks if the actor is dead.
forward IsActorDead(actorid);
// Sets an actor's respawn time (after death).
forward SetActorRespawnTime(actorid, time);
// Checks if a player is in range of an actor.
forward IsPlayerInRangeOfActor(playerid, actorid, Float:radius = 5.0);
// Attaches a 3D text label to an actor.
forward Text3D:Attach3DTextLabelToActor(actorid, text[], color, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:distance = 10.0, worldid = 0, testlos = 0);
// Sets an actor's name(3D text label)
forward SetActorName(actorid, name[]);
// Gets an actor's name
forward GetActorName(actorid);
// Toggle an actor's name(Show/Hide 3D text label. Only works when the actor's name is already set(SetActorName)
forward ToggleActorName(actorid,bool:toggle);
// Sets an actor's color(Colors 3D text label only)
forward SetActorColor(actorid, color);
// Sets an actor's chat bubble
forward SetActorChatBubble(actorid, text[], color, Float:drawdistance, expiretime);
Callback list
pawn Code:
// Called when an actor dies.
forward OnActorDeath(actorid, killerid, reason);
// Called when an actor spawns.
forward OnActorSpawn(actorid);
// Called when a player aims at an actor.
forward OnPlayerTargetActor(playerid, newtarget, oldtarget);


Other benefits:
Usage

Here's some useful code to respawn a dead actor after 5 seconds:

pawn Code:
public OnActorDeath(actorid, killerid, reason)
{
    SetActorRespawnTime(actorid, 5000);
}


Attach a 3D text label to a certain actor:

pawn Code:
gActor = CreateActor(255, 0.0, 0.0, 10.0, 90.0);

gAttachedLabel = Attach3DTextLabelToActor(gActor, "I am an actor!\nPress {FFFF00}'Y'{FFFFFF} to interact with me!", 0xFFFFFFFF, 0.0, 0.0, 0.3, 10.0, 0);


Make the targeted actor put their hands up.

pawn Code:
public OnPlayerTargetActor(playerid, newtarget, oldtarget)
{
    if (newtarget != INVALID_ACTOR_ID)
    {
        ApplyActorAnimation(newtarget, "PED", "handsup", 4.1, 0, 0, 0, 0, 0);
    }
    if (oldtarget != INVALID_ACTOR_ID)
    {
        ClearActorAnimations(oldtarget);
    }
}
Updates
Update 08.04.2016
pawn Code:
- Added native SetActorName(actorid,name[])
- Added native GetActorName(actorid)
- Added native ToggleActorName(actorid,bool:toggle)
- Added native SetActorColor(actorid, color)
- Added native SetActorChatBubble(actorid, text[], color, Float:drawdistance, expiretime)
Downloads
Updated
http://pastebin.com/A9U2suFK

Old
http://pastebin.com/TGKx2EyD

Suggestions

If you have any suggestions to improve this include you can pm me or leave a comment here.


Admigo


Respuesta: Extended Actor Functions - aoEXE - 06.04.2016

Code:
SetActorName(actorid, name[]);
GetActorName(actorid, const name[], len);
ToggleActorName(actorid, toggle);
SetActorChatBubble(actorid, text[], color, Float:drawdistance, expiretime);
It must be easy for you.


Re: Respuesta: Extended Actor Functions - Admigo - 08.04.2016

Quote:
Originally Posted by aoEXE
View Post
Code:
SetActorName(actorid, name[]);
GetActorName(actorid, const name[], len);
ToggleActorName(actorid, toggle);
SetActorChatBubble(actorid, text[], color, Float:drawdistance, expiretime);
It must be easy for you.
Thanks for your suggestions. I just added them in an update.
Update 08.04.2016
pawn Code:
- Added native SetActorName(actorid,name[])
- Added native GetActorName(actorid)
- Added native ToggleActorName(actorid,bool:toggle)
- Added native SetActorColor(actorid, color)
- Added native SetActorChatBubble(actorid, text[], color, Float:drawdistance, expiretime)
Download
http://pastebin.com/A9U2suFK


Re: Extended Actor Functions - -CaRRoT - 09.04.2016

Am glad someone with more experience has taken the task to keep this include maintained/updated, keep it up!


Re: Extended Actor Functions - Admigo - 09.04.2016

Quote:
Originally Posted by -CaRRoT
View Post
Am glad someone with more experience has taken the task to keep this include maintained/updated, keep it up!
I won't say i have more experience then Emmet. Just want to keep this include updated. If you have any suggestions to improve this include tell me.


Re: Extended Actor Functions - bruxo00 - 09.04.2016

I don't know why but none of those functions are working with me...


Re: Extended Actor Functions - Admigo - 09.04.2016

Quote:
Originally Posted by bruxo00
View Post
I don't know why but none of those functions are working with me...
Any errors? Can you show me the code you are using?


Re: Extended Actor Functions - bruxo00 - 09.04.2016

I was just testing this... But the functions are simply not working. No errors tho.


Like:
Attach3DTextLabelToActor does not create the label.
SetActorName the same.
RespawnActor destroys the actor but the actor don't respawn.


I just tested these 3 functions.


Re: Extended Actor Functions - Ermanhaut - 06.06.2016

I have a request for you.

Can you create a callback "OnPlayerShootActor"? Is it possible?


Re: Extended Actor Functions - Admigo - 06.06.2016

You can use the callback OnPlayerGiveDamageActor for that.


Re: Extended Actor Functions - Ermanhaut - 07.06.2016

Quote:
Originally Posted by Admigo
Посмотреть сообщение
You can use the callback OnPlayerGiveDamageActor for that.
I'm having some troubles with this callback, but i'll try to resolve it.


Re: Extended Actor Functions - Doritoss - 26.08.2016

If you put the actor name SetActorName(myActor, "Test"); under OnActorRespawn it doesnt add it. When the Actor dies it removes the name.


Re: Extended Actor Functions - Admigo - 12.09.2016

Thanks for the comments.

Quote:
Originally Posted by bruxo00
Посмотреть сообщение
I was just testing this... But the functions are simply not working. No errors tho.

Like:
Attach3DTextLabelToActor does not create the label.
SetActorName the same.
RespawnActor destroys the actor but the actor don't respawn.

I just tested these 3 functions.
I will have some further tests in my gamemode.

Quote:
Originally Posted by Doritoss
Посмотреть сообщение
If you put the actor name SetActorName(myActor, "Test"); under OnActorRespawn it doesnt add it. When the Actor dies it removes the name.
I will look into this.


Respuesta: Extended Actor Functions - Romero837 - 18.10.2016

(82) : error 037: invalid string (possibly non-terminated string)

Quote:

static s_AnimationLibraries[][] = {
!"AIRPORT", !"ATTRACTORS", !"BAR", !"BASEBALL",
!"BD_FIRE", !"BEACH", !"BENCHPRESS", !"BF_INJECTION",
!"BIKED", !"BIKEH", !"BIKELEAP", !"BIKES",
!"BIKEV", !"BIKE_DBZ", !"BMX", !"BOMBER",
!"BOX", !"BSKTBALL", !"BUDDY", !"BUS",
!"CAMERA", !"CAR", !"CARRY", !"CAR_CHAT",
!"CASINO", !"CHAINSAW", !"CHOPPA", !"CLOTHES",
!"COACH", !"COLT45", !"COP_AMBIENT", !"COP_DVBYZ",
!"CRACK", !"CRIB", !"DAM_JUMP", !"DANCING",
!"DEALER", !"DILDO", !"DODGE", !"DOZER",
!"DRIVEBYS", !"FAT", !"FIGHT_B", !"FIGHT_C",
!"FIGHT_D", !"FIGHT_E", !"FINALE", !"FINALE2",
!"FLAME", !"FLOWERS", !"FOOD", !"FREEWEIGHTS",
!"GANGS", !"GHANDS", !"GHETTO_DB", !"GOGGLES",
!"GRAFFITI", !"GRAVEYARD", !"GRENADE", !"GYMNASIUM",
!"HAIRCUTS", !"HEIST9", !"INT_HOUSE", !"INT_OFFICE",
!"INT_SHOP", !"JST_BUISNESS", !"KART", !"KISSING",
!"KNIFE", !"LAPDAN1", !"LAPDAN2", !"LAPDAN3",
!"LOWRIDER", !"MD_CHASE", !"MD_END", !"MEDIC",
!"MISC", !"MTB", !"MUSCULAR", !"NEVADA",
!"ON_LOOKERS", !"OTB", !"PARACHUTE", !"PARK",
!"PAULNMAC", !"PED", !"PLAYER_DVBYS", !"PLAYIDLES",
!"POLICE", !"POOL", !"POOR", !"PYTHON",
!"QUAD", !"QUAD_DBZ", !"RAPPING", !"RIFLE",
!"RIOT", !"ROB_BANK", !"ROCKET", !"RUSTLER",
!"RYDER", !"SCRATCHING", !"SHAMAL", !"SHOP",
!"SHOTGUN", !"SILENCED", !"SKATE", !"SMOKING",
!"SNIPER", !"SPRAYCAN", !"STRIP", !"SUNBATHE",
!"SWAT", !"SWEET", !"SWIM", !"SWORD",
!"TANK", !"TATTOOS", !"TEC", !"TRAIN",
!"TRUCK", !"UZI", !"VAN", !"VENDING",
!"VORTEX", !"WAYFARER", !"WEAPONS", !"WUZI",
!"WOP", !"GFUNK", !"RUNNINGMAN"
};




Re: Extended Actor Functions - Konstantinos - 18.10.2016

@Romero837: Do you use Zeex's compiler patch? If yes, you need to wrap each one of them with curly braces such:
pawn Код:
static s_AnimationLibraries[][] = {
{!"AIRPORT"}, {!"ATTRACTORS"}, {!"BAR"}, {!"BASEBALL"},
...



Respuesta: Extended Actor Functions - Romero837 - 18.10.2016

I have the normal compiler




Re: Extended Actor Functions - Konstantinos - 18.10.2016

The code of the include is fine so the problem is either with your compiler or with the include you have saved. You may try to update the include one more time and if the problem persists, try as I told you: curly braces around the packed strings.