Merhabalar..
Oyuncuya Verebildiğimiz Can Ve Zırh Miktarı 100'ün üstüne çıkmıyor.
Anadolu modundaki texdrawı aldım. Anlık olarak oyuncunun canını ve zırhının kaç olduğunu gösteriyor texdrwda.
Fakat Oyuncunun canını veya zırını 100 ün üstünde girmiğim vakit texdraw hala 100'de sabit kalıyor.
Demek istediğim şey, oyuncunun canını 100 ün üstüne çıkarabilmek için herhangi bir inc. veya plugin'e gerek var mı ?
TextDrawı alıp koymakla olmuyor can göstergesi zırh göstergesi, adamın canı zırhı değişince değişiyor mu textdrawlardaki yazılar, kontrol ettin mi?
Ettim kanka. Canımı 50 yapıyorum mesela texdraw 50 gösteriyor herşey tamam fakat. 100'ün üstünde bi rakam girdimmi texdraw 100 gösteriyor üstünü göstermiyor.
Çünkü bunu desteklemiyordur yaptığınız textdraw, fakat sistemsel olarak 150 hp verdiğinizde ekstra hpniz olur fakat bu textdrawa yansımaz çünkü bu GTA'nın klasik değerlerini aşamaz.
Belki pawnoda can çekme fonksiyonunda değişiklikler yaparsan yapabilirsin.
Can ve armor'un değerleri tekli değer değildir. Örnek veriyorum canın 100 ise, aslında 100.000.000 gibi bir şeydir o. Textdrawlarda onu tek haneli göstermek için round gibi fonksiyonlar kullanılır o yüzden hep öyle gözüküyor olabilir.
Anadolu modunda can ve zırh max 150 olarak ayarlıdır. Anadolu modundaki textdrawı alıp başka bir sunucuya koysanda 100 üstüne çıkamazsın. Plugin ile yapılan bir şey bu.
Alıntı yapılan: NexoR - 02 Ocak 2020, 11:27:41Anadolu modunda can ve zırh max 150 olarak ayarlıdır. Anadolu modundaki textdrawı alıp başka bir sunucuya koysanda 100 üstüne çıkamazsın. Plugin ile yapılan bir şey bu.
Hangi Plugin ile yaptınız bunu söylermisin ?
Eğer GetPlayerHealth(); fonksiyonu kullanıyorsanız , varsayılan tamsayı değerleri dışındaki değerleri okuyamaz , 255'e kadar olan uzunluk değerini okuyabilir ancak üstü değerler için aynı kural geçerli değil. Örneğin 256 can kapasitesine sahip bir oyuncu için bu değer 0 olacaktır.
Bu kuralı OnPlayerTakeDamage() callback'ı sayesinde kırabilmeniz mümkün. Örnek verecek olur isek :
new Float:can[MAX_PLAYERS];
new Text:ocan;
public OnGameModeInit()
{
ocan = TextDrawCreate(54.000000, 326.000000, "_");
TextDrawBackgroundColor(ocan, 255);
TextDrawFont(ocan, 2);
TextDrawLetterSize(ocan, 0.500000, 1.000000);
TextDrawColor(ocan, -65281);
TextDrawSetOutline(ocan, 1);
TextDrawSetProportional(ocan, 1);
return 1;
}
OnPlayerSpawn(playerid)
{
can[playerid] = 100.0;
new candeger[15];
format(candeger, 15, "%.02f",can[playerid]);
TextDrawSetString(ocan, candeger);
TextDrawShowForPlayer(playerid, ocan);
return 1;
}
CMD:cata(playerid)
{
can[playerid] = 256;
SetPlayerHealth(playerid,can[playerid]);
new candeger[15];
format(candeger, 15, "%.02f",can[playerid]);
TextDrawSetString(ocan, candeger);
TextDrawShowForPlayer(playerid, ocan);
return 1;
}
CMD:cbak(playerid)
{
new msj[60];
format(msj , sizeof(msj),"can degeri %.02f",can[playerid]);
SendClientMessage(playerid,-1,msj);
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
new candeger[15];
can[playerid] -= amount;
if(can[playerid] <= 0.0) return 0;
format(candeger, 15, "%.02f",can[playerid]);
TextDrawSetString(ocan, candeger);
TextDrawShowForPlayer(playerid, ocan);
return 0;
}
cata komut istemcisi kullanıldığında textdraw , hesaplanmış olan değeri sorunsuz bir şekilde gösterecektir. Hasar alındığında ise bu değer alınan hasar miktarı kadar azalacaktır.
Alıntı yapılan: ThePosition - 04 Ocak 2020, 01:02:10Eğer GetPlayerHealth(); fonksiyonu kullanıyorsanız , varsayılan tamsayı değerleri dışındaki değerleri okuyamaz , 255'e kadar olan uzunluk değerini okuyabilir ancak üstü değerler için aynı kural geçerli değil. Örneğin 256 can kapasitesine sahip bir oyuncu için bu değer 0 olacaktır.
Bu kuralı OnPlayerTakeDamage() callback'ı sayesinde kırabilmeniz mümkün. Örnek verecek olur isek :
new Float:can[MAX_PLAYERS];
new Text:ocan;
public OnGameModeInit()
{
ocan = TextDrawCreate(54.000000, 326.000000, "_");
TextDrawBackgroundColor(ocan, 255);
TextDrawFont(ocan, 2);
TextDrawLetterSize(ocan, 0.500000, 1.000000);
TextDrawColor(ocan, -65281);
TextDrawSetOutline(ocan, 1);
TextDrawSetProportional(ocan, 1);
return 1;
}
OnPlayerSpawn(playerid)
{
can[playerid] = 100.0;
new candeger[15];
format(candeger, 15, "%.02f",can[playerid]);
TextDrawSetString(ocan, candeger);
TextDrawShowForPlayer(playerid, ocan);
return 1;
}
CMD:cata(playerid)
{
can[playerid] = 256;
SetPlayerHealth(playerid,can[playerid]);
new candeger[15];
format(candeger, 15, "%.02f",can[playerid]);
TextDrawSetString(ocan, candeger);
TextDrawShowForPlayer(playerid, ocan);
return 1;
}
CMD:cbak(playerid)
{
new msj[60];
format(msj , sizeof(msj),"can degeri %.02f",can[playerid]);
SendClientMessage(playerid,-1,msj);
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
new candeger[15];
can[playerid] -= amount;
if(can[playerid] <= 0.0) return 0;
format(candeger, 15, "%.02f",can[playerid]);
TextDrawSetString(ocan, candeger);
TextDrawShowForPlayer(playerid, ocan);
return 0;
}
cata komut istemcisi kullanıldığında textdraw , hesaplanmış olan değeri sorunsuz bir şekilde gösterecektir. Hasar alındığında ise bu değer alınan hasar miktarı kadar azalacaktır.
Kardeşim Çokkkk Teşekkür Ederim. Texdraw sıkıntısız çalışıyor fakat canımı 256 olarak ayarlıyorum ama canım 100'ü geçmiyor. Onu Nasıl yapabilirim ?.
SetPlayerHealth(playerid, 256); Yapıyorum olmuyor. En fazla 100 oluyor.
Yani canımı nasıl 256 veya başka bi değer yabailirim.
Tam olarak anlayamadım , yani 256 yaptığınız halde oyuncu canı 100 olarak mı kalıyor ? yoksa textdraw ile mi ilgili ?
Oyuncunun canını 256 yaptığım halde 100 kalıyor. Texdraw Sıkıntısız Çalışıyor.
Düz mantık 256 iken 100 olması imkansız ancak yüksek ihtimal modunda kullandığın bazı eklentiler veya fonksiyonlar tarafından bloklanmış olabilir , hile veya başka sebeplerden dolayı.
Weapon-Config (https://forum.sa-mp.com/showthread.php?t=563387) ile max health ve max armouru değiştirebilirsiniz.
SetPlayerMaxHealth(playerid, Float:value);
SetPlayerMaxArmour(playerid, Float:value);
Alıntı yapılan: Excision - 05 Ocak 2020, 15:35:46Weapon-Config (https://forum.sa-mp.com/showthread.php?t=563387) ile max health ve max armouru değiştirebilirsiniz.
SetPlayerMaxHealth(playerid, Float:value);
SetPlayerMaxArmour(playerid, Float:value);
Teşekkürler Oldu Sağolun :)