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

Sprawdzenie Czy gracz steam czy NSbłąd tworzenia rekordów...


  • Zamknięty Temat jest zamknięty
Brak odpowiedzi do tego tematu

#1 AmD

    aemde

  • Użytkownik

Reputacja: 71
Pomocny

  • Postów:500
  • Steam:steam
  • Imię:Dariusz
  • Lokalizacja:Częstochowa
Offline

Napisano 08.02.2011 23:14

Witam!


mam problem z warunkiem sprawdzającym czy gracz jest steam czy NS, a mianowicie podczas łączenia się gracza powinno sprawdzić czy gracz ma rekord w bazie czy też nie, graczy steam sprawdza dobrze a dla NS raz działa raz nie...
Aktualnie mam tak:

public handle_load(FailState,Handle:Query,Error[],Errcode,Data[],DataSize){
if(FailState){
log_amx("SQL Error: %s (%d)", Error, Errcode)
return PLUGIN_HANDLED
}
new id = Data[0]
new PlayerName[32], args[32]
read_args(args, 31)
remove_quotes(args)
new steam[32]
get_user_authid(id, steam, sizeof steam - 1 )

if(SQL_MoreResults(Query) > 0)
{

PlayerXP[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"xp"))
PlayerLevel[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"lvl"))

SkillPoints[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "sptk"))
PtkGraw[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pgraw"))
PtkSpeed[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pspeed"))
PtkFuria[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pfuria"))
PtkFizyk[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pfizyk"))
PtkCzar[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pczar"))
PtkNc[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "pnc"))
marzenia[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "fbhy"))
gratz[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "gz"))
lpm[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "lpm"))
sprawdz_przejsca[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "s_prz"))
lpmt_os[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "lpmt_os"))
sprawdz_level[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "s_lvl"))
sprawdz_graw[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "s_graw"))
sprawdz_speed[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "s_speed"))
lpmtOS[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "lpmtos"))
os_scout[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "os_scout"))
os_scout_s[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "os_scout_s"))


new name[32]
get_user_name(id, name, 31)
log_to_file(sql_load, "Dane gracza ^"%s^" zostaly wczytane", name)

return PLUGIN_HANDLED
}
else
{
if(equal(PlayerName, "STEAM_ID_LAN") || strlen(steam) > 18){
get_user_name(id,PlayerName,charsmax(PlayerName));
}
else
{
get_user_authid(id,PlayerName,charsmax(PlayerName));
}

new cache[1024],pos

pos = formatex(cache, 1023, "INSERT INTO `fbh_xp` (sid, xp, lvl, sptk, pgraw, pspeed, pfuria, pfizyk, pczar, pnc, fbhy, gz, lpm, s_prz, lpmt_os, s_lvl, s_graw, s_speed, lpmtos, os_scout, os_scout_s) VALUES (");
pos += formatex(cache[pos], 1023 - pos, "'%s', '0', '0', '0', '0', '0', '0', '0', '0', '0',", PlayerName);
pos += formatex(cache[pos], 1023 - pos, " '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');");
log_to_file(sql_save, "Tworze Nowego Uzytkownika: %s", cache)
SQL_ThreadQuery(g_SqlTuple, "handle_save", cache)

return PLUGIN_HANDLED
}

return PLUGIN_HANDLED
}

próbowałem też sprawdzać czy gracz steam czy ns przez stock:

stock bool: is_user_steam(id)
{
static pcv_dp_r_id_provider;
pcv_dp_r_id_provider = get_cvar_pointer("dp_r_id_provider");
server_cmd("dp_clientinfo %d", id);
server_exec();

static uClient;
uClient = get_pcvar_num(pcv_dp_r_id_provider);

if ( uClient == 2)
return true;

return false;
}

lecz też nie działa...

Da się to naprawić?

Oraz jeszcze jedno pytanie:
Jak mogę zamienić znaki w nicku gracza tak by nie bugowały bazy (przykład " ' ", " " ", " \ ", itp)
myślałem by to zrobić tak:

replace_all(PlayerName,31,"^"^^^"","6")
replace_all(PlayerName,31,"*","8")
replace_all(PlayerName,31,":","0")
replace_all(PlayerName,31,"-","4")
replace_all(PlayerName,31,"=","5")
replace_all(PlayerName,31,">","7")
replace_all(PlayerName,31,"<","1")
replace_all(PlayerName,31,"?","3")
replace_all(PlayerName,31,"'","2")

ale albo nie działało, albo robiło podwójne rekordy w bazie...
Myślałem o SQL_QuoteString ale nie za bardzo wiem jak tym to zrobić...

Pozdrawiam!
  • +
  • -
  • 0




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

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