Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Zadania w grze


Rekomendowane odpowiedzi

Opublikowano

Witam !

 

Z racji tego iż wiele osób nie umie zrobić zadań do swojej gry postanowiłem zrobić Tutorial jak wykonać taki skrypt.

Wykonam też pewnego gotowca dla użytkowników silnika ErPg v0.9.

 

Let's go!

 

Najprostszym i najlepszym sposobem na zrobienie misji w grze jest zastosowanie popolarnej funkcji IF.

* IF - (ang.) Jeśli

 

Teraz opiszę zasadę działania:

 

<?

if($uzytkownik['misja'] == 0)
{
 echo "Zabij 15 potworów a otrzymasz 200 złota ";

 if($uzytkownik['zabitepotwory'] >= 15)
 {

  mysql_query("UPDATE `gracze` SET `misja` = misja+1  WHERE gracz='".$uzytkownik['gracz']."'");
  mysql_query("UPDATE `gracze` SET `zloto` = zloto+200  WHERE gracz='".$uzytkownik['gracz']."'");

 }

}
?>

 

WYJAŚNIAMY:

if($uzytkownik['misja'] == 0)

Jeśli użytkownik posiada tabelkę ,,misja" i w niej jest wartość 0 wyświetlamy komunikat , który informuje ile mamy potworów zabić. Tworzymy następnego IFa

 if($uzytkownik['zabitepotwory'] >= 15)

Sprawdza on czy użytkownik zabił 15 potworów lub więcej. Jeśli tego nie zrobił powraca do poprzedniego IFa i wyświetla komunikat. Kiedy gracz zabił 15 potworów wysyłamy zapytanie do bazy aby uaktualniło rekordy w bazie danych.

UPDATEujemy między innymi misje +1 żeby już nie wyświetlało nam ukończonej misji oraz dodajemy określoną ilość złota.

Skrypt można jeszcze bardziej rozbudować np. podając graczowi na jakim etapie jest podczas wykonywania misji.

Na przykład:

Zabite potwory : ".$uzytkownik['zabitepotwory']."/15

I tutaj sprawdza ile gracz zabił potworów i na końcu wpisujemy /X czyli wartość , którą wybraliśmy do sprawdzenia i w tym wypadku tą liczbą jest 15.

 

Zapomniałem dodać , że aby wszystko poprawnie działało musicie wyciągnąć informacje na temat użytkownika z bazy i przypisać do zmiennej np.

$uzytkownik = mysql_fetch_array(mysql_query("select * from gracze where gracz = ".$_SESSION['user']));

oraz dodać w bazie danych tabelkę , która sprawdza poziom misji czyli w tym wypadku ,,misja" i obowiązkowo dodać zapytanie po wygranej walce z potworem wysyłanie zapytania +1 do tabelki zabite potwory. W silniku ErPg v0.9 jest to już zrobione!

 

Jeśli będzie zainteresowanie dodam Tutorial jak zrobić w skrypcie zadań pasek , który się przesuwa wraz z postępem ukończania zadań ;)

 

Czegoś nie zrozumiałeś? Zadaj pytanie w tym temacie.

WymianaSMS.pl - wymień smsy na kupony paysafecard, steam lub doładowania telefoniczne!

Opublikowano

Ciekawie,ale :

1. Misje czasowe typu czekaj 15 min a dostaniesz xxx (z ładnym opisem)

2. Nie lepij zrobić to w oparciu o MySQL ?

Chodzi o to bym mógł dodawać misje z poziomu panela admina w grze ,a nie posiadając wgląd w kod.

3. PO CO STRING W ZAPYTANIU !?

 

<? ?> = WTF !?

4. Zabezpieczasz przed sql inject !?

5. Jak wymyśle to zeedytuje

Przyjmuje zlecenia dot. web masterki.

while(!$success){
....try();
}

 

Opublikowano

1. Misje czasowe

* Dobra zrobię jak będe miał czas ;)

2. Właśnie chodzi mi o to żeby się nauczyli czegoś :P Chociaż mogę tak zrobić.

WymianaSMS.pl - wymień smsy na kupony paysafecard, steam lub doładowania telefoniczne!

Opublikowano

Lepeij zrobic to w oparciu mysql i sworzyc funkcje sprawdzajaca np czy jestesmy w danym pliki czyli

Mamy misje porozmawiaj z trenerem i gdy klikniemy na zakladke trener funkcja nam sprawdza czy jestesmy w zakladce trener i czy np mamy wgl ta misje.

Pisze o tym bo najczesciej sa to uzywane misje w grach typu rpg

Opublikowano

UP@ i takie misje są najnudniejsze -.-

Ja mam pomysł na ciekaffe misje ,ale ich nie podam bo zgapicie :c

Kolejna seria :

 

  mysql_query("UPDATE `gracze` SET `misja` = misja+1  WHERE gracz='".$uzytkownik['gracz']."'");
	  mysql_query("UPDATE `gracze` SET `zloto` = zloto+200  WHERE gracz='".$uzytkownik['gracz']."'");
  ;
 }

A na chuj ten dodatkowy średnik ^.- ? ( 3 linijka)

Przyjmuje zlecenia dot. web masterki.

while(!$success){
....try();
}

 

Opublikowano

Usunięty :D Spokojnie ludzie daję skrypcik zadań dla newbie. Jak bym odrazu dał gotowca to nikt by nawet tu nie zerknął :D

WymianaSMS.pl - wymień smsy na kupony paysafecard, steam lub doładowania telefoniczne!

Opublikowano

mysql_query("UPDATE `gracze` SET `misja` = misja+1 WHERE gracz='".$uzytkownik['gracz']."'");

mysql_query("UPDATE `gracze` SET `zloto` = zloto+200 WHERE gracz='".$uzytkownik['gracz']."'");

 

Nie lepiej zapisać

 

mysql_query("UPDATE gracze SET zloto=zloto+200 WHERE gracz=$uzytkownik[gracz]");

mysql_query("UPDATE gracze SET misja=misja+1 WHERE gracz=$uzytkownik[gracz]");

Nie trzeba wtedy uważać na apostroy , co wiąże się z mniejszą szansą na błąd.

Przyjmuje zlecenia dot. web masterki.

while(!$success){
....try();
}

 

Opublikowano

Dobra Sodema bo dissujesz go tak jak moje skrypty.

 

Może i to rozwiązanie jest OK bo jest też coś takiego co nazywam "number out of range" (jakoś tak). Czyli ,że jeśli ilczba jest większa niż z jakiegoś tam zakresu to jest ona uważana za string ,a nie liczbę.

Specjalista
Opublikowano

Ja bym to zrobił tak

Stworzyłbym 2 tabele

1)quest -> id,poziom,PktWyk,PktFin,kasa,typ

id - wiadomo

poziom - wyznacza min poziom gracza, ktory może wziąć ta misje

PktWyk - początkowa wartość wykonania misji

PktFin - koncowa wartosc wykonania misji

kasa- ilosc otrzymanej kasy z wykonanie misji

 

 

 

2)quest_on - > id,id_gracz,id_quest,PktWYk,PktFin,kasa,

id - wiadomo

id_gracz - id gracza , który podjął się wykonywania misji

id_quest - id questy, sprzyda się później żeby gracz nie mógł brać 2 tych samych misji ;)

PktWyk - początkowa wartość celów misji. Za każde wykonanie celu misji będzie przyznawać +1 , bądź ile kto tam chce

PktFin - Ilość celów misji, które liczą się do zadania . Jeżeli PktWyk = PktFin = misjia skonczona

kasa - ilosc wyplacanego zlota za skonczenie misji

 

To tak macie baze zaprojektowaną , a kod to 'formalnosc' ;)

Oczywiście można tutaj dodać przerózne pola, zależy to od typu misji .

Można uwzględnić czas i etc ;)

 

Jak ktoś nie wie, to pisać pw, albo gg to się jakoś dogadamy

1350774 ;)

Specjalista
Opublikowano

Dodałem jeszcze do tabeli " quest_on " kolumne " id_quest " ;)

Będzie potrzebna opracowywaniu misji ;)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...