rendered paste bodypublic OnPlayerCommandText(playerid, cmdtext[])
{
new string[MAX_STRING];
new cmd[256], idx; cmd = strtok(cmdtext,idx);
if(strcmp(cmdtext,"/selldrink",true)==0) {
new giveplayerid;
new tmp2[256];
tmp2 = strtok(cmdtext,idx);
giveplayerid = strval(tmp2);
new temp[256], temp2[256]; temp = strtok(cmdtext,idx); temp2 = strtok(cmdtext,idx);
if (!strlen(temp) || !strlen(temp2) || !IsNumeric(temp) || (strval(temp) >= 1 && strval(temp) <= 4)) {
SendClientMessage(playerid, COLOR_GREY, "USAGE: /selldrink [item number] [id]");
SendClientMessage(playerid, COLOR_GREY, "Avalible_Drinks:");
SendClientMessage(playerid, COLOR_GREY, "1: Beer $5");
SendClientMessage(playerid, COLOR_GREY, "2: Vodka $10");
SendClientMessage(playerid, COLOR_GREY, "3: Whisky $50");
SendClientMessage(playerid, COLOR_GREY, "4: Wine $500");
return 1;
}
if(!IsNumeric(temp2)) {
if(id != -1) format(temp2,sizeof(temp2),"%d",id);
else SendClientMessage(playerid,COLOR_RED,"Error: Invalid ID.");
}
if(IsPlayerConnected(strval(temp2))) {
new ref[MAX_PLAYER_NAME];
GetPlayerName(strval(temp),ref,sizeof(ref));
if (strval(temp) == 1 && GetPlayerMoney(strval(temp2)) >= 5) {
GivePlayerMoney(giveplayerid,-5);
GivePlayerMoney(playerid,4);
SendClientMessage(playerid, COLOR_GREY, "1: Beer $5");
return 1;
}
if (strval(temp) == 2 && GetPlayerMoney(strval(temp2)) >= 10) {
GivePlayerMoney(giveplayerid,-10);
GivePlayerMoney(playerid,8);
SendClientMessage(playerid, COLOR_GREY, "2: Vodka $10");
return 1;
}
if (strval(temp) == 3 && GetPlayerMoney(strval(temp2)) >= 50) {
GivePlayerMoney(giveplayerid,-50);
GivePlayerMoney(playerid,40);
SendClientMessage(playerid, COLOR_GREY, "3: Whisky $50");
return 1;
}
if (strval(temp) == 4 && GetPlayerMoney(strval(temp2)) >= 500) {
GivePlayerMoney(giveplayerid,-500);
GivePlayerMoney(playerid,400);
SendClientMessage(playerid, COLOR_GREY, "4: Wine $500");
return 1;
}
else SendClientMessage(playerid,COLOR_RED,"Error: Invalid name or ID.!");
}
return 1;
}
if(strcmp(cmdtext, "/cuff", true) == 0) {
if(GetPlayerState(playerid) == 2) {
for(new i=0; i<MAX_PLAYERS; i++) {
if(GetPlayerState(i) == PLAYER_STATE_PASSENGER && GetDistanceBetweenPlayers(i,playerid) < 10) {
TogglePlayerControllable(i,0);
GameTextForPlayer(i, "~r~You have been cuffed", 3000, 4);
SendClientMessage(playerid, COLOR_BLUE, "You have cuffed the passenger, so he won't go anywhere.");
}
}
}
return 1;
}
if(strcmp(cmdtext, "/uncuff", true) == 0) {
if(GetPlayerState(playerid) == 2) {
for(new i=0; i<MAX_PLAYERS; i++) {
if(GetPlayerState(i) == PLAYER_STATE_PASSENGER && GetDistanceBetweenPlayers(i,playerid) < 10) {
TogglePlayerControllable(i,1);
GameTextForPlayer(i, "~g~You have been uncuffed", 3000, 4);
SendClientMessage(playerid, COLOR_BLUE, "You have uncuffed the passenger.");
}
}
}
return 1;
}
return 0;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
IsNumeric(const string[]) {
for (new i = 0, j = strlen(string); i < j; i++) if (string[i] > '9' || string[i] < '0') return 0;
return 1;
}
stock Float:GetDistanceBetweenPlayers(p1,p2)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
{
return -1.00;
}
GetPlayerPos(p1,x1,y1,z1);
GetPlayerPos(p2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}
stock GetClosestPlayer(playerid) {
new x,Float:dis,Float:dis2,player;
new pteam[MAX_PLAYERS];
player = -1;
dis = 99999.99;
for (x=0;x<MAX_PLAYERS;x++) {
if (x != playerid) {
dis2 = GetDistanceBetweenPlayers(x,playerid);
if (dis2 < dis && dis2 != -1.00 && pteam[x] == pteam[playerid]) {
dis = dis2;
player = x;
}
}
}
return player;
}