Jump to content

BasketBall v3 (beta)


ATomas

Recommended Posts

tak sem si s tim trosicku pohral este to neni hotovy dycky natom pracuj utak 1-2 hodky dene nedelam jenom basketball :)

pridal sem par vecicek:

trefeni kose podle toho jak dlouho drzite klavesu ALT (jak dlouho drzet vam nereknu musite si vyskouset)

pridal sem textdraw aby to nejak vypadalo

hlidani pokud hrac neopusti hriste nebo se neodpoji pokud ano basket se sam ukonci

setrvacny dribling kdyz netrefite je to detail ale este ho poupravim

este sem vam ty souradky hodil do define pro nektere kteri by si ho chteli premistit

#define STARTOVNI_POZICE 2316.7790527344,-1519.2508544922,24.478769302368
#define VYSKA_KOSE 27.2
#define V_KOSI_X 2316.8337
#define V_KOSI_Y -1514.7951
#define VYSKA_ZEME 24.5
#define OBRUC_L 2316.61328125
#define OBRUC_P 2317.1147460938
#define OBLAST_U_KOSE_X 2313
#define OBLAST_U_KOSE_Y -1519
#define OBLAST_U_KOSE_RAND_X 7
#define OBLAST_U_KOSE_RAND_Y 3
#define OBLAST_BASKETU 2128.742,2413.954,-1535.795,-1334.461

forward Hod();
forward Hide();
forward Hazi();
forward Odrazka();
forward HodEx(playerid);
forward BasketUpdate(playerid);

enum BASKET
{
   Text:TextInfo,
   Menu:basket,
Float:dalka,
Float:Vyska,
Float:XM,
Float:YM,
varovani,
schovat,
probiha,
Uspech,
skore,
hraje,
hazel,
   timer,
   cash,
   hazi,
   bezi,
let,
mic,
cas
}
new Basket[bASKET];

public OnGameModeInit()
{
   Basket[TextInfo] = TextDrawCreate(20,120,"ERROR");
TextDrawUseBox(Basket[TextInfo],1);
TextDrawBoxColor(Basket[TextInfo],0x00000080);
TextDrawTextSize(Basket[TextInfo],150,40);
Basket[mic] = CreateObject(2114,STARTOVNI_POZICE,0,0,0);//vytvorime mic
Basket[basket] = CreateMenu("BasketBall",1,20,120,150,40);//vytvorime mic
AddMenuItem(Basket[basket],0,"100");
AddMenuItem(Basket[basket],0,"200");
AddMenuItem(Basket[basket],0,"500");
AddMenuItem(Basket[basket],0,"1000");
AddMenuItem(Basket[basket],0,"2000");
AddMenuItem(Basket[basket],0,"5000");
AddMenuItem(Basket[basket],0,"10000");
AddMenuItem(Basket[basket],0,"Nic");
return 1;
}

public OnPlayerDisconnect(playerid,reason)
{
Basket[probiha]= false;
Basket[cash] = 0;
Basket[skore] = 0;
Basket[hraje] = 0;
Basket[hazel] = 0;
Basket[varovani] = 0;
return 1;
}

public OnPlayerPickUpPickup(playerid,pickupid)
{
if(IsPlayerInSphere(playerid,2325.1113,-1518.2878,25.3437,2))
{
	if(Basket[probiha] == 0)//kdyz neprobiha
	{
 		ShowMenuForPlayer(Basket[basket],playerid);//otevreme menu
 	}
	}
return 1;
}

public OnPlayerSelectedMenuRow(playerid,row)
{
if(GetPlayerMenu(playerid) == Basket[basket])//kdyz odsouhlasi menu pro basket
{
    new sazka;
    if(row == 0) sazka = 100;
    else if(row == 1) sazka = 200;
    else if(row == 2) sazka = 500;
    else if(row == 3) sazka = 1000;
    else if(row == 4) sazka = 2000;
    else if(row == 5) sazka = 5000;
    else if(row == 6) sazka = 10000;
    else HideMenuForPlayer(Basket[basket],playerid);
    if(sazka > 0)//kdyz zadal castku
    {
        if(GetPlayerMoney(playerid) < sazka) textdraw(playerid,"Nemate tolik penez");//kdyz nato nema prachy
        else
		{
	        GivePlayerMoney(playerid,-sazka);//odecteme sazku
	        Basket[probiha] = true;//aby nemohl hrat jiny hrac
			Basket[skore] = 0;//pro jistotu
			Basket[hraje] = 0;
			Basket[hazel] = 0;
			Basket[varovani] = 0;
	        Basket[cash] = sazka;//zapamatujeme si sazku
	        Basket[hraje] = playerid;//nastavime id ktere hraje
	        SetPlayerCheckpoint(playerid,STARTOVNI_POZICE,1);//zobrazime checkpoint na startu
	        Basket[hazel] = 10;//nastavime kolikrat muze hazet
	        textdraw(playerid,"Mate 10 hodu hodne stesti...");
	        SetTimerEx("BasketUpdate",1000,0,"i",playerid);//spustime timer
        }
	}
}
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
if(Basket[hraje] == playerid) textdraw(playerid,"Pro hod micem stisknete L.ALT");//kdyz vejde do pickupu a bude hrat
return 1;
}

public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
if(newkeys == KEY_WALK)
{
    if(IsPlayerInCheckpoint(playerid))//kdyz bude v chackpointu
    {
	    new Float:X,Float:Y,Float:Z;
		GetPlayerPos(playerid,X,Y,Z);//zjistime pozici hrace
		SetObjectPos(Basket[mic],X,Y+0.4,Z+1.1);//mic dame k menu
		ApplyAnimation(playerid,"BSKTBALL","BBALL_Jump_Shot",4.1,0,1,1,1,1);//prehrajeme animaci
		SetTimer("HodEx",550,0);//spustime timer
		Basket[hazi] = SetTimerEx("Hazi",50,1,"i",playerid);
		Basket[bezi] = 1;//aby nemohly hrat dva hraci najednou
	    Basket[dalka] = floatsqroot(floatpower(floatabs(floatsub(V_KOSI_X,X)),2)+ floatpower(floatabs(floatsub(V_KOSI_Y,Y)),2)+ floatpower(floatabs(floatsub(VYSKA_KOSE,Z)),2));
		Basket[Vyska] = Basket[dalka]/1.5+VYSKA_KOSE;//nastavime vysku kam bude mic mirit
	}
}
else if(oldkeys == KEY_WALK)
{
    if(Basket[hraje] == playerid)
    {
        if(Basket[bezi] == 1)
        {
            //kdyz pusti klavesu zastavime pocitani
            Basket[bezi] = 0;
			KillTimer(Basket[hazi]);
			DisablePlayerCheckpoint(playerid);
		}
	}
}
return 1;
}

public OnObjectMoved(objectid)
{
if(objectid == Basket[mic])
{
	if(Basket[let] == 1)//kdyz hazi nakos
	{
	    Basket[hazel]--;//odecteme hod
	    KillTimer(Basket[timer]);//zastavime timer
	    if(Basket[uspech] == 1)
	    {
	   		MoveObject(Basket[mic],V_KOSI_X,V_KOSI_Y,24.4,4);//tady trefi mic projede kosem az na zem
	   		Basket[skore] ++;//pristeme skore
			GameTextForPlayer(Basket[hraje],"Skore~n~~w~+1",2000,1);
			new string[256];
			format(string,256,"Dal jste kos ze vzdalenosti %.1fm",Basket[dalka]);
			textdraw(Basket[hraje],string);
			Basket[let] = 2;//nastavime pro pad dolu
		}
		else
		{
  			//vybereme si pozici u kose
	    	Basket[XM] = OBLAST_U_KOSE_X + random(OBLAST_U_KOSE_RAND_X);
            Basket[YM] = OBLAST_U_KOSE_Y + random(OBLAST_U_KOSE_RAND_Y);
			MoveObject(Basket[mic],Basket[XM],Basket[YM],VYSKA_ZEME,3);//a mic tam namirime
			SetTimer("Odrazka",100,0);//pustime timer na odraz
			Basket[Vyska] = 29;//nastavime vysku pro odraz ze ktere zase budeme odecitat
			textdraw(Basket[hraje],"Nedal jste kos");
			Basket[let] = 0;
		}
		Basket[uspech] = false;
	}
	else if(Basket[let] == 2)//kdyz trefil
	{
		SetPlayerCheckpoint(Basket[hraje],STARTOVNI_POZICE,1);
		Basket[let] = 0;
	}
	else if(Basket[let] == 3)//kdyz netrefil
	{
	    MoveObject(Basket[mic],Basket[XM],Basket[YM],VYSKA_ZEME+0.5,2);
		Basket[let] = 4;
	}
	else if(Basket[let] == 4)//setrvacny dribling
	{
	    MoveObject(Basket[mic],Basket[XM],Basket[YM],VYSKA_ZEME,1);
	    Basket[let] = 5;
	}
	else if(Basket[let] == 5)//zase dribling
	{
	    SetPlayerCheckpoint(Basket[hraje],Basket[XM],Basket[YM],VYSKA_ZEME,1);
	    Basket[let] = 0;
	}
}
return 1;
}

stock textdraw(playerid,text[])
{
if(IsPlayerConnected(playerid))
{
    new string[256];
	format(string,sizeof(string),"%s",text);
	TextDrawHideForPlayer(playerid,Basket[TextInfo]);
 		TextDrawSetString(Basket[TextInfo],string);
   	TextDrawShowForPlayer(playerid,Basket[TextInfo]);
   	KillTimer(Basket[schovat]);
    	Basket[schovat] = SetTimer("Hide",5000,0);
}
return 1;
}

public Hide()
{
TextDrawHideForAll(Basket[TextInfo]);
return 1;
}

public BasketUpdate(playerid)//tady kontrolujeme kolik ma hodu a kolikrat se trefil
{
if(IsPlayerInArea(playerid,OBLAST_BASKETU))//kdyz bude na hristi
{
	if(Basket[hazel] > 0)//kdyz hazeni nevycerpal
	{
		new string[70];
		format(string,70,"~n~~n~~n~~n~~n~~n~~n~~n~~r~Skore ~w~%d I ~r~Hodu ~w~%d",Basket[skore],Basket[hazel]);//dosadime si spravu
		GameTextForPlayer(playerid,string,1100,5);//odesleme
		SetTimerEx("BasketUpdate",1000,0,"i",playerid);//pustime znova timer
		Basket[varovani] = 0;
	}else{//kdzy hazeni vycerpal
	    new odmena = Basket[skore] * Basket[cash];//spocitame odmenu
	    GivePlayerMoney(playerid,odmena);//dame mu ji
	    new string[128];
	    format(string,128,"Kos jste trefil %dx dostavate odmenu %d$",Basket[skore],odmena);//dosadime do spravy
	    textdraw(playerid,string);
	    DisablePlayerCheckpoint(playerid);//schovame mu checkpoint
	    Basket[probiha]= false;
		Basket[cash] = 0;
		Basket[skore] = 0;
		Basket[hraje] = -1;
		Basket[hazel] = 0;
		Basket[varovani] = 0;
	}
}else{
    if(Basket[varovani] > 10)
    {
        textdraw(playerid,"Byl jste diskvalifikovan protoze jste opustil hriste");
        Basket[varovani] = 0;//uvolnime basket
        Basket[probiha] = false;
		Basket[cash] = 0;
		Basket[skore] = 0;
		Basket[hraje] = 0;
		Basket[hazel] = 0;
		Basket[varovani] = 0;
		DisablePlayerCheckpoint(playerid);
	}else{
	    textdraw(playerid,"Vratte se na hriste !");
	    Basket[varovani] ++ ;
	    SetTimerEx("BasketUpdate",1000,0,"i",playerid);
	}
}
return 1;
}

public Hazi()
{
//tady pocitame jak dlouho drzel klavesu
Basket[cas]++;
return 1;
}

public HodEx(playerid)
{
//vyhodnoceni jak dlouho klavesu drzel
if(Basket[cas] == 10)//kdyz dostatecne dlouho do kose se trefi
{
	Basket[uspech] = true;
	Basket[XM] = V_KOSI_X;
}else{//kdyz ne netrefi se
	new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid,X,Y,Z);
	if(X < V_KOSI_X)//jestl istoji v leho nebo v pravo od kose
	{
    	Basket[XM] = OBRUC_L + Basket[cas]/10;//podle toho jak drzel kvaveu spocitame velikost odchylky
    }else{
    	Basket[XM] = OBRUC_P - Basket[cas]/10;//tu to same ale na druhou stranu
    }
}
Basket[cas] = 0;//vynulujeme cas pro priste
DisablePlayerCheckpoint(playerid);//schovame cp
Hod();//udelame s misem oblouk
return 1;
}

public Hod()
{
if(Basket[Vyska] > VYSKA_KOSE)//kdyz bude vyse nez kos
{
	MoveObject(Basket[mic],Basket[XM],V_KOSI_Y,Basket[Vyska],3);//pohneme objectem
    Basket[Vyska] -= 0.2;//odecteme vysku pro pristi let vznikne nam tak obloukova draha
    Basket[timer] = SetTimer("Hod",100,0);//a zase si spustime timer
    Basket[let] = 1;
}
return 1;
}

public Odrazka()//vyvolano pro odraz
{
if(Basket[Vyska] > VYSKA_ZEME)//kdyz nebude na zemi
{
    MoveObject(Basket[mic],Basket[XM],Basket[YM],Basket[Vyska],3);//pohneme objectem
    Basket[Vyska] -= 0.2;//odecmete vysku zase pro priste aby vznikl obkoukovy let
    SetTimer("Odrazka",100,0);//pustime timer
}else{
    Basket[let] = 3;//nasatvime neuspech
    OnObjectMoved(Basket[mic]);//pojistka
}
return 1;
}

//toto znate
stock IsObjectInSphere(objectid,Float:x,Float:y,Float:z,Float:radius2)
{
new Float:x1,Float:y1,Float:z1,Float:tmpdis;
   GetObjectPos(objectid,x1,y1,z1);
   tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+ floatpower(floatabs(floatsub(y,y1)),2)+ floatpower(floatabs(floatsub(z,z1)),2));
   if(tmpdis < radius2) return 1;
return 0;
}

stock IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius2)
{
if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius2) return 1;
return 0;
}

stock GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z)
{
  new Float:x1,Float:y1,Float:z1,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);
}

stock IsPlayerInArea(playerid,Float:minx1,Float:maxx1,Float:miny1,Float:maxy1)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
if(x > minx1 && x < maxx1 && y > miny1 && y < maxy1) return 1;
return 0;
}

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Ty se teda fakt snazis :) Vypada to dobre ale este sem to ani nestih cely precist xD Noc co, jen tak dal.

PS: Doufam ze zadna lamka nebude rikat ze sem kopirak az si to vecer nacpu do modu :d

Link to comment
Share on other sites

tak to snad zvladne sam ne ? :)

 

Jako jo ale pár věcí nechápu BO sem l*ma :d

to tam mas popsany co co je :d

potrebujes akorat souradky v kosi souradky na startovni mic souradky pro zonu kam se bude mit odrazet souradky vejsky zeme a souradky vysku kose

Link to comment
Share on other sites

tak to snad zvladne sam ne ? :)

 

Jako jo ale pár věcí nechápu BO sem l*ma :d

to tam mas popsany co co je :d

potrebujes akorat souradky v kosi souradky na startovni mic souradky pro zonu kam se bude mit odrazet souradky vejsky zeme a souradky vysku kose

 

A JAk zjistim souradky v koši? a vedle? mam se na ten koš pověsit za spodáry? :d

 

BTW Good :) (thx done že si mi to připomenul)

Link to comment
Share on other sites

Výborně ATome..

to si mě potěšil..

 

Tento příspěvek byl editován, z důvodu porušení pravidel, opakované porušovaní pravidel bude náležitě potrestáno.

Link to comment
Share on other sites

[other]Avest-X píše:

Já mam v our world basket udělanej jinak

ale good, alespon me black nebude furt zebrat

 

Pěkný řeč

 

hej vy dva...pěkná češtin

Link to comment
Share on other sites

DON":4gxhtt4k]Výborně ATome..

to si mě potěšil..

 

edit: Na niCeho a ty jeho debilní kecy se vyser..ber to tak že on to beztak nedělal uplně sám...a na to že tys to udělal cca za den..je to good

on to nedelal sam? lol ze se nepochlubil :) ale divne je ze vsude rika ze je jediny kdo ma basket v modu a kdyz ho nedelal sam asi mas spatnou informaci...

Výborně ATomasi, niCe bude zuřit :d

:rap: :hrac:

niCe zurit nebude protoze je neco vic nez my prece by se k tomu nesnizoval aby musel dyskutovat s takovou chatrou jako jsme my :)

a este mu bude vadit ze tam nemam setrvacne gryblovani a hazeni podle uhlu hrace

Link to comment
Share on other sites

Avest-X":326iy4k0]Haha :d já budu taky jako jediný kdo bude mít Golf v modu :d jestli to někdo neudělá taky ;(

( Sry za Offtopic )

golf to pojede na podobny spusob jako basket ne ? ale kde k tomu sezenes animacky ?

Link to comment
Share on other sites

Normal, když střelí dam cameru nad golfoví hřiště a neuvidíš jestli si střelil, prostě OnPlayerKey ... no :d bud to taky takovej spůsob ...

Link to comment
Share on other sites

a este mu bude vadit ze tam nemam setrvacne gryblovani a hazeni podle uhlu hrace

nevadí, to určitě doděláš :d

 

//EDIT: a sám to nedělal, pomáhal mu s tim ten majkl nebo jak se tomu nadává

Link to comment
Share on other sites

v2 se ti ATomas pekne vydarila akorat se mi to zda trosku pomaly jak leti ten balon

taky se mi zdalo ale kdyby si to zrychlil musel by si predelavat vysku letu coz se mi moc nechce :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...