Skocz do zawartości

Pawno - SAMP Prośba o pomoc.


# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Witam, od pewnego czasu tworzę sobie własny gamemode w sampie i napotkałem na dosyć duży problem przez "niewiedzę" ;d

Zastanawia mnie jak napisać taką komende jak np /score 500 
komenda miała by mi dawać tyle scora, jaką liczbę podałem po spacji.
Oczywiście jak wgl stworzyć komendę żeby dostać score to wiem:
 

if (strcmp(cmdtext, "/score", true)==0)
{
SetPlayerScore(playerid, GetPlayerScore(playerid) + 50);
return 1;
}

 

Wyglądałoby to tak i po wpisaniu score dostałbym 50, a ja chce wiedzieć jak wykonać to tak, abym dostał tyle ile jest właśnie wpisane po spacji.

2.Sprawa następna nieco bardziej skomplikowana do opisania.
Jako że nie mam pojęcia jak to opisać, wytłumaczę to na przykładzie liczenia czasu online aktywności gracza.
Napisałem sobie prosty timer który liczy czas aktywności gracza, a przynajmniej miało to tak działać, jednak działa w taki sposób ze liczy mi czas aktywności serwera.
tzn, wpisuje /online i wyświetla mi czas aktywności przykładowo 5 min... Wchodzi na serwer znajomy, wpisuje również komendę /onilne i pokazuje mu również te 5 minut + mimo że on jest na serwerze od kilku sekund. Oczywiste ze jest to spowodowane tym ze nie zapisuje czasu aktywnosci gracza tylko zapisuje do zmiennej mój timer ogólnie czas aktywności, a teraz chciałbym by zapisywał to właśnie dla każdego gracza osobno.

Kod Mojego licznika (Bez śmieszkowania, to na sztukę jest tymczasowo)

new sekundy, minuty, godziny, dni;
forward czasxd(playerid);
public czasxd(playerid)
{

if(sekundy < 60)
{
sekundy = sekundy + 1;
}
if ( sekundy >= 60)
{
sekundy = 0;
minuty = minuty + 1;
}
if ( minuty >= 60)
{
minuty = 0;
godziny = godziny + 1;
}

if (godziny >=24)
{
godziny = 0;
dni = dni + 1;
}

}

public OnPlayerConnect(playerid)
{
SetTimer("czasxd", 1000, true);
return 1;
}

 

Tyle w kwestii licznika. 
Ten sam problem mam na przykład gdy chce zrobić komendę /dajkase 
i zrobić tej komendzie ograniczenie czasowe, że można użyć raz na 1h. Spoko, zrobię to ale tylko tak że jak ktokolwiek wpisze /dajkase to reszta też musi czekac ta godzinę...

Za każdą pomoc będę bardzo wdzięczny i na pewno odegram się reputacją. 
Dziękuje z góry i pozdrawiam.

W miarę posuwania się po osi czasu szansa na przeżycia spada w końcu do zera dla każdego.

Odnośnik do komentarza

Włąsnie wpadłem na ten pomysł jakiś czas temu.
wygląda to tak 

forward czasxd(playerid);
public czasxd(playerid) 
{
    
       if(Gracz[playerid][sekundy] < 60)
       {
       Gracz[playerid][sekundy] = Gracz[playerid][sekundy] + 1;
       }
       if ( Gracz[playerid][sekundy] >= 60)
       {
        Gracz[playerid][sekundy] = 0;
        Gracz[playerid][minuty] = Gracz[playerid][minuty] + 1;
       }
       if ( Gracz[playerid][minuty] >= 60)
       {
         Gracz[playerid][minuty] = 0;
         Gracz[playerid][godziny] = Gracz[playerid][godziny] + 1;
       }
       
       if (Gracz[playerid][godziny] >=24)
       {
          Gracz[playerid][godziny] = 0;
          Gracz[playerid][dni] = Gracz[playerid][dni] + 1; 
       }

}

To mam teraz taki problem ze działa, ale tylko pierwszemu graczowi, tzn pierwszej osobie która wejdzie na serwer, gdy wchodzę już ja jako drugi i dostaje ID 1
to cały czas pokazuje mi aktywność 0 godzin, 0min, 0sec.
jakby miejsce było w tym tylko na jedno ID, zrobiłem te zmienne z "szufladkami" jednak nie pomaga.

W miarę posuwania się po osi czasu szansa na przeżycia spada w końcu do zera dla każdego.

Odnośnik do komentarza
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  Tagi

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności