Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////////////////////////////////////////
- //////////////////////////Dinamican Teleport System/////////////////////////////
- //////////////////////////////////By Tony///////////////////////////////////////
- //////////////////////////////Created: 16.1.2016////////////////////////////////
- /////////////////////////Please don't remove credits////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- #include <YSI\y_ini>
- #include <FileManager>
- #define DIALOG_TEDIT 32000
- #define DIALOG_KATEGORIJA 32001
- #define DIALOG_KLOKACIJA 32002
- #define DIALOG_OBRISIKAT 32003
- #define DIALOG_OBRISILOK 32004
- #define DIALOG_KORDLOKACIJA 32005
- #define DIALOG_TELE 32006
- #define DIALOG_KTELE 32007
- #define TELE_PATH "/Lokacije/%s/%d.ini"
- #define MAX_TELE 100
- //Teleport
- enum tInfo
- {
- Ime[90],
- Float:teX,
- Float:teY,
- Float:teZ,
- Float:teA,
- Kateg
- }
- new TeleInfo[20][MAX_TELE][tInfo];
- new Kategorija[20][90];
- new ImeKat[MAX_PLAYERS][90];
- new IDKate=-1;
- new kata=-1;
- stock udb_hash(buf[])
- {
- new length=strlen(buf);
- new s1 = 1;
- new s2 = 0;
- new n;
- for (n=0; n<length; n++)
- {
- s1 = (s1 + buf[n]) % 65521;
- s2 = (s2 + s1) % 65521;
- }
- return (s2 << 16) + s1;
- }
- stock TelePath(id,katid)
- {
- new string[128];
- format(string,sizeof(string),TELE_PATH,Kategorija[katid],id);
- return string;
- }
- stock SacuvajLokacije2(id,katid)
- {
- new INI:File = INI_Open(TelePath(id-1,katid));
- INI_WriteString(File,"Ime",TeleInfo[katid][id][Ime]);
- INI_WriteFloat(File,"X",TeleInfo[katid][id][teX]);
- INI_WriteFloat(File,"Y",TeleInfo[katid][id][teY]);
- INI_WriteFloat(File,"Z",TeleInfo[katid][id][teZ]);
- INI_WriteFloat(File,"A",TeleInfo[katid][id][teA]);
- INI_WriteInt(File,"Kateg",TeleInfo[katid][id][Kateg]);
- INI_Close(File);
- TeleInfo[katid][id][teX]=0;
- TeleInfo[katid][id][teY]=0;
- TeleInfo[katid][id][teZ]=0;
- TeleInfo[katid][id][teA]=0;
- TeleInfo[katid][id][Kateg]=-1;
- return 1;
- }
- stock SacuvajLokacije(id,katid)
- {
- new INI:File = INI_Open(TelePath(id,katid));
- INI_WriteString(File,"Ime",TeleInfo[katid][id][Ime]);
- INI_WriteFloat(File,"X",TeleInfo[katid][id][teX]);
- INI_WriteFloat(File,"Y",TeleInfo[katid][id][teY]);
- INI_WriteFloat(File,"Z",TeleInfo[katid][id][teZ]);
- INI_WriteFloat(File,"A",TeleInfo[katid][id][teA]);
- INI_WriteInt(File,"Kateg",TeleInfo[katid][id][Kateg]);
- INI_Close(File);
- return 1;
- }
- stock SacuvajKategorije()
- {
- new INI:File = INI_Open("Lokacije/Kategorije.ini");
- for(new i=0;i<20;i++)
- {
- new string[90];
- format(string,sizeof(string),"Kategorija_%d",i);
- INI_WriteString(File,string,Kategorija[i]);
- }
- INI_Close(File);
- return 1;
- }
- forward UcitajKategorije(id,name[],value[]);
- public UcitajKategorije(id,name[],value[])
- {
- new string[90];
- format(string,sizeof(string),"Kategorija_%d",id);
- INI_String(string,Kategorija[id],90);
- return 1;
- }
- forward UcitajLokacije(id,name[],value[]);
- public UcitajLokacije(id,name[],value[])
- {
- INI_String("Ime",TeleInfo[IDKate][id][Ime],90);
- INI_Float("X",TeleInfo[IDKate][id][teX]);
- INI_Float("Y",TeleInfo[IDKate][id][teY]);
- INI_Float("Z",TeleInfo[IDKate][id][teZ]);
- INI_Float("A",TeleInfo[IDKate][id][teA]);
- INI_Int("Kateg",TeleInfo[IDKate][id][Kateg]);
- return 1;
- }
- forward Port(playerid);
- public Port(playerid)
- {
- TogglePlayerControllable(playerid,0);
- SetTimerEx("Unfreeze", 2000,false,"i",playerid);
- return 1;
- }
- forward Unfreeze(playerid);
- public Unfreeze(playerid)
- {
- TogglePlayerControllable(playerid, 1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i=0;i<MAX_TELE;i++)
- {
- for(new a=0;a<20;a++)
- {
- if(TeleInfo[a][i][teX] != 0 && TeleInfo[a][i][teY] != 0)
- {
- SacuvajLokacije(i,a);
- }
- }
- }
- return 1;
- }
- public OnFilterScriptInit()
- {
- print("////////////////////////////////////////////////////////////////////////////////");
- print("//////////////////////////Dinamican Teleport System/////////////////////////////");
- print("//////////////////////////////////By Tony///////////////////////////////////////");
- print("//////////////////////////////Created: 16.1.2016////////////////////////////////");
- print("/////////////////////////Please don't remove credits////////////////////////////");
- print("////////////////////////////////////////////////////////////////////////////////");
- for(new j=0;j<20;j++)
- {
- strmid(Kategorija[j],"Nema",0,strlen("Nema"),255);
- INI_ParseFile("Lokacije/Kategorije.ini", "UcitajKategorije", .bExtra = true, .extra = j);
- for(new i = 0; i < sizeof(TeleInfo); i++)
- {
- new str[128];
- format(str,sizeof(str),"Lokacije/%s/%d.ini",Kategorija[j],i);
- TeleInfo[j][i][Kateg] = -1;
- if(fexist(str))
- {
- IDKate=j;
- INI_ParseFile(str, "UcitajLokacije", .bExtra = true, .extra = i);
- }
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_KATEGORIJA)
- {
- new ime[90];
- if(!response) return 1;
- if(sscanf(inputtext,"s[90]",ime)) return ShowPlayerDialog(playerid, DIALOG_KATEGORIJA, DIALOG_STYLE_INPUT, "Ime", "Upisite ime kategorije", "Uredu", "Odustani");
- for(new i=0;i<20;i++)
- {
- if(udb_hash(Kategorija[i]) == udb_hash("Nema"))
- {
- new str[128];
- format(str,sizeof(str),"scriptfiles/Lokacije/%s",ime);
- if(dir_create(str))
- {
- printf("[USPJESNO]: Folder '%s' napravit!",ime);
- strmid(Kategorija[i],ime,0,strlen(ime),255);
- SendClientMessage(playerid,-1,"Uspjesno dodana kategorija!");
- }
- else
- {
- print("[NEUSPJESNO]: Folder nije napravit!");
- SendClientMessage(playerid,-1,"Neuspjesno dodana kategorija!");
- }
- SacuvajKategorije();
- break;
- }
- }
- }
- if(dialogid == DIALOG_KLOKACIJA)
- {
- new ime[90],prov=0;
- if(!response) return 1;
- if(sscanf(inputtext,"s[90]",ime)) return ShowPlayerDialog(playerid, DIALOG_KLOKACIJA, DIALOG_STYLE_INPUT, "Upisi ime kategorije", "Upisite ime kategorije pod koju zelite staviti novu lokaciju!", "Uredu", "Odustani");
- for(new i=0;i<20;i++)
- {
- if(udb_hash(Kategorija[i]) == udb_hash(ime))
- {
- strmid(ImeKat[playerid],Kategorija[i],0,strlen(Kategorija[i]),255);
- ShowPlayerDialog(playerid, DIALOG_KORDLOKACIJA, DIALOG_STYLE_INPUT, "Upisi ime lokacije", "Upisite ime lokacije!", "Uredu", "Odustani");
- prov=1;
- break;
- }
- }
- if(prov==0) return ShowPlayerDialog(playerid, DIALOG_KLOKACIJA, DIALOG_STYLE_INPUT, "Krivo ime kategorije", "Upisite ime kategorije pod koju zelite staviti novu lokaciju!", "Uredu", "Odustani");
- }
- if(dialogid == DIALOG_KORDLOKACIJA)
- {
- new ime[90],j=-1;
- if(!response) return 1;
- if(sscanf(inputtext,"s[90]",ime)) return ShowPlayerDialog(playerid, DIALOG_KORDLOKACIJA, DIALOG_STYLE_INPUT, "Upisi ime lokacije", "Upisite ime lokacije!", "Uredu", "Odustani");
- for(new i=0;i<sizeof(TeleInfo);i++)
- {
- for(new e=0;e<20;e++)
- {
- if(udb_hash(Kategorija[e]) == udb_hash(ImeKat[playerid]))
- {
- j=e;
- }
- }
- if(!fexist(TelePath(i,j)))
- {
- new Float:Poz[4];
- GetPlayerPos(playerid,Poz[0],Poz[1],Poz[2]);
- GetPlayerFacingAngle(playerid,Poz[3]);
- strmid(TeleInfo[j][i][Ime],ime,0,strlen(ime),255);
- TeleInfo[j][i][teX]=Poz[0];
- TeleInfo[j][i][teY]=Poz[1];
- TeleInfo[j][i][teZ]=Poz[2];
- TeleInfo[j][i][teA]=Poz[3];
- SacuvajLokacije(i,j);
- SendClientMessage(playerid,-1,"Uspjesno dodana lokacija!");
- break;
- }
- }
- }
- /*if(dialogid == DIALOG_OBRISIKAT)
- {
- new ime[90];
- if(!response) return 1;
- if(sscanf(inputtext,"s[90]",ime)) return ShowPlayerDialog(playerid, DIALOG_OBRISIKAT, DIALOG_STYLE_INPUT, "Ime", "Upisite ime kategorije koju zelite obrisati", "Uredu", "Odustani");
- for(new i=0;i<20;i++)
- {
- if(udb_hash(Kategorija[i]) == udb_hash(ime))
- {
- new str[128];
- format(str,sizeof(str),"scriptfiles/Lokacije/%s",ime);
- if(dir_delete(str))
- {
- strmid(Kategorija[i],"Nema",0,strlen("Nema"),255);
- printf("[USPJESNO]: Folder '%s' obrisan",ime);
- SendClientMessage(playerid,-1,"Uspjesno obrisana kategorija!");
- }
- else
- {
- SendClientMessage(playerid,-1,"[NEUSPJESNO]: Folder ne postoji ili se u njemu nalaze neke lokacije(premjestite ih preko GPanela negdje u drugu kategoriju(folder)!");
- }
- break;
- }
- }
- }*/
- if(dialogid == DIALOG_OBRISILOK)
- {
- new ime[90],prov=0;
- if(!response) return 1;
- if(sscanf(inputtext,"s[90]",ime)) return ShowPlayerDialog(playerid, DIALOG_OBRISILOK, DIALOG_STYLE_INPUT, "Ime", "Upisite ime lokacije", "Uredu", "Odustani");
- for(new i=0;i<sizeof(TeleInfo);i++)
- {
- for(new a=0;a<20;a++)
- {
- if(udb_hash(TeleInfo[a][i][Ime]) == udb_hash(ime))
- {
- TeleInfo[a][i][teX] = 0;
- TeleInfo[a][i][teY] = 0;
- TeleInfo[a][i][teZ] = 0;
- TeleInfo[a][i][teA] = 0;
- TeleInfo[a][i][Kateg] = -1;
- fremove(TelePath(i,a));
- prov=1;
- new id=i;
- for(new j=id+1;j<sizeof(TeleInfo);j++)
- {
- new str[128];
- format(str,sizeof(str),"Lokacije/%s/%d.ini",Kategorija[a],j);
- if(fexist(str))
- {
- fremove(str);
- SacuvajLokacije2(j,a);
- }
- }
- for(new k=0;k<sizeof(TeleInfo);k++)
- {
- new str[128];
- format(str,sizeof(str),"Lokacije/%s/%d.ini",Kategorija[a],k);
- IDKate=a;
- INI_ParseFile(str, "UcitajLokacije", .bExtra = true, .extra = k);
- }
- }
- }
- }
- if(prov==0) return ShowPlayerDialog(playerid, DIALOG_OBRISILOK, DIALOG_STYLE_INPUT, "Ime", "Upisite ime lokacije", "Uredu", "Odustani");
- SendClientMessage(playerid,-1,"Uspjesno obrisana lokacija!");
- }
- if(dialogid == DIALOG_TEDIT)
- {
- if(response)
- {
- /*switch(listitem)
- {
- case 0://dodaj kategoriju
- {
- ShowPlayerDialog(playerid, DIALOG_KATEGORIJA, DIALOG_STYLE_INPUT, "Ime", "Upisite ime kategorije", "Uredu", "Odustani");
- }
- case 1://dodaj lokaciju
- {
- SendClientMessage(playerid,-1,"Upozorenje: Lokacija porta se sprema na vasim trenutnim koordinatama!");
- ShowPlayerDialog(playerid, DIALOG_KLOKACIJA, DIALOG_STYLE_INPUT, "Upisi ime kategorije", "Upisite ime kategorije pod koju zelite staviti novu lokaciju!", "Uredu", "Odustani");
- }
- case 2://obrisi kategoriju
- {
- //ShowPlayerDialog(playerid, DIALOG_OBRISIKAT, DIALOG_STYLE_INPUT, "Ime", "Upisite ime kategorije koju zelite obrisati", "Uredu", "Odustani");
- }
- case 3://obrisi lokaciju
- {
- ShowPlayerDialog(playerid, DIALOG_OBRISILOK, DIALOG_STYLE_INPUT, "Ime", "Upisite ime lokacije", "Uredu", "Odustani");
- }
- }*/
- if(listitem == 0)
- {
- ShowPlayerDialog(playerid, DIALOG_KATEGORIJA, DIALOG_STYLE_INPUT, "Ime", "Upisite ime kategorije", "Uredu", "Odustani");
- }
- if(listitem == 1)
- {
- SendClientMessage(playerid,-1,"Upozorenje: Lokacija porta se sprema na vasim trenutnim koordinatama!");
- ShowPlayerDialog(playerid, DIALOG_KLOKACIJA, DIALOG_STYLE_INPUT, "Upisi ime kategorije", "Upisite ime kategorije pod koju zelite staviti novu lokaciju!", "Uredu", "Odustani");
- }
- if(listitem == 2)
- {
- //ShowPlayerDialog(playerid, DIALOG_OBRISIKAT, DIALOG_STYLE_INPUT, "Ime", "Upisite ime kategorije koju zelite obrisati", "Uredu", "Odustani");
- }
- if(listitem == 3)
- {
- ShowPlayerDialog(playerid, DIALOG_OBRISILOK, DIALOG_STYLE_INPUT, "Ime", "Upisite ime lokacije", "Uredu", "Odustani");
- }
- }
- }
- if(dialogid == DIALOG_TELE)
- {
- if(response)
- {
- new id=listitem;
- if(IsPlayerInAnyVehicle(playerid))
- {
- SetVehiclePos(GetPlayerVehicleID(playerid), TeleInfo[kata][id][teX],TeleInfo[kata][id][teY],TeleInfo[kata][id][teZ]);
- SetVehicleZAngle(GetPlayerVehicleID(playerid),TeleInfo[kata][id][teA]);
- PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0);
- }
- else
- {
- SetPlayerPos(playerid,TeleInfo[kata][id][teX],TeleInfo[kata][id][teY],TeleInfo[kata][id][teZ]);
- SetPlayerFacingAngle(playerid, TeleInfo[kata][id][teA]);
- }
- Port(playerid);
- new str[128];
- format(str,sizeof(str),"{FF9900}Portani ste na {FFFFFF}%s!",TeleInfo[kata][id][Ime]);
- SendClientMessage(playerid,-1,str);
- }
- }
- if(dialogid == DIALOG_KTELE)
- {
- if(response)
- {
- kata=listitem;
- new info[2100];
- for(new i=0;i<MAX_TELE;i++)
- {
- if(TeleInfo[kata][i][teX] != 0 && TeleInfo[kata][i][teY] != 0)
- {
- new str[128];
- format(str,sizeof(str),"%s\n",TeleInfo[kata][i][Ime]);
- strcat(info, str, sizeof(info));
- }
- }
- ShowPlayerDialog(playerid, DIALOG_TELE, DIALOG_STYLE_LIST, "Teleport", info, "Dalje", "Izlaz");
- }
- }
- return 1;
- }
- CMD:ureditele(playerid,params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"[#Sikora] Samo rcon admin");
- if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Ne smijete biti u vozilu!");
- ShowPlayerDialog(playerid, DIALOG_TEDIT, DIALOG_STYLE_LIST, "Uredjivanje", "Dodaj kategoriju\nDodaj lokaciju\nObrisi kategoriju(TRENUTNO NEDOSTUPNO)\nObrisi lokaciju", "Uredu", "Odustani");
- return 1;
- }
- CMD:tele(playerid, params[])
- {
- if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid,-1,"Niste prijaviti!");
- new info[1024];
- for(new i=0;i<20;i++)
- {
- if(udb_hash(Kategorija[i]) != udb_hash("Nema"))
- {
- new str[128];
- format(str,sizeof(str),"%s\n",Kategorija[i]);
- strcat(info, str, sizeof(info));
- }
- }
- GameTextForPlayer(playerid,"~n~~n~~n~~n~~n~~n~~w~#Sikora~n~~b~Teleport Panel!", 6000, 3);
- ShowPlayerDialog(playerid, DIALOG_KTELE, DIALOG_STYLE_LIST, "Teleport", info, "Dalje", "Izlaz");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment