-
Posts
252 -
Joined
-
Last visited
-
Days Won
2 -
Feedback
100%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Draveniou1
-
-
8 minutes ago, PetePeter said:
Or maybe something like that instead no ?
void CGuild::AddComment(LPCHARACTER ch, const std::string& str) { if (str.length() > GUILD_COMMENT_MAX_LEN || str.length() == 0) // Added string null verification return; char text[GUILD_COMMENT_MAX_LEN * 2 + 1]; DBManager::instance().EscapeString(text, sizeof(text), str.c_str(), str.length()); // Fetch the number of existing comments and delete the oldest one if there are 12 comments. DBManager::instance().FuncQuery(std::bind(&CGuild::HandleCommentCount, this, ch, text, std::placeholders::_1), "SELECT COUNT(*), MIN(time) FROM guild_comment%s WHERE guild_id = %u", get_table_postfix(), m_data.guild_id); } void CGuild::HandleCommentCount(LPCHARACTER ch, const char* text, MYSQL_RES* result) { MYSQL_ROW row = mysql_fetch_row(result); if (!row) return; int commentCount = 0; sscanf(row[0], "%d", &commentCount); if (commentCount >= 12) { // Delete the oldest comment DBManager::instance().Query("DELETE FROM guild_comment%s WHERE guild_id = %u AND time = '%s'", get_table_postfix(), m_data.guild_id, row[1]); } // Insert the new comment DBManager::instance().FuncAfterQuery(void_bind(std::bind1st(std::mem_fun(&CGuild::RefreshCommentForce), this), ch->GetPlayerID()), "INSERT INTO guild_comment%s(guild_id, name, notice, content, time) VALUES(%u, '%s', %d, '%s', NOW())", get_table_postfix(), m_data.guild_id, ch->GetName(), (text[0] == '!') ? 1 : 0, text); }
I had thought about it too
the problem is that mysql will always answer the player's queries
and does not eat kick from the game
it could be with mine version 1
better there should be a count as they mentioned @ Abel(Tiger) and @ TMP4
-
1
-
-
I added to the post version2 thank you @ Abel(Tiger) @ TMP4
-
1
-
-
5 minutes ago, TMP4 said:
With your "fix" abusers got +1 query to spam, even if it's just a delete query.
Fixing the possibility of the flood and delete old unnecessary comments is 2 seperate things to do. @ Abel(Tiger) did the first, you did the second.
And yes, Abel is right because you're not checking any permission, if someone sends a packet on his own (cheat), he can delete other's messages without the required guild permission.
Also you did hella lot uneceserry work. If you want to delete older comments, why don't you just do it after the insert? Why do you need a seperate packet?
-With your "fix" abusers got +1 query to spam, even if it's just a delete query.
- We can easy add check query
-------------
-Fixing the possibility of the flood and delete old unnecessary comments is 2 seperate things to do. @ Abel(Tiger) did the first, you did the second.
- We can easily in the 2 failed attempts the player leaves the server
---------------
-And yes, Abel is right because you're not checking any permission, if someone sends a packet on his own (cheat), he can delete other's messages without the required guild permission.
you can easily check the player I will try to do them this
-
1
-
-
15 minutes ago, Abel(Tiger) said:
1. The fix I posted is done because you can spam the database with queries.
2. With your "fix" you can delete all coments from the guild with no permissions :)))
They are automatically deleted after 12 message you check
-
Changelogs
Version 3.
- Fix quest pick in quest
- Fix delayed desc kick
- Now it works stable without problems in version 3
Version 2.
- Now, the players cannot delete messange other people's
- In 4 failures the server kick you
Version 1.
- Normal fix guild comment
-
50
-
1
-
1
-
8
-
18
-
1 hour ago, BYB said:
With all honesty i am more familiar with python than source i can read a source but can write it from scratch so I guess python the short answer ahaha
Edit : by source I mean C++ idk why i said source
open cmd_general.cpp
search: int nExitLimitTime = 10;
change: with your idea number
new search
if (ch->IsPosition (POS_FIGHTING))
{
info->left_second = 10;
}
else
{
info->left_second = 10;
}change 10 to your idea
-
1 minute ago, BYB said:
Do you know which file please ? ^^
what suits you in source or python?
what do you want
-
-
12 minutes ago, LethalStrikeR said:
def __OnClickSelectServerButton(self): if IsFullBackImage(): self.GetChild("bg1").Hide() self.GetChild("bg2").Show() regionID = self.__GetRegionID() serverID = self.__GetServerID() channelID = self.__GetChannelID() if (not serverInfo.REGION_DICT.has_key(regionID)): self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION) return if (not serverInfo.REGION_DICT[regionID].has_key(serverID)): self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER) return try: channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"] except KeyError: return try: state = channelDict[channelID]["state"] except KeyError: self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL) return if state == serverInfo.STATE_DICT[3]: self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL) return self.__SaveChannelInfo() try: serverName = serverInfo.REGION_DICT[regionID][serverID]["name"] channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"] addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"] except: print " ERROR __OnClickSelectServerButton(%d, %d, %d)" % (regionID, serverID, channelID) serverName = localeInfo.CHANNEL_EMPTY_SERVER channelName = localeInfo.CHANNEL_NORMAL % channelID if app.BL_MOVE_CHANNEL: net.ClearServerInfo() channelMax = len(serverInfo.REGION_DICT[regionID][serverID]["channel"]) for i in xrange(1, channelMax+1): _channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][i]["name"] net.SetChannelName(i, _channelName.strip()) net.SetChannelName(99, localeInfo.MOVE_CHANNEL_99) net.SetChannelName(channelID) net.SetServerName(serverName) self.__SetServerInfo("%s, %s " % (serverName, channelName)) try: ip = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["ip"] tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"] except: import exception exception.Abort("LoginWindow.__OnClickSelectServerButton - 서버 선택 실패") try: account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"] account_port = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["port"] except: account_ip = 0 account_port = 0 try: markKey = regionID*1000 + serverID*10 markAddrValue=serverInfo.MARKADDR_DICT[markKey] net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"]) app.SetGuildMarkPath(markAddrValue["mark"]) # GUILD_SYMBOL app.SetGuildSymbolPath(markAddrValue["symbol_path"]) # END_OF_GUILD_SYMBOL except: import exception exception.Abort("LoginWindow.__OnClickSelectServerButton - 마크 정보 없음") if app.USE_OPENID and not app.OPENID_TEST : self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port) self.Connect(0, 0) else : self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port) self.__OpenLoginBoard()
That's all function.
reinstall system only in python and fix this
code you forgot to enter
your problem will never be solved
reinstall system
-
2
-
-
[ΤΑΒ] in fuctions
-
-
Hello
I fixed my packets for i to reactivate the sequence
there is a problem
Problem's CLIENT typedef struct packet_move { BYTE bHeader; BYTE bFunc; BYTE bArg; BYTE bRot; DWORD dwVID; LONG lX; LONG lY; DWORD dwTime; DWORD dwDuration; } TPacketGCMove; SERVER typedef struct packet_move { BYTE bHeader; BYTE bFunc; BYTE bArg; BYTE bRot; DWORD dwVID; long lX; long lY; DWORD dwTime; DWORD dwDuration; } TPacketGCMove;
Why does the server package have long?
LONG = int
why ?
shouldn't it be normally long?
client
LONG lX;
LONG lY;server
long lX;
long lY;-
1
-
1
-
-
5 hours ago, ShyD said:
Haha what a joke. There is no other bug. I tested it full. I checked for memory allocation. I just cant find where is the problem för the Shop mames.
Add TEST_SERVER and send me DEV_LOG
-
1
-
-
#define ENABLE_OFFLINE_SHOP
to
//#define ENABLE_OFFLINE_SHOP
Avoid adding systems that have thousands of bugs Don't look at the forums or anything
-
1
-
1
-
-
18 hours ago, TMP4 said:
Commands are working fine. You mean the downloadable packages are removed from the mirrors after it's reached EOL.
By the way if someone have the package in the cache folder then pkg install will work. Ofc it's not the case here since he does not have it.Then be clear, in your topic you only said you're looking for FreeBSD11.4.
Did installation from the ports fails too? That uses multiple mirrors.
If it fails, it'll write the filename (and the hash if I remember) so you can look the file up on the internet and download yourself, place it to /usr/ports/distfiles and continue the installation.(If you don't know how to install from ports, please look it up on Google.)
I can't give it, you read the forum rules
I'll have to get permission from freebsd.org to post otherwise I'm going for copyright
-
1
-
-
53 minutes ago, TMP4 said:
If you really need it.. http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/ISO-IMAGES/11.4/
Command not working The commands don't work because it has been removed
I think it should find ready installed mysql python
-
56 minutes ago, Trojan3D said:
upp
i have it with mysql 5.6
i don't have it with 5.5
-
The sequence was successfully removed
But there was a bug that I fixed
The buffer was not stable players after 15 days open server enough enough kick and problems with kick
let's see what the solution is..............
1. OPEN SERVER SOURCE 2. OPEN DESC.CPP 3. SEARCH: if (!packet_encode (m_lpOutputBuffer, c_pvData, iSize)) { m_iPhase = PHASE_CLOSE; // PLAYER KICK WHY BUFFER IN FULL } 4. CHANGE WITH if (!packet_encode (m_lpOutputBuffer, c_pvData, iSize)) { //m_iPhase = PHASE_CLOSE; // NOW DISABLED KICK //PLAYER REMOVE BUFFER AND NOT KICK WHY REMOVE BUFFER? FOR STOP GAME.CORE PLAYER // the player must exit from game if the player does not exit the game then the game will give game.core // So we made the player clear the buffer and not exit the game buffer_delete(m_lpOutputBuffer); // Player not phase_closed for exit game ;) buffer has removed buffer_reset(m_lpOutputBuffer); // Player not phase_closed for exit game ;) buffer has removed } 5) OPEN PROTOCOL.H REMOVED if (buffer_has_space (pbuf) < length) { sys_err ("buffer length exceeded buffer size: %d, encoding %d bytes (%s:%d)", buffer_size (pbuf), length, file, line); return false; }
You should put in specific server files
SAFE_BUFFER_DELETE(m_lpOutputBuffer); and not buffer_delete(m_lpOutputBuffer); buffer_reset(m_lpOutputBuffer);
-
2
-
8
-
1
-
-
-
3 hours ago, Pseudabo said:
My client randomly crash after teleport (no any error, syserr clean, I dont find any problem in game, all works perfect - effects, icons, skills, dmg, gm flag, horse, etc..)
Using cython, anyone has similar problem or can know whats problem? Its only with teleport 1-5 teleports.. Game is clean, without any problem.It's not a full tutorial man You have to think and add your own effects/motion
-
1
-
1
-
-
compiler client with debugger and check this problems
-
9 minutes ago, HeadHunter said:
#0 0x20de42ad in strlen () from /lib/libc.so.7
[Current thread is 1 (LWP 100092)]
(gdb) bt
#0 0x20de42ad in strlen () from /lib/libc.so.7
#1 0x20d45865 in ?? () from /lib/libc.so.7
#2 0x20d4e6f1 in vsnprintf () from /lib/libc.so.7
i get this
reinstall system in game source
-
1
-
-
-
1 minute ago, HeadHunter said:
Hy i resolved this error but when i try to open a chest i get this
0321 11:18:24955 :: File "ui.py", line 1479, in OnUnselectItemSlot
0321 11:18:24957 :: File "ui.py", line 87, in __call__
0321 11:18:24957 :: File "ui.py", line 78, in __call__
0321 11:18:24957 :: File "uiInventory.py", line 1106, in UseItemSlot
0321 11:18:24957 :: File "uiInventory.py", line 1126, in __UseItem
0321 11:18:24957 :: AttributeError
0321 11:18:24957 :: :
0321 11:18:24957 :: 'Interface' object has no attribute 'OpenChestDropInfo'
0321 11:18:24957 ::reinstall systems in python only
if statment
in Community Support - Questions & Answers
Posted
offshop paid or unpaid ?