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: Keszeg - 2012. június 17. - 22:36:32

Cím: Ütéssel gyilkolás a OnPlayerKeyStateChange segítségével!
Írta: Keszeg - 2012. június 17. - 22:36:32
Üdv van egy kis gondom.
Azt csináltam hogyha az egyik csapat tagja üti a másik csapat tagját akkor veszítsen az életébõl az akit ütnek, és végül haljon meg.
Nos ez megvan és idáig mûködik is. Viszont nem teljesülnek azok a dolgok amiket akkor szeretnék hogy bekövetkezzenek, ha az ütött ember, (ez esetben a victimid) meghal, a playerid aki megölte pedig kapja a pontot, meg a változójához hozzálesz adva +1. Kérem valaki segítsen :confused:, itt a kód
 
   if(newkeys & KEY_FIRE) {
        if(gTeam[playerid] == TEAM_ZOMBIE) {
            if(GetPlayerWeapon(playerid) == 0) {
                new victimid = GetClosestPlayer(playerid);
                if(IsPlayerConnected(victimid)) {
          if(gTeam[victimid] == TEAM_HUMAN){
         if(GetDistanceBetweenPlayers(playerid,victimid) < 2) {
                        new Float:health;
                        GetPlayerHealth(victimid, health);
                        SetPlayerHealth(victimid, health - 8.0);
   if(GetPlayerHealth(victimid) == 0) {
   SetPlayerScore(playerid, GetPlayerScore(playerid) +10);
   GivePlayerMoney(playerid,15);
   PlayerInfo[playerid] [humankill] = PlayerInfo[playerid] [humankill] +1;
            }
            return 1;
                    }
                }
            }
        }
    }
Cím: Ütéssel gyilkolás a OnPlayerKeyStateChange segítségével!
Írta: CANNONN - 2012. június 17. - 23:25:20
A kódhoz szükséges az opsp include. Link: http://www.solidfiles.com/d/fa58211840/
 
#include opsp
public OnPlayerShootPlayer(shooter,target,Float:damage)
{
     new Float: elet;
     GetPlayerHealth(target, elet);
     SetPlayerHealth(target, elet -8);
     SetPlayerScore(shooter, GetPlayerScore(shooter) +10);
     PlayerInfo[shooter][humankill] = PlayerInfo[shooter][humankill]++;
     return 1;
}
Cím: Ütéssel gyilkolás a OnPlayerKeyStateChange segítségével!
Írta: Casamiro - 2012. június 17. - 23:31:59
0.3d verziótól van alapból OnPlayerGiveDamage callback, ami akkor hívódik meg, amikor egy játékos megsebez egy másikat.
Tehát:
 
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
     new Float: elet;
     GetPlayerHealth(damagedid, elet);
     SetPlayerHealth(damagedid, elet -8);
     SetPlayerScore(playerid, GetPlayerScore(playerid) +10);
     PlayerInfo[playerid][humankill] = PlayerInfo[playerid][humankill]++;
     return 1;
}
Cím: Ütéssel gyilkolás a OnPlayerKeyStateChange segítségével!
Írta: Keszeg - 2012. június 17. - 23:40:28
Köszönöm szépen mindenkinek!Holnap letesztelem.
 Szerintem a 2. megoldást használom a OnPlayerShootra loose identitation warningokat ír ki!