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

Memory AccessKnopers nie potrafi pomóc :)


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

#1 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 16.05.2010 20:00

Dobra, jak już w opisie dałem, Knopers wymiękł :D
Logi:
L 05/16/2010 - 20:57:35: [AMXX] Displaying debug trace (plugin "GangMod.amxx")
L 05/16/2010 - 20:57:35: [AMXX] Run time error 5: memory access 
L 05/16/2010 - 20:57:35: [AMXX]    [0] temp39.sma::AddRecord (line 247)
L 05/16/2010 - 20:57:35: [AMXX]    [1] temp39.sma::fwHamSpawnPost (line

Oraz kod:
public AddRecord(id)
{
if(!g_boolsqlOK)
sql_start()
else
{
new q_command[64], name[32], data[1]
get_user_name(id, name, 31)
format(q_command, 511, "INSERT INTO %s VALUES('%s', 'Brak', 0, 0);", g_sqlUserTable, name)
data[0] = id
SQL_ThreadQuery(g_SqlTuple, "AddRecordHandle", q_command, data, 1)
}
}

public AddRecordHandle(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
new id = Data[0]
if(Errorcode)
{
log_to_file("gang_sql.log","Error on Add Record query: %s",Error)
RecordCreated[id] = false
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("gang_sql.log","Could not connect to SQL database.")
RecordCreated[id] = false
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("gang_sql.log","Add Record Query failed.")
RecordCreated[id] = false
return PLUGIN_CONTINUE
}
RecordCreated[id] = true
return PLUGIN_CONTINUE
}


Na wszelki wypadek jeszcze funkcja sql_start:
public sql_start()
{
if(g_boolsqlOK) return

new host[128]
new user[64]
new pass[64]
new database[64]

get_pcvar_string(cvar_sql_db, database, 63)
get_pcvar_string(cvar_sql_host, host, 127)
get_pcvar_string(cvar_sql_login, user, 63)
get_pcvar_string(cvar_sql_pass, pass, 63)

g_SqlTuple = SQL_MakeDbTuple(host, user, pass, database)

get_pcvar_string(cvar_sql_gangstable, g_sqlGangTable, 63)
get_pcvar_string(cvar_sql_userstable, g_sqlUserTable, 63)

new q_command[512]
format(q_command,511,"CREATE TABLE IF NOT EXISTS `%s` ( `nick` VARCHAR( 64 ),`gang_name` VARCHAR( 64 ),`gang_id` integer( 3 ), `leader` integer( 2 ) ) ",g_sqlUserTable)

SQL_ThreadQuery(g_SqlTuple,"TableHandle",q_command)

format(q_command, 511, "CREATE TABLE IF NOT EXISTS `%s` ( `gang_name` VARCHAR( 64 ),`leader_name` VARCHAR( 64 ),`gang_id` integer( 3 ) auto_increment, `gang_lvl` integer( 3 ), PRIMARY KEY (gang_id) )", g_sqlGangTable)

SQL_ThreadQuery(g_SqlTuple, "TableHandle", q_command)
}

public TableHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
// lots of error checking
g_boolsqlOK=1
if(Errcode)
{
g_boolsqlOK=0
log_to_file("gang_sql.log","Error on Table query: %s",Error)
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("gang_sql.log","Could not connect to SQL database.")
g_boolsqlOK=0
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("gang_sql.log","Table Query failed.")
g_boolsqlOK=0
return PLUGIN_CONTINUE
}

return PLUGIN_CONTINUE
}


Nie mam pojęcia, co jest źle ^.^' Najlepsze jest to, że jedyne co zmieniałem to zapytanie z auto_increment z ktorym knopers mi pomogl ( i za co mu dziekuje ) a po pewnym resecie serwera wywala mi ten error ^.^'

Użytkownik Owner123 edytował ten post 16.05.2010 20:01

  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 16.05.2010 20:55

rezerwujesz 64 bajty
new q_command[64]
i pakujesz tam długi tekst (sam nick może mieć 32 bajty)
format(q_command, 511, "INSERT INTO %s VALUES('%s', 'Brak', 0, 0);", g_sqlUserTable, name)

zwiększ bufor lub zmniejsz maxlen formata
  • +
  • -
  • 2

#3 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

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

Napisano 17.05.2010 10:45

lub zarezerwuj wieksza pamiec dla pluginu :D

pamiec zwieksza sie uzywajac #pragma cos tam :D spytaj Ortegi albo sprawdz w war3 bo tam bylo :D
  • +
  • -
  • 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

#4 Owner123

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 17.05.2010 14:31

O LOL, nie zauważyłem xD
Dobre ReX leci pomógł.

Edit.
Dobra skoro już jest jeden temat nie będę zakladac drugiego.
Mam problem z funkcja sprawdzajacą czy dany rekord istnieje. Niby wszystko ok, nawet PhpMyAdmin zwraca prawidłowo. Rekord istnieje, a mimo wszystko dodaje kolejny rekord :F
kod:
public CheckRecord(id)
{
if(!g_boolsqlOK)
sql_start()
else
{
if(!Asked[id])
{
new q_command[128], name[32], data[1]
data[0] = id
get_user_name(id, name, 31)
format(q_command, 127, "SELECT * FROM `%s` WHERE nick = '%s';", g_sqlUserTable, name)
SQL_ThreadQuery(g_SqlTuple, "CheckRecordHandle", q_command, data, 1)
}
}
}

public CheckRecordHandle(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
new id = Data[0]
if(Errorcode)
{
log_to_file("gang_sql.log","Error on Select Record query: %s",Error)
Asked[id] = false
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("gang_sql.log","Could not connect to SQL database.")
Asked[id] = false
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("gang_sql.log","Select Record Query failed.")
Asked[id] = false
return PLUGIN_CONTINUE
}
if(!SQL_MoreResults(Query))
{
AddRecord(id)
Asked[id] = true
}
else
{
RecordCreated[id] = true
Asked[id] = true
}

return PLUGIN_HANDLED
}

Użytkownik Owner123 edytował ten post 17.05.2010 14:39

  • +
  • -
  • 0

#5 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 17.05.2010 16:29

if(!SQL_MoreResults(Query))
zamień na
if(!SQL_AffectedRows(Query))

  • +
  • -
  • 0

#6 Owner123

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 17.05.2010 16:42

Nadal to samo.

O shit, ale ja coś nie myśle ^.- Zamiast CheckRecord dałem od razu AddRecord xD
Dobra można Close.

Użytkownik Owner123 edytował ten post 17.05.2010 16:48

  • +
  • -
  • 0

#7 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

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

Napisano 17.05.2010 16:44

no to
if(!SQL_NumRows(Query))

Pomieszałem xD
teraz jasne, że affected jest do update`a, num od selecta
  • +
  • -
  • 0




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

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