Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Teleportsystem
- copyright by pwnfl4sh
- */
- #include <a_samp>
- #include <zcmd>
- #include <dini>
- #define MAX_TELEPORTS 32
- #define COLOR_GREEN 0x33AA33AA
- #define COLOR_RED 0xAA3333AA
- new createdports = 0;
- new ListItemSlot[MAX_TELEPORTS];
- public OnFilterScriptInit()
- {
- print("Teleportsystem gestartet!");
- createdports = 0;
- new path[64];
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- ListItemSlot[i] = -1;
- format(path,64,"teleport_%d.txt",i);
- if(dini_Exists(path))
- {
- createdports ++;
- }
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(response)
- {
- if(dialogid == 1336)
- {
- OrderPorts();
- if(listitem == 0)
- {
- if(createdports == 0) return SendClientMessage(playerid,COLOR_RED,"Bisher wurden noch keine Teleports erstellt!");
- new str[1024], path[64];
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- format(path,64,"teleport_%d.txt",i);
- if(dini_Exists(path))
- {
- format(str,1024,"%s\n{33AA33}%d - %s",str,i,dini_Get(path,"Name"));
- }
- }
- ShowPlayerDialog(playerid,1337,DIALOG_STYLE_LIST,"Teleports",str,"Los!","Zurück");
- }
- else if(listitem == 1)
- {
- if(createdports == 0) return SendClientMessage(playerid,COLOR_RED,"Bisher wurden noch keine Teleports erstellt!");
- new str[1024], path[64];
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- format(path,64,"teleport_%d.txt",i);
- if(dini_Exists(path))
- {
- format(str,1024,"%s\n{33AA33}%d - %s",str,i,dini_Get(path,"Name"));
- }
- }
- ShowPlayerDialog(playerid,1338,DIALOG_STYLE_LIST,"Teleports löschen",str,"Löschen!","Zurück");
- }
- else if(listitem == 2)
- {
- ShowPlayerDialog(playerid,1339,DIALOG_STYLE_INPUT,"Teleports erstellen","Gib einen Namen für diesen Ort ein:","Erstellen!","Zurück");
- }
- }
- if(dialogid == 1337)
- {
- new path[64], str[144];
- format(path,64,"teleport_%d.txt",ListItemSlot[listitem]);
- if(dini_Exists(path))
- {
- SetPlayerPos(playerid,dini_Float(path,"X"),dini_Float(path,"Y"),dini_Float(path,"Z"));
- SetPlayerInterior(playerid,dini_Int(path,"Interior"));
- SetPlayerVirtualWorld(playerid,dini_Int(path,"World"));
- format(str,144,"Du hast dich zum Teleport \"%s\" (ID: %d) geportet.",dini_Get(path,"Name"),ListItemSlot[listitem]);
- SendClientMessage(playerid,COLOR_GREEN,str);
- }
- else
- {
- SendClientMessage(playerid,COLOR_RED,"FEHLER: Teleport wurde nicht gefunden.");
- }
- }
- else if(dialogid == 1338)
- {
- new path[64];
- format(path,64,"teleport_%d.txt",ListItemSlot[listitem]);
- if(dini_Exists(path))
- {
- dini_Remove(path);
- SendClientMessage(playerid,COLOR_GREEN,"Erfolgreich gelöscht!");
- }
- else
- {
- SendClientMessage(playerid,COLOR_RED,"FEHLER: Teleport wurde nicht gefunden.");
- }
- }
- else if(dialogid == 1339)
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"Du bist kein RCON-Admin!");
- if(createdports == MAX_TELEPORTS-1) return SendClientMessage(playerid,COLOR_RED,"Das Limit wurde erreicht!");
- if(isnull(inputtext)) return SendClientMessage(playerid,COLOR_RED,"Du musst einen Namen eingeben!");
- if(strlen(inputtext) > 32) return SendClientMessage(playerid,COLOR_RED,"Der Name ist zu lang!");
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid,x,y,z);
- CreateTeleport(x,y,z,GetPlayerInterior(playerid),GetPlayerVirtualWorld(playerid),inputtext);
- SendClientMessage(playerid,COLOR_GREEN,"Teleport erfolgreich erstellt! Tippe /teleports um die Teleportverwaltung aufzurufen.");
- }
- }
- else if(!response)
- {
- if(dialogid == 1337 || dialogid == 1338 || dialogid == 1339)
- {
- ShowPlayerDialog(playerid,1336,DIALOG_STYLE_LIST,"Teleportverwaltung","{33AA33}Teleports anzeigen\n{33AA33}Teleports löschen\n{33AA33}Teleports erstellen","Okay!","Abbrechen");
- }
- }
- return 1;
- }
- stock CreateTeleport(Float:x,Float:y,Float:z,interior,world,name[])
- {
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- new path[64];
- format(path,64,"teleport_%d.txt",i);
- if(!dini_Exists(path))
- {
- dini_Create(path);
- dini_FloatSet(path,"X",x);
- dini_FloatSet(path,"Y",y);
- dini_FloatSet(path,"Z",z);
- dini_IntSet(path,"Interior",interior);
- dini_IntSet(path,"World",world);
- dini_Set(path,"Name",name);
- createdports ++;
- return 1;
- }
- }
- return 1;
- }
- stock TeleportExists(id)
- {
- new path[64];
- format(path,64,"teleport_%d.txt",id);
- if(!dini_Exists(path)) return 0;
- return 1;
- }
- stock GetFreeListItemSlot()
- {
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- if(ListItemSlot[i] == -1)
- {
- return i;
- }
- }
- return -1;
- }
- stock DeletePortOrder()
- {
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- ListItemSlot[i] = -1;
- }
- return 1;
- }
- stock OrderPorts()
- {
- DeletePortOrder();
- for(new i=0;i<MAX_TELEPORTS;i++)
- {
- if(TeleportExists(i))
- {
- new slot = GetFreeListItemSlot();
- if(slot != -1)
- {
- ListItemSlot[slot] = i;
- }
- }
- }
- return 1;
- }
- COMMAND:teleports(playerid,params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_RED,"Du bist kein RCON-Admin!");
- ShowPlayerDialog(playerid,1336,DIALOG_STYLE_LIST,"Teleportverwaltung","{33AA33}Teleports anzeigen\n{33AA33}Teleports löschen\n{33AA33}Teleports erstellen","Okay!","Abbrechen");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment