GetPlayerRatio(playerid)

Indította solyom1992, 2013. december 09. - 18:08:44

Előző téma - Következő téma

solyom1992

Hi az lenne a kérdésem h erre vajon miért ír hibát és, hogy ez vajon így mûködõ képes ötlet-e?
célom ezzel, hogy letudjam kérni a ratiot egy változóban
kod:
 

stock GetPlayerRatio(playerid)
{
new Float:ratio;
new halal[MAX_PLAYERS];
if(PlayerInfo[playerid][Deaths] == 0)
{
halal[playerid] = 1;
}
else
{
halal[playerid]=PlayerInfo[playerid][Deaths];
}
ratio=GetPlayerScore(playerid)/halal[playerid];
return ratio;
}

 
hiba:
 

C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(952) : error 017: undefined symbol \"Deaths\"
C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(958) : error 017: undefined symbol \"Deaths\"
C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(961) : warning 213: tag mismatch
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
2 Errors.

 
u.i.: mielõtt azt mondja valaki h nincs definiálva a Deaths annak mondom h definiálva van a mód elején.

Lucio

Funkción kívül van? Már mint a definiálás

solyom1992

igen mód leg elején az include-ok alatt

Lucio

Akkor viszont nem tudom.. Ugyanúgy írtad le? Mert nekem is volt már olyan, hogy létrehoztam, de nem úgy írtam le ahogyan létrehoztam

solyom1992

#4

enum pInfo
{
deaths,
Tk,
Admin
}
new PlayerInfo[MAX_PLAYERS][pInfo];
stock GetPlayerRatio(playerid)
{
new Float:ratio;
new halal[MAX_PLAYERS];
if(PlayerInfo[playerid][Deaths] == 0)
{
halal[playerid] = 1;
}
else
{
halal[playerid]=PlayerInfo[playerid][Deaths];
}
ratio=GetPlayerScore(playerid)/halal[playerid];
return ratio;
}

 

Dupla hozzászólás automatikusan összefûzve. ( 2013. december 09. - 18:42:24 )

valóban elnéztem kis \"D\" betû helyett nagyot irtam de akkor is marad még 1 hiba ez:
 

C:\\Users\\Sanyi\\Desktop\\samp cuccok\\szerverek\\xsamp\\gamemodes\\PLGV4.0.pwn(961) : warning 213: tag mismatch
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase
 
1 Warning.
abban a sorban ez van:
return ratio;

Lucio

Az enumba kis betûvel írtad a deaths -t de a függvényhez Deaths -t írtál.. Kis és nagybetû is számít

Dfoglalo

#6
Figyelj a kis- és nagybetûkre. A ratio elé pedig nem kell Float, ha egyszer intként kezeled.. Amúgy erre van külön téma is...

Lucio

A tag mismatch azt jelenti, hogy rossz formátumú. Tehát itt ahogy Dfoglalo írta töröld ki a Float-ot, mert az lebegõpontos változó.(pl.: 3,14)

Dfoglalo

OFF

A tag mismatch azt jelenti, hogy rossz formátumú. Tehát itt ahogy Dfoglalo írta töröld ki a Float-ot, mert az lebegõpontos változó.(pl.: 3,14)
 
[/quote]
Szerintem egyzserûbb valós számnak hívni :D Habár itt SAMP-on tényleg lebegõpontosnak szokás hívni.


Amúgy ez a cucc mi a s*@rra jó? ???
Látom nagyon kezdõ vagy. Máskor a kiemelt mában kérdezz errort, valamint ha ráguglizol, azonnal kidobja a megoldást... A kis- és nagybetûkre pedig figyelj oda! Float pedig akkor kell, ha pl. egy koordinátát tárolsz el egy változóba. Te most sima számot, integert adsz értekül a változóhoz, nem pedig floatot.

solyom1992

#9
na most hibát nem ír de nem is jelenik meg a ratio a textdrawban :/
ha az \"Amúgy ez a cucc mi a s*@rra jó? ???\"-t erre a kódra értetted az lenne a célom ezzel h úgy letudjam kérni a ratiót mint pl a pinget a GetPlayerPing(playerid)-el

Dfoglalo

#10
Másold be a textdrawos részt is.
Elemeztem...
 

stock GetPlayerRatio(playerid)
{
       new ratio; // Létrehozol egy ratio nevû változót
       new halal[MAX_PLAYERS]; //  Meg egy halalt is
       if(PlayerInfo[playerid][Deaths] == 0) // Ha a deaths egyenlõ 0-val
       {
               halal[playerid] = 1; // A halalt beállítod 1-re
       }
       else // De ha nem
       {
               halal[playerid]=PlayerInfo[playerid][Deaths]; // Akkor beállítod a halal változó érteket annyira, amennyi a deaths változó érteke
       }
       ratio=GetPlayerScore(playerid)/halal[playerid]; // Majd lekérdezed a játékos pontját, amit elosztasz a halal változó ertékével, és az eredményt megadod a ratio változó értékeként
       return ratio; // Visszatérsz a ratioval
}

 
WTF?!
Na mindegy, a te dolgod... Én abban segítek, amiben kéred. Az már másik történet, hogy hiba nélkül milyen eredmény jön ki, ami mégis hibás, na mindegy...

solyom1992

#11

onplayer conect alatt:
       rat[playerid] = TextDrawCreate(454.000000, 437.000000, \"~g~RATIO:0.00\");
TextDrawBackgroundColor(rat[playerid], 255);
TextDrawFont(rat[playerid], 1);
TextDrawLetterSize(rat[playerid], 0.500000, 1.000000);
TextDrawColor(rat[playerid], -1);
TextDrawSetOutline(rat[playerid], 1);
TextDrawSetProportional(rat[playerid], 1);
TextDrawHideForPlayer(playerid,rat[playerid]);
spawnnál és halálnál:
new TD7[30];
format(TD7,sizeof(TD7),\"~g~RATIO:%0.2f\",GetPlayerRatio(playerid));
TextDrawHideForPlayer(playerid,rat[playerid]);
TextDrawSetString(rat[playerid],TD7);
TextDrawShowForPlayer(playerid,rat[playerid]);

Dfoglalo

Miért %0.2f? Miért nem %d vagy inkább %i? ???

solyom1992

mivel mindenhol így volt megadva mivel a ratió igy néz ki mindenhol Ratio:0.00
pl: Ladminban igy van:
Ratio: %0.2f\", Float:PlayerInfo[player1][Kills]/Float:PlayerInfo[player1][Deaths])
ami a játékban igy néz ki Ratio:0.00

Dfoglalo

#14
De amivel visszatérsz, az továbbra is int, nem float... Akkor miért valós számot akarsz kiiratni? Vagy ha valóssat ajarsz kiírni, akkor mindent floatnak adj meg elõtte is.
A téma legelején is igazán mondhattad volna, hogy egy valós számot szeretnél kiírni, és akkor nem a float eltûntetésére mentünk volna a hibaüzenetbõl adódóan...
Mostmár legalább tudjuk, hogy pontosan mit is szeretnél.