/* Dynamic Rob Bank System By Shomy Potreban folder "Robs" u scriptfiles */ // = Include #include < a_samp > #include < YSI\y_ini > #include < YSI\y_commands > #include < sscanf2 > // = Define #define MAX_ROBS 5 #define MAX_ALAT 5 #undef MAX_PLAYERS #define MAX_PLAYERS 50 // Prilagoditi #define ROB_FILE "/Robs/%d.ini" #define ALAT_FILE "/Alati/%d.ini" #define SCM SendClientMessage #define SCMTA SendClientMessageToAll #define MONEY_MIN 10000 #define MONEY_MAX 30000 // = Enum enum rInfo { Float:PosX, Float:PosY, Float:PosZ, RobVreme } enum aInfo { Float:PosX, Float:PosY, Float:PosZ, Cena } // = News new RobInfo[ MAX_ROBS ][ rInfo ]; new Text3D:RobLabel[ sizeof(RobInfo) ]; new KreiraniRobovi = 0; new KreiraniAlati = 0; new PreostaloVreme[ MAX_PLAYERS ]; new PlayerText:RobTD[MAX_PLAYERS][1]; new bool:RobUToku; new RobTimer[ MAX_PLAYERS ]; new bool:OpljackanaBanka; new AlatInfo[ MAX_ALAT ][ aInfo ]; new AlatPickup[ sizeof(AlatInfo) ]; new Text3D:AlatLabel[ sizeof(AlatInfo) ]; new bool:PosedujeAlat[ MAX_PLAYERS ]; // = Publics forward Pljackana(id); public Pljackana(id) { OpljackanaBanka = false; return 1; } forward Rob(playerid, id); public Rob(playerid, id) { PreostaloVreme[ playerid ] -= 1; new str[ 25 ], dobijeninovac; PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1); PlayerTextDrawShow(playerid, RobTD[ playerid ][ 0 ]); PosedujeAlat[ playerid ] = false; format(str,sizeof(str), "Preostalo vreme: %d", PreostaloVreme[ playerid ]); PlayerTextDrawSetString(playerid, RobTD[ playerid ][ 0 ], str); if(PreostaloVreme[ playerid ] == 0) { KillTimer(RobTimer[ playerid ]); dobijeninovac = RandomEx(MONEY_MIN, MONEY_MAX), GivePlayerMoney(playerid, dobijeninovac); TogglePlayerControllable(playerid, 1); ClearAnimations(playerid); SetTimer("Pljackana", 600000, false); PlayerTextDrawHide(playerid, RobTD[ playerid ][ 0 ]); new str1[ 50 ]; format(str1,sizeof(str1), "Uspesno ste opljackali %d$ iz banke.", dobijeninovac); SCM(playerid, -1, str1); RobUToku = false; OpljackanaBanka = true; } return 1; } public OnPlayerConnect(playerid) { RobTD[playerid][0] = CreatePlayerTextDraw(playerid, 232.117645, 27.250003, "Preostalo_vreme_-_60s"); PlayerTextDrawLetterSize(playerid, RobTD[playerid][0], 0.400000, 1.600000); PlayerTextDrawAlignment(playerid, RobTD[playerid][0], 1); PlayerTextDrawColor(playerid, RobTD[playerid][0], -1); PlayerTextDrawSetShadow(playerid, RobTD[playerid][0], 0); PlayerTextDrawSetOutline(playerid, RobTD[playerid][0], 1); PlayerTextDrawBackgroundColor(playerid, RobTD[playerid][0], 255); PlayerTextDrawFont(playerid, RobTD[playerid][0], 1); PlayerTextDrawSetProportional(playerid, RobTD[playerid][0], 1); PlayerTextDrawSetShadow(playerid, RobTD[playerid][0], 0); return 1; } // = CMDS YCMD:kreirajrob(playerid, params[], help) { #pragma unused help new vreme, Float:X, Float:Y, Float:Z; if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin."); if(KreiraniRobovi > MAX_ROBS) return SCM(playerid, -1, "Prestigli ste limit."); if(sscanf(params, "d", vreme)) return SCM(playerid, -1, "Koristite /kreirajrob [ Vreme ( sekunde ) ]"); if(vreme < 60 || vreme > 200) return SCM(playerid, -1, "Vreme ne moze biti manje od 60 ili vece od 200."); GetPlayerPos(playerid, X,Y,Z); RobLabel[ KreiraniRobovi+1 ] = Create3DTextLabel("/robbank", 0x008080FF, X,Y,Z, 10, 0, 0); RobInfo[ KreiraniRobovi+1 ][ PosX ] = X; RobInfo[ KreiraniRobovi+1 ][ PosY ] = Y; RobInfo[ KreiraniRobovi+1 ][ PosZ ] = Z; RobInfo[ KreiraniRobovi+1 ][ RobVreme ] = vreme; SaveRob(KreiraniRobovi+1); KreiraniRobovi++; return 1; } YCMD:robbank(playerid, params[], help) { #pragma unused help if(RobUToku) return SCM(playerid, -1, "Rob banke je vec u toku."); for(new i; i < MAX_ROBS; i++) { if(IsPlayerInRangeOfPoint(playerid, 2.0, RobInfo[ i ][ PosX ], RobInfo[ i ][ PosY ], RobInfo[ i ][ PosZ ])) { if(!OpljackanaBanka) { if(PosedujeAlat[ playerid ]) { RobTimer[ playerid ] = SetTimerEx("Rob", 1000, true, "i", playerid); PreostaloVreme[ playerid ] = RobInfo[ i ][ RobVreme ]; SCMTA(-1, "[ROB] Pljacka banke u toku. Mole se gradjani da se ne priblizavaju banci."); RobUToku = true; TogglePlayerControllable(playerid, 0); } else return SCM(playerid, -1, "Ne posedujete alat za pljackanje banke."); } else return SCM(playerid, -1, "Nije proslo 10 minuta od pljackanja banke."); } } return 1; } YCMD:kreirajalatmesto(playerid, params[], help) { #pragma unused help if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin."); if(KreiraniAlati > MAX_ALAT) return SCM(playerid, -1, "Prestigli ste limit."); new cena, Float:X, Float:Y, Float:Z; if(sscanf(params, "d", cena)) return SCM(playerid, -1, "Koristite /kreirajalatmesto [ Cena ]"); if(cena < 1000 || cena > 10000) return SCM(playerid, -1, "Cena alata ne moze biti manja od 1000$ ili veca od 10.000$"); GetPlayerPos(playerid, X,Y,Z); AlatPickup[ KreiraniAlati+1 ] = CreatePickup(1313, 1, X,Y,Z, -1); new str[ 50 ]; format(str,sizeof(str), "/kupialat\nCena - {FFFFFF}%d$", cena); AlatLabel[ KreiraniAlati+1 ] = Create3DTextLabel(str, 0x008080FF, X,Y,Z, 10, 0, 0); AlatInfo[ KreiraniAlati+1 ][ PosX ] = X; AlatInfo[ KreiraniAlati+1 ][ PosY ] = Y; AlatInfo[ KreiraniAlati+1 ][ PosZ ] = Z; AlatInfo[ KreiraniAlati+1 ][ Cena ] = cena; SaveAlat(KreiraniAlati+1); KreiraniAlati++; return 1; } YCMD:kupialat(playerid, params[], help) { #pragma unused help #pragma unused params for(new i; i < MAX_ALAT; i++) { if(!PosedujeAlat[ playerid ]) { if(IsPlayerInRangeOfPoint(playerid, 2.0, AlatInfo[ i ][ PosX ], AlatInfo[ i ][ PosY ], AlatInfo[ i ][ PosZ ])) { if(GetPlayerMoney(playerid) >= AlatInfo[ i ][ Cena ]) { GivePlayerMoney(playerid, -AlatInfo[ i ][ Cena ]); PosedujeAlat[ playerid ] = true; SCM(playerid, -1, "Kupili ste alat za pljacku banke."); } } } } return 1; } YCMD:test(playerid, params[], help) return GivePlayerMoney(playerid, 10000); // = Stocks stock SaveRob(id) { new rFile[ 60 ]; format(rFile, sizeof(rFile), ROB_FILE, id); new INI:File = INI_Open(rFile); INI_WriteFloat(File, "Lokacija X", RobInfo[ id ][ PosX ]); INI_WriteFloat(File, "Lokacija Y", RobInfo[ id ][ PosY ]); INI_WriteFloat(File, "Lokacija Z", RobInfo[ id ][ PosZ ]); INI_WriteInt(File, "Rob Vreme", RobInfo[ id ][ RobVreme ]); INI_Close(File); return 1; } stock SaveAlat(id) { new rFile[ 60 ]; format(rFile, sizeof(rFile), ALAT_FILE, id); new INI:File = INI_Open(rFile); INI_WriteFloat(File, "Lokacija X", AlatInfo[ id ][ PosX ]); INI_WriteFloat(File, "Lokacija Y", AlatInfo[ id ][ PosY ]); INI_WriteFloat(File, "Lokacija Z", AlatInfo[ id ][ PosZ ]); INI_WriteInt(File, "Cena", AlatInfo[ id ][ Cena ]); INI_Close(File); return 1; } // = Funkcije RandomEx(min,max) { // NIJE MOJA FUNKCIJA return (min+random(max)); } PlayAnim(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync) { ApplyAnimation(playerid, animlib, animname, fDelta, loop, lockx, locky, freeze, time, forcesync); }