Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Dog sys by Leo
- /*
- ### # # ##### # # # ###### ####### #####
- # ## # # # # # # # # # # #
- # # # # # # # # # # # #
- # # # # # # # # # # ##### #####
- # # # # # # # # # # # #
- # # ## # # # # # # # # # #
- ### # # ##### ####### ##### ###### ####### #####
- */
- #include <a_samp>
- #include <streamer>
- #include <zcmd>
- #include <sscanf2>
- /*
- ######## ######## ######## #### ## ## ######## ######
- ## ## ## ## ## ### ## ## ## ##
- ## ## ## ## ## #### ## ## ##
- ## ## ###### ###### ## ## ## ## ###### ######
- ## ## ## ## ## ## #### ## ##
- ## ## ## ## ## ## ### ## ## ##
- ######## ######## ## #### ## ## ######## ######
- */
- #define BALLOBJECTID (1974) // Objekat lopte na /dog throwball
- #define DOG_SPEED (4.00) // Koliko se brzo krece Pas
- #define DOG_OBJECT (-2012) // Objekat Psa ( sada je jelen )
- #define BALL_DISTANCE (15.0) // Koliko daleko ce lopta odletiti kada je netko baci.
- #define BALL_SPEED (4.5) // Koliko brzo ce se kretati loptica kada ju netko baci.
- #define DOG_DIS_NEAR_PLAYER (1.3) // Koliko blizu ce pas biti pored igraca
- #define COLOR_LIGHTBLUE -1
- #define COLOR_RED -1
- #define COLOR_YELLOW -1
- /*
- ## ## ### ######## ######
- ## ## ## ## ## ## ## ##
- ## ## ## ## ## ## ##
- ## ## ## ## ######## ######
- ## ## ######### ## ## ##
- ## ## ## ## ## ## ## ##
- ### ## ## ## ## ######
- */
- // Dog Follow
- new DogFollowTimer[MAX_PLAYERS],
- DogFollowPlayer[MAX_PLAYERS];
- // Throwing Ball
- new BallObject[MAX_PLAYERS],
- ThrowBall[MAX_PLAYERS],
- bool: BallThrown[MAX_PLAYERS] = {false, ...};
- // Player Enum
- enum pInfo
- {
- OwnedDog,
- DogSpawned
- };
- new PlayerInfo[MAX_PLAYERS][pInfo];
- enum dog
- {
- dogobject,
- Float:dPozX,
- Float:dPozY,
- Float:dPozZ,
- Float:dPozA,
- };
- new PlayerDog[MAX_PLAYERS][dog];
- /*
- ###### ######## ####### ###### ## ## ######
- ## ## ## ## ## ## ## ## ## ## ##
- ## ## ## ## ## ## ## ##
- ###### ## ## ## ## ##### ######
- ## ## ## ## ## ## ## ##
- ## ## ## ## ## ## ## ## ## ## ##
- ###### ## ####### ###### ## ## ######
- */
- stock GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
- {
- new Float:a;
- GetPlayerPos(playerid, x, y, a);
- GetPlayerFacingAngle(playerid, a);
- if (GetPlayerVehicleID(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
- }
- x += (distance * floatsin(-a, degrees));
- y += (distance * floatcos(-a, degrees));
- }
- /*
- ## ## ####### ####### ## ## ######
- ## ## ## ## ## ## ## ## ## ##
- ## ## ## ## ## ## ## ## ##
- ######### ## ## ## ## ##### ######
- ## ## ## ## ## ## ## ## ##
- ## ## ## ## ## ## ## ## ## ##
- ## ## ####### ####### ## ## ######
- */
- public OnPlayerDisconnect(playerid, reason)
- {
- // Dog Destroy Object
- new i = PlayerInfo[playerid][OwnedDog];
- DestroyDynamicObject(PlayerDog[i][dogobject]);
- PlayerInfo[playerid][DogSpawned] = 0;
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- new i = PlayerInfo[playerid][OwnedDog];
- new Float:playerPos[3];
- if(PlayerDog[i][dogobject] == objectid)
- {
- if(BallThrown[playerid] == true)
- {
- // Player
- ThrowBall[playerid] = 1;
- BallThrown[playerid] = false;
- // Object
- if(BallObject[ playerid ] != INVALID_OBJECT_ID) {
- DestroyObject(BallObject[ playerid ]);
- BallObject[ playerid ] = INVALID_OBJECT_ID; }
- // Move Dog To Owner
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- MoveDynamicObject(PlayerDog[i][dogobject],playerPos[0], playerPos[1]+DOG_DIS_NEAR_PLAYER ,playerPos[2], DOG_SPEED);
- }
- }
- return 1;
- }
- //============ [ TIMERS ] ============
- forward DogStartFollowing(playerid);
- public DogStartFollowing(playerid)
- {
- new i = PlayerInfo[playerid][OwnedDog];
- StopDynamicObject(PlayerDog[i][dogobject]);
- new Float:playerPos[3];
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- MoveDynamicObject(PlayerDog[i][dogobject],playerPos[0], playerPos[1]+DOG_DIS_NEAR_PLAYER ,playerPos[2]-0.5, DOG_SPEED);
- return 1;
- }
- /*
- ###### ## ## ########
- ## ## ### ### ## ##
- ## #### #### ## ##
- ## ## ### ## ## ##
- ## ## ## ## ##
- ## ## ## ## ## ##
- ###### ## ## ########
- */
- CMD:dog(playerid, params[])
- {
- new option[15];
- if(sscanf(params, "s[15] ", option))
- {
- SendClientMessage(playerid, COLOR_LIGHTBLUE, "* ______________________ DOG OPTIONS ______________________ *");
- SendClientMessage(playerid, -1, " [INFO]: /dog [action].");
- SendClientMessage(playerid, -1, " [Actions]: spawn, follow, stopfollow, throwball");
- SendClientMessage(playerid, COLOR_LIGHTBLUE, "* __________________________________________________________ *");
- return 1;
- }
- if(strcmp(option,"spawn",true) == 0)
- {
- new i = PlayerInfo[playerid][OwnedDog];
- if(PlayerInfo[playerid][OwnedDog] == -1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vi ne posjedujete kucnog ljubimca.");
- if(PlayerInfo[playerid][DogSpawned] != 0) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Već ste spawnovali vašeg kučnog ljubimca.");
- // Dog Positions ( Spawning / Getting/Save Pos )
- new Float:playerPos[3];
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- PlayerDog[i][dPozX] = playerPos[0] + DOG_DIS_NEAR_PLAYER;
- PlayerDog[i][dPozY] = playerPos[1];
- PlayerDog[i][dPozZ] = playerPos[2] - 0.5;
- PlayerDog[i][dogobject] = CreateDynamicObject(DOG_OBJECT, PlayerDog[i][dPozX], PlayerDog[i][dPozY], PlayerDog[i][dPozZ], 0,0,0);
- // Player
- PlayerInfo[playerid][DogSpawned] = 1;
- Streamer_Update(playerid);
- SendClientMessage(playerid, COLOR_YELLOW, "[INFO]: Uspiješno ste spawnovali vašeg kućnog ljubimca, za više opcija (/dog).");
- }
- else if(strcmp(option,"follow",true) == 0)
- {
- new i = PlayerInfo[playerid][OwnedDog];
- if(PlayerInfo[playerid][OwnedDog] == -1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vi ne posjedujete kucnog ljubimca.");
- if(PlayerInfo[playerid][DogSpawned] < 1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vaš kučni ljubimac nije spawnan, ili nije u vašoj blizini.");
- if(DogFollowPlayer[playerid] == 1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Već vas prati vaš pas, da mu naredite da vas prestane pratiti kucajte (/dog stopfollow).");
- // Dog Positions ( Getting/Spawning )
- new Float:playerPos[3];
- GetPlayerPos(playerid, playerPos[0], playerPos[1], playerPos[2]);
- MoveDynamicObject(PlayerDog[i][dogobject],playerPos[0], playerPos[1]+DOG_DIS_NEAR_PLAYER ,playerPos[2] - 0.5, DOG_SPEED);
- // Dog Follow Timer( Start = every 1000secs )
- DogFollowTimer[playerid] = SetTimer("DogStartFollowing", 1000, true);
- DogFollowPlayer[playerid] = 1;
- }
- else if(strcmp(option,"stopfollow",true) == 0)
- {
- new i = PlayerInfo[playerid][OwnedDog];
- if(PlayerInfo[playerid][OwnedDog] == -1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vi ne posjedujete kucnog ljubimca.");
- if(PlayerInfo[playerid][DogSpawned] < 1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vaš kučni ljubimac nije spawnan, ili nije u vašoj blizini.");
- if(DogFollowPlayer[playerid] == 0) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vaš pas vas ne prati, da vas prati kucajte (/dog follow).");
- // Dog Follow Timer( Stopping )
- KillTimer(DogFollowTimer[playerid]);
- StopDynamicObject(PlayerDog[i][dogobject]);
- DogFollowPlayer[playerid] = 0;
- }
- else if(strcmp(option,"throwball",true) == 0)
- {
- new i = PlayerInfo[playerid][OwnedDog];
- if(PlayerInfo[playerid][OwnedDog] == -1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vi ne posjedujete kucnog ljubimca.");
- if(PlayerInfo[playerid][DogSpawned] < 1) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Vaš kučni ljubimac nije spawnan, ili nije u vašoj blizini.");
- if(ThrowBall[playerid] == 0) return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Nemate lopticu za psa kod sebe.");
- // Dog Follow Timer( Stopping )
- KillTimer(DogFollowTimer[playerid]);
- StopDynamicObject(PlayerDog[i][dogobject]);
- DogFollowPlayer[playerid] = 0;
- // Throwing Ball
- new Float:x, Float:y, Float:z,
- Float:x2, Float:y2;
- GetPlayerPos(playerid, x, y, z);
- GetXYInFrontOfPlayer(playerid, x2, y2, BALL_DISTANCE);
- GetObjectPos(BallObject[playerid], x, y, z);
- BallObject[playerid] = CreateObject(BALLOBJECTID, x, y, z, 0,0,0);
- MoveObject(BallObject[playerid], x2, y2, z,BALL_SPEED);
- // Player
- ThrowBall[playerid] = 0;
- ApplyAnimation(playerid,"GRENADE","WEAPON_throw",4.1,0,1,1,0,1000,1);
- // Dog Follow Ball
- MoveDynamicObject(PlayerDog[i][dogobject],x2, y2, z, 2.00);
- BallThrown[playerid] = true;
- }
- else
- {
- return SendClientMessage(playerid, COLOR_RED,"[GREŠKA]: Pogrešno ste unijeli ime akcije koju zelite koristiti.");
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement