· last year · Jul 26, 2024, 12:45 PM
1/*
2
3DROP TABLE IF EXISTS `ero_buildmanager`;
4CREATE TABLE IF NOT EXISTS `ero_buildmanager` (
5 `id` int(11) unsigned NOT NULL auto_increment,
6 `aid` int(11) NOT NULL default '0',
7 `cid` int(11) NOT NULL default '0',
8 `build_name` varchar(255) NOT NULL default '',
9 `eaj_class` smallint(6) unsigned NOT NULL default '0',
10 `base_level` smallint(6) unsigned NOT NULL default '1',
11 `job_level` smallint(6) unsigned NOT NULL default '1',
12 `str` smallint(4) unsigned NOT NULL default '0',
13 `agi` smallint(4) unsigned NOT NULL default '0',
14 `vit` smallint(4) unsigned NOT NULL default '0',
15 `int` smallint(4) unsigned NOT NULL default '0',
16 `dex` smallint(4) unsigned NOT NULL default '0',
17 `luk` smallint(4) unsigned NOT NULL default '0',
18 `pow` smallint(4) unsigned NOT NULL default '0',
19 `sta` smallint(4) unsigned NOT NULL default '0',
20 `wis` smallint(4) unsigned NOT NULL default '0',
21 `spl` smallint(4) unsigned NOT NULL default '0',
22 `con` smallint(4) unsigned NOT NULL default '0',
23 `crt` smallint(4) unsigned NOT NULL default '0',
24 `status_point` int(11) unsigned NOT NULL default '0',
25 `skill_point` int(11) unsigned NOT NULL default '0',
26 `trait_point` int(11) unsigned NOT NULL default '0',
27 `created` datetime DEFAULT NULL,
28 `job_id` smallint(4) unsigned NOT NULL default '0',
29 PRIMARY KEY (`id`),
30 INDEX (`aid`),
31 INDEX (`cid`)
32) ENGINE=MyISAM;
33*/
34
35prt_in,167,171,3 script Sample 757,{
36 doevent "ero_buildmanager_main::OnTalk";
37}
38
39- script ero_buildmanager_main -1,{
40OnInit:
41 .max_build = 10;
42 .check_weight_limit = 1;
43 bindatcmd "bm", strnpcinfo(3)+"::OnTalk";
44 bindatcmd "buildmanager", strnpcinfo(3)+"::OnTalk";
45 end;
46
47OnTalk:
48if(podeSalvarBuild==false){
49mes "Voce ainda nao pode salvar builds";
50end;
51}
52 .@aid = getcharid(3);
53 .@cid = getcharid(0);
54
55 .@size = query_sql("SELECT `id`, `build_name`, `eaj_class`, `base_level`, `job_level`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `pow`, `sta`, `wis`, `spl`, `con`, `crt`, `status_point`, `skill_point`, `trait_point`,`job_id` FROM `ero_buildmanager` WHERE `cid` = "+.@cid, .@id, .@build_name$, .@eaj_class, .@base_level, .@job_level, .@str, .@agi, .@vit, .@int, .@dex, .@luk, .@pow, .@sta, .@wis, .@spl, .@con, .@crt, .@status_point, .@skill_point, .@trait_point,.@job_class_id);
56
57 switch (select(
58 (BaseLevel < 80) ? "" : "Generate reset build",
59 (.@size <= 0) ? "" : "Switch Build",
60 (.max_build && .@size >= .max_build) ? "" : "Save Build",
61 (.@size <= 0) ? "" : "Delete"
62
63 )) {
64 case 1:
65 .@baselv=80;
66 //é possivel usar .@baselv=BaseLevel para manter o level atual
67 .@sql$ = "INSERT INTO `ero_buildmanager` (`aid`, `cid`, `build_name`, `eaj_class`, `base_level`, `job_level`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `status_point`, `skill_point`, `created`,`job_id`) VALUES ("+.@aid+", "+.@cid+", 'Reseted Build', 4096, "+.@baselv+", 10, 1, 1, 1, 1, 1, 1,937, 9, NOW(),4001)";
68 query_sql(.@sql$);
69 clear;
70 mes "Build 'Reseted Build' has been created.";
71 break;
72 case 2:
73 for (.@i = 0; .@i < .@size; .@i++)
74 .@menu$ = .@menu$ + .@build_name$[.@i] + ":";
75 if (.@size > 1)
76 .@index = select(.@menu$) - 1;
77 mes "[" + .@build_name$[.@index]+"]";
78 mes "Class: " + jobname(roclass(.@eaj_class[.@index]))+" ("+.@base_level[.@index]+"/"+.@job_level[.@index]+")";
79 mes "Status Point: " + F_InsertComma(.@status_point[.@index]);
80 mes "Skill Point: " + F_InsertComma(.@skill_point[.@index]);
81 if (checkre(0))
82 mes "Trait Point: " + F_InsertComma(.@trait_point[.@index]);
83 mes "- - - - - - STATS - - - - - -";
84 mes sprintf("STR ^ff9933[%03d]^000000 AGI ^ff9933[%03d]^000000 VIT ^ff9933[%03d]^000000", .@str[.@index], .@agi[.@index], .@vit[.@index]);
85 mes sprintf("INT ^ff9933[%03d]^000000 DEX ^ff9933[%03d]^000000 LUK ^ff9933[%03d]^000000", .@int[.@index], .@dex[.@index], .@luk[.@index]);
86 if (checkre(0)) {
87 mes "- - - - - - TRAITS - - - - - -";
88 mes sprintf("POW ^ff9933[%03d]^000000 STA ^ff9933[%03d]^000000 WIS ^ff9933[%03d]^000000", .@pow[.@index], .@sta[.@index], .@wis[.@index]);
89 mes sprintf("SPL ^ff9933[%03d]^000000 CON ^ff9933[%03d]^000000 CRT ^ff9933[%03d]^000000", .@spl[.@index], .@con[.@index], .@crt[.@index]);
90 }
91 if (select("Load", "Cancel") == 2)
92 break;
93 clear;
94 if (BaseLevel > .@base_level[.@index]) {
95 mes "Are you sure you want to downgrade your level? We recommend to save the actual build before go back, non-saved builds will be lost!";
96 switch (select("no","yes")) {
97 case 1:
98 close;
99 break;
100 case 2:
101 mes "continuing";
102 break;
103 }
104 }
105 if (.check_weight_limit && Weight && Weight >= (20000 + (.@str[.@index] * 300))) {
106 mes "Your selected build have insufficient STR to handle your current inventory items ("+F_InsertComma(Weight/10)+"/"+F_InsertComma((20000 + (.@str[.@index] * 300)) / 10)+").";
107 close;
108 }
109 resetlvl 1;
110 jobchange 4001;
111 resetstatus;
112 resetskill;
113 jobchange .@job_class_id[.@index];
114 BaseLevel =.@base_level[.@index];
115 JobLevel =.@job_level[.@index];
116
117 if (readparam(bStr) < .@str[.@index])
118 statusup2 bStr, (.@str[.@index] - 1);
119 if (readparam(bAgi) < .@agi[.@index])
120 statusup2 bAgi, (.@agi[.@index] - 1);
121 if (readparam(bVit) < .@vit[.@index])
122 statusup2 bVit, (.@vit[.@index] - 1);
123 if (readparam(bInt) < .@int[.@index])
124 statusup2 bInt, (.@int[.@index] - 1);
125 if (readparam(bDex) < .@dex[.@index])
126 statusup2 bDex, (.@dex[.@index] - 1);
127 if (readparam(bLuk) < .@luk[.@index])
128 statusup2 bLuk, (.@luk[.@index] - 1);
129 if (checkre(0)) {
130 // TODO: reset traits
131 if (readparam(bPow) < .@pow[.@index])
132 statusup2 bPow, .@pow[.@index];
133 if (readparam(bSta) < .@sta[.@index])
134 statusup2 bSta, .@sta[.@index];
135 if (readparam(bWis) < .@wis[.@index])
136 statusup2 bWis, .@wis[.@index];
137 if (readparam(bSpl) < .@spl[.@index])
138 statusup2 bSpl, .@spl[.@index];
139 if (readparam(bCon) < .@con[.@index])
140 statusup2 bCon, .@con[.@index];
141 if (readparam(bCrt) < .@crt[.@index])
142 statusup2 bCrt, .@crt[.@index];
143 }
144 StatusPoint = .@status_point[.@index];
145 SkillPoint = .@skill_point[.@index];
146 if (checkre(0))
147 TraitPoint = .@trait_point[.@index];
148 clear;
149 mes "Build loaded.";
150 specialeffect2 EF_ANGEL2;
151 break;
152 case 3:
153 mes "Enter a name for your build?";
154 input .@build_name$;
155 .@build_name$ = replacestr(.@build_name$, ":", "");
156 clear;
157 mes "["+.@build_name$+"]";
158 mes "Class: " +jobname(roclass(eaclass()))+" ("+BaseLevel+"/"+JobLevel+")";
159 mes "Status Point: " + F_InsertComma(StatusPoint);
160 mes "Skill Point: " + F_InsertComma(SkillPoint);
161 if (checkre(0))
162 mes "Trait Point: " + F_InsertComma(TraitPoint);
163 mes "- - - - - - STATS - - - - - -";
164 mes sprintf("STR ^ff9933[%03d]^000000 AGI ^ff9933[%03d]^000000 VIT ^ff9933[%03d]^000000", readparam(bStr), readparam(bAgi), readparam(bVit));
165 mes sprintf("INT ^ff9933[%03d]^000000 DEX ^ff9933[%03d]^000000 LUK ^ff9933[%03d]^000000", readparam(bInt), readparam(bDex), readparam(bLuk));
166 if (checkre(0)) {
167 mes "- - - - - - TRAITS - - - - - -";
168 mes sprintf("POW ^ff9933[%03d]^000000 STA ^ff9933[%03d]^000000 WIS ^ff9933[%03d]^000000", readparam(bPow), readparam(bSta), readparam(bWis));
169 mes sprintf("SPL ^ff9933[%03d]^000000 CON ^ff9933[%03d]^000000 CRT ^ff9933[%03d]^000000", readparam(bSpl), readparam(bCon), readparam(bCrt));
170 }
171 if (select("Save", "Cancel") == 2)
172 break;
173
174 if (checkre(0))
175 .@sql$ = "INSERT INTO `ero_buildmanager` (`aid`, `cid`, `build_name`, `eaj_class`, `base_level`, `job_level`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `pow`, `sta`, `wis`, `spl`, `con`, `crt`, `status_point`, `skill_point`, `trait_point`, `created`,`job_id`) VALUES ("+.@aid+", "+.@cid+", '"+escape_sql(.@build_name$)+"', "+eaclass()+", "+BaseLevel+", "+JobLevel+", "+readparam(bStr)+", "+readparam(bAgi)+", "+readparam(bVit)+", "+readparam(bInt)+", "+readparam(bDex)+", "+readparam(bLuk)+", "+readparam(bPow)+", "+readparam(bSta)+", "+readparam(bWis)+", "+readparam(bSpl)+", "+readparam(bCon)+", "+readparam(bCrt)+", "+StatusPoint+", "+SkillPoint+", "+TraitPoint+", NOW(),"+Class+")";
176 else
177 .@sql$ = "INSERT INTO `ero_buildmanager` (`aid`, `cid`, `build_name`, `eaj_class`, `base_level`, `job_level`, `str`, `agi`, `vit`, `int`, `dex`, `luk`, `status_point`, `skill_point`, `created`,`job_id`) VALUES ("+.@aid+", "+.@cid+", '"+escape_sql(.@build_name$)+"', "+eaclass()+", "+BaseLevel+", "+JobLevel+", "+readparam(bStr)+", "+readparam(bAgi)+", "+readparam(bVit)+", "+readparam(bInt)+", "+readparam(bDex)+", "+readparam(bLuk)+", "+StatusPoint+", "+SkillPoint+", NOW(),"+Class+")";
178 query_sql(.@sql$);
179 clear;
180 mes "Build '"+.@build_name$+"' has been created.";
181 break;
182 case 4:
183 for (.@i = 0; .@i < .@size; .@i++)
184 .@menu$ = .@menu$ + .@build_name$[.@i] + ":";
185 .@index = select(.@menu$) - 1;
186 mes "["+.@build_name$[.@index]+"]";
187 mes "Class: " +jobname(roclass(.@eaj_class[.@index]))+" ("+.@base_level[.@index]+"/"+.@job_level[.@index]+")";
188 mes "Status Point: " + F_InsertComma(.@status_point[.@index]);
189 mes "Skill Point: " + F_InsertComma(.@skill_point[.@index]);
190 if (checkre(0))
191 mes "Trait Point: " + F_InsertComma(.@trait_point[.@index]);
192 mes "- - - - - - STATS - - - - - -";
193 mes sprintf("STR ^ff9933[%03d]^000000 AGI ^ff9933[%03d]^000000 VIT ^ff9933[%03d]^000000", .@str[.@index], .@agi[.@index], .@vit[.@index]);
194 mes sprintf("INT ^ff9933[%03d]^000000 DEX ^ff9933[%03d]^000000 LUK ^ff9933[%03d]^000000", .@int[.@index], .@dex[.@index], .@luk[.@index]);
195 if (checkre(0)) {
196 mes "- - - - - - TRAITS - - - - - -";
197 mes sprintf("POW ^ff9933[%03d]^000000 STA ^ff9933[%03d]^000000 WIS ^ff9933[%03d]^000000", .@pow[.@index], .@sta[.@index], .@wis[.@index]);
198 mes sprintf("SPL ^ff9933[%03d]^000000 CON ^ff9933[%03d]^000000 CRT ^ff9933[%03d]^000000", .@spl[.@index], .@con[.@index], .@crt[.@index]);
199 }
200 if (select("Confirm Delete", "Cancel") == 2)
201 break;
202 clear;
203 mes "Build deleted.";
204 query_sql("DELETE FROM `ero_buildmanager` WHERE `id` = "+.@id[.@index]+" LIMIT 1");
205 break;
206
207 }
208 end;
209}
210
211
212