SA-MP Forums Archive
2 Errors - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: 2 Errors (/showthread.php?tid=475086)



2 Errors - Tuntun - 11.11.2013

Код:
E:\Current server\18WoS\filterscripts\Lotto.pwn(210) : error 021: symbol already defined: "strtok"
E:\Current server\18WoS\filterscripts\Lotto.pwn(225) : error 047: array sizes do not match, or destination array is too small
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


2 Errors.
Код:
#include <a_samp>
#include <dini>

//--------|| Here you can easy change this ||--------//

#define LottoTime   	1 		//(number of minutes)
#define LottoPrice  	500
#define MAX_NUMBERS 	200

#define COLOR_GREY 			 0xAFAFAFAA
#define COLOR_ERROR 		 0x9ACD32AA
#define COLOR_WHITE 		 0xFFFFFFAA
#define COLOR_DBLUE 		 0x375FFFFF
#define COLOR_YELLOW 		 0xFFFF00AA

#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

forward Lotto(number);
forward LoadJackpot();
forward SaveJackpot();


new Jackpot;
new Timer;
new pLottoNumber[MAX_PLAYERS];

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Lottery System V 1.0 By Zero_Cool	   ");
	print("--------------------------------------\n");

	Timer = SetTimer("LottoShow", 1000*(LottoTime*60), 1);

	if(!fexist("Jackpot.ini"))
	{
	dini_Create("Jackpot.ini");
	dini_IntSet("Jackpot.ini","Jackpot",10000);
	return 1;
	}
	else
	{
	LoadJackpot();
	}
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

public OnPlayerConnect(playerid)
{
    pLottoNumber[playerid] = 0;
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	pLottoNumber[playerid] = 0;
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    dcmd(lotto,5,cmdtext);
    dcmd(setjackpot,10,cmdtext);
	return 0;
}
dcmd_setjackpot(playerid,params[])
{
if(IsPlayerAdmin(playerid))
{
new tmp[256], idx;
tmp = strtok(params, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_WHITE,"USAGE: /setjackpot [amount]");
return 1;
}
new amount = strval(tmp);
Jackpot = amount;
SaveJackpot();
return 1;
}
return 1;
}
dcmd_lotto(playerid,params[])
{
	 	new tmp[256], idx;
	 	new string[256];
	 	tmp = strtok(params, idx);
	    if(IsPlayerConnected(playerid))
	    {
  			if(!strlen(tmp))
	  		{
			SendClientMessage(playerid, COLOR_WHITE,"USAGE: /lotto [number]");
			return 1;
			}
	        if(pLottoNumber[playerid] > 0)
	        {
	            SendClientMessage(playerid,COLOR_WHITE,"You already have a Lottery Ticket");
	            return 1;
	        }
	        if(GetPlayerMoney(playerid) < LottoPrice)
	        {
	            format(string,sizeof(string),"You need $%d for a Lottery Ticket !",LottoPrice);
	            SendClientMessage(playerid,-1, "You need {FF0000}$500{FFFFFF} for a Lottery Ticket !");
	            return 1;
	        }

	        new lottonr = strval(tmp);
	        for(new i;i<MAX_PLAYERS;i++)
			{
			if(pLottoNumber[playerid] == lottonr) return SendClientMessage(playerid, COLOR_ERROR,"That Number Already Used!");
			}
			if(lottonr < 1 || lottonr > MAX_NUMBERS) {format(string, sizeof(string), "Lottery Number not below 1 or above %d !",MAX_NUMBERS); SendClientMessage(playerid, COLOR_GREY,string); return 1; }
			format(string, sizeof(string), "You bought a Lottery Ticket with number:{FF0000} %d{FFFFFF},Current Jackpot:{FF0000} %d", lottonr,Jackpot);
			SendClientMessage(playerid, COLOR_WHITE, string);
			GivePlayerMoney(playerid, - LottoPrice);
			pLottoNumber[playerid] = lottonr;
	    }
	    return 1;
	}

public Lotto(number)
{
	new string[256];
	new winner[MAX_PLAYER_NAME];
	format(string, sizeof(string), "{FF0000}Lottery News:{FFFFFF} Today the Winning Number has fallen on: %d.", number);
    SendClientMessageToAll(COLOR_WHITE, string);
    for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
		    if(pLottoNumber[i] > 0)
		    {
			    if(pLottoNumber[i] == number)
			    {
			        GetPlayerName(i, winner, sizeof(winner));
					GivePlayerMoney(i, Jackpot);
					format(string, sizeof(string), "{FF0000}Lottery{FFFFFF} News: %s has won the Jackpot of $%d with his/her Lottery Ticket.", winner, Jackpot);
					SendClientMessageToAll(COLOR_DBLUE, string);
					format(string, sizeof(string), "*You have Won $%d with your Lottery Ticket.", Jackpot);
					SendClientMessage(i, COLOR_YELLOW, string);
					format(string,256,"~w~You have Won ~g~$%d",Jackpot);
					GameTextForPlayer(i,string,10000,4);
			    }
			    else
			    {
			        SendClientMessage(i, COLOR_WHITE, "* You haven't won with your Lottery Ticket this time.");
			    }
			}
   			pLottoNumber[i] = 0;
		}
 	}
  	new rand = randomEx(1000,200000);
  	Jackpot += rand;
  	SaveJackpot();
  	format(string, sizeof(string), "{FF0000}Lottery News:{FFFFFF} The Jackpot has been raised to $%d.", Jackpot);
	SendClientMessageToAll(COLOR_DBLUE, string);
	return 1;
}
new time;
forward LottoShow();
public LottoShow()
{
new str[256];
format(str,256,"~g~/Lotto (1 - %d)~n~~g~Jackpot %d",MAX_NUMBERS,Jackpot);
GameTextForAll(str,10000,3);
KillTimer(Timer);
time = SetTimer("LottoWiner",15000,1);
return 1;
}
forward LottoWiner();
public LottoWiner()
{
	new string[256];
	KillTimer(time);
	format(string, sizeof(string),"{FF0000}Lottery News:{FFFFFF} Lottery Election Started.");
	SendClientMessageToAll(COLOR_DBLUE, string);
	new rand = randomEx(1,MAX_NUMBERS);
	if(rand < MAX_NUMBERS - 3) { rand += 3; }
	Timer = SetTimer("LottoShow", 1000*(LottoTime*60), 1);
	Lotto(rand);

}

public LoadJackpot()
{
new file[128];
format(file,sizeof(file),"Jackpot.ini");
Jackpot = dini_Int(file,"Jackpot");
return 1;
}

public SaveJackpot()
{
new file[128];
format(file,sizeof(file),"Jackpot.ini");
dini_IntSet(file,"Jackpot",Jackpot);
return 1;
}

//-----------|| By ****** ||---------------||
stock randomEx(minnum = cellmin, maxnum = cellmax) return random(maxnum - minnum + 1) + minnum;

stock 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;
}



Re: 2 Errors - NeMoK - 11.11.2013

Try to remove from your code
pawn Код:
stock 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;
}