Jump to content

Alina

Member
  • Posts

    174
  • Joined

  • Last visited

  • Days Won

    13
  • Feedback

    0%

Alina last won the day on August 23 2016

Alina had the most liked content!

About Alina

Informations

  • Gender
    Female

Recent Profile Visitors

5622 profile views

Alina's Achievements

Collaborator

Collaborator (7/16)

  • Very Popular Rare
  • Week One Done
  • One Month Later
  • One Year In
  • Conversation Starter

Recent Badges

225

Reputation

  1. You can do it via CMD file, I guess it also works on 34k. With that you can grant the LOW_WIZARD profile rights do mute. One of the ranks already don't have gm banner, I can't seem to remember which one it was. Just try it out and if you find it, give it access to the mute command. No need to pay
  2. Before flaiming against his archiver, we first should have a look at his syserr and log. After that the theory war may rise but now it's too early to tear him apart with accusations..^^ Please, upload syserr.txt and log.txt so we can tell you what's wrong^^
  3. Is 15001 the port of your db cache or another gamefile? Please check that port and give us the syserr of it! Also you'd have a check on your motion files and correct them!
  4. Please post your syslog and log.txt so we can analyze them and backtrace the error together
  5. This board is no support thread for eterhost vps You've only 65mb RAM left, it's kinda low. Also for one channel you have a lot game instances open, maybe you'd try to reduce that For 1,5gb you're running a lot of services like TeamSpeak. Are you sure you ordered the right vps for your needs?
  6. You're getting out of the index with this code! Your for loop doesn't look correct and therefore results in this behaviour. What you're doing is: for i = 1, data01[1], 1 do Which means exactly this: for i = 1, 19, 1 do So the loop will go from 1 to 19, but the table only has 5 entries. Now we can look at the code: if item.vnum == data01[1+1*(i-1)] then In which case is the loop out of index? It's when 1+1*(i-1) > 5 So in your case it'd be at the 6th execution. That's the point where i=6 and the solution would be: 1+1*(6-1) > 5 and yes, 1+5 > 5 What you may wanted to do was this: for i = 1, table.getn(data01), 1 do This will only iterate through the table until it reaches the maximum. Also the Computation doesn't make sense. Why aren't you just using if item.vnum == data01[ i ] then instead of your code?
  7. You can check when the chat command is handled (I guess it's in one of the input cpps) for the map index and then return beforehand. So people can't chat when they're in OX. You can also make an exception when the chat type is whispering, so people can talk privately via pm but not use the normal, guild, group or all chat^^
  8. ​Really? I can't find anything ugly about this. Actually the c++ part is very nice. I didn't check on python. And why are you wishing him good luck at his own release? ._. Sometimes I don't understand people...^^ Anyway, the idea behind that is great and I like the c++ part a lot. Oh, and a german sentence slipped through
  9. Did you open constants.h or constants.cpp? The defines I mentioned are in constants.h and I've got that from the vanilla source that's public here
  10. void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount) { if (!ch->GetShop()) return; if (!ch->GetShopOwner()) return; if (!ch->CanHandleItem()) return; if (ch->GetShop()->IsPCShop()) return; if (DISTANCE_APPROX(ch->GetX()-ch->GetShopOwner()->GetX(), ch->GetY()-ch->GetShopOwner()->GetY())>2000) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("상점과의 거리가 너무 멀어 물건을 팔 수 없습니다.")); return; } LPITEM item = ch->GetInventoryItem(bCell); if(!item) return; // special code (Ken) // if (item->GetType() == ITEM_WEAPON || item->GetType() == ITEM_ARMOR || item->GetType() == ITEM_BELT) { char szEventFlag[30]; snprintf(szEventFlag, sizeof(szEventFlag), "%d.Engel", item->GetID()); if (*szEventFlag) { if (quest::CQuestManager::instance().GetEventFlag(szEventFlag)) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("item_engel")); return; } } } // special code (Ken) // if (item->IsEquipped() == true) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("착용 중인 아이템은 판매할 수 없습니다.")); return; } if (true == item->isLocked()) { return; } if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_SELL)) return; DWORD dwPrice; if (bCount == 0 || bCount > item->GetCount()) bCount = item->GetCount(); dwPrice = item->GetShopBuyPrice(); if (IS_SET(item->GetFlag(), ITEM_FLAG_COUNT_PER_1GOLD)) { if (dwPrice == 0) dwPrice = bCount; else dwPrice = bCount / dwPrice; } else dwPrice *= bCount; dwPrice /= 5; //세금 계산 DWORD dwTax = 0; int iVal = 0; if (LC_IsYMIR() || LC_IsKorea()) { dwTax = dwPrice * iVal / 100; dwPrice -= dwTax; } else { dwTax = dwPrice * iVal/100; dwPrice -= dwTax; } if (test_server) sys_log(0, "Sell Item price id %d %s itemid %d", ch->GetPlayerID(), ch->GetName(), item->GetID()); const int64_t nTotalMoney = static_cast<int64_t>(ch->GetGold()) + static_cast<int64_t>(dwPrice); if (GOLD_MAX <= nTotalMoney) { sys_err("[OVERFLOW_GOLD] id %u name %s gold %u", ch->GetPlayerID(), ch->GetName(), ch->GetGold()); ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20억냥이 초과하여 물품을 팔수 없습니다.")); return; } // 20050802.myevan.상점 판매 로그에 아이템 ID 추가 sys_log(0, "SHOP: SELL: %s item name: %s(x%d):%u price: %u", ch->GetName(), item->GetName(), bCount, item->GetID(), dwPrice); if (iVal > 0) ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("판매금액의 %d %% 가 세금으로 나가게됩니다"), iVal); DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), dwPrice); if (bCount == item->GetCount()) { // 한국에는 아이템을 버리고 복구해달라는 진상유저들이 많아서 // 상점 판매시 속성로그를 남긴다. if (LC_IsYMIR()) item->AttrLog(); ITEM_MANAGER::instance().RemoveItem(item, "SELL"); } else item->SetCount(item->GetCount() - bCount); //군주 시스템 : 세금 징수 CMonarch::instance().SendtoDBAddMoney(dwTax, ch->GetEmpire(), ch); ch->PointChange(POINT_GOLD, dwPrice, false); } This is your fixed function.
  11. why didn't you move if(!item) return; above ken's code as we suggested earlier? You'd move that a top of his code and then the nullpointer error won't occur anymore.
  12. Hey In char_battle.cpp search for m_pkDeadEvent = event_create(dead_event, pEventInfo, bImmediateDead ? 1 : PASSES_PER_SEC(10)); This is the timers when common bodies will vanish. You can change this 10 to another value so they'll will vanish sooner or later
  13. please post your new CShopManager::Sell() function. Additionally we need the functions of input_main.cpp at line 1094 and 3171 and input.cpp at line 102
  14. Guys it's a p2p command. He didn't set up a firewall and that's the point behind that. Set up a firewall and block those p2p ports (and db cache port) and you'll be safe from this attack adminpage_ip: 127.0.0.1 This should also work for you. Note: The attack can be from p2p ports and from normal ports. Against normal ports, you can use adminpage_ip to bind your API to localhost, so it'll only accept connections from localhost! Against p2p ports it's more difficult. You need to shut down access to them via firewall. That's gonna fix your problem and the attack you're getting there is through the p2p ports. So you may look at that
  15. Edit: Yeah, it's the API tool. Make sure your firewall blocks every connection incoming to your p2p ports except for localhost! If you need help, then please send me your firewall rules via pm and I can help you with that. Example for pf: block in on $if FROM any to 127.0.0.1 port $P2P_PORT I guess that should do it. It's better to block everything by default and let certain defined ports pass through so you won't get in trouble with that anymore. But be careful with that since you'd block ssh access when working with firewalls!
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.