Guest User

Roger

a guest
Nov 4th, 2009
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.51 KB | None | 0 0
  1. /*
  2.    Simples comando para salvar posi��o e retornar depois ao local.
  3.    /Salvarpos [id] [nome]
  4.    /Irpos [id]
  5.  
  6.    Exemplo: /salvarpos 0 GroveStreet
  7.             depois se quiser retornar naquele local, digite: /irpos 0
  8.             Caso voc� digite /irpos [id] sem ter salvo o local, n�o ser� teleportado.
  9.  
  10.    Script em forma de FS, adapte como quiser em seu gamemode/filterscript.
  11. */
  12.  
  13. #include a_samp
  14.  
  15. #define MAX_LUGARES 101
  16. #define MAX_LUGAR_NOME  30
  17.  
  18. enum LugarCFG
  19. {
  20.     LugarNome[MAX_LUGAR_NOME],
  21.     bool:Ativado,
  22.     Float:LugarX,
  23.     Float:LugarY,
  24.     Float:LugarZ
  25. };
  26.  
  27. new PlayerLugarInfo[MAX_PLAYERS][MAX_LUGARES][LugarCFG];
  28.  
  29. public OnPlayerCommandText(playerid, cmdtext[])
  30. {
  31.     new cmd[256], idx;
  32.     cmd = strtok(cmdtext, idx);
  33.  
  34.     if(strcmp(cmd,"/salvarpos", true) == 0)
  35.     {
  36.         new tmp[256];  tmp = strtok(cmdtext, idx); new id = strval(tmp);
  37.         new tmp2[256]; tmp2 = strtok(cmdtext, idx);
  38.         if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, " @ /Savepos [id] [nome]");
  39.         if(id >= 0 && id <= MAX_LUGARES)
  40.         {
  41.             if(strlen(tmp2) <= MAX_LUGAR_NOME)
  42.             {
  43.                 new Float:fx, Float:fy, Float:fz, str[128];
  44.                 GetPlayerPos(playerid, fx, fy, fz);
  45.                 PlayerLugarInfo[playerid][id][LugarX] = fx;
  46.                 PlayerLugarInfo[playerid][id][LugarY] = fy;
  47.                 PlayerLugarInfo[playerid][id][LugarZ] = fz;
  48.                 PlayerLugarInfo[playerid][id][Ativado] = true;
  49.                 format(PlayerLugarInfo[playerid][id][LugarNome], MAX_LUGAR_NOME, "%s", tmp2);
  50.                 format(str, 128, " @ Lugar salvo | Nome: %s | Coordenadas: X %f  Y %f  Z %f", tmp2, fx, fy, fz);
  51.                 SendClientMessage(playerid, 0xCCCCCCFF, str);
  52.             } else SendClientMessage(playerid, 0xFFFFFFFF, "M�ximo de caracteres � 30 para o nome.");
  53.         } else SendClientMessage(playerid, 0xFFFFFFFF, "@ /Savepos (0-100) [nome]");
  54.         return true;
  55.     }
  56.  
  57.     if(strcmp(cmd,"/irpos", true) == 0)
  58.     {
  59.         new tmp[255]; tmp = strtok(cmdtext, idx);
  60.         new id = strval(tmp);
  61.         if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, " @ /Irpos [id]");
  62.         if(id >= 0 && id <= MAX_LUGARES)
  63.         {
  64.             if(PlayerLugarInfo[playerid][id][Ativado])
  65.             {
  66.                 new Float:fx, Float:fy, Float:fz, str[128];
  67.                 fx = PlayerLugarInfo[playerid][id][LugarX];
  68.                 fy = PlayerLugarInfo[playerid][id][LugarY];
  69.                 fz = PlayerLugarInfo[playerid][id][LugarZ];
  70.                 format(str, 128, " @ Teleportado | Nome: %s", PlayerLugarInfo[playerid][id][LugarNome]);
  71.                 SendClientMessage(playerid, 0xFFFFFFFF, str);
  72.                 if(IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid), fx, fy, fz);
  73.                 else SetPlayerPos(playerid, fx, fy, fz);
  74.             } else SendClientMessage(playerid, 0xFFFFFFFF, "N�o h� local salvo neste id.");
  75.         } else SendClientMessage(playerid, 0xFFFFFFFF, "@ /Irpos (0-100)");
  76.         return true;
  77.     }
  78.     return false;
  79. }
  80.  
  81. stock strtok(const string[], &index)
  82. {
  83.     new length = strlen(string);
  84.     while ((index < length) && (string[index] <= ' '))
  85.     {
  86.         index++;
  87.     }
  88.     new offset = index;
  89.     new result[20];
  90.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  91.     {
  92.         result[index - offset] = string[index];
  93.     index++;
  94.     }
  95.     result[index - offset] = EOS;
  96.     return result;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment