- Регистрация
- 17 Авг 2011
- Сообщения
- 483
- Лучшие ответы
- 0
- Репутация
- 161
Доброе всем время суток.На всех рп серверах есть МП(конкурсы ивенты итд), чтоб тп на МП , восновном все люди пишут в репорт свой ид но я сделал иначе!
для начало содаем enum для тп
затем создаем команду чтоб открыть/закрыть телепорт у нас будет /ivent
идем в Public OnPlayerCommandText
чтоб открыть тп надо написать так: /ivent [тип ивента от 1 до 10][радиус от 1 до 10][дать оружие1/0][зароморить1/0] .
чтоб закрыть тп пишем /ivent 0 0 0 0!
____________________________________
Дальше суем это в конец мода!
и теперь идем в public OnPlayerText (это нужно чтоб если ты написал в чат свой ид то ты будешь тп!)
чтоб тп надо писать свой ид не в ooc чат а в обычный (глобальный)
автор: хз
от + не откажусь)
для начало содаем enum для тп
PHP:
enum IMPEnum
{
IMPID,
IMPType, // тип ивента,если 0 то ивент отключен
IMPRW, // конфисковывать ли оружие?
IMPFreeze, // замораживать ли игроков?
IMPGunID, // оружие
IMPAmmo, // патроны к оружию
IMPCar, // модель машины если 0 = ент
Float:IMPPosX, // позиция X
Float:IMPPosY, // позиция Y
Float:IMPPosZ, // позиция Z
IMPInt, // интерьер
IMPObjInt, // интерьер обьектов
IMPPosR // радиус по XY
}
new IMP[IMPEnum];
идем в Public OnPlayerCommandText
PHP:
if(strcmp(cmd, "/ivent", true) == 0 || strcmp(cmd, ".шмуте", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] == 2 || PlayerInfo[playerid][pAdmin] >= 3)
{
new type,radius,wr,stype[64];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, " Использование: /ivent [тип ивента не более 10] [радиус телепорта] (конф оружие 1/0) (заморозка 1/0)");
return 1;
}
type = strval(tmp);
if(type>10 || type<0)
{
SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
return 1;
}
if(type==0)
{
if(IMP[IMPType]==0)
{
SendClientMessage(playerid, COLOR_GRAD1, " Ивент не был начат!");
return 1;
}
IMP[IMPType]=0;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), " Объявление: ТП завершен! Контракт: [%d]%s Номер: %d ", playerid,sendername,PlayerInfo[playerid][pPnumber]);
BroadCast(TEAM_GROVE_COLOR,string);
return 1;
}
IMP[IMPType]=type;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
radius = 4;
}
else radius = strval(tmp);
if(radius>10 || radius<0) return SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
IMP[IMPPosR]=radius;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
wr=0;
}
else wr = strval(tmp);
if(wr<0 || wr >1)return SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
IMP[IMPRW]=wr;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
wr=0;
}
else wr = strval(tmp);
if(wr<0 || wr >1)return SendClientMessage(playerid, COLOR_GRAD1, " Недопустимое значение.");
IMP[IMPFreeze]=wr;
GetPlayerPos(playerid,IMP[IMPPosX],IMP[IMPPosY],IMP[IMPPosZ]);IMP[IMPInt]=GetPlayerInterior(playerid);
switch(type)// причина
{
case 1: format(stype,64, "Ивент: ДМ , после ТП сразу в линию!");
case 2: format(stype,64, "Ивент: Гонка , после ТП сразу по машинам и в Линию!");
case 3: format(stype,64, "Ивент: Дерби , после ТП сразу по машинам!");
case 4: format(stype,64, "Телепорт: к Мерии ");
case 5: format(stype,64, "Ивент: ТДМ, Террористы против Ментов!");
case 6: format(stype,64, "Телепорт: Осмотр местности для ТДМ, после ТП в Линию!");
case 7: format(stype,64, "Ивент: Гонка на Гидрах(В разрабоке) ");
case 8: format(stype,64, "Ивент: Скриптовый ДМ, после ТП сразу в Линию! ");
case 9: format(stype,64, "Ивент: Скриптовая гонка, после ТП сразу по машинам и в Линию! ");
case 10: format(stype,64, "Ивент: Скриптовый Дерби, после ТП сразу в Линию! ");
default: return 1;
}
// format(string, sizeof(string), " Администратор %s: [%s] Ипспользуйте: /toivent для телепорта.", sendername,stype);
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), " Объявление: %s,пишем ИД! Контракт: [%d]%s Номер: %d ", stype,playerid,sendername,PlayerInfo[playerid][pPnumber]);
BroadCast(TEAM_GROVE_COLOR,string);
}
}
if (!strcmp("/toivent", cmd,true))
{
ToIvent(playerid);
return 1;
}
чтоб закрыть тп пишем /ivent 0 0 0 0!
____________________________________
Дальше суем это в конец мода!
PHP:
ToIvent(playerid)
{
new carid;
if(PlayerInfo[playerid][pJailed]>0) SendClientMessage(playerid, COLOR_GREY, " Недопустимая комманда для заключенных.");
else
{
if(IMP[IMPType]>0)
{
if(IMP[IMPType]==4)//телепорт к мерии
{
SetPlayerPos(playerid,1498.0271,-1744.0148,13.5469);
SetPlayerFacingAngle(playerid,0);
SetPlayerInterior(playerid,0);
}
if(IMP[IMPType]==7) //телепорт на гидрах
{
SetPlayerPos(playerid,1214.2761,-903.8991,42.6997);
PutPlayerInVehicle(playerid,520,1);
LockCar(carid);
Gas[carid] = GasMax;
SetPlayerHealth(playerid,100);
SetPlayerVirtualWorld(playerid, 1);
}
if(IMP[IMPType]==9) //телепорт на гидрах
{
SetPlayerPos(playerid,PlayMission[kCP1][0],PlayMission[kCP1][1],PlayMission[kCP1][2]);
//PutPlayerInVehicle(playerid,520,1);
SetPlayerHealth(playerid,100);
SetPlayerVirtualWorld(playerid, 1);
}
else
{
SetPlayerPos(playerid,IMP[IMPPosX]+RandomEx(-IMP[IMPPosR],IMP[IMPPosR]),IMP[IMPPosY]+RandomEx(-IMP[IMPPosR],IMP[IMPPosR]),IMP[IMPPosZ]);
SetPlayerInterior(playerid,IMP[IMPInt]);
}
SetPlayerHealth(playerid,100);
if(IMP[IMPRW]) ResetPlayerWeapons(playerid);
if(IMP[IMPFreeze]) TogglePlayerControllable(playerid,0);
SendClientMessage(playerid, COLOR_GREY, " Тебя телепортировали на ивент.");
}
else SendClientMessage(playerid, COLOR_GRAD1, " Ивент отключен.");
}
}
RandomEx(min, max)
{
return random(max - min) + min;
}
PHP:
if(IMP[IMPType]!=0)
{
new id=ReturnUser(text);
if(id==playerid)
ToIvent(playerid);
return 0;
}
автор: хз
от + не откажусь)
Последнее редактирование: