Jump to content

sader1992

Content Moderator
  • Posts

    1,658
  • Joined

  • Last visited

  • Days Won

    67

Everything posted by sader1992

  1. You are sure that the .ladder_statues[[email protected] +1] is the npc id ? and [email protected]$[[email protected]] is M or F of the player ? the code above is correct however m = 1 not 0 and f = 0 use this setunitdata(.ladder_statues[[email protected]+1],UNPC_SEX,(([email protected]$[[email protected]] == "M")?1:0)); if your rAthena is too old (years old), make sure long ago the F or M was on the account not character, in that case you can take the gender from the login table, however I think the line above will fix the issue you are having. you can use debugmes([email protected]$[[email protected]]); to see if the variable is valid (make sure it's F or M)
  2. the only thing that I can suspect of is SC_ Something is a bad way to call a function or a label or a npc maybe try to rename the labels and functions ? specifically "SC_MOVEARM" "SC_ARMS" "SC_DISPARM" because I didn't check but maybe the server is translating it to a SC_ variables like SC_STUN and other variables to make it more readable I suggest to name the functions F_WhatEverYouWant , and labels as an event like OnWhatEverYouWant , NPCs rename them to WhatEverYouWant just don't use a prefix of a variables at the start not sure if this would fix the problem, but I don't see any problem in the script code from the error you are getting , this is my only conclusion.
  3. Are you sure that the errors you provided is from the script you provided ? not an edited version ?
  4. did I mislead you by giving you the link for the official documents? or telling you that you are using the incorrect variable types and it will lead to bugs in the script ? or by the example that I included with the correct variable usage ? well , there still a problem in the script that I mentioned before , maybe it's your chance to reach version 99 in your script.
  5. again you need to know why you are using a type of variable , you don't have to stick to one variable type , you should use what the script needs, check my old reply for more info looking at your script you should use .var + [email protected] + [email protected] and there is no "debuglog" command and "serarray" is misspelled you should not use oninit or npc variables in a function here I just fixed all the above without editing the script getItemByMapFunction v10 - Experimentell - Extended Debugging.txt
  6. what I meant is the other variables too, if the variable is only used inside the npc , you should use npc variable , also you might get problems when editing the npc and reload only that npc because [email protected] is global the function will return if any of the chances failed , (setarray [email protected]_chance[0],1,1,1000;) [try getting the 3rd item from the 3rd map with this chance] also there is no need for the function if it will only be called once. with other mistakes in the script ,you can check it if you test the script (I rarely test my scripts when replying to a post , so that's understandable xD) the debug messages are too much but that's my opinion with optimization this is the result - script GetItemByMap -1,{ OnNPCKillEvent: if(([email protected] = inarray(.maps$,strcharinfo(3))) == -1) end; if(rand(1000) <= .item_chance[[email protected]]) getitem(.items[[email protected]],.item_amounts[[email protected]]); end; OnInit: setarray .maps$[0],"prontera","alberta","izlude"; setarray .items[0],501,4012,512; setarray .item_amounts[0],100,1,5; setarray .item_chance[0],1000,500,800;//Chance begins by 0.1 percentage. 1 = 0.1 and 1000 = 100 percent end; } this optimized script doesn't support inputting the same map twice , you can edit it to do so if you want that
  7. https://github.com/rathena/rathena/blob/bdf568979dd53702494d3a6b3b9d35054c44594a/doc/script_commands.txt#L432
  8. function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) break; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == 4 || getiteminfo(getarg(0), ITEMINFO_TYPE) == 5) [email protected]$+=" ["+getitemslots(getarg(0))+"]"; } return "<ITEMLINK>" + [email protected]$ + "<INFO>" + getarg(0) + "</INFO></ITEMLINK>"; } This for 2014 and under , in 2015 the disply changed , however not sure which month
  9. function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return [email protected]$; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == 4 || getiteminfo(getarg(0), ITEMINFO_TYPE) == 5) return [email protected]$+" ["+getitemslots(getarg(0))+"]"; default: return [email protected]$; } } To function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) break; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == 4 || getiteminfo(getarg(0), ITEMINFO_TYPE) == 5) [email protected]$+=" ["+getitemslots(getarg(0))+"]"; } return "<ITEM>" + [email protected]$ + "<INFO>" + getarg(0) + "</INFO></ITEM>"; }
  10. - script monsterdrop -1,{ OnNPCKillEvent: if(inarray(.maps$,strcharinfo(3)) != -1){ if(rand(100) <= 9){//9% getitem(502,1);//item id is the 502 } } end; OnInit: setarray .maps$,"lhz_dun03","prontera"; end; }
  11. not much information given something like this ? if(getgroupid() == 1){ if(!GotTheReward){ getitem(501,1); GotTheReward = true; mes "you got the reward"; end; }else{ mes "you already got the reward"; end; } }else{ mes"this reward only for group id 1"; end; }
  12. all monsters - script monsterdrop -1,{ OnNPCKillEvent: if(rand(100) <= 9){//9% getitem(502,1);//item id is the 502 } end; } only in lhz_dun03 - script monsterdrop -1,{ OnNPCKillEvent: if(strcharinfo(3) == "lhz_dun03"){//map name lhz_dun03 if(rand(100) <= 9){//9% getitem(502,1);//item id is the 502 } } end; }
  13. did you really just edited your old reply to give me what i asked for next? and by doing that you made it so i don't get a notification and you were waiting for my reply ? //===== rAthena Script ======================================= //= Disguise Event //===== By: ================================================== //= GmOcean //===== Current Version: ===================================== //= 5.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Guess a monster name correctly for prizes. //= //= NOTE: Requires PCRE library installed. //===== Additional Comments: ================================= //= 5.0 Last update by GmOcean. //= 5.1 Cleaned and standardized, mostly. [Euphy] //============================================================ prontera,160,155,4 script Disguise Event 795,{ // Currently set to run every two hours. // To change times, edit the OnClock labels below. set [email protected],60; // GM level required to access NPC. set [email protected]$,"[^0000FFDisguise NPC^000000]"; if (getgmlevel()>[email protected]) { mes [email protected]$; mes "Select an option."; next; switch(select("Turn ON/OFF Event:Event Settings")) { case 1: mes [email protected]$; if (.EventON) { mes "The Event is currently: [^0000FFON^000000]"; mes "Would you like to turn it OFF?"; } else { mes "The Event is currently: [^FF0000OFF^000000]"; mes "Would you like to turn it ON?"; } if(select("Yes:No")==2) close; if (.EventON) { set .EventON,0; set .Timer,0; setnpctimer 0; stopnpctimer; announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue; deletepset 1; setnpcdisplay "Disguise Event",795; close; } set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer; set .ResetCounter,.ResetCounter+1; announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue; announce "The Event is being held in Prontera.",bc_all | bc_blue; close; case 2: mes [email protected]$; mes "Pick a setting to modify."; next; switch(select("Monster Display:Number of Rounds:Prize Settings")) { case 1: setarray [email protected]$[0],"Disguise as all monsters.","Disguise as MVPs only."; mes [email protected]$; mes "Choose a disguise rule."; next; set .Rule, select(implode([email protected]$,":")); mes [email protected]$; mes "The Disguise Rule has been set:"; mes " > ^0055FF"[email protected]$[.Rule-1]+"^000000"; close; case 2: mes [email protected]$; mes "Input the number of rounds you want the event to last."; mes "Current number: [^0000FF"+.Rounds+"^000000]"; next; input [email protected]; set .Rounds,[email protected]; mes [email protected]$; mes "The number of rounds has been changed to "+.Rounds+"."; close; case 3: mes [email protected]$; mes "Input the Item ID of the prize given each round."; mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")"; next; input [email protected]; mes [email protected]$; if (getitemname([email protected])=="" || getitemname([email protected])=="null") { mes "That item does not exist. Please try again."; close; } set .Prize,[email protected]; mes "Input the amount to be given."; next; input [email protected]; mes [email protected]$; if ([email protected]<=0 || [email protected]>=10000) { mes "That amount is invalid. Using default amount of 1."; set [email protected],1; next; mes [email protected]$; } set .PrizeAmt,[email protected]; mes "The Prize has been changed successfully."; mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]"; close; } } } if (.EventON) end; mes [email protected]$; mes "Welcome."; mes "How may I be of assistance?"; if(select("Information:Nothing, just passing through.")==2) close; next; mes [email protected]$; mes "This event is quite simple."; mes "At the start of the event, I will"; mes "disguise myself as a random"; mes "monster. You have to shout"; mes "that monster's name out loud."; next; mes "If you are correct, you will receive"; mes "a prize. If not, keep trying!"; mes "That's all that there is to this event."; close; OnInit: // setarray [email protected], "chance", item id, item amount... setarray .reward1, 5, 7539, 10; // Item ID 7539 x 10with chance of 5% in getting, You can add more.. setarray .reward2, 15, 7420, 5; // Item ID 7420 x 5 with chance of 15% in getting, You can add more.. setarray .reward3, 20, 671, 1; // etc... setarray .reward4, 25, 672, 1; setarray .reward5, 30, 673, 1; setarray .reward7, 100, 673, 1; set .EventON,0; set .Wait,0; set .Winner,0; set .ResetCounter,0; set .Rounds,10; set .Prize,512; set .PrizeAmt,1; set .Rule,1; setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373, 1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688, 1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131, 2156,2165; set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," + "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," + "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," + "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," + "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," + "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," + "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," + "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," + "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," + "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,"; end; OnClock0000: OnClock0200: OnClock0400: OnClock0600: OnClock0800: OnClock1000: OnClock1200: OnClock1400: OnClock1600: OnClock1800: OnClock2000: OnClock2200: set .ResetCounter,.ResetCounter+1; set .EventON,1; set .Timer,1; set .Wait,1; announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue; announce "The Event is being held in Prontera.",bc_all | bc_blue; setnpctimer 0; initnpctimer; end; OnTimer10000: if (.Timer || .Change) end; set .Wait,0; goto iDisguise; end; OnTimer30000: if (.Timer) end; set .Change,0; setnpcdisplay "Disguise Event",795; npctalk "Disguise Event : You took too long to guess what I was. Please wait 10 seconds while I disguise again."; specialeffect EF_DETECT2; set $MonsterName$,""; deletepset 1; stopnpctimer; setnpctimer 0; initnpctimer; end; OnTimer60000: if (.Timer!=1) end; announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue; announce "The Event is being held in Prontera.",bc_all | bc_blue; end; OnTimer120000: if (.Timer!=1) end; announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue; announce "The Event is being held in Prontera.",bc_all | bc_blue; end; OnTimer180000: if (.Timer!=1) end; announce "The Disguise Event has begun!",bc_all | bc_blue; announce "The Event is being held in Prontera.",bc_all | bc_blue; set .Timer,0; stopnpctimer; setnpctimer 0; initnpctimer; iDisguise: if (.Rule==1) { set .Winner,0; set .Monster,1000+rand(1,995); if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise; if (.Monster==.LastMonster) goto iDisguise; set .LastMonster,.Monster; set $MonsterName$,getmonsterinfo(.Monster,0); } if (.Rule==2) { set .Winner,0; set .Monster,rand(49); set $MonsterName$,getmonsterinfo(.MVP[.Monster],0); } deletepset 1; defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect"; activatepset 1; if (.Rule==1) setnpcdisplay "Disguise Event",.Monster; if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster]; set .Change,1; setnpctimer 0; end; iCorrect: if (.Winner) { dispbottom "Someone has already won this round."; end; } set .Winner,1; set .RoundCount,.RoundCount+1; deletepset 1; activatepset 1; set [email protected], rand(100); while( [email protected] >= getd( ".reward"+ [email protected] ) ) [email protected]++; [email protected]_index = rand( 1,( getarraysize( getd( ".reward"+ [email protected] ) ) -1 )/2 ) *2 -1; getitem getd( ".reward"+ [email protected] +"["+ [email protected]_index +"]" ), getd( ".reward"+ [email protected] +"["+ ([email protected]_index +1) +"]" ); getitem .Prize,.PrizeAmt; announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue; if (.RoundCount>=.Rounds) { setnpcdisplay "Disguise Event",795; set .RoundCount,0; set .Change,0; set .EventON,0; setnpctimer 0; stopnpctimer; npctalk "Disguise Event : Thank you all for playing. That was the last round of the Disguise Event. Come play again later."; end; } setnpcdisplay "Disguise Event",795; set .Change,0; setnpctimer 0; end; }
  14. I see now the script is edited more , and the error should now change like you wont get the "getitem" error putting the code like that it wont work , put it all of it in the same place where the player will get the reward. provide the unedited script and the code you want to import separately and where the reward line would be and i will put it for you
  15. if you get that kind of error , most likely the problem is before the code you posted. post the full code!
  16. "make_listen_bind: bind failed" means that the port is already in-use , maybe you have another copy of the program already running , or you use the port for something else already if you don't use the port for something else , i think the most non-technical way for you to fix is to reboot your system , the first time you run the program again after the reboot should work , if it didn't work the 2nd time and after that then you are not closing the program , you are just hiding it for Windows check the task manager , for Linux search for a task manager in the internet , I recommend "htop", search for the program and end it task you should also learn how to open/close programs properly. ofc that doesn't mean you wont get other errors , this only for how to fix the "make_listen_bind: bind failed" error
  17. import the file to grf editor , and export it from there.
  18. https://github.com/rathena/rathena/blob/b143a0cf3fdace3140388de5faef27b71af4106a/npc/custom/etc/autopot.txt#L14 setarray .blackList[0],0; //Array of black listed item ID
  19. you need to check your iteminfo file , the one you are using , not just use whatever it work , open the iteminfo file as text and search for the item id and make sure the item files are correct, you can find the item files in your grf or data folder check here to understand how the iteminfo works https://github.com/rathena/rathena/wiki/Custom-Items#systemiteminfolub
  20. i think this should work OnPCLogoutEvent: setlook LOOK_BODY2,false; end;
  21. I think you can simply just edit this https://github.com/rathena/rathena/blob/master/db/item_randomopt_db.yml just remove the mode line "Mode: Renewal"
  22. I didn't understand but I guess you are talking about the [email protected] look how I used it in the example above, you assigned it in your script but you never used it
  23. this is a reference for you if(getd("#wqeqwe_" + gettime(DT_YYYYMMDD)) < .day_limit){ [email protected] = .day_limit - getd("#wqeqwe_" + gettime(DT_YYYYMMDD)); mes "Input how many"; input [email protected],0,[email protected]; delitem [email protected],[email protected]; getitem [email protected]_coin,[email protected]; setd("#wqeqwe_" + gettime(DT_YYYYMMDD),getd("#wqeqwe_" + gettime(DT_YYYYMMDD)) + [email protected]); end; } mes "You cannot exchange anymore today!"; end;
  24. I can see a problem in the code without testing it not sure if there is more , will leave it for you to test
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.