1. Quest Board
//===== rAthena Script =======================================
//= tr0n's Questboard
//===== By: ==================================================
//= tr0n
//===== Current Version: =====================================
//= 1.6.5
//===== Description: =========================================
//= Easily add collection and hunting quests.
//===== Changelogs: ==========================================
// 1.0.0 Release
// 1.1.0 Added zeny reward
// 1.2.0 Rewrote checkmob and killcounter
// 1.3.1 Added level restriction
// 1.3.4 Added Reward Item Amount
// 1.4.4 Added Quest delay
// 1.5.4 Added repeatable Quests
// 1.6.4 Added party support
// 1.6.5 Bug fixes for party support
//============================================================
prontera,147,173,5 script Event Monsters 676,{
if(c_run==true){
mes "[^FF7700Questboard^000000]";
mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000";
mes "--------------------------------";
set
[email protected], getarraysize(getd("."+ currentquest$ + "_collectionitem"));
for( set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["
[email protected]
+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["
[email protected]+"]"))+"/"+getd("."+currentquest
$+"_collectionitem["+(
[email protected]+1)+"]")+" ea.^000000";
}
mes "--------------------------------";
mes "[Reward]";
mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd
("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+"
ea.^000000":"Nothing^000000");
mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000";
mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000";
mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000";
next;
if(select("Finish:Abort") == 2){
mes "[^FF7700Questboard^000000]";
mes "Quest aborted.";
set currentquest$, "";
set c_run, false;
close;
}
goto L_checkitems;
}
if(h_run==true){
mes "[^FF7700Questboard^000000]";
mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000";
mes "--------------------------------";
set
[email protected], getarraysize(getd("."+ currentquest$ + "_huntingmob"));
for( set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
set
[email protected], getd("."+currentquest$+"_huntingmob["+(
[email protected])+"]");
mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["
[email protected]+"]"))+"
- "+getd(currentquest$+"_"
[email protected]+"_"+(
[email protected]+1)+"_killcount")+"/"+getd("."+currentquest$
+"_huntingmob["+(
[email protected]+1)+"]")+" ea.^000000";
}
mes "--------------------------------";
mes "[Reward]";
mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("."
+currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+"
ea.^000000":"Nothing^000000");
mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000";
mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000";
mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000";
next;
if(select("Finish:Abort") == 2){
mes "[^FF7700Questboard^000000]";
mes "Quest aborted.";
for(set
[email protected], 1;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
set
[email protected], getd("."+currentquest$+"_huntingmob["+(
[email protected])+"]");
setd(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount", 0);
}
set currentquest$, "";
set h_run, false;
close;
}
goto L_checkmobs;
}
mes "[^FF7700Questboard^000000]";
mes "Select category:";
next;
switch(select((.collection)?"Collection Quests":"",
(.hunting)?"Hunting Quests":"",
"Exit")) {
case 1:
set
[email protected]$, "";
for( set
[email protected],0;
[email protected] < .collectionquestcount; set
[email protected],
[email protected]+1){
if (
[email protected]) set
[email protected]$,
[email protected]$+":";
set
[email protected]$,
[email protected]$ + "[" + getd("." +(
[email protected]
+1)+"_collectionmin") + " - " + getd("." +(
[email protected]+1)+"_collectionmax") + "] " + getd("." + (
[email protected]+1) +
"_collectionname$");
}
set
[email protected],select(
[email protected]$);
if(.quest_repeat == true){
if(gettimetick(2) < getd(
[email protected] + "_collection_delay")){
set
[email protected]_left, getd(
[email protected] + "_collection_delay")-gettimetick
(2);
mes "[^FF7700Questboard^000000]";
mes "You have to wait ^0000FF"+Time2Str(
[email protected]_left)+"^000000 to do
this quest again.";
close;
}
}
else{
if(getd(
[email protected] + "_collection_repeat") == true){
mes "[^FF7700Questboard^000000]";
mes "You already did this quest.";
mes "Please choose another one.";
close;
}
}
mes "[^FF7700Questboard^000000]";
mes "^0000FF"+getd("." +
[email protected] + "_collectionname$")+"^000000";
mes "--------------------------------";
set
[email protected], getarraysize(getd("."+
[email protected] + "_collectionitem"));
for( set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
mes "^FF0000"+getitemname(getd("."
[email protected]+"_collectionitem["
[email protected]+"]"))+"
- "+getd("."
[email protected]+"_collectionitem["+(
[email protected]+1)+"]")+" ea.^000000";
}
mes "--------------------------------";
mes "[Reward]";
mes "Item: ^0000FF"+((getd("."
[email protected]+"_collectionprize"))?getitemname(getd("."
[email protected]+"_collectionprize"))+" - "+getd("."
[email protected]+"_collectionamount")+"
ea.^000000":"Nothing^000000");
mes "Zeny: ^0000FF"+getd("."
[email protected]+"_collectionzeny")+"^000000";
mes "Base EXP: ^0000FF"+getd("."
[email protected]+"_collectionexp["+0+"]")+"^000000";
mes "Job EXP: ^0000FF"+getd("."
[email protected]+"_collectionexp["+1+"]")+"^000000";
next;
if(select("Accept:Decline") == 2){
close;
}
if(BaseLevel >= getd("."
[email protected]+"_collectionmin") && BaseLevel <= getd("."
[email protected]+"_collectionmax")){
mes "[^FF7700Questboard^000000]";
mes "Quest accepted.";
set c_run, true;
set currentquest$,
[email protected];
close;
}
else{
mes "[^FF7700Questboard^000000]";
mes "You don't have the required";
mes "level to do this quest.";
close;
}
case 2:
set
[email protected]$, "";
for( set
[email protected],0;
[email protected] < .huntingquestcount; set
[email protected],
[email protected]+1){
if (
[email protected]) set
[email protected]$,
[email protected]$+":";
set
[email protected]$,
[email protected]$ + "[" + getd("." +(
[email protected]+1)+"_huntingmin") + " - "
+ getd("." +(
[email protected]+1)+"_huntingmax") + "] " + getd("." + (
[email protected]+1) + "_huntingname$");
}
set
[email protected],select(
[email protected]$);
if(.quest_repeat == true){
if(gettimetick(2) < getd(
[email protected] + "_hunting_delay")){
set
[email protected]_left, getd(
[email protected] + "_hunting_delay")-gettimetick(2);
mes "[^FF7700Questboard^000000]";
mes "You have to wait ^0000FF"+Time2Str(
[email protected]_left)+"^000000 to do
this quest again.";
close;
}
}
else{
if(getd(
[email protected] + "_hunting_repeat") == true){
mes "[^FF7700Questboard^000000]";
mes "You already did this quest.";
mes "Please choose another one.";
close;
}
}
mes "[^FF7700Questboard^000000]";
mes "^0000FF"+getd("." +
[email protected] + "_huntingname$")+"^000000";
mes "--------------------------------";
set .
[email protected], getarraysize(getd("."+
[email protected] + "_huntingmob"));
for( set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
mes "^FF0000"+strmobinfo(1,getd("."
[email protected]+"_huntingmob["
[email protected]+"]"))+" -
"+getd("."
[email protected]+"_huntingmob["+(
[email protected]+1)+"]")+" ea.^000000";
}
mes "--------------------------------";
mes "[Reward]";
mes "Item: ^0000FF"+((getd("."
[email protected]+"_huntingprize"))?getitemname(getd("."
[email protected]+"_huntingprize"))+" - "+getd("."
[email protected]+"_huntingamount")+"
ea.^000000":"Nothing^000000");
mes "Zeny: ^0000FF"+getd("."
[email protected]+"_huntingzeny")+"^000000";
mes "Base EXP: ^0000FF"+getd("."
[email protected]+"_huntingexp["+0+"]")+"^000000";
mes "Job EXP: ^0000FF"+getd("."
[email protected]+"_huntingexp["+1+"]")+"^000000";
next;
if(select("Accept:Decline") == 2){
close;
}
if(BaseLevel >= getd("."
[email protected]+"_huntingmin") && BaseLevel <= getd("."
[email protected]+"_huntingmax")){
mes "[^FF7700Questboard^000000]";
mes "Quest accepted.";
set h_run, true;
set currentquest$,
[email protected];
close;
}
else{
mes "[^FF7700Questboard^000000]";
mes "You don't have the required";
mes "level to do this quest.";
close;
}
case 3:
close;
}
L_checkitems:
set
[email protected], getarraysize(getd("."+currentquest$+"_collectionitem"));
for( set
[email protected],0;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
if(countitem(getd("."+currentquest$+"_collectionitem["
[email protected]+"]"))>=getd
("."+currentquest$+"_collectionitem["+(
[email protected]+1)+"]")){
set
[email protected],
[email protected]+2;
}
}
if(
[email protected]<
[email protected]){
mes "[^FF7700Questboard^000000]";
mes "You don't have everything.";
close;
}
for( set
[email protected],0;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
delitem getd("."+currentquest$+"_collectionitem["
[email protected]+"]"),getd
("."+currentquest$+"_collectionitem["+(
[email protected]+1)+"]");
}
mes "[^FF7700Questboard^000000]";
mes "Congratulation! Here is your Reward.";
if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$
+"_collectionprize"),getd("." +currentquest$+"_collectionamount"));
set Zeny,Zeny+getd("." +currentquest$+"_collectionzeny");
getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$
+"_collectionexp["+1+"]");
setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay;
setd(currentquest$ + "_collection_repeat"),true;
set currentquest$, "";
set c_run, false;
close;
L_checkmobs:
set
[email protected], getarraysize(getd("."+currentquest$+"_huntingmob"));
set
[email protected],
[email protected]/2;
for(set
[email protected], 1;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
set
[email protected], getd("."+currentquest$+"_huntingmob["+(
[email protected])+"]");
if(getd(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount")==getd("."+currentquest$
+"_huntingmob["
[email protected]+"]")){
set
[email protected],
[email protected]+1;
if(
[email protected][email protected]){
goto L_checkmobs2;
}
continue;
}
goto L_checkmobs2;
}
L_checkmobs2:
if(
[email protected]<
[email protected]){
mes "[^FF7700Questboard^000000]";
mes "You didn't kill everything.";
close;
}
mes "[^FF7700Questboard^000000]";
mes "Congratulation! Here is your Reward.";
set
[email protected], getarraysize(getd("."+currentquest$+"_huntingmob"));
for(set
[email protected], 1;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
set
[email protected], getd("."+currentquest$+"_huntingmob["+(
[email protected])+"]");
setd(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount", 0);
}
if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$
+"_huntingprize"),getd("." +currentquest$+"_huntingamount"));
set Zeny, Zeny+getd("." +currentquest$+"_huntingzeny");
getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp
["+1+"]");
setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay;
setd(currentquest$ + "_hunting_repeat"),true;
set currentquest$, "";
set h_run, false;
close;
OnNPCKillEvent:
if(h_run!=true) end;
set
[email protected], getarraysize(getd("."+currentquest$+"_huntingmob"));
for(set
[email protected], 1;
[email protected] <
[email protected]; set
[email protected],
[email protected]+2){
if(killedrid==getd("."+currentquest$+"_huntingmob["+(
[email protected])+"]")){
set
[email protected], getd("."+currentquest$+"_huntingmob["+(
[email protected])+"]");
if(getd(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount")<getd
("."+currentquest$+"_huntingmob["
[email protected]+"]")){
setd(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount", getd
(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount")+1);
dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo
(1,
[email protected])+"] ("+ getd(currentquest$+"_"
[email protected]+"_"
[email protected]+"_killcount")+"/"+getd
("."+currentquest$+"_huntingmob["
[email protected]+"]")+")";
}
if(getcharid(1) != 0 && .party_support == true){
getmapxy(
[email protected]$,
[email protected],
[email protected]);
set
[email protected], getcharid(3);
set
[email protected]$, currentquest$;
getpartymember getcharid(1),1;
getpartymember getcharid(1),2;
for(set
[email protected], 0;
[email protected] <
[email protected];
[email protected]++){
if(isloggedin(
[email protected][
[email protected]],
[email protected][
[email protected]])){
if(h_run==true &&
[email protected][
[email protected]] !=
[email protected]
&&
[email protected]$ == getvar(currentquest$,
[email protected][
[email protected]]) && readparam(HP,
[email protected]
[
[email protected]]) > 0){
getmapxy(
[email protected]$,
[email protected],
[email protected],BL_PC,rid2name
(
[email protected][
[email protected]]));
if(
[email protected]$ ==
[email protected]$ && distance
(
[email protected],
[email protected],
[email protected],
[email protected]) < .party_range){
set
[email protected]_amt,getvar(getd
(
[email protected]$+"_"
[email protected]+"_"
[email protected]+"_killcount"),
[email protected][
[email protected]]);
set
[email protected]_goal,getd
("."
[email protected]$+"_huntingmob["
[email protected]+"]");
if(
[email protected]_amt<
[email protected]_goal)
{
setd(
[email protected]$
+"_"
[email protected]+"_"
[email protected]+"_killcount",
[email protected]_amt+1,
[email protected][
[email protected]]);
dispbottom getd
("."
[email protected]$+"_huntingname$")+": ["+strmobinfo(1,
[email protected])+"] ("+(
[email protected]_amt
+1)+"/"
[email protected]_goal+")", 0xB6FF00,
[email protected][
[email protected]];
}
}
}
}
}
}
break;
}
}
end;
OnInit:
waitingroom "Quest Board",0;
function AddCollection;
function AddHunting;
//Activate/Deactivate quest categories (true/1 - activated, false/0 - deactivated)
set .collection, false;
set .hunting, true;
//Quest Delay (seconds)
//24 hours = 86400 seconds
set .quest_delay, 0;
//Activate/Deactivate repeatable quests (true/1 - activated, false/0 - deactivated)
set .quest_repeat, true;
//Activate/Deactivate party support (true/1 - activated, false/0 - deactivated)
set .party_support, true;
//Max range for party support (+- x & y coordinations)
set .party_range, 25;
//Checks if quests are loaded (prevents out of index)
if(.questsloaded==true) end;
set .questsloaded, true;
//Add Collection Quests here (You can add as many required items as you want)
//AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item
Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...);
//Add Hunting Quests here (You can add as many required mobs as you want)
//AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny
Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...);
Addhunting("Mid-difficulty",1,99,7711,10,50000,50000,40000,1310,100);
Addhunting("High-difficulty",1,99,7711,20,50000,100000,80000,1098,100);
Addhunting("Extreme-difficulty",1,99,7711,30,100000,200000,160000,1833,100);
end;
function AddCollection{
set .collectionquestcount,.collectionquestcount+1;
setd ("." +.collectionquestcount+"_collectionname$", getarg(0));
setd ("." +.collectionquestcount+"_collectionmin", getarg(1));
setd ("." +.collectionquestcount+"_collectionmax", getarg(2));
setd ("." +.collectionquestcount+"_collectionprize", getarg(3));
setd ("." +.collectionquestcount+"_collectionamount", getarg(4));
setd ("." +.collectionquestcount+"_collectionzeny", getarg(5));
set
[email protected], 6;
set
[email protected], getarraysize(getd("."+ .collectionquestcount + "_collectionexp"));
setd ("." +.collectionquestcount+"_collectionexp["
[email protected]+"]",getarg(
[email protected]));
setd ("." +.collectionquestcount+"_collectionexp["+(
[email protected]+1)+"]",getarg(
[email protected]
+1));
set
[email protected],
[email protected]+2;
set
[email protected], getarraysize(getd("."+ .collectionquestcount + "_collectionitem"));
while(getarg(
[email protected],-1)!=-1 && getarg(
[email protected]+1,-1)!=-1){
setd ("."+.collectionquestcount+"_collectionitem["
[email protected]+"]",getarg
(
[email protected]));
setd ("."+.collectionquestcount+"_collectionitem["+(
[email protected]+1)+"]",getarg
(
[email protected]+1));
set
[email protected],
[email protected]+2;
set
[email protected],
[email protected]+2;
}
return;
}
function AddHunting{
set .huntingquestcount,.huntingquestcount+1;
setd ("." +.huntingquestcount+"_huntingname$", getarg(0));
setd ("." +.huntingquestcount+"_huntingmin", getarg(1));
setd ("." +.huntingquestcount+"_huntingmax", getarg(2));
setd ("." +.huntingquestcount+"_huntingprize", getarg(3));
setd ("." +.huntingquestcount+"_huntingamount", getarg(4));
setd ("." +.huntingquestcount+"_huntingzeny", getarg(5));
set
[email protected], getarraysize(getd("."+ .huntingquestcount + "_huntingexp"));
set
[email protected], 6;
setd ("." +.huntingquestcount+"_huntingexp["
[email protected]+"]",getarg(
[email protected]));
setd ("." +.huntingquestcount+"_huntingexp["+(
[email protected]+1)+"]",getarg(
[email protected]+1));
set
[email protected],
[email protected]+2;
set
[email protected], getarraysize(getd("."+ .huntingquestcount + "_huntingmob"));
while(getarg(
[email protected],-1)!=-1 && getarg(
[email protected]+1,-1)!=-1){
setd ("."+.huntingquestcount+"_huntingmob["
[email protected]+"]",getarg(
[email protected]));
setd ("."+.huntingquestcount+"_huntingmob["+(
[email protected]+1)+"]",getarg(
[email protected]
+1));
set
[email protected],
[email protected]+2;
set
[email protected],
[email protected]+2;
}
return;
}
}
2. Prize Giver
//======= 3ceam Script =======================================
//= Prize Giver NPC
//===== Modified By: =========================================
//= Keitenai
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= Athena Project
//===== Description: =========================================
//= Prize giver for single char, account and more.
//===== Additional Comments: =================================
//= 1.0 Modified Version for 3ceam compatibility
//============================================================
prontera,141,175,4 script Server Reward 113,{
//cutin "v_sprakki04",2;
//Check if setups are loaded.
if(!.Setup)
{
callsub OnLoadSetup;
}
//Show GM Panel if player is GM.
if(getgmlevel() >= .GMin)
menu("Take a prize as a player",-,"Give prize",
OnManagement,"Reset Item Give",
OnDelete,"IP Limit per Item",
OnLimit);
//Read attached player gifts from SQL table.
if(select("Get Account Prize!:Get Character Prize!:Exit") == 1)
{
set
[email protected], query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE account_id="+getcharid(3),
[email protected]_id,
[email protected]_account,
[email protected]_char,
[email protected]_item,
[email protected]_amount,
[email protected]_duration,
[email protected]_time
); //Account gifts.
}
else if(@menu == 2)
{
set
[email protected], query_sql("SELECT * FROM `" + .GiftTableName$ + "` WHERE char_id="+getcharid(0),
[email protected]_id,
[email protected]_account,
[email protected]_char,
[email protected]_item,
[email protected]_amount,
[email protected]_duration,
[email protected]_time
); //Char gifts.
}
else goto OnLeave;
//Check if player don't have gifts.
if(
[email protected])
{
mes "[Reward Giver]";
mes "Sorry, you don't have any prize";
cutin "v_sprakki04",255;
close;
}
//Build menu from query arrays.
mes "[" + strnpcinfo(1) + "]";
mes "^009900You got the prize^000000";
for( set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1 )
{
mes "(" +
[email protected]_amount[
[email protected]] + ") " + getitemname(
[email protected]_item[
[email protected]]) + ".";
set
[email protected]$,
[email protected]$ + getitemname(
[email protected]_item[
[email protected]]) + ":";
}
next;
set
[email protected],select(
[email protected]$); //Show menu.
set
[email protected],
[email protected];
if (
[email protected]_time[
[email protected]] &&
[email protected]_time[
[email protected]] < gettimetick(2))
{
mes "[Reward Giver]";
mes "Sorry, this prize's claim time is already over.";
cutin "v_sprakki04",255;
close;
}
//Item is now selected. Choose what you want to do with it.
mes "[" + strnpcinfo(1) + "]";
mes "what you want do with (" +
[email protected]_amount[
[email protected]] + ") " + getitemname(
[email protected]_item[
[email protected]]) + "?";
next;
set
[email protected],select("^009900Get it^000000:^ff0000Delete it! ^000000:nothings");
//Receive gift selected.
if(
[email protected] == 1)
{
//Check weight.
if(checkweight(
[email protected]_item,
[email protected]_amount ) ||
[email protected]_item[
[email protected]] == .ZenyID)
{
mes "[" + strnpcinfo(1) + "]";
mes "^009900Get : (" +
[email protected]_amount[
[email protected]] + ") " + getitemname(
[email protected]_item[
[email protected]]) + ".^000000";
if (.ip_limit)
{
// add ip_address to logs
[email protected] = query_sql("SELECT item_id, ip_address, claim_count FROM " + .GiftTableNameIP$ + " WHERE last_ip = (SELECT last_ip FROM login WHERE account_id="+getcharid(3)+") AND item_id = "
[email protected]_item[
[email protected]]+" LIMIT 1",
[email protected],
[email protected],
[email protected]_count);
if (
[email protected]_count[0] >= .ip_limit)
{
next;
mes "Sorry you have reached the maximum redeem limit for this IP address";
cutin "v_sprakki04",255;
close;
}
if (
[email protected]_count[0])
{
query_sql("INSERT INTO " + .GiftTableNameIP$ + " (give_id,item_id,last_ip,claim_count) VALUES("
[email protected]_id+","
[email protected]_item+",'(SELECT last_ip FROM login WHERE account_id="+getcharid(3)+")',1)");
}
else
{
query_sql("UPDATE " + .GiftTableNameIP$ + " SET claim_count = "+(
[email protected]_count[0]+1)+" WHERE item_id = "
[email protected]_item[
[email protected]]+" AND last_ip = (SELECT last_ip FROM login WHERE account_id="+getcharid(3)+")");
}
}
if (
[email protected]_item[
[email protected]] == .ZenyID) { // detects zeny ID and give zeny.
if (
[email protected]_amount[
[email protected]] > .MaxZeny)
{
mes "Please make sure that you have enough space to handle all these zennies and come back later.";
cutin "v_sprakki04",255;
close;
}
set Zeny,
[email protected]_amount[
[email protected]];
}
else
{
if (
[email protected]_duration)
{
getitem
[email protected]_item[
[email protected]],
[email protected]_amount[
[email protected]]; //Give item to player.
}
else
{
rentitem
[email protected]_item[
[email protected]],
[email protected]_duration * 60;
}
}
query_sql( "DELETE FROM `" + .GiftTableName$ + "` WHERE id = " +
[email protected]_id[
[email protected]] ); //Remove item from table.
cutin "v_sprakki04",255;
close;
}
else
{
//Overweight
mes "^ff0000Sorry ^000000 You can't take it " + getitemname(
[email protected]_item[
[email protected]]);
mes "Could lose some wight?";
cutin "v_sprakki04",255;
close;
}
}
//Remove gift selected.
else if(
[email protected] == 2) {
mes "[" + strnpcinfo(1) + "]";
mes "Are you sure you want dellet it?";
mes "Gift: ("
[email protected]_amount[
[email protected]]+") "+getitemname(
[email protected]_item[
[email protected]])+".";
next;
if(select("Yes:No") == 1) {
mes "[" + strnpcinfo(1) + "]";
mes "^ff0000Dellet: ("
[email protected]_amount[
[email protected]]+") "+getitemname(
[email protected]_item[
[email protected]])+".^000000";
query_sql("DELETE FROM `" + .GiftTableName$ + "` WHERE id = " +
[email protected]_id[
[email protected]]); //Remove item from table.
cutin "v_sprakki04",255;
close;
} else {
mes "[" + strnpcinfo(1) + "]";
mes "we will save it";
cutin "v_sprakki04",255;
close;
}
}
//Nothing selected.
else
{
goto OnLeave;
}
//GM Panel below:
OnManagement:
if(getgmlevel() < .GMin) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Welvome " + strcharinfo(0) + "!";
mes "How I can help you?";
next;
if(select("Make Gift:Nothing") != 1) goto OnLeave;
//Make new gift.
mes "[" + strnpcinfo(1) + "]";
mes "Please input the item id.";
mes "Default: 501";
next;
mes "What do you want to give?";
set
[email protected],0;
if(select("Item:Zeny") == 1)
{
input
[email protected]_item, 501, 30000;
}
next;
mes "Do you want to add a claim timer?";
if(select("No:Yes")==2)
{
next;
mes "How many minutes do you want this reward to be claimable?";
input(
[email protected]);
[email protected] = gettimetick(2)+(
[email protected]*60);
}
if(select("Continue:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "How many items/zeny?";
mes "Default: 1";
next;
//item quantity range of 1 to 1,000.
if(
[email protected])
{
input
[email protected]_value, 1, .MaxZeny;
}
else
{
input
[email protected]_value, 1, 1000;
}
if(select("Continue:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Please select input type:";
mes "1. Single Account";
mes "2. Single Character";
mes "3. All ^009900Online^000000 Accounts.";
mes "4. All Accounts.";
mes "5. All ^009900Online^000000 Players/Characters.";
mes "6. All Players/Characters.";
mes "7. ^ff0000Cancel.^000000";
next;
switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Cancel"))
{
//Account gift
case 1:
mes "[" + strnpcinfo(1) + "]";
mes "Please select input type:";
mes "By AID or Name?";
next;
if(select("Account ID:Character Name") == 1)
{
mes "[" + strnpcinfo(1) + "]";
mes "Write account id:";
next;
input
[email protected]_account, 2000000, 10000000; //Account id range from 2m to 10m.
set
[email protected], query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " +
[email protected]_account,
[email protected]_account);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "AID: ^ff0000" +
[email protected]_account + "^000000";
mes "------------------";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Duration: " +
[email protected] + " Minutes";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" +
[email protected]_account + ", " +
[email protected]_item + ", " +
[email protected]_value + ", " +
[email protected] + ", " +
[email protected] + ")");
}
else
{
mes "[" + strnpcinfo(1) + "]";
mes "Write player name:";
next;
input
[email protected]_name$;
set
[email protected], query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" +
[email protected]_name$ + "'",
[email protected]_account);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "AID: ^ff0000" +
[email protected]_account + "^000000";
mes "Name: ^ff0000"+
[email protected]_name$ + "^000000";
mes "------------------";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Duration: " +
[email protected] + " Minutes";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
//Check if player is logged in.
if(isloggedin(
[email protected]_account)) {
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" +
[email protected]_account + ", " +
[email protected]_item + ", " +
[email protected]_value + ", " +
[email protected] + ", " +
[email protected] + ")");
} else {
//Account was not online.
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" +
[email protected]_account + ", " +
[email protected]_item + ", " +
[email protected]_value + ", " +
[email protected] + ", " +
[email protected] + ")"); // duplicate to other menus - continue here on giver side
}
}
break;
//Character gift.
case 2:
mes "[" + strnpcinfo(1) + "]";
mes "Please select input type:";
mes "By CID or Name?";
next;
if(select("Character ID:Character Name") == 1)
{
mes "[" + strnpcinfo(1) + "]";
mes "Write character id:";
next;
input
[email protected]_char,150000, 10000000; //Char id range from 150k to 10m.
set
[email protected], query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " +
[email protected]_char,
[email protected]_accountid,
[email protected]_name$);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "CID: ^ff0000" +
[email protected]_char + "^000000";
mes "Name: ^ff0000" +
[email protected]_name$ + "^000000";
mes "------------------";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Duration: " +
[email protected] + " Minutes";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
//Check if player is logged in.
if(isloggedin(
[email protected]_accountid)) {
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" +
[email protected]_char + ", " +
[email protected]_item + ", " +
[email protected]_value + "," +
[email protected] + "," +
[email protected] + ")");
} else {
//not online ask if we still give the gift.
mes "[" + strnpcinfo(1) + "]";
mes "The character is not online!";
mes "Would you still like to send the gift?";
next;
if(select("Yes:No") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" +
[email protected]_char + ", " +
[email protected]_item + ", " +
[email protected]_value + "," +
[email protected] + "," +
[email protected] + ")");
}
}
else
{
mes "[" + strnpcinfo(1) + "]";
mes "Write player name:";
next;
input
[email protected]_name$;
set
[email protected], query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" +
[email protected]_name$ + "'",
[email protected]_char,
[email protected]_accountid);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "CID: ^ff0000" +
[email protected]_char + "^000000";
mes "Name: ^ff0000"+
[email protected]_name$ + "^000000";
mes "------------------";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Duration: " +
[email protected] + " Minutes";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
//Check if player is logged in.
if(isloggedin(
[email protected]_accountid))
{
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" +
[email protected]_char + ", " +
[email protected]_item + ", " +
[email protected]_value + "," +
[email protected] + "," +
[email protected] + ")");
}
else
{
//not online ask if we still give the gift.
mes "[" + strnpcinfo(1) + "]";
mes "The character is not online!";
mes "Would you still like to give the gift?";
next;
if(select("Yes:No") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Gift sending success!";
//Create gift. <auto_id>, <account_id> <char_id> <item> <value>
query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" +
[email protected]_char + ", " +
[email protected]_item + ", " +
[email protected]_value + "," +
[email protected] + "," +
[email protected] + ")");
}
}
announce strcharinfo(0)+" successfully sent " +
[email protected]_value + "x " + getitemname(
[email protected]_item) + " to " +
[email protected]_name$,bc_all;
break;
//Register gift to all online accounts!
case 3:
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Duration: " +
[email protected] + " Minutes";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Please hold...";
set
[email protected], 0; //Counting success.
set
[email protected], query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",
[email protected]);
for(set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1) {
sleep2 25; //Slowdown the loop abit.
[email protected] = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "
[email protected][
[email protected]]+"",
[email protected]_id,
[email protected]_id); // check if in the table
if (
[email protected]) {
query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" +
[email protected][
[email protected]] + ", " +
[email protected]_item + ", " +
[email protected]_value + ", " +
[email protected] + ", " +
[email protected] + ")");
}
}
mes "Gift registered to (" +
[email protected] + ") accounts!";
break;
//Register gift to all accounts!
case 4:
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Please hold...";
set
[email protected], query_sql("SELECT account_id FROM `"+.LoginTableName$+"`",
[email protected]);
for(set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1) {
sleep2 25; //Slowdown the loop abit.
query_sql("INSERT INTO `" + .GiftTableName$ + "` (account_id, item, value, duration, timestamp) VALUES(" +
[email protected][
[email protected]] + ", " +
[email protected]_item + ", " +
[email protected]_value + ", " +
[email protected] + ", " +
[email protected] + ")");
}
mes "Gift registered to (" +
[email protected] + ") accounts!";
break;
//Register gift to all online characters!
case 5:
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Please hold...";
set
[email protected], 0; //Counting success.
set
[email protected], query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",
[email protected]);
for(set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1) {
sleep2 25; //Slowdown the loop abit.
[email protected] = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE char_id = "
[email protected][
[email protected]]+"",
[email protected]_id,
[email protected]_id); // check if in the table
if (
[email protected]) {
query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" +
[email protected][
[email protected]] + ", " +
[email protected]_item + ", " +
[email protected]_value + "," +
[email protected] + "," +
[email protected] + ")");
}
}
mes "Gift registered to (" +
[email protected] + ") players!";
break;
//Register gift to all characters!
case 6:
mes "[" + strnpcinfo(1) + "]";
mes "^009900Gift is ready to go!^000000";
mes "Item: ^ff0000" + getitemname(
[email protected]_item) + "^000000";
mes "Quantity: ^ff0000" +
[email protected]_value + "^000000";
mes "Claim Time: " +
[email protected] + " Minutes";
next;
if(select("Send Gift:Cancel") != 1) goto OnLeave;
mes "[" + strnpcinfo(1) + "]";
mes "Please hold...";
set
[email protected], query_sql("SELECT char_id FROM `"+.CharTableName$+"`",
[email protected]);
for(set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1) {
sleep2 25; //Slowdown the loop abit.
query_sql("INSERT INTO `" + .GiftTableName$ + "` (char_id, item, value, duration, timestamp) VALUES (" +
[email protected][
[email protected]] + ", " +
[email protected]_item + ", " +
[email protected]_value + "," +
[email protected] + "," +
[email protected] + ")");
}
mes "Gift registered to (" +
[email protected] + ") players!";
break;
//Cancel.
Default:
mes "[Reward Giver]";
mes "See you later";
break;
}
close;
OnLeave:
mes "[Reward Giver]";
mes "See you later";
cutin "v_sprakki04",255;
close;
OnNotExist:
mes "[" + strnpcinfo(1) + "]";
mes "This account does not exist!";
cutin "v_sprakki04",255;
close;
//============Reset Function=========================
OnDelete:
mes "Which gifts do you want to reset?";
mes "1. Single Account";
mes "2. Single Character";
mes "3. All ^009900Online^000000 Accounts.";
mes "4. All Accounts.";
mes "5. All ^009900Online^000000 Players/Characters.";
mes "6. All Players/Characters.";
mes "7. All cancel";
switch(select("Single Account:Single Character:^009900Online^000000 Accounts:All Accounts:^009900Online^000000 Characters:All Characters:Specific Item:IPLimit Logs:Cancel"))
{
case 1: //Single Account
mes "[" + strnpcinfo(1) + "]";
mes "Please select input type:";
mes "By AID or Name?";
next;
if(select("Account ID:Character Name") == 1)
{
mes "[" + strnpcinfo(1) + "]";
mes "Write account id:";
next;
input
[email protected]_account, 2000000, 10000000; //Account id range from 2m to 10m.
set
[email protected], query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE account_id = " +
[email protected]_account,
[email protected]_account);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " +
[email protected]_account);
}
else
{
mes "[" + strnpcinfo(1) + "]";
mes "Write player name:";
next;
input
[email protected]_name$;
set
[email protected], query_sql("SELECT account_id FROM `" + .CharTableName$ + "` WHERE name = '" +
[email protected]_name$ + "'",
[email protected]_account);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " +
[email protected]_account);
}
break;
case 2: //Single Character
mes "[" + strnpcinfo(1) + "]";
mes "Please select input type:";
mes "By CID or Name?";
next;
if(select("Character ID:Character Name") == 1)
{
mes "[" + strnpcinfo(1) + "]";
mes "Write character id:";
next;
input
[email protected]_char,150000, 10000000; //Char id range from 150k to 10m.
set
[email protected], query_sql("SELECT account_id, name FROM `" + .CharTableName$ + "` WHERE char_id = " +
[email protected]_char,
[email protected]_accountid,
[email protected]_name$);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " +
[email protected]_char);
}
else
{
mes "[" + strnpcinfo(1) + "]";
mes "Write player name:";
next;
input
[email protected]_name$;
set
[email protected], query_sql("SELECT char_id, account_id FROM `" + .CharTableName$ + "` WHERE name = '" +
[email protected]_name$ + "'",
[email protected]_char,
[email protected]_accountid);
if(
[email protected]) goto OnNotExist;
if(select("Continue:Cancel") != 1) goto OnLeave;
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " +
[email protected]_char);
}
break;
case 3: //All Online Accounts.
mes "[" + strnpcinfo(1) + "]";
mes "Please hold...";
set
[email protected], 0; //Counting success.
set
[email protected], query_sql("SELECT account_id FROM `"+.CharTableName$+"` WHERE online=1",
[email protected]);
for(set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1) {
sleep2 25; //Slowdown the loop abit.
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id = " +
[email protected][
[email protected]]);
}
break;
case 4: //All Accounts.
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE account_id >= 1");
break;
case 5: //All Online Players/Characters.
mes "[" + strnpcinfo(1) + "]";
mes "Please hold...";
set
[email protected], 0; //Counting success.
set
[email protected], query_sql("SELECT char_id FROM `"+.CharTableName$+"` WHERE online=1",
[email protected]);
for(set
[email protected], 0;
[email protected] <
[email protected]; set
[email protected],
[email protected] + 1)
{
sleep2 25; //Slowdown the loop abit.
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE char_id = " +
[email protected][
[email protected]]);
}
break;
case 6: //All Players/Characters.
query_sql("TRUNCATE TABLE " + .GiftTableName$);
break;
case 7: // Delete specific item
mes "Please type the id of the item you wish to delete";
mes "This will delete all entries with the item id you typed";
input(
[email protected]);
next;
mes "Are you sure you want to delete all entries of " +
[email protected];
if (select("Yes:No")==1)
{
query_sql("DELETE FROM " + .GiftTableName$ + " WHERE item = " +
[email protected] + "");
}
else
{
mes "Deletion cancelled";
close;
}
case 8: //All ip logs
query_sql("TRUNCATE TABLE " + .GiftTableNameIP$);
break;
default:
break;
}
next;
mes "deletion finished";
cutin "v_sprakki04",255;
close;
OnLimit:
mes "Please enter an ip limit, current limit is " + .ip_limit;
input(.ip_limit);
mes "Done!";
cutin "v_sprakki04",255;
close;
//============================================================
// Config/Edit:
//============================================================
OnLoadSetup:
set .Setup, 1; //OnInit is loaded check.
set .GMin, 60; //Minimum GM level to use gm panel.
set .ZenyID,23500; // put this when asked for which item to give zeny.
set .MaxZeny,1000000000;
//Your table names:
set .CharTableName$, "char"; //Character table name(SQL).
set .LoginTableName$, "login";
set .GiftTableName$, "reward"; //Gift table name(SQL).
set .GiftTableNameIP$, "reward_ip"; //Gift table name for ip tracker
set $GiftTableNameAT$, "reward_at"; //Gift table name for auto trade tracker
//Create gift table <auto_id>, <account_id>, <char_id>, <item>, <value>
query_sql("CREATE TABLE IF NOT EXISTS `reward` (`id` int(11) NOT NULL AUTO_INCREMENT,`account_id` int(11) unsigned NOT NULL DEFAULT '0',`char_id` int(11) unsigned NOT NULL DEFAULT '0',`item` int(11) NOT NULL DEFAULT '0',`value` int(11) NOT NULL DEFAULT '0',`duration` int(11) NOT NULL DEFAULT '0',`timestamp` int(23) NOT NULL DEFAULT '0',PRIMARY KEY (`id`))");
query_sql("CREATE TABLE IF NOT EXISTS `reward_ip` ( `give_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `ip_address` varchar(23) NOT NULL, `claim_count` int(11) NOT NULL, PRIMARY KEY (`give_id`))");
query_sql("CREATE TABLE IF NOT EXISTS `reward_at` (`account_id` int(11) NOT NULL,`char_id` int(11) NOT NULL)");
return;
OnInit:
waitingroom "Prize Giver",0;
callsub OnLoadSetup;
end;
}
/* Manual table update for at tracker
CREATE TABLE IF NOT EXISTS `reward_at` (
`account_id` int(11) NOT NULL,
`char_id` int(11) NOT NULL
);
*/
- script anti_trader -1,{
OnInit:
.is_anti_trade = 1; // 0 to disable
end;
}
function script PG_30Seconds {
//dispbottom "anti trader 30sec";
//Check if Vending (normal or @at)
if(checkvending() >= 1)
{
// mark as auto trader
[email protected] = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"",
[email protected]_id,
[email protected]_id); // check if in the table
if (
[email protected])
{ // add if not there yet
query_sql("INSERT INTO "+$GiftTableNameAT$+"(account_id,char_id) VALUES("+getcharid(3)+","+getcharid(0)+")");
//dispbottom "you have been marked as auto trader";
stopnpctimer;
detachnpctimer;
end;
}
}
return;
}
function script PG_Login {
//dispbottom "at delete";
[email protected] = query_sql("SELECT account_id, char_id FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"",
[email protected]_id,
[email protected]_id); // check if in the table
if (
[email protected])
{ // remove to reverify vending status
query_sql("DELETE FROM "+$GiftTableNameAT$+" WHERE account_id = "+getcharid(3)+"");
}
}
I only put Waitingroom due to the fact that your request for announcement is not precise or accurate. doesn't even know when you want to announce or what to announce..
As i've seen that you always Request for Waitingrooms.. you can do it by Looking for the OnInit of the script and add the line waitingroom.. if there's no OnInit, you can create one and add the OnInit: waitingroom end;