GTAMulti - GTA Türkiye

San Andreas Multiplayer => Yardım Talepleri => PAWN Kodlama => Kilitli Konular => Konuyu başlatan: TRSinan28 - 01 Şubat 2018, 23:12:27

Başlık: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:12:27
Arkadaşlar ben ekranın altına textdraw olarak PARA,SKOR,PİNG göstergeleri koydum.Sunucuda tek kişi olunca doğru düzgün gösteriyor neyse.Sunucuda 2 kişi olunca ışık hızı gibi hem diğer arkadaşın Para,skor,ping ini gösteriyor hem de benimkini.İnanın ışık hızı gibi :D Bir bakabilirmisiniz kodlar şunlar;

    format(string, sizeof string, "%d", GetPlayerPing(playerid));
    TextDrawSetString(Alttext15, string);
   
    format(string, sizeof string, "%d", GetPlayerScore(playerid));
    TextDrawSetString(Alttext9, string);
   
    format(string, sizeof string, "$%d", GetPlayerMoney(playerid));
    TextDrawSetString(Alttext5, string);

OnPlayerUpdate'de bunlar.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Jackmann - 01 Şubat 2018, 23:14:48
PAWN Kodu: Seç
foreach(Player, i)
{
    format(string, sizeof string, "%d", GetPlayerPing(i));
    TextDrawSetString(Alttext15, string);

    format(string, sizeof string, "%d", GetPlayerScore(i));
    TextDrawSetString(Alttext9, string);

    format(string, sizeof string, "$%d", GetPlayerMoney(i));
    TextDrawSetString(Alttext5, string);
}
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Excision - 01 Şubat 2018, 23:21:55
Global bir textdrawı player için kullanamazsın. Eğer özel bir şey değilse bana textdrawdaki kodları gönder düzeltip atayım.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:22:11
Düzeldi kardeşim Allah razı olsun :) Şu Foreach ne işe yarıyor açıklar mısın ? Ne gibi yerlerde kullanabilirim ?
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:22:47
Alıntı yapılan: Excision - 01 Şubat 2018, 23:21:55

Global bir textdrawı player için kullanamazsın. Eğer özel bir şey değilse bana textdrawdaki kodları gönder düzeltip atayım.

Arkadaşın verdiği kodlar düzeltti olayı ama bi sıkıntı çıkar mı ki ?
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Excision - 01 Şubat 2018, 23:23:35
O şekilde kullanamazsın.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:23:55
Alıntı yapılan: Excision - 01 Şubat 2018, 23:23:35

O şekilde kullanamazsın.

Özelden atayım kodları
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Jackmann - 01 Şubat 2018, 23:26:05
Alıntı yapılan: TRSinan28 - 01 Şubat 2018, 23:22:11

Düzeldi kardeşim Allah razı olsun :) Şu Foreach ne işe yarıyor açıklar mısın ? Ne gibi yerlerde kullanabilirim ?

Karışık kuruşuk şeyler ya :D
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Excision - 01 Şubat 2018, 23:35:17
Bütün oyuncuları döngüye sokarken kullanabilirsin, hem daha performanslı olur foreach kullanırsan. Örnek verecek olursak;
for(new i = 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i))
    {
GivePlayerMoney(i, 3000);
    }
}

kullanmak yerine
foreach(new i: Player)
{
    GivePlayerMoney(i, 3000);
}

gibi kullanmak daha pratik ve sağlıklı.
foreach ile oyundaki bütün oyuncuları döngüye aldığımız için tekrardan IsPlayerConnected şartını getirmemize gerek kalmıyor.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:36:42
Arkadaşın attığı kodda öyleydi

Edit: Yanlış anlamışım Foreach kullanımını öğrettin.Tamamdır Alican abi anladım.Teşekkür ederim.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Excision - 01 Şubat 2018, 23:40:08
Kullanımı yanlış, oyuncu her onplayerupdate i çağırdığında ki bu public saniyede 4 5 defa çağrılabiliyor. Her seferinde foreach ile oyuncuları boşu boşuna döngüye sokacaktı ki bi işe yaramayacaktı.
Özelden attım linki, incele anlarsın.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:43:57
Textdraw kodlarını OnGameModeInit'e atıyorum.Sen OnPlayerConnect'e uyarlamışsın.Bir sıkıntı olmaz dimi ?
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: Excision - 01 Şubat 2018, 23:44:56
Attığım gibi kullan.
Başlık: Ynt: OnPlayerUpdate Çakışması
Gönderen: TRSinan28 - 01 Şubat 2018, 23:59:22
Çözüldü.