Szerző Téma: Százalék levonás, halál után, hiba.  (Megtekintve 1117 alkalommal)

Nem elérhető Klmos

Százalék levonás, halál után, hiba.
« Dátum: 2013. március 10. - 00:12:40 »
0 Show voters
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

Nem elérhető BackUP

  • 908
    • Profil megtekintése
Százalék levonás, halál után, hiba.
« Válasz #1 Dátum: 2013. március 10. - 07:49:39 »
0 Show voters
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 >

Nem elérhető Klmos

Százalék levonás, halál után, hiba.
« Válasz #2 Dátum: 2013. március 10. - 09:23:26 »
0 Show voters
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. ;)

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Százalék levonás, halál után, hiba.
« Válasz #3 Dátum: 2013. március 10. - 11:23:06 »
+1 Show voters
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
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Klmos

Százalék levonás, halál után, hiba.
« Válasz #4 Dátum: 2013. március 10. - 11:39:09 »
0 Show voters
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?

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Százalék levonás, halál után, hiba.
« Válasz #5 Dátum: 2013. március 10. - 15:47:56 »
+1 Show voters
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...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Nem elérhető Klmos

Százalék levonás, halál után, hiba.
« Válasz #6 Dátum: 2013. március 10. - 21:50:40 »
0 Show voters
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

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal