Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <DOF2>
- #include <ZCMD>
- /*-------------------------------------------------------------------------------------------------------------------------------
- | Configurações |
- | - PLAYER_FILE |
- | Definição utilizada para obter o caminho do arquivo. |
- | Caso deixar padrão, é necessário a pasta Spawn dentro da scriptfiles. |
- | |
- | - SPAWN_MODE |
- | Caso o modo de spawn seja 1 o jogador será forçado a ser levado a última posição salva assim |
- | que ele der spawn pela primeira vez. |
- | |
- | Caso seja 2, o jogador tem um certo tempo para poder decidir se quer continuar na última posi- |
- | ção salva. (O tempo é configuravel) |
- | |
- | Caso seja 3, um dialog sera mostrado ao jogador para que ele escolha se quer continuar da úl- |
- | tima posição salva ou continuar no local em que spawnou. |
- | |
- | - SPAWN_TIME |
- | Tempo em segundos, em que o jogador deverá escolher se quer voltar à última posição salva, ou |
- | continuar aonde está. |
- | |
- | O SPAWN_TIME só é utilizado caso SPAWN_MODE seja 2. |
- | |
- | - SPAWN_COMMAND_STYLE |
- | Caso SPAWN_MODE seja 2, e SPAWN_COMMAND_STYLE seja 1, o jogador deverá apertar Y para continu- |
- | continuar da útima posição salva. |
- | |
- | Caso SPAWN_COMMAND_STYLE seja 2, o jogador deverá apertar digitar o comando para continuar da |
- | útima posição salva. |
- | |
- | - SPAWN_COMMAND |
- | Comando utilizado para continuar do última posição salva. |
- | |
- | O SPAWN_COMMAND só é utilizado caso SPAWN_MODE seja 2. |
- | |
- | - SPAWN_DIALOG |
- | ID do dialog que vai ser utilizado. |
- | |
- --------------------------------------------------------------------------------------------------------------------------------*/
- #define PLAYER_FILE "Spawn/%s.ini"
- #define SPAWN_MODE 3
- #define SPAWN_TIME 20//utilize em segundos, no caso 10 = 10 segundos.
- #define SPAWN_COMMAND_STYLE 2
- #define SPAWN_DIALOG 1380
- #if SPAWN_MODE == 2
- new
- timeCheck[MAX_PLAYERS],
- timerCheckSpawn[MAX_PLAYERS],
- bool: spawningPlayer[MAX_PLAYERS];
- #endif
- new
- bool: playerConnected[MAX_PLAYERS];
- forward CheckSpawnPos(playerid);
- forward CheckSpawnPosTime(playerid);
- public OnFilterScriptExit()
- {
- DOF2_Exit();
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- playerConnected[playerid]= true;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(playerConnected[playerid])
- {
- new
- playerFileFormatted[62];
- format(playerFileFormatted, 62, PLAYER_FILE, GetPlayerNameEx(playerid));
- if(!DOF2_FileExists(playerFileFormatted))
- return DOF2_CreateFile(playerFileFormatted);
- #if SPAWN_MODE == 1
- return SetTimerEx("CheckSpawnPos", 500, false, "i", playerid);
- #elseif SPAWN_MODE == 2
- timerCheckSpawn[playerid] = SetTimerEx("CheckSpawnPosTime", 1000, true, "i", playerid);
- spawningPlayer[playerid] = true;
- return 1;
- #elseif SPAWN_MODE == 3
- ShowDialog(playerid, SPAWN_DIALOG);
- #endif
- playerConnected[playerid] = false;
- }
- return 1;
- }
- #if SPAWN_MODE == 2
- #if SPAWN_COMMAND_STYLE == 1
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- if ((newkeys & KEY_YES) && !(oldkeys & KEY_YES))
- if(spawningPlayer[playerid]) {
- BreakLine(playerid);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}Enviado à última posição salva.");
- KillTimer(timerCheckSpawn[playerid]);
- spawningPlayer[playerid] = false;
- return CheckSpawnPos(playerid);
- }
- return 1;
- }
- #endif
- #elseif SPAWN_MODE == 3
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case SPAWN_DIALOG:
- {
- if(!response)
- return 1;
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}Enviado à última posição salva.");
- CheckSpawnPos(playerid);
- return 1;
- }
- }
- return 0;
- }
- #endif
- public OnPlayerDisconnect(playerid)
- {
- new
- Float: flo_player_pos[3],
- Float: flo_player_fa,
- int_player_int = GetPlayerInterior(playerid),
- playerFileFormatted[62];
- GetPlayerPos(playerid, flo_player_pos[0], flo_player_pos[1], flo_player_pos[2]);
- GetPlayerFacingAngle(playerid, flo_player_fa);
- format(playerFileFormatted, 62, PLAYER_FILE, GetPlayerNameEx(playerid));
- if(!DOF2_FileExists(playerFileFormatted))
- DOF2_CreateFile(playerFileFormatted);
- DOF2_SetFloat(playerFileFormatted, "Last Pos X", flo_player_pos[0]);
- DOF2_SetFloat(playerFileFormatted, "Last Pos Y", flo_player_pos[1]);
- DOF2_SetFloat(playerFileFormatted, "Last Pos Z", flo_player_pos[2]);
- DOF2_SetFloat(playerFileFormatted, "Last Pos FA", flo_player_fa);
- DOF2_SetInt(playerFileFormatted, "Last Int", int_player_int);
- DOF2_SaveFile();
- return 1;
- }
- public CheckSpawnPos(playerid)
- {
- new
- Float: oldPlayerPos[3],
- Float: oldPlayerPosFA,
- oldPlayerPosInt,
- playerFileFormatted[62];
- playerConnected[playerid] = false;
- format(playerFileFormatted, 62, PLAYER_FILE, GetPlayerNameEx(playerid));
- oldPlayerPos[0] = DOF2_GetFloat(playerFileFormatted, "Last Pos X");
- oldPlayerPos[1] = DOF2_GetFloat(playerFileFormatted, "Last Pos Y");
- oldPlayerPos[2] = DOF2_GetFloat(playerFileFormatted, "Last Pos Z");
- oldPlayerPosFA = DOF2_GetFloat(playerFileFormatted, "Last Pos FA");
- oldPlayerPosInt = DOF2_GetInt(playerFileFormatted, "Last Int");
- SetPlayerPos(playerid, oldPlayerPos[0], oldPlayerPos[1], oldPlayerPos[2]);
- SetPlayerFacingAngle(playerid, oldPlayerPosFA);
- SetPlayerInterior(playerid, oldPlayerPosInt);
- return 1;
- }
- #if SPAWN_MODE == 2
- public CheckSpawnPosTime(playerid)
- {
- timeCheck[playerid]++;
- new l_string[128];
- if (timeCheck[playerid] == 1)
- {
- #if SPAWN_COMMAND_STYLE == 1
- format(string, sizeof string, "| LSpawn | {FFFFFF}Você tem {64DCFF}%d {FFFFFF}segundos para apertar a tecla {64DCFF}Y {FFFFFF}e continuar aonde", SPAWN_TIME);
- SendClientMessage(playerid, 0x6491FFFF, string);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}estava quando se desconectou do servidor pela última vez.");
- #elseif SPAWN_COMMAND_STYLE == 2
- format(string, sizeof string, "| LSpawn | {FFFFFF}Você tem {64DCFF}%d {FFFFFF}segundos para digitar o comando {64DCFF}/continuar {FFFFFF}e continuar aonde", SPAWN_TIME);
- SendClientMessage(playerid, 0x6491FFFF, string);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}estava quando se desconectou do servidor pela última vez.");
- #endif
- }
- else if (timeCheck[playerid] == SPAWN_TIME/2)
- {
- #if SPAWN_COMMAND_STYLE == 1
- BreakLine(playerid);
- format(string, sizeof string, "| LSpawn | {FFFFFF}Você tem {64DCFF}%d {FFFFFF}segundos para apertar a tecla {64DCFF}Y {FFFFFF}e continuar aonde", SPAWN_TIME/2);
- SendClientMessage(playerid, 0x6491FFFF, string);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}estava quando se desconectou do servidor pela última vez.");
- #elseif SPAWN_COMMAND_STYLE == 2
- BreakLine(playerid);
- format(string, sizeof string, "| LSpawn | {FFFFFF}Você tem {64DCFF}%d {FFFFFF}segundos para digitar o comando {64DCFF}/continuar {FFFFFF}e continuar aonde", SPAWN_TIME/2);
- SendClientMessage(playerid, 0x6491FFFF, string);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}estava quando se desconectou do servidor pela última vez.");
- #endif
- }
- else if (timeCheck[playerid] == SPAWN_TIME)
- {
- BreakLine(playerid);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}O tempo acabou e você vai continuar aonde está.");
- timeCheck[playerid] = 0;
- spawningPlayer[playerid] = false;
- KillTimer(timerCheckSpawn[playerid]);
- return 1;
- }
- return 1;
- }
- #endif
- #if SPAWN_MODE == 2
- #if SPAWN_COMMAND_STYLE == 2
- CMD:continuar(playerid, params[], help)
- {
- if(!spawningPlayer[playerid])
- return 0;
- BreakLine(playerid);
- SendClientMessage(playerid, 0x6491FFFF, "| LSpawn | {FFFFFF}Enviado à última posição salva.");
- KillTimer(timerCheckSpawn[playerid]);
- spawningPlayer[playerid] = false;
- return CheckSpawnPos(playerid);
- }
- #endif
- #elseif SPAWN_MODE == 3
- ShowDialog(playerid, dialogid)
- {
- switch(dialogid)
- {
- case SPAWN_DIALOG:
- {
- new
- formatMsg[128];
- BreakLine(playerid);
- format(formatMsg, sizeof formatMsg, "{FFFFFF}Olá {64DCFF}%s{FFFFFF}, gostaria de continuar de onde você parou na sua última sessão?", GetPlayerNameEx(playerid));
- ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Spawn...", formatMsg, "Sim", "Não");
- return 1;
- }
- }
- return 1;
- }
- #endif
- GetPlayerNameEx(playerid)
- {
- new
- playerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, playerName, MAX_PLAYER_NAME);
- return playerName;
- }
- BreakLine(playerid) {
- return SendClientMessage(playerid, -1, " ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement