GTAMulti - GTA Türkiye

San Andreas Multiplayer => Yardım Talepleri => PAWN Kodlama => Kilitli Konular => Konuyu başlatan: Pottus420 - 12 Haziran 2017, 08:40:32

Başlık: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 12 Haziran 2017, 08:40:32
Öncelikle Herkese Merhaba

Sunucuma Anti GOD Sistemi Yaptım SKY.inc && weapon-config.inc ile Yaptım

Fakat Bazı Şeyler Yolunda Gitmedi Mesela SetPlayerHealth(playerid, -100); // Bu Fonksiyon Çalışmıyor

Yani Oyuncunun Herhangi Bir Yerine Ateş Ettigimimde İşliyor Fakat SetPlayerHealth(playerid, -100); Bu Fonksiyonun oldugu yerler çalışmıyor.

örn: /kill yazınca hatalı komut veriyor ya da adkill komutuyla oyuncu oldururkende hatalı komut diyor ve yüksek biryerden atladıgımızdada canımız gitmiyor.

Herkese Şimdiden Teşekkürler.

NOT:
forward SetHealth(playerid, Float:health);
public SetHealth(playerid, Float:health) {
    SetPlayerHealth(playerid, health);
}
Eklendi
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Excision - 12 Haziran 2017, 09:56:26
SetPlayerHealth(playerid, 0.0); olarak değiştir, dene bakalım işe yarıcak mı ?
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 12 Haziran 2017, 10:02:05
Alıntı yapılan: Excision - 12 Haziran 2017, 09:56:26

SetPlayerHealth(playerid, 0.0); olarak değiştir, dene bakalım işe yarıcak mı ?


Olmadı
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 18 Haziran 2017, 14:28:01
başka yardım edecek yokmu ?
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Backup - 19 Haziran 2017, 20:14:22
weapon-congif.inc 'e girip stock WC_SetPlayerHealth diye aratın ve tüm stocku aşağıdakiyle değiştirin.
stock WC_SetPlayerHealth(playerid, Float:health, Float:armour = -1.0)
{
if (playerid < 0 || playerid >= MAX_PLAYERS) {
return 0;
}

if (health <= 0) {
//s_PlayerArmour[playerid] = 0.0;
//s_PlayerHealth[playerid] = 0.0;

PlayerDeath(playerid, "KNIFE", "KILL_Knife_Ped_Die");

}   else {
if (armour != -1.0) {
s_PlayerArmour[playerid] = armour;
}

s_PlayerHealth[playerid] = health;
UpdateHealthBar(playerid, true);
}

return 1;
}   

Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 19 Haziran 2017, 20:53:54
Alıntı yapılan: _Backup - 19 Haziran 2017, 20:14:22

weapon-congif.inc 'e girip stock WC_SetPlayerHealth diye aratın ve tüm stocku aşağıdakiyle değiştirin.
stock WC_SetPlayerHealth(playerid, Float:health, Float:armour = -1.0)
{
if (playerid < 0 || playerid >= MAX_PLAYERS) {
return 0;
}

if (health <= 0) {
//s_PlayerArmour[playerid] = 0.0;
//s_PlayerHealth[playerid] = 0.0;

PlayerDeath(playerid, "KNIFE", "KILL_Knife_Ped_Die");

}   else {
if (armour != -1.0) {
s_PlayerArmour[playerid] = armour;
}

s_PlayerHealth[playerid] = health;
UpdateHealthBar(playerid, true);
}

return 1;
}   



