Szavazás

Segitett ez a leirás?

Összes szavazó: 17

Szerző Téma: A GetPlayerHealth javitása  (Megtekintve 2284 alkalommal)

A GetPlayerHealth javitása
« Dátum: 2013. Január 26. - 12:45:39 »
0
Ha használtad már Pawnoban a GetPlayerHealth függvényt, valószinûleg tapasztaltad, hogy csak egy playerid paramétert kér, de aztán figyelmeztet, hogy nem adtál meg mindent. Ez azért van, mert a Pawno a legelsõ include-ból, tehát az \"a_npc.inc\" fájlból tölti be a funkciót, ami jó is lenne, ha NPC-ket csinálnál. Viszont amikor leforditod a szkriptet, akkor már a szkripthez szükséges \"a_samp.inc\"-et tölti be, amiben viszont két paramétert kér.
Szóval, hogy is lehet ezt megjavitani?
Régebben azt a megoldást gondoltam, hogy átnevezed az \"a_npc.inc\" fájlt úgy, hogy ABC-sorrendben az \"a_samp.inc\" fájl van elõl. Ez jó is, ha nem használsz NPC-ket. (Tehát akik nem használnak NPC-ket, használják ezt. Egyszerûbb. Csak ne felejtsék el, hogy emiatt nem megy az NPC-jük, ha esetleg késõbb használják.) Viszont, ha használsz, akkor megoldhatod azzal, hogy ugyanolyanra átirod azt a GetPlayerHealth-ot is, mint az eredeti.
Tehát megnyitod az \"a_npc.inc\" fájlt, megkeresed ezt a sort:
 
native GetPlayerHealth(playerid);

 
Majd átirod erre:
 
native GetPlayerHealth(playerid, &Float:health);

 
Ez lényegében megoldotta már a problémát, viszont ezzel elõjön még egy probléma: az NPC-knél is igy fogja kérni, de nem ez fog mûködni.
Ezért a fájl végére ird be ezt:
 

stock fix_GetPlayerHealth(playerid, &Float:health)
{
    health=GetPlayerHealth(playerid);
}
#if defined _ALS_GetPlayerHealth
#undef GetPlayerHealth
#else
#define _ALS_GetPlayerHealth
#endif
#define GetPlayerHealth fix_GetPlayerHealth

 
Ez készit egy funkciót \"fix_GetPlayerHealth\" néven, amiben két paraméter van, majd törli az eredeti funkciót, és berakja ezt helyette.
Ezután az összes NPC-s szkriptedben át kell irni a GetPlayerHealth(playerid)-t GetPlayerHealth(playerid, health)-ra (és természetesen a playerid helyére nem biztos, hogy konkrétan a \"playerid\" változó került, és a \"health\" változót pedig elõtte létre kell hozni a szkriptekben)
Remélem valakinek hasznos volt ez az információ, én itt nem találtam leirást róla, javitások lehet, hogy már tartalmazzák ezt, de legalább aki eddig nem tudta miért is csinálja/csinálta ezt, most megtudta (remélem).
« Utoljára szerkesztve: 2013. Szeptember 02. - 14:50:28 írta Benceee »

Nem elérhető Rupert

  • 2301
    • Profil megtekintése
A GetPlayerHealth javitása
« Válasz #1 Dátum: 2013. Január 26. - 14:52:46 »
0
[mod] Szép, hasznos leírás, ezért áthelyeztem. [/mod]

A GetPlayerHealth javitása
« Válasz #2 Dátum: 2013. Január 31. - 18:25:52 »
0
Idézetet írta: Rupert date=1359208366\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"33025\" data-ipsquote-contentclass=\"forums_Topic
Szép, hasznos leírás, ezért áthelyeztem.
 
Köszönöm. :)

Nem elérhető Sramm

  • 596
    • Profil megtekintése
A GetPlayerHealth javitása
« Válasz #3 Dátum: 2013. Március 06. - 19:27:11 »
0
Vagy az alap a_samp funkciót írod át.
 
stock Float:GetPlayerHealthEx(playerid)
{
new Float:hp;
GetPlayerHealth(playerid,hp);
return hp;
}
#define GetPlayerHealth GetPlayerHealthEx
public OnPlayerConnect(playerid)
{
new Float:h = GetPlayerHealthEx(playerid);
return 1;
}

A GetPlayerHealth javitása
« Válasz #4 Dátum: 2013. Március 08. - 19:02:39 »
0
Idézetet írta: Sramm date=1362594431\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"33025\" data-ipsquote-contentclass=\"forums_Topic
Vagy az alap a_samp funkciót írod át.
 
stock Float:GetPlayerHealthEx(playerid)
{
new Float:hp;
GetPlayerHealth(playerid,hp);
return hp;
}
#define GetPlayerHealth GetPlayerHealthEx
public OnPlayerConnect(playerid)
{
new Float:h = GetPlayerHealthEx(playerid);
return 1;
}

 

Persze, lehet úgy is.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal