Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Vocar
- new OtresiObject[ MAX_PLAYERS ][ 8 ],
- Otresa[ MAX_PLAYERS ];
- new
- Float: Tree_Locations[][3] = {
- {438.3275,1989.6617,499.4821},
- {527.9407,1977.3473,499.8702},
- {561.1748,1911.6949,502.5813},
- {357.8484,2000.7568,499.8065},
- {370.6405,1950.2618,500.7239},
- {266.7906,2010.5984,498.8223}
- };
- enum tree_status_enum
- {
- bool:t_Posadjen,
- t_Posadio[ MAX_PLAYER_NAME ],
- t_Tip,
- t_Objekat,
- t_RastTimer,
- Text3D:t_Label,
- t_Faza
- }
- new Tree_Status[sizeof(Tree_Locations)][tree_status_enum];
- //onplayerdeath && onplayerdisconnect && onplayerconnect
- Otresa[ playerid ] = 0;
- //ongamemodeinit
- for( new i; i < sizeof( Tree_Locations ); i++ ) {
- Tree_Status[ i ][ t_Label ] = CreateDynamic3DTextLabel(":: Sadnica ::\n\nPlod nije postavljen\n{ffffff}/staviplod", 0xFFAF00AA, Tree_Locations[ i ][ 0 ], Tree_Locations[ i ][ 1 ], Tree_Locations[ i ][ 2 ] + 1.35, 10.0, _, _, _, 0, 0);
- Tree_Status[ i ][ t_Objekat ] = YUB_CreateDynamicObject(2203, Tree_Locations[ i ][ 0 ], Tree_Locations[ i ][ 1 ], Tree_Locations[ i ][ 2 ], 0.0, 0.0, 180.0, 0, 0);
- Tree_Status[ i ][ t_Posadjen ] = false;
- Tree_Status[ i ][ t_RastTimer ] = -1;
- Tree_Status[ i ][ t_Faza ] = 0;
- }
- //Funkcije
- Vocar_BrojVocki( playerid ) {
- new id = 0;
- for( new b = 0; b < sizeof( Tree_Locations ); b++) {
- if(strfind(GetPlayerNameEx(playerid),Tree_Status[ b ][ t_Posadio ],true)!=-1) id++;
- }
- return id;
- }
- Vocar_VlasnikVocke( playerid, vockaid ) {
- if(strfind(GetPlayerNameEx(playerid),Tree_Status[ vockaid ][ t_Posadio ],true)!=-1) return true;
- return false;
- }
- Vocar_NajblizeDrvo( playerid ) {
- new Float:p_Pos[ 3 ], Float:maxradius = 5.0, id = -1;
- GetPlayerPos(playerid, p_Pos[ 0 ], p_Pos[ 1 ], p_Pos[ 2 ] );
- for( new b = 0; b < sizeof( Tree_Locations ); b++) {
- if( VectorSize( p_Pos[ 0 ]-Tree_Locations[ i ][ 0 ], p_Pos[ 1 ]-Tree_Locations[ i ][ 1 ], p_Pos[ 2 ]-Tree_Locations[ i ][ 2 ] ) >= maxradius ) continue;
- id = b;
- maxradius = VectorSize( p_Pos[ 0 ]-Tree_Locations[ i ][ 0 ], p_Pos[ 1 ]-Tree_Locations[ i ][ 1 ], p_Pos[ 2 ]-Tree_Locations[ i ][ 2 ] );
- }
- return id;
- }
- forward Vocar_RastVocke( playerid, id );
- public Vocar_RastVocke( playerid, id ) {
- if(!IsPlayerConnected(playerid)) {
- Unisti_Vocku( id );
- return 1;
- }
- new label_string[ 165 ];
- Tree_Status[ id ][ t_RastTimer ] = -1;
- Tree_Status[ id ][ t_Faza ] = 2;
- SendClientMessage( playerid, 0xBFBFBFAA, "{FFFFFF}[YUB]: {FFAF00}Neka od vasih vocki je spremna za otresti.");
- format(label_string, sizeof(label_string), ":: Vocka ::\n\nPlod je izrastao.\nPostavio: {ffffff}%s\n\n{F81414}Komanda: {ffffff}/otresanje", Tree_Status[ id ][ t_Posadio ]);
- UpdateDynamic3DTextLabelText(Tree_Status[ id ][ t_Label ], 0xFFAF00AA, label_string);
- return 1;
- }
- //Komande:
- CMD:staviplod(playerid, params[])
- {
- //provjere da li igrac ima sjemenki, koji ce tip itd
- new id = Vocar_NajblizeDrvo( playerid ), Float:Z_Kord, label_string[ 222 ];
- if( id == -1 ) return SendClientMessage( playerid, 0xBFBFBFAA, "Niste u blizini mjesta za stavljanje ploda.");
- if( Tree_Status[ id ][ t_Posadjen ] ) return SendClientMessage( playerid, 0xBFBFBFAA, "Ovdje je vec postavljen plod, pronadjite drugo mjesto.");
- if( Vocar_BrojVocki( playerid ) >= 3 ) return SendClientMessage( playerid, 0xBFBFBFAA, "Vec ste posadili maksimalan broj vocki po osobi (tri).");
- Tree_Status[ id ][ t_Posadjen ] = true;
- Tree_Status[ id ][ t_Faza ] = 1;
- CA_FindZ_For2DCoord( Tree_Locations[ id ][ 0 ], Tree_Locations[ 1 ][ 0 ], Z_Kord );
- if(IsValidDynamicObject(Tree_Status[ id ][ t_Objekat ])) DestroyDynamicObject(Tree_Status[ id ][ t_Objekat ]);
- Tree_Status[ id ][ t_Objekat ] = YUB_CreateDynamicObject(673, Tree_Locations[ id ][ 0 ], Tree_Locations[ id ][ 1 ], Z_Kord - 15.0, 0.0, 0.0, 180.0, 0, 0);
- new timertime = MoveDynamicObject(Tree_Status[ id ][ t_Objekat ], Tree_Locations[ id ][ 0 ], Tree_Locations[ id ][ 1 ], Z_Kord, 0.01);
- Tree_Status[ id ][ t_RastTimer ] = SetTimerEx("Vocar_RastVocke", timertime, false, "ii", playerid, id);
- format(label_string, sizeof(label_string), ":: Vocka ::\n\nPlod je postavljen.\nPostavio: {ffffff}%s\n\n{F81414}Pricekajte da izraste\nkako bi otresli vocku.", GetPlayerNameEx(playerid));
- UpdateDynamic3DTextLabelText(Tree_Status[ id ][ t_Label ], 0xFFAF00AA, label_string);
- strmid(Tree_Status[ id ][ t_Posadio ], GetPlayerNameEx(playerid), 0, strlen(GetPlayerNameEx(playerid)), 30 );
- SendClientMessage( playerid, 0xBFBFBFAA, "{FFFFFF}[YUB]: {00C0FF}Plod postavljen, {FFAF00}biti cete obavjesteni kada vocka bude spremna za otresti{00C0FF}.");
- return 1;
- }
- CMD:otresanje(playerid, params[])
- {
- new id = Vocar_NajblizeDrvo( playerid ), Float:Z_Kord, label_string[ 200 ];
- if( id == -1 ) return SendClientMessage( playerid, 0xBFBFBFAA, "Niste u blizini vocke.");
- if( !Tree_Status[ id ][ t_Posadjen ] ) return SendClientMessage( playerid, 0xBFBFBFAA, "Niste u blizini vocke.");
- if( Tree_Status[ id ][ t_Faza ] != 2 ) return SendClientMessage( playerid, 0xBFBFBFAA, "Ova vocka nije spremna za otresanje.");
- if( !Vocar_VlasnikVocke( playerid, id ) ) return SendClientMessage( playerid, 0xBFBFBFAA, "Ovo nije vasa vocka.");
- Tree_Status[ id ][ t_Posadjen ] = true;
- Tree_Status[ id ][ t_Faza ] = 3;
- Otresa[ playerid ] = 1;
- Otresanje( playerid, id, Tree_Status[ id ][ t_Tip ] );
- SetCameraBehindPlayer( playerid );
- format(label_string, sizeof(label_string), ":: Vocka ::\n\n{F81414}Plod je otresen.\n{FFAF00}Postavio: {ffffff}%s", Tree_Status[ id ][ t_Posadio ]);
- UpdateDynamic3DTextLabelText(Tree_Status[ id ][ t_Label ], 0xFFAF00AA, label_string);
- SendClientMessage( playerid, 0xBFBFBFAA, "{FFFFFF}[YUB]: {00C0FF}Vocka otresena, {FFAF00}pricekajte pad plodova{00C0FF}.");
- SendClientMessage( playerid, 0xBFBFBFAA, "{FFFFFF}((Pomaknite svog karaktera kako bi vidjeli animaciju padanja vocki))");
- return 1;
- }
- forward Otresanje( playerid, id, tip );
- public Otresanje( playerid, id, tip ) {
- //
- new modelid;
- switch(tip) {
- default: modelid = 19578;
- }
- //
- new Float:x, Float:y, Float:z, Float:HeightZ, Float:Px, Float:Py, Float: Pa;
- GetDynamicObjectPos(Tree_Status[ id ][ t_Objekat ], x, y, z);
- CA_FindZ_For2DCoord( x, y, HeightZ );
- //
- GetPlayerPos(playerid, Px, Py, Pa);
- Pa = floatabs(atan((y-Py)/(x-Px)));
- if (x <= Px && y >= Py) Pa = floatsub(180, Pa);
- else if (x < Px && y < Py) Pa = floatadd(Pa, 180);
- else if (x >= Px && y <= Py) Pa = floatsub(360.0, Pa);
- Pa = floatsub(Pa, 90.0);
- if (Pa >= 360.0) Pa = floatsub(Pa, 360.0);
- SetPlayerFacingAngle(playerid, Pa);
- //
- OtresiObject[ playerid ][ 0 ] = CreateDynamicObject(modelid, x, y+0.5, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 1 ] = CreateDynamicObject(modelid, x, y+1.5, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 2 ] = CreateDynamicObject(modelid, x, y-0.5, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 3 ] = CreateDynamicObject(modelid, x, y-1.5, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 4 ] = CreateDynamicObject(modelid, x+0.5, y, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 5 ] = CreateDynamicObject(modelid, x+1.5, y, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 6 ] = CreateDynamicObject(modelid, x-0.5, y, z+10, 0, 0, 0);
- OtresiObject[ playerid ][ 7 ] = CreateDynamicObject(modelid, x-1.5, y, z+10, 0, 0, 0);
- //
- SetTimerEx("Animacija_Tip", 200, false, "ii", playerid, 2);
- //
- for(new i; i < 8; i++) {
- GetDynamicObjectPos( OtresiObject[ playerid ][ i ], x, y, z );
- CA_FindZ_For2DCoord( x, y, HeightZ );
- MoveDynamicObject(OtresiObject[ playerid ][ i ], x, y, HeightZ, 1.1+(i*0.05));
- }
- //
- SetTimerEx("Otreseno", 1000, false, "ii", playerid, id);
- Streamer_Update( playerid );
- return 1;
- }
- forward Otreseno( playerid, vocka );
- public Otreseno( playerid, vocka ) {
- //
- if(Otresa[ playerid ] == 0) {
- for(new i; i < 8; i++) {
- if(IsValidDynamicObject(OtresiObject[ playerid ][ i ])) DestroyDynamicObject( OtresiObject[ playerid ][ i ] );
- }
- Unisti_Vocku( vocka );
- return 1;
- }
- //
- new Float:x, Float:y, Float:z, Float:HeightZ;
- for(new i; i < 8; i++) {
- GetDynamicObjectPos( OtresiObject[ playerid ][ i ], x, y, z );
- CA_FindZ_For2DCoord( x, y, HeightZ );
- if( z != HeightZ ) return SetTimerEx("Otreseno", 1000, false, "ii", playerid, vocka);
- }
- //
- SendClientMessage( playerid, 0xBFBFBFAA, "{FFFFFF}[YUB]: {00C0FF}Voce otreseno, {FFAF00}pricekajte proces sabiranja{00C0FF}.");
- SetCameraBehindPlayer( playerid );
- SetTimerEx("Animacija_Tip", 200, false, "ii", playerid, 1);
- SetTimerEx("GotovPostupak", 6000, false, "ii", playerid, vocka);
- Streamer_Update( playerid );
- return 1;
- }
- forward Animacija_Tip( playerid, tip );
- public Animacija_Tip( playerid, tip ) {
- if(tip == 1) ApplyAnimation(playerid,"BOMBER","BOM_Plant_Loop", 4.1, 1, 0, 0, 1, 0, 1);
- else if(tip == 2) {
- ApplyAnimation(playerid,"FIGHT_E","FightKick_B", 4.1, 0, 0, 0, 1, 0, 1);
- SetTimerEx("OcistiAnimacije", 1111, false, "i", playerid);
- Streamer_Update( playerid );
- }
- else if(tip == 3) {
- ApplyAnimation(playerid,"CARRY","putdwn05", 4.1, 0, 0, 0, 0, 0, 1);
- SetTimerEx("OcistiAnimacije", 1000, false, "i", playerid);
- }
- return 1;
- }
- forward GotovPostupak( playerid, vocka );
- public GotovPostupak( playerid, vocka ) {
- if(Otresa[ playerid ] == 0) {
- for(new i; i < 8; i++) {
- if(IsValidDynamicObject(OtresiObject[ playerid ][ i ])) DestroyDynamicObject( OtresiObject[ playerid ][ i ] );
- Unisti_Vocku( vocka );
- }
- return 1;
- }
- for(new i; i < 8; i++) {
- if(IsValidDynamicObject(OtresiObject[ playerid ][ i ])) DestroyDynamicObject( OtresiObject[ playerid ][ i ] );
- }
- //gotovo ovdje mu se daje voce itd
- new kolicina = 5+random(16), string[ 112 ];
- format( string, sizeof( string ), "{FFFFFF}[YUB]: {00C0FF}Uspjesno ste pokupili {FFAF00}%d kilograma {00C0FF}banane.", kolicina);
- SendClientMessage( playerid, 0xBFBFBFAA, string);
- Streamer_Update( playerid );
- ClearAnimations( playerid );
- Otresa[ playerid ] = 0;
- SetTimerEx("Unisti_Vocku", 6000, false, "i", vocka);
- UpdateDynamic3DTextLabelText(Tree_Status[ vocka ][ t_Label ], 0xFFAF00AA, ":: Vocka ::\n\n{f81414}Plod je otresen\ni u fazi raspada.");
- return 1;
- }
- forward Unisti_Vocku( id );
- public Unisti_Vocku( id ) {
- if(IsValidDynamicObject(Tree_Status[ id ][ t_Objekat ])) DestroyDynamicObject(Tree_Status[ id ][ t_Objekat ]);
- UpdateDynamic3DTextLabelText(Tree_Status[ id ][ t_Label ], 0xFFAF00AA, ":: Sadnica ::\n\nPlod nije postavljen\n{ffffff}/staviplod");
- Tree_Status[ id ][ t_Objekat ] = YUB_CreateDynamicObject(2203, Tree_Locations[ i ][ 0 ], Tree_Locations[ i ][ 1 ], Tree_Locations[ i ][ 2 ], 0.0, 0.0, 180.0, 0, 0);
- Tree_Status[ id ][ t_Posadjen ] = false;
- Tree_Status[ id ][ t_Faza ] = 0;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement