Всем привет:) помните когда заходите на Узбекистанский сервер НетВарс и когда регайтесь вы попадаете в одно помещение для регистрации игрока.
вот Мануал:
ко всем new
PHP код:
new Registers[MAX_PLAYERS];
в enum pinfo
В public OnPlayerConnect(playerid)
PHP код:
Registers[playerid] = 0;
PlayerInfo[playerid][pRegister] = 0;
В Setplayerpsawn или в OnPlayerSpawn
PHP код:
if(PlayerInfo[playerid][pRegister] == 0)//если игрок не зареган то он тут будет
{
SetPlayerPos(playerid,199.4385,-34.2033,1002.3040);//инт и кардинаты можете менят на свои
SetPlayerFacingAngle(playerid, 215.9720);
SetPlayerInterior(playerid,1);//
return true;
}
else if(PlayerInfo[playerid][pRegister] == 1)//если зареган то он тут будет
{
SetPlayerPos(playerid,892.5275,-2341.0383,1297.6882);//[ВАЖНО] место спавна меняете на свои
SetPlayerFacingAngle(playerid, 354.0569);//[ВАЖНО] у меня хз где не помню
SetPlayerInterior(playerid,0);//[ВАЖНО]
PlayerInfo[playerid][pInt] = 0;//[ВАЖНО]
}
public OnPlayerRegister(playerid, password[])
PHP код:
ini_setInteger(File,"Register",PlayerInfo[playerid][pRegister]);
public SavessAkk(playerid,string3[])
PHP код:
ini_setInteger(File,"Register",PlayerInfo[playerid][pRegister]);
public OnPlayerLogin(playerid,password[])
PHP код:
ini_getInteger(File,"Register",PlayerInfo[playerid][pRegister]);
public OnPlayerCommandText(playerid, cmdtext[])
PHP код:
else if(strcmp(cmd, "/unregister",true) == 0 || strcmp(cmd, "/unreg",true) == 0 )////чтоб зарегать
{
if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, "Вы не уполномочены использовать эту команду!");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /unregister [id]");
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if(PlayerInfo[giveplayerid][pRegister] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Этот игрок Зареган!");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
SendClientMessage(playerid, COLOR_YELLOW, "Игрок был зарегистрирован!");
new arank[64];
arank = IsAdminName(PlayerInfo[playerid][pHelper],PlayerInfo[playerid][pAdmin]);
format(string, sizeof(string), "%s %s зарегистрировал вас .", arank, sendername);
SendClientMessage(giveplayerid, COLOR_REDD, string);
PlayerInfo[giveplayerid][pRegister] = 1;
SpawnPlayer(giveplayerid);
}
}
return true;
}
else if(strcmp(cmd, "/register", true) == 0)////для подачи заявки
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pRegister] == 1) return SendClientMessage(playerid,COLOR_LIGHTRED,"Вы не можете использовать эту команду !");///проверка
if(Registers[playerid] == 1) return SendClientMessage(playerid,COLOR_LIGHTRED,"Ждите не сколько секунд !");///проверка таймера
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "[Внимание]: {BEF574}[Регистрация игрока] (( %s[%d] ))", sendername, playerid);///надписи можете менять
ABroadCast(COLOR_REDD,string,1);
SendClientMessage(playerid, COLOR_YELLOW, "Ваш запрос отправлен администрации! Ждите....");
SetTimerEx("WaiteRegister",30000,0,"d",playerid);///30000 это 30сек , он может каждую 30 сек подават заявку
Registers[playerid] = 1;
}
return true;
}
public onplayerlogin
есть такая строка >>>> if(PlayerInfo[playerid][pReg] == 0) после него внизу пишем
PHP код:
PlayerInfo[playerid][pMuteTime] = 50000;///чтоб у игрока был молчанка
PlayerInfo[playerid][pMuted] = 1;
public GzCheck() или ежесекундный таймер , это чтоб игрок не сбежал из комнаты регистрации
PHP код:
if(gPlayerLogged[i] == 1)///проверка игрок залогинился ли
{
if (PlayerInfo[i][pRegister] == 0)//если игрок не реган
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(i, X, Y, Z);
if (Z < 900)/// его кардинаты 'Z' если низко с 900 будет то он кикается
{/// так как все интереры на небе
new plname[MAX_PLAYER_NAME];
GetPlayerName(i, plname, MAX_PLAYER_NAME);
format(string, sizeof(string), "[Античит]: %s был кикнут за использования чит телепорт", plname);
SendClientMessageToAll(COLOR_LIGHTRED, string);
SendClientMessage(i, COLOR_LIGHTRED, "[Античит]: Вы были кикнуты за использования чит телепорт");
Kick(i);
}
}
}
В конец мода
PHP код:
forward WaiteRegister(playerid);////SetTimerEx это безопасный формат , не нагружает
public WaiteRegister(playerid)///конец таймера
{
Registers[playerid] = 0;
return true;
}
[ВАЖНО] где будет игрок находится во время регистрации , то это место сделайте Зел.Зоной . Чтоб они друг друга не убили
Автор - Crazy Town