-
Ü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;
}
}
}
}
}
-
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;
}
-
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;
}
-
Köszönöm szépen mindenkinek!Holnap letesztelem.
Szerintem a 2. megoldást használom a OnPlayerShootra loose identitation warningokat ír ki!