GTAMulti - GTA Türkiye

San Andreas Multiplayer => Yardım Talepleri => PAWN Kodlama => Kilitli Konular => Konuyu başlatan: #McAllen - 09 Ağustos 2021, 15:00:34

Başlık: Fatura Sistemi
Gönderen: #McAllen - 09 Ağustos 2021, 15:00:34
Öncelikle merhabalar, bu konuyu açma sebebim sizden fazla abartı olmayan bir sistem istiyorum eğerki yapabilecekseniz yapabilir misiniz?

Sisteme geçiyorum; Örnek veriyorum bir oyuncu bir oyuncuya fatura kesmek istiyor yani bunu binevi tamirci gibi sayabilirsiniz tamirci adamın aracını tamir etmiş ve ona fatura kesecek ve oyuncuda bu faturayı belirli bir bölgede belirli bir komutla ödeyecek ama fatura kesmesi için bizim oyuncuya bi komutla yetki vermemiz ve geri almamız gerekiyor yani örnek veriyorum /fkesmeyetkisiver /fkesmeyetkisial gibi gibi.

Yanii bu sistemde toplam 4 tane komut olacak ; /faturakes, /fkesmeyetkisiver, /fkesmeyetkisial, /faturasil [Fatura ID], /faturaode(Belirli bir bölgede/kordinatta)

bunu yapabilir misiniz rica etsem?
Başlık: Ynt: Fatura Sistemi
Gönderen: jaweed - 09 Ağustos 2021, 15:27:40
Kullanmış olduğun modun ayrıntılarını bilmediğim için buradan yardımcı olabileceğimi sanmıyorum.
Başlık: Ynt: Fatura Sistemi
Gönderen: #McAllen - 09 Ağustos 2021, 15:57:06
Alıntı yapılan: jaweed - 09 Ağustos 2021, 15:27:40
Kullanmış olduğun modun ayrıntılarını bilmediğim için buradan yardımcı olabileceğimi sanmıyorum.

Siz yazsanız ben moda göre hepsini düzenlerim.
Başlık: Ynt: Fatura Sistemi
Gönderen: Utherz - 09 Ağustos 2021, 16:21:07
Öncelikle burası bir sistem isteme bölümü değil, yardım isteme bölümü. İstediğiniz komutu yaptım, aşağıda kodları bulabilirsiniz.


PAWN Kodu: Seç
CMD:fyetkiver(playerid, params[])
{
    new id, yetki;
    if (OyuncuDegisken[playerid][Admin] < 3) return SendClientMessage(playerid, -1, "bu komutu kullanamazsınız.");
    if (sscanf(params, "ui", id, yetki)) return SendClientMessage(playerid, -1, "/fyetkiver <playerid> <yetki (0 alır 1 verir)>");
    if (!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "hatalı id ya da kişi oyunda değil");
    OyuncuDegisken[id][fYetki] = yetki;
    return 1;
}
Başlık: Ynt: Fatura Sistemi
Gönderen: #McAllen - 09 Ağustos 2021, 16:29:00
Alıntı yapılan: Utherz - 09 Ağustos 2021, 16:21:07
Öncelikle burası bir sistem isteme bölümü değil, yardım isteme bölümü. İstediğiniz komutu yaptım, aşağıda kodları bulabilirsiniz.


PAWN Kodu: Seç
CMD:fyetkiver(playerid, params[])
{
    new id, yetki;
    if (OyuncuDegisken[playerid][Admin] < 3) return SendClientMessage(playerid, -1, "bu komutu kullanamazsınız.");
    if (sscanf(params, "ui", id, yetki)) return SendClientMessage(playerid, -1, "/fyetkiver <playerid> <yetki (0 alır 1 verir)>");
    if (!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "hatalı id ya da kişi oyunda değil");
    OyuncuDegisken[id][fYetki] = yetki;
    return 1;
}

Tamam da burada /faturakes diye bi komut yok bir kişi nasıl kişiye fatura kesicek? Bir de buraya açma sebebim öyle bir konu açma yeri olmadığı için veya ben görmedim.
Başlık: Ynt: Fatura Sistemi
Gönderen: Utherz - 09 Ağustos 2021, 16:33:44
Alıntı yapılan: JenniferAR - 09 Ağustos 2021, 16:29:00
Alıntı yapılan: Utherz - 09 Ağustos 2021, 16:21:07
Öncelikle burası bir sistem isteme bölümü değil, yardım isteme bölümü. İstediğiniz komutu yaptım, aşağıda kodları bulabilirsiniz.


PAWN Kodu: Seç
CMD:fyetkiver(playerid, params[])
{
    new id, yetki;
    if (OyuncuDegisken[playerid][Admin] < 3) return SendClientMessage(playerid, -1, "bu komutu kullanamazsınız.");
    if (sscanf(params, "ui", id, yetki)) return SendClientMessage(playerid, -1, "/fyetkiver <playerid> <yetki (0 alır 1 verir)>");
    if (!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "hatalı id ya da kişi oyunda değil");
    OyuncuDegisken[id][fYetki] = yetki;
    return 1;
}

Tamam da burada /faturakes diye bi komut yok bir kişi nasıl kişiye fatura kesicek? Bir de buraya açma sebebim öyle bir konu açma yeri olmadığı için veya ben görmedim.

Sadece fatura yetki verme komutunu istemişsiniz gibi gördüm daha doğrusu orayı okudum. Eğer boş zamanım olursa diğer komutları da yapıp atarım.
Başlık: Ynt: Fatura Sistemi
Gönderen: #McAllen - 09 Ağustos 2021, 16:36:09
Alıntı yapılan: Utherz - 09 Ağustos 2021, 16:33:44
Alıntı yapılan: JenniferAR - 09 Ağustos 2021, 16:29:00
Alıntı yapılan: Utherz - 09 Ağustos 2021, 16:21:07
Öncelikle burası bir sistem isteme bölümü değil, yardım isteme bölümü. İstediğiniz komutu yaptım, aşağıda kodları bulabilirsiniz.


PAWN Kodu: Seç
CMD:fyetkiver(playerid, params[])
{
    new id, yetki;
    if (OyuncuDegisken[playerid][Admin] < 3) return SendClientMessage(playerid, -1, "bu komutu kullanamazsınız.");
    if (sscanf(params, "ui", id, yetki)) return SendClientMessage(playerid, -1, "/fyetkiver <playerid> <yetki (0 alır 1 verir)>");
    if (!IsPlayerConnected(id)) return SendClientMessage(playerid, -1, "hatalı id ya da kişi oyunda değil");
    OyuncuDegisken[id][fYetki] = yetki;
    return 1;
}

Tamam da burada /faturakes diye bi komut yok bir kişi nasıl kişiye fatura kesicek? Bir de buraya açma sebebim öyle bir konu açma yeri olmadığı için veya ben görmedim.

Sadece fatura yetki verme komutunu istemişsiniz gibi gördüm daha doğrusu orayı okudum. Eğer boş zamanım olursa diğer komutları da yapıp atarım.

Pekii
Başlık: Ynt: Fatura Sistemi
Gönderen: squarepants - 10 Ağustos 2021, 15:40:38
Şu an için biraz meşgulüm ve deneme fırsatım olmadı ancak sen aşağıdaki şekilde deneyebilirsin. YARICAP, X, Y, Z degerlerini fatura odenecek noktanin koordinatlarına göre düzenlemelisin. Herhangi bir sorun olursa buradan veya özelden iletişime geçebilirsin, iyi forumlar :
enum E_FATURA
{
    bool:fYetki,
    fMiktar
}
new pFatura[MAX_PLAYERS][E_FATURA];
CMD:fyetkiver(playerid, params[])
{
    new fid;
    if (sscanf(params, "d", fid)) return SendClientMessage(playerid, -1, "/fyetkiver [playerid]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (pFatura[fid][fYetki]) return SendClientMessage(playerid, -1, "Oyuncu Zaten Yetkili (!)");
    pFatura[fid][fYetki] = true;
    return 1;
}
CMD:fyetkial(playerid, params[])
{
    new fid;
    if (sscanf(params, "d", fid)) return SendClientMessage(playerid, -1, "/fyetkial [playerid]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (!pFatura[fid][fYetki]) return SendClientMessage(playerid, -1, "Oyuncu Zaten Yetkili Degil(!)");
    pFatura[fid][fYetki] = false;
    return 1;
}
CMD:fkes(playerid, params[])
{
    new fid, fmiktar;
    if (sscanf(params, "dd", fid, fmiktar)) return SendClientMessage(playerid, -1, "/fkes [playerid] [miktar]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (!pFatura[playerid][fYetki]) return SendClientMessage(playerid, -1, "Yetkiniz Yok (!)");
    if ( pFatura[fid][fMiktar] > 0) return SendClientMessage(playerid, -1, "Oyuncuya Zaten Fatura Kesilmis (!)");
    pFatura[fid][fMiktar] = fmiktar;
    return 1;
}
CMD:fsil(playerid, params[])
{
    new fid;
    if (sscanf(params, "d", fid)) return SendClientMessage(playerid, -1, "/fsil [playerid]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (pFatura[fid][fMiktar] == 0) return SendClientMessage(playerid, -1, "Oyuncunun Faturasi Su Anda Yok (!)");
    pFatura[fid][fMiktar] = 0;
    return 1;
}
CMD:fode(playerid)
{
    if(IsPlayerInRangeOfPoint(playerid, YARICAP, X, Y, Z))
    {
        if(pFatura[playerid][fMiktar] == 0) return SendClientMessage(playerid, -1, "Odenecek Faturaniz Yok (!)");
        if(GetPlayerMoney(playerid) < pFatura[playerid][fMiktar]) return SendClientMessage(playerid, -1, "Paraniz Yetersiz (!)");
        GivePlayerMoney(playerid, (pFatura[playerid][fMiktar] * -1)); pFatura[playerid][fMiktar] = 0;
    }
    else
    {
        return SendClientMessage(playerid, -1, "Fatura Odemek İcin Gerekli Alanda Degilsiniz (!)");
    }
    return 1;
}

Başlık: Ynt: Fatura Sistemi
Gönderen: Kjen - 11 Ağustos 2021, 14:55:46
Alıntı yapılan: ThePosition - 10 Ağustos 2021, 15:40:38
Şu an için biraz meşgulüm ve deneme fırsatım olmadı ancak sen aşağıdaki şekilde deneyebilirsin. YARICAP, X, Y, Z degerlerini fatura odenecek noktanin koordinatlarına göre düzenlemelisin. Herhangi bir sorun olursa buradan veya özelden iletişime geçebilirsin, iyi forumlar :
enum E_FATURA
{
    bool:fYetki,
    fMiktar
}
new pFatura[MAX_PLAYERS][E_FATURA];
CMD:fyetkiver(playerid, params[])
{
    new fid;
    if (sscanf(params, "d", fid)) return SendClientMessage(playerid, -1, "/fyetkiver [playerid]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (pFatura[fid][fYetki]) return SendClientMessage(playerid, -1, "Oyuncu Zaten Yetkili (!)");
    pFatura[fid][fYetki] = true;
    return 1;
}
CMD:fyetkial(playerid, params[])
{
    new fid;
    if (sscanf(params, "d", fid)) return SendClientMessage(playerid, -1, "/fyetkial [playerid]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (!pFatura[fid][fYetki]) return SendClientMessage(playerid, -1, "Oyuncu Zaten Yetkili Degil(!)");
    pFatura[fid][fYetki] = false;
    return 1;
}
CMD:fkes(playerid, params[])
{
    new fid, fmiktar;
    if (sscanf(params, "dd", fid, fmiktar)) return SendClientMessage(playerid, -1, "/fkes [playerid] [miktar]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (!pFatura[playerid][fYetki]) return SendClientMessage(playerid, -1, "Yetkiniz Yok (!)");
    if ( pFatura[fid][fMiktar] > 0) return SendClientMessage(playerid, -1, "Oyuncuya Zaten Fatura Kesilmis (!)");
    pFatura[fid][fMiktar] = fmiktar;
    return 1;
}
CMD:fsil(playerid, params[])
{
    new fid;
    if (sscanf(params, "d", fid)) return SendClientMessage(playerid, -1, "/fsil [playerid]");
    if (!IsPlayerConnected(fid)) return SendClientMessage(playerid, -1, "Oyuncu Aktif Degil (!)");
    if (pFatura[fid][fMiktar] == 0) return SendClientMessage(playerid, -1, "Oyuncunun Faturasi Su Anda Yok (!)");
    pFatura[fid][fMiktar] = 0;
    return 1;
}
CMD:fode(playerid)
{
    if(IsPlayerInRangeOfPoint(playerid, YARICAP, X, Y, Z))
    {
        if(pFatura[playerid][fMiktar] == 0) return SendClientMessage(playerid, -1, "Odenecek Faturaniz Yok (!)");
        if(GetPlayerMoney(playerid) < pFatura[playerid][fMiktar]) return SendClientMessage(playerid, -1, "Paraniz Yetersiz (!)");
        GivePlayerMoney(playerid, (pFatura[playerid][fMiktar] * -1)); pFatura[playerid][fMiktar] = 0;
    }
    else
    {
        return SendClientMessage(playerid, -1, "Fatura Odemek İcin Gerekli Alanda Degilsiniz (!)");
    }
    return 1;
}


Fatura kesilen kişi relog attığında silinecektir.
Başlık: Ynt: Fatura Sistemi
Gönderen: squarepants - 11 Ağustos 2021, 16:11:42
@Kjen her iki durum da söz konusudur, tekrar girişte kimlik numarası değişmediği sürece değer sabit kalır. Aksi halde evet değişecek. Ben bu tip ayrıntıları şahsın kendine bırakıyorum, MySQL ile çalışırken değeri resetlemeden önce verileri yansıtmalıdır, bu nedenle ek bir değişiklik yapma gereği duymadım. Bu arada yorumun için teşekkür ediyorum.

Yine de resetlemek isteyenler aşağıdaki şekilde uygulayabilirler :
public OnPlayerDisconnect(playerid, reason)
{
    pFatura[playerid][fYetki] = false; pFatura[playerid][fMiktar] = 0;
    return 1;
}
Başlık: Ynt: Fatura Sistemi
Gönderen: #McAllen - 11 Ağustos 2021, 19:58:36
https://cdn.discordapp.com/attachments/866331593000878080/874669453823074375/Screenshot_49.png

Hata bu ThePosition'un yazdığı kodu yapıştırdım ek olarak moduma göre düzenledim
Başlık: Ynt: Fatura Sistemi
Gönderen: squarepants - 12 Ağustos 2021, 15:29:50
@JenniferAR kodlari test ettim ve herhangi bir hata almadim, moduna yanlış ekleme ihtimalin olabilir, tekrar göz atabilir misin?
Başlık: Ynt: Fatura Sistemi
Gönderen: #McAllen - 12 Ağustos 2021, 15:56:47
Tamamdır sorun çözüldü, kod çalışıyor @ThePosition 'a teşekkürler.