Hi Guys,
I made a Freebies, using the Mac address script by Brian but I am having errors and couldn't find a way to make it smoothly.
Please refer to my attachment, I would gladly appreciate any help.
prontera,160,187,4 script Freedom-RO for Freebies 123,{
function get_MAC_variable;
function set_MAC_variable;
query_sql "SELECT last_mac FROM login WHERE account_id="+ getcharid(3), @my_MAC$;
if (get_MAC_variable("$#lockout") > 0) {
mes "I already gave items to someone from your MAC address.";
} else {
if (!checkweight(909,1)) {
mes "You are overweight or carrying too many items.";
} else {
mes "[Hello, so you left your previous server?]";
mes "[Here in Freedom-RO, all of the Game Masters went on being a normal player as well.]";
mes "[That's why we know that new players should have item of what they needed.]";
mes "[ It is up to you to decide as to what server you will be staying, we're just here serving you and promising that we can be successful]";
mes "[I can give you a free gift based on your future job.]";
mes "[Please choose the correct item for the future job]";
next;
if(!#Freebie) {
mes "Select one:";
next;
switch(select("Lord Knight:High Wizard:Sniper:Champion:Creator:Assasin Cross:Paladin:Priest:Star Gladiator:Gunslinger:Clown")) {
case 1:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Lord Knight
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
end;
case 2:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for High Wizard
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
end;
case 3:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Sniper
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
end;
case 4:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Champion
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
break;
case 5:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Creator
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
end;
case 6:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Assasin Cross
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
case 7:
getitem 13758,1;
getitem 969,20;
getitem 1108,1;
getitem 2104,1;
getitem 4043,4;//Item for Paladin
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
case 8:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Priest
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
case 9:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Star Gladiator
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
case 10:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Gunslinger
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
end;
case 11:
getitem2 30000,1,2,7,0,0,0,0,0;
getitem2 30001,1,2,7,0,0,0,0,0;
getitem2 30002,1,2,7,0,0,0,0,0;
getitem2 30003,1,2,7,0,0,0,0,0;
getitem2 1505,1,1,7,0,0,0,0,0;
getitem 2830,2;
getitem 2462,1;
getitem 2831,2;
getitem 30005,1;
getitem 30007,1;
getitem 30008,1;
getitem 674,10;//Item for Clown
set #Freebie, 1;
warp "prontera", 150, 150;
savepoint "prontera", 150, 150;
end;
}
close;
}
mes "[ROFL! Are you kidding me right now Bro?]";
mes "You already received your freebies!";
close;
OnInit:
waitingroom "Get your freebies here ! ",0;
end;
}
function get_MAC_variable {
// $#variable = MAC variable
set .@varname$, strtolower(getarg(0, "null"));
set .@is_string, (charat(.@varname$, getstrlen(.@varname$)-1) == "$");
if (query_sql("SELECT `value` FROM `mac_reg_value` WHERE `mac`='"+ @my_MAC$ +"' AND `str`='"+ escape_sql(.@varname$) +"'", .@value$)) {
return (.@is_string ? .@value$ : atoi(.@value$));
} else {
return (.@is_string ? "" : 0);
}
}
function set_MAC_variable {
set .@varname$, strtolower(getarg(0, "null"));
set .@is_string, (charat(.@varname$, getstrlen(.@varname$)-1) == "$");
set .@value$, getarg(1, (.@is_string ? "" : 0));
// trim the trailing "$" so name validation is easier
if (.@is_string) set .@varname$, substr(.@varname$, 0,getstrlen(.@varname$) -1);
// validate variable name
if (.@varname$ == "null") {
debugmes "set_MAC_variable - missing variable name";
end;
} else if (getstrlen(.@varname$) < 3 || substr(.@varname$,0,1) != "$#" ) {
debugmes "set_MAC_variable - MAC variables must start with $#";
end;
}
for (set .@i,2; .@i < getstrlen(.@varname$); set .@i,.@i+1) {
if (compare("abcdefghijklmnopqrstuvwxyz0123456789_", substr(.@varname$, .@i,.@i)) == 0) {
debugmes "set_MAC_variable - variable names can only contain '_' and alphanumeric characters";
end;
}
}
// re-add the trailing "$"
if (.@is_string) set .@varname$, .@varname$ + "$";
// check max lengths
if (getstrlen(.@varname$) > 255) {
debugmes "set_MAC_variable - variable name longer than 255 characters";
end;
}
if (.@is_string && getstrlen(.@value$) > 255) {
debugmes "set_MAC_variable - string value longer than 255 characters";
end;
} else if (!.@is_string && getstrlen(.@value$) > 9) {
query_sql "SELECT ('"+ escape_sql(.@value$) +"' BETWEEN -2147483648 AND 2147483647)", .@valid_int;
if (!.@valid_int) {
debugmes "set_MAC_variable - integer overflow detected";
end;
}
}
if ((.@is_string && .@value$=="") || (!.@is_string && .@value$=="0")) {
// value of "" or 0 --> delete variable
query_sql "DELETE FROM `mac_reg_value` WHERE `mac`='"+ @my_MAC$ +"' AND `str`='"+ escape_sql(.@varname$) +"'";
} else {
// store the variable!!
query_sql "REPLACE INTO `mac_reg_value` (`mac`,`str`,`value`) VALUES ('"+@my_MAC$+"', '"+ escape_sql(.@varname$) +"', '"+ (.@is_string ? escape_sql(.@value$) : atoi(.@value$)) +"')";
}
return;
}
}