Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //[FS]Minigame "Snake" by Games
- #include <a_samp>
- #define SNAKE_DIALOG 101
- #define LEVEL_DIALOG 111
- #define RULES_DIALOG 121
- new Text:Snake[MAX_PLAYERS][23];
- new Text:Background;
- new Text:LevelText[9];
- new Text:CellText[MAX_PLAYERS];
- new Text:Count[MAX_PLAYERS];
- new PosSnake[MAX_PLAYERS][23];
- new Button[MAX_PLAYERS];
- new Cell[MAX_PLAYERS];
- new SnakeActive[MAX_PLAYERS];
- new SnakeTimer[MAX_PLAYERS];
- new Side[MAX_PLAYERS];
- new Growth[MAX_PLAYERS];
- new Level[MAX_PLAYERS];
- new Level1[22] = {
- 32,33,34,35,36,37,38,39,40,41,42,182,183,184,185,186,187,188,189,190,191,192
- };
- new Level2[12] = {
- 105,106,107,108,109,110,114,115,116,117,118,119
- };
- new Level3[25] = {
- 16,17,31,32,27,28,42,43,181,182,196,197,192,193,207,208,96,97,98,111,112,113,126,127,128
- };
- forward snakeupdate(playerid);
- public OnFilterScriptInit()
- {
- LoadTextDraws();
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(SnakeActive[playerid] == 1) GameOver(playerid);
- return 1;
- }
- public OnDialogResponse(playerid,dialogid,response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case SNAKE_DIALOG:
- {
- if(!response) return 1;
- else if(listitem == 0)
- {
- ShowPlayerDialog(playerid, LEVEL_DIALOG, DIALOG_STYLE_LIST, "{0000ff}Minigame \"Snake\"->Start Game", "{00ff00}1 Level\n{ffff00}2 Level\n{ff0000}3 Level", "Ok", "Cancel");
- }
- else if(listitem == 1)
- {
- ShowPlayerDialog(playerid, RULES_DIALOG, DIALOG_STYLE_MSGBOX, "{0000ff}Minigame \"Snake\"->Rules", "{ff00ff}Game control::\n{00ff00}Snake es controlado por las teclas: arriba, abajo, izquierda, derecha.\n\n{ff00ff}Rules:\n{00ff00}Usted debe recoger 20 cubos para ganar en una ronda.\n\n{ff00ff}Feauters:\n{00ff00}Cada ronda tiene sus propios obstáculos. Usted no debe chocar con ellos.", "Ok", "Cancel");
- }
- }
- case LEVEL_DIALOG:
- {
- if(!response) return 1;
- StartGame(playerid,listitem);
- }
- case RULES_DIALOG:
- {
- if(!response) return 1;
- ShowPlayerDialog(playerid, SNAKE_DIALOG, DIALOG_STYLE_LIST, "{0000ff}Minigame \"Snake\"", "{ff00ff}Start Game\n{ff00ff}Rules", "Ok", "Cancel");
- }
- }
- return 0;
- }
- public OnPlayerUpdate(playerid)
- {
- if(SnakeActive[playerid] == 1)
- {
- new Keys,ud,lr;
- GetPlayerKeys(playerid,Keys,ud,lr);
- if(ud > 0 && Button[playerid] != 0) Side[playerid]=1;
- else if(ud < 0&& Button[playerid] != 1) Side[playerid]=0;
- if(lr > 0 && Button[playerid] != 2) Side[playerid]=3;
- else if(lr < 0 && Button[playerid] != 3) Side[playerid]=2;
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext,"/snake",true))
- {
- if(SnakeActive[playerid] == 1) return SendClientMessage(playerid,-1,"{0000ff}El juego ya ha sido activada!");
- ShowPlayerDialog(playerid, SNAKE_DIALOG, DIALOG_STYLE_LIST, "{0000ff}Minigame \"Snake\"", "{ff00ff}Start Game\n{ff00ff}Rules", "Ok", "Cancel");
- return 1;
- }
- return 0;
- }
- public snakeupdate(playerid)
- {
- SnakeTimer[playerid] = SetTimerEx("snakeupdate",500,0,"i",playerid);
- for(new j; j<23; j++)
- {
- if(PosSnake[playerid][j] != -1)
- {
- TextDrawHideForPlayer(playerid, Snake[playerid][j]);
- TextDrawDestroy(Snake[playerid][j]);
- }
- }
- if(CheckGameOver(playerid)) return 1;
- if(Growth[playerid] == 1)
- {
- Growth[playerid] = 0;
- new LastID;
- for(new i; i<23; i++)
- {
- if(PosSnake[playerid][i] == -1)
- {
- LastID = i;
- break;
- }
- }
- for(new i = LastID; i >= 0; --i)
- {
- if(i == 0)
- {
- SideSystem(playerid);
- }
- else
- {
- PosSnake[playerid][i]=PosSnake[playerid][i-1];
- MoveTextDraw(i,playerid);
- }
- }
- return 1;
- }
- new LastID;
- for(new i; i<23; i++)
- {
- if(PosSnake[playerid][i] == -1 )
- {
- LastID = i;
- break;
- }
- }
- for(new i = LastID - 1; i >= 0; --i)
- {
- MoveTextDraw(i,playerid);
- }
- return 1;
- }
- stock MoveTextDraw(id,playerid)
- {
- new stroka=0;
- new stolb=1;
- if(id != 0)
- {
- for(new i; i<PosSnake[playerid][id-1]; i++)
- {
- stroka++;
- if(stroka == 15)
- {
- stolb++;
- stroka = 0;
- }
- }
- Snake[playerid][id] = TextDrawCreate(200.000000+(15*(stroka)),150.000000+(13.5*stolb)," ~n~");
- TextDrawUseBox(Snake[playerid][id],1);
- TextDrawBoxColor(Snake[playerid][id],0x0000ffFF);
- TextDrawTextSize(Snake[playerid][id],10.000000,10.000000);
- TextDrawAlignment(Snake[playerid][id],2);
- TextDrawBackgroundColor(Snake[playerid][id],0x000000ff);
- TextDrawLetterSize(Snake[playerid][id],1.000000,1.000000);
- TextDrawColor(Snake[playerid][id],0xffffffff);
- TextDrawShowForPlayer(playerid,Snake[playerid][id]);
- PosSnake[playerid][id]=PosSnake[playerid][id-1];
- }
- else
- {
- SideSystem(playerid);
- }
- return 1;
- }
- stock CheckGameOver(playerid)
- {
- new LastID;
- for(new i; i<23; i++)
- {
- if(PosSnake[playerid][i] == -1)
- {
- LastID = i;
- break;
- }
- }
- new str[6];
- format(str,sizeof(str),"%d/20",LastID-2);
- TextDrawSetString(Count[playerid],str);
- if(LastID-2 == 20)
- {
- GameOver(playerid);
- return 1;
- }
- switch(Side[playerid])
- {
- case 0:
- {
- switch(PosSnake[playerid][0])
- {
- case 0..14:
- {
- GameOver(playerid);
- return 1;
- }
- }
- for(new i = LastID - 1; i >= 0; --i)
- {
- if(PosSnake[playerid][i] == PosSnake[playerid][0]-15)
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- case 1:
- {
- switch(PosSnake[playerid][0])
- {
- case 210..224:
- {
- GameOver(playerid);
- return 1;
- }
- }
- for(new i = LastID - 1; i >= 0; --i)
- {
- if(PosSnake[playerid][i] == PosSnake[playerid][0]+15)
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- case 2:
- {
- for(new i; i < 15; i++)
- {
- if(PosSnake[playerid][0] == 210-15*i)
- {
- GameOver(playerid);
- return 1;
- }
- }
- for(new i = LastID - 1; i >= 0; --i)
- {
- if(PosSnake[playerid][i] == PosSnake[playerid][0]-1)
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- case 3:
- {
- for(new i; i < 15; i++)
- {
- if(PosSnake[playerid][0] == 224-15*i)
- {
- GameOver(playerid);
- return 1;
- }
- }
- for(new i = LastID - 1; i >= 0; --i)
- {
- if(PosSnake[playerid][i] == PosSnake[playerid][0]+1)
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- }
- return 0;
- }
- stock GameOver(playerid)
- {
- if(PosSnake[playerid][21] != -1)
- {
- SendClientMessage(playerid,-1,"{00FF66}Felicidades, usted ha pasado el nivel!");
- }
- else
- {
- SendClientMessage(playerid,-1,"{00FF66}Game Over!");
- }
- KillTimer(SnakeTimer[playerid]);
- TogglePlayerControllable(playerid, 1);
- TextDrawHideForPlayer(playerid, Background);
- SnakeActive[playerid] = 0;
- Side[playerid] = 0;
- TextDrawHideForPlayer(playerid, CellText[playerid]);
- TextDrawDestroy(CellText[playerid]);
- TextDrawHideForPlayer(playerid, Count[playerid]);
- TextDrawDestroy(Count[playerid]);
- Growth[playerid] = 0;
- for(new j; j<23; j++)
- {
- if(PosSnake[playerid][j] != -1)
- {
- TextDrawHideForPlayer(playerid, Snake[playerid][j]);
- TextDrawDestroy(Snake[playerid][j]);
- }
- }
- switch(Level[playerid])
- {
- case 1:
- {
- TextDrawHideForPlayer(playerid,LevelText[0]);
- TextDrawHideForPlayer(playerid,LevelText[1]);
- }
- case 2:
- {
- TextDrawHideForPlayer(playerid,LevelText[2]);
- TextDrawHideForPlayer(playerid,LevelText[3]);
- }
- case 3:
- {
- for(new i=4; i<sizeof(LevelText); i++)
- {
- TextDrawHideForPlayer(playerid,LevelText[i]);
- }
- }
- }
- }
- stock SideSystem(playerid)
- {
- new stroka=0;
- new stolb=1;
- switch(Side[playerid])
- {
- case 0:
- {
- for(new i; i<PosSnake[playerid][0]-15; i++)
- {
- stroka++;
- if(stroka == 15)
- {
- stolb++;
- stroka = 0;
- }
- }
- PosSnake[playerid][0]= PosSnake[playerid][0]-15;
- Button[playerid] = 0;
- }
- case 1:
- {
- for(new i; i<PosSnake[playerid][0]+15; i++)
- {
- stroka++;
- if(stroka == 15)
- {
- stolb++;
- stroka = 0;
- }
- }
- PosSnake[playerid][0]= PosSnake[playerid][0]+15;
- Button[playerid] = 1;
- }
- case 2:
- {
- for(new i; i<PosSnake[playerid][0]-1; i++)
- {
- stroka++;
- if(stroka == 15)
- {
- stolb++;
- stroka = 0;
- }
- }
- PosSnake[playerid][0]= PosSnake[playerid][0]-1;
- Button[playerid] = 2;
- }
- case 3:
- {
- for(new i; i<PosSnake[playerid][0]+1; i++)
- {
- stroka++;
- if(stroka == 15)
- {
- stolb++;
- stroka = 0;
- }
- }
- PosSnake[playerid][0]= PosSnake[playerid][0]+1;
- Button[playerid] = 3;
- }
- }
- if(PosSnake[playerid][0] == Cell[playerid])
- {
- TextDrawHideForPlayer(playerid, CellText[playerid]);
- TextDrawDestroy(CellText[playerid]);
- RandomCell(playerid);
- Growth[playerid] = 1;
- }
- Snake[playerid][0] = TextDrawCreate(200.000000+(15*stroka),150.000000+(13.5*stolb)," ~n~");
- TextDrawUseBox(Snake[playerid][0],1);
- TextDrawBoxColor(Snake[playerid][0],0x0000ffFF);
- TextDrawTextSize(Snake[playerid][0],10.000000,10.000000);
- TextDrawAlignment(Snake[playerid][0],2);
- TextDrawBackgroundColor(Snake[playerid][0],0x000000ff);
- TextDrawLetterSize(Snake[playerid][0],1.000000,1.000000);
- TextDrawColor(Snake[playerid][0],0xffffffff);
- switch(Level[playerid])
- {
- case 1:
- {
- for(new i; i<sizeof(Level1); i++)
- {
- if(Level1[i] == PosSnake[playerid][0])
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- case 2:
- {
- for(new i; i<sizeof(Level2); i++)
- {
- if(Level2[i] == PosSnake[playerid][0])
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- case 3:
- {
- for(new i; i<sizeof(Level3); i++)
- {
- if(Level3[i] == PosSnake[playerid][0])
- {
- GameOver(playerid);
- return 1;
- }
- }
- }
- }
- TextDrawShowForPlayer(playerid,Snake[playerid][0]);
- return 1;
- }
- stock StartGame(playerid,level)
- {
- for(new i; i<23; i++)
- {
- PosSnake[playerid][i] = -1;
- }
- Level[playerid] = level+1;
- switch(level)
- {
- case 0:
- {
- TextDrawShowForPlayer(playerid,LevelText[0]);
- TextDrawShowForPlayer(playerid,LevelText[1]);
- PosSnake[playerid][1] = 156;
- PosSnake[playerid][0] = 157;
- }
- case 1:
- {
- TextDrawShowForPlayer(playerid,LevelText[2]);
- TextDrawShowForPlayer(playerid,LevelText[3]);
- PosSnake[playerid][1] = 156;
- PosSnake[playerid][0] = 157;
- }
- case 2:
- {
- PosSnake[playerid][1] = 186;
- PosSnake[playerid][0] = 187;
- for(new i=4; i<sizeof(LevelText); i++)
- {
- TextDrawShowForPlayer(playerid,LevelText[i]);
- }
- }
- }
- TogglePlayerControllable(playerid, 0);
- SnakeActive[playerid] = 1;
- Count[playerid] = TextDrawCreate(284.000000, 371.000000, "0/20");
- TextDrawBackgroundColor(Count[playerid], 65535);
- TextDrawFont(Count[playerid], 3);
- TextDrawLetterSize(Count[playerid], 0.500000, 1.000000);
- TextDrawColor(Count[playerid], -1);
- TextDrawSetOutline(Count[playerid], 1);
- TextDrawSetProportional(Count[playerid], 1);
- TextDrawShowForPlayer(playerid,Count[playerid]);
- MoveTextDraw(1,playerid);
- MoveTextDraw(0,playerid);
- Side[playerid] = 0;
- RandomCell(playerid);
- TextDrawShowForPlayer(playerid,Background);
- Button[playerid] = 0;
- SetTimerEx("snakeupdate",2000,0,"i",playerid);
- }
- stock RandomCell(playerid)
- {
- Cell[playerid]=random(225);
- new LastID;
- for(new i; i<23; i++)
- {
- if(PosSnake[playerid][i] == -1)
- {
- LastID = i;
- break;
- }
- }
- for(new i = LastID - 1; i >= 0; --i)
- {
- if(PosSnake[playerid][i] == Cell[playerid])
- {
- RandomCell(playerid);
- return 1;
- }
- }
- switch(Level[playerid])
- {
- case 1:
- {
- for(new i; i<sizeof(Level1); i++)
- {
- if(Level1[i] == Cell[playerid])
- {
- RandomCell(playerid);
- return 1;
- }
- }
- }
- case 2:
- {
- for(new i; i<sizeof(Level2); i++)
- {
- if(Level2[i] == Cell[playerid])
- {
- RandomCell(playerid);
- return 1;
- }
- }
- }
- case 3:
- {
- for(new i; i<sizeof(Level3); i++)
- {
- if(Level3[i] == Cell[playerid])
- {
- RandomCell(playerid);
- return 1;
- }
- }
- }
- }
- new stroka=0;
- new stolb=1;
- for(new i; i<Cell[playerid]; i++)
- {
- stroka++;
- if(stroka == 15)
- {
- stolb++;
- stroka = 0;
- }
- }
- CellText[playerid] = TextDrawCreate(200.000000+(15*stroka),150.000000+(13.5*stolb)," ~n~");
- TextDrawUseBox(CellText[playerid],1);
- TextDrawBoxColor(CellText[playerid],0xff0000FF);
- TextDrawTextSize(CellText[playerid],10.000000,10.000000);
- TextDrawAlignment(CellText[playerid],2);
- TextDrawBackgroundColor(CellText[playerid],0x000000ff);
- TextDrawLetterSize(CellText[playerid],1.000000,1.000000);
- TextDrawColor(CellText[playerid],0xffffffff);
- TextDrawShowForPlayer(playerid,CellText[playerid]);
- return 1;
- }
- stock LoadTextDraws()
- {
- Background = TextDrawCreate(424.000000, 159.000000, "~n~");
- TextDrawBackgroundColor(Background, 255);
- TextDrawFont(Background, 0);
- TextDrawLetterSize(Background, 10.110000, 23.000049);
- TextDrawColor(Background, -1);
- TextDrawSetOutline(Background, 0);
- TextDrawSetProportional(Background, 1);
- TextDrawSetShadow(Background, 2);
- TextDrawUseBox(Background, 1);
- TextDrawBoxColor(Background, 255);
- TextDrawTextSize(Background, 186.000000, 25.000000);
- LevelText[0] = TextDrawCreate(389.000000, 191.000000, "~n~");
- TextDrawBackgroundColor(LevelText[0], 255);
- TextDrawFont(LevelText[0], 0);
- TextDrawLetterSize(LevelText[0], 0.500000, 0.899999);
- TextDrawColor(LevelText[0], -1);
- TextDrawSetOutline(LevelText[0], 1);
- TextDrawSetProportional(LevelText[0], 0);
- TextDrawUseBox(LevelText[0], 1);
- TextDrawBoxColor(LevelText[0], 16711935);
- TextDrawTextSize(LevelText[0], 222.000000, 4.000000);
- LevelText[1] = TextDrawCreate(389.000000, 326.000000, "~n~");
- TextDrawBackgroundColor(LevelText[1], 255);
- TextDrawFont(LevelText[1], 0);
- TextDrawLetterSize(LevelText[1], 0.500000, 0.899999);
- TextDrawColor(LevelText[1], -1);
- TextDrawSetOutline(LevelText[1], 1);
- TextDrawSetProportional(LevelText[1], 0);
- TextDrawUseBox(LevelText[1], 1);
- TextDrawBoxColor(LevelText[1], 16711935);
- TextDrawTextSize(LevelText[1], 222.000000, 4.000000);
- LevelText[2] = TextDrawCreate(284.000000, 258.000000, "~n~");
- TextDrawBackgroundColor(LevelText[2], 255);
- TextDrawFont(LevelText[2], 0);
- TextDrawLetterSize(LevelText[2], 0.189999, 0.999998);
- TextDrawColor(LevelText[2], -1);
- TextDrawSetOutline(LevelText[2], 1);
- TextDrawSetProportional(LevelText[2], 0);
- TextDrawUseBox(LevelText[2], 1);
- TextDrawBoxColor(LevelText[2], 16711935);
- TextDrawTextSize(LevelText[2], 191.000000, 10.000000);
- LevelText[3] = TextDrawCreate(419.000000, 258.000000, "~n~");
- TextDrawBackgroundColor(LevelText[3], 255);
- TextDrawFont(LevelText[3], 0);
- TextDrawLetterSize(LevelText[3], 0.149999, 0.999998);
- TextDrawColor(LevelText[3], -1);
- TextDrawSetOutline(LevelText[3], 1);
- TextDrawSetProportional(LevelText[3], 0);
- TextDrawUseBox(LevelText[3], 1);
- TextDrawBoxColor(LevelText[3], 16711935);
- TextDrawTextSize(LevelText[3], 326.000000, 10.000000);
- LevelText[4] = TextDrawCreate(239.000000, 177.000000, "~n~");
- TextDrawBackgroundColor(LevelText[4], 255);
- TextDrawFont(LevelText[4], 0);
- TextDrawLetterSize(LevelText[4], 0.260000, 2.499997);
- TextDrawColor(LevelText[4], -1);
- TextDrawSetOutline(LevelText[4], 1);
- TextDrawSetProportional(LevelText[4], 0);
- TextDrawUseBox(LevelText[4], 1);
- TextDrawBoxColor(LevelText[4], 16711935);
- TextDrawTextSize(LevelText[4], 206.000000, 26.000000);
- LevelText[5] = TextDrawCreate(404.000000, 177.000000, "~n~");
- TextDrawBackgroundColor(LevelText[5], 65535);
- TextDrawFont(LevelText[5], 0);
- TextDrawLetterSize(LevelText[5], 0.229999, 2.499997);
- TextDrawColor(LevelText[5], -1);
- TextDrawSetOutline(LevelText[5], 1);
- TextDrawSetProportional(LevelText[5], 0);
- TextDrawUseBox(LevelText[5], 1);
- TextDrawBoxColor(LevelText[5], 16711935);
- TextDrawTextSize(LevelText[5], 371.000000, 10.000000);
- LevelText[6] = TextDrawCreate(239.000000, 326.000000, "~n~");
- TextDrawBackgroundColor(LevelText[6], 255);
- TextDrawFont(LevelText[6], 0);
- TextDrawLetterSize(LevelText[6], 0.260000, 2.399997);
- TextDrawColor(LevelText[6], -1);
- TextDrawSetOutline(LevelText[6], 1);
- TextDrawSetProportional(LevelText[6], 0);
- TextDrawUseBox(LevelText[6], 1);
- TextDrawBoxColor(LevelText[6], 16711935);
- TextDrawTextSize(LevelText[6], 206.000000, 26.000000);
- LevelText[7] = TextDrawCreate(404.000000, 326.000000, "~n~");
- TextDrawBackgroundColor(LevelText[7], 65535);
- TextDrawFont(LevelText[7], 0);
- TextDrawLetterSize(LevelText[7], 0.229999, 2.399997);
- TextDrawColor(LevelText[7], -1);
- TextDrawSetOutline(LevelText[7], 1);
- TextDrawSetProportional(LevelText[7], 0);
- TextDrawUseBox(LevelText[7], 1);
- TextDrawBoxColor(LevelText[7], 16711935);
- TextDrawTextSize(LevelText[7], 371.000000, 10.000000);
- LevelText[8] = TextDrawCreate(329.000000, 245.000000, "~n~");
- TextDrawBackgroundColor(LevelText[8], 65535);
- TextDrawFont(LevelText[8], 0);
- TextDrawLetterSize(LevelText[8], -0.100000, 3.899996);
- TextDrawColor(LevelText[8], -1);
- TextDrawSetOutline(LevelText[8], 1);
- TextDrawSetProportional(LevelText[8], 0);
- TextDrawUseBox(LevelText[8], 1);
- TextDrawBoxColor(LevelText[8], 16711935);
- TextDrawTextSize(LevelText[8], 281.000000, 10.000000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement