• Страница 1 из 1
  • 1
Модератор форума: AlexPPPP  
[ZCMD/CMD]Ограбление игрока
ZioSHikДата: Среда, 22.08.2012, 02:15 | Сообщение # 1
.::Offline::.
Авторитет
Сообщений: 831
[ 82 ]
Награды: 29

Статус отсутствует
Команда написана на ZCMD + SSCANF2.

Игроку, который грабит, дадим деньги вот так: узнаем сколько денег у того кого грабим, разделим на 100 и результат дадим грабителю.

В команде встроены все необходимые проверки, остальные добавите "на ваш вкус".

Code
cmd(rob,playerid, params[])
{
     if(sscanf(params,"d",params[0])) return SendClientMessage(playerid, -1, "Используй: /rob [id]");
     if(!IsPlayerConnected(params[0])) return SendClientMessage( playerid, -1, "Игрок не подключен!");
     if(GetPlayerState(params[0])!= PLAYER_STATE_ONFOOT || GetPlayerState(playerid)!= PLAYER_STATE_ONFOOT) return  SendClientMessage( playerid, -1, "Грабить можно только быдучи пиешеходом.");
     if(params[0] == playerid) return SendClientMessage(playerid, -1, "Нельзя грабить самого себя!");
     if(GetDistanceBetweenPlayers(playerid, params[0]) > 2) return SendClientMessage(playerid, -1, "Вы слишком далеко!");
     if(GetPlayerMoney(params[0]) <= 500) return SendClientMessage(playerid, -1, "У него и так мало денег.");
     new summa = (GetPlayerMoney(params[0]) / 100), String[256];
     GivePlayerMoney(params[0], -summa); GivePlayerMoney(playerid, summa);
     format(String, sizeof String, "Игрок: %s ограблен игроком: %s, на сумму: %d",PlayerName(params[0]),PlayerName(playerid),summa);
     SendClientMessageToAll(-1,String);
     return true;
}


Обычный вид:

Code
if ( strcmp ( cmd, "/rob", true ) == 0 )
{
     new tmp[128] = strtok(cmdtext, idx);
     new id = strval(tmp);
     if(!id) return SendClientMessage(playerid,0xFFFFFFAA,"Вы не ввели ИД!");
     if(!IsPlayerConnected(id)) return SendClientMessage( playerid, -1, "Игрок не подключен!");
     if(GetPlayerState(id)!= PLAYER_STATE_ONFOOT || GetPlayerState(playerid)!= PLAYER_STATE_ONFOOT) return  SendClientMessage( playerid, -1, "Грабить можно только быдучи пиешеходом.");
     if(id == playerid) return SendClientMessage(playerid, -1, "Нельзя грабить самого себя!");
     if(GetDistanceBetweenPlayers(playerid, id) > 2) return SendClientMessage(playerid, -1, "Вы слишком далеко!");
     if(GetPlayerMoney(id) <= 500) return SendClientMessage(playerid, -1, "У него и так мало денег.");
     new summa = (GetPlayerMoney(id) / 100), String[256];
     GivePlayerMoney(id, -summa); GivePlayerMoney(playerid, summa);
     format(String, sizeof String, "Игрок: %s ограблен игроком: %s, на сумму: %d",PlayerName(id),PlayerName(playerid),summa);
     SendClientMessageToAll(-1,String);
     return true;
}


Функция определяющая расстояние между игроками:

Code
stock GetDistanceBetweenPlayers(playerid, playerid2)
{
     new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z, Float:tmpdis;
     GetPlayerPos(playerid,x1,y1,z1); GetPlayerPos(playerid2,x2,y2,z2);
     tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
     return floatround(tmpdis);
}


Функция определения ника игрока:

Code
PlayerName(playerid)
{
     new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name));
     return name;
}


Автор: InFlueNce a.k.a AppLe
 
  • Страница 1 из 1
  • 1
Поиск:


Copyright www.SAMP-TEAM.com (c) 2009-2024
Правила использования материалов сайта

При копировании материалов из нашего сайта
ссылка на www.SAMP-TEAM.com обязательна!
Нарушители правил будут строго наказаны!

Хостинг от uCoz   
Для корректного просмотра мы рекомендуем Вам использовать браузер Google Chrome.
Яндекс.Метрика