Jump to content

sader1992

Content Moderator
  • Posts

    1676
  • Joined

  • Last visited

  • Days Won

    71

Everything posted by sader1992

  1. NEMO Use Custom DLL you can put your things in the dll or make the dll call exe
  2. v1.1 FIX Critical issue with gepard/ip and compatibility with my other scripts i would suggest updating the script as soon as Passoble if you use ip or GePard Check
  3. example: you wanna duplicate this npc from rathena/npc/cities/prontera.txt you just type //for the map prontera_1 prontera_1,216,70,2 duplicate(Strife#pront) Strife#pront1 48 //for the map prontera_2 prontera_2,216,70,2 duplicate(Strife#pront) Strife#pront2 48 this will copy all the script for that npc for the map so it's much faster you just make a file have all your duplicates and it would be easier for you too
  4. { "resolution" : [ 1270, 1080 ], "data" : { "ropath" : "C:/Users/ROProvider/Desktop/test", "grfs" : [ "C:/Users/ROProvider/Desktop/test/default.grf" ] }, "moveconsole" : true, "defaultmap" : "prontera" }
  5. i don't know i just used notepad++ to count them
  6. YES but there is 3 items without costume = in your file
  7. DO NOT Disable Packet Encryption in NEMO
  8. in this file there is 7169 (ClassNum =) and 7166 (costume =) it must be (costume =) == (ClassNum =) this file wont work
  9. not really sure about the script but when i see it i remember the Global_Functions the F_getpositionname you don't use it in your script but it look like the script working on it ? E:/GitHub/rathena/npc/other/Global_Functions.txt function script F_getpositionname { switch( getarg(0,999) ) { case EQI_ACC_L: return "Accessory 1"; case EQI_ACC_R: return "Accessory 2"; case EQI_SHOES: return "Shoes"; case EQI_GARMENT: return "Robe"; case EQI_HEAD_LOW: return "Head 3"; case EQI_HEAD_MID: return "Head 2"; case EQI_HEAD_TOP: return "Head"; case EQI_ARMOR: return "Body"; case EQI_HAND_L: return "Left hand"; case EQI_HAND_R: return "Right hand"; case EQI_COSTUME_HEAD_TOP: return "Upper Costume Headgear"; case EQI_COSTUME_HEAD_MID: return "Middle Costume Headgear"; case EQI_COSTUME_HEAD_LOW: return "Lower Costume Headgear"; case EQI_COSTUME_GARMENT: return "Costume Garment"; case EQI_AMMO: return "Arrow/Ammunition"; case EQI_SHADOW_ARMOR: return "Shadow Armor"; case EQI_SHADOW_WEAPON: return "Shadow Weapon"; case EQI_SHADOW_SHIELD: return "Shadow Shield"; case EQI_SHADOW_SHOES: return "Shadow Shoes"; case EQI_SHADOW_ACC_R: return "Shadow Accessory 2"; case EQI_SHADOW_ACC_L: return "Shadow Accessory 1"; default: return "Unknown"; } } as i see setarray .@slots[0],2,3,4,5,6,7,8,9,10; 0 and 1 not in the array so you mean the accessorys ? if( .@slots[.@a] == 8 || .@slots[.@a] == 9) { = the weapons ? if you meant to use the F_getpositionname function then it's up and the shadow equipments are in it but i don't really think that the script completed ? not really sure
  10. i just notice that your item info don't have costume = so you will need to edit all the items to make it work with the last kro ? if you already did please upload the last lub you are using if not as you see there is 8 arguments result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum, DESC.costume) without the last argument (costume) the main function wont work cus without it you are using 7 arguments not 8 and the main function want 8 example: this how the item has to be [1847] = { unidentifiedDisplayName = "손톱", unidentifiedResourceName = "바그낙", unidentifiedDescriptionName = { "감정되지 않음. [돋보기] 를 사용하여 감정할 수 있다." }, identifiedDisplayName = "아이언 네일", identifiedResourceName = "아이언네일", identifiedDescriptionName = { "고대 영웅이 사용했다고 하는 너클.", "기존 너클과 구조가 다른 것 같지만 적을 단숨에 제압하는데 특화되어 있으며, 고대 영웅의 부츠와 공명하는 것 같다.", "2제련 당 ATK + 10.", "3제련 당 원거리 물리 공격력 4%씩 증가.", "9 제련 시 [폭기산탄] 데미지 10% 증가.", "11 제련 시 [폭기산탄] 스킬 쿨타임 1초 감소.", "고대 영웅의 부츠와 함께 장착 중 물리 공격 시 일정 확률로 7초간 STR+20, ATK+ 15% 증가.", "계열 : ^777777너클^000000 공격 : ^777777180^000000", "무게 : ^777777100^000000", "무기 레벨 : ^7777774^000000", "요구 레벨 : ^777777100^000000", "장착 : ^777777수라 계열^000000" }, slotCount = 2, ClassNum = 12, costume = false } this how you will get error [1847] = { unidentifiedDisplayName = "손톱", unidentifiedResourceName = "바그낙", unidentifiedDescriptionName = { "감정되지 않음. [돋보기] 를 사용하여 감정할 수 있다." }, identifiedDisplayName = "아이언 네일", identifiedResourceName = "아이언네일", identifiedDescriptionName = { "고대 영웅이 사용했다고 하는 너클.", "기존 너클과 구조가 다른 것 같지만 적을 단숨에 제압하는데 특화되어 있으며, 고대 영웅의 부츠와 공명하는 것 같다.", "2제련 당 ATK + 10.", "3제련 당 원거리 물리 공격력 4%씩 증가.", "9 제련 시 [폭기산탄] 데미지 10% 증가.", "11 제련 시 [폭기산탄] 스킬 쿨타임 1초 감소.", "고대 영웅의 부츠와 함께 장착 중 물리 공격 시 일정 확률로 7초간 STR+20, ATK+ 15% 증가.", "계열 : ^777777너클^000000 공격 : ^777777180^000000", "무게 : ^777777100^000000", "무기 레벨 : ^7777774^000000", "요구 레벨 : ^777777100^000000", "장착 : ^777777수라 계열^000000" }, slotCount = 2, ClassNum = 12 }
  11. and this main = function() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum, DESC.costume) if not result == true then return false, msg end for k, v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result == true then return false, msg end end for k, v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result == true then return false, msg end end k = DESC.costume k = DESC.unidentifiedResourceName v = DESC.identifiedDisplayName end return true, "good" end same as mrmagic but change the first line (not sure if it would change anything but just give it a try)
  12. main = function() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not result == true then return false, msg end for k, v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result == true then return false, msg end end for k, v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result == true then return false, msg end end k = DESC.unidentifiedResourceName v = DESC.identifiedDisplayName end return true, "good" end try this
  13. 2015-11-04aRagexe https://github.com/rathena/FluxCP
  14. View File sader's Hourly Rewards //===== rAthena Script ======================================= //= saders Hourly Rewards //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/ (this the first version there is no url yet) //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //==== all the configuration are in the last //==== support gepard / ip / or without them //==== if you use ip/gepard sql will be used for that //==== can add minimem level to get the rewards //==== can change the time //==== can ban the vending from the rewards (it will reset after relogin) //==== can add rewards else then variable //==== there is a shop npc for the variable //==== you can make it only for vip //==== can ban idle players for X time from the Hourly Rewards //==== player can ban his char from getting the reward by @HourlyBan (it will reset after relogin) //============================================================ //==== please send me a message if you find error //==== if you like my work maybe consider support me at paypal //==== [email protected] //============================================================ //============================================================ after loading the script you will need to re login to the game configuration In the last of the script OnInit: .s_idle = 0; // ban hourly rewards from idle players ? 0 no / 1 yes {if player didn't move for x time he wont get hourly reward} , DEFAULT = 0 .s_idle_time = 1800; // this the time for idle in secend , DEFAULT = 1800 (30 min) .s_vip = 0; // 1 = only for VIP / 0 = for everyone , DEFAULT = 0 .s_time = 3600000; // 1000 = 1 secend | 60000 = 1 min | 3600000 = 1 houre , DEFAULT = 3600000 (1 hr) .s_hourly_level = 0; // Minimam level to get the Houerly rewards / 0 = no minimem level , DEFAULT 0 .s_GePard_ip = 0; // 0 = no Gepard / 1 = Gepard / 2 = IP , DEFAULT 0 .s_vinding = 7; // DEFAULT 7 / 0 = will give the reward even if vending / 1 = no normal vending / 2 = no @autotrade / 4 = no buyingstore | Example: if you want to ban normal vend and buying store you add the numbers 1+4=5 query_logsql("CREATE TABLE IF NOT EXISTS `sader_variables_log` (`unique_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0',`ip` VARCHAR(100) NOT NULL,`variable` VARCHAR(32) NOT NULL, `index` INT NOT NULL, `value` INT NOT NULL,`account_id` INT NOT NULL,`char_id` INT NOT NULL,`char_name` VARCHAR(30) NOT NULL) ENGINE=MyISAM"); bindatcmd("UnHourlyBan",strnpcinfo(3)+"::OnUnHourlyBan",99,99); bindatcmd("HourlyBan",strnpcinfo(3)+"::OnHourlyBan",0,99); end; Hourly_Rewads: //put the Hourly Rewards here #HourlyRewards += 1; //getitem 905,1; // if you want to add items as reward you can add them here like that //getexp 10000,5000; // if you wanna add exp as reward add them here like that //if(#Hourly_Rewads_Check == 5){getitem 905,1;} // like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr //if(#Hourly_Rewads_Check >= 5){getitem 905,1;} // like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr or more return; } prontera,151,171,5 pointshop Hourly Rewards Shop 667,#HourlyRewards,901:1,902:10,903:15,904:1,905:200 //<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE> for any error contact me plz for faster update and fixes https://github.com/sader1992/sader_scripts //==== if you like my work maybe consider support me at paypal //==== [email protected] Submitter sader1992 Submitted 10/10/2017 Category Utilities Video Content Author sader1992  
  15. duplicate the maps you want and name them like at the end _1 _2 _3 etc duplicate the npcs in the maps too duplicate the warps make a command script like @channel make it accept numbers as many as there is map duplicate command example: - script channel_command -1,{ OnChannel: getmapxy(.@map$,.@x,.@y) if(atoi(.@atcmd_parameters$[0]) <= .channel_num){ for(.@i = 0;.@i < getarraysize(.channels); .@i++){ if(.@map$ == .channels[.@i]){ .@maps$ = getd(.@map$ + "_" + atoi(.@atcmd_parameters$[0])); warp .@maps$,.@x,.@y; message strcharinfo(0),"you are now in channel"+ atoi(.@atcmd_parameters$[0]) +"."; end; } } }else{ message strcharinfo(0),"there is no channel with this number."; } end; OnInit: bindatcmd("channel",strnpcinfo(3)+"::OnChannel",0,99); setarray .channels,"prontera";//the maps you want .channel_num = 5; //the number of channels end; } ^ i just type it didn't test it now you need to type the maps you want in the array .channels example prontera i am in prontera but i want to get to prontera channel 1 i type @channel 1 it will warp me to prontera_1 etc just an idea EDIT: i realized there is already @channel command lol if you used this change bindatcmd("channel",strnpcinfo(3)+"::OnChannel",0,99); (channel) to something else
  16. as i see yes .@r is the refine -11 so when the refine 11 .@r will be 0 so at 11 is (0*100,500) = no bonus at 12 (1*100,500) = 100 13 (2*100,500) = 200 etc the [min] mean that it will take the minimum number so the last will be 16 16 (5*100,500) = 500 now 17 (6*100,500) = also 500 cuz 600 > 500
  17. the client only read the first viewpointtable.txt it find so it's in the data folder (only if you use the data folder) if not then it's in the first grf (check your data.ini if you don't use data.ini then you know where to look for it) else it's your 2nd grf etc and make sure you put <TAB> not <SPACE>
  18. Version 1.2.0

    1364 downloads

    //===== rAthena Script ======================================= //= saders Hourly Rewards //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/ (this the first version there is no url yet) //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //==== all the configuration are in the last //==== support gepard / ip / or without them //==== if you use ip/gepard sql will be used for that //==== can add minimem level to get the rewards //==== can change the time //==== can ban the vending from the rewards (it will reset after relogin) //==== can add rewards else then variable //==== there is a shop npc for the variable //==== you can make it only for vip //==== can ban idle players for X time from the Hourly Rewards //==== player can ban his char from getting the reward by @HourlyBan (it will reset after relogin) //============================================================ //==== please send me a message if you find error //==== if you like my work maybe consider support me at paypal //==== [email protected] //============================================================ //============================================================ after loading the script you will need to re login to the game configuration In the last of the script OnInit: .s_idle = 0; // ban hourly rewards from idle players ? 0 no / 1 yes {if player didn't move for x time he wont get hourly reward} , DEFAULT = 0 .s_idle_time = 1800; // this the time for idle in secend , DEFAULT = 1800 (30 min) .s_vip = 0; // 1 = only for VIP / 0 = for everyone , DEFAULT = 0 .s_time = 3600000; // 1000 = 1 secend | 60000 = 1 min | 3600000 = 1 houre , DEFAULT = 3600000 (1 hr) .s_hourly_level = 0; // Minimam level to get the Houerly rewards / 0 = no minimem level , DEFAULT 0 .s_GePard_ip = 0; // 0 = no Gepard / 1 = Gepard / 2 = IP , DEFAULT 0 .s_vinding = 7; // DEFAULT 7 / 0 = will give the reward even if vending / 1 = no normal vending / 2 = no @autotrade / 4 = no buyingstore | Example: if you want to ban normal vend and buying store you add the numbers 1+4=5 query_logsql("CREATE TABLE IF NOT EXISTS `sader_variables_log` (`unique_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0',`ip` VARCHAR(100) NOT NULL,`variable` VARCHAR(32) NOT NULL, `index` INT NOT NULL, `value` INT NOT NULL,`account_id` INT NOT NULL,`char_id` INT NOT NULL,`char_name` VARCHAR(30) NOT NULL) ENGINE=MyISAM"); bindatcmd("UnHourlyBan",strnpcinfo(3)+"::OnUnHourlyBan",99,99); bindatcmd("HourlyBan",strnpcinfo(3)+"::OnHourlyBan",0,99); end; Hourly_Rewads: //put the Hourly Rewards here #HourlyRewards += 1; //getitem 905,1; // if you want to add items as reward you can add them here like that //getexp 10000,5000; // if you wanna add exp as reward add them here like that //if(#Hourly_Rewads_Check == 5){getitem 905,1;} // like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr //if(#Hourly_Rewads_Check >= 5){getitem 905,1;} // like this you can add reward for Xhr and this reward will be given for that X in this example 5 mean that the player did pass 5hr or more return; } prontera,151,171,5 pointshop Hourly Rewards Shop 667,#HourlyRewards,901:1,902:10,903:15,904:1,905:200 //<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE>,<ITEM_ID>:<PRICE> for any error contact me plz for faster update and fixes https://github.com/sader1992/sader_scripts //==== if you like my work maybe consider support me at paypal //==== [email protected]
    Free
  19. change getitem getarg(0),getarg(1); to getexp getarg(0),getarg(1); not the item id is the base exp and the item amount is the job exp and get rid of getitemname i mean remove or edit lines line this mes "^FF0000Reward^000000 : "+getarg(1)+" x ^0000FF"+getitemname( getarg(0) )+"^000000"; edit: like that // NPC Name must have a Number behind it. ex Name#1 , Name#2,... prontera,155,181,5 script Chained Quest#1 757,{ function ChainedQuest; mes "I am a Chained Quest NPC, you can only redo the previous Quest after you have finished all of my Quests."; next; // Quest Setup : // ChainedQuest( Reward,Amount , Required Zeny, {Item1,Amount1,Item2,Amount2,...} ); switch( getd( "Quest"+strnpcinfo(2) ) ){ Case 0: ChainedQuest( 5001,1, 10000, 607,10 ); Case 1: ChainedQuest( 5002,1, 15000, 607,20, 608,20 ); Case 2: ChainedQuest( 5003,1, 20000, 607,30, 608,30, 7539,30 ); // Case 3: ChainedQuest( 5004,1, 25000, 607,40, 608,30, 7539,40 ,501,10 ); // Case 4: ChainedQuest( 5005,1, 30000, 607,50, 608,30, 7539,50 ,501,10 ,502,10 ); // Case 5: ChainedQuest(....); // Case 6: ChainedQuest(....); default: mes "Congratulation ,You have finished all the Quest i gave you, you may Re-Do if you want."; set getd( "Quest"+strnpcinfo(2) ),0; close; } OnPCLoadMapEvent: showevent 1,0; end; function ChainedQuest { for( set .@i,3; getarg( .@i,0 ) != 0 ; set .@i,.@i + 2 ){ if( countitem( getarg( .@i ) ) < ( getarg( .@i + 1 )) ){ mes "[ ^FF0000Part "+( getd( "Quest"+strnpcinfo(2) ) + 1 )+"^000000 ]"; mes "^00FF00_______________________________^000000"; //mes "^FF0000Reward^000000 : "+getarg(1)+" x ^0000FF"+getitemname( getarg(0) )+"^000000"; mes "^00FF00_______________________________^000000"; mes "then bring me those items :"; mes "^00FF00_______________________________^000000"; mes ( Zeny < getarg(2) ? "^FF0000":"^0000FF" )+getarg(2)+" Zeny^000000"; for( set .@a,3; getarg( .@a,0 ) != 0 ; set .@a,.@a + 2 ){ mes (( countitem(getarg( .@a )) < ( getarg(.@a + 1 )) )? "^FF0000[ "+countitem(getarg(.@a))+" / "+(getarg(.@a+1)):"^0000FF[ "+getd( "Quest"+strnpcinfo(2) ) )+" ] "+getitemname(getarg(.@a))+"^000000 "; } close; } } if( Zeny < getarg( 2 ) ){ mes "You required "+getarg( 2 )+" Zeny."; close; } mes "[ ^FF0000Part "+( getd( "Quest"+strnpcinfo(2) ) + 1 )+"^000000 ]"; mes "Look's like you have collected all"; mes "^FF0000_______________________________^000000"; mes ( Zeny < getarg(2) ? "^FF0000":"^0000FF" )+getarg(2)+" Zeny^000000"; for( set .@i,3; getarg( .@i,0 ) != 0 ; set .@i,.@i + 2 ){ mes "^FF0000"+getarg( .@i+1 )+" x ^0000FF "+getitemname( getarg( .@i ) )+"^000000"; } next; if( select("^0000FFContinue^000000:Cancel") == 2 ){ mes "Okay..as you wish ~ come back again when you do continue it."; close; } for( set .@i,3; getarg( .@i,0 ) != 0 ; set .@i,.@i + 2 ){ delitem getarg( .@i ),getarg( .@i + 1 ); } set Zeny,Zeny - getarg( 2 ); set getd( "Quest"+strnpcinfo(2) ),getd( "Quest"+strnpcinfo(2) ) + 1; mes "You will be rewarded with "; mes "^0000FF_______________________________^000000"; //mes "^FF0000"+getarg(1)+"^000000 x ^0000FF"+getitemname( getarg(0) )+"^000000"; mes "^0000FF_______________________________^000000"; getexp getarg(0),getarg(1); close; } } prontera mapflag loadevent
  20. then i have no idea why that happen to you if everything as you said it should work with no problem if you didn't find a fix you could contact to me in discord and with TeamViewer installed on your PC and i would try fix that but hopefully someone here have a fix before that
  21. any error on the terminal after starting the server ?
  22. is your char_conf.txt file empty ?
×
×
  • Create New...