• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Wartosc zwracana przez getPlayerIp(cid)

SzukamLaya

New Member
Joined
May 1, 2010
Messages
140
Reaction score
3
Otoz mialem maly problem, poniewaz wartosc zwracana przez funkcje zawarta w temacie byla inna przy wywolywaniu jej w talkactions niz przy wywolywaniu jej w login.lua.
Po zmianie ip wszystko bylo dobrze, ale co to bylo?
Nie chce, zeby cos takiego mi sie powtorzylo wiec biegne z placzem do was...
Wiecie o co kaman?
 
Bo moze w login.lua jeszcze sie nie updatnela, dopiero po zalogowaniu wlasciwym sie refreshuje? ;p
 
Ja tutaj zadaje pytania.
Watpie, zeby tak bylo.
Pozatym zapisuje ip do bazy jako int bo to zwraca liczby no chyba, ze nie dlatego nie dziala xd
 
Kurwa ip to string ;/
Widziołeś ty kiedy liczbę przedzieloną kilkoma kropkami?
 
Kurwa ip to string ;/
Widziołeś ty kiedy liczbę przedzieloną kilkoma kropkami?

IP jest zapisywane jako INT w bazie. Prawdopodobnie pobiera wartość z bazy, która nie została jeszcze uaktualniona.
Może addEvent pomoże?
 
Ip w bazie apdejtuje sie dopiero po sejvie plejera.
 
Nie.
To ja zapisuje te IP do bazy(nie bede pisal dlaczego, bo nie jest to celem tematu), podczas wywolywania pewnego talkaction.
A przy login.lua dostaje juz inna wartosc, dlatego nie dziala mi query.
Wiec wychodze z pytaniem, czy to ja robie cos zlego czy poprostu getPlayerIp() jest zjebane? (A wtedy ja mam przejebane).
Probowalem rowniez addEvent na 5 sekund.
Gowno dalo.

@edit
Np. dla IP:
83.24.82.136
do bazy mi zapisuje (przy wywolaniu w talkaction)
2147483647
A w login.lua wyrzuca
2287081555
Nie to nie moje ip.
 
Przy login.lua dostajesz inna wartosc, poniewaz ona jest jeszcze nie ustawiona i dostajesz wartosc z poprzedniego logowania, a w talkactionie inna poniewaz jestes juz po save prawdobodobnie i Twoje IP jest updatniete. (Tak wnioskuje po poscie kooba).
 
No to problem zrob jakas funkcje sobie ktora zwraca IP aktualnego polaczenia i chuj.
 
save w bazie = 0
Juz najprawdopodbniej zrobilem.
Zmienilem strukture w bazie (mialem trche inna niz ta w tabeli players).
Narazie smells good zobaczymy.
Mam jeszcze problem z petelka ale sobie poradze ;)
Dzieki.
Repy Koob, Kula_, Kamil ;<
 
Nawet jak save = 0 to lastip sie zapisuje.
Code:
bool IOLoginData::savePlayer(Player* player, bool preSave/* = true*/, bool shallow/* = false*/)
{
        if(preSave && player->health <= 0)
        {
                if(player->getSkull() == SKULL_BLACK)
                {
                        player->health = g_config.getNumber(ConfigManager::BLACK_SKULL_DEATH_HEALTH);
                        player->mana = g_config.getNumber(ConfigManager::BLACK_SKULL_DEATH_MANA);
                }
                else
                {
                        player->health = player->healthMax;
                        player->mana = player->manaMax;
                }
        }

        Database* db = Database::getInstance();
        DBQuery query;
        query << "SELECT `save` FROM `players` WHERE `id` = " << player->getGUID() << " LIMIT 1";

        DBResult* result;
        if(!(result = db->storeQuery(query.str())))
                return false;

        const bool save = result->getDataInt("save");
        result->free();

        DBTransaction trans(db);
        if(!trans.begin())
                return false;

        query.str("");
        query << "UPDATE `players` SET `lastlogin` = " << player->lastLogin << ", `lastip` = " << player->lastIP;
        if(!save || !player->isSaving())
        {
                query << " WHERE `id` = " << player->getGUID() << db->getUpdateLimiter();
                if(!db->query(query.str()))
                        return false;

                return trans.commit();
        }
 
Back
Top