Will this command work?
#1

Can someone take a look at this code and see if it would work ( i am unable to test it alone...)



So this command should only work if a player is kidnapped. What this command does is, a player who is kidnapped could pay the kidnapper money for his release. Can someone look at the code and see if it works.

Код:
if(strcmp(cmd, "/ransom", true) == 0) {
  if(IsSpawned[playerid] == 0) {
	SendClientMessage(playerid, COLOR_ERROR, "You are dead. You cannot use this command");
  return 1;
  }
  if(cuffed[playerid] == 1) {
  SendClientMessage(playerid,COLOR_ERROR,"You are handcuffed. You cannot use this command");
  return 1;
  }
  if(isKidnapped[playerid] == 0) {
  SendClientMessage(playerid,COLOR_ERROR,"Only players who are kidnapped can use this command!");
  return 1;
  }
  tmp = strtok(cmdtext, idx);
  if(!strlen(tmp)) {
  SendClientMessage(playerid, COLOR_ERROR, "USAGE: /ransom (id) (amount)");
  return 1;
  }
  if(!IsNumeric(tmp)) {
  SendClientMessage(playerid, COLOR_ERROR, "USAGE: /ransom(id) (amount) ID Must be a number");
  return 1;
  }
  if(strval(tmp) == playerid) {
  SendClientMessage(playerid, COLOR_ERROR, "You cannot send cash to yourself");
  return 1;
  }
  giveplayerid = strval(tmp);
  if(!IsPlayerConnected(giveplayerid)) {
  format(szstring, sizeof(szstring), "ID (%d) is not an active player", giveplayerid);
  SendClientMessage(playerid, COLOR_ERROR, szstring);
  return 1;
  }
  new sendername[24];
  new receivername[24];
  GetPlayerName(playerid,sendername, 24);
	GetPlayerName(giveplayerid,receivername, 24);
  if(GetDistanceBetweenPlayers(playerid,giveplayerid) > 8) {
  format(szstring, sizeof(szstring), "%s(%d) Is not close enough. You cannot give cash to that player",receivername,giveplayerid);
  SendClientMessage(playerid, COLOR_ERROR, szstring);
  return 1;
  }
  tmp = strtok(cmdtext, idx);
  if(!strlen(tmp)) {
  SendClientMessage(playerid, COLOR_ERROR, "USAGE: /ransom (id) (amount)");
  return 1;
  }
  if(!IsNumeric(tmp)) {
  SendClientMessage(playerid, COLOR_ERROR, "USAGE: /ransom(id) (amount) Amount must be a number");
  return 1;
  }
  new cashsend = strval(tmp);
  if(cashsend <= 0 || cashsend >= 100001) {
  SendClientMessage(playerid, COLOR_ERROR, "USAGE: Minimum $1 / Maximum $100000");
  return 1;
  }
  if(GetPlayerMoney(giveplayerid) + cashsend >= 2000001) {
  SendClientMessage(playerid, 0xA9A9A9AA, "|_Cash Send Failed_|");
	format(szstring, sizeof(szstring), "%s(%d) Does not have enough pockets to carry that ammount of cash ",receivername,giveplayerid);
  SendClientMessage(playerid, 0x00C7FFAA, szstring);
  return 1;
  }
  if(GetPlayerMoney(playerid) >= cashsend) {
  GivePlayerMoney(playerid,-cashsend);
  GivePlayerMoney(giveplayerid,cashsend);
  SendClientMessage(playerid, 0xA9A9A9AA, "|_Cash Sent_|");
	format(szstring, sizeof(szstring), "You have sent $%d to %s(%d)",cashsend,receivername,giveplayerid);
  SendClientMessage(playerid, 0x00C7FFAA, szstring);
  SendClientMessage(giveplayerid, 0xA9A9A9AA, "|_Cash Received_|");
  SendClientMessage(giveplayerid, 0xA9A9A9AA, "If you think that this might be hacked cash then inform a Server Admin asap! /report (id) (reason)");
	format(szstring, sizeof(szstring), "%s(%d) Has sent you $%d",sendername,playerid,cashsend);
  SendClientMessage(giveplayerid, 0x00C7FFAA, szstring);
  format(szstring, sizeof(szstring), "Sender %s(%d) Has sent $%d to receiver %s(%d)",sendername,playerid,cashsend,receivername,giveplayerid);
  printf("%s",szstring);
	}
  else
  if(GetPlayerMoney(playerid) < cashsend) {
  SendClientMessage(playerid, 0xA9A9A9AA, "|_Cash Send Failed_|");
  format(szstring, sizeof(szstring), "You cannot afford to send $%d",cashsend);
  SendClientMessage(playerid, COLOR_ERROR, szstring);
  }

  return 1;
  }
Reply
#2

Please help.
Reply
#3

Anyone, i just need someone experienced to take a look
Reply
#4

Use dcmd
Indent with a readable style
Use [ pawn ] tags
Use something better than strtok
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)