Skocz do zawartości

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

Forwardy i Handl - typ SQLx


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

#1 diggs

    Wszechwidzący

  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 10.08.2011 21:46

Witam, chcę się dowiedzieć czy jest jakiś sposób na przesłanie za pomocą forward'u wartości typu Handle zwracanej przez SQL_Connect(). Potrzebuje szybkiej i konkretnej odpowiedzi.

Jeśli się nie da to czy ktoś zna sposób wykonania 3 różnych zapytań SQL w 3 różnych pluginach podczas tego samego połączenia z bazą danych.

Dodam że myślałem nad wykonaniem tego za pomocą SQL_ThreadQuery(), a nie SQL_Execute() z tym że potrzebował bym przesłać do pozostałych 2 pluginów wartość typu Handle zwracaną przez SQL_MakeDbTuple().

Zabieg jaki chce osiągnąć to aby tylko w jednym pluginie podawane były adres, login, pass i nazwa do bazy danych, i zsynchronizowanie wykonywanych zapytań.
  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.08.2011 22:20

wartość typu handle to zwyczajnie komórka pamięci, więc FP_CELL i przy wywołaniu podajesz zmienną Handle:

możesz udostępnić w ten sposób tuple do połączenia z bazą, który też jest typu Handle: i masz jeden plugin z tworzeniem uchwytu i reszta korzysta już tylko z niego (nie zna login i hasła)
  • +
  • -
  • 1

#3 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 11.08.2011 11:36

A jak odebrać tą wartość? Przez zmienną typu int a potem przypisać ją do zmiennej typu hanlde, czy może od razu do zmiennej typu handle?

Chodzi mi o to jakie parametry musi mieć funkcja wywoływana przez forward.
public funkcja(zmienna)
{
     new Handle:conection = zmienna;
     // pozostale operacje
}
Czy może
public funkcja(Handle:conection
{
     // pozostale operacje
}
I czy aby na pewno to zadziała? Nie wiem jak w PAWN'ie ale w C++ jest tak że różne typy zmiennych zajmują różna ilość miejsca w pamięci. I biorąc, np wskaźnik typu int i pokażemy nim na miejsce w pamięci w której znajduje się wartość innego typu nie pokaże on właściwej wartości.
  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 11.08.2011 13:05

Pobierz wprost Handle:
forward funkcja (Handle:Tuple);
public funkcja(Handle:conection)
{
     // pozostale operacje
}

W pawnie wszystkie zmienne proste mają ten sam rozmiar równy cellbits(32 lub 64) bitom. Nie ma mowy o typach danych, tutaj posługujemy się tagami. Wszystkie `wskaźniki` są indeksami tablic, a nie adresami w pamięci jak w C.
  • +
  • -
  • 1

#5 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 11.08.2011 15:24

No dobra, a jak wysłać tą zmienną? Robię to tak:
g_fwpierwszy = CreateMultiForward("funkcja_fw", ET_CONTINUE, FP_CELL);
ExecuteForward(g_fwpierwszy, SqlConnection);
Gdzie SqlConnection to
SqlConnection = SQL_Connect();
Po sprawdzeniu czy nawiązano połączenie.

EDIT.
Ten sposób wywala błąd w lini ExecuteForward - Tag mistmatch - czy jak tam to się pisze, w każdym razie że typ jest niewłaściwy

Użytkownik diggs edytował ten post 11.08.2011 15:29

  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 11.08.2011 15:28

przeczytaj tutorial o Forwardach

new iRet;
ExecuteForward(g_fwpierwszy, iRet, SqlConnection);

i tutorial o SQLx, SQL_Connect() a potem Execute powoduje wykonanie zapytania w trybie synchronicznym, czyli serwer zatrzymuje się i czeka na odpowiedź MySQL; każde zapytanie spowoduje ok 200ms laga
  • +
  • -
  • 1

#7 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 11.08.2011 15:33

Zapomniałem o iRet, dopiero zaczynam zabawę z forwadami, a tutka czytałem.

Co do SQL_Connect() dzięki za zwrócenie uwagi, bo również pisze jak byk w tutorialu a ja to znów przeoczyłem. Na szczęście nie mam dużo do poprawiania.

EDIT.
Może będziesz wiedział przy okazji do czego odnosi się ostatni parametr funkcji:
SQL_SimpleQuery ( Handle:db, const query[], error[]="", maxlength=0, &rows=0 )

Użytkownik diggs edytował ten post 11.08.2011 15:50

  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png





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

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