Sebzés rendszer 1 error-ral

Indította zsolti125, 2016. december 21. - 16:13:39

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

zsolti125

Helló. Adott ez a szkript és egyszerüen nem tudom lecompile-olni egy hiba miatt. A hibakód: \"Titkos.pwn(1187) : error 025: function heading differs from prototype\" És ez a publicra mutat ez a hiba. Tudna valaki segíteni?
 

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(weaponid >= 22 && weaponid <= 34 && amount > 5)
{
    new wname[32];
    GetWeaponName(weaponid,wname,sizeof(wname));
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
   if(bodypart == 3) //Mellkaslövés
   {
      SendClientMessage(playerid,NARANCS,\"Meglőtték a mellkasod!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      cmd_me(playerid,\"golyót kapott a mellkasába.\");
   }
   if(bodypart == 4) //Haslövés
   {
      SendClientMessage(playerid,NARANCS,\"Meglőtték a hasad!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      cmd_me(playerid,\"golyót kapott a hasába.\");
   }
   if(bodypart == 5) //Bal kéz
   {
      SendClientMessage(playerid,NARANCS,\"Meglőtték a bal kezed!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      Kezenlove[playerid] = true;
      cmd_me(playerid,\"golyót kapott a bal kezébe..\");
   }
   if(bodypart == 6) //Jobb kéz
   {
      SendClientMessage(playerid,NARANCS,\"Meglőtték a jobb kezed!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      Kezenlove[playerid] = true;
      cmd_me(playerid,\"golyót kapott a jobb kezét.\");
   }
   if(bodypart == 7) //Bal láblövés + Anim
   {
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        SendClientMessage(playerid,NARANCS,\"Meglőtték a bal lábad, így összeestél!\");
        SetPlayerDrunkLevel(playerid,2500);
        SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
        Animban[playerid] = true;
        cmd_me(playerid,\"golyót kapott a bal lábába.\");
   }
   if(bodypart == 8) //Jobb láblövés + Anim
   {
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        SendClientMessage(playerid,NARANCS,\"Meglőtték a jobb lábad, így összeestél!\");
        SetPlayerDrunkLevel(playerid,2500);
        SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
        Animban[playerid] = true;
        cmd_me(playerid,\"golyót kapott a jobb lábába.\");
   }
   if(bodypart == 9) //Fejlövés (Azonnal megdöglik)
   {
       SetPlayerHealth(playerid,0);
       SendClientMessage(playerid,NARANCS,\"Fejbelőttek, így meghaltál!\");
   }
}
return 1;
}

 
 

divkn

Eljárás paraméterei eltérnek a prototípusától. Nézz utána OnPlayerTakeDamage forwardok után és javítsd ki azokat a paramétereket, amik eltérnek.

zsolti125

Esetleg kicsit segítenél benne? Ez a rész új nekem :D

RIP

Lehet hülyeséget írok, de nem az a baj, hogy az issuerid-t nem használta fel semmire?

zsolti125

Sajnos nem, hiába törlöm ki, marad az error.

wRt


zsoolt997

Nézd meg, hogy az a_samp.inc-ben hogyan néz ki az OnPlayerTakeDamage. Ha máshogy, akkor frissítsd le a függvénykönyvtáraidat.
 
 
 
Másik. Használsz valamilyen includeot?

divkn

Idézetet írta: RIP date=1482353587Lehet hülyeséget írok, de nem az a baj, hogy az issuerid-t nem használta fel semmire?
   


Az csak stock funkció esetén van és az pedig csak sima figyelmeztetés (warning 203), nem pedig hiba.
 
YSI függvénykönyvtáron kívül nem találtam mást, ahol használna OnPlayerTakeDamage hookot. Nem hiszem hogy a szkript használna YSI-t, de ha igen akkor jelezd kérlek, de előbb olvasd el azt, amit Zsolt írt.

zsolti125


#define narancs 0xFF4500FF
#define szurke 0xAFAFAFAA
#define piros2 0xff1500b5
#define lila 0xC26AFFFF
#include <a_samp>
#include <sscanf2>
#include <zcmd>
 
new Animban[MAX_PLAYERS];
new Kezenlove[MAX_PLAYERS];
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(weaponid >= 22 && weaponid <= 34 && amount > 5)
{
    new wname[32];
    GetWeaponName(weaponid,wname,sizeof(wname));
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
   if(bodypart == 3) //mellkaslövés
   {
      SendClientMessage(playerid,narancs,\"Meglőtték a mellkasod!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      cmd_me(playerid,\"golyót kapott a mellkasába.\");
   }
   if(bodypart == 4) //Haslövés
   {
      SendClientMessage(playerid,narancs,\"Meglőtték a hasad!\");
      SetPlayerDrunkLevel(playerid,2500);
      TextDrawShowForPlayer(playerid,Textdraw50);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      cmd_me(playerid,\"golyót kapott a hasába.\");
   }
   if(bodypart == 5) //Bal kéz
   {
      SendClientMessage(playerid,narancs,\"Meglőtték a bal kezed!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      Kezenlove[playerid] = true;
      cmd_me(playerid,\"golyót kapott a bal kezébe..\");
   }
   if(bodypart == 6) //Jobb kéz
   {
      SendClientMessage(playerid,narancs,\"Meglőtték a jobb kezed!\");
      SetPlayerDrunkLevel(playerid,2500);
      SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
      Kezenlove[playerid] = true;
      cmd_me(playerid,\"golyót kapott a jobb kezét.\");
   }
   if(bodypart == 7) //Bal láblövés + Anim
   {
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        SendClientMessage(playerid,narancs,\"Meglőtték a bal lábad, így összeestél!\");
        SetPlayerDrunkLevel(playerid,2500);
          TextDrawShowForPlayer(playerid,Textdraw50);
        SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
        Animban[playerid] = true;
        cmd_me(playerid,\"golyót kapott a bal lábába.\");
   }
   if(bodypart == 8) //Jobb láblövés + Anim
   {
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        ApplyAnimation(playerid, \"SWEET\", \"Sweet_injuredloop\", 4.1, 0, 1, 1, 1, 0, 1);
        SendClientMessage(playerid,narancs,\"Meglőtték a jobb lábad, így összeestél!\");
        SetPlayerDrunkLevel(playerid,2500);
        TextDrawShowForPlayer(playerid,Textdraw50);
        SetTimerEx(\"DrunkOff\",120000,false,\"d\",playerid);
        Animban[playerid] = true;
        cmd_me(playerid,\"golyót kapott a jobb lábába.\");
   }
   if(bodypart == 9) //Fejlövés (Azonnal megdöglik)
   {
       SetPlayerHealth(playerid,0);
       SendClientMessage(playerid,narancs,\"Fejbelőttek, így meghaltál!\");
   }
}
return 1;
}
forward DrunkOff(playerid);
public DrunkOff(playerid)
{
SetPlayerDrunkLevel(playerid,0);
return 1;
}
CMD:me(playerid,params[])
{
    new szoveg[256],szoveg2[256];
    if(sscanf(params,\"s[256]\",szoveg)) return SendClientMessage(playerid,-1,\"HASZNÁLAT: /me [Cselekvés]\");
    format(szoveg2,256,\"* %s *\",szoveg);
format(szoveg,256,\"* %s %s \",ULName(playerid),params);
SendClosestMessage(playerid,0xFF2C3C9C,szoveg);
    SetPlayerChatBubble(playerid, szoveg2, lila, 40.0, 10000);
return 1;
}
stock SendClosestMessage(playerid,color,message[])
{
new Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x2,y2,z2);
for(new i = 0; i < MAX_PLAYERS; i++)
{
   if(IsPlayerInRangeOfPoint(i,70,x2,y2,z2))
   {
       SendClientMessage(i,color,message);
   }
}
}
stock ULName(playerid)
{
new pname[24];
GetPlayerName(playerid,pname,24);
pname[strfind(pname,\"_\")] = \' \';
return pname;
}

 
Ez a teljes az anim rendszerhez. Olvasgattam hogy a YSI-ben át kell írni pár sort, de azok a sorok nem voltak benne. Lehetséges hogy frissítenem kellene? De hisz azt nem is használom, ezért nem tartottam fontosnak. És a többi dolognál a szkriptben működnek az include-ok szóval nem hiszem hogy baja lenne vele.

zsolti125

Megnéztem az s_samp inc-et, és abba lemaradt egy \"bodypart\" paraméter ami nekem a szkriptbe benne van. Beírtam lementettem, de így se engedi. Lehetséges hogy frissítenem kellene a függvénykönyvtáram? 

divkn

Nem ártana, ha a bodypart paraméter hiányzott, akkor több funkció is hiányozhat, ami 0.3z vagy nagyobb verzióknál megjelentek. Másik pedig valószínűleg az hogy több Pawno szerkesztőt használtál és egy teljesen más függvénykönyvtárt olvas, szóval miután frissítetted a pawno/includes mappában a fájlokat, akkor a pawno mappában megnyitod a pawno.exe-t és CTRL + O gomb megnyomása után betallózod a szkriptet és lefordítod.

zsolti125

Rendben frissítem, majd kiderül megoldódott-e. Köszönöm a segítségeket. :)

zsolti125

Rendben frissítem, majd kiderül megoldódott-e. Köszönöm a segítségeket. :)

zsolti125

Frissítve, egy mappába van minden és csak azt használom. De sajnos így is kapom ugyan ezt az error-t. DE a_samp-ban pedig megtalálható a \"bodypart\" paraméter így már nem is értem. :(

divkn

Küldj nekem egy TeamViewer felhasználót privát üzenetben és megnézhetem mi a probléma.