#include #define MAX_SPRUNK 100 //Just change this if you are going ot use more than 100 sprunk machines #define SPRUNK_PRICE 10 //how much does a can of sprunk cost? forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z, Float:RotX, Float:RotY, Float:RotZ); forward Sprunkend(playerid); new sprunk[MAX_SPRUNK], Float:Rot[7][MAX_SPRUNK]; public OnFilterScriptInit() { print("\n----------------------------------"); print("SPRUNK SPRUNK"); print("----------------------------------\n"); } public OnFilterScriptExit() { print("\n----------------------------------"); print("SPRUNK SPRUNK"); print("----------------------------------\n"); } public OnGameModeInit() { AddStaticSprunk(0,852.053,-1899.893,12.270,0,0,-90.000); // sprunt-piti return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { for(new i = 0; i < MAX_SPRUNK; i++) // SPRUNK { if(IsPlayerInSphere(playerid,851.2333,-1899.9518,12.8672,2)) { if(newkeys == 16 && GetPlayerState(playerid == PLAYER_STATE_ONFOOT)) { if(GetPlayerMoney(playerid) >= SPRUNK_PRICE) { SetPlayerPos(playerid, 851.2333-0.5, -1899.9518, 12.8672); TogglePlayerControllable(playerid,0); ApplyAnimation(playerid,"VENDING","VEND_Use",3.0,0,0,0,0,0); //sprunk machine animation PlayerPlaySound(playerid,42600,0,0,0); //sprunk machine noise - NOT SUPPORTED IN SA:MP SetTimerEx("Sprunkend",3000,0,"i",playerid); new cash = GetPlayerMoney(playerid); ResetPlayerMoney(playerid); GivePlayerMoney(playerid,cash-SPRUNK_PRICE); } else { PlayerPlaySound(playerid,1053,0,0,0); //rejected money sound - works! } } } } return true; } // SPRUNT MACHINE by GROVE stock AddStaticSprunk(id,Float:X,Float:Y,Float:Z,Float:RotX,Float:RotY,Float:RotZ) { sprunk[id] = CreateObject(955,X,Y,Z,RotX,RotY,RotZ); GetObjectPos(sprunk[id],Rot[1][id],Rot[2][id],Rot[3][id]); GetObjectRot(sprunk[id],Rot[4][id],Rot[5][id],Rot[6][id]); return id; } public Sprunkend(playerid) { ApplyAnimation(playerid,"VENDING","VEND_Drink_P",3.0,0,0,0,0,0); TogglePlayerControllable(playerid,1); new Float:health; GetPlayerHealth(playerid,health); SetPlayerHealth(playerid,health+10); } public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z, Float:RotX, Float:RotY, Float:RotZ) { new Float:oldposx, Float:oldposy, Float:oldposz, Float:oldposrotx, Float:oldposroty, Float:oldposrotz; new Float:tempposx, Float:tempposy, Float:tempposz, Float:tempposrotx, Float:tempposroty, Float:tempposrotz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); GetObjectRot(playerid, oldposrotx, oldposroty, oldposrotz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); tempposrotx = (oldposrotx -RotX); tempposroty = (oldposroty -RotY); tempposrotz = (oldposrotz -RotZ); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi) && (tempposrotx < radi) && (tempposrotx > -radi)) && ((tempposroty < radi) && (tempposroty > -radi)) && ((tempposrotz < radi) && (tempposrotz > -radi))) { return 1; } return 0; } IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius) { if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius){ return 1; } return 0; } GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) { new Float:x1,Float:y1,Float:z1; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2)); return floatround(tmpdis); }