O dziwo nie ma tutaj takiego tematu, więc można było by się trochę wyżalić i powymyślać funkcje (w miarę realne, które są w San Andreas). Przyklejcie jak chcecie, a jak nie to nie ;f.
Mój wymarzony system aktorów, chwilowo w wersji angielskiej (bo pisałem to pod forum SA-MPa).
// Functions.
native CreateActor(actorname[], skinid, bool:scoretab, bool:nametag, bool:moveable, bool:killable, Float:X, Float:Y, Float:Z, Float:angle); // create actor, return actor ID (NOT playerid)
native DestroyActor(actorid); // destroy (NO kill) actor
native SendActorMessage(actorid, message[]); // sends actor message to chat
native SetActorName(actorid, name[]); // change actor name
native GetActorName(actorid, const name[], len); // get actor name
native SetActorSkin(actorid, skinid); // set actor skin
native GetActorSkin(actorid); // returns actor skinid
native ToggleActorNameOnScoretab(actorid, bool:toggle); // show / hide actor on score tab
native SetActorScore(actorid, score); // sets actor score
native GetActorScore(actorid); // returns actor score
native ToggleActorNametag(actorid, bool:toggle); // show / hide actor nametag
native ToggleActorMoveable(actorid, bool:moveable); // false = actor can not move (eg by pushing the vehicle), true = actor can move
native ToggleActorKillable(actorid, bool:killable); // false = can't kill actor; true = can kill actor
native SetActorHealth(actorid, Float:health); // set actor health
native SetActorArmour(actorid, Float:armour); // set actor armour
native GetActorHealth(actorid, &Float:health); // get actor health
native GetActorArmour(actorid, &Float:armour); // get actor armour
native SetActorVirtualWorld(actorid, virtualworld); // set actor virtualworld
native GetActorVirtualWorld(actorid); // get actor virtualworld
native MoveActorToPos(actorid, Float:X, Float:Y, Float:Z); // verify that the same actor is in a vehicle or not; move actor to new position; returns the time displacement of
native SetActorPos(actorid, Float:X, Float:Y, Float:Z); // set actor pos (immediately)
native SetActorAngle(actorid, Float:Angle);
native PutActorInVehicle(actorid, vehicleid, seatid); // put actor in vehicle
native IsActorInAnyVehicle(actorid); // returns true is actor in vehicle
native GetActorVehicleID(actorid); // returns a actor vehicleid
native GetActorVehicleSeat(actorid); // returns a actor vehicle seat
native ApplyActorAnimation(actorid, animlib[], animname[], Float:fS, opt1, opt2, opt3, opt4, opt5); // set actor animation
native ClearAnimations(actorid); // delete animations
native SetActorSpecialAction(actorid, actionid); // set actor special action (eg. sprunk)
native IsActorCreated(actorid); // returns the true is actor created
native LoadActorPlayback(actorid, playbacktype, file[]);
native StopActorPlayback(actorid);
// Callbacks.
forward OnActorCreated(actorid, actorname[], skinid, bool:scoretab, bool:nametag, bool:moveable, bool:killable, Float:X, Float:Y, Float:Z, Float:angle);
forward OnActorDeath(actorid, by, kilerid, reason); // by = 0 for unkown; by = 1 for player; by = 2 for actor;
forward OnActorMoved(actorid, reason, reason2, Float:oldX, Float:oldY, Float:oldZ, Float:newX, Float:newY, Float:newZ); // DONT called by MoveActorToPos!
// Defines.
#define REASON_MOVED_BY_UNKOWN 0 // reason2 = -1
#define REASON_MOVED_BY_PLAYER 1 // reason2 = playerid
#define REASON_MOVED_BY_ACTOR 2 // reason2 = actorid
#define REASON_MOVED_BY_VEHICLE 3 // reason2 = vehicleid
#define INVALID_ACTOR_ID INVALID_PLAYER_ID
// Kill actor function.
KillActor(actorid)
{
if(!IsActorCreated(actorid)) return 0;
ApplyActorAnimation(actorid, "PED", "KO_shot_front", 4.1, 0, 1, 1, 1, 1);
SetTimerEx("KillActorTimer", 3000, 0, "d", actorid);
return 1;
}
forward KillActorTimer(actorid);
public KillActorTimer(actorid)
{
CallRemoteFunction("OnActorDeath", "dddd", actorid, 0, INVALID_ACTOR_ID, 255);
return 1;
}
A teraz bardziej realne funkcje, które można by praktycznie dodać na poczekaniu:
native ToggleSpeedBlur(playerid, bool:toggle); // efekt rozmycia ekranu przy szybkim poruszaniu się pojazdem
native ToggleRequestClassGUI(bool:toggle); // ustawianie widoczności przycisków dalej, wstecz i SPAWN przy wybieraniu skina
native SetPlayerBikeSkill(playerid, skill); // do zarządzania wysokością skoku rowera, jeszcze można do tego dodać definicje, ale nie wiem ile jest poziomów bike skillu
native SetPlayerMotorbikeSkill(playerid, skill); // do zarządzania spadaniem z motocykla (im wyższy skill tym mniejsza szansa na spadnięcie przy kolizji - jak w SA)
native SetPlayerCameraMode(playerid, mode); // ustawianie trybu kamery
#define CAMERA_MODE_NORMAL 0 // normalny tryb kamery, normalne sterowanie
#define CAMERA_MODE_WEAPON 1 // grając w SA ostatnio podłapałem ciekawą rzecz, w dwóch misjach zdarza się, że przełącza nam na kamerę sterowania bronią coś ala FPS (First-person shooter), tylko widać sam celownik. Przydałoby się to przy tworzeniu działek (chociażby miniguna) lub strzelaniu z helikoptera; trochę bardziej skomplikowana rzecz dla teamu SA-MP
Ale mam wyjebiaszczą fantazje, a Wy?