Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

primary key przy tworzeniu bazy


  • Zamknięty Temat jest zamknięty
14 odpowiedzi w tym temacie

#1 sebul

    Godlike

  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.08.2011 13:25

Dodałem do swojego diablo 4 opcję zapisu, polega ona na tym, że jeśli ktoś ma steama to zapis u niego będzie na steam, a jeśli ktoś go nie ma, to zapis będzie na nick. Jak ustawić w takim wypadku primary key? Czy można tak zrobić, aby brało pod uwagę nick i sid, czy jednak trzeba wybrać tylko jedno?
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#2 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1574
Godlike

  • Postów:2733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 28.08.2011 14:12

Możesz sprawdzić czy gracz posiada steam'a , jeśli nie posiada wpis będzie pusty i zapiszę się na nick oto chodzi ? :)
Musisz mieć bool'a do sprawdzenia czy ma steama :]
if(is_user_steam(id))
 
{ 
//kod
}
else
{
new name;
get_user name ....
}

  • +
  • -
  • 0

If you can dream it, you can do it.


#3 sebul

    Godlike

  • Autor tematu
  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.08.2011 15:03

Heh... Pytałem się o coś innego. Chodzi mi o tworzenie primary keya przy tworzeniu tabeli, jeśli zapis byłby na sid (gdy gracz ma steam) lub na nick (jeśli gracz nie ma steama).

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"?
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#4 A może sma?

    Godlike

  • Power User

Reputacja: 540
Wszechwiedzący

  • Postów:1464
  • GG:
  • Steam:steam
  • Imię:Tomasz
  • Lokalizacja:Polska
Offline

Napisano 28.08.2011 15:40

W zależności od tego jak wywołasz funkcję zmieniającą obrażenia.
  • +
  • -
  • 0

#5 sebul

    Godlike

  • Autor tematu
  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.08.2011 15:47

Obrażenia są zmieniane przed ich zadaniem, ale może już to zostawmy, dzisiaj postaram się napisać dwa pluginy i to przetestować. Czekam na odpowiedź w sprawie tego primary keya.

Użytkownik sebul edytował ten post 28.08.2011 15:47

  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#6 DarkGL

    Nie oddam ciasteczka !

  • Właściciel

Reputacja: 6087
Godlike

  • Postów:10960
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 28.08.2011 16:14

może rozdziel to na dwie tabele będzie prościej ;)
  • +
  • -
  • 0

#7 sebul

    Godlike

  • Autor tematu
  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 31.08.2011 18:18

A co potem ze statystykami? Da się łączyć dwie bazy tak aby na stronie wyświetlały się staty z dwóch baz?

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.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#8 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1574
Godlike

  • Postów:2733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 31.08.2011 18:47

Tak da się z dwóch tabel przykład
$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
  • +
  • -
  • 1

If you can dream it, you can do it.


#9 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1340
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 31.08.2011 19:47

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
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

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) :D

#10 Stachuu :D ??

    Wszechobecny

  • Użytkownik

Reputacja: 235
Wszechwidzący

  • Postów:476
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Karsznice
Offline

Napisano 31.08.2011 20:59

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 )
  • +
  • -
  • 0

#11 R3X

    Godlike

  • Przyjaciel

Reputacja: 2964
Godlike

  • Postów:4248
  • Lokalizacja:Nie
Offline

Napisano 31.08.2011 21:25

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.
  • +
  • -
  • 0

#12 sebul

    Godlike

  • Autor tematu
  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.09.2011 11:06


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

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.

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 )

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.

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.

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.

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.
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.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#13 stepdub

    Profesjonalista

  • Użytkownik

Reputacja: 43
Pomocny

  • Postów:207
  • Lokalizacja:Kobyłka
Offline

Napisano 03.09.2011 06:39

ja cały czas nie rozumiem po przeczytaniu tego tematu czemu nie zrobisz tak:
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_xP[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],name,player_class[id])

SQL_ThreadQuery(g_SqlTuple,"Save_xP_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_xP[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],sid,player_class[id])

SQL_ThreadQuery(g_SqlTuple,"Save_xP_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

  • +
  • -
  • -1

#14 sebul

    Godlike

  • Autor tematu
  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 03.09.2011 10:39

Temat nie jest o tym jak zrobić zapis na sid, albo nick, tylko jak ustawić "główny" klucz przy odczycie i zapisie do bazy, żeby przypadkiem się nie dublował, bo w diablo standardowym właśnie klasy przy tym samym nicku czasami się dublują.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#15 sebul

    Godlike

  • Autor tematu
  • Junior Admin

Reputacja: 2017
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 11.09.2011 22:45

Można zamknąć, pozostanę przy zapisie na nick, czyli nie będę na marne kombinował jak to zrobić.
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych