Skocz do zawartości

locus

Użytkownik
  • Zawartość

    37
  • Rejestracja

  • Ostatnia wizyta

O locus

  • Tytuł
    Obserwator

Informacje profilowe

  • Płeć
    Mężczyzna
  1. locus

    Brak informacji..

    -1 to nic innego jak definicja jakiegoś koloru.... A problemem jest błachostka SCM(playerid, -1, "Osiagnieto nowy poziom ! Gratulacje !"); format(string, sizeof(string), "Gracz %s [%d] zdobywa 1 poziom", pName[playerid], playerid); SCMToAll(-1, strx); print(strx); Wysyła informacje do gracza, że osiągnął poziom, ale później formatuje zmienną string, a wysyłasz zmienną strx do ludzi. Powinno być tak: SCM(playerid, -1, "Osiagnieto nowy poziom ! Gratulacje !"); format(string, sizeof(string), "Gracz %s [%d] zdobywa 1 poziom", pName[playerid], playerid); SCMToAll(-1, string); print(strxing);
  2. locus

    bank

    Musisz zapisać informacje o danych przelewu do zmiennych
  3. locus

    Kompilator Pawn - BRAK ODPOWIEDZI

    1. Sprawdź czy liczba klamer się zgadza za pomocą codegenerators.com 2. Obejrzyj wszystkie case, czy nie ma case; musi być case: 3. Jak 1 i 2 opcja nie działa to zamykaj w komentarz /*...*/ po kolei publici od góry lecąc, aż problem minie (nie będzie crasha), jak nie będzie to skupiasz się na tym wycinku
  4. locus

    Problem z system privu

    if(!ispassenger) { new id = GetVehicleID(vehicleid); VECHICLEID = GetVehicleID(vehicleid); if(GetPlayerVehicleAccess(playerid, id) < 1){ if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){ SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE); new msg[128]; format(msg, sizeof(msg), "Ten pojazd należy do %s i nie możesz go prowadzić {E68C0E}(ID: %d)", VehicleOwner[id], id); SendClientMessage(playerid, COLOR_GREY, msg); } return 1; } if(IsValidVehicle(id) && VehicleCreated[id] == VEHICLE_PLAYER) { new msg[128]; format(msg, sizeof(msg), "Ten pojazd należy do %s {E68C0E}(ID: %d)", VehicleOwner[id], id); SendClientMessage(playerid, COLOR_GREY, msg); } if(VehicleLos[id] == 1){ new msg[128]; format(msg, sizeof(msg), "Ten pojazd posiada blokadę koła założoną przez {FF0000}%s{FFFFFF}\r\nPowód blokady: {FF0000}%s", VehicleZakladajacy[id], VehiclePowod[id]); SendClientMessage(playerid, COLOR_WHITE, msg); TogglePlayerControllable(playerid, 1); } } return 1; }
  5. locus

    nie zapisuje nicku

    CMD:spr(playerid, params[]) { if(GetPlayerTeam(playerid) == POMOC) return SendClientMessage(playerid, -1, "nie jesteś w pomocy"); SendClientMessage(playerid, -1, "jestes w pomocy drog"); return 1; } Zamień komunikaty Jak Team gracza jest równy POMOC to on jest, a jak nie to nie więc: CMD:spr(playerid, params[]) { if(GetPlayerTeam(playerid) == POMOC) return SendClientMessage(playerid, -1, "jestes w pomocy drog"); SendClientMessage(playerid, -1, "nie jesteś w pomocy"); return 1; }
  6. locus

    nie zapisuje nicku

    CMD:spr(playerid, params[]) { if(GetPlayerTeam(playerid) == POMOC) return SendClientMessage(playerid, -1, "nie jesteś w pomocy"); SendClientMessage(playerid, -1, "jestes w pomocy drog"); return 1; } Zamień komunikaty Jak Team gracza jest równy POMOC to on jest, a jak nie to nie więc: CMD:spr(playerid, params[]) { if(GetPlayerTeam(playerid) == POMOC) return SendClientMessage(playerid, -1, "jestes w pomocy drog"); SendClientMessage(playerid, -1, "nie jesteś w pomocy"); return 1; }
  7. locus

    Zapis/ Odczyt MySQL

    Ogarnąłem już to xD Wziąłem od znajomego programisty PAWN jego include i pluginy, po czym powiedział mi, że w paru miejscach brakuje mi ' ', a w paru jest niepotrzebne ` ` i już gra ;P
  8. locus

    czas do końca odsiadki

    Zapisz sobie czas odsiadki w sekundach. Dawno w dini nie pracowałem, ale wyglądać to będzie chyba tak: public OnPlayerDisconnect(playerid....) { if(JailUntil[playerid] > 0)//Jeżeli jest czas odsiadki { dini_IntSet(FileStats(playerid), "czaswpace", JailUntil[playerid]); } } Powinno zapisać się wartość do pliku w sekundach i następnie po wejściu na serwer można zrobić coś takiego: JailUntil[playerid] = dini_Int(FileStats(playerid),"czaswpace"); if(JailUntil[playerid] > 0) { Wsadza do paki JailTimer[gracz] = SetTimerEx("UnjailPlayer",1000,1,"i",gracz); } No i leci dalej Chyba powinno grać
  9. locus

    Opis Postaći i Pojazdu

    Boże, Ty widzisz i nie banujesz
  10. locus

    Jak zrobić? i gdzie?

    1. Nie w OnPlayerConnect, tylko na samej górze GM'a, w OnPlayerConnect daje się TD na gracza czyli na zmiennej typu PlayerText:... 2. Nic się nie podstawia, tylko na samej górze, jeżeli chcesz na wszystkich graczy to dajesz new Text: textdraw[MAX_PLAYERS]; for(new playerid; playerid <= MAX_PLAYERS; playerid++) { TextDrawCreate(textdraw[playerid],x,y);.... .... } Następnie np w OnPlayerSpawn można dać TextDrawShowForPlayer(playerid, textdraw[playerid]);
  11. locus

    [ROZWIĄZANY]System admina

    Wojtek weź się najlepiej nie odzywaj chyba, że chcesz żeby każdy z Ciebie bekę cisnął. Nie dość, że napisałeś, że kod jest zły, chociaż był dobry, to jeszcze dałeś możliwość kickowania tylko graczom... Zmień górę z: CMD:kick(playerid, params[]) { new Ranga = RangaAdmina[playerid]; if(Ranga == 2) { na: CMD:kick(playerid, params[]) { new Ranga = RangaAdmina[playerid]; if(Ranga >= 2) { i będzie grało, bo zapewne używałeś to na rconie, a to 2 to jak widzę juniorek Pozdro
  12. locus

    czas do końca odsiadki

    Prościej będzie jeżeli zrobisz tak: KillTimer(JailTimer[gracz]); JailTimer[gracz] = SetTimerEx("UnjailPlayer",1000,1,"i",gracz); JailUntil[playerid] = czas*60;Co zrobiłem? Ustawiłem timer, który wykonuje się co 1 sek, zaraz powiem Ci dlaczego. Pod zmienną JailUntil kryje się czas jaki ustawiłeś w sekundach, np ustawiłeś na 4 minuty to mamy 4*60 = 240 sekund do końca odsiadki. No dobra, co dalej? forward UnJailPlayer(playerid); public UnJailPlayer(playerid) { if(JailUntil[playerid] > 0)//Jeżeli jest czas odsiadki { JailUntil[playerid] = JailUntil[playerid] - 1; //Co każdą sekundę zmniejsza czas o tą samą wartość czyli za pierwszym razem będzie 239 sekund }else //jeżeli się skończył { Wypuszcza gracza KillTimer(JailTimer(playerid)) } }Dobra, mamy odliczanie do końca odsiadki więc nie mamy się co martwić. Lecimy teraz z pokazaniem ile do końca czyli: stock ConvertSeconds(secs,&hours,&minutes,&seconds) { if(secs<0) return false; minutes = secs / 60; seconds = secs % 60; hours = minutes / 60; hours = hours % 60; minutes = minutes % 60; return 1; }->I teraz robimy taki myk w komendzie /odsiadka new h,m,s, strs[128]; ConvertSeconds(JailUntil[playerid],h,m,s); //Teraz przypisało nam godzinę, minutę i sekundę ile do końca odsiadki więc format(strs, sizeof strs, "Do końca odsiadki pozostało Ci %02d:%02d:%02d", h,m,s); SendClientMessage(playerid, 0xFFFFFFFF, strs);Tym oto sposobem w dokładności do sekund możemy zobaczyć ile pozostało nam do wyjścia z więzienia Pozdrawiam
  13. locus

    mutowanie przez tAB

    w OnPlayerText musisz dać jeszcze po tym jak jest zmutowany return 1; żeby nie szło dalej
  14. locus

    Zapis HP (życia) gracza

    Musisz do pliku zapisać wartość rzeczywistą "float", ale musisz przy tym użyć funkcji z tego DOF2, która umożliwia zapisaniu floatu i będzie grało
  15. locus

    mutowanie przez tAB

    Musisz gdzieś przechować pewne dane, które potrzebujesz do zmutowania. Takie dane nie mogą przechować się w małej zagnieżdżonej funkcji czy też małego skryptu. Tłumacząc na chłopski rozum musisz zrobić jedną zmienną globalną (na cały skrypt/gm), jest to jedna zmienna i niepowtarzalna (unikalna) jej powtórzyć się już po prostu nie da i w odpowiedniej tablicy zapisujesz dane, czyli wyżej napisałem ci coś takiego: enum MuteInfo { czas. powod[128], bool: zmutowany = false }; To świadczy o tym, że pod MuteInfo kryją się trzy przypisy, czyli new PlayerMuteInfo[MAX_PLAYERS][MuteInfo] to jest to samo co PlayerMuteInfo[MAX_PLAYERS][czas], PlayerMuteInfo[MAX_PLAYERS][powod][128] i PlayerMuteInfo[MAX_PLAYERS][zmutowany] Mając już dostępne trzy zmienne globalne które zapiszą twój czas, powód i stan zmutowanego przechowają go w swojej tablicy, a że jest to zmienna na MAX_PLAYERS to każdy gracz będzie miał unikalną wartość, więc nie ma problemu. Później tylko do odpowiednich dialogów wklejasz to co wyżej czyli PlayerMuteInfo[id][czas] = inputtext/60 zapisuje do tablicy gracza podanego w mutowaniu [id] czas [czas], który jest równy wpisanym minutom podzielone na 60 czyli w sekundach. Następnie przy dialogu z powodem robić podobnie czyli: PlayerMuteInfo[id][powod] = "inputtext" _________________________________________ Jak widzisz do dwóch tablic zapisały się tymczasowo wartości takie jak czas oraz powód wyciszenia. Teraz bezproblemowo można je odczytać i np wyświetlić text przy ostatnim dialogu wypełniając tekst powodu. format(string, sizeof string, "Gracz %s został wyciszony na %d minut za: %s", PlayerName(id), PlayerMuteInfo[id][czas]/60, PlayerMuteInfo[id][powod]); SendClientMessageToAll(0xFFFFFFFF, string); dałem /60 żeby pokazało minuty, bo wcześniej zamieniliśmy na sekundy ________________________________________ Po tych czynnościach możesz ustawić jemu wartość mutowania np. PlayerMuteInfo[id][zmutowany] = true W OnPlayerText dać, że if(PlayerMuteInfo[playerid][zmutowany] == true) SendClientMessage(playerid, 0xFFFFFFFF, "Nie możesz pisać jesteś wyciszony!"); Po tych czynnościach nie pozostaje nam nic innego jak odliczać do końca muta więc najlepiej użyć timera od zegara serwerowego który wykonuje się co 1000ms = 1s, albo zrobić własny timer, w którym będzie zawarta np nieszczęsna pętla for(new playerid; playerid <= MAX_PLAYERS; playerid++) { if(PlayerMuteInfo[playerid][zmutowany] == true) { if(PlayerMuteInfo[playerid][czas] > 0) { PlayerMuteInfo[playerid][czas]--; //lub PlayerMuteInfo[playerid][czas] = PlayerMuteInfo[playerid][czas] -1; } else // jak skonczyly się sekundy to odmutowywuje: { PlayerMuteInfo[playerid][zmutowany] = false; } } } Mam nadzieję, że pomogłem
×