GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Klmos - 2013. március 10. - 00:12:40

Cím: Százalék levonás, halál után, hiba.
Írta: Klmos - 2013. március 10. - 00:12:40
Sziasztok!
Segítséget szeretnék kérni az alábbi kód befejezésében.
 
public OnPlayerDeath(playerid, killerid, reason)
{
if(pInfo[playerid][lvl] < 30)
{
pInfo[playerid][xp]*=0.9;
}
return 1;
}

 
A lényege az lenne, hogyha a játékos szintje 30. szint alatt van, és meghal, akkor 10%-át vegye el az xpjének azaz maradjon meg a 90%-a.
A kódra semmi hibát nem ír viszont a valóságban nem mûködik. 10 xp-m van meghalok és a helyzet változatlan ugyan úgy 10 xp-m marad.
Elõre is köszönöm a válaszokat :)
Üdv. Klmos
Cím: Százalék levonás, halál után, hiba.
Írta: BackUP - 2013. március 10. - 07:49:39
Idézetet írta: Klmos date=1362870760\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"34658\" data-ipsquote-contentclass=\"forums_Topic
Sziasztok!
Segítséget szeretnék kérni az alábbi kód befejezésében.
 
public OnPlayerDeath(playerid, killerid, reason)
{
if(pInfo[playerid][lvl] < 30)
{
pInfo[playerid][xp]*=0.9;
}
return 1;
}

 
A lényege az lenne, hogyha a játékos szintje 30. szint alatt van, és meghal, akkor 10%-át vegye el az xpjének azaz maradjon meg a 90%-a.
A kódra semmi hibát nem ír viszont a valóságban nem mûködik. 10 xp-m van meghalok és a helyzet változatlan ugyan úgy 10 xp-m marad.
Elõre is köszönöm a válaszokat :)
Üdv. Klmos
 
Nézd csak meg a kódot. Segítek: Még azthiszem másodikban tanultam: \"A kacsa csõre mindig a nagyobb felé néz\".
azaz x<y - nál az x a nagyobb.
Akkor érted már a hibát?



if(pInfo[playerid][lvl] < 30)

 
helyett:
 
if(pInfo[playerid][lvl] > 30)

 
Azaz: < helyett >
Cím: Százalék levonás, halál után, hiba.
Írta: Klmos - 2013. március 10. - 09:23:26
Idézetet írta: BackUP date=1362898179\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"34658\" data-ipsquote-contentclass=\"forums_Topic
Nézd csak meg a kódot. Segítek: Még azthiszem másodikban tanultam: \"A kacsa csõre mindig a nagyobb felé néz\".
azaz x<y - nál az x a nagyobb.
Akkor érted már a hibát?



if(pInfo[playerid][lvl] < 30)

 
helyett:
 
if(pInfo[playerid][lvl] > 30)

 
Azaz: < helyett >
 


a játékos szintje 30. szint alatt van[/quote]
Segítek. Általános Iskola 1. osztályában kezdtünk el tanulni szöveg értést. Ha 30 alatt van akkor kisebb mint harminc. ;)
Cím: Százalék levonás, halál után, hiba.
Írta: Kovacs_Richard - 2013. március 10. - 11:23:06
Ha egy int-et beszorzol egy float-al akkor float értéket kapsz !
( még ha egész szám is jön ki akkor is float típus ! pl: 9.0 )
 
pInfo[playerid][xp]*=0.9;

 
helyett:
 
pInfo[playerid][xp] = floatround((pInfo[playerid][xp]*0.9), floatround_ceil);

 
http://wiki.sa-mp.com/wiki/Floatround
Cím: Százalék levonás, halál után, hiba.
Írta: Klmos - 2013. március 10. - 11:39:09
Idézetet írta: Kovacs_Richard date=1362910986\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"34658\" data-ipsquote-contentclass=\"forums_Topic
Ha egy int-et beszorzol egy float-al akkor float értéket kapsz !
( még ha egész szám is jön ki akkor is float típus ! pl: 9.0 )
 
pInfo[playerid][xp]*=0.9;

 
helyett:
 
pInfo[playerid][xp] = floatround((pInfo[playerid][xp]*0.9), floatround_ceil);

 
http://wiki.sa-mp.com/wiki/Floatround
 
Köszönöm a segítséget. Bár átírtam a kódomba a sort, és megint csak hiba nélkül lefut a complier, de IG meghalok van 10 xp-m ügye annak a 90 %-a az 9 xp, de még mindig kereken 10 db xpm marad. Miért?
Esetleg más ötlet, hogy írjam meg?
Cím: Százalék levonás, halál után, hiba.
Írta: Kovacs_Richard - 2013. március 10. - 15:47:56
new x = 10;
x = floatround((x*0.9), floatround_ceil);
printf(\"x:%d\",x);

 
nekem ez a kód a végén 9-et ír ki...
Cím: Százalék levonás, halál után, hiba.
Írta: Klmos - 2013. március 10. - 21:50:40
Na sikerült megoldanom, a hiba egy olyan részbe volt, amit nem másoltam be. Viszont, ha elõbb észre is veszem a problémát a számolással az én módomon lett volna baj.
Köszönöm a segítséget. Kovács Richard -nak ment a jelecske :D