Opa Ola Pessoal Bom vou comecar meu servidor e tava procurando uma Gamemode Com registro e salvamento dof2 para comecar se alguém tiver alguma ou link de alguma pela internet me manda aqui no tópico
Teleport to Marker
Salve galera, esse é meu primeiro tópico aqui. então vim trazer um código bastante útil para sistemas administrativos. - ele funciona da seguinte forma: você abre o mapa e marca no lugar para onde você quer se teleportar e a magica acontece! PS: você consegue se teleportar estando dentro de um veiculo também, o sistema funciona no mobile também!
Olá, tudo bem ?, espero que sim, venho trazer essa super GameMode sem BUGs claramente ela não é Brasileira, mais foi traduzida, ela se passa em um momento Pos Apocalíptico onde você tem que sobreviver ela tem sistema de Whitelist que ajuda a filtrar os Player's, peço que apenas deixe os créditos dos criadores dela ((/creditos)), faça bom proveito dela.
Eu tava acompanhando um tópico no falecido fórum samp onde uma galera tava tentando criar 2 funções:
um pra aumentar e outra pra diminuir a velocidade de um carro por porcentagem
Código:
/*
* percentValue should be between 0 and 1.0. 0.9 would mean 90% of the original speed.
*/
IncreaseVehicleSpeed(playerid, Float:percentValue) {
new Float:vx, Float:vy, Float:vz;
new Float:speed = VectorSize(vx, vy, vz);
SetVehicleVelocity(GetPlayerVehicleID(playerid), vx * (speed - percentValue), vy * (speed - percentValue) , vz * (speed - percentValue));
}
/*
* percentValue should be between 0 and 1.0. 0.9 would mean 90% of the original speed.
*/
DecreaseVehicleSpeed(playerid, Float:percentValue) {
new Float:vx, Float:vy, Float:vz;
new Float:speed = VectorSize(vx, vy, vz);
SetVehicleVelocity(GetPlayerVehicleID(playerid), vx * (speed + percentValue), vy * (speed + percentValue) , vz * (speed + percentValue));
}
Essas eram as funções, mas não estão funcionando corretamente...
Alguém aqui consegue identificar onde está o problema pra corrigir?
//A variável entrarpickup servirá pra criar o pickup de entrada, já o sairpickup, será criado dentro do interior, fazendo você sair do interior.
new EntrarPickup, SairPickup;
Agora iremos na callback OnGameModeInit(), para a criação dos pickup
Código PHP:
public OnGameModeInit() { EntrarPickup = CreatePickup(IDPICKUP, MODELO, X, Y, Z); //Você escolhe o local que deseja. O modelo de pickup existe varios, mas se for pra entrar e sair de interior, use o 23. SairPickup = CreatePickup(IDPICKUP, MODELO, X, Y, Z); //Caso seja pra interior, você pegará a posição dentro do interior. return 1; }
Agora usaremos a callback public OnPlayerPickUpPickup(playerid, pickupid), pra dar funcionalidade no pickup.
Código PHP:
public OnPlayerPickUpPickup(playerid, pickupid) { if (pickupid == EntrarPickup) //Carrega o Pickup definido. { SetPlayerInterior(playerid, IDINTERIOR); SetPlayerPos(playerid, X, Y, Z); //As coordenadas do interior, de acordo com o id. } if (pickupid == SairPickup) //Carrega o Pickup definido. { SetPlayerInterior(playerid, 0); //Aqui você colocará o id que você quer que o player seja teletransportando, caso seja pra sair do interior, use o id 0. SetPlayerPos(playerid, X, Y, Z); // A coordenada pra onde ele tem que ser teletransportado ao sair do interior. } return 1; }
Espero que gostem, e se estiver mal explicado, desculpa, não sou muito bom em formular explicações e espero que tenha ajudado a quem está inciando agora.
Agora com as variáveis declaradas vamos fazer uma verificação com o Admin-Rcon para poder usar este comando!
Código PHP:
CMD:daradmin(playerid, params[]) { new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME]; if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!");
return 1; }
Agora vamos usar o "sscanf2" para verificar se o Autor do comando está digitando os valores certos!
o "d" é um valor numérico!
o "i" é um valor inteiro!
o "f" é valor float, ou seja um número decimal!
o "s" é uma String!
Agora vamos fazer a função que da a tag de admin ao jogador!
Código PHP:
CMD:daradmin(playerid, params[]) { new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME]; if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!"); if(sscanf(params, "dd", id, level)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daradmin [ID] [LEVEL]"); //FUNÇÃO GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME); GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME); format(strganhou, sizeof(strganhou), "O Admin %s te deu Admin Level %d!", nomedeu, level); format(strdeu, sizeof(strdeu), "Voce deu Admin Level %d para %s[%d]", level, nomeganhou, id); SendClientMessage(playerid, 0x00FF00FF, strdeu); SendClientMessage(id, 0x00FF00FF, strganhou); pInfo[id][Admin] = level; return 1; }
O GetPlayerName pega o Nick do Jogador e coloca em uma variável, no nosso caso e a nomeganhou e nomedeu!
O %s e %d é a mesma premissa do "s" e "d" mas ali formata a mensagem com os dados: id do jogador e o level!
Agora vamos fazer uma stock para Salvar os dados!
Código PHP:
stock SalvarDados(playerid) { new arquivo[40], pnome[MAX_PLAYER_NAME]; GetPlayerName(playerid, pnome, MAX_PLAYER_NAME); format(arquivo, sizeof(arquivo), "Contas/%s.ini", pnome); //Aqui nos formatamos o arquivo aonde será guardado a conta do nosso jogador!
if(!DOF2_FileExists(arquivo)) DOF2_CreateFile(arquivo) // Aqui nos verificamos se a conta do jogador existe, se não cria uma! DOF2_SetInt(arquivo, "Admin", pInfo[playerid][Admin]); DOF2_SaveFile(); return 1; // returna true }
Agora vamos Colocar a Função"DOF2_Exit();" e a SalvarDados no OnGameModeExit()
Código PHP:
public OnGameModeExit() { DOF2_Exit(); for(new i = 0; i < MAX_PLAYERS; i++) // Um loop para pegar todos os Jogador Onlines! { SalvarDados(i); // Salva os Dados de todos os Jogadores que estiverem Online! } return 1; }
E vamos colocar o SalvarDados no Nosso Comando também!
Código PHP:
CMD:daradmin(playerid, params[]) { new id, level, strganhou[256], strdeu[256], nomedeu[MAX_PLAYER_NAME], nomeganhou[MAX_PLAYER_NAME]; if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Você não tem autorização para usar este comando!"); if(sscanf(params, "dd", id, level)) return SendClientMessage(playerid, 0xFF0000FF, "Use /daradmin [ID] [LEVEL]"); //FUNÇÃO GetPlayerName(playerid, nomedeu, MAX_PLAYER_NAME); GetPlayerName(playerid, nomeganhou, MAX_PLAYER_NAME); format(strganhou, sizeof(strganhou), "O Admin %s te deu Admin Level %d!", nomedeu, level); format(strdeu, sizeof(strdeu), "Voce deu Admin Level %d para %s[%d]", level, nomeganhou, id); SendClientMessage(playerid, 0x00FF00FF, strdeu); SendClientMessage(id, 0x00FF00FF, strganhou); pInfo[id][Admin] = level; SalvarDados(id); //Salva os Dados do Jogador! return 1; }
Esse foi o tutorial, espero que vocês tenham gostado! Ainda estou me acostumando a esse novo fórum então foi bem simples esse tutorial