Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if defined _editrange_included_
- #endinput
- #endif
- #define _editrange_included_
- #include a_samp.inc
- //---------------------------------------------------//
- // PlayerEditRange v1.0 by Patryk "Maku" Makowski //
- //---------------------------------------------------//
- /*
- PlayerEditRange(playerid, rangeid);
- IsPlayerEditRange(playerid);
- OnPlayerEditRangeFinish(playerid, rangeid, Float:range, success);
- OnPlayerEditRangeUpdate(playerid, rangeid, Float:range);
- */
- #define UNDEFINED_EDITRANGE -1
- #define EDITRANGE_REASON_SUCCESS 1
- #define EDITRANGE_REASON_FAIL 0
- #define EDITRANGE_REASON_CANCEL 2
- #define EDITRANGE_UPKEY KEY_FIRE
- #define EDITRANGE_DOWNKEY KEY_HANDBRAKE /*= KEY_AIM*/
- #define EDITRANGE_FASTKEY KEY_SPRINT
- #define EDITRANGE_FINISHKEY KEY_SECONDARY_ATTACK
- #define EDITRANGE_CANCELKEY KEY_JUMP
- #define EDITRANGE_OBJECTID 19133
- #define EDITRANGE_CAMERACHANGE (60.0)
- forward OnPlayerEditRangeFinish(playerid, rangeid, Float:range, success);
- forward OnPlayerEditRangeUpdate(playerid, rangeid, Float:range);
- static PlayerObjects_ER[MAX_PLAYERS][20];
- static PlayerEdit_ER[MAX_PLAYERS] = {UNDEFINED_EDITRANGE,...};
- static Float:PlayerRange_ER[MAX_PLAYERS] = {0.0, ...};
- stock IsPlayerEditRange(playerid)
- {
- if(PlayerEdit_ER[playerid] == -1) return false;
- return true;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(PlayerEdit_ER[playerid] != UNDEFINED_EDITRANGE) EditRangeFinish_(playerid, PlayerEdit_ER[playerid], PlayerRange_ER[playerid], EDITRANGE_REASON_FAIL);
- CallLocalFunction("EDRANGE_OnPlayerDisconnect", "ii", playerid, reason);
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(PlayerEdit_ER[playerid] != UNDEFINED_EDITRANGE)
- {
- if(newkeys & EDITRANGE_UPKEY)
- {
- PlayerRange_ER[playerid] += 0.5;
- if(newkeys & EDITRANGE_FASTKEY) PlayerRange_ER[playerid] += 1.5;
- new Float:ER_x, Float:ER_y, Float:ER_z;
- GetPlayerPos(playerid, ER_x, ER_y, ER_z);
- new Float:angle = 360.0;
- if(PlayerRange_ER[playerid] > EDITRANGE_CAMERACHANGE)
- {
- SetPlayerCameraPos(playerid,
- ER_x + (PlayerRange_ER[playerid] * floatsin(-random(360), degrees)),
- ER_y + (PlayerRange_ER[playerid] * floatcos(-random(360), degrees)),
- 1.0 + ER_z);
- }else SetPlayerCameraPos(playerid, ER_x, ER_y, 0.5 + ER_z + PlayerRange_ER[playerid] * 2);
- SetPlayerCameraLookAt(playerid, ER_x, ER_y, ER_z);
- for(new i; i < 20; i++) {
- DestroyPlayerObject(playerid, PlayerObjects_ER[playerid][i]);
- PlayerObjects_ER[playerid][i] = CreatePlayerObject(playerid, EDITRANGE_OBJECTID,
- ER_x + (PlayerRange_ER[playerid] * floatsin(-angle, degrees)),
- ER_y + (PlayerRange_ER[playerid] * floatcos(-angle, degrees)),
- ER_z + 0.5, 0.0, 0.0, 0.0, PlayerRange_ER[playerid] + 50.0);
- angle -= 18.0;
- }
- CallLocalFunction("OnPlayerEditRangeUpdate", "iif", playerid, PlayerEdit_ER[playerid], PlayerRange_ER[playerid]);
- return 1;
- }
- if(newkeys & EDITRANGE_DOWNKEY && PlayerRange_ER[playerid] > 1.0)
- {
- PlayerRange_ER[playerid] -= 0.5;
- if(newkeys & EDITRANGE_FASTKEY) PlayerRange_ER[playerid] -= 1.5;
- if(PlayerRange_ER[playerid] < 1.0) PlayerRange_ER[playerid] = 1.0;
- new Float:ER_x, Float:ER_y, Float:ER_z;
- GetPlayerPos(playerid, ER_x, ER_y, ER_z);
- new Float:angle = 360.0;
- if(PlayerRange_ER[playerid] > EDITRANGE_CAMERACHANGE)
- {
- SetPlayerCameraPos(playerid,
- ER_x + (PlayerRange_ER[playerid] * floatsin(-random(360), degrees)),
- ER_y + (PlayerRange_ER[playerid] * floatcos(-random(360), degrees)),
- 1.0 + ER_z);
- }else SetPlayerCameraPos(playerid, ER_x, ER_y, 0.5 + ER_z + PlayerRange_ER[playerid] * 2);
- SetPlayerCameraLookAt(playerid, ER_x, ER_y, ER_z);
- for(new i; i < 20; i++) {
- DestroyPlayerObject(playerid, PlayerObjects_ER[playerid][i]);
- PlayerObjects_ER[playerid][i] = CreatePlayerObject(playerid, EDITRANGE_OBJECTID,
- ER_x + (PlayerRange_ER[playerid] * floatsin(-angle, degrees)),
- ER_y + (PlayerRange_ER[playerid] * floatcos(-angle, degrees)),
- ER_z + 0.5, 0.0, 0.0, 0.0);
- angle -= 18.0;
- }
- CallLocalFunction("OnPlayerEditRangeUpdate", "iif", playerid, PlayerEdit_ER[playerid], PlayerRange_ER[playerid]);
- return 1;
- }
- if(newkeys & EDITRANGE_CANCELKEY)
- {
- EditRangeFinish_(playerid, PlayerEdit_ER[playerid], PlayerRange_ER[playerid], EDITRANGE_REASON_CANCEL);
- return 1;
- }
- if(newkeys & EDITRANGE_FINISHKEY)
- {
- EditRangeFinish_(playerid, PlayerEdit_ER[playerid], PlayerRange_ER[playerid], EDITRANGE_REASON_SUCCESS);
- return 1;
- }
- }
- CallLocalFunction("ERANGE_OnPlayerKeyStateChange", "iii", playerid, newkeys, oldkeys);
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if(newstate != PLAYER_STATE_ONFOOT && PlayerEdit_ER[playerid] != UNDEFINED_EDITRANGE)
- {
- EditRangeFinish_(playerid, PlayerEdit_ER[playerid], PlayerRange_ER[playerid], EDITRANGE_REASON_FAIL);
- }
- CallLocalFunction("EDRANGE_OnPlayerStateChange", "iii", playerid, newstate, oldstate);
- return 1;
- }
- stock EditRangeFinish_(playerid, rangeid, Float:range, success)
- {
- for(new i; i < 20; i++) DestroyPlayerObject(playerid, PlayerObjects_ER[playerid][i]);
- TogglePlayerControllable(playerid, true);
- PlayerEdit_ER[playerid] = UNDEFINED_EDITRANGE;
- CallLocalFunction("OnPlayerEditRangeFinish", "iifi", playerid, rangeid, Float:range, success);
- SetCameraBehindPlayer(playerid);
- return 1;
- }
- stock PlayerEditRange(playerid, rangeid)
- {
- if(!IsPlayerConnected(playerid) || rangeid < 0 || rangeid == UNDEFINED_EDITRANGE) return 0;
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 0;
- if(PlayerEdit_ER[playerid] != UNDEFINED_EDITRANGE) return 0;
- TogglePlayerControllable(playerid, false);
- PlayerEdit_ER[playerid] = rangeid;
- PlayerRange_ER[playerid] = 1.0;
- new Float:ER_x, Float:ER_y, Float:ER_z;
- GetPlayerPos(playerid, ER_x, ER_y, ER_z);
- new Float:angle = 360.0;
- for(new i; i < 20; i++)
- {
- PlayerObjects_ER[playerid][i] = CreatePlayerObject(playerid, EDITRANGE_OBJECTID,
- ER_x + (PlayerRange_ER[playerid] * floatsin(-angle, degrees)),
- ER_y + (PlayerRange_ER[playerid] * floatcos(-angle, degrees)),
- ER_z + 0.5, 0.0, 0.0, 0.0);
- angle -= 18.0;
- }
- SetPlayerCameraPos(playerid, ER_x, ER_y, 0.5 + ER_z + PlayerRange_ER[playerid] * 2);
- SetPlayerCameraLookAt(playerid, ER_x, ER_y, ER_z);
- return 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect EDRANGE_OnPlayerDisconnect
- forward EDRANGE_OnPlayerDisconnect(playerid, reason);
- #if defined _ALS_OnPlayerStateChange
- #undef OnPlayerStateChange
- #else
- #define _ALS_OnPlayerStateChange
- #endif
- #define OnPlayerStateChange EDRANGE_OnPlayerStateChange
- forward EDRANGE_OnPlayerStateChange(playerid, newstate, oldstate);
- #if defined _ALS_OnPlayerKeyStateChange
- #undef OnPlayerKeyStateChange
- #else
- #define _ALS_OnPlayerKeyStateChange
- #endif
- #define OnPlayerKeyStateChange ERANGE_OnPlayerKeyStateChange
- forward ERANGE_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement