Jump to content
  • 0

How to giveitem via charid and get char name via charid


Question

4 answers to this question

Recommended Posts

Posted (edited)

because I use charid to count the number of monsters killed

here is my source

mellina,123,78,4	script	Goblin Invasion	459,{

set .gm,40;//GM Level to access the GM Menu. Default: 40

// GM menu | Game Masters Level 40 or more are allowed to Start and Stop invasions.
if (getgroupid()>.gm) {
	if (.mobs_left) {
		mes "[invasion]";
		mes "An invasion is already in progress! Details:";
		mes "Location: " + .Map$;
		mes "^FF0000"+.mobs_left+"^000000 Goblins left";
		mes " ";
		mes "Would you like to Stop the invasion?";
		if(select("- No:- Yes")==1) close;
		/*donpcevent "Goblin Invasion::OnTimer1805000";
		mes "Invasion stopped";
		set .mobs_left,0;
		announce "The Invasion has been stopped by "+strcharinfo(0),bc_all;
		close;*/
		for (set @i,0; @i < getarraysize(.charid); set @i,@i+1) {
			dispbottom "ID: " + .charid[@i] + " - Số lần: " + .charcount[@i];
			sleep2 4000;
		}
		close;
	}
	mes "[invasion]";
	mes "Please customize the Invasion event before starting it.";
	mes "Note - The Goblin Leader drops x5 of the prize.";
	Main:
	next;
	mes "[invasion]";
		switch(select("Item [" + getitemname(.ItemID) + "]:Start Event")) {
	case 1:
		mes "Which item would you like the Goblin Leader to drop?";
		mes "Please input the item ID:";
		input .ItemID;
		goto Main;
	case 2:
		mes "The event is going to begin shortly.";
		close2;
		goto OnStart;
}

//If a player clicks the NPC, the NPC will tell the player how much Mobs are left on the certain map.
mes "[invasion]";
mes "Còn "+.mobs_left+" 5 chú Goblins đang long nhong tại "+.Map$[.rand_map]+"!";
close;

		/////////////////////////
		//The actual NPC Script//
		/////////////////////////
//OnMinute30:

OnMinute50: // Change this to your liking (When you want the event to start)
OnStart:
killmonster .Map$,"Goblin Invasion::OnMyMobDead"; // delete before start
killmonster .Map$,"Goblin Invasion::OnSpecialMobDead"; // delete before start
set .mobs_left, 1;
sleep2 1000;
set $@ran, rand(1,5);
if ($@ran == 5) set .Map$,"izlude";
if ($@ran == 4) set .Map$,"payon";
if ($@ran == 3) set .Map$,"geffen";
if ($@ran == 2) set .Map$,"morocc";
if ($@ran == 1) set .Map$,"prontera";
sleep2 1000;
//announce "[ Rune-Midgard Guard ]: Ơ kìa, lũ Goblin đang phá làng phá xóm ở " + .Map$ + "!", bc_all;
sleep2 5000;
//announce "[ Rune-Midgard Guard ]: Mọi người ơi, hãy đuổi bọn choi choi này giúp chúng mình với!!", bc_all;
monster .Map$,0,0,"Goblin",1258,250,"Goblin Invasion::OnMyMobDead";
set .mobs_left, 250;
startnpctimer;
end;


/*OnTimer1800000:	// 30 minutes later, kills all the mobs.
killmonster .Map$,"Goblin Invasion::OnMyMobDead";
set .mobs_left, 0;
*/
OnStop://When the event is stopped by a GM, or all monsters dead.
set .mobs_left,0;
stopnpctimer;
killmonster .Map$,"Goblin Invasion::OnMyMobDead";
killmonster .Map$,"Goblin Invasion::OnSpecialMobDead";
announce "It seems that "+strcharinfo(0)+" has ended the Invasion!",bc_all;
end;

OnMyMobDead: //When a Goblin is killed
if (getarraysize(.charid))
{
	for (set @i,0; @i < getarraysize(.charid); set @i,@i+1) {
		if (getcharid(0) == .charid[@i]) /* Nếu không có thì thêm vào*/
		{
			set .charcount[@i],.charcount[@i]+1;
			break;
		}
		else
		{
			if (@i+1 == getarraysize(.charid)) /* Lượt cuối */
			{
				set .charid[getarraysize(.charid)],getcharid(0);
				set .charcount[getarraysize(.charcount)],1;
			}
		}
	}
}
else
{
	set .charid[0],getcharid(0);
	set .charcount[0],1;
}
set .mobs_left, .mobs_left-1;
if (.mobs_left==0) {
	//announce "[ Rune-Midgard Guard ]: Golbin Bé Bự đã xuất hiện tại " + .Map$ + "!", bc_all;
	monster .Map$,0,0,"Goblin Leader",1299,1,"Goblin Invasion::OnSpecialMobDead";

} else {
	if (.mobs_left > 0)
	{
		announce "Còn ["+.mobs_left+"/250] chú Goblins.",bc_map;
	}
}
end;

OnSpecialMobDead:
	announce strcharinfo(0)+" đã đá trúng mông Golbin Bé Bự, cả nhà vỗ tay hoan hô nào!", bc_all;
	getitem .ItemID,10; //Change the [5] to the amount you wish to hand out.
	donpcevent "Goblin Invasion::OnStop";
}
end;
OnInit:
set .ItemID,675;
}

I want to award the player by charid through the monster that killed

but i don't know how to do

I found Getnameditem but that it can only be given 1 item

and I do not know what to convert charid char name

Edited by hthuong
Posted
I found Getnameditem but that it can only be given 1 item

and I do not know what to convert charid char name

You want to create named items? (ex: hthuong's Stone)

getnameditem .@item_id, strcharinfo(0);

is the equivalent to:

set .@char_id, getcharid(0);
getitem2 .@item_id,.@amt,1,0,0, 254, 0, .@char_id & 0xFFFF, .@char_id >> 0x10;

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...