と思ってましたが普通に修正できました…。∧‖∧
if not Skill[j].Data.Job[Job] then begin
を
if (not Skill[j].Data.Job[Job]) and (not DisableSkillLimit) then begin
にすることで上書きは防げます。
for i := 0 to 2 do begin
MemoMap[i] := '';
MemoPoint[i].X := 0;
MemoPoint[i].Y := 0;
end;
end;
+{アイテム製造関係追加}
+if ID < 100001 then ID := ID + 100001;
+{アイテム製造関係追加}
if ID >= NowCharaID then NowCharaID := ID + 1;
end else if Copy(str, 1, 7) = 'refine ' then begin 以下の
if (tc.Item[i].ID <> 0) and (tc.Item[i].Amount <> 0) and tc.Item[i].Data.IEquip and
(tc.Item[i].Equip <> 0) and (tc.Item[i].Card[0] <> $00ff) then begin
BaseNextEXP := ExpTable[0][BaseLV];
if Job = 0 then i := 0
else if Job < 7 then i := 1
else i := 2;
JobNextEXP := ExpTable[i][JobLV];
という部分がありますが
ここで
ノービスはbaseEXPテーブルを
1次職はノービスのJobEXPテーブルを
2次職は1次職のJobEXPテーブルを読みこんでしまっているようです
解決するには
BaseNextEXP := ExpTable[0][BaseLV];
if Job = 0 then i := 1
else if Job < 7 then i := 2
else i := 3;
JobNextEXP := ExpTable[i][JobLV];
とjobに応じて与えられているiの値を全部+1すればOKです
>>499
prontera.gat,150,89,6 script 案内要員 105,{
mes "[案内要員]";
mes "inputのテストを行います";
input @test;
mes "[案内要員]";
mes "入力された数値は$[@test]です。";
set Zeny = @test;
mes "所持金を$[@test]Zenyにしました。";
close;
}
今これで試してみたところ、うまく動作したのですが・・・どうでしょうか?
うまくいかないスクリプトがあれば、それを掲示してもらえると
原因追及が簡単になります。
お困りの時はスクリプトの掲載をお願いします〜<(_ _)>
>>521
回復速度について
CalcAbility()
〜省略〜
if td.HP2 <> 0 then begin //HP回復速度%
HPDelayFix := HPDelayFix + 100 - td.HP2;
end;
if td.SP2 <> 0 then begin //SP回復速度%
SPDelayFix := SPDelayFix + 100 - td.SP2;
end;
CalcStat()
〜省略〜
for i := 0 to 3 do begin
HPDelayFix := 0;
SPDelayFix := 0;
end;
〜省略〜
j := 100 - HPDelayFix;
if j < 0 then j := 0;
k := 100 - SPDelayFix;
if k < 0 then k := 0;
for i:=0 to 3 do begin
HPDelay[i] := HPDelay[i] * Cardinal(j) div 100;
if HPDelay[i] < 150 then HPDelay[i] := 150;
SPDelay[i] := SPDelay[i] * Cardinal(k) div 100;
if SPDelay[i] < 150 then SPDelay[i] := 150;
end;
該当個所は解ると思うのでこれに差し替えてください…。
PT分配エラーについては
if tpa.Member[i].Map = Map then Inc(m);
を
tc1 := tpa.Member[i];
if tc1 <> nil then begin
if tc1.Map = Map then Inc(m);
にして、同様に
if tpa.Member[i].Map = Map then CalcLvUP(tpa.Member[i],l,w);
を
tc1 := tpa.Member[i];
if tc1 <> nil then begin
if tc1.Map = Map then CalcLvUP(tc1,l,w);
に換えてください。
リミットについては
MonsterDie()内の
if DisableLevelLimit or (tc1.BaseLV < 99) then
と
if DisableLevelLimit or ((tc1.Job = 0) and (tc1.JobLV < 10)) or ((tc1.Job <> 0) and (tc1.JobLV < 50)) then
の条件分岐を外して、
CalcLvUP()内の
tc1.BaseEXP := tc1.BaseEXP + EXP;
を
if DisableLevelLimit or (tc1.BaseLV < 99) then
tc1.BaseEXP := tc1.BaseEXP + EXP;
に、
tc1.JobEXP := tc1.JobEXP + JEXP;
を
if DisableLevelLimit or ((tc1.Job = 0) and (tc1.JobLV < 10)) or ((tc1.Job <> 0) and (tc1.JobLV < 50)) then
tc1.JobEXP := tc1.JobEXP + JEXP;
にしてください。