Reis bi nevze işe yaradı fakat bi sıkıntı var yüksekten düşünce hala canımız gitmiyo ?
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 20 Haziran 2017, 00:30:51
Beyler Yüksek Biryerden düşünce can gitmiyo onu nasıl halletcez ?
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 20 Haziran 2017, 13:36:42
_Backup ve Excision'dan başka yardım edecek yokmu
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: _Code - 22 Haziran 2017, 00:36:58
PAWN Kodu: Seç
public OnPlayerDamageDone(playerid, Float:amount, issuerid, weapon, bodypart)
{

CallLocalFunction("OnPlayerDamaged", "ifiii", playerid,amount,issuerid,weapon,bodypart);


new idx = s_PreviousHitI[playerid];

s_PreviousHitI[playerid] = (s_PreviousHitI[playerid] - 1) % sizeof(s_PreviousHits[]);

// JIT plugin fix
if (s_PreviousHitI[playerid] < 0) {
s_PreviousHitI[playerid] += sizeof(s_PreviousHits[]);
}

s_PreviousHits[playerid][idx][e_Tick] = GetTickCount();
s_PreviousHits[playerid][idx][e_Issuer] = issuerid;
s_PreviousHits[playerid][idx][e_Weapon] = weapon;
s_PreviousHits[playerid][idx][e_Amount] = amount;
s_PreviousHits[playerid][idx][e_Bodypart] = bodypart;
s_PreviousHits[playerid][idx][e_Health] = GetLastDamageHealth(playerid);
s_PreviousHits[playerid][idx][e_Armour] = GetLastDamageArmour(playerid);

if (!IsHighRateWeapon(weapon)) {
DebugMessageAll("OnPlayerDamageDone(%d did %f to %d with %d on bodypart %d)", issuerid, amount, playerid, weapon, bodypart);

if (s_DamageTakenSound) {
PlayerPlaySound(playerid, s_DamageTakenSound, 0.0, 0.0, 0.0);

for (new i = 0; i < MAX_PLAYERS; i++) {
if (s_Spectating[i] == playerid && i != playerid) {
//PlayerPlaySound(i, s_DamageTakenSound, 0.0, 0.0, 0.0);
}
}
}

if (s_DamageGivenSound && issuerid != INVALID_PLAYER_ID) {
//PlayerPlaySound(issuerid, s_DamageGivenSound, 0.0, 0.0, 0.0);

for (new i = 0; i < MAX_PLAYERS; i++) {
if (s_Spectating[i] == issuerid && i != issuerid) {
// PlayerPlaySound(i, s_DamageGivenSound, 0.0, 0.0, 0.0);
}
}
}
}

if (issuerid != INVALID_PLAYER_ID) {
DamageFeedAddHitGiven(issuerid, playerid, amount, weapon);
}

DamageFeedAddHitTaken(playerid, issuerid, amount, weapon);

#if defined WC_OnPlayerDamageDone
WC_OnPlayerDamageDone(playerid, amount, issuerid, weapon, bodypart);
#endif
}

public OnPlayerDamage(&playerid, &Float:amount, &issuerid, &weapon, &bodypart)
{

return 1;

}



Bunu yaptıktan sonra onplayerdamage adlı publici kullanma onun yerine onplayerdamaged publicini kullan
Başlık: Ynt: Anti GOD'da Sıkıntı
Gönderen: Pottus420 - 22 Haziran 2017, 01:08:48
Alıntı yapılan: 2PAC_ - 22 Haziran 2017, 00:36:58

PAWN Kodu: Seç
public OnPlayerDamageDone(playerid, Float:amount, issuerid, weapon, bodypart)
{

CallLocalFunction("OnPlayerDamaged", "ifiii", playerid,amount,issuerid,weapon,bodypart);


new idx = s_PreviousHitI[playerid];

s_PreviousHitI[playerid] = (s_PreviousHitI[playerid] - 1) % sizeof(s_PreviousHits[]);

// JIT plugin fix
if (s_PreviousHitI[playerid] < 0) {
s_PreviousHitI[playerid] += sizeof(s_PreviousHits[]);
}

s_PreviousHits[playerid][idx][e_Tick] = GetTickCount();
s_PreviousHits[playerid][idx][e_Issuer] = issuerid;
s_PreviousHits[playerid][idx][e_Weapon] = weapon;
s_PreviousHits[playerid][idx][e_Amount] = amount;
s_PreviousHits[playerid][idx][e_Bodypart] = bodypart;
s_PreviousHits[playerid][idx][e_Health] = GetLastDamageHealth(playerid);
s_PreviousHits[playerid][idx][e_Armour] = GetLastDamageArmour(playerid);

if (!IsHighRateWeapon(weapon)) {
DebugMessageAll("OnPlayerDamageDone(%d did %f to %d with %d on bodypart %d)", issuerid, amount, playerid, weapon, bodypart);

if (s_DamageTakenSound) {
PlayerPlaySound(playerid, s_DamageTakenSound, 0.0, 0.0, 0.0);

for (new i = 0; i < MAX_PLAYERS; i++) {
if (s_Spectating[i] == playerid && i != playerid) {
//PlayerPlaySound(i, s_DamageTakenSound, 0.0, 0.0, 0.0);
}
}
}

if (s_DamageGivenSound && issuerid != INVALID_PLAYER_ID) {
//PlayerPlaySound(issuerid, s_DamageGivenSound, 0.0, 0.0, 0.0);

for (new i = 0; i < MAX_PLAYERS; i++) {
if (s_Spectating[i] == issuerid && i != issuerid) {
// PlayerPlaySound(i, s_DamageGivenSound, 0.0, 0.0, 0.0);
}
}
}
}

if (issuerid != INVALID_PLAYER_ID) {
DamageFeedAddHitGiven(issuerid, playerid, amount, weapon);
}

DamageFeedAddHitTaken(playerid, issuerid, amount, weapon);

#if defined WC_OnPlayerDamageDone
WC_OnPlayerDamageDone(playerid, amount, issuerid, weapon, bodypart);
#endif
}

public OnPlayerDamage(&playerid, &Float:amount, &issuerid, &weapon, &bodypart)
{

return 1;

}



Bunu yaptıktan sonra onplayerdamage adlı publici kullanma onun yerine onplayerdamaged publicini kullan


En basta denedigim cozum buydu fakat buda ise yaramamisti