Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < YSI\y_ini >
- #include < YSI\y_commands >
- #include < sscanf2 >
- #define MAX_PRIVKAPIJE 500
- #define PRIVKAPIJE_FILE "/PrivatneKapije/%d.ini"
- #define DIALOG_GATECREATE 1000
- #define DIALOG_GATECREATE2 1001
- enum PRIVKAPIJE_INFO {
- Float:pkX,
- Float:pkY,
- Float:pkZ,
- Float:pkRX,
- Float:pkRY,
- Float:pkRZ,
- Float:pkoX,
- Float:pkoY,
- Float:pkoZ,
- Float:pkoRX,
- Float:pkoRY,
- Float:pkoRZ,
- pkObjID,
- pkCloseTime,
- Float:pkCloseSpeed,
- pkForPlayer[ MAX_PLAYER_NAME ],
- bool:pkForVips,
- bool:pkForAll,
- bool:pkOtvorena,
- pkID
- }
- new PkInfo[ MAX_PRIVKAPIJE ][ PRIVKAPIJE_INFO ], Text3D:PkLabel[ sizeof(PkInfo) ], ClosePKTimer[ MAX_PRIVKAPIJE ], KreiraPK[ MAX_PLAYERS ], bool:KreiraOtvorenuPK[ MAX_PLAYERS ];
- forward TimerClosePK(i); public TimerClosePK(i) {
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkRX ], PkInfo[ i ][ pkRY ], PkInfo[ i ][ pkRZ ]);
- PkInfo[ i ][ pkOtvorena ] = false;
- return 1;
- }
- forward LoadPK(id, name[], value[]); public LoadPK(id, name[], value[]) {
- INI_Float("Lokacija_X", PkInfo[ id ][ pkX ]);
- INI_Float("Lokacija_Y", PkInfo[ id ][ pkY ]);
- INI_Float("Lokacija_Z", PkInfo[ id ][ pkZ ]);
- INI_Float("Rotacija_X", PkInfo[ id ][ pkRX ]);
- INI_Float("Rotacija_Y", PkInfo[ id ][ pkRY ]);
- INI_Float("Rotacija_Z", PkInfo[ id ][ pkRZ ]);
- INI_Float("Otvorena_X", PkInfo[ id ][ pkoX ]);
- INI_Float("Otvorena_Y", PkInfo[ id ][ pkoY ]);
- INI_Float("Otvorena_Z", PkInfo[ id ][ pkoZ ]);
- INI_Float("Otvorena_RX", PkInfo[ id ][ pkoRX ]);
- INI_Float("Otvorena_RY", PkInfo[ id ][ pkoRY ]);
- INI_Float("Otvorena_RZ", PkInfo[ id ][ pkoRZ ]);
- INI_Int("Object_ID", PkInfo[ id ][ pkObjID ]);
- INI_Int("Close_Time", PkInfo[ id ][ pkCloseTime ]);
- INI_Float("Close_Speed", PkInfo[ id ][ pkCloseSpeed ]);
- INI_String("For_Player", PkInfo[ id ][ pkForPlayer ], 24);
- INI_Bool("For_VIPS", PkInfo[ id ][ pkForVips ]);
- INI_Bool("For_All", PkInfo[ id ][ pkForAll ]);
- return 1;
- }
- public OnGameModeInit() {
- for(new i; i < MAX_PRIVKAPIJE; i++) {
- new pkFile[ 50 ], str[ 50 ];
- format(pkFile, sizeof(pkFile), PRIVKAPIJE_FILE, i);
- if(fexist(pkFile)) {
- INI_ParseFile(pkFile, "LoadPK", .bExtra = true, .extra = i);
- PkInfo[ i ][ pkID ] = CreateObject(PkInfo[ i ][ pkObjID ], PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], PkInfo[ i ][ pkRX ], PkInfo[ i ][ pkRY ], PkInfo[ i ][ pkRZ ]);
- format(str, sizeof(str), "Privatna kapija\n{0057AE}%s", PkInfo[ i ][ pkForPlayer ]);
- PkLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], 10.0, 0, 0);
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- if(newkeys == KEY_CROUCH) {
- for(new i; i < MAX_PRIVKAPIJE; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 6.0, PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ])) {
- if(!PkInfo[ i ][ pkForVips ] && !PkInfo[ i ][ pkForAll ]) {
- if(!strcmp(GetName(playerid), PkInfo[ i ][ pkForPlayer ], true)) {
- if(!PkInfo[ i ][ pkOtvorena ]) {
- ClosePKTimer[ i ] = SetTimerEx("TimerClosePK", PkInfo[ i ][ pkCloseTime ]*1000, false, "i", i);
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkoX ], PkInfo[ i ][ pkoY ], PkInfo[ i ][ pkoZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkoRX ], PkInfo[ i ][ pkoRY ], PkInfo[ i ][ pkoRZ ]);
- SendClientMessage(playerid, -1, "Otvorili ste kapiju, zatvorice se automatski.");
- PkInfo[ i ][ pkOtvorena ] = true;
- }
- else {
- KillTimer(ClosePKTimer[ i ]);
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkRX ], PkInfo[ i ][ pkRY ], PkInfo[ i ][ pkRZ ]);
- SendClientMessage(playerid, -1, "Zatvorili ste kapiju.");
- PkInfo[ i ][ pkOtvorena ] = false;
- }
- }
- else return SendClientMessage(playerid, -1, "Nije Vasa kapija.");
- }
- else if(PkInfo[ i ][ pkForVips ]) {
- //if(PlayerInfo[ playerid ][ pVIP ] > 0) {
- if(!PkInfo[ i ][ pkOtvorena ]) {
- ClosePKTimer[ i ] = SetTimerEx("TimerClosePK", PkInfo[ i ][ pkCloseTime ]*1000, false, "i", i);
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkoX ], PkInfo[ i ][ pkoY ], PkInfo[ i ][ pkoZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkoRX ], PkInfo[ i ][ pkoRY ], PkInfo[ i ][ pkoRZ ]);
- SendClientMessage(playerid, -1, "Otvorili ste kapiju, zatvorice se automatski.");
- PkInfo[ i ][ pkOtvorena ] = true;
- }
- else {
- KillTimer(ClosePKTimer[ i ]);
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkRX ], PkInfo[ i ][ pkRY ], PkInfo[ i ][ pkRZ ]);
- SendClientMessage(playerid, -1, "Zatvorili ste kapiju.");
- PkInfo[ i ][ pkOtvorena ] = false;
- }
- //}
- //else return SendClientMessage(playerid, -1, "Niste VIP.");
- }
- else if(PkInfo[ i ][ pkForAll ]) {
- if(!PkInfo[ i ][ pkOtvorena ]) {
- ClosePKTimer[ i ] = SetTimerEx("TimerClosePK", PkInfo[ i ][ pkCloseTime ]*1000, false, "i", i);
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkoX ], PkInfo[ i ][ pkoY ], PkInfo[ i ][ pkoZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkoRX ], PkInfo[ i ][ pkoRY ], PkInfo[ i ][ pkoRZ ]);
- SendClientMessage(playerid, -1, "Otvorili ste kapiju, zatvorice se automatski.");
- PkInfo[ i ][ pkOtvorena ] = true;
- }
- else {
- KillTimer(ClosePKTimer[ i ]);
- MoveObject(PkInfo[ i ][ pkID ], PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], PkInfo[ i ][ pkCloseSpeed ], PkInfo[ i ][ pkRX ], PkInfo[ i ][ pkRY ], PkInfo[ i ][ pkRZ ]);
- SendClientMessage(playerid, -1, "Zatvorili ste kapiju.");
- PkInfo[ i ][ pkOtvorena ] = false;
- }
- }
- }
- }
- }
- 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(KreiraPK[ playerid ] != 0) {
- if(!KreiraOtvorenuPK[ playerid ]) {
- new i = KreiraPK[ playerid ];
- PkInfo[ i ][ pkX ] = fX;
- PkInfo[ i ][ pkY ] = fY;
- PkInfo[ i ][ pkZ ] = fZ;
- PkInfo[ i ][ pkRX ] = fRotX;
- PkInfo[ i ][ pkRY ] = fRotY;
- PkInfo[ i ][ pkRZ ] = fRotZ;
- DestroyObject(PkInfo[ i ][ pkID ]);
- PkInfo[ i ][ pkID ] = CreateObject(PkInfo[ i ][ pkObjID ], fX, fY, fZ, fRotX, fRotY, fRotZ);
- EditObject(playerid, PkInfo[ i ][ pkID ]);
- KreiraOtvorenuPK[ playerid ] = true;
- SendClientMessage(playerid, -1, "Sada sacuvajte poziciju otvorene kapije.");
- }
- else {
- new i = KreiraPK[ playerid ], str[ 50 ];
- PkInfo[ i ][ pkoX ] = fX;
- PkInfo[ i ][ pkoY ] = fY;
- PkInfo[ i ][ pkoZ ] = fZ;
- PkInfo[ i ][ pkoRX ] = fRotX;
- PkInfo[ i ][ pkoRY ] = fRotY;
- PkInfo[ i ][ pkoRZ ] = fRotZ;
- DestroyObject(PkInfo[ i ][ pkID ]);
- PkInfo[ i ][ pkID ] = CreateObject(PkInfo[ i ][ pkObjID ], PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], PkInfo[ i ][ pkRX ], PkInfo[ i ][ pkRY ], PkInfo[ i ][ pkRZ ]);
- if(!PkInfo[ i ][ pkForVips ] && !PkInfo[ i ][ pkForAll ]) { format(str, sizeof(str), "Privatna kapija\n{0057AE}%s", PkInfo[ i ][ pkForPlayer ]); PkLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ], 10.0, 0, 0); }
- SendClientMessage(playerid, -1, "Svrsili ste kreiranje :)");
- SavePK(i);
- KreiraPK[ playerid ] = 0;
- KreiraOtvorenuPK[ playerid ] = false;
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- if(dialogid == DIALOG_GATECREATE) {
- if(response) {
- switch(listitem) {
- case 0: {
- // ZA V.I.P
- }
- case 1: { ShowPlayerDialog(playerid, DIALOG_GATECREATE2, DIALOG_STYLE_INPUT, "KREIRANJE PRIVATNE KAPIJE","Unesite ime igraca za koga je ova kapija.","U redu","Izlaz"); }
- case 2: {
- new Float:X, Float:Y, Float:Z, i = KreiraPK[ playerid ];
- PkInfo[ i ][ pkForAll ] = true;
- GetPlayerPos(playerid, X,Y,Z);
- PkInfo[ i ][ pkID ] = CreateObject(PkInfo[ i ][ pkObjID ], X+3,Y+3,Z, 0.0, 0.0, 0.0);
- EditObject(playerid, PkInfo[ i ][ pkID ]);
- SendClientMessage(playerid, -1, "Sacuvajte pozicije kapije.");
- }
- }
- }
- }
- else if(dialogid == DIALOG_GATECREATE2) {
- if(!response) return 0;
- new ime[ MAX_PLAYER_NAME ], i = KreiraPK[ playerid ], Float:X, Float:Y, Float:Z;
- if(sscanf(inputtext, "s[24]", ime)) return ShowPlayerDialog(playerid, DIALOG_GATECREATE2, DIALOG_STYLE_INPUT, "KREIRANJE PRIVATNE KAPIJE","Unesite ime igraca za koga je ova kapija.","U redu","Izlaz");
- PkInfo[ i ][ pkForPlayer ] = ime;
- GetPlayerPos(playerid, X,Y,Z);
- PkInfo[ i ][ pkID ] = CreateObject(PkInfo[ i ][ pkObjID ], X+3,Y+3,Z, 0.0, 0.0, 0.0);
- EditObject(playerid, PkInfo[ i ][ pkID ]);
- SendClientMessage(playerid, -1, "Sacuvajte pozicije kapije.");
- }
- return 1;
- }
- YCMD:kreirajkapiju(playerid, params[], help) {
- #pragma unused help
- new objid, closetime, Float:closespeed, i = NextPKID(MAX_PRIVKAPIJE);
- if(sscanf(params, "ddf", objid, closetime, closespeed)) return SendClientMessage(playerid, -1, "/kreirajpk [Object ID] [Vreme zatvaranja] [Brzina zatvaranja]");
- PkInfo[ i ][ pkObjID ] = objid;
- PkInfo[ i ][ pkCloseTime ] = closetime;
- PkInfo[ i ][ pkCloseSpeed ] = closespeed;
- KreiraPK[ playerid ] = i;
- ShowPlayerDialog(playerid, DIALOG_GATECREATE, DIALOG_STYLE_LIST, "KREIRANJE PRIVATNE KAPIJE","V.I.P\nIgrac\nSvi igraci","U redu","Izlaz");
- return 1;
- }
- YCMD:izbrisikapiju(playerid, params[], help) {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON admin.");
- new i = GetNearestPK(playerid), pkFile[ 60 ];
- if(i == -1) return SendClientMessage(playerid, -1, "Niste u blizini kapije.");
- DestroyObject(PkInfo[ i ][ pkID ]);
- Delete3DTextLabel(PkLabel[ i ]);
- PkInfo[ i ][ pkX ] = 0.0;
- PkInfo[ i ][ pkY ] = 0.0;
- PkInfo[ i ][ pkZ ] = 0.0;
- PkInfo[ i ][ pkRX ] = 0.0;
- PkInfo[ i ][ pkRY ] = 0.0;
- PkInfo[ i ][ pkRZ ] = 0.0;
- format(pkFile, sizeof(pkFile), PRIVKAPIJE_FILE, i);
- if(fexist(pkFile)) { fremove(pkFile); }
- return 1;
- }
- stock NextPKID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), PRIVKAPIJE_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- GetNearestPK( playerid ) {
- for( new i = 1; i < MAX_PRIVKAPIJE; i++) {
- if( IsPlayerInRangeOfPoint( playerid, 6.0, PkInfo[ i ][ pkX ], PkInfo[ i ][ pkY ], PkInfo[ i ][ pkZ ] ) ) { return i; }
- }
- return -1;
- }
- stock SavePK(id) {
- new pkFile[ 60 ];
- format(pkFile, sizeof(pkFile), PRIVKAPIJE_FILE, id);
- new INI:File = INI_Open(pkFile);
- INI_WriteFloat(File, "Lokacija_X", PkInfo[ id ][ pkX ]);
- INI_WriteFloat(File, "Lokacija_Y", PkInfo[ id ][ pkY ]);
- INI_WriteFloat(File, "Lokacija_Z", PkInfo[ id ][ pkZ ]);
- INI_WriteFloat(File, "Rotacija_X", PkInfo[ id ][ pkRX ]);
- INI_WriteFloat(File, "Rotacija_Y", PkInfo[ id ][ pkRY ]);
- INI_WriteFloat(File, "Rotacija_Z", PkInfo[ id ][ pkRZ ]);
- INI_WriteFloat(File, "Otvorena_X", PkInfo[ id ][ pkoX ]);
- INI_WriteFloat(File, "Otvorena_Y", PkInfo[ id ][ pkoY ]);
- INI_WriteFloat(File, "Otvorena_Z", PkInfo[ id ][ pkoZ ]);
- INI_WriteFloat(File, "Otvorena_RX", PkInfo[ id ][ pkoRX ]);
- INI_WriteFloat(File, "Otvorena_RY", PkInfo[ id ][ pkoRY ]);
- INI_WriteFloat(File, "Otvorena_RZ", PkInfo[ id ][ pkoRZ ]);
- INI_WriteInt(File, "Object_ID", PkInfo[ id ][ pkObjID ]);
- INI_WriteInt(File, "Close_Time", PkInfo[ id ][ pkCloseTime ]);
- INI_WriteFloat(File, "Close_Speed", PkInfo[ id ][ pkCloseSpeed ]);
- INI_WriteString(File, "For_Player", PkInfo[ id ][ pkForPlayer ]);
- INI_WriteBool(File, "For_VIPS", PkInfo[ id ][ pkForVips ]);
- INI_WriteBool(File, "For_All", PkInfo[ id ][ pkForAll ]);
- INI_Close(File);
- return 1;
- }
- stock GetName( playerid ) {
- new name[24];
- GetPlayerName(playerid,name,24);
- return name;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement