Código:
//criado por ANDREX nao retire os creditos , voce voce so estara enganando a si propio
#include <a_samp>
#include <zcmd>
#include <dini>
#define DIALOG_NOME_TP    1000 //mude caso voce ja use essa numerwcao na gm para  naodar  conflito
#define DIALOG_LISTA_TP    1001
// Comando para criar teleporte
CMD:tele(playerid, params[]){
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,0x00FFFF,"[!] voce nao e um adminstrador");
    ShowPlayerDialog(playerid, DIALOG_NOME_TP, DIALOG_STYLE_INPUT, "Criar Teleporte", "Digite o nome para o novo teleporte:", "Salvar", "Cancelar");
    return 1;
}
// Comando para mostrar todos teleportes salvos
CMD:teleportes(playerid, params[]){
    new File:handle, line[64], lista[1024] = "";
    new count = 0;
    new item[96];
    handle = fopen("teleportes/lista.txt", io_read);
    if(!handle) return SendClientMessage(playerid, -1, "Nenhum teleporte criado ainda.");
    while(fread(handle, line)){
        line[strlen(line)-1] = '\0'; // remove \n
        // Limita a 120 teleportes no dialog
        if(count >= 120) break;
        count++;
        format(item, sizeof(item), "%d. %s\n", count, line);
        if(strlen(lista) + strlen(item) < sizeof(lista)){
            strcat(lista, item, sizeof(lista));
        }
        else break;
    }
    fclose(handle);
    if(count == 0) return SendClientMessage(playerid, -1, "Nenhum teleporte encontrado.");
    ShowPlayerDialog(playerid, DIALOG_LISTA_TP, DIALOG_STYLE_LIST, "Teleportes Disponíveis", lista, "Ir", "Cancelar");
    return 1;
}
// Manipula dialogs
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
    if(dialogid == DIALOG_NOME_TP){
        if(!response || isnull(inputtext)){
            SendClientMessage(playerid, -1, "Criação de teleporte cancelada.");
            return 1;
        }
        new file[64];
        format(file, sizeof(file), "teleportes/%s.ini", inputtext);
        new Float:x, Float:y, Float:z;
        GetPlayerPos(playerid, x, y, z);
        dini_Create(file);
        dini_FloatSet(file, "X", x);
        dini_FloatSet(file, "Y", y);
        dini_FloatSet(file, "Z", z);
        // Adicionar à lista.txt se ainda não existir
        new listfile[] = "teleportes/lista.txt";
        new File:check = fopen(listfile, io_read);
        new exists = 0;
        new line[64];
        if(check){
            while(fread(check, line)){
                line[strlen(line)-1] = '\0';
                if(strcmp(line, inputtext, true) == 0){
                    exists = 1;
                    break;
                }
            }
            fclose(check);
        }
        if(!exists){
            new File:add = fopen(listfile, io_append);
            if(add){
                fwrite(add, inputtext);
                fwrite(add, "\n");
                fclose(add);
            }
        }
        new msg[64];
        format(msg, sizeof(msg), "Teleporte '%s' criado com sucesso!", inputtext);
        SendClientMessage(playerid, -1, msg);
        return 1;
    }
    if(dialogid == DIALOG_LISTA_TP){
        if(!response) return 1;
        new name[64], file[64], line, File:handle;
        handle = fopen("teleportes/lista.txt", io_read);
        if(!handle) return SendClientMessage(playerid, 0x00FFFF, "[!]Erro ao ler a lista de teleportes.");
        while(fread(handle, name)){
            name[strlen(name)-1] = '\0'; // remove '\n'
            if(line == listitem){
                format(file, sizeof(file), "teleportes/%s.ini", name);
                if(!fexist(file)){
                    SendClientMessage(playerid, -1, "Este teleporte não existe mais.");
                    fclose(handle);
                    return 1;
                }
                new Float:x = dini_Float(file, "X");
                new Float:y = dini_Float(file, "Y");
                new Float:z = dini_Float(file, "Z");
                SetPlayerPos(playerid, x, y, z);
                new msg[64];
                format(msg, sizeof(msg), "Teleportado para '%s'.", name);
                SendClientMessage(playerid, -1, msg);
                break;
            }
            line++;
        }
        fclose(handle);
        return 1;
    }
    return 0;
}Você precisa criando uma pasta dentro da scriptfiles chamada teleportes de dentro da pasta Teleportes um arquivo lista.txt

	   
	
