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
Bom essa gm funciona no android não foi feita por mim apenas resolvi bugs quando era script do nextday mais eles não deixaram o servidor mais online então ta ae a gm para quem esta querendo abrir servidor para pc tanto para android.