Jump to content


Popular Content

Showing content with the highest reputation since 09/24/2021 in all areas

  1. 2 points
    Hi, I made a kind of guide to configure Patrick13's launcher, I don't know if there are new people but I'm going to post it :p IMPORTANT I don't know how this works so this is just one way to make it work but it is not the best way. API: Download Launcher: 1-Configure API 2.-Create TABLE for version 3.-Configure PKO-Launcher Done!! *Use ZIP for patchs NOTE: Credits patrick13 Launcher Icruz API Google Translate PD: StatHashSumDelimeter must finish this, you can add a new column in the table of Launcher with this parameter.
  2. 2 points
    I used VS 2019 community edition and all okay
  3. 1 point
    Hi guys!! i hope all fine! I am selling weapons apps, pets, effects, mobs If you want some examples pm on discord! ŽËRØ#8845 Thanks! You are welcome!
  4. 1 point
    Добрый день! В editor.clu есть цикл, который добавляет в список объектов их иконки. Он, скорее всего, ограничен N объектами, где N меньше чем ID вновь добавленного объекта. Таким образом, необходимо увеличить число итераций данного цикла, чтобы он охватывал все объекты.
  5. 1 point
    Dear friends! Welcome to the official page of TalesOfPirates.net ! The game will open on 29th of October at 6:00 PM (GMT+3) A stable game with a high online awaits you! Make sure to register an account before the launch of the game and get bonuses at the start! 3 easy steps to get ready today! Server Rates: Max Player Level: 70 Max Fairy Level: 41 Solo Exp - x2 (Party exp is also x2, but make sure to count the negative scaling per each party member) Drop rate - x1 Fairy growth - x4 Ship Exp - you won't need exp - 1 level - 750.000 gold Current Available Maps: Forsaken City - 30-45 lvl: Starting 12 pm server time and every 3 hours (12-3-6-9) Dark Swamp - 45-55 lvl: Starting 12 pm server time and every 3 hours (12-3-6-9) Demonic World - 50+ lvl: Starting 12 pm server time and every 3 hours (12-3-6-9) Chaos Argent - 2:00 am; 2:00 pm; 8:00 pm - First CA opening is planned for 31th October 8:00 pm Real money prize funds for first boss kills in the server: 1. Jack - Black Sail - 50$ 2. Wandering Soul - 50$ 3. Snowman Warlord - 50$ 4. Huge Mud Monster - 50$ 5. Death Knight - 50$ 6. Winning first CA - 100$ 7. Black Dragon - 500$ (Dragon will spawn after 1 month since the game is opened) Website - https://talesofpirates.net/ Join Discord - https://discord.gg/8bJ6uwS72m
  6. 1 point
  7. 1 point
    @Brothers make sure you have the function to make refs/gems until lv 9 inside attrcalculate, search for the “, 101 or , 102” so you continue adding them until “, 109” (I’m sending this reply through phone, otherwise i would send the code)
  8. 1 point
    3 years later... I used to make refining gems scrolls. These are easy to create and are stackable. And its easy to make combiner, asking for like 8 scrolls to give 1 lv 4.
  9. 1 point
  10. 1 point
    I renewed the link to the file. For some reason google prevented downloading from the old link.
  11. 1 point
    solved thk u anyway!!!
  12. 1 point
  13. 1 point
    @wouter2004 there is a function in Corsairs files that is GetItemStackSize() you can use it local itemCount = GetItemStackSize(gem) if (itemCount >= stoneCount) then return LUA_TRUE end
  14. 1 point
    Hello @koringa! I have a brand new version of StallServer rewritten from scratch and will release it soon.
  15. 1 point
    With @KONG 's consent, CO Client source is being released. VS2003 instructions: 1) Download: Visual Studio 2003: https://drive.google.com/file/d/19PsTGwXYTUiCSq8ilw7DBAyy8pfIhKfU/view 2) Extract 3) Run to "Visual Studio 2003\Visual Studio .NET 2003Setup-NoPrereq.bat" Build Source: 1) Download: https://mega.nz/file/xkZCSABT#WUt1EbIX_oj8UDFIVUJLVt0scpqXO8KunOKOjEc6VE8 2) Extract 3) Open "Client\Client\proj\kop.sln" (Open in VS2003) 4) Set Release Configuration 5) Build Solution (shortcut: CTRL + Shift + B) Setup Client: 1) Download client provided by @Billie: https://mega.nz/file/YDBSgCBJ#-hA05hSYFCHO72LhOTV5mcQK4Rse1QxC1eof8sQD0iE 2) Extract 3) Copy "Game.exe" from "Client\Client\bin\system\" to "Corsairs Online - An Ocean Fantasy\system" 4) Copy "MindPower3D_D8R.dll" from "Client\engine\sdk\lib" to "Corsairs Online - An Ocean Fantasy\system"
  16. 1 point
    I made a mistake the first time when trying to edit user.lua but after watching it carefully. i manage to do it. thanks. that is why at first i was thinking that its not working
  17. 1 point
    Just to share a SS from my failure to make fusion set to be able to glow and this is the result ~
  18. 1 point
    Greetings. I was a member with nickname Gamemaker, you may know me as developer of one of model viewers for pko/top resources. Time to time i receive questions about game resources, how to fix them or how to use them. I can't do many for you, but some hints. But even that may be helpful. Once person ask about making glow for custom weapon apparels, show what he had, and i found there are no any public converter for game files. You have php one, but it require webserver and it can't make glowable weapon. Well... I can't beleave you guys can't share so simple scripts... So i did it again. Here is small update for model viever, it allow to import obj files to static lgo with save submaterials correctly. Due obj file format limitation, you can't get 100% correctly weapons version, but somehow you managed with limited tools you had before and i really impressed with that. So i leave here binnaries and link to source code Lgo works fine Lab works fine Lmo works fine Export/Import are under view. For use export - first add item to export list from rightclick model on tree of objects. For use import - just select file and click import I not guarantee it should work as you want, but get a try! Also you always can to polish tool yourself, if you have enough skills. Link to binnaries: https://mega.nz/file/vNlkVTpa#Wd7C2-s-UpHshUF_pdBh5jumAVJFwCnE2zhj3hT8W5c Link to sources: https://github.com/WeaponOwl/PKO-file-viewer Be nice, respect people
  19. 1 point
  20. 1 point
    Hello, I built this for for a server but I think it would be useful for the rest of the community too. This feature basically allows players to hide certain dropped items on the ground. They can use this to specifically filter out garbage/low tier drops, and only see rare drops and pick them up. While 'hidden', the items will also not get picked up by Ctrl + A, so they can freely pick up all items that they are interested in without filling their inventory with garbage. I made this feature available through the drop list of a monster on the CO client. You can choose to expose it however you wish. I'll add the CO-client specific changes at the end so you can use it for that if you wish. I've attached a gif of what the feature looks like. Code - GlobalVar.cpp At the top, add - #include "LootFilter.h" a bit further down - CGameApp* g_pGameApp = NULL; LootFilter* g_lootFilter = NULL; Create the following two files in the src directory LootFilter.h #include "stdafx.h" #include <map> class LootFilter { public: LootFilter(); ~LootFilter(); map<int, bool> GetFilteredItems() { return lootFilter; } void AddFilteredItem(unsigned long itemId); void RemoveFilteredItem(unsigned long itemId); bool HasFilteredItem(unsigned long itemId); void PrintAllItems(); private: map<int, bool> lootFilter; }; extern LootFilter* g_lootFilter; LootFilter.cpp #include "stdafx.h" #include <map> #include "LootFilter.h" #include "GameApp.h" #include <string> #include "log.h" LootFilter::LootFilter() { if (!CreateDirectory("user", NULL)) { DWORD dw = GetLastError(); if ( dw != 183 ) { return; } } ifstream lootFilterFile; lootFilterFile.open("user\\lootfilter.txt"); string itemIdReader; if (lootFilterFile.is_open()) { while (getline(lootFilterFile, itemIdReader)) { if ( itemIdReader.length() == 0) { continue; } int itemId = atoi(itemIdReader.c_str()); lootFilter.insert(pair<int, bool>(itemId, TRUE)); } } } void LootFilter::AddFilteredItem(unsigned long itemId) { lootFilter.insert(pair<int, bool>(itemId, TRUE)); ofstream lootFilterFile; char itemIdBuffer[10]; itoa(itemId, itemIdBuffer, 10); lootFilterFile.open("user\\lootfilter.txt", ios_base::app); lootFilterFile << string(itemIdBuffer) << std::endl; lootFilterFile.close(); } void LootFilter::RemoveFilteredItem(unsigned long itemId) { lootFilter.erase(itemId); string line; ifstream in; in.open("user\\lootfilter.txt"); ofstream temp; temp.open("user\\lootfilter_new.txt"); while (getline(in, line)) { char itemIdBuffer[10]; itoa(itemId, itemIdBuffer, 10); if (line.compare(string(itemIdBuffer)) != 0) { temp << line << std::endl; } } in.close(); temp.close(); remove("user\\lootfilter.txt"); rename("user\\lootfilter_new.txt", "user\\lootfilter.txt"); } bool LootFilter::HasFilteredItem(unsigned long itemId) { if ( lootFilter.find(itemId) == lootFilter.end() ) { return false; } return true; } void LootFilter::PrintAllItems() { map<int,bool>::iterator it = lootFilter.begin(); for(it = lootFilter.begin(); it != lootFilter.end(); it++) { g_pGameApp->SysInfo("Filtered item %d %d", it->first, it->second); } } In Main.cpp At the top - #include "LootFilter.h" A bit further down, look for g_pGameApp - g_pGameApp = new CGameApp(); g_lootFilter = new LootFilter(); Scene.h Add this function declaration below the other ones for CSceneItem (after line 217 in CO) CSceneItem* FilterItemsByItemID(unsigned long id, bool shouldHide); Scene.cpp Add this function somewhere in the file - CSceneItem* CGameScene::FilterItemsByItemID(unsigned long id, bool shouldHide) { CSceneItem* pItem; for(int i = 0; i < _nSceneItemCnt; i++) { pItem = &_pSceneItemArray[i]; if (pItem->IsValid()) { CItemRecord* itemData = pItem->GetItemInfo(); if ( itemData ) { if (itemData->lID == id ) { pItem->SetHide(shouldHide); } } } } if ( !shouldHide ) { g_lootFilter->RemoveFilteredItem(id); } else { g_lootFilter->AddFilteredItem(id); } return NULL; } SceneItem.cpp Replace the CSceneItem::Render function with this - void CSceneItem::Render() { if( GetScene()->GetTerrain() ) { if(!GetScene()->GetTerrain()->IsPointVisible((float)_nCurX / 100.0f, (float)_nCurY / 100.0f)) return; } if ( _pItemInfo && g_lootFilter->HasFilteredItem(_pItemInfo->lID) ) { SetHide(TRUE); setIsShowName(false); return; } CSceneNode::Render(); // g_Render.EnableMipmap(FALSE); MPSceneItem::Render(); } In the CSceneItem::setIsShowName function, add this line at the top _IsShowName = v; Make sure to include the LootFilter.h and LootFilter.cpp files in your kop.vcxproj or kop.vcproj files I had .vcxproj, so - kop.vcxproj Look for <ClInclude Include="..\src\GameWG.h" /> and add <ClInclude Include="..\src\LootFilter.h" /> after it. kop.vcxproj.filters Look for <ClCompile Include="..\src\SoundCommon.cpp" /> and add <ClCompile Include="..\src\LootFilter.cpp" /> after it. Look for <ClInclude Include="..\src\SoundManager.h" /> and add <ClInclude Include="..\src\LootFilter.h" /> after it. This should let you compile the given code. For people who are NOT using CO files, if you want to trigger the filter for a particular item, you need to have the item ID, and then do something like this - CGameApp::GetCurScene()->FilterItemsByItemID(itemId, true); If you are using the CO client and have the monster drop UI available, I'll post how to make changes to that UI in a follow-up post below I offer NO support for any issues you may have past basic compilation. It's up to you to figure out how to integrate this if you want it.
  21. 1 point
    CLIENT https://drive.google.com/file/d/0B8Vbx0yVKTGNRW5iWW5NUUV6SUU/view?usp=sharing&resourcekey=0-2skFvLcxoHMczwWJ0LJopg PATCH 2.4 https://drive.google.com/file/d/0B8Vbx0yVKTGNd1dSN0FRa09uZXc/view?usp=sharing&resourcekey=0-Zk0r3InprJaG0BnS6nn-IQ Work in 2.7 server files
  22. 1 point
    I solve this by changing back iteminfo and create voucher for each item. Since no one able to help directly with the script. I just need to do a walk around the scripting.
  23. 1 point
    Many thanks, I have recompiled the code and this solved the problem. I am very happy that you pointed me in the right directions.
  24. 1 point
    use " ZeroTier One" its faster than hamachi in your case
  25. 1 point
    Hamachi or use a low vps server
  26. 1 point
    I don't know if its related, but you can check here since it seems these are CO files.
  27. 1 point
    @wouter2004 Try to add your NPC Builder to lua/plugin/npcexploit.lua in SailNpc
  28. 1 point
    Создание своего эффекта Строки из ItemInfo и SceneeffectInfo в соответствующие файлы. moroz12.eff и moroz12.par в Клиент/effect moroz.tga в Клиент/texture/effect И получите эффект, как на картинке) С помощью фотошопа и редактора текстовых файлов(я использовал notepad++) вы можете создать любую другую надпись. Ссылка - https://disk.yandex.ru/d/Pd_agjQtPaZ4rA
  29. 1 point
    I believe it is in AreaSet https://gyazo.com/6df1ee0bdce9a8ed8c98a2ddf4e30e45 https://gyazo.com/a9e8bdf2cb0bc2cd4c5ca0a862f14c6e
  30. 1 point
    For the people that got issues while building. (this one got the camera fixed) Skills fix: UISkillCommand.cpp Line 184 if( pCha->GetIsOnMount()) { g_pGameApp->ShowMidText("Cannot use skills while Mount is in use"); return false; } https://mega.nz/file/K3gnzQJJ#J9s9M4qKdXsBE5acyf3S7KIINA-DoE-ZffyVuF57yms
  31. 1 point
  32. 1 point
  33. 1 point
    I am sorry I forget one thing the function that run to check the itemid of fission id (cough) function GetItemFissionID(Item) local MainID = GetItemID (Item) if MainID > 5000 and MainID ~= 9999 then return GetItemAttr(Item,ITEMATTR_VAL_FUSIONID) else return MainID end end anyway @ᴡʀx explained it well you can check his post carefully and you will surly manage to make it work. good luck
  34. 1 point
    This applies for Kylin and or Black Dragon. In your server files, Resource\script\calculate\functions.lua Find "function CheckItem_Nianshou ( role )" This is what parameters it will check, to see if a player is wearing the ItemID's, if they are, and they also have a certain item in their inventory then they can keep the effect while item is fused. function CheckItem_Nianshou ( role ) local Atk = IsPlayer ( role ) local boat = ChaIsBoat ( role ) if Atk == 0 or boat == 1 then return 0 end local cha = TurnToCha ( role ) local Cha_Num = GetChaTypeID( cha ) local item = CheckBagItem(role,7008) -- Item required to be in your inventory if fused. local head = GetChaItem ( role , 1 , 0 ) -- Checking head item local body = GetChaItem ( role , 1 , 2 ) -- Checking body item local hand = GetChaItem ( role , 1 , 3 ) -- Checking gloves item local foot = GetChaItem ( role , 1 , 4 ) -- Checking boots item local Head_ID = GetItemID ( head ) -- Retrieve the ItemID of head local Body_ID = GetItemID ( body ) -- Retrieve the ItemID of body local Hand_ID = GetItemID ( hand ) -- Retrieve the ItemID of gloves local Foot_ID = GetItemID ( foot ) -- Retrieve the ItemID of boots local FBody_ID = GetItemAttr ( body , ITEMATTR_VAL_FUSIONID ) -- Get the fused ItemID of body local FHand_ID = GetItemAttr ( hand , ITEMATTR_VAL_FUSIONID ) -- Get the fused ItemID of gloves local FFoot_ID = GetItemAttr ( foot , ITEMATTR_VAL_FUSIONID ) -- Get the fused ItemID of boots -- If less than ID 5000 (means its not apparel). if Body_ID<5000 or Hand_ID<5000 or Foot_ID<5000 then if Body_ID ~= 0825 and Body_ID ~= 2549 then --If Armor ID is 825, and or 2549, then it is considered Kylin return 0 end if Hand_ID ~= 0826 and Hand_ID ~= 2550 then --If Gloves ID is 826, and or 2550, then it is considered Kylin return 0 end if Foot_ID ~= 0827 and Foot_ID ~= 2551 then --If Armor ID is 827, and or 2551, then it is considered Kylin return 0 end else --Recall that we created "FBody/FHand/FFoot above, the F in front of the objective stands for "fusion" in this case, just to make it easy to read. -- Checking if player wearing armor if FBody_ID ~= 0825 and FBody_ID ~= 2549 then return 0 end -- Checking if player wearing gloves if FHand_ID ~= 0826 and FHand_ID ~= 2550 then return 0 end -- Checking if player wearing boots if FFoot_ID ~= 0827 and FFoot_ID ~= 2551 then return 0 end -- Checking if player has the item required "The item needed in inventory". if item < 1 then return 0 end -- End checking end -- After checking, apply the effects return 1 -- End of process end Next, we apply this into the attacking parameters. Find "function Skill_Melee_End ( ATKER , DEFER , sklv )" in Resource\script\calculate\skilleffect.lua This one is for "Normal melee's" Non-range. It will check for "Check_Nianshou" which we will call from functions.lua to identify the calling. local Check_Nianshou = CheckItem_Nianshou ( ATKER ) if Check_Nianshou == 1 then local P_R = 0.2 -- 20% chance to obtain kylin effect. local job = GetChaAttr( ATKER , ATTR_JOB ) if job == 5 then P_R = 1 end local Percentage = Percentage_Random ( P_R ) if Percentage == 1 then -- If the chance is obtained, then Add Stun for 1 second, and also a chance to apply heal. AddState ( ATKER , DEFER , STATE_XY , 1 , 1 ) SystemNotice ( ATKER , "<Kylin Set> Target Stunned for 1 Second.") end end Now we go find the "Range" melee, which applies for Sharpshooters, or range classes. "function Skill_Range_End ( ATKER , DEFER , sklv )" Same application here. local Check_Nianshou = CheckItem_Nianshou ( ATKER ) if Check_Nianshou == 1 then local P_R = 0.2 -- 20% chance to obtain kylin effect. local job = GetChaAttr( ATKER , ATTR_JOB ) if job == 5 then P_R = 1 end local Percentage = Percentage_Random ( P_R ) if Percentage == 1 then -- If the chance is obtained, then Add Stun for 1 second, and also a chance to apply heal. AddState ( ATKER , DEFER , STATE_XY , 1 , 1 ) SystemNotice ( ATKER , "<Kylin Set> Target Stunned for 1 Second.") end end
  35. 1 point
    If you already got function on one with normal set you can use this line to get the actual id of item local checkSlot = GetEquipItemP(role,5)-- here it will check the slot 5 is neck you could find ids in Look.lua which located at script/calculate local ItemID = 0--we set it here always 0 for failure if checkSlot ~= nil then -- check when is empty or null ItemID = GetItemFissionID (checkSlot) -- this here will get the actual ItemID from Fissioned one end hope i helped and try use your head a bit you never learn unless you challenge yourself! good luck buddy.
  36. 1 point
    Сайт хороший, в коде не хватает комментариев. В принципе, учитывая, что он писался на php5, не всё так плохо. Дырок явных я не обнаружил, может быт, конечно, скрытые и есть (может быть поковыряюсь на выходных дабы очистить имя e1mer'a или наоборот), но сливать чужую работу - опозорить себя ниже плинтуса (как по мне).
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
  • Create New...