Hi. You can use INNER JOIN in the sql query to make the event check for your event_pick database. Example:
.@sql$ = "SELECT `char`.`char_id`, `name`"
+ " FROM `char`"
+ " INNER JOIN `event_pick`"
+ " ON `char`.`char_id` = `event_pick`.`char_id`"
+ " WHERE `char`.`online` = 1"
+ " AND `event_pick`.`qualified` = 1"
+ " ORDER BY RAND()";
query_sql .@sql$, .@cid, .@name$;
(Multiple lines not necessary. It's just for better readability.)
byako,83,154,4 script Who's Online Event 99,{
mes "[Who's Online Event]";
if (getgroupid() < 99) {
mes "Greetings! I see you're curious about our ^0000FFWho's Online Event^000000. Allow me to explain how it works.";
next;
mes "[Who's Online Event]";
mes "Every three hours I will select " + .winners + " random adventurers in the cities of Midgard to receive " + .prize_amt + " " + mesitemlink(.prize_id) + ". Only VIPs are eligible for the event.";
close;
}
else {
mes "Enable event?";
if (.winners_date$ != "") {
mes " ", "^EE8800Winners " + .winners_date$ + "^000000";
for (.@i = 0; .@i < getarraysize(.winners_cid); .@i++)
mes "- ^0000FF" + .winners_name$[.@i] + "^000000";
}
if (select("Yes", "No") == 1) {
mes "Event started.";
donpcevent strnpcinfo(3) + "::OnStart";
}
}
close;
OnHour00:
OnHour03:
OnHour06:
OnHour09:
OnHour12:
OnHour15:
OnHour18:
OnHour21:
OnStart:
.winners_date$ = "";
deletearray .winners_cid[0];
deletearray .winners_name$[0];
.@sql$ = "SELECT `char`.`char_id`, `name`"
+ " FROM `char`"
+ " INNER JOIN `event_pick`"
+ " ON `char`.`char_id` = `event_pick`.`char_id`"
+ " WHERE `char`.`online` = 1"
+ " AND `event_pick`.`qualified` = 1"
+ " ORDER BY RAND()";
query_sql .@sql$, .@cid, .@name$;
for (.@i = 0; .@i < getarraysize(.@cid); .@i++) {
if (!checkvending(.@name$[.@i]) &&
getgroupid(.@cid[.@i]) >= 2 &&
inarray(.map$, strcharinfo(3,.@cid[.@i])) > -1) {
setarray .winners_cid[.@i2], .@cid[.@i];
setarray .winners_name$[.@i2], .@name$[.@i];
.@i2++;
if (getarraysize(.winners_cid) >= .winners)
break;
}
}
.winners_date$ = gettimestr("%Y/%m/%d %H:%M",21);
if (getarraysize(.winners_cid) == 0) {
announce "There were no eligible adventurers for the Exiled Lucky Pick.", bc_all, 0x00FF00;
end;
}
.@size = getarraysize(.winners_cid);
for (.@i = 0; .@i < .@size; .@i++) {
.@text$ += .winners_name$[.@i];
if (.@size > 1) {
if ((.@i + 2) == .@size)
.@text$ += " and ";
else if ((.@i + 1) < .@size)
.@text$ += ", ";
}
getitem .prize_id, .prize_amt, convertpcinfo(.winners_cid[.@i],CPC_ACCOUNT);
dispbottom "You won " + .prize_amt + " " + itemlink(.prize_id) + " in Exiled Lucky Pick!", 0x000000, .winners_cid[.@i];
}
announce .@text$ + " won " + .prize_amt + " " + itemlink(.prize_id) + " in Exiled Lucky Pick!", bc_all, 0x00FF00;
end;
OnInit:
setarray .map$, "prontera", "izlude", "payon";
.prize_id = 50043; //50043
.prize_amt = 1;
.winners = 5;
end;
}