- Регистрация
- 11 Янв 2013
- Сообщения
- 283
- Лучшие ответы
- 0
- Репутация
- 49
Так-с, коротко о командах и небольшое описание:
Вы покупаете бомбу, которую можно либо взорвать на себе (ком. "/boom"), либо заложить бомбу с задержкой в 1 минуту (ком. "/booms"). Кроме того, есть возможность взорвать бомбу детонатором (ком."/boomd"). Кстати, к персонажу прикрепляется обхект в виде бомбы.
Итак, первым делом, добавляем ко всем дефайнам:
После этого, ищем паблик "public OnGameModeInit". И вставляем туда следующий код:
Далее, нужно обнудять кол-во бомб при заходе на сервер:
в public OnPlayerConnect:
Теперь самое основное:
В public OnPlayerCommandText вписываем сами команды:
Небольшое дополнение к OnPlayerPickUpPickup:
Выводим диалог о покупке бомбы и добавляем персонажу объект:
В public OnDialogResponse:
Взрываем бомбу
в OnPlayerKeyStateChange:
следующий шаг- добавление в public OnPlayerUpdate строчки:
В любое место в моде (лучше куда-нибудь под конец), где все паблики, вставляем:
и где все Стоки:
Автор данного скрипта: Mr.Brooks
Вы покупаете бомбу, которую можно либо взорвать на себе (ком. "/boom"), либо заложить бомбу с задержкой в 1 минуту (ком. "/booms"). Кроме того, есть возможность взорвать бомбу детонатором (ком."/boomd"). Кстати, к персонажу прикрепляется обхект в виде бомбы.
Итак, первым делом, добавляем ко всем дефайнам:
PHP:
#define COLOR_RED 0xFFD9D991
new BombBuy, Bomba[MAX_PLAYERS],BombaOb[MAX_PLAYERS], BoomGotov[MAX_PLAYERS];
new OldWeapon[MAX_PLAYERS],WeaponRes[MAX_PLAYERS];
new Float:BombPos[MAX_PLAYERS][3];
forward BombTimer(playerid);
PHP:
BombBuy = CreatePickup(1239,23, -382.6660,-1426.5121,26.2410);
Create3DTextLabel("Покупка бомб",0x008080FF,-382.6660,-1426.5121,26.2410,40.0,0,1);
в public OnPlayerConnect:
PHP:
Bomba[playerid] = 0;
BoomGotov[playerid] = 0;
В public OnPlayerCommandText вписываем сами команды:
PHP:
if(strcmp(cmdtext, "/boom", true) == 0)
{
if(Bomba[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"У вас нет бомбы");
new boom;
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
while(boom++ < 10)
CreateExplosion(X+random(5),Y-random(5),Z,6,15.0);
SendClientMessage(playerid, COLOR_RED, "Вы взорвали себя и возможно убили людей");
GameTextForPlayer(playerid, "~w~Bomb ~r~Explode",5000,1);
RemovePlayerAttachedObject(playerid, 1);
Bomba[playerid] = 0;
return 1;
}
if(strcmp(cmdtext, "/booms", true) == 0)
{
if(Bomba[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"У вас нет бомбы");
GetPlayerPos(playerid, BombPos[playerid][0],BombPos[playerid][1],BombPos[playerid][2]);
SendClientMessage(playerid, COLOR_RED, "У вас есть 1 минута чтобы убежать");
GameTextForPlayer(playerid, "~w~Time Bomb ~y~Placed",5000,1);
BombaOb[BombaOb[playerid]] = CreateObject(1654, BombPos[playerid][0],BombPos[playerid][1]+0.25,BombPos[playerid][2]-0.9, 270.0,90.0,0.0, 150);
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,0,0,0,0,0);
Bomba[playerid] = 0;
SetTimerEx("BombTimer",1000*60,false,"i",playerid);
RemovePlayerAttachedObject(playerid, 1);
return 1;
}
if(strcmp(cmdtext, "/boomd", true) == 0)
{
if(Bomba[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"У вас нет бомбы");
GetPlayerPos(playerid, BombPos[playerid][0],BombPos[playerid][1],BombPos[playerid][2]);
BombaOb[BombaOb[playerid]] = CreateObject(1654, BombPos[playerid][0],BombPos[playerid][1]+0.25,BombPos[playerid][2]-0.9, 270.0,90.0,0.0, 150);
ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.0,0,0,0,0,0);
Bomba[playerid] = 0;
BoomGotov[playerid] = 1;
RemovePlayerAttachedObject(playerid, 1);
GivePlayerWeapon(playerid,40,1);
SendClientMessage(playerid,COLOR_RED,"Когда будете готовы , нажмите на детонатор для взрыва");
GameTextForPlayer(playerid, "~w~Detonator Bomb ~y~Placed",5000,1);
return 1;
}
if(strcmp(cmdtext, "/tp", true) == 0) return SetPlayerPos(playerid,-382.6660,-1426.5121,26.2410);
PHP:
if(pickupid == BombBuy)
{
if(Bomba[playerid] == 1) return SendClientMessage(playerid, COLOR_RED, "У вас уже есть бомба");
ShowPlayerDialog(playerid,8000,DIALOG_STYLE_MSGBOX,"Покупка бомбы","Хотите ли вы купить бомбу за 10000$ ?","Купить","Нет");
}
В public OnDialogResponse:
PHP:
if(dialogid == 8000 && response)
{
Bomba[playerid] = 1;
ShowPlayerDialog(playerid,1500,DIALOG_STYLE_MSGBOX,"Инфо","Вы приобрели бомбу , используйте /boom чтобы взорвать ее\nлибо /booms чтобы поставить таймер\nлибо /boomd что использовать детонатор","Ок","");
GivePlayerMoney(playerid,-10000);
SetPlayerAttachedObject(playerid,1,1654,5,0.300000,0.000000,0.000000,-18.000000,-93.000000,-177.000000,1.000000,1.000000,1.000000);
return 1;
}
в OnPlayerKeyStateChange:
PHP:
if(newkeys == KEY_FIRE && BoomGotov[playerid] == 1 && GetPlayerOldWeapon(playerid) == 40)
{
if(!IsPlayerInAnyVehicle(playerid))
{
new boom;
while(boom++ < 10)
CreateExplosion(BombPos[playerid][0]+random(5),BombPos[playerid][1]-random(5),BombPos[playerid][2],6,15.0);
SendClientMessage(playerid, COLOR_RED, "Бомба уничтожена");
GameTextForPlayer(playerid, "~w~Detonator Bomb ~r~Explode",5000,1);
DestroyObject(BombaOb[playerid]);
BoomGotov[playerid] = 0;
}
}
PHP:
SetOldWeapon(playerid);
PHP:
Ну и финальный шаг, создаем "детонатор", ну и возвращаем персонажу прошлое оружие:
PHP:
public BombTimer(playerid)
{
new boom;
while(boom++ < 10)
CreateExplosion(BombPos[playerid][0]+random(5),BombPos[playerid][1]-random(5),BombPos[playerid][2],6,15.0);
SendClientMessage(playerid, COLOR_RED, "Бомба уничтожена");
GameTextForPlayer(playerid, "~w~Time Bomb ~r~Explode",5000,1);
DestroyObject(BombaOb[playerid]);
return 1;
}
PHP:
stock SetOldWeapon(playerid)
{
new weaponid = GetPlayerWeapon(playerid);
if(weaponid != GetPlayerOldWeapon(playerid))
{
if(GetPlayerOldWeapon(playerid) != 40)
{
OldWeapon[playerid] = weaponid;
WeaponRes[playerid] = 0;
}
else
{
WeaponRes[playerid] ++;
if(WeaponRes[playerid] >= 3)
{
OldWeapon[playerid] = weaponid;
WeaponRes[playerid] = 0;
}
}
}
return true;
}
stock GetPlayerOldWeapon(playerid)
{
return OldWeapon[playerid];
}
Автор данного скрипта: Mr.Brooks