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
Modyfikacja

Dodanie kolumny w medalach (mysql)

Modyfikacja

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
28 odpowiedzi w tym temacie

#21 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.08.2012 15:23

public Wyczysc(id) {
for(new i = 0; i < staty; i++)
gStaty[i][id] = 0;

formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='STEAM_ID_LAN';");
SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);
}

  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#22 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 02.08.2012 15:33

public Wyczysc(id) {
for(new i = 0; i < staty; i++)
gStaty[i][id] = 0;

formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='STEAM_ID_LAN';");
SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);
}


Dzięki, jeszcze jak można proszę o nie zamykanie tematu, w przeciągu paru dni się upewnie czy wszystko w porządku i dam znać

Jeszcze przypomnę pytanie - co z NSami z wygenerowanym SID'em przez dproto ?

Użytkownik aerocell edytował ten post 02.08.2012 15:39

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#23 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 02.08.2012 18:00

Jeszcze przy okazji, jak chcę, aby plugin usuwał "osoby" z steam id "BOT" lub "HLTV" to dodaje kolejną linijkę
		formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='BOT';");
formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='HLTV';");


Czy mogę to jakoś skrócić, żeby kod miał jak najmniej kodu?:P
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#24 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

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

Napisano 02.08.2012 18:06

Po co chcesz usuwać bota i hltv, skoro tak i tak nie będą oni mieli więcej fragów niż gracz. Najłatwiej zrobić warunek
if(!is_user_bot(id) && !is_user_hltv(id))

  • +
  • -
  • 0

If you can dream it, you can do it.


#25 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 02.08.2012 18:47

Po co chcesz usuwać bota i hltv, skoro tak i tak nie będą oni mieli więcej fragów niż gracz. Najłatwiej zrobić warunek

if(!is_user_bot(id) || !is_user_hltv(id))


Właśnie o to chodzi, że w nocy zostaje 6 botów, żeby jak ktoś chciał wejść na serwer to nie był sam. Gdzie ten warunek dopisać?

ps. po tej edycji co napisałem wyżej (żeby usunać sid hltv i id_lan) znow steam_id_lan się pojawił w tabeli
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#26 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 18.08.2012 13:32

Ref.
Czasami mi się dublują wpisy i są np. 2 albo 3 takie same steam_id - jak temu zapobiec?
I gdzie dać ten warunek, co podał speedkill?
Dodatkowo jeszcze - czemu na serwerze w kolumnie "suma" zlicza ilość medali a nie ilość punktów?
Obecne SMA wygląda tak:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <sqlx>
#include <colorchat>

new const nazwy[][] = { "Zlote", "Srebrne", "Brazowe" }

new Handle: g_SqlTuple;
new gQuery[512];

enum _:staty { KILL, GOLD, SILVER, BRONZE }
enum _:cvary { HOST, PASS, USER, DBNAME, MIMPLR }

new gStaty[staty][33];
new gCvary[cvary];
new gNick[33][33];
new gSid[33][33];

new gData[2048], len, gLast;

public plugin_end() SQL_FreeHandle(g_SqlTuple);

public plugin_init() {
register_plugin("Medale SQL Ver", "1.2", "byCZEK");

register_event("DeathMsg", "event_death", "a");

register_message(SVC_INTERMISSION, "MsgIntermission");

register_clcmd("say /medale", "MenuMedali");

gCvary[HOST] = register_cvar("medale_hostname", "");
gCvary[PASS] = register_cvar("medale_password", "");
gCvary[USER] = register_cvar("medale_username", "");
gCvary[DBNAME] = register_cvar("medale_dbname", "");
gCvary[MIMPLR] = register_cvar("medale_minp", "1");

new temp[staty][64];

get_pcvar_string(gCvary[HOST], temp[HOST], 63);
get_pcvar_string(gCvary[PASS], temp[PASS], 63);
get_pcvar_string(gCvary[USER], temp[USER], 63);
get_pcvar_string(gCvary[DBNAME], temp[DBNAME], 63);

g_SqlTuple = SQL_MakeDbTuple(temp[HOST], temp[USER], temp[PASS], temp[DBNAME]);

if(g_SqlTuple == Empty_Handle)
set_fail_state("Nie mozna utworzyc uchwytu do polaczenia.");

new iErr, szError[32];
new Handle:link = SQL_Connect(g_SqlTuple, iErr, szError, 31);
if(link == Empty_Handle){
log_amx("Error (%d): %s", iErr, szError);
set_fail_state("Brak polaczenia z baza danych");
}

new Handle:query;
query = SQL_PrepareQuery(link,
"CREATE TABLE IF NOT EXISTS `medale` ( \
`id` int(5) NOT NULL auto_increment, \
`sid` varchar(64) NOT NULL, \
`nick` varchar(36) NOT NULL, \
`kill` INT(11) NOT NULL DEFAULT 0, \
`gold` INT(11) NOT NULL DEFAULT 0, \
`silver` INT(11) NOT NULL DEFAULT 0, \
`bronze` INT(11) NOT NULL DEFAULT 0, \
`suma` INT(11) NOT NULL DEFAULT 0, \
PRIMARY KEY (`id`) \
);");
SQL_Execute(query);
SQL_FreeHandle(query);

WczytajMedale();
}

public client_putinserver(id) {
Wyczysc(id);
get_user_name(id, gNick[id], 32);
get_user_authid ( id, gSid[id], 32 )

formatex(gQuery, charsmax(gQuery), "SELECT * FROM `medale` WHERE `sid` = ^"%s^" ORDER BY `id` LIMIT 1", gSid[id]);
new ids[1]; ids[0] = id;
SQL_ThreadQuery(g_SqlTuple, "handleLoadData", gQuery, ids, 1);
}

public client_disconnect(id) {
new suma = gStaty[GOLD][id]*3 + gStaty[SILVER][id]*2 + gStaty[BRONZE][id];

formatex(gQuery, charsmax(gQuery), "UPDATE `medale` SET `kill` = %d, `gold` = %d, `silver` = %d, `bronze` = %d, `suma` = %d, `nick`= '%s' WHERE `sid` = ^"%s^"", gStaty[KILL][id], gStaty[GOLD][id], gStaty[SILVER][id], gStaty[BRONZE][id], suma, gNick[id], gSid[id]);
SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);

Wyczysc(id);
}

public Wyczysc(id) {
for(new i = 0; i < staty; i++)
gStaty[i][id] = 0;

formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='STEAM_ID_LAN';");
formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='VALVE_ID_LAN';");
formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='BOT';");
formatex(gQuery, charsmax(gQuery), "DELETE FROM `medale` where `sid`='HLTV';");
SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);
}

// public Wyczysc(id) {
// for(new i = 0; i < staty; i++)
// gStaty[i][id] = 0;
// }


public WczytajMedale() {
gLast = get_systime();
SQL_ThreadQuery(g_SqlTuple, "handeLoadRank", "SELECT * FROM `medale` ORDER BY `suma` DESC LIMIT 15");
}

public handleLoadData(failstate, Handle:query, error[], errnum, data[], size){
if(failstate != TQUERY_SUCCESS){
log_amx("SQL Load error: %s",error);
return;
}

new id = data[0];
if(!is_user_connected(id)) return;

if(SQL_MoreResults(query)) {
gStaty[KILL][id] = SQL_ReadResult(query, 3);
gStaty[GOLD][id] = SQL_ReadResult(query, 4);
gStaty[SILVER][id] = SQL_ReadResult(query, 5);
gStaty[BRONZE][id] = SQL_ReadResult(query, 6);
} else {
formatex(gQuery, charsmax(gQuery), "INSERT INTO `medale` (`sid`, `nick`) VALUES (^"%s^", ^"%s^")", gSid[id], gNick[id]);
SQL_ThreadQuery(g_SqlTuple, "handleStandard", gQuery);
}
}

public handleStandard(failstate, Handle:query, error[], errnum, data[], size) {
if(failstate != TQUERY_SUCCESS) {
log_amx("SQL Insert error: %s",error);
return;
}
}

public event_death() {
new kid = read_data(1);
new vid = read_data(2);

if(kid != vid && get_user_team(kid) != get_user_team(vid))
gStaty[KILL][kid]++;
}

public MenuMedali(id) {
new m = menu_create("Medale", "MenuMedali_");

menu_additem(m, "Twoje medale");
menu_additem(m, "Ranking medali");

menu_setprop(m, MPROP_EXIT, MEXIT_ALL);
menu_display(id, m);
}

public MenuMedali_(id, m, i) {
if(i == MENU_EXIT) {
menu_destroy(m);
return PLUGIN_CONTINUE;
}

switch(i) {
case 0: { TwojeMedale(id); }
case 1: { RankingMedali(id); }
}

return PLUGIN_CONTINUE;
}

public TwojeMedale(id) {
new m = menu_create("Twoje medale", "TwojeMedale_");
new t[128];

for(new i = 1; i < staty; i++) {
formatex(t, charsmax(t), "%s: \r%d", nazwy[i-1], gStaty[i][id]);
menu_additem(m, t);
}

menu_display(id, m);
}

public TwojeMedale_(id, m) menu_destroy(m);

public RankingMedali(id) {
if(get_systime() - gLast > 20) {
WczytajMedale();
}

show_motd(id, gData, "Top15 Medali");
}

public handeLoadRank(failstate, Handle:query, error[], errnum, data[], size) {
if(failstate != TQUERY_SUCCESS) {
log_amx("SQL Load error: %s",error);
return;
}

new nick[33], medale[4], i = 0;
len = formatex(gData, charsmax(gData), "<center><img src=^"LINK DO LOGA^"></img></center><br><br><body background=^"LINK DO TŁA^"><font color=#FFB000><pre>%2s %-22.22s %6s %8s %8s %5s^n", "#", "Nick", nazwy[0], nazwy[1], nazwy[2], "Suma");

while(SQL_MoreResults(query)) {
i++;
SQL_ReadResult(query, 2, nick, 32);

medale[0] = SQL_ReadResult(query, 4);
medale[1] = SQL_ReadResult(query, 5);
medale[2] = SQL_ReadResult(query, 6);

medale[3] = medale[0] + medale[1] + medale[2];

replace_all(nick, charsmax(nick), "<", "[");
replace_all(nick, charsmax(nick), ">", "]");

len += formatex(gData[len], charsmax(gData) - len, "%2d %-22.22s %6d %8d %8d %5d^n", i, nick, medale[0], medale[1], medale[2], medale[3]);

SQL_NextRow(query);
}
}

public MsgIntermission() {
new name[33], players[32], best[3], num, id, fragi;
get_players(players, num, "h");

if(num < get_pcvar_num(gCvary[MIMPLR]))
return PLUGIN_CONTINUE;

new const typ[][] = { "Zloty", "Srebrny", "Brazowy" }

for(new i = 0; i < 3; i++) {
for(new j = 0; j < num; j++) {
id = players[j];

if(!is_user_connected(id) || best[0] == id || best[1] == id)
continue;

if(get_user_frags(id) > fragi) {
fragi = get_user_frags(id);
best[i] = id;
}
}
fragi = 0;

if(best[i]) {
gStaty[1+i][best[i]]++;
get_user_name(best[i], name, 32);
ColorChat(0, TEAM_COLOR, "[Medale] %s^x03 -^x04 %s Medal -^x04 %i^x03 Miejsce", name, typ[i], i+1);
}
}
return PLUGIN_CONTINUE;
}

Użytkownik aerocell edytował ten post 18.08.2012 13:34

  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#27 kapi10072

    Wszechpomocny

  • Użytkownik

Reputacja: 70
Pomocny

  • Postów:318
  • Steam:steam
  • Imię:Kacper
  • Lokalizacja:Polska
Offline

Napisano 18.08.2012 13:47

Dodaj parametr UNIQUE (sid), gdy tworzysz bazę danych.. to spowoduje, że zdublowanych wpisów nie powinieneś mieć.

Ten warunek
if(!is_user_bot(id) || !is_user_hltv(id))
daj w momencie, kiedy wykonujesz zapis do bazy.
  • +
  • -
  • 0

Dołączona grafika
Najlepszy serwer TeamPlay w Polsce !
Pomogłem, wejdź ;)
Zapraszam na BHZ-Game.pl
Bo nie liczą się fragi tylko dobra atmosfera ;D


#28 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 18.08.2012 14:21

Podaj, w których linijkach to wszystko zrobić, bo aż tak kumaty nie jestem :P
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#29 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 22.08.2012 22:45

reff
  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!





Również z jednym lub większą ilością słów kluczowych: Modyfikacja

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

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