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: solyom1992 - 2013. december 09. - 18:08:44

Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 18:08:44
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.
Cím: GetPlayerRatio(playerid)
Írta: Lucio - 2013. december 09. - 18:30:18
Funkción kívül van? Már mint a definiálás
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 18:31:23
igen mód leg elején az include-ok alatt
Cím: GetPlayerRatio(playerid)
Írta: Lucio - 2013. december 09. - 18:33:48
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
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 18:39:40

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;
Cím: GetPlayerRatio(playerid)
Írta: Lucio - 2013. december 09. - 18:43:23
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
Cím: GetPlayerRatio(playerid)
Írta: Dfoglalo - 2013. december 09. - 18:44:01
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...
Cím: GetPlayerRatio(playerid)
Írta: Lucio - 2013. december 09. - 18:46:15
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)
Cím: GetPlayerRatio(playerid)
Írta: Dfoglalo - 2013. december 09. - 19:06:52

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.
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 19:13:45
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
Cím: GetPlayerRatio(playerid)
Írta: Dfoglalo - 2013. december 09. - 19:24:07
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...
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 19:26:58

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]);
Cím: GetPlayerRatio(playerid)
Írta: Dfoglalo - 2013. december 09. - 19:32:34
Miért %0.2f? Miért nem %d vagy inkább %i? ???
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 19:37:54
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
Cím: GetPlayerRatio(playerid)
Írta: Dfoglalo - 2013. december 09. - 19:39:43
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.
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 19:42:21
ezért volt az elején a ratio float ként megadva....
Cím: GetPlayerRatio(playerid)
Írta: Dfoglalo - 2013. december 09. - 20:01:43
Csak akkor még nem igazán értettük, hogy mit szeretnél...
 
    
new halal = 0[MAX_PLAYERS];
new oles = 0[MAX_PLAYERS];
new Float:ratio[MAX_PLAYERS];
new string[128];
public OnPlayerDeath(playerid, killerid, reason)
{
       halal[playerid]++;
       oles[killerid]++;
       SetPlayerScore(killerid, oles);
       ratio[playerid] = oles[playerid]%halal[playerid];
       ratio[killerid] = oles[killerid]%halal[killerid];
       format(string, sizeof(string), \"~w~Az Ölés/Halál arányod %0.2f~n~~r~Rontottad!\", ratio[playerid]);
       GameTextForPlayer(playerid, string, 5000, 6);
       format(string, sizeof(string), \"~w~Az Ölés/Halál arányod %0.2f~n~~g~Javítottad!\", ratio[killerid]);
       GameTextForPlayer(playerid, string, 5000, 6);
       return 1;
}

 
Azt hiszem, hogy ez kéne neked.
É-é-én n-nem vagyok lo-ó lopós :D
Cím: GetPlayerRatio(playerid)
Írta: Lucio - 2013. december 09. - 20:02:43
Neeem vagy lopós csak én írtam meg az egészet. xD( Ez az én kódom úgy adogasd vegyed :D )
Cím: GetPlayerRatio(playerid)
Írta: solyom1992 - 2013. december 09. - 20:25:04
na m1 akkor... marad a régi módszer ami már mûködött egyszer