Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4401 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, prašau rimtų skripterių pagalbos (kadangi pats nesuprantu).

Man reikia suskaičiuoti žmogaus visų daiktų svorį tokiu principu:

daiktosvoris * daiktų kiekis

mano dabartinis kodas:

stock countWeight(playerid)
{
	new Float:svoris = 0.0;
	for(new i = 0; i < _daiktai; i++)
	{
		if(pInfo[playerid][daiktai][i] > 0)
		{
			//svoris = floatadd(floatmul(getItemWeight(pInfo[playerid][daiktai][i]),pInfo[playerid][daiktai][i]),svoris);
			svoris = svoris + (getItemWeight(pInfo[playerid][daiktai][i])*pInfo[playerid][daiktai][i]);
			printf("%f",floatadd(floatmul(getItemWeight(pInfo[playerid][daiktai][i]),pInfo[playerid][daiktai][i]),svoris));
		}
	}
	printf("returninam %f",svoris);
	return _:svoris;
}

bandžiau daryti paprastai, su aritmetiniais ženklais (=+*), bandžiau žaisti ir su funkcijomis floatmul ir floatadd, vistiek gaunu tą patį.

 

Loguose gaunu tokių nesamonių:

[22:09:17] /+(-)*'*0.000000
[22:09:17] 1705907200.000000
[22:09:17] .-',/0',,.000000
[22:09:17] /+'.0),.,0.000000
[22:09:17] /'',).),.,.000000
[22:09:17] /'',).),.,.000000
[22:09:17] .0/(((*/,,.000000
[22:09:17] ./.,.,)0,0.000000
[22:09:17] ''))-,,0.000000
[22:09:17] /,((*+',+*.000000
[22:09:17] 2054018048.000000
[22:09:17] ./,0)('.,(.000000
[22:09:17] /+/*,.+./*.000000
[22:09:17] 1945218048.000000
[22:09:17] /.*++./**,.000000
[22:09:17] /(/.',0(0.000000
[22:09:17] returninam /.*++./**,.000000

Būsiu dėkingas už pagalbą.

(redaguota)

Paprasti ženklai turėtų veikti be problemų. Ištrauka iš float.inc: 

stock Float:operator*(Float:oper1, oper2)
    return floatmul(oper1, float(oper2));       /* "*" is commutative */
stock Float:countWeight(playerid)
{
	new Float:svoris = 0.0;
	for(new i = 0; i < _daiktai; i++)
	{
		if(pInfo[playerid][daiktai][i] > 0)
		{
			svoris = svoris + getItemWeight(pInfo[playerid][daiktai][i])*pInfo[playerid][daiktai][i];
		}
	}
	printf("returninam %f",svoris);
	return svoris;
}

Parodyk getItemWeight funkciją, išprintink abu juos prieš skaičiuodamas.

Redaguota , nario Justas Š.
  • Teigiamai 1

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

Paprasti ženklai turėtų veikti be problemų. Ištrauka iš float.inc: 

stock Float:countWeight(playerid)
{
	new Float:svoris = 0.0;
	for(new i = 0; i < _daiktai; i++)
	{
		if(pInfo[playerid][daiktai][i] > 0)
		{
			svoris = svoris + getItemWeight(pInfo[playerid][daiktai][i])*pInfo[playerid][daiktai][i];
		}
	}
	printf("returninam %f",svoris);
	return svoris;
}

Parodyk getItemWeight funkciją, išprintink abu juos prieš skaičiuodamas.

stock countWeight(playerid)
{
	new Float:svoris = 0.0;
	for(new i = 0; i < _daiktai; i++)
	{
		if(pInfo[playerid][daiktai][i] > 0)
		{
			svoris = svoris + getItemWeight(pInfo[playerid][daiktai][i])*float(pInfo[playerid][daiktai][i]);
			//printas
			printf("%d,		%f,		%f,",i,getItemWeight(pInfo[playerid][daiktai][i]),svoris); //DAIKTO ID ; getItemWeight ; naujas svoris.
		}
	}
	printf("Visu daiktu svoris - %f",svoris);
	return _:svoris;
}

Pabandžiau daikto kiekį paversti į float, taspats. Susidėjau printus kaip parodyta.

[22:29:58] 0,		0.079999,		2068295168.000000,
[22:29:58] 1,		0.050000,		1887100928.000000,
[22:29:58] 2,		5.000000,		/-.-*-()(,.000000,
[22:29:58] 3,		1.000000,		/,+)(+*+/..000000,
[22:29:58] 6,		1.000000,		/).*.'/'*(.000000,
[22:29:58] 8,		1.000000,		/(*0+0'*'*.000000,
[22:29:58] 9,		0.079999,		207781888.000000,
[22:29:58] 10,		1.000000,		'+(.-,*.,.000000,
[22:29:58] 15,		0.001000,		1618477056.000000,
[22:29:58] 21,		0.100000,		.0(.+)(,-..000000,
[22:29:58] 30,		0.079999,		/,.(*(,(.000000,
[22:29:58] 31,		5.000000,		1069940736.000000,
[22:29:58] 32,		0.004999,		..-.,(-(,.000000,
[22:29:58] 41,		5.000000,		860979200.000000,
[22:29:58] 42,		5.000000,		1945206784.000000,
[22:29:58] 43,		5.000000,		/.*++-.'.(.000000,
[22:29:58] Visu daiktu svoris - /.*++-.'.(.000000

getItemWeight funkcija:

 

stock getItemWeight(itemid)
{
new Float:w;
switch(itemid)
{
case 0: w = 0.1;
case 1: w = 5.0;
case 2: w = 0.08;
case 3: w = 0.005;
case 4: w = 0.05;
case 5: w = 1.0;
case 6: w = 0.8;
case 7: w = 0.001;
case 8: w = 0.005;
case 9: w = 0.003;
case 10: w = 0.6;
case 11: w = 1.0;
case 12: w = 3.0;
case 13: w = 0.1;
case 14: w = 0.4;
case 15: w = 5.0;
case 16: w = 1.0;
case 17: w = 5.0;
case 18: w = 20.0;
case 19: w = 0.4;
case 20: w = 0.5;
case 21: w = 0.7;
case 22: w = 0.7;
case 23: w = 0.7;
case 24: w = 0.05;
case 25: w = 0.03;
case 26: w = 0.02;
case 27: w = 0.5;
case 28: w = 0.03;
case 29: w = 0.01;
case 30: w = 0.2;
case 31: w = 1.0;
case 32: w = 1.0;
case 33: w = 0.1;
case 34: w = 0.4;
case 35: w = 5.0;
case 36: w = 1.0;
case 37: w = 5.0;
case 38: w = 20.0;
case 39: w = 0.4;
case 40: w = 0.5;
case 41: w = 4.0;
case 42: w = 1.0;
case 43: w = 3.0;
case 44: w = 2.0;
case 45: w = 4.0;
}
return _:w;
}

Pirmiausia, naudok mano countWeight. Kaip pastebėjai(tikiuosi) getItemWeight gražina visai ne tai ką turėtų. Negalima taip tiesiog panaikinti tag'o... Gražink normalų float:

stock Float:getItemWeight(itemid)
{
new Float:w;
switch(itemid)
{
case 0: w = 0.1;
case 1: w = 5.0;
case 2: w = 0.08;
case 3: w = 0.005;
case 4: w = 0.05;
case 5: w = 1.0;
case 6: w = 0.8;
case 7: w = 0.001;
case 8: w = 0.005;
case 9: w = 0.003;
case 10: w = 0.6;
case 11: w = 1.0;
case 12: w = 3.0;
case 13: w = 0.1;
case 14: w = 0.4;
case 15: w = 5.0;
case 16: w = 1.0;
case 17: w = 5.0;
case 18: w = 20.0;
case 19: w = 0.4;
case 20: w = 0.5;
case 21: w = 0.7;
case 22: w = 0.7;
case 23: w = 0.7;
case 24: w = 0.05;
case 25: w = 0.03;
case 26: w = 0.02;
case 27: w = 0.5;
case 28: w = 0.03;
case 29: w = 0.01;
case 30: w = 0.2;
case 31: w = 1.0;
case 32: w = 1.0;
case 33: w = 0.1;
case 34: w = 0.4;
case 35: w = 5.0;
case 36: w = 1.0;
case 37: w = 5.0;
case 38: w = 20.0;
case 39: w = 0.4;
case 40: w = 0.5;
case 41: w = 4.0;
case 42: w = 1.0;
case 43: w = 3.0;
case 44: w = 2.0;
case 45: w = 4.0;
}
return w;
}
  • Teigiamai 1

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4401 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...