Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
primary key przy tworzeniu bazy
#1
Napisano 28.08.2011 13:25
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#2
Napisano 28.08.2011 14:12
Musisz mieć bool'a do sprawdzenia czy ma steama
if(is_user_steam(id)) { //kod } else { new name; get_user name .... }
If you can dream it, you can do it.
#3
Napisano 28.08.2011 15:03
I może jeszcze przy okazji drugie pytanie. Jeśli w jednym pluginie zmieniam wartość obrażeń poprzez hamsandwich, to jakie obrażenia będą zwracane w drugim pluginie eventem "Damage"?
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#4
Napisano 28.08.2011 15:40
#5
Napisano 28.08.2011 15:47
Użytkownik sebul edytował ten post 28.08.2011 15:47
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#6
Napisano 28.08.2011 16:14
#7
Napisano 31.08.2011 18:18
Odpowie ktoś? Da się łączyć dwie tabele w statach? Czy może jednak będzie to działało dobrze (czyli wpisy nie będą się dublowały) jak ustawie ten key na nick?
Przed chwilą trochę testowałem jak jest z tym zapisem, no i nie da się tak jak chcę, jak primary key jest na nick, to zawsze robi nowe konto jeśli nick zmienię. Pozostaje teraz opcja z dwoma bazami, tylko aktualnie nie wiem czy w ogóle da się coś wtedy zrobić ze statami.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#8
Napisano 31.08.2011 18:47
$player = ("SELECT a.*,b.* FROM $dbtable a, $dbtable2 b WHERE a.playerid = '".$nick."' AND b.playerid = '".$nick."'"); $query2 = mysql_query($player)or die(mysql_error()); while ($row = mysql_fetch_array($query2)) {Sprawdza nick w tabelce dbtable i dbtable2
If you can dream it, you can do it.
#9
Napisano 31.08.2011 19:47
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#10
Napisano 31.08.2011 20:59
2. jesli plugin bedzie za diablo model w plugins.ini to będzie dobrze pokazywać .Sam mam swojego Diablo mod w całości zrobionego przez hamsandwich,Majac kiedyś plugin Abd (od pokazywania dmg działał on zgodnie z prawdziwym zadawanym dmg (zręczność itp )
#11
Napisano 31.08.2011 21:25
#12
Napisano 01.09.2011 11:06
Tak właśnie mam zrobione, ale nie wiem jak ustawić primary keya do takiego zapisu, bo jeśli go nie ustawię, to wpisy mogą się dublować. Robiło się tak u mnie kilka miesięcy temu, ale ktoś napisał na to poradnik tutaj na forum, to od ostatniego czyszczenia bazy mam to już z głowy. A jeszcze co do primary keya, to jak ustawie go na nick, to przy zmianie nicku, nawet przy tym samym sidzie zawsze robi się nowy wpis w tabeli, czyli pewnie to samo by było jakbym ustawił go na sid, czyli gracz ze zmiennym IP nie pograł by sobie, bo zawsze po zmianie IP tworzyło by mu się nowe konto.nie wiem dlaczego nikt nie wpadl na to jak to połączyc ale moze zapisuj do bazy cos jak nick,sid,lvl,xp,staty i przy wejsciu gracza sprawdzaj jesli sid to wyciagaj recordy z danym sidem jesli nie steam to wyciagaj z nickiem ewentualnie zrob cos jak identyfikator i przy zapisie zapisuj sid/nick i przy odczycie to samo wybieraj sid/nick zaleznie od tego czy ma steam czy nie
1. Co do wyświetlania sidów, to na pewno to nie jest jakiś duży problem, tak jak napisałeś, może coś źle wtedy ustawiłeś. Przenoszenie expa też dało by radę załatwić, wystarczyło by dodać jakieś jedno okienko i tam wybierało by się, czy podajemy sid czy nick.1. Kiedyś próbowałem zrobić zapis taki jak wyżej all działało tylko miałem problem z wyświetlaniem w statystykach tz. wyświetlane byly nicki i Steam_id (pewnie moj blad) i problem był tez z przenoszeniem expa przez panel i dlatego odeszlem od tego sposobu .
2. jesli plugin bedzie za diablo model w plugins.ini to będzie dobrze pokazywać .Sam mam swojego Diablo mod w całości zrobionego przez hamsandwich,Majac kiedyś plugin Abd (od pokazywania dmg działał on zgodnie z prawdziwym zadawanym dmg (zręczność itp )
2. Już to przetestowałem wcześniej i w evencie damage zwraca już zmienione obrażenia, chyba nawet kolejność w plugins.ini tutaj nie robi różnicy, ale nie przypatrywałem się temu.
Czyli sugerujesz, żeby każdy gracz miał swoje id w tabeli? Tylko jak je odczytywać przy łączeniu się gracza z bazą? Do tego nie korzystam z jakichś optymalizacji łączenia z bazą w swoim diablo, to też za każdym razem gdy na serwer wejdzie ktoś nowy, tworzy 12 wpisów (mam 12 klas) w tabeli, a zbyt dużą ilość połączeń z bazą w tym samym momencie rozwiązałem na swój sposób, trochę prymitywny z wykorzystanie taska, ale wszystko działa dobrze.W sytuacji gdy nie wiadomo co identyfikuje rekord w tabeli używa się klucza sztucznego AUTO_INCREMENT i za jego pomocą można precyzyjnie autoryzować graczy. Poza tym proponuję zapoznać się z relacyjnym modelem baz danych, bo ładowanie wszystkiego do jednej tabeli to nie jest idealne rozwiązanie.
A co do zapisu do jednej bazy, to w przypadku diablo, tam aż tak bardzo dużo tego nie ma, więc chyba nie ma sensu tego rozdzielać na kilka tabel...? A tym bardziej, że aktualnie w bazach danych to ja jestem zielony, no może nie aż tak bardzo, ale jednak.
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#13
Napisano 03.09.2011 06:39
if(!is_user_steam(id))
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `ip`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `nick`='%s' AND `klasa`='%i' ",g_sqlTable,ip,sid,player_lvl[id],player_[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],name,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save__handle",q_command)
}
else
{
new q_command[512]
format(q_command,511,"UPDATE `%s` SET `nick`='%s',`ip`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,ip,player_lvl[id],player_[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],sid,player_class[id])
SQL_ThreadQuery(g_SqlTuple,"Save__handle",q_command)
}
//kod z czystego 5.9l
stock bool:is_user_steam(id)
{
new authid[32];
get_user_authid(id, authid, 31);
return containi(authid , ":") != -1 ? true : false;
}
ja tak zrobiłem w GunXPmodzie i działa bezproblemowo, a nawet rozwiązało 1 problem
rozumiem, że Diablo to inna bajka, ale to akurat powinno działać na moje oko
Użytkownik stepdub edytował ten post 03.09.2011 06:41
#14
Napisano 03.09.2011 10:39
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#15
Napisano 11.09.2011 22:45
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych