←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] użycie callfunc

Locked

  • +
  • -
Jak się nazwać's Photo Jak się nazwać 26.01.2012

Siema mam pytanie dotyczące callfunc tzn chodzi czy dobrze rozumuję:
np:

callfunc_begin("ZapiszDane", "ZapisSql.amxx")
callfunc_push_int(misja[id])
callfunc_push_int(postep[id])
callfunc_push_int(done[id])
callfunc_end()

czyli funkcja w pluginie ZapisSql ma wyglądać tak?

public ZapiszDane(misja, postep, done)
{
}


oraz czy w callfuncbegin do nazwy pluginu dodać .amxx?
Quote

  • +
  • -
DarkGL's Photo DarkGL 26.01.2012

czyli funkcja w pluginie ZapisSql ma wyglądać tak?

tak

oraz czy w callfuncbegin do nazwy pluginu dodać .amxx?

tak
Quote

  • +
  • -
MarWit's Photo MarWit 26.01.2012

np:


callfunc_begin("ZapiszDane", "ZapisSql.amxx")
callfunc_push_int(misja[id])
callfunc_push_int(postep[id])
callfunc_push_int(done[id])
callfunc_end()

czyli funkcja w pluginie ZapisSql ma wyglądać tak?

public ZapiszDane(misja, postep, done)
{
}


Powinno być dobrze, chociaz ja bym zrobił to tak by plugin sie nie wysypał:


if(callfunc_begin("ZapiszDane", "ZapisSql.amxx") < 0)
return -1;

callfunc_push_int(misja[id])
callfunc_push_int(postep[id])
callfunc_push_int(done[id])
callfunc_end()


oraz czy w callfuncbegin do nazwy pluginu dodać .amxx?


Tak
Quote

  • +
  • -
Jak się nazwać's Photo Jak się nazwać 26.01.2012

ok dzięki. Ale teraz pytanie jak z wczytywaniem danych. tzn jak przypisać te dane do zmiennych z innego pluginu chodzi mi o takie coś że np kod zapisu dodaje te rekordy do sqlite a jak później je wyciągnąć (dodam że natywy nie wchodzą w grę, próbowałem też zwracać natywem z głównego pluginu uchwyt bazy danych ale nie działało)
tak wyglądał ten natyw

public _sql_get_handle()
    return _:g_SqlTuple

tak więc chodzi o takie coś mniej więcej

callfunc_begin("WczytajDane", "ZapisSql.amxx")
callfunc_push_int(misja[id])
callfunc_push_int(postep[id])
callfunc_push_int(done[id])
callfunc_end()


i do tych zmiennych przypisywałyby się wartości wczytane z sql
wczytywanie danych wygląda tak:

public WczytajMisje(id)
{
    new Data[1]
    Data[0] = id
    formatex(gQuery, charsmax(gQuery), "SELECT * FROM `CodMisje` WHERE `nick` = ^"%s^"", nazwa_gracza[id])
    SQL_ThreadQuery(gTuple, "WczytajMisjeHandler", gQuery, Data)
}

public WczytajMisjeHandler(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
    if(FailState == TQUERY_CONNECT_FAILED)
    {
        log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
    }
    else if(FailState == TQUERY_QUERY_FAILED)
    {
        log_amx("Load Query failed. [%d] %s", Errcode, Error)
    }
    
    new id = Data[0]
    
    if(SQL_NumResults(Query) < 1)
    {
        formatex(gQuery, charsmax(gQuery), "INSERT INTO `CodMisje` VALUES (^"%s^")", nazwa_gracza[id])
        SQL_ThreadQuery(gTuple, "QueryHandleStandard", gQuery)
    }
    else
    {
        zadanie_gracza[id]                = SQL_ReadResult(Query, 1)
        postep[id][zadanie_gracza[id]]    = SQL_ReadResult(Query, 2)
        done[id]                        = SQL_ReadResult(Query, 3)
    }
}
Quote

  • +
  • -
MarWit's Photo MarWit 26.01.2012

Int - callfunc_push_intrf
Float - callfunc_push_floatrf
String - callfunc_push_intrf z drugim argumentem ustawionym na true
Tablica - callfunc_push_array z trzecim argumentem ustawionym na true
callfunc_end - zwraca return funkcji
Quote

  • +
  • -
Jak się nazwać's Photo Jak się nazwać 26.01.2012

ok. zobaczę co mi wyjdzie jak co to edytuję posta@@ Ok next pytanie w sumie chcę się upewnić że jeżeli funkcja zwróci 0 to wywoła się task
if(!callfunc_end())        set_task(1.0, "WczytajMisje")


ok tak to ma wyglądać?
1 plugin

public WczytajMisje(id)
{
    callfunc_begin("WczytajMisje", "QTM_CodMod.amxx")
    callfunc_push_int(id)
    callfunc_push_intrf(zadanie_gracza[id])
    callfunc_push_intrf(postep[id][zadanie_gracza[id]])
    callfunc_push_intrf(done[id])
    if(!callfunc_end())
        set_task(1.0, "WczytajMisje")
}

2 plugin


public WczytajMisje(id, misja, postep, done)
{
    if(!zaladowal) return 0
    misja = wczytana_misja[id]
    postep = wczytany_postep[id]
    done = wczytany_done[id]
    return 1
}

Edited by Jak się nazwać, 26.01.2012 15:01.
Quote

  • +
  • -
MarWit's Photo MarWit 26.01.2012

Tak
Quote

  • +
  • -
Jak się nazwać's Photo Jak się nazwać 26.01.2012

Ok do zamknięcia jednak wolę kombinować z zwracaniem tuple natyvem (mniej kombinowania niż tu ;P)
Quote

  • +
  • -
MarWit's Photo MarWit 26.01.2012

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Posted Image raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked