Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < YSI\y_ini >
- #include < YSI\y_commands >
- #define MAX_KONTEJNERI 150
- #define KONTEJNER_FILE "/Kontejneri/%d.ini"
- #define SCM SendClientMessage
- #define NOVAC_MIN 100
- #define NOVAC_MAX 1000
- #define METKOVI_MIN 1
- #define METKOVI_MAX 30
- enum kontInfo {
- Float:kontPosX,
- Float:kontPosY,
- Float:kontPosZ,
- Float:kontRotX,
- Float:kontRotY,
- Float:kontRotZ
- }
- new KontInfo[ MAX_KONTEJNERI ][ kontInfo ], KontC[ sizeof(KontInfo) ], Text3D:KontLabel[ sizeof(KontInfo) ], EditKontejner[ MAX_PLAYERS ];
- new bool:PretrazujeKont[ MAX_PLAYERS ], PKontTimer[ MAX_PLAYERS ], KontCooldown[ MAX_PLAYERS ];
- public OnPlayerConnect(playerid) { EditKontejner[ playerid ] = -1; return 1; }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
- if(response == EDIT_RESPONSE_FINAL) {
- if(EditKontejner[ playerid ] != -1) {
- new i = EditKontejner[ playerid ];
- KontInfo[ i ][ kontPosX ] = fX;
- KontInfo[ i ][ kontPosY ] = fY;
- KontInfo[ i ][ kontPosZ ] = fZ;
- KontInfo[ i ][ kontRotX ] = fRotX;
- KontInfo[ i ][ kontRotY ] = fRotY;
- KontInfo[ i ][ kontRotZ ] = fRotZ;
- DestroyObject(KontC[ i ]);
- KontC[ i ] = CreateObject(1439, fX, fY, fZ, fRotX, fRotY, fRotZ);
- KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, fX, fY, fZ, 10.0, 0, 0);
- SCM(playerid, -1, "Zavrsili ste kreiranje kontejnera.");
- SaveKontejner(i);
- EditKontejner[ playerid ] = -1;
- }
- }
- return 1;
- }
- forward LoadKont(id, name[], value[]);
- public LoadKont(id, name[], value[]) {
- INI_Float("Lokacija_X", KontInfo[ id ][ kontPosX ]);
- INI_Float("Lokacija_Y", KontInfo[ id ][ kontPosY ]);
- INI_Float("Lokacija_Z", KontInfo[ id ][ kontPosZ ]);
- INI_Float("Rotacija_X", KontInfo[ id ][ kontRotX ]);
- INI_Float("Rotacija_Y", KontInfo[ id ][ kontRotY ]);
- INI_Float("Rotacija_Z", KontInfo[ id ][ kontRotZ ]);
- return 1;
- }
- public OnFilterScriptInit() {
- for(new i; i < MAX_KONTEJNERI; i++) {
- new kFile[ 50 ];
- format(kFile, sizeof(kFile), KONTEJNER_FILE, i);
- if(fexist(kFile)) {
- INI_ParseFile(kFile, "LoadKont", .bExtra = true, .extra = i);
- KontC[ i ] = CreateObject(1439, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], KontInfo[ i ][ kontRotX ], KontInfo[ i ][ kontRotY ], KontInfo[ i ][ kontRotZ ]);
- KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], 10.0, 0, 0);
- }
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason) {
- if(PretrazujeKont[ playerid ]) { PretrazujeKont[ playerid ] = false; KillTimer(PKontTimer[ playerid ]); }
- return 1;
- }
- forward PretrazivanjeKont(playerid);
- public PretrazivanjeKont(playerid) {
- PretrazujeKont[ playerid ] = false;
- TogglePlayerControllable(playerid, true);
- new rand = random(3);
- switch( rand ) {
- case 1: {
- new metkovi, str[ 45 ];
- metkovi = RandomEx(METKOVI_MIN, METKOVI_MAX);
- format(str, sizeof(str), "Nasli ste MP5 sa %d metkova u kontejneru.", metkovi);
- SCM(playerid, -1, str);
- GivePlayerWeapon(playerid, 29, metkovi);
- }
- case 2: {
- new novac, str[ 45 ];
- novac = RandomEx(NOVAC_MIN, NOVAC_MAX);
- format(str, sizeof(str), "Nasli ste %d$ u kontejneru.", novac);
- SCM(playerid, -1, str);
- GivePlayerMoney(playerid, novac);
- }
- case 3: { SCM(playerid, -1, "Niste pronasli nista u kontejneru."); }
- }
- return 1;
- }
- YCMD:kontejner(playerid, params[], help) {
- #pragma unused params
- #pragma unused help
- new vreme = gettime(), str[ 60 ];
- if(PretrazujeKont[ playerid ]) return SCM(playerid, -1, "Vec pretrazujete kontejner.");
- format(str, sizeof(str), "Nije proslo 10 minuta. Preostalo jos %d sekundi.", KontCooldown[ playerid ]+600-vreme);
- if(vreme < KontCooldown[ playerid ]+600) return SCM(playerid, -1, str);
- for(new i; i < MAX_KONTEJNERI; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 4.0, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ])) {
- PKontTimer[ playerid ] = SetTimerEx("PretrazivanjeKont", 7000, false, "i", playerid);
- GameTextForPlayer(playerid, "Pretrazivanje kontejnera, sacekajte...", 7000, 1);
- PretrazujeKont[ playerid ] = true;
- TogglePlayerControllable(playerid, false);
- ApplyAnimation(playerid,"PED","IDLE_tired",3.0,1,0,0,0,0);
- KontCooldown[ playerid ] = gettime();
- }
- }
- return 1;
- }
- YCMD:kreirajkontejner(playerid, params[], help) {
- #pragma unused params
- #pragma unused help
- new Float:X, Float:Y, Float:Z, i = NextKontejnerID( MAX_KONTEJNERI );
- if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
- if(EditKontejner[ playerid ] != -1) return SCM(playerid, -1, "Vec kreirate kontejner.");
- GetPlayerPos(playerid, X,Y,Z);
- KontC[ i ] = CreateObject(1439, X+1, Y+1, Z+1, 0.0, 0.0, 0.0);
- EditObject(playerid, KontC[ i ]);
- EditKontejner[ playerid ] = i;
- SCM(playerid, -1, "Zapoceli ste kreiranje kontejnera.");
- return 1;
- }
- stock SaveKontejner(id) {
- new kFile[ 60 ];
- format(kFile, sizeof(kFile), KONTEJNER_FILE, id);
- new INI:File = INI_Open(kFile);
- INI_WriteFloat(File, "Lokacija_X", KontInfo[ id ][ kontPosX ]);
- INI_WriteFloat(File, "Lokacija_Y", KontInfo[ id ][ kontPosY ]);
- INI_WriteFloat(File, "Lokacija_Z", KontInfo[ id ][ kontPosZ ]);
- INI_WriteFloat(File, "Rotacija_X", KontInfo[ id ][ kontRotX ]);
- INI_WriteFloat(File, "Rotacija_Y", KontInfo[ id ][ kontRotY ]);
- INI_WriteFloat(File, "Rotacija_Z", KontInfo[ id ][ kontRotZ ]);
- INI_Close(File);
- }
- stock NextKontejnerID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), KONTEJNER_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- RandomEx(min,max) {
- return (min+random(max));
- }
Add Comment
Please, Sign In to add comment