Opublikowano 13 Sierpnia 20241 r Siema! Podrzucam wam system kuponow SM. Trochę ubogi ale zawsze cos 😛 (przynajmniej nie quest) Aktualnie jest pod 4 kupony ale nic nie stoi na przeszkodzie dodać sobie większa ilosc. (system nie zawiera kuponów jako sam itemek, wiec takowe musicie dodać se indywidualnie) Pobieralnia: Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto
Opublikowano 13 Sierpnia 20241 r Autor W dniu 13.08.2024 o 17:33, ExoCarossa napisał(a): Kojarzysz czyj to system? Może dorwę film pokazowy na guglu Moge na szybko dodac i podeslac ale dopiero po 22. Po prostu klikasz prawym na kupon i ci przyznaje smy + info na chacie o dokladnej ilosci. A czyj system? w sumie nie wiem nawet, na necie znalazlem i troche przerobiłem. Edytowane 13 Sierpnia 20241 r przez ARK
Opublikowano 13 Sierpnia 20241 r Programista Jest to strasznie złe rozwiązanie, bardzo dużo powtarzającego się kodu (boilerplate), zabieranie kuponu dopiero po nadaniu SM, możliwe wycieki pamięci. Napisałem na szybko nową wersję, trochę ją udokumentowałem, może się połapiecie (teraz wystarczy ustawić w bazie w value0 ilość SM): CKod został skopiowany switch (item->GetVnum()) { case 80014: // To też jest bez sensu, subtype sprawdziłby się lepiej. case 80015: case 80016: case 80017: { // Check possible actions if (GetExchange()) return false; if (GetShopOwner()) return false; if (IsOpenSafebox()) return false; // ... // Prepare string with query auto query = std::format( "UPDATE account.account SET cash = cash + {} WHERE id = {}", item->GetValue(1), GetAID()); // Remove coupon from player's inventory // and do it before give action (important) item->SetCount(item->GetCount() - 1); // When everything is ok (probably), run query const std::unique_ptr<SQLMsg> query_main = DBManager::instance().DirectQuery(query.c_str()); #ifdef ENABLE_REFRESH_SENDING // Update below query variable with new string query = std::format("SELECT cash FROM account.account WHERE id = {}", GetAID()); // Again, when everything is ok, send query to database const std::unique_ptr<SQLMsg> query_refresh = DBManager::instance().DirectQuery(query.c_str()); // Get data from refresh query and send to client using command const auto row = mysql_fetch_row(query_refresh->Get()->pSQLResult); ChatPacket(CHAT_TYPE_COMMAND, "BINARY_Update_Cash %s", row[0]);#endif } break; default: { break; } } // ...#define ENABLE_COINS_TICKETS #if defined(ENABLE_COINS_TICKETS) // #define ENABLE_REFRESH_SENDING#endif W gruncie rzeczy mając takie funkcje questowe jak np. charge_cash, nie widzę sensu robienia takich wydziwień tutaj, lepiej użyć lekkiego LUA, serio. Edytowane 13 Sierpnia 20241 r przez Thorek
Opublikowano 14 Sierpnia 20241 r takie rzeczy robi sie jako quescik zeby nie robic sobie smietnika w source. silniku gry tylko powinny byc systemy bez zadnych id itp bo to tylko syf sobie wiekszy robisz i musisz pozniej edytowac i kompilowac za kazdym razem Edytowane 14 Sierpnia 20241 r przez Kaszalotpospolity
Opublikowano 14 Sierpnia 20241 r Swoją drogą, ciekawi mnie czemu większość osób wszystko chce przenosić do src uważając to za lepsze rozwiązanie. Trzeba pamiętać, że nakładka w lua została zaprojektowana między innymi do takich celów. O ile mnie pamięć nie myli jak kolega wyżej pisał istnieje oryginalnie zaprojektowana taka funkcja do przydzielania SM.
Opublikowano 14 Sierpnia 20241 r Autor W dniu 14.08.2024 o 06:20, Sevence napisał(a): Swoją drogą, ciekawi mnie czemu większość osób wszystko chce przenosić do src uważając to za lepsze rozwiązanie. Trzeba pamiętać, że nakładka w lua została zaprojektowana między innymi do takich celów. O ile mnie pamięć nie myli jak kolega wyżej pisał istnieje oryginalnie zaprojektowana taka funkcja do przydzielania SM. Pewnie chodzi o performance, c++ bezpośrednio wykonywany, wiec pod względem surowej prędkości ma przewagę nad questem. Chodź w tym przypadku pewnie marginalna różnica jest. Ale fakt faktem bez sensu interpretować id kuponów w src, juz lepiej wyszlo by dorobienie odczytu z osobnego pliki gdzie będzie definiowane id itemka i wartość sm + komenda reload żeby nie kompilować co chwile game albo właśnie jak wyżej Thorek, ciągnęło z proto. Edytowane 14 Sierpnia 20241 r przez ARK
Opublikowano 14 Sierpnia 20241 r Programista W dniu 14.08.2024 o 09:42, ARK napisał(a): Pewnie chodzi o performance, c++ bezpośrednio wykonywany, wiec pod względem surowej prędkości ma przewagę nad questem. Chodź w tym przypadku pewnie marginalna różnica jest. Ale fakt faktem bez sensu interpretować id kuponów w src, juz lepiej wyszlo by dorobienie odczytu z osobnego pliki gdzie będzie definiowane id itemka i wartość sm + komenda reload żeby nie kompilować co chwile game albo właśnie jak wyżej Thorek, ciągnęło z proto. Nie wiem czemu wszyscy uwzieli się na te questy, LUA jest szybsze jeśli chodzi o callback do C niż chociażby Python. Tyle, że nikt z jakiegoś powodu nie zaczyna przepisywać UI do C++ (może za trudne?) Edytowane 14 Sierpnia 20241 r przez Thorek
Opublikowano 5 Sierpnia 20255 Sie Można też dać w taki sposób w formie questa.LuaKod został skopiowany quest kuponsm begin state start begin function GetVoucherValue(item_vnum) local values = { [80014] = 100, [80015] = 500, [80016] = 1000, [80017] = 50 }; return values[item_vnum] end when 80014.use or 80015.use or 80016.use or 80017.use begin local item_vnum = item.get_vnum(); pc.remove_item(item_vnum, 1); local voucher_value = kuponsm.GetVoucherValue(item_vnum); query(string.format("UPDATE `account`.`account` SET `cash` = `cash` + %d WHERE `id` = %d;", voucher_value, pc.get_account_id())) syschat(string.format("Właśnie dodano %d SM na twoje konto!", voucher_value)) end endend
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto