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
|
|
| |