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 >
- enum {
- DIALOG_AKTORPANEL,
- DIALOG_KREIRAJAKTORA1,
- DIALOG_KREIRAJAKTORA2,
- DIALOG_AKTORANIMACIJA,
- DIALOG_IZMENIAKTORA,
- DIALOG_IZMENIPOZICIJU,
- DIALOG_IZMENIANIMACIJU,
- DIALOG_IZMENISKIN,
- DIALOG_IZMENIIME,
- DIALOG_IZBRISIAKTORA,
- DIALOG_BRISANJEAKTORA
- }
- #define AKTOR_FILE "/Aktori/%d.ini"
- #define MAX_AKTORI 300
- enum AKTOR_INFO {
- Float:aktorX,
- Float:aktorY,
- Float:aktorZ,
- Float:aktorA,
- aktorskin,
- aktorime[ 40 ],
- aktoranimacija,
- aktorid
- }
- new AktorInfo[ MAX_AKTORI ][ AKTOR_INFO ], KreiraAktora[ MAX_PLAYERS ], Text3D:AktorLabel[ sizeof(AktorInfo) ];
- public OnFilterScriptInit() {
- print("===========================\n\n- Aktor system by Shomy -\n- Ucitan -\n\n===========================");
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- if(dialogid == DIALOG_AKTORPANEL) {
- if(!response) return 1;
- if(response) {
- switch(listitem) {
- case 0: return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
- case 1: return ShowPlayerDialog(playerid, DIALOG_AKTORANIMACIJA, DIALOG_STYLE_LIST, "{0077C7}ANIMACIJA {FFFFFF}AKTORA", "Animacija 1\n Animacija 2\nAnimacija 3", "Izaberi", "Izlaz");
- case 2: return ShowPlayerDialog(playerid, DIALOG_IZMENIAKTORA, DIALOG_STYLE_LIST, "{0077C7}IZMENI {FFFFFF}AKTORA", "Promeni poziciju\nPromeni skin\nPromeni ime\nPromeni animaciju", "Izaberi", "Izlaz");
- case 3: return ShowPlayerDialog(playerid, DIALOG_IZBRISIAKTORA, DIALOG_STYLE_LIST, "{0077C7}IZBRISI {FFFFFF}AKTORA", "Najblizeg aktora\nID aktora", "Izaberi", "Izlaz");
- }
- }
- }
- else if(dialogid == DIALOG_KREIRAJAKTORA1) {
- if(!response) return 1;
- if(response) {
- new skinid, i = NextAktorID(MAX_AKTORI), Float:X, Float:Y, Float:Z, Float:A;
- if(sscanf(inputtext, "d", skinid)) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
- if(skinid > 311) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{FF1414}NEPOSTOJECI ID SKINA {FFFFFF}(0-311)", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
- GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, A);
- AktorInfo[ i ][ aktorX ] = X; AktorInfo[ i ][ aktorY ] = Y; AktorInfo[ i ][ aktorZ ] = Z; AktorInfo[ i ][ aktorA ] = A;
- AktorInfo[ i ][ aktorskin ] = skinid;
- AktorInfo[ i ][ aktoranimacija ] = 0;
- KreiraAktora[ playerid ] = i;
- ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA2, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ime aktora.\nPrimer: Shomy", "U redu", "Izlaz");
- }
- }
- else if(dialogid == DIALOG_KREIRAJAKTORA2) {
- if(!response) return 1;
- if(response) {
- new aktornick[ 40 ], str[ 56 ], i = KreiraAktora[ playerid ];
- if(sscanf(inputtext, "s[40]", aktornick)) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA2, DIALOG_STYLE_INPUT, "{0077C7}KREIRANJE {FFFFFF}AKTORA", "Unesite ime aktora.\nPrimer: Shomy", "U redu", "Izlaz");
- AktorInfo[ i ][ aktorime ] = aktornick;
- AktorInfo[ i ][ aktorid ] = CreateActor(AktorInfo[ i ][ aktorskin ], AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ], AktorInfo[ i ][ aktorZ ], AktorInfo[ i ][ aktorA ]);
- SetPlayerPos(playerid, AktorInfo[ i ][ aktorX ]+2, AktorInfo[ i ][ aktorY ]+2, AktorInfo[ i ][ aktorZ ]);
- format(str, sizeof(str), "%s {0077C7}[ID %d]", aktornick, i);
- AktorLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ], AktorInfo[ i ][ aktorZ ]+1.0, 10.0, 0);
- SaveAktor(i);
- SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Ukoliko zelite da dodate aktoru animaciju - {0077C7}/aktorpanel");
- }
- }
- else if(dialogid == DIALOG_IZMENIAKTORA) {
- if(!response) return 1;
- if(response) {
- switch(listitem) {
- case 0: return ShowPlayerDialog(playerid, DIALOG_IZMENIPOZICIJU, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}POZICIJE", "Unesite ID aktora.", "U redu", "Izlaz");
- case 1: return ShowPlayerDialog(playerid, DIALOG_IZMENISKIN, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}SKINA", "Unesite ID skina.\n{FF1414}NAPOMENA: {FFFFFF}Menja skin aktoru najblizem Vama.", "U redu", "Izlaz");
- case 2: return ShowPlayerDialog(playerid, DIALOG_IZMENIIME, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}IMENA", "Unesite novo ime.\n{FF1414}NAPOMENA: {FFFFFF}Menja ime aktoru najblizem Vama.", "U redu", "Izlaz");
- case 3: return ShowPlayerDialog(playerid, DIALOG_IZMENIANIMACIJU, DIALOG_STYLE_LIST, "{0077C7}Menja animaciju aktoru najblizem Vama", "Animacija 1\n Animacija 2\nAnimacija 3", "Izaberi","Izlaz");
- }
- }
- }
- else if(dialogid == DIALOG_IZMENIPOZICIJU) {
- if(!response) return 1;
- if(response) {
- new i, Float:X, Float:Y, Float:Z, Float:A, str[ 60 ];
- if(sscanf(inputtext, "d", i)) return ShowPlayerDialog(playerid, DIALOG_IZMENIPOZICIJU, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}POZICIJE", "Unesite ID aktora.", "U redu", "Izlaz");
- GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, A);
- SetPlayerPos(playerid, X+2, Y+2, Z);
- SetActorPos(AktorInfo[ i ][ aktorid ], X, Y, Z);
- SetActorFacingAngle(AktorInfo[ i ][ aktorid ], A);
- Delete3DTextLabel(AktorLabel[ i ]);
- format(str, sizeof(str), "%s {0077C7}[ID %d]", AktorInfo[ i ][ aktorime ], i);
- AktorLabel[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z+1.0, 10.0, 0);
- AktorInfo[ i ][ aktorX ] = X; AktorInfo[ i ][ aktorY ] = Y; AktorInfo[ i ][ aktorZ ] = Z; AktorInfo[ i ][ aktorA ] = A;
- SaveAktor(i);
- SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Uspesno ste promenili poziciju aktoru.");
- }
- }
- else if(dialogid == DIALOG_IZMENISKIN) {
- if(!response) return 1;
- if(response) {
- new skinid, i = GetNearestAktor(playerid);
- if(i == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
- if(sscanf(inputtext, "d", skinid)) return ShowPlayerDialog(playerid, DIALOG_IZMENISKIN, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}SKINA", "Unesite ID skina.\n{FF1414}NAPOMENA: {FFFFFF}Menja skin aktoru najblizem Vama.", "U redu", "Izlaz");
- if(skinid > 311) return ShowPlayerDialog(playerid, DIALOG_KREIRAJAKTORA1, DIALOG_STYLE_INPUT, "{FF1414}NEPOSTOJECI ID SKINA {FFFFFF}(0-311)", "Unesite ID skina aktora.\nPrimer: 294", "U redu", "Izlaz");
- DestroyActor(AktorInfo[ i ][ aktorid ]);
- AktorInfo[ i ][ aktorid ] = CreateActor(skinid, AktorInfo[ i ][ aktorX ], AktorInfo[ i ][ aktorY ] , AktorInfo[ i ][ aktorZ ], AktorInfo[ i ][ aktorA ]);
- AktorInfo[ i ][ aktorskin ] = skinid;
- SaveAktor(i);
- SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Uspesno ste promenili skin aktoru.");
- }
- }
- else if(dialogid == DIALOG_IZMENIIME) {
- if(!response) return 1;
- if(response) {
- new actime[ 40 ], str[ 60 ], i = GetNearestAktor(playerid);
- if(i == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
- if(sscanf(inputtext, "s[40]", actime)) return ShowPlayerDialog(playerid, DIALOG_IZMENIIME, DIALOG_STYLE_INPUT, "{0077C7}MENJANJE {FFFFFF}IMENA", "Unesite novo ime.\n{FF1414}NAPOMENA: {FFFFFF}Menja ime aktoru najblizem Vama.", "U redu", "Izlaz");
- format(str, sizeof(str), "%s {0077C7}[ID %d]", actime, i);
- Update3DTextLabelText(AktorLabel[ i ], 0xFFFFFFFF, str);
- AktorInfo[ i ][ aktorime ] = actime;
- SaveAktor(i);
- SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Uspesno ste promenili ime aktoru.");
- }
- }
- else if(dialogid == DIALOG_IZBRISIAKTORA) {
- if(!response) return 1;
- if(response) {
- switch(listitem) {
- case 0: {
- if(GetNearestAktor(playerid) == -1) return SendClientMessage(playerid, 0x0077C7FF, "[AKTOR SYSTEM] {FFFFFF}Niste blizu aktora.");
- new i = GetNearestAktor(playerid), aktorFile[ 60 ], str[ 60 ];
- DestroyActor(AktorInfo[ i ][ aktorid ]);
- Delete3DTextLabel(AktorLabel[ i ]);
- AktorInfo[ i ][ aktorX ] = 0.0; AktorInfo[ i ][ aktorY ] = 0.0; AktorInfo[ i ][ aktorZ ] = 0.0; AktorInfo[ i ][ aktorA ] = 0.0;
- format(str, sizeof(str), "[AKTOR SYSTEM] {FFFFFF}Uspesno ste obrisali aktora ID %d.", i);
- SendClientMessage(playerid, 0x0077C7FF, str);
- format(aktorFile, sizeof(aktorFile), AKTOR_FILE, i);
- if(fexist(aktorFile)) { fremove(aktorFile); }
- }
- case 1: return ShowPlayerDialog(playerid, DIALOG_BRISANJEAKTORA, DIALOG_STYLE_INPUT, "{0077C7}BRISANJE {FFFFFF}AKTORA", "Unesite ID aktora.","U redu","Izlaz");
- }
- }
- }
- else if(dialogid == DIALOG_BRISANJEAKTORA) {
- if(!response) return 1;
- if(response) {
- new i, str[ 60 ], aktorFile[ 60 ];
- if(sscanf(inputtext, "%d", i)) return ShowPlayerDialog(playerid, DIALOG_BRISANJEAKTORA, DIALOG_STYLE_INPUT, "{0077C7}BRISANJE {FFFFFF}AKTORA", "Unesite ID aktora.","U redu","Izlaz");
- DestroyActor(AktorInfo[ i ][ aktorid ]);
- Delete3DTextLabel(AktorLabel[ i ]);
- AktorInfo[ i ][ aktorX ] = 0.0; AktorInfo[ i ][ aktorY ] = 0.0; AktorInfo[ i ][ aktorZ ] = 0.0; AktorInfo[ i ][ aktorA ] = 0.0;
- format(str, sizeof(str), "[AKTOR SYSTEM] {FFFFFF}Uspesno ste obrisali aktora ID %d.", i);
- SendClientMessage(playerid, 0x0077C7FF, str);
- format(aktorFile, sizeof(aktorFile), AKTOR_FILE, i);
- if(fexist(aktorFile)) { fremove(aktorFile); }
- }
- }
- else if(dialogid == DIALOG_AKTORANIMACIJA) {
- // IN NEXT UPDATE
- }
- return 1;
- }
- YCMD:aktorpanel(playerid, params[], help) {
- #pragma unused help
- #pragma unused params
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste ulogovani kao RCON admin.");
- ShowPlayerDialog(playerid, DIALOG_AKTORPANEL, DIALOG_STYLE_LIST, "{0077C7}AKTOR {FFFFFF}PANEL", "Kreiraj aktora\nDodaj aktoru animaciju\nIzmeni aktora\nIzbrisi aktora","Izaberi","Izlaz");
- return 1;
- }
- GetNearestAktor( playerid ) {
- for( new b = 1; b < sizeof(AktorInfo); b++) {
- if( IsPlayerInRangeOfPoint( playerid, 4.0, AktorInfo[ b ][ aktorX ], AktorInfo[ b ][ aktorY ], AktorInfo[ b ][ aktorZ ] ) ) return b; }
- return -1;
- }
- stock NextAktorID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), AKTOR_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- stock SaveAktor(id) {
- new aktorFile[ 60 ];
- format(aktorFile, sizeof(aktorFile), AKTOR_FILE, id);
- new INI:File = INI_Open(aktorFile);
- INI_WriteString(File, "Ime", AktorInfo[ id ][ aktorime ]);
- INI_WriteFloat(File, "Lokacija_X", AktorInfo[ id ][ aktorX ]);
- INI_WriteFloat(File, "Lokacija_Y", AktorInfo[ id ][ aktorY ]);
- INI_WriteFloat(File, "Lokacija_Z", AktorInfo[ id ][ aktorZ ]);
- INI_WriteFloat(File, "Rotacija_A", AktorInfo[ id ][ aktorA ]);
- INI_WriteInt(File, "Skin", AktorInfo[ id ][ aktorskin ]);
- INI_Close(File);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement