[REÅ ENO]Uzimanje Scora(P)igraca

Započeo Plen Ki Mun, Jun 24, 2016, 10:29:41 PRE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Skripta koju koristim: DayZ
Opis problema o kojem se radi: Pa znaci imam TD za score i timer koji update svaku promjenu na skoru,problem je u tome sto ne uzima skor od od igraca nego od nekoga drugoga igraca,znaci ne uzima njegov vlasiti!
Dio skripte:

[pawn]forward ScoreTimer(playerid);
public ScoreTimer()
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            new string[128];
            format(string, sizeof(string), "~w~Score:~g~%d",GetPlayerScore(playerid));
            TextDrawSetString(MTD4, string);
        }
    }
    return 1;
}[/pawn]

[pawn]TextDrawShowForPlayer(playerid, MTD4);
   new str1[100];
   format(str1, sizeof(str1),"~w~Score:~g~%d", GetPlayerScore(playerid));
   TextDrawSetString(MTD4, str1);[/pawn]


Slika (neobavezno): //
Poslednja Izmena: Jun 28, 2016, 12:12:44 POSLE PODNE od â–… â–† â–ˆ Rudimental â–ˆ â–† â–…

Greska ti je sto si kod funkcije GetPlayerScore stavio playerid a trebao si samo i jer si to definisao. A mozes koristiti i foreach te bi to ovako ispalo.

forward ScoreTimer();
public ScoreTimer()
{
    new
string[20];
    foreach (Player, i)
    {
    format(string, sizeof(string), "~w~Score:~g~%d", GetPlayerScore(i));
    TextDrawSetString(MTD4, string);
    }
    return 1;
}

Citat: â–... â–† â–ˆ Rudimental â–ˆ â–† â–... poslato Jun 24, 2016, 10:34:20 PRE PODNE
Greska ti je sto si kod funkcije GetPlayerScore stavio playerid a trebao si samo i jer si to definisao. A mozes koristiti i foreach te bi to ovako ispalo.

forward ScoreTimer();
public ScoreTimer()
{
    new
string[20];
    foreach (Player, i)
    {
    format(string, sizeof(string), "~w~Score:~g~%d", GetPlayerScore(i));
    TextDrawSetString(MTD4, string);
    }
    return 1;
}


Ok hvala,pokusat cu pa javim rezultat!  :)

Citat: Mate poslato Jun 24, 2016, 10:37:31 PRE PODNE
Citat: â–... â–† â–ˆ Rudimental â–ˆ â–† â–... poslato Jun 24, 2016, 10:34:20 PRE PODNE
Greska ti je sto si kod funkcije GetPlayerScore stavio playerid a trebao si samo i jer si to definisao. A mozes koristiti i foreach te bi to ovako ispalo.

forward ScoreTimer();
public ScoreTimer()
{
    new
string[20];
    foreach (Player, i)
    {
    format(string, sizeof(string), "~w~Score:~g~%d", GetPlayerScore(i));
    TextDrawSetString(MTD4, string);
    }
    return 1;
}


Ok hvala,pokusat cu pa javim rezultat!  :)


nemoj koristiti foreach baguje koristi  , sve ostalo stoji
for(new i = 0; i < MAX_PLAYERS; i++)
{

@Harden ne znam odakle ti to da foreach baguje, ja ga koristim vec par godina i nikad nisam imao problema... A foreach je mnogo bolji nego taj kod koji si poslao, jer forech ti prolazi samo kroz online igrace dok ako tako definises kao sto si ti poslao njemu onda provera prolazi kroz sve igrace odnosno kroz broj koji je definisan na MAX_PLAYERS a ne vidim potrebu da prodje kroz sve to kada mozda pola njih nije online od tog broja tako da je forech bolji :D

Jos uvijek uzima skor od drugih igraca ;/

Cekaj sta ti hoces zapravo pojasni mi malo bolje...

Citat: â–... â–† â–ˆ Rudimental â–ˆ â–† â–... poslato Jun 27, 2016, 19:10:56 POSLE PODNE
Cekaj sta ti hoces zapravo pojasni mi malo bolje...

Necu ja to nego tako treba bit  :D

Ja hocu da svakom igracu pokazuje njegov skor(vlastiti) a ne od drugog igraca.Nemogu bolje pojasnit!

Pa onda jednostavno u public OnPlayerSpawn stavis to.
[pawn]
format(string, sizeof(string), "~w~Score:~g~%d", GetPlayerScore(playerid));
TextDrawSetString(MTD4, string);
[/pawn]

Ali ovaj TD bi trebao da bude na playerid a ne globalni jer ce ti ovako dolaziti do bagova... Imas na samp wikiu sve u vezi TD-ova pa pronadji za playerid. E igrac jednostavno ne puni scor svaki sekund pa da mu trebas ovo u neki tajmer staviti ali mozes i u tajmer ali kazem promeni TD da ne bude globalni zato i baguje...
Poslednja Izmena: Jun 27, 2016, 22:01:18 POSLE PODNE od â–… â–† â–ˆ Rudimental â–ˆ â–† â–…

Citat: â–... â–† â–ˆ Rudimental â–ˆ â–† â–... poslato Jun 27, 2016, 22:00:13 POSLE PODNE
Pa onda jednostavno u public OnPlayerSpawn stavis to.
[pawn]
format(string, sizeof(string), "~w~Score:~g~%d", GetPlayerScore(playerid));
TextDrawSetString(MTD4, string);
[/pawn]

Ali ovaj TD bi trebao da bude na playerid a ne globalni jer ce ti ovako dolaziti do bagova... Imas na samp wikiu sve u vezi TD-ova pa pronadji za playerid. E igrac jednostavno ne puni scor svaki sekund pa da mu trebas ovo u neki tajmer staviti ali mozes i u tajmer ali kazem promeni TD da ne bude globalni zato i baguje...

E to, Svaka ti cast volim kada ti pomazes  :D


Da! Imam jos nesto dali treba da za to uradim novu temu ili ovdje nesto u vezi statsa

Ako je neka sitnica ajde daj da ne otvaras novu temu ...

[pawn]CMD:stats(playerid,params[]) {
   new string[100], pDeaths, player1, h, m, s,playername[MAX_PLAYER_NAME];
   if(isnull(params)) player1 = playerid;
   else player1 = strval(params);

   if(IsPlayerConnected(player1)) {
       TotalGameTime(player1, h, m, s);
       GetPlayerName(player1, playername, sizeof(playername));
      if(PlayerInfo[player1][Deaths] == 0) pDeaths = 1; else pDeaths = PlayerInfo[player1][Deaths];
      new str[120], str1[100], str2[100];
      format(str, sizeof(str),"| ------ | %s's Status | ------- |", PlayerName2(player1));
      format(string,sizeof(string),"Scores: %d | Money: $%d | Kills: %d | Deaths: %d | K/D Ratio: %0.2f", GetPlayerScore(player1), GetPlayerMoney(player1), PlayerInfo[player1][Kills], PlayerInfo[player1][Deaths], Float:PlayerInfo[player1][Kills]/Float:pDeaths);
      format(str1, sizeof(str1),"Admin Level: %d | Server Operator: %s | Rank: %s | Team: %s | Class: %s", PlayerInfo[player1][Level], PlayerInfo[player1][Helper] ? ("Yes") : ("No"), GetRankName(player1), GetTeamName(player1), GetClass(player1));
      format(str2, sizeof(str2),"TimePlayed: [%d] hrs [%d] mins [%d] secs", h, m, s);
      SendClientMessage(playerid, 0xFFFFFFFF,str);
      SendClientMessage(playerid, 0xAAAAAAFF,string);
      SendClientMessage(playerid, 0xAAAAAAFF,str1);
      SendClientMessage(playerid, 0xAAAAAAFF,str2);
      SendClientMessage(playerid, 0xFFFFFFFF,"| ---------------------------------------------------- |");
   } else return SendClientMessage(playerid, red, "Player Not Connected!");
   return 1;
}[/pawn]

Znaci ovako hocu da ovo bude u dialogu ali ja sam sve radio u jednoj liniji i nije dobro ispalo.Znaci hocu u dialogu ono jedno ispod drugoga.Hvala  :)

Evo ti primer nadam se da ces sve razumeti iz njega.
[pawn]
new
   glavnistring[8], // Ovde trebas da upises umesto broja 8 broj karaktera za ukupan prikaz celog statsa, dok u ove ispod upisujes broj karaktera koji je potreban za tu jednu liniju
   string1[4],
   string2[4];
format(string1, sizeof(string1), "Text"); // Evo i ovde da pojasnim za tu liniju sto sam gore pisao ovo je recimo ta jedna trenutno ima 4 karaktera pa smo tamo definisali ta 4 ali ti kada uradis sve to uvek dodaj bar jos 50 karaktera vise zbog prikazivanja brojeva eto recimo za novac ti ces ovamo staviti %d ali na serveru dobijas brojeve i ide vise karaktera ako me razumes
format(string2, sizeof(string2), "Text");
format(glavnistring, sizeof(glavnistring), "%s%s", string1, string2); // Ovde povezujes stringove koje gore definises da bi bilo sve u jednom
ShowPlayerDialog(playerid, ID, DIALOG_STYLE_MSGBOX, "Stats", glavnistring, "Ok", "");
[/pawn]
Poslednja Izmena: Jun 28, 2016, 11:39:26 PRE PODNE od â–… â–† â–ˆ Rudimental â–ˆ â–† â–…