Jump to content

CenturyGothic

Members
  • Posts

    37
  • Joined

  • Last visited

Posts posted by CenturyGothic

  1. Sorry for reviving the topic. I have a question please:

    How do you reset this for the next month rewards?

    EDIT:

    Found some issues on the script. The IP and Mac check is buggy. It still gives out the reward regardless of the condition and then it's spammable, people may claim the rewards for the entire month by just clicking the NPC or using the command repeatedly.

  2. On 2/11/2020 at 11:39 AM, Functor said:

    It isn't the reason of the crash. This happened during the attempt of memory allocation for effect's object. Maybe the reason of the crash is the lack of free RAM memory.

    Thanks Functor. Currently using 16GB RAM on my server, isn't that enough for around 100 players on same map?

    or are you referring to the player's pc ram?

     

  3. Hello everyone,

    I was just wondering if anyone knows how to make this work.

    I need to allow a sniper's Sharp Shoot skill to friendly fire his/her teammate without dealing damage onto his teammates but deal damage to the targeted enemies within the cells where the arrow bounces

    Been trying to look for answer across the board and found none. Hope someone can help. Appreciate it in advance, thanks!

  4. On 12/2/2019 at 6:34 AM, gidzdlcrz said:

    How did you solved it? I just notice i have the same problem. I already edited the db/pre-re/guild_skill_tree.yml. Where to go next? Which scr file i should meddle with? Thanks!

    Did it work? is it still required to diff the src?

  5. Thank you @Haruka Mayumi Testing this again. 

    EDIT:
    This solution worked!

    On 1/10/2020 at 5:25 PM, Haruka Mayumi said:

    in skill_db.txt
     

    
    289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x10020,	SA_DISPELL,Dispell

    change the inf3 into

    
    289,9,6,1,0,0x1,0:0:0:0:0:-1,5,1,yes,0,0xE00,0,magic,0,0x20,	SA_DISPELL,Dispell

    removing this 
    //    0x010000 - skill that affects hidden targets

     

  6. Thanks @Haruka Mayumi Testing the above. Will get back to this

    Edit:

    18 hours ago, Haruka Mayumi said:
    
    		case KO_ZANZOU: {
    				int c = 0;
    
    				i = map_foreachinmap(skill_check_condition_mob_master_sub, sd->bl.m, BL_MOB, sd->bl.id, MOBID_ZANZOU, skill_id, &c);
    				if( c >= skill_get_maxcount(skill_id,skill_lv) || c != i) {
    					clif_skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0);
    					return false;
    				}
    			}
    			break;
    +		case MO_EXTREMITYFIST:
    +				if( !sd->spiritball || !sd->sc.data[SC_EXPLOSIONSPIRITS]){
    +					clif_skill_fail(sd , skill_id, USESKILL_FAIL_LEVEL, 0);
    +					return false;
    +				}
    +			break;
    	}

    in skill.cpp

     

    The above worked! Thank you ❤️

  7. Hello everyone, this is how currently rAthena works. When you cast asura to anyone, regardless if you got dispelled/absorbed spirit, the asura will still continue and deal damage.

    However in the old times, when absorb spirit / dispel finishes first, the asura will miss. (no damage) Does anyone have a diff to this?

    Similar to when you cast asura to a player, and the player hides, asura miss (currently works in rAthena). The same thing needs to happen with Absorb Spirit and Dispel

     

    Thanks in advance!

  8. Im getting the error attached every time I use single-target Homunculus skills.

    GetSkillAttackRange
    
    [string "buf"]:262: attempt to index field 'AttackRange' (a nil value)

    I have an updated lua files from https://github.com/zackdreaver. The client files are in Pre-renewal. Using 20180621 client

    I would really appreciate any help on this. I tried searching for answers but no one mentioned how they fixed it. 

    Thanks in advance

    getskillattackrange.png

  9. On 9/26/2017 at 9:59 AM, benching said:
    
    // Copyrights Notice
    // ========================================================
    // This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License.
    // To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/.
    // ========================================================
    // Introduction
    // ========================================================
    // Copyrights 2015-2020 Jordan Lacandula All rights reserved
    // ========================================================
    // Script: Guild Package Giver/Redeemer NPC
    // ========================================================
    // Programmer: Jordan Lacandula
    // Website: For more info, visit http://jordanlacandula.tk/
    // ========================================================
    // Bug Report/Job Request
    // ========================================================
    // Email: [email protected]
    // Skype: jordan.lacandula
    // ========================================================
    // Features/Includes
    // ========================================================
    // SQL Database Support
    // used table names `gpack_code` and `guild_package`
    // Duplicate IP Checking (also supports same IP, see below)
    // Account Checking
    // Online Status Checker
    // Easy to change Package items for guild master
    // Easy to change Package items for guild member
    // Minimum Guild members Checking (default: 8)
    // ========================================================
    // Multiple IP ( Use gpack code to bypass IP Checking )
    // ========================================================
    // End Introduction
    // ========================================================
    
    quiz_02,233,367,8	script	Guild Master	421,{
    
    
    	if( getgmlevel() == 99 ){
    		set .c_length,10;
    		setarray .g_code$[0],"A","B","C","D","E","F","G","H","I","J","K","L", 				"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9";
    		mes "What can i do for you Sire?";
    		switch(select("Nothing:View Code List:^FF0000 Add Package Code^000000")){
    		case 1:
    			break;
    		case 2:
    			query_sql("SELECT `guild_id`, `gcode`,`status` FROM `gpack_code` ORDER BY `status` DESC",.@glist,.@codeview$,.@stts);
    			dispbottom "Status | GPack Code";
    			for(set @ei,0; @ei < getarraysize(.@codeview$); set @ei,@ei + 1){
    				query_sql("`SELECT `name` FROM `guild` WHERE `guild_id` = '"+.@glist[@ei]+"'",.@gn$);
    				dispbottom ""+.@stts[@ei]+" | "+.@codeview$[@ei]+"  |  "+.@gn$+"";
    			}
    			close;
    			break;
    		case 3:
    			next;
    			mes "Creating New Code for Guild: ";
    			input .@rguild$;
    			set .@cr,query_sql("SELECT `guild_id` FROM `guild` WHERE `name` = '"+.@rguild$+"'",.@g);
    			if(.@cr <= 0){
    				mes "^FF0000 Guild Not Found!^000000";
    				close;
    			}
    
    			for(set @i, 0; @i< .c_length; set @i, @i+1)
    			{
    				set @random_char, rand(0,(getarraysize(.g_code$)-1));
    				set @new_code$, @new_code$ + .g_code$[@random_char];
    			}
    			query_sql "INSERT INTO `gpack_code` (`guild_id`, `gcode`, `status`) VALUES ('"+.@g+"', '"+@new_code$+"', '0')";
    			set @new_code$, "";
    			next;
    			mes "Added Code for Guild";
    			mes "^FF0000 "+.@rguild$+"^000000";
    			close;
    			break;
    		}
    		mes "Proceeding to Player View";
    		next;
    	}
    
    	set .@hascode,0;
    	set .@code$,"null";
    	setarray .@gmaster[0],607,1,504,1; //gmaster pack
    	setarray .@gmember[0],607,10,504,1;	//gmember pack
    	
    	if(getcharid(2) == 0){
    		mes "you're not member of a guild";
    		close;
    	}
    	query_sql("SELECT `master` FROM `guild` WHERE `guild_id` = '"+getcharid(2)+"'",.@gid$);
    
    	if(.@gid$ != strcharinfo(0)){
    		mes "Only Guild Masters can claim the packages";
    		close;
    	}
    
    	mes "^FF0000 Guild Package^000000";
    	mes "Greetings ^FF0000 "+strcharinfo(0)+"^000000";
    	mes "Master of the Guild^FF0000 "+strcharinfo(2)+"^000000.";
    	next;
    	mes "Do you have code?";
    	switch(select("No:Yes")){
    	case 1:
    		break;
    	case 2:
    		input .@code$;
    		mes "Verifying Code";
    		mes "Please Wait....";
    
    		set .@csr,query_sql("SELECT `gcode` FROM `gpack_code` WHERE `gcode` = '"+.@code$+"'");
    		if ( .@csr <= 0 ){
    			next;
    			mes "^FF0000 Invalid Code^000000";
    			mes "Codes are Case-Sensitive, Please make sure of it.";
    			close;
    		}
    
    		query_sql("SELECT `status` FROM `gpack_code` WHERE `gcode` = '"+.@code$+"'",.@used);
    		if( .@used != 0 ){
    			mes "Guild Package code has been used already";
    			close;
    		}
    
    		set .@hascode,1;
    		break;
    	}
    	next;
    		
    	mes "Do you wish to claim your ^FF0000 Guild Package^000000 ?";
    	switch(select("No:Yes")){
    	case 1:
    		close;
    		break;
    	case 2:
    		next;
    		mes "^FF0000 CLAIM GUILD PACKAGE^000000 ";
    		mes "Master will receive the following:";
    		for ( set .@i, 0; .@i < getarraysize(.@gmaster); set .@i, .@i + 2 )
    		mes .@gmaster[.@i+1] + " x " + getitemname(.@gmaster[.@i]);
    		next;
    		mes "^FF0000 CLAIM GUILD PACKAGE^000000 ";
    		mes "Members will receive the following:";
    		for ( set .@i, 0; .@i < getarraysize(.@gmember); set .@i, .@i + 2 )
    		mes .@gmember[.@i+1] + " x " + getitemname(.@gmember[.@i]);
    		next;
    		mes "[^FF0000 Warning^000000 ]"; 
    		mes "Every one in your Guild can only claim Once regarding of their IP.";
    		mes "Only Online characters can claim a Guld Package";
    		mes "No special treatments if characters go offline while in process of claiming";
    		next;
    		mes "^FF0000 NOTE:^000000 You can only claim once.";
    		mes "^FF0000 NOTE:^000000 All members should be online.";
    		mes "^FF0000 NOTE:^000000 Make sure everyone have lots of Space in their inventory.";
    		next;
    		mes "^FF0000 CLAIM GUILD PACKAGE^000000 ";
    		mes "Claim now?";
    		switch(select("No:Yes")){
    		case 1:
    			close;
    			break;
    		case 2:
    			next;
    			set .@mm,8;	//required minimum members
    			setarray .@claimerlist$[0],"null";
    			set .@resultcount,query_sql("SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+getcharid(2)+"'",.@claimerlist$);
    			if( .@resultcount < .@mm ){
    				mes "Should have Total of "+.@mm +" members.";
    				close;
    				break;
    			}
    
    		// enforce IP check when code is not available
    		if( .@hascode == 0 ){
    			setarray .@iplist$[0],"null";
    			// same ip check
    			for( set .@i,0; .@i < .@resultcount; set .@i,.@i+1 ){
    				query_sql("SELECT `account_id` FROM `char` WHERE `name` = '"+.@claimerlist$[.@i]+"'",.@z);
    				query_sql("SELECT `last_ip` FROM `login` WHERE `account_id` = '"+.@z+"'",.@il$);
    				//check for duplicates
    				for( set .@j,0; .@j < .@i; set .@j,.@j+1 ){
    					if( .@il$ == .@iplist$[.@j] ){
    						mes "^FF0000 Duplicate IP Address^000000";
    						mes "^FF0000 NOTE:^000000 Each player should have different IP address";
    						mes "If you should not see this, Please report to admin";
    						close;
    					}
    				}
    				//add to list
    				setarray .@iplist$[.@i],.@il$;
    			}
    		}
    			for( set .@i,0; .@i < .@resultcount; set .@i,.@i+1 ){
    				//account check
    				query_sql("SELECT `account_id` FROM `char` WHERE `name` = '"+.@claimerlist$[.@i]+"'",.@x);
    				set .@haspack,query_sql("SELECT `acc_id` FROM `guild_package` WHERE `acc_id` = '"+.@x+"'");
    				//ip check
    				query_sql("SELECT `last_ip` FROM `login` WHERE `account_id` = '"+.@x+"'",.@xx);
    				set .@haspack2,query_sql("SELECT `claim_ip` FROM `guild_package` WHERE `claim_ip` = '"+.@xx+"'");
    				//character name check
    				set .@haspack3,query_sql("SELECT `char_name` FROM `guild_package` WHERE `char_name` = '"+.@claimerlist$[.@i]+"'");
    				if(.@haspack > 0 || .@haspack2 > 0 || .@haspack3 > 0){
    					mes "One or more in your member(s) has already received the package.";
    					close;
    					break;
    				}
    			}
    
    			// TODOs: check if master and all members are online
    			set .@onlinechk,query_sql("SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+getcharid(2)+"' AND `online` = 0");
    			if( .@onlinechk > 0 ){
    				mes "Make sure all members are online";
    				close;
    				break;
    			}
    
    			for ( set .@j,0; .@j < .@resultcount; set .@j,.@j+1 ){
    				if( .@claimerlist$[.@j] == strcharinfo(0)){
    					for ( set .@i, 0; .@i < getarraysize(.@gmaster); set .@i, .@i + 2 )
    					getitem .@gmaster[.@i], .@gmaster[.@i+1];
    				}else{
    					for ( set .@i, 0; .@i < getarraysize(.@gmember); set .@i, .@i + 2 )
    					atcommand "#item "+.@claimerlist$[.@j]+" "+.@gmember[.@i]+" "+.@gmember[.@i+1]+"";
    				}
    				set .@acid,"null";
    				query_sql("SELECT `account_id` FROM `guild_member` WHERE `name` = '"+.@claimerlist$[.@j]+"'",.@acid);
    				query_sql("SELECT `last_ip` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_ip$);
    				query_sql("SELECT `last_mac` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_mac$);
    				query_sql("SELECT `last_cpu` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_cpu$);
    				query_sql("SELECT `last_motherboard` FROM `login` WHERE `account_id` = '"+.@acid+"'",.@c_mb$);
    				query_sql("SELECT `char_id` FROM `char` WHERE `name` = '"+.@claimerlist$[.@j]+"'",.@mem_id);
    
    				query_sql "INSERT INTO `guild_package` (`acc_id`, `char_id`, `char_name`, `guild_id`, `guild_name`, `guild_master`, `claim_ip`, `claim_mac`, `claim_cpu`, `claim_motherboard`) VALUES ('"+.@acid+"','"+.@mem_id+"','"+.@claimerlist$[.@j]+"','"+getcharid(2)+"','"+strcharinfo(2)+"','"+strcharinfo(0)+"','"+.@c_ip$+"','"+.@c_mac$+"','"+.@c_cpu$+"','"+.@c_mb$+"')";
    			}
    			
    			next;
    			mes "Package has been Distributed.";
    			close2;
    			query_sql("UPDATE `gpack_code` SET `guild_id` = '"+getcharid(2)+"', `status` = '1' WHERE `gcode` = '"+.@code$+"'");
    			announce "The Guild "+strcharinfo(2)+" has Signed Up for war",BC_ALL,0xFF0000;
    			break;
    		}
    		break;
    	}
    	switch(rand(1,4)){
    	case 1:
    		npctalk "Hey you noob, your turn";
    		sleep 1000;
    		npctalk "Oh you're not noob? Then prove it in WOE";
    		break;
    	case 2:
    		npctalk "Next!";
    		break;
    	case 3:
    		npctalk "NEXT NEXT NEXT, Move Faster";
    		break;
    	case 4:
    		npctalk "No more? Good.";
    	}
    	
    	OnInit:
    		waitingroom "Claim Guild Package Here",0;
    
    		query_sql "CREATE TABLE IF NOT EXISTS `guild_package` ( `acc_id` INT NOT NULL UNIQUE, `char_id` INT NOT NULL, `char_name` TEXT NOT NULL, `guild_id` INT NOT NULL, `guild_name` TEXT NOT NULL, `guild_master` TEXT NOT NULL, `claim_ip` TEXT NOT NULL, `claim_mac` TEXT NOT NULL, `claim_cpu` TEXT NOT NULL, `claim_motherboard` TEXT NOT NULL ) ENGINE=MyISAM";
    
    		query_sql "CREATE TABLE IF NOT EXISTS `gpack_code` (`guild_id` INT NOT NULL, `gcode` VARCHAR(10) NOT NULL, `status` INT NOT NULL ) ENGINE=MyISAM";
    	end;
    }
    

    I'm not sure what revision / hash of rA where they take the hardware details,

    This script was made that time,

     

    If the current version of rA you have don't take the hardware details of the client and save it to db,

    Then the claiming with same ip's is pretty much useless,

    This file is not being updated anymore, so through the updates of rA and MySQL,

    This file will throw errors,

    The code above will still show errors due to the column of hardware infos that are missing,

    You can just ignore them and assume that the same IP claiming is not working.

    Is there an update to this guild package script?

×
×
  • Create New...