Jump to content

hendra814

Members
  • Posts

    1191
  • Joined

  • Last visited

  • Days Won

    17

Posts posted by hendra814

  1. 2 hours ago, GM Winter said:

     

    1.png

    sorry i'm forget to remove script ::convex at the first line

    try this

    //===== eAthena Script =======================================
    //= Super Convex Mirror
    //===== By: ==================================================
    //= Brian
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: =====================================
    //= eAthena SVN
    //===== Description: =========================================
    //= Detects if every MVP is alive or dead.
    //===== Additional Comments: =================================
    //= http://www.eathena.ws/board/index.php?showtopic=242050
    //============================================================
    
    geffen,140,173,5	script	MVP Checker	882,{
    ONMVPSTATUS:
    	for( .@i = 0; .@i < getarraysize( .mvp_name$ ); .@i++ ) {
    		switch (.@i) {
    			case 42:
    				.@alive = ( $@thana_summon < 6 || mobcount( "thana_boss", "#Death::OnThanaDead" ) );
    			break;
    			default:
    				.@alive = mobcount( .mvp_map$[.@i], "" );
    			break;
    		}
    		
    		if ( .display_type == 2 )
    			.@menu$ = .@menu$ + ( ( .@alive ) ? "^008000" : "^FF0000" ) + .mvp_name$[.@i] + "^000000 (" + .mvp_map$[.@i] + "):";
    		else if ( .display_type == 1 )
    			mes ( ( .@alive ) ? "^FF0000" : "^008000" ) + .mvp_name$[.@i] + "^000000 (" + .mvp_map$[.@i] + ")";
    	}
    	
    	if ( .display_type == 1 ) close;
    	
    	.@num = select( .@menu$ ) - 1;
    	
    	if (.warp_to_mvp == 1)
    		warp .mvp_map$[.@num],0,0;
    	else if(.warp_to_mvp == 2) {
    		sleep2 1000;
    		sc_start SC_BOSSMAPINFO,600000,0;
    	}
    	end;
    
    	OnInit:
    		bindatcmd "MVPSTATUS",strnpcinfo(0)+"::ONMVPSTATUS";
    
    		 // 0 = disabled, 1 = enabled, 2 = enabled + SC_BOSSMAPINFO
    		.warp_to_mvp = 0;
    		
    		setarray .mvp_map$, 
    			"moc_pryd06","ra_fild03","ra_fild04","ve_fild01","ve_fild02",
    			"lou_dun03","prt_maze03","abbey03",
    			"gl_chyard","abyss_03","gef_dun02","gef_dun01","treasure02",
    			"pay_fild10","gon_dun03","abbey02","xmas_fild01","ra_san05",
    			"prt_sewb4","mosk_dun03","thor_v03","ama_dun03",
    			"kh_dun02","ayo_dun02","niflheim","anthell02",
    			"mjolnir_04","pay_dun04","gef_fild03","gef_fild10",
    			"moc_pryd04","in_sphinx5","moc_fild17","ein_dun02","xmas_dun02",
    			"beach_dun","thana_boss","tur_dun04","odin_tem03",
    			"jupe_core","lhz_dun02";
    
    		setarray .mvp_name$, 
    			"AmonRa","Atroce","Atroce","Atroce","Atroce",
    			"Bacsojin","Baphomet","Beelzebub",
    			"DarkLord","Detale","Doppelganger","Dracula","Drake",
    			"Eddga","EvilSnakeLord","FallenBishop","Garm","GloomUnderNight",
    			"GoldenThiefBug","Gopinich","Ifrit","IncantationSamurai",
    			"KielD01","LadyTanee","LordofDeath","Maya",
    			"Mistress","MoonlightFlower","OrcHero","OrcLord",
    			"Osiris","Pharaoh","Phreeoni","RSX0806","Stormy Knight",
    			"TaoGunka","Thanatos","TurtleGeneral","ValkyrieRandgris",
    			"Vesper","Ygnizem";
    		
    		.display_type = 1;
    		
    		if( .warp_to_mvp > 0 )
    			.display_type = 2;
    	end;
    }

    but when i test it, i got error when run the command and i don't know to solve it

    image.png.0cc82313550f2a856dc2cc09c861cc54.png

    • Love 1
  2. 5 hours ago, GM Winter said:

    is there any chance to put some command here just like @mvpstatus to open it even your not talking to the npc?

    try this

    //===== eAthena Script =======================================
    //= Super Convex Mirror
    //===== By: ==================================================
    //= Brian
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: =====================================
    //= eAthena SVN
    //===== Description: =========================================
    //= Detects if every MVP is alive or dead.
    //===== Additional Comments: =================================
    //= http://www.eathena.ws/board/index.php?showtopic=242050
    //============================================================
    
    geffen,140,173,5	script	MVP Checker::convex	882,{
    ONMVPSTATUS:
    	for( .@i = 0; .@i < getarraysize( .mvp_name$ ); .@i++ ) {
    		switch (.@i) {
    			case 42:
    				.@alive = ( $@thana_summon < 6 || mobcount( "thana_boss", "#Death::OnThanaDead" ) );
    			break;
    			default:
    				.@alive = mobcount( .mvp_map$[.@i], "" );
    			break;
    		}
    		
    		if ( .display_type == 2 )
    			.@menu$ = .@menu$ + ( ( .@alive ) ? "^008000" : "^FF0000" ) + .mvp_name$[.@i] + "^000000 (" + .mvp_map$[.@i] + "):";
    		else if ( .display_type == 1 )
    			mes ( ( .@alive ) ? "^FF0000" : "^008000" ) + .mvp_name$[.@i] + "^000000 (" + .mvp_map$[.@i] + ")";
    	}
    	
    	if ( .display_type == 1 ) close;
    	
    	.@num = select( .@menu$ ) - 1;
    	
    	if (.warp_to_mvp == 1)
    		warp .mvp_map$[.@num],0,0;
    	else if(.warp_to_mvp == 2) {
    		sleep2 1000;
    		sc_start SC_BOSSMAPINFO,600000,0;
    	}
    	end;
    
    	OnInit:
    		bindatcmd "MVPSTATUS",strnpcinfo(0)+"::ONMVPSTATUS";
    
    		 // 0 = disabled, 1 = enabled, 2 = enabled + SC_BOSSMAPINFO
    		.warp_to_mvp = 0;
    		
    		setarray .mvp_map$, 
    			"moc_pryd06","ra_fild03","ra_fild04","ve_fild01","ve_fild02",
    			"lou_dun03","prt_maze03","abbey03",
    			"gl_chyard","abyss_03","gef_dun02","gef_dun01","treasure02",
    			"pay_fild10","gon_dun03","abbey02","xmas_fild01","ra_san05",
    			"prt_sewb4","mosk_dun03","thor_v03","ama_dun03",
    			"kh_dun02","ayo_dun02","niflheim","anthell02",
    			"mjolnir_04","pay_dun04","gef_fild03","gef_fild10",
    			"moc_pryd04","in_sphinx5","moc_fild17","ein_dun02","xmas_dun02",
    			"beach_dun","thana_boss","tur_dun04","odin_tem03",
    			"jupe_core","lhz_dun02";
    
    		setarray .mvp_name$, 
    			"AmonRa","Atroce","Atroce","Atroce","Atroce",
    			"Bacsojin","Baphomet","Beelzebub",
    			"DarkLord","Detale","Doppelganger","Dracula","Drake",
    			"Eddga","EvilSnakeLord","FallenBishop","Garm","GloomUnderNight",
    			"GoldenThiefBug","Gopinich","Ifrit","IncantationSamurai",
    			"KielD01","LadyTanee","LordofDeath","Maya",
    			"Mistress","MoonlightFlower","OrcHero","OrcLord",
    			"Osiris","Pharaoh","Phreeoni","RSX0806","Stormy Knight",
    			"TaoGunka","Thanatos","TurtleGeneral","ValkyrieRandgris",
    			"Vesper","Ygnizem";
    		
    		.display_type = 1;
    		
    		if( .warp_to_mvp > 0 )
    			.display_type = 2;
    	end;
    }

     

  3. 14 hours ago, GM Winter said:

    hello is it possible to put @rotdstatus command so that the player will know what is the race active on the spot without coming to the rotd npc ,

     

     

    Try this

    add sript line 6 and 80

    
    
    prontera,155,181,5	script	ROTD	436,{
    set .@gmlevel,getgmlevel();
    
    ONROTD:
    do{
        set .@menu,select("^4EEE94ROTD Information^000000",
                    ( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set a New Monster's Race",
                    ( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set EXP Bonus",        
                    ( .@gmlevel < .gm_level )?"":"^FF0000[GM]^000000Set Item / Zeny Bonus",
                    "Close" );
                    
        switch( .@menu ) {
            Case 1:
                mes "^FF0000ROTD^000000 refer to ^0000FFRace of the Day^000000";
                mes "In another word, it mean that the ^FF0000Monster's Race^000000 that you killed by day will grant you ^FF0000Extra Bonus EXP / Item / Zeny ^000000.";
                next;
                mes "[ ^FF0000Today's ROTD^000000 ]";
                mes "^0000FF"+.rotd$[.today_rotd]+"^000000 Race";
                if ( .rotd_exp_bonus ) mes " ~ ^777777"+.rotd_exp_bonus+"% more exp^000000";
                if ( ( .rotd_item_amount && .rotd_item_rate ) || .rotd_zeny || .rotd_exp_bonus ) {
                    mes " ";
                    mes "Reward : "+( ( .rotd_item_rate )? .rotd_item_rate+"%":"" )+" : ";
                    if ( .rotd_item_amount && .rotd_item_rate ) mes " ~ ^777777"+.rotd_item_amount+" x "+getitemname( .rotd_item_id )+"^000000";
                    if ( .rotd_zeny ) mes " ~ ^777777"+.rotd_zeny+" Zeny^000000";
                    mes " ";
                    mes "Amount are random...";
                }
                break;
            Case 2:
                mes "Select new race.";
                set .today_rotd,select( .rotd_menu$ ) - 1;
                if ( .today_rotd >= .rotd_size ) set .today_rotd,rand( .rotd_size );
                mes "New Race : ^777777"+.rotd$[.today_rotd]+"^000000";
                delwaitingroom;
                waitingroom "[ROTD]:"+.rotd$[.today_rotd]+" ",0;
                break;
            Case 3:
                mes "Set new exp bonus. (%)";
                input .rotd_exp_bonus,0,100;
                if ( .rotd_exp_bonus ) mes "ROTD EXP : "+.rotd_exp_bonus+" %";
                break;
            Case 4:
                mes "Set Rotd bonus";
                mes "Inset Zeny Bonus";
                input .@zeny;
                mes "Insert Item ID";
                do{
                    input .@item,0,32767; 
                    if ( !.@item ) close;
                }while( getitemname( .@item ) == "null" );
                mes "Enter amount.";
                input .@amount,0,30000;
                mes "Enter Rate to gain.";
                input .@rate,0,100;
                if ( .@amount && .@rate ) {
                    next;
                    mes "Updated item bonus : ( "+.@rate+"% )";
                    mes "^777777"+.@amount+" x "+getitemname( .@item )+"^000000";
                    mes "^777777"+.@zeny+" Zeny^000000";
                    if ( select( "Confirm","Cancel" ) == 1 ) {
                        set .rotd_item_id,.@item;    
                        set .rotd_item_amount,.@amount;
                        set .rotd_item_rate,.@rate;
                        set .rotd_zeny,.@zeny;
                        mes "Updated.";
                    }
                }
            default: close;
        }
        next;
    }while( .@menu != 5 );
    close;
    
    OnInit:
        // min gm level
        set .gm_level,80;
    
    bindatcmd "ROTD",strnpcinfo(0)+"::ONROTD";
    
        // monster race list
        setarray .rotd$[0],
            "Formless",
            "Undead",
            "Brute",
            "Plant",
            "Insect",
            "Fish",
            "Demon",
            "Demi Human",
            "Angel",
            "Dragon",
            "Boss",
            "Non-Boss";
        set .rotd_size,getarraysize( .rotd$ );
        for( set .@i,0; .@i < .rotd_size; set .@i,.@i + 1 )
            set .rotd_menu$,.rotd_menu$ + .rotd$[.@i] +":";
        set .rotd_menu$,.rotd_menu$ + "^0055FFRandom Race^000000";
    
        // min party member lv to gain exp
        set .party_level_range,10;
    
    // daily reset
    OnClock0000:
        set .today_rotd,rand( .rotd_size );
        set .rotd_exp_bonus,rand( 1,100 );
        delwaitingroom;
        waitingroom "[ROTD]:"+.rotd$[.today_rotd]+" ",0;
        end;
        
    OnNPCKillEvent:
    if ( getmonsterinfo( killedrid,MOB_RACE ) == .today_rotd ) {
        set .@partyid,getcharid(1);
        set .@mob_base_exp,(( getmonsterinfo( killedrid,MOB_BASEEXP ) / 100 ) * .rotd_exp_bonus );
        set .@mob_job_exp,(( getmonsterinfo( killedrid,MOB_JOBEXP ) / 100 ) * .rotd_exp_bonus );
        if ( .@partyid ) {
            set .@aid,getcharid(3);
            set .@baselevel,BaseLevel;
            set .@map$,strcharinfo(3);
            getpartymember .@partyid,1;
            getpartymember .@partyid,2;
            while( .@i < $@partymembercount ) {
                if ( isloggedin( $@partymemberaid[.@i],$@partymembercid[.@i] ) )
                    if ( attachrid( $@partymemberaid[.@i] ) )
                        if ( strcharinfo(3) == .@map$ && ( BaseLevel - .@baselevel ) <= .party_level_range && ( BaseLevel - .@baselevel ) >= ~.party_level_range && Hp >= 1 ) {    
                            set BaseExp,( BaseExp + .@mob_base_exp );
                            set JobExp,( JobExp + .@mob_job_exp );
                            dispbottom "[ROTD Party] : "+.@mob_base_exp+" EXP";
                        }
                set .@i,.@i + 1;
            }
            attachrid( .@aid );
        }
        else {
            set BaseExp,( BaseExp + .@mob_base_exp );
            set JobExp,( JobExp + .@mob_job_exp );
            dispbottom "[ROTD SOLO] : "+.@mob_base_exp+" EXP";
        }
        if ( rand( 100 ) < .rotd_item_rate && .rotd_zeny ) 
            set Zeny,Zeny + rand( .rotd_zeny );
        if ( rand( 100 ) < .rotd_item_rate && .rotd_item_amount ) 
            getitem .rotd_item_id,rand( .rotd_item_amount ),.@aid;
    }
    end;
    }

     

    • Upvote 1
  4. On 7/14/2023 at 6:35 AM, ooGubAoo said:

    Thank you it work.

    But i need to refine succes 100% every level.

    How to change Percent to refine.

    Thank you very much.

    try change this part

    if (getequippercentrefinery(.@equip) > rand(100)) {

    into

    if (getequippercentrefinery(.@equip) > 0) {

     

  5. 3 hours ago, Heartfelt said:


    i found a little bug here
    Im using Sniper job 99 70 level
    it seems like this status doesn't give the correct number of ASPD
    with 153 AGI and 127 Dex
    it should be 187 ASPD
    image.jpeg.16870ed71a5ee09e70119a2218aadc36.jpeg
    i dont use any other aspd % bonus eqiupment, this is pure from agi and dex stat only
    it appears that the flee is not accurate as well, it should be 254


    any idea? thanks

    Are you sure this is pre renewal and for Sniper?

    Because pre renewal server max stat only 99.

    image.png.7af01f127f66f0ab1cbd9187cd213202.png

  6. On 8/9/2023 at 8:18 PM, Chaos92 said:

    Yes I can confirm this happens in latest fluxCP. But to be honest, that page does nothing except showing the Cash Shop part which need to be added manually. Maybe to show user about what items we added in ingame cash shop.

    so it's not same with purchase option?

  7. 5 hours ago, zeusc137 said:

    Hey! Thanks for that! However I was not able to find this ExternalSettings file ( I asked ChatGPT too, but maybe this is Client side?)

    Could you also help me find this one? Thanks! ❤️

     

    check in data folder or GRF at this path data\luafiles514\lua files\service_korea

    • Love 1
  8. 21 minutes ago, AinsLord said:

    the morethan 2 itemInfo.lub is quite tricky

    coz honestly i want to make like 3 custom lua

    so i can separate my custom items from other server

    so i know where the 99/70 custom item from 255 customs

    i think 2 item info already enough, 1 form chris translation project, and 1 from you custom iteminfo file.

    if you want put custom item, you can add it at your custom item info file.

    So when chris translation project have update, it's not impact to your custom item info file.

    • Love 1
  9. 1 hour ago, AinsLord said:

    do i need to do something in Diff/nemo patches?

     

    Edit:

    image.png.27dc9555155df42a6145cf3946447d72.png

    mine my client reads the itemInfo_EN.lua so i created itemInfo_EN_test.lua and put this

    tell me if this correct

    dofile("System/itemInfo_EN_test.lua") 
    
    tbl_custom = {
    
    
    	[30000] = {
    		unidentifiedDisplayName = "Zeny",
    		unidentifiedResourceName = "¹«ÇÑ°¡Á×ÁÖ¸Ó´Ï",
    		unidentifiedDescriptionName = { "Unknown Item, can be identified by using a ^6666CCMagnifier^000000." },
    		identifiedDisplayName = "Zeny",
    		identifiedResourceName = "¹«ÇÑ°¡Á×ÁÖ¸Ó´Ï",
    		identifiedDescriptionName = { "..." },
    		slotCount = 0,
    		ClassNum = 0,
    		costume = false
    	},
    	[30001] = {
    		unidentifiedDisplayName = "Cash Points",
    		unidentifiedResourceName = "ÄíÆù",
    		unidentifiedDescriptionName = { "Unknown Item, can be identified by using a ^6666CCMagnifier^000000." },
    		identifiedDisplayName = "Cash Points",
    		identifiedResourceName = "ÄíÆù",
    		identifiedDescriptionName = { "..." },
    		slotCount = 0,
    		ClassNum = 0,
    		costume = true
    	},
    	
    }
    
    
    -- Now for a helper function because i hate repetitions 
    -- It adds items from curTable if it is not present in refTable
    
    function itemAdder(curTable, refTable)
    	for ItemID,DESC in pairs(curTable) do
        	if refTable == nil or refTable[ItemID] == nil then
    			result, msg = AddItem(ItemID,DESC.unidentifiedDisplayName,DESC.unidentifiedResourceName,DESC.identifiedDisplayName,DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum)
    		
    			if not result then
    				return false, msg
    			end
    
    			for k,v in pairs(DESC.unidentifiedDescriptionName) do
    				result, msg = AddItemUnidentifiedDesc(ItemID, v)
    				
    				if not result then
    					return false, msg
    				end
    			end
    		
    			for k,v in pairs(DESC.identifiedDescriptionName) do
    				result, msg = AddItemIdentifiedDesc(ItemID, v)
    				
    				if not result then
    					return false, msg
    				end
    			end
    			if nil ~= DESC.EffectID then
    			result, msg = AddItemEffectInfo(ItemID, DESC.EffectID)
    			end
    			if not result == true then
    			return false, msg
    			end
    			if nil ~= DESC.costume then
    			result, msg = AddItemIsCostume(ItemID, DESC.costume)
    			end
    			if not result == true then
    			return false, msg
    			end
    		end
    	end
    	return true, "good"
    end
    
    -- And the newly designed main function
    function main()
    	result, msg = itemAdder(tbl_custom, nil)
    
    	-- add custom items (including official overrides)
      	if result then
      		result, msg = itemAdder(tbl, tbl_custom)
      		-- add non-overridden official items
      		end
      	return result, msg
    end

    do i need to put something in the itemInfo_EN.lua?

     

    EDIT:

    figure this one out thanks

    if your client read itemInfo_EN.lua, you must put the script in the itemInfo_EN.lua file.

    and original itemInfo_EN.lua put at itemInfo_EN_test.lua ( do file already correct for this option)

    but, it you put the script in the iteminfo_en_test.lua change do file info iteminfo_en.lua

    and diif/patch your client to read item info_en_test.lua

    no change for iteminfo_en.lua for this part

  10. 1 hour ago, AinsLord said:

    is this still working in a new iteminfo.lua files?

    if yes can anyone have like a walkthrough on how to apply

    seems different in the guide and in my iteminfo

     

    thanks

    yes stil working

    first prepare new iteminfolua file to collect all item info files

    here my example for collect data for chris item info file and you can add add new custom item at this rile

    dofile("System/itemInfo_EN.lua") 
    
    tbl_custom = {
    	[15035] = {
    		unidentifiedDisplayName = "Unidentified Armor",
    		unidentifiedResourceName = "¿ìµç¸ÞÀÏ",
    		unidentifiedDescriptionName = { "Can be identified by using a ^990099Magnifier^000000." },
    		identifiedDisplayName = "2010 Love Dad",
    		identifiedResourceName = "2010·¯ºê´ëµð",
    		identifiedDescriptionName = {
    			"Bonus Allstat +1.",
    			"_______________________",
    			"MaxHP +150",
    			"_______________________",
    			"MaxSP+150.",
    			"_______________________",
    			"Increases ^663399Stone Curse^000000 resistance by 90%.",
    			"Increases ^663399Frozen^000000 resistance by 90%.",
    			"Increases ^663399Stun^000000 resistance by 90%.",
    			"Increases ^663399Sleep^000000 resistance by 90%.",
    			"Increases ^663399Silence^000000 resistance by 90%.",
    			"Increases ^663399Curse^000000 resistance by 90%.",
    			"Increases ^663399Confusion^000000 resistance by 90%.",
    			"Increases ^663399Blind^000000 resistance by 90%.",
    			"Increases ^663399Poison^000000 resistance by 90%.",
    			"Increases ^663399Bleeding^000000 resistance by 90%.",
    			"_______________________",
    			"^0000CCType:^000000 Armor",
    			"^0000CCDefense:^000000 6",
    			"^0000CCWeight:^000000 10",
    			"^0000CCArmor Level:^000000 1",
    			"^0000CCEnchantable:^000000 No",
    			"_______________________",
    			"^0000CCRequirement:^000000",
    			"Base Level 1",
    			"All Job"
    		},
    		slotCount = 0,
    		ClassNum = 0,
    		costume = false
    	},
    }
    
    
    -- Now for a helper function because i hate repetitions 
    -- It adds items from curTable if it is not present in refTable
    
    function itemAdder(curTable, refTable)
    	for ItemID,DESC in pairs(curTable) do
        	if refTable == nil or refTable[ItemID] == nil then
    			result, msg = AddItem(ItemID,DESC.unidentifiedDisplayName,DESC.unidentifiedResourceName,DESC.identifiedDisplayName,DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum)
    		
    			if not result then
    				return false, msg
    			end
    
    			for k,v in pairs(DESC.unidentifiedDescriptionName) do
    				result, msg = AddItemUnidentifiedDesc(ItemID, v)
    				
    				if not result then
    					return false, msg
    				end
    			end
    		
    			for k,v in pairs(DESC.identifiedDescriptionName) do
    				result, msg = AddItemIdentifiedDesc(ItemID, v)
    				
    				if not result then
    					return false, msg
    				end
    			end
    			if nil ~= DESC.EffectID then
    			result, msg = AddItemEffectInfo(ItemID, DESC.EffectID)
    			end
    			if not result == true then
    			return false, msg
    			end
    			if nil ~= DESC.costume then
    			result, msg = AddItemIsCostume(ItemID, DESC.costume)
    			end
    			if not result == true then
    			return false, msg
    			end
    		end
    	end
    	return true, "good"
    end
    
    -- And the newly designed main function
    function main()
    	result, msg = itemAdder(tbl_custom, nil)
    
    	-- add custom items (including official overrides)
      	if result then
      		result, msg = itemAdder(tbl, tbl_custom)
      		-- add non-overridden official items
      		end
      	return result, msg
    end

    please look at this part

    dofile("System/itemInfo_EN.lua") 

    here the main function to get data from other item info files.

    and make sure your client to read this iteminfo file.

    • Upvote 2
  11. 11 hours ago, Meteor91 said:

    hi hendra814, thanks for the script. i have look into it, for me i wanna to make only prontera can have multiple login do this means i need to put all map inside the array? how about the server processing? is it taking alot of resource or not?

    i'm not sure, but try this

    -	script	dualclientkicker	-1,{
    OnPCLoadMapEvent:
    set .@charmap$, strcharinfo(3);
    if(compare(.tmp$,.@charmap$)) end;
    set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE`account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` =(SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND`online` <> 0;",.@a);
    for(set(.@d,0);.@d<.@len;set(.@d,.@d+1)) {
    	if(!getmapxy(.@map$,.@x,.@y,0,rid2name(.@a[.@d])) && .@charmap$==.@map$)
    	set .@c,.@c+ 1;     
    	}
    if(.@c > .limitacc ) {
    dispbottom "Dual client only avaiable at Prontera City";
    	warp "SavePoint",0,0;
    	}    
    	end;
    OnInit:
    set .limitacc,1;
    setarray .maps$,"prontera";
    set .lens ,    getarraysize(.maps$) ;
    for(set(.a,0);.a<.lens;set(.a,.a+1)) {
    	setmapflag .maps$[.a],    mf_loadevent ;
    	set .tmp$ ,.tmp$+.maps$[.a]+",";
    }
    }

     

  12. 2 hours ago, Meteor91 said:

    Hello Team,

    i would like to get support for this script below. i found this ip limit script in this forum, the script working fine and i use it until now. the problem is, i want to make an adjustment where at prontera city there were no ip limit but when the player warp to dungeon map or other place the script will check whether they have 3 other chars outside prontera. if they have then the 4th login will be kick. i have try to make <if (strcharinfo(3) == "prontera") end;> it is not working means player can use this as advantage to login more than 3 id. kindly guide and assist me on this. below is the code:-

     

    -	script	Only3perIP	-1,{
    OnPCLoginEvent:
    if (getgmlevel() >= 99) end;
    set .@myname$, strcharinfo(0);
    if (query_sql("SELECT `char`.`name` FROM `char` LEFT JOIN login ON `char`.account_id=login.account_id WHERE login.last_ip='"+getcharip()+"' AND `char`.online=1 AND `char`.char_id!="+getcharid(0), .@name$) >= 3) {
    	for (set .@i,0; .@i<getarraysize(.@name$); set .@i,.@i+1) {
    		if (checkvending(.@name$[.@i]) != 2)
    			set .@sameip, .@sameip +1;
    	}
    	if (.@sameip >= 3) {
    		announce "Sorry, only 3 accounts per IP can be logged in at a time.", bc_self;
    		sleep 1000;
    		atcommand "@kick " + .@myname$;
    	}
    }
    end;
    }

     

    try my script below

    you can edit the map and the condition

    -	script	dualclientkicker	-1,{
    OnPCLoadMapEvent:
    set .@charmap$, strcharinfo(3);
    if(!compare(.tmp$,.@charmap$)) end;
    set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE`account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` =(SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND`online` <> 0;",.@a);
    for(set(.@d,0);.@d<.@len;set(.@d,.@d+1)) {
    	if(!getmapxy(.@map$,.@x,.@y,0,rid2name(.@a[.@d])) && .@charmap$==.@map$)
    	set .@c,.@c+ 1;     
    	}
    if(.@c > .limitacc ) {
    dispbottom "Dual accounts not allowed in PVP.";
    	warp "prontera",0,0;
    	}    
    	end;
    OnInit:
    set .limitacc,1;
    setarray .maps$,"guild_vs1","guild_vs2","guild_vs3","guild_vs4","guild_vs5","turbo_e_4","turbo_e_8","turbo_e_16",
    "pvp_y_1-1","pvp_y_1-2","pvp_y_1-3","pvp_y_1-4","pvp_y_1-5","pvp_y_2-1","pvp_y_2-2","pvp_y_2-3","pvp_y_2-4","pvp_y_2-5",
    "pvp_y_3-1","pvp_y_3-2","pvp_y_3-3","pvp_y_3-4","pvp_y_3-5","pvp_y_4-1","pvp_y_4-2","pvp_y_4-3","pvp_y_4-4","pvp_y_4-5",
    "pvp_y_5-1","pvp_y_5-2","pvp_y_5-3","pvp_y_5-4","pvp_y_5-5","pvp_y_6-1","pvp_y_6-2","pvp_y_6-3","pvp_y_6-4","pvp_y_6-5",
    "pvp_y_7-1","pvp_y_7-2","pvp_y_7-3","pvp_y_7-4","pvp_y_7-5","pvp_y_8-1","pvp_y_8-2","pvp_y_8-3","pvp_y_8-4","pvp_y_8-5",
    "pvp_n_1-1","pvp_n_1-2","pvp_n_1-3","pvp_n_1-4","pvp_n_1-5","pvp_n_2-1","pvp_n_2-2","pvp_n_2-3","pvp_n_2-4","pvp_n_2-5",
    "pvp_n_3-1","pvp_n_3-2","pvp_n_3-3","pvp_n_3-4","pvp_n_3-5","pvp_n_4-1","pvp_n_4-2","pvp_n_4-3","pvp_n_4-4","pvp_n_4-5",
    "pvp_n_5-1","pvp_n_5-2","pvp_n_5-3","pvp_n_5-4","pvp_n_5-5","pvp_n_6-1","pvp_n_6-2","pvp_n_6-3","pvp_n_6-4","pvp_n_6-5",
    "pvp_n_7-1","pvp_n_7-2","pvp_n_7-3","pvp_n_7-4","pvp_n_7-5","pvp_n_8-1","pvp_n_8-2","pvp_n_8-3","pvp_n_8-4","pvp_n_8-5",
    "pvp_2vs2";
    set .lens ,    getarraysize(.maps$) ;
    for(set(.a,0);.a<.lens;set(.a,.a+1)) {
    	setmapflag .maps$[.a],    mf_loadevent ;
    	set .tmp$ ,.tmp$+.maps$[.a]+",";
    }
    }

     

  13. On 7/11/2023 at 11:24 AM, nekoyarou said:

    Hi rAthena,

    so i have a problem with izlude map, there are some unwalkable tiles and the warp portal is in the wrong place.

    image.thumb.png.f5948d3e91545214eae10867a0a38cdd.png

    i have tried searching the forums for fix but everyone suggests using weepmapcache (which no longer exists or whatever idk, i cant open all of the link provided) or using mapcache editor but don't really specify what should i do when using it.

    can anyone help me to fix this.

    thanks in advance.

    try using this map files

    if your client read grf put the file into your custom grf

    and then put your grf name at  the first line in data.ini

  14. On 6/30/2023 at 11:08 AM, Brynner said:

    it seems not really an official server. they also use the exact english client translation we are using on their client.

    i'm not sure, but looking at this link. I think this server really official under gravity

    image.thumb.png.d6d77e95c24cb5008b0f033a9bc0a938.png

    And i know this server because it's promoted by official Facebook account Ragnarok Indonesia (Ragnarok Forever Love)

  15. 4 hours ago, rizsu0107 said:

    I don't receive any errors now. Thank you so much. Also my Woe Controller is Fixed thank you so much for this.
    image.png.ec25f08c7ed55248d7185c8a1a72793f.png

    image.thumb.png.65a1549aa94e9f247c61e471a768eb09.png

    Also, can I ask about this. It is not detecting the same user IP, if you don't mind :).

    image.png.2bb6dc42f0d1766d39e0acedebe8e73b.png

    -    script    No_Multiple_Accounts    -1,{
    OnPCLoadMapEvent:
    if( strcharinfo(3) == .Map$ ){

    query_sql("SELECT `last_ip` FROM `ragnarok_accounts`.`login` WHERE `account_id` = "+getcharid(3)+"",.@IP );
    query_sql("SELECT `account_id` FROM `ragnarok_accounts`.`login` WHERE `last_ip` = "+.@IP+"",.@Accountlist );

    for( set .@i,0; .@i < getarraysize( .@Accountlist ); set .@i,.@i + 1 )
        if( isloggedin( .@Accountlist[.@i] ) ) 
            set .@DetectedOnline,.@DetectedOnline + 1;

        if( .@DetectedOnline > .Limit ){
            mes "We detected there is "+.@DetectedOnline+" Users with same IP Logged in.";
            mes "Please log off these unused account.";
            close2;
            warp "thana_town",100,100;
        }
    }
    end;

    OnInit:
    // How many User with Same IP can logged in and stay at the specific map
    set .Limit,1;
    // What map will be restricted
    set .Map$,"jupe_ele";
    setmapflag .Map$,mf_loadevent;
    end;
    }

    for disable dual client, try my script below

    you can change the map for disable dual client.

    -	script	dualclientkicker	-1,{
    OnPCLoadMapEvent:
    set .@charmap$, strcharinfo(3);
    if(!compare(.tmp$,.@charmap$)) end;
    set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE`account_id` IN (SELECT `account_id` FROM `login` WHERE `last_ip` =(SELECT `last_ip` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND`online` <> 0;",.@a);
    for(set(.@d,0);.@d<.@len;set(.@d,.@d+1)) {
    	if(!getmapxy(.@map$,.@x,.@y,0,rid2name(.@a[.@d])) && .@charmap$==.@map$)
    	set .@c,.@c+ 1;     
    	}
    if(.@c > .limitacc ) {
    dispbottom "Dual accounts not allowed in PVP.";
    	warp "prontera",0,0;
    	}    
    	end;
    OnInit:
    set .limitacc,1;
    setarray .maps$,"guild_vs1","guild_vs2","guild_vs3","guild_vs4","guild_vs5","turbo_e_4","turbo_e_8","turbo_e_16",
    "pvp_y_1-1","pvp_y_1-2","pvp_y_1-3","pvp_y_1-4","pvp_y_1-5","pvp_y_2-1","pvp_y_2-2","pvp_y_2-3","pvp_y_2-4","pvp_y_2-5",
    "pvp_y_3-1","pvp_y_3-2","pvp_y_3-3","pvp_y_3-4","pvp_y_3-5","pvp_y_4-1","pvp_y_4-2","pvp_y_4-3","pvp_y_4-4","pvp_y_4-5",
    "pvp_y_5-1","pvp_y_5-2","pvp_y_5-3","pvp_y_5-4","pvp_y_5-5","pvp_y_6-1","pvp_y_6-2","pvp_y_6-3","pvp_y_6-4","pvp_y_6-5",
    "pvp_y_7-1","pvp_y_7-2","pvp_y_7-3","pvp_y_7-4","pvp_y_7-5","pvp_y_8-1","pvp_y_8-2","pvp_y_8-3","pvp_y_8-4","pvp_y_8-5",
    "pvp_n_1-1","pvp_n_1-2","pvp_n_1-3","pvp_n_1-4","pvp_n_1-5","pvp_n_2-1","pvp_n_2-2","pvp_n_2-3","pvp_n_2-4","pvp_n_2-5",
    "pvp_n_3-1","pvp_n_3-2","pvp_n_3-3","pvp_n_3-4","pvp_n_3-5","pvp_n_4-1","pvp_n_4-2","pvp_n_4-3","pvp_n_4-4","pvp_n_4-5",
    "pvp_n_5-1","pvp_n_5-2","pvp_n_5-3","pvp_n_5-4","pvp_n_5-5","pvp_n_6-1","pvp_n_6-2","pvp_n_6-3","pvp_n_6-4","pvp_n_6-5",
    "pvp_n_7-1","pvp_n_7-2","pvp_n_7-3","pvp_n_7-4","pvp_n_7-5","pvp_n_8-1","pvp_n_8-2","pvp_n_8-3","pvp_n_8-4","pvp_n_8-5",
    "pvp_2vs2";
    set .lens ,    getarraysize(.maps$) ;
    for(set(.a,0);.a<.lens;set(.a,.a+1)) {
    	setmapflag .maps$[.a],    mf_loadevent ;
    	set .tmp$ ,.tmp$+.maps$[.a]+",";
    }
    }

     

×
×
  • Create New